/*!
* Photo Sphere Viewer 4.0.0-alpha.2
* @copyright 2014-2015 Jérémy Heleine
* @copyright 2015-2018 Damien "Mistic" Sorel
* @licence MIT (https://opensource.org/licenses/MIT)
*/
(function(t,e){typeof exports==="object"&&typeof module!=="undefined"?module.exports=e(require("three"),require("uevent")):typeof define==="function"&&define.amd?define(["three","uevent"],e):t.PhotoSphereViewer=e(t.THREE,t.uEvent)})(this,function(f,t){"use strict";function v(t){this.message=t;if("captureStackTrace"in Error){Error.captureStackTrace(this,v)}else{this.stack=(new Error).stack}}v.prototype=Object.create(Error.prototype);v.prototype.name="PSVError";v.prototype.constructor=v;function c(t,e,i){if(!t.classList){var o=t.getAttribute("class")||"";var n=o.indexOf(e)!==-1;var r=new RegExp("(?:^|\\s)"+e+"(?:\\s|$)");if((i===undefined||i)&&!n){o+=o.length>0?" "+e:e}else if(!i){o=o.replace(r," ")}t.setAttribute("class",o)}else if(i===undefined){t.classList.toggle(e)}else if(i&&!t.classList.contains(e)){t.classList.add(e)}else if(!i){t.classList.remove(e)}}function p(e,t){if(t){t.split(" ").forEach(function(t){c(e,t,true)})}}function n(e,t){if(t){t.split(" ").forEach(function(t){c(e,t,false)})}}function o(t,e){var i=t;do{if(i===e){return true}i=i.parentNode}while(i);return false}function r(t,e){var i=t.matches||t.msMatchesSelector;var o=t;do{if(i.bind(o)(e)){return o}o=o instanceof SVGElement?o.parentNode:o.parentElement}while(o);return null}var i={13:"Enter",27:"Escape",32:" ",33:"PageUp",34:"PageDown",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",46:"Delete",107:"+",109:"-"};var s={Add:"+",Del:"Delete",Down:"ArrowDown",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Spacebar:" ",Subtract:"-",Up:"ArrowUp"};function a(t){var e=t.key||i[t.keyCode||t.which];if(e&&s[e]){e=s[e]}return e}function l(t,e,i){return Math.max(e,Math.min(i,t))}function h(t){if(Number.isInteger){return Number.isInteger(t)}return typeof t==="number"&&Number.isFinite(t)&&Math.floor(t)===t}function g(t){return t.reduce(function(t,e){return t+e},0)}function u(t,e){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function d(t){return t.replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g,function(t,e){return(e>0?"-":"")+t.toLowerCase()})}function m(t,e){var i=t.match("(.*)");if(i!==null){return i[1]}i=t.match("GPano:"+e+'="(.*?)"');if(i!==null){return i[1]}return null}function w(t){return(document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement)===t}function e(t){(t.requestFullscreen||t.mozRequestFullScreen||t.webkitRequestFullscreen||t.msRequestFullscreen).call(t)}function y(){(document.exitFullscreen||document.mozCancelFullScreen||document.webkitExitFullscreen||document.msExitFullscreen).call(document)}function _(t,e){return window.getComputedStyle(t,null)[e]}function E(o,n){var t=[0,Math.PI*2,-Math.PI*2];return t.reduce(function(t,e){var i=n-o+e;return Math.abs(i)o){if(a){clearTimeout(a);a=undefined}l=t;s=i.apply(n,r);if(!a){n=r=null}}else if(!a){a=setTimeout(h,e)}return s}}function A(t){if(typeof t==="object"&&t!==null){if(typeof Object.getPrototypeOf==="function"){var e=Object.getPrototypeOf(t);return e===Object.prototype||e===null}return Object.prototype.toString.call(t)==="[object Object]"}return false}function S(t,e){var n=e;return function i(o,e){if(Array.isArray(e)){if(!o||!Array.isArray(o)){o=[]}else{o.length=0}e.forEach(function(t,e){o[e]=i(null,t)})}else if(typeof e==="object"){if(!o||Array.isArray(o)){o={}}Object.keys(e).forEach(function(t){if(typeof e[t]!=="object"||!e[t]||!A(e[t])){o[t]=e[t]}else if(e[t]!=n){if(!o[t]){o[t]=i(null,e[t])}else{i(o[t],e[t])}}})}else{o=e}return o}(t,e)}function L(t){return S(null,t)}function P(t){return!t||Object.keys(t).length===0&&t.constructor===Object}function O(t){var e=10;var i=40;var o=800;var n=0;var r=0;var s=0;var a=0;if("detail"in t){r=t.detail}if("wheelDelta"in t){r=-t.wheelDelta/120}if("wheelDeltaY"in t){r=-t.wheelDeltaY/120}if("wheelDeltaX"in t){n=-t.wheelDeltaX/120}if("axis"in t&&t.axis===t.HORIZONTAL_AXIS){n=r;r=0}s=n*e;a=r*e;if("deltaY"in t){a=t.deltaY}if("deltaX"in t){s=t.deltaX}if((s||a)&&t.deltaMode){if(t.deltaMode===1){s*=i;a*=i}else{s*=o;a*=o}}if(s&&!n){n=s<1?-1:1}if(a&&!r){r=a<1?-1:1}return{spinX:n,spinY:r,pixelX:s,pixelY:a}}function z(e,i){Object.keys(e).forEach(function(t){i(e[t],t)})}function D(t,e){return t.filter(function(t){return e.indexOf(t)!==-1})}function N(t){console.warn("PhotoSphereViewer: "+t+".")}var I=Object.freeze({toggleClass:c,addClasses:p,removeClasses:n,hasParent:o,getClosest:r,getEventKey:a,bound:l,isInteger:h,sum:g,distance:u,dasherize:d,getXMPValue:m,isFullscreenEnabled:w,requestFullscreen:e,exitFullscreen:y,getStyle:_,getShortestArc:E,getAngle:b,parsePosition:M,parseSpeed:C,parseAngle:k,cleanTHREEScene:x,throttle:R,isPlainObject:A,deepmerge:S,clone:L,isEmpty:P,normalizeWheel:O,each:z,intersect:D,logWarn:N});var H="http://www.w3.org/2000/svg";var F=4;var U=.003;var V=300;var W=300;var G=100;var Y=64;var X=8;var Z=[0,2,4,5,3,1];var j=["left","right","top","bottom","back","front"];var $="psvMarker";var B="photoSphereViewer";var K={ROTATE_LAT_UP:"rotateLatitudeUp",ROTATE_LAT_DOWN:"rotateLatitudeDown",ROTATE_LONG_RIGHT:"rotateLongitudeRight",ROTATE_LONG_LEFT:"rotateLongitudeLeft",ZOOM_IN:"zoomIn",ZOOM_OUT:"zoomOut",TOGGLE_AUTOROTATE:"toggleAutorotate"};var q={AUTOROTATE:"autorotate",BEFORE_RENDER:"before-render",CLICK:"click",CLOSE_PANEL:"close-panel",DOUBLE_CLICK:"dblclick",FULLSCREEN_UPDATED:"fullscreen-updated",GOTO_MARKER_DONE:"goto-marker-done",GYROSCOPE_UPDATED:"gyroscope-updated",HIDE_NOTIFICATION:"hide-notification",HIDE_OVERLAY:"hide-overlay",HIDE_TOOLTIP:"hide-tooltip",LEAVE_MARKER:"leave-marker",OPEN_PANEL:"open-panel",OVER_MARKER:"over-marker",PANORAMA_CACHED:"panorama-cached",PANORAMA_LOAD_PROGRESS:"panorama-load-progress",PANORAMA_LOADED:"panorama-loaded",POSITION_UPDATED:"position-updated",READY:"ready",RENDER:"render",RENDER_MARKERS_LIST:"render-markers-list",SELECT_MARKER:"select-marker",SELECT_MARKER_LIST:"select-marker-list",SHOW_NOTIFICATION:"show-notification",SHOW_OVERLAY:"show-overlay",SHOW_TOOLTIP:"show-tooltip",SIZE_UPDATED:"size-updated",STEREO_UPATED:"stereo-updated",UNSELECT_MARKER:"unselect-marker",ZOOM_UPDATED:"zoom-updated"};var Q={image:"image",html:"html",polygonPx:"polygonPx",polygonRad:"polygonRad",polylinePx:"polylinePx",polylineRad:"polylineRad",square:"square",rect:"rect",circle:"circle",ellipse:"ellipse",path:"path"};var J={MARKERS_LIST:"markersList",MARKER:"marker",PLEASE_ROTATE:"pleaseRotate",TWO_FINGERS:"twoFingers",ERROR:"error"};var tt={linear:function t(e){return e},inQuad:function t(e){return e*e},outQuad:function t(e){return e*(2-e)},inOutQuad:function t(e){return e<.5?2*e*e:-1+(4-2*e)*e},inCubic:function t(e){return e*e*e},outCubic:function t(e){return--e*e*e+1},inOutCubic:function t(e){return e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1},inQuart:function t(e){return e*e*e*e},outQuart:function t(e){return 1- --e*e*e*e},inOutQuart:function t(e){return e<.5?8*e*e*e*e:1-8*--e*e*e*e},inQuint:function t(e){return e*e*e*e*e},outQuint:function t(e){return 1+--e*e*e*e*e},inOutQuint:function t(e){return e<.5?16*e*e*e*e*e:1+16*--e*e*e*e*e},inSine:function t(e){return 1-Math.cos(e*(Math.PI/2))},outSine:function t(e){return Math.sin(e*(Math.PI/2))},inOutSine:function t(e){return.5-.5*Math.cos(Math.PI*e)},inExpo:function t(e){return Math.pow(2,10*(e-1))},outExpo:function t(e){return 1-Math.pow(2,-10*e)},inOutExpo:function t(e){e=e*2-1;return e<0?.5*Math.pow(2,10*e):1-.5*Math.pow(2,-10*e)},inCirc:function t(e){return 1-Math.sqrt(1-e*e)},outCirc:function t(e){return Math.sqrt(1-(e-1)*(e-1))},inOutCirc:function t(e){e*=2;return e<1?.5-.5*Math.sqrt(1-e*e):.5+.5*Math.sqrt(1-(e-=2)*e)}};var et=Object.freeze({SVG_NS:H,MOVE_THRESHOLD:F,ANGLE_THRESHOLD:U,DBLCLICK_DELAY:V,INERTIA_WINDOW:W,SPHERE_RADIUS:G,SPHERE_VERTICES:Y,CUBE_VERTICES:X,CUBE_MAP:Z,CUBE_HASHMAP:j,MARKER_DATA:$,VIEWER_DATA:B,ACTIONS:K,EVENTS:q,MARKER_TYPES:Q,IDS:J,EASINGS:tt});var it={loaded:false,checkTHREE:ot,pixelRatio:1,isWebGLSupported:false,isCanvasSupported:false,isDeviceOrientationSupported:null,isTouchEnabled:null,maxTextureWidth:0,mouseWheelEvent:null,fullscreenEvent:null};it.load=function(){if(!it.loaded){it.loaded=true;it.pixelRatio=window.devicePixelRatio||1;it.isWebGLSupported=st();it.isCanvasSupported=nt();it.isDeviceOrientationSupported=at();it.isTouchEnabled=lt();it.maxTextureWidth=it.isWebGLSupported?ht():4096;it.mouseWheelEvent=ct();it.fullscreenEvent=pt()}};function ot(){for(var t=arguments.length,e=new Array(t),i=0;ie.latitudeRange[1]){e.latitudeRange=[e.latitudeRange[1],e.latitudeRange[0]];N("latitudeRange values must be ordered")}}if(e.maxFov\n '+e.config.lang.markers+'
\n \n '+t.map(function(t){return'\n - \n '+(t.type==="image"?'':"")+'\n
'+t.getListContent()+"
\n \n "}).join("")+"\n
\n\n"};var gt={markersList:vt};function mt(e){var i={};Object.keys(gt).forEach(function(t){if(!e||!e[t]){i[t]=gt[t]}else{i[t]=e[t]}});return i}var wt='\n';var yt='\n';var _t='\n';var Et='\n';var bt='\n';var Tt='\n';var Mt='';var Ct='';var kt='\n';var xt='\n';var Rt='\n';var At='\n';var St='\n';var Lt='\n';var Pt={compass:wt,download:yt,error:_t,fullscreenIn:Et,fullscreenOut:bt,gesture:Tt,info:Mt,mobileRotate:Ct,pin:kt,play:Rt,playActive:xt,stereo:At,zoomIn:St,zoomOut:Lt};function Ot(e){var i={};Object.keys(Pt).forEach(function(t){if(!e||!e[t]){i[t]=Pt[t]}else{i[t]=e[t]}});return i}var zt=function(){function r(t){var i=this;this.__cancelled=false;this.__resolved=false;this.__promise=new Promise(function(t,e){i.__resolve=t;i.__reject=e});if(t){if(!t.easing||typeof t.easing==="string"){t.easing=tt[t.easing||"linear"]}this.__start=null;this.options=t;if(t.delay){this.__delayTimeout=setTimeout(function(){i.__delayTimeout=null;window.requestAnimationFrame(function(t){return i.__run(t)})},t.delay)}else{window.requestAnimationFrame(function(t){return i.__run(t)})}}}var t=r.prototype;t.__run=function t(e){var i=this;if(this.__cancelled){return}if(this.__start===null){this.__start=e}var o=(e-this.__start)/this.options.duration;var n={};if(o<1){z(this.options.properties,function(t,e){if(t){n[e]=t.start+(t.end-t.start)*i.options.easing(o)}});this.options.onTick(n,o);window.requestAnimationFrame(function(t){return i.__run(t)})}else{z(this.options.properties,function(t,e){if(t){n[e]=t.end}});this.options.onTick(n,1);window.requestAnimationFrame(function(){i.__resolved=true;i.__resolve()})}};t.then=function t(e,i){var o=this;if(e===void 0){e=null}if(i===void 0){i=null}var n=new r;n.__promise.then(null,function(){return o.cancel()});this.__promise.then(function(){return n.__resolve(e?e():undefined)},function(){return n.__reject(i?i():undefined)});return n};t.catch=function t(e){return this.then(undefined,e)};t.finally=function t(e){return this.then(e,e)};t.cancel=function t(){if(!this.__cancelled&&!this.__resolved){this.__cancelled=true;this.__reject();if(this.__delayTimeout){window.cancelAnimationFrame(this.__delayTimeout);this.__delayTimeout=null}}};r.resolve=function t(){var e=Promise.resolve();e.cancel=function(){};return e};return r}();function Dt(t,e){for(var i=0;i1){throw new v("multiple marker content, either "+Object.keys(Q).join(", "))}return o[0]};return o}();var Ut=function(){function t(t,e){this.psv=t instanceof de?t:t.psv;this.parent=t;this.visible=true;this.container=document.createElement("div");this.container.className=e;this.parent.container.appendChild(this.container)}var e=t.prototype;e.destroy=function t(){this.parent.container.removeChild(this.container);delete this.container;delete this.parent;delete this.psv};e.hide=function t(){this.container.style.display="none";this.visible=false};e.show=function t(){this.container.style.display="";this.visible=true};e.isVisible=function t(){return this.visible};return t}();var Vt=function(i){It(t,i);function t(t){var e;e=i.call(this,t,"psv-hud")||this;e.markers={};e.currentMarker=null;e.hoveringMarker=null;if(e.psv.config.mousemove){e.container.style.cursor="move"}e.svgContainer=document.createElementNS(H,"svg");e.svgContainer.setAttribute("class","psv-hud-svg-container");e.container.appendChild(e.svgContainer);e.container.addEventListener("mouseenter",Ht(Ht(e)),true);e.container.addEventListener("mouseleave",Ht(Ht(e)),true);e.container.addEventListener("mousemove",Ht(Ht(e)),true);e.psv.on(q.CLICK,Ht(Ht(e)));e.psv.on(q.DOUBLE_CLICK,Ht(Ht(e)));e.psv.on(q.RENDER,Ht(Ht(e)));return e}var e=t.prototype;e.destroy=function t(){this.clearMarkers(false);this.container.removeEventListener("mouseenter",this);this.container.removeEventListener("mouseleave",this);this.container.removeEventListener("mousemove",this);this.psv.off(q.CLICK,this);this.psv.off(q.DOUBLE_CLICK,this);this.psv.off(q.RENDER,this);delete this.svgContainer;delete this.currentMarker;delete this.hoveringMarker;delete this.markers;i.prototype.destroy.call(this)};e.handleEvent=function t(e){switch(e.type){case"mouseenter":this.__onMouseEnter(e);break;case"mouseleave":this.__onMouseLeave(e);break;case"mousemove":this.__onMouseMove(e);break;case q.CLICK:this.__onClick(e.args[0],e,false);break;case q.DOUBLE_CLICK:this.__onClick(e.args[0],e,true);break;case q.RENDER:this.renderMarkers();break}};e.addMarker=function t(e,i){if(i===void 0){i=true}if(this.markers[e.id]){throw new v('marker "'+e.id+'" already exists')}var o=new Ft(e,this.psv);if(o.isNormal()){this.container.appendChild(o.$el)}else{this.svgContainer.appendChild(o.$el)}this.markers[o.id]=o;if(i){this.renderMarkers()}return o};e.getMarker=function t(e){var i=typeof e==="object"?e.id:e;if(!this.markers[i]){throw new v('cannot find marker "'+i+'"')}return this.markers[i]};e.getCurrentMarker=function t(){return this.currentMarker};e.updateMarker=function t(e,i){if(i===void 0){i=true}var o=this.getMarker(e);o.update(e);if(i){this.renderMarkers()}return o};e.removeMarker=function t(e){var i=this.getMarker(e);if(i.isNormal()){this.container.removeChild(i.$el)}else{this.svgContainer.removeChild(i.$el)}if(this.hoveringMarker===i){this.psv.tooltip.hide()}i.destroy();delete this.markers[i.id]};e.setMarkers=function t(e,i){var o=this;if(i===void 0){i=true}this.clearMarkers(false);z(e,function(t){return o.addMarker(t,false)});if(i){this.renderMarkers()}};e.clearMarkers=function t(e){var i=this;if(e===void 0){e=true}z(this.markers,function(t){return i.removeMarker(t,false)});if(e){this.renderMarkers()}};e.gotoMarker=function t(e,i){var o=this;var n=this.getMarker(e);return this.psv.animate(n.props.position,i).then(function(){o.psv.trigger(q.GOTO_MARKER_DONE,n)})};e.hideMarker=function t(e){this.getMarker(e).visible=false;this.renderMarkers()};e.showMarker=function t(e){this.getMarker(e).visible=true;this.renderMarkers()};e.toggleMarker=function t(e){this.getMarker(e).visible^=true;this.renderMarkers()};e.renderMarkers=function t(){var l=this;if(!this.visible){return}var h=!this.psv.isGyroscopeEnabled()?0:f.Math.radToDeg(this.psv.renderer.camera.rotation.z);z(this.markers,function(t){var e=t.visible;if(e&&t.isPoly()){var i=l.__getPolyPositions(t);e=i.length>(t.isPolygon()?2:1);if(e){t.props.position2D=l.__getPolyDimensions(t,i);var o=i.map(function(t){return t.x+","+t.y}).join(" ");t.$el.setAttributeNS(null,"points",o)}}else if(e){if(t.props.dynamicSize){l.__updateMarkerSize(t)}var n=t.getScale(l.psv.getZoomLevel());var r=l.__getMarkerPosition(t,n);e=l.__isMarkerVisible(t,r);if(e){t.props.position2D=r;if(t.isSvg()){var s="translate("+r.x+", "+r.y+")";if(n!==1){s+=" scale("+n+", "+n+")"}if(!t.config.lockRotation&&h){s+=" rotate("+h+")"}t.$el.setAttributeNS(null,"transform",s)}else{var a="translate3D("+r.x+"px, "+r.y+"px, 0px)";if(n!==1){a+=" scale("+n+", "+n+")"}if(!t.config.lockRotation&&h){a+=" rotateZ("+h+"deg)"}t.$el.style.transform=a}}}c(t.$el,"psv-marker--visible",e)})};e.__isMarkerVisible=function t(e,i){return e.props.positions3D[0].dot(this.psv.prop.direction)>0&&i.x+e.props.width>=0&&i.x-e.props.width<=this.psv.prop.size.width&&i.y+e.props.height>=0&&i.y-e.props.height<=this.psv.prop.size.height};e.__updateMarkerSize=function t(e){p(e.$el,"psv-marker--transparent");var i;if(e.isSvg()){i=e.$el.getAttributeNS(null,"transform");e.$el.removeAttributeNS(null,"transform")}else{i=e.$el.style.transform;e.$el.style.transform=""}var o=e.$el.getBoundingClientRect();e.props.width=o.right-o.left;e.props.height=o.bottom-o.top;n(e.$el,"psv-marker--transparent");if(i){if(e.isSvg()){e.$el.setAttributeNS(null,"transform",i)}else{e.$el.style.transform=i}}e.props.dynamicSize=false};e.__getMarkerPosition=function t(e,i){var o=this.psv.dataHelper.vector3ToViewerCoords(e.props.positions3D[0]);o.x-=e.props.width*e.props.anchor.x*i;o.y-=e.props.height*e.props.anchor.y*i;return o};e.__getPolyPositions=function t(e){var i=this;var o=e.props.positions3D.length;var n=e.props.positions3D.map(function(t){return{vector:t,visible:t.dot(i.psv.prop.direction)>0}});var r=[];n.forEach(function(e,i){if(!e.visible){var t=[i===0?n[o-1]:n[i-1],i===o-1?n[0]:n[i+1]];t.forEach(function(t){if(t.visible){r.push({visible:t,invisible:e,index:i})}})}});r.reverse().forEach(function(t){n.splice(t.index,0,{vector:i.__getPolyIntermediaryPoint(t.visible.vector,t.invisible.vector),visible:true})});return n.filter(function(t){return t.visible}).map(function(t){return i.psv.dataHelper.vector3ToViewerCoords(t.vector)})};e.__getPolyIntermediaryPoint=function t(e,i){var o=this.psv.prop.direction.clone().normalize();var n=(new f.Vector3).crossVectors(e,i).normalize();var r=(new f.Vector3).crossVectors(n,e).normalize();var s=e.clone().multiplyScalar(-o.dot(r));var a=r.clone().multiplyScalar(o.dot(e));var l=(new f.Vector3).addVectors(s,a).normalize();var h=(new f.Vector3).crossVectors(l,o);return l.applyAxisAngle(h,.01).multiplyScalar(G)};e.__getPolyDimensions=function t(e,i){var o=+Infinity;var n=+Infinity;var r=-Infinity;var s=-Infinity;i.forEach(function(t){o=Math.min(o,t.x);n=Math.min(n,t.y);r=Math.max(r,t.x);s=Math.max(s,t.y)});e.props.width=r-o;e.props.height=s-n;return{x:o,y:n}};e.__getTargetMarker=function t(e,i){if(i===void 0){i=false}var o=i?r(e,".psv-marker"):e;return o?o[$]:undefined};e.__targetOnTooltip=function t(e){return e?o(e,this.psv.tooltip.container):false};e.__onMouseEnter=function t(e){var i=this.__getTargetMarker(e.target);if(i&&!i.isPoly()){this.hoveringMarker=i;this.psv.trigger(q.OVER_MARKER,i);if(i.config.tooltip){this.psv.tooltip.show({content:i.config.tooltip.content,position:i.config.tooltip.position,left:i.props.position2D.x,top:i.props.position2D.y,box:{width:i.props.width,height:i.props.height}})}}};e.__onMouseLeave=function t(e){var i=this.__getTargetMarker(e.target);if(i&&!(i.isPoly()&&this.__targetOnTooltip(e.relatedTarget))){this.psv.trigger(q.LEAVE_MARKER,i);this.hoveringMarker=null;this.psv.tooltip.hide()}};e.__onMouseMove=function t(e){if(!this.psv.eventsHandler.state.moving){var i;var o=this.__getTargetMarker(e.target);if(o&&o.isPoly()){i=o}else if(this.__targetOnTooltip(e.target)&&this.hoveringMarker){i=this.hoveringMarker}if(i){if(!this.hoveringMarker){this.psv.trigger(q.OVER_MARKER,i);this.hoveringMarker=i}var n=this.psv.container.getBoundingClientRect();if(i.config.tooltip){this.psv.tooltip.show({content:i.config.tooltip.content,position:i.config.tooltip.position,top:e.clientY-n.top-this.psv.tooltip.prop.arrowSize/2,left:e.clientX-n.left-this.psv.tooltip.prop.arrowSize,box:{width:this.psv.tooltip.prop.arrowSize*2,height:this.psv.tooltip.prop.arrowSize*2}})}}else if(this.hoveringMarker&&this.hoveringMarker.isPoly()){this.psv.trigger(q.LEAVE_MARKER,this.hoveringMarker);this.hoveringMarker=null;this.psv.tooltip.hide()}}};e.__onClick=function t(e,i,o){var n=this.__getTargetMarker(e.target,true);if(n){this.currentMarker=n;this.psv.trigger(q.SELECT_MARKER,n,o);if(this.psv.config.clickEventOnMarker){e.marker=n}else{i.stopPropagation()}}else if(this.currentMarker){this.psv.trigger(q.UNSELECT_MARKER,this.currentMarker);this.currentMarker=null}if(n&&n.config.content){this.psv.panel.show({id:J.MARKER,content:n.config.content})}else{this.psv.panel.hide(J.MARKER)}};return t}(Ut);var Wt=function(n){It(t,n);function t(t){var e;e=n.call(this,t,"psv-loader-container")||this;e.loader=document.createElement("div");e.loader.className="psv-loader";e.container.appendChild(e.loader);e.canvas=document.createElement("canvas");e.canvas.className="psv-loader-canvas";e.canvas.width=e.loader.clientWidth*it.pixelRatio;e.canvas.height=e.loader.clientWidth*it.pixelRatio;e.loader.appendChild(e.canvas);e.prop={tickness:(e.loader.offsetWidth-e.loader.clientWidth)/2*it.pixelRatio};var i;if(e.psv.config.loadingImg){i=document.createElement("img");i.className="psv-loader-image";i.src=e.psv.config.loadingImg}else if(e.psv.config.loadingTxt){i=document.createElement("div");i.className="psv-loader-text";i.innerHTML=e.psv.config.loadingTxt}if(i){var o=Math.round(Math.sqrt(2*Math.pow((e.canvas.width/2-e.prop.tickness/2)/it.pixelRatio,2)));i.style.maxWidth=o+"px";i.style.maxHeight=o+"px";e.loader.appendChild(i)}e.hide();return e}var e=t.prototype;e.destroy=function t(){delete this.loader;delete this.canvas;n.prototype.destroy.call(this)};e.setProgress=function t(e){var i=this.canvas.getContext("2d");i.clearRect(0,0,this.canvas.width,this.canvas.height);i.lineWidth=this.prop.tickness;i.strokeStyle=_(this.loader,"color");i.beginPath();i.arc(this.canvas.width/2,this.canvas.height/2,this.canvas.width/2-this.prop.tickness/2,-Math.PI/2,e/100*2*Math.PI-Math.PI/2);i.stroke()};return t}(Ut);var Gt=function(n){It(t,n);Nt(t,null,[{key:"id",get:function t(){return null}},{key:"icon",get:function t(){return null}},{key:"iconActive",get:function t(){return null}}]);function t(t,e){var i;i=n.call(this,t,"psv-button "+e)||this;i.id=i.constructor.id;i.enabled=true;if(i.constructor.icon){i.__setIcon(i.constructor.icon)}if(i.id&&i.psv.config.lang[i.id]){i.container.title=i.psv.config.lang[i.id]}i.container.addEventListener("click",function(t){if(i.enabled){i.__onClick()}t.stopPropagation()});var o=i.supported();if(typeof o.then==="function"){i.hide();o.then(function(t){if(t){i.show()}})}else if(!o){i.hide()}return i}var e=t.prototype;e.supported=function t(){return true};e.toggleActive=function t(e){c(this.container,"psv-button--active",e);if(this.constructor.iconActive){this.__setIcon(e?this.constructor.iconActive:this.constructor.icon)}};e.disable=function t(){this.container.classList.add("psv-button--disabled");this.enabled=false};e.enable=function t(){this.container.classList.remove("psv-button--disabled");this.enabled=true};e.__setIcon=function t(e,i){if(i===void 0){i=this.container}if(e){i.innerHTML=this.psv.icons[e];i.querySelector("svg").setAttribute("class","psv-button-svg")}else{i.innerHTML=""}};e.__onClick=function t(){throw new v('__onClick not implemented for button "'+this.id+'".')};return t}(Ut);var Yt=function(i){It(t,i);Nt(t,null,[{key:"id",get:function t(){return"autorotate"}},{key:"icon",get:function t(){return"play"}},{key:"iconActive",get:function t(){return"playActive"}}]);function t(t){var e;e=i.call(this,t,"psv-button--hover-scale psv-autorotate-button")||this;e.psv.on(q.AUTOROTATE,Ht(Ht(e)));return e}var e=t.prototype;e.destroy=function t(){this.psv.off(q.AUTOROTATE,this);i.prototype.destroy.call(this)};e.handleEvent=function t(e){switch(e.type){case q.AUTOROTATE:this.toggleActive(e.args[0]);break}};e.__onClick=function t(){this.psv.toggleAutorotate()};return t}(Gt);var Xt=function(o){It(t,o);function t(t,e){var i;i=o.call(this,t,"psv-custom-button")||this;i.config=e;if(i.config.id){i.id=i.config.id}if(i.config.className){p(i.container,i.config.className)}if(i.config.title){i.container.title=i.config.title}if(i.config.content){i.container.innerHTML=i.config.content}if(i.config.enabled===false){i.disable()}if(i.config.visible===false){i.hide()}return i}var e=t.prototype;e.destroy=function t(){delete this.config;o.prototype.destroy.call(this)};e.__onClick=function t(){if(this.config.onClick){this.config.onClick.apply(this.psv)}};return t}(Gt);var Zt=function(e){It(t,e);Nt(t,null,[{key:"id",get:function t(){return"download"}},{key:"icon",get:function t(){return"download"}}]);function t(t){return e.call(this,t,"psv-button--hover-scale psv-download-button")||this}var i=t.prototype;i.__onClick=function t(){var e=this;var i=document.createElement("a");i.href=this.psv.config.panorama;i.download=this.psv.config.panorama;this.psv.container.appendChild(i);i.click();setTimeout(function(){e.psv.container.removeChild(i)},100)};return t}(Gt);var jt=function(i){It(t,i);Nt(t,null,[{key:"id",get:function t(){return"fullscreen"}},{key:"icon",get:function t(){return"fullscreenIn"}},{key:"iconActive",get:function t(){return"fullscreenOut"}}]);function t(t){var e;e=i.call(this,t,"psv-button--hover-scale psv-fullscreen-button")||this;e.psv.on(q.FULLSCREEN_UPDATED,Ht(Ht(e)));return e}var e=t.prototype;e.destroy=function t(){this.psv.off(q.FULLSCREEN_UPDATED,this);i.prototype.destroy.call(this)};e.handleEvent=function t(e){switch(e.type){case q.FULLSCREEN_UPDATED:this.toggleActive(e.args[0]);break}};e.__onClick=function t(){this.psv.toggleFullscreen()};return t}(Gt);var $t=function(i){It(t,i);Nt(t,null,[{key:"id",get:function t(){return"gyroscope"}},{key:"icon",get:function t(){return"compass"}}]);function t(t){var e;e=i.call(this,t,"psv-button--hover-scale psv-gyroscope-button")||this;e.psv.on(q.GYROSCOPE_UPDATED,Ht(Ht(e)));return e}var e=t.prototype;e.destroy=function t(){this.psv.off(q.GYROSCOPE_UPDATED,this);i.prototype.destroy.call(this)};e.supported=function t(){if(!it.checkTHREE("DeviceOrientationControls")){return false}else{return it.isDeviceOrientationSupported}};e.handleEvent=function t(e){switch(e.type){case q.GYROSCOPE_UPDATED:this.toggleActive(e.args[0]);break}};e.__onClick=function t(){this.psv.toggleGyroscopeControl()};return t}(Gt);var Bt=function(i){It(t,i);Nt(t,null,[{key:"id",get:function t(){return"markers"}},{key:"icon",get:function t(){return"pin"}}]);function t(t){var e;e=i.call(this,t,"psv-button--hover-scale psv-markers-button")||this;e.psv.on(q.OPEN_PANEL,Ht(Ht(e)));e.psv.on(q.CLOSE_PANEL,Ht(Ht(e)));return e}var e=t.prototype;e.destroy=function t(){this.psv.off(q.OPEN_PANEL,this);this.psv.off(q.CLOSE_PANEL,this);i.prototype.destroy.call(this)};e.handleEvent=function t(e){switch(e.type){case q.OPEN_PANEL:this.toggleActive(e.args[0]===J.MARKERS_LIST);break;case q.CLOSE_PANEL:this.toggleActive(false);break}};e.__onClick=function t(){this.psv.toggleMarkersList()};return t}(Gt);var Kt=function(i){It(t,i);Nt(t,null,[{key:"id",get:function t(){return"stereo"}},{key:"icon",get:function t(){return"stereo"}}]);function t(t){var e;e=i.call(this,t,"psv-button--hover-scale psv-stereo-button")||this;e.psv.on(q.STEREO_UPATED,Ht(Ht(e)));return e}var e=t.prototype;e.destroy=function t(){this.psv.off(q.STEREO_UPATED,this);i.prototype.destroy.call(this)};e.supported=function t(){if(!it.checkTHREE("DeviceOrientationControls")){return false}else{return it.isDeviceOrientationSupported}};e.handleEvent=function t(e){switch(e.type){case q.STEREO_UPATED:this.toggleActive(e.args[0]);break}};e.__onClick=function t(){this.psv.toggleStereoView()};return t}(Gt);var qt=function(r){It(t,r);Nt(t,null,[{key:"id",get:function t(){return"zoom"}}]);function t(t){var e;e=r.call(this,t,"psv-zoom-button")||this;e.prop={mousedown:false,buttondown:false,longPressInterval:null,longPressTimeout:null};var i=document.createElement("div");i.className="psv-zoom-button-minus";i.title=e.psv.config.lang.zoomOut;e.__setIcon("zoomOut",i);e.container.appendChild(i);var o=document.createElement("div");o.className="psv-zoom-button-range";e.container.appendChild(o);e.zoomRange=document.createElement("div");e.zoomRange.className="psv-zoom-button-line";o.appendChild(e.zoomRange);e.zoomValue=document.createElement("div");e.zoomValue.className="psv-zoom-button-handle";e.zoomRange.appendChild(e.zoomValue);var n=document.createElement("div");n.className="psv-zoom-button-plus";n.title=e.psv.config.lang.zoomIn;e.__setIcon("zoomIn",n);e.container.appendChild(n);e.zoomRange.addEventListener("mousedown",Ht(Ht(e)));e.zoomRange.addEventListener("touchstart",Ht(Ht(e)));e.psv.container.addEventListener("mousemove",Ht(Ht(e)));e.psv.container.addEventListener("touchmove",Ht(Ht(e)));e.psv.container.addEventListener("mouseup",Ht(Ht(e)));e.psv.container.addEventListener("touchend",Ht(Ht(e)));i.addEventListener("mousedown",e.__zoomOut.bind(Ht(Ht(e))));n.addEventListener("mousedown",e.__zoomIn.bind(Ht(Ht(e))));e.psv.on(q.ZOOM_UPDATED,Ht(Ht(e)));e.psv.once(q.READY,Ht(Ht(e)));return e}var e=t.prototype;e.destroy=function t(){this.__stopZoomChange();this.psv.container.removeEventListener("mousemove",this);this.psv.container.removeEventListener("touchmove",this);this.psv.container.removeEventListener("mouseup",this);this.psv.container.removeEventListener("touchend",this);delete this.zoomRange;delete this.zoomValue;delete this.prop;this.psv.off(q.ZOOM_UPDATED,this);r.prototype.destroy.call(this)};e.handleEvent=function t(e){switch(e.type){case"mousedown":this.__initZoomChangeWithMouse(e);break;case"touchstart":this.__initZoomChangeByTouch(e);break;case"mousemove":this.__changeZoomWithMouse(e);break;case"touchmove":this.__changeZoomByTouch(e);break;case"mouseup":this.__stopZoomChange(e);break;case"touchend":this.__stopZoomChange(e);break;case q.ZOOM_UPDATED:this.__moveZoomValue(e.args[0]);break;case q.READY:this.__moveZoomValue(this.psv.prop.zoomLvl);break}};e.__onClick=function t(){};e.__moveZoomValue=function t(e){this.zoomValue.style.left=e/100*this.zoomRange.offsetWidth-this.zoomValue.offsetWidth/2+"px"};e.__initZoomChangeWithMouse=function t(e){if(!this.enabled){return}this.prop.mousedown=true;this.__changeZoom(e.clientX)};e.__initZoomChangeByTouch=function t(e){if(!this.enabled){return}this.prop.mousedown=true;this.__changeZoom(e.changedTouches[0].clientX)};e.__zoomIn=function t(){var e=this;if(!this.enabled){return}this.prop.buttondown=true;this.psv.zoomIn();this.prop.longPressTimeout=setTimeout(function(){return e.__startLongPressInterval(1)},200)};e.__zoomOut=function t(){var e=this;if(!this.enabled){return}this.prop.buttondown=true;this.psv.zoomOut();this.prop.longPressTimeout=setTimeout(function(){return e.__startLongPressInterval(-1)},200)};e.__startLongPressInterval=function t(e){var i=this;if(this.prop.buttondown){this.prop.longPressInterval=setInterval(function(){i.psv.zoom(i.psv.prop.zoomLvl+e)},50)}};e.__stopZoomChange=function t(){if(!this.enabled){return}clearInterval(this.prop.longPressInterval);clearTimeout(this.prop.longPressTimeout);this.prop.longPressInterval=null;this.prop.mousedown=false;this.prop.buttondown=false};e.__changeZoomWithMouse=function t(e){if(!this.enabled){return}e.preventDefault();this.__changeZoom(e.clientX)};e.__changeZoomByTouch=function t(e){if(!this.enabled){return}this.__changeZoom(e.changedTouches[0].clientX)};e.__changeZoom=function t(e){if(this.prop.mousedown){var i=e-this.zoomRange.getBoundingClientRect().left;var o=i/this.zoomRange.offsetWidth*100;this.psv.zoom(o)}};return t}(Gt);var Qt=function(i){It(t,i);Nt(t,null,[{key:"id",get:function t(){return"caption"}},{key:"icon",get:function t(){return"info"}}]);function t(t){var e;e=i.call(this,t,"psv-button--hover-scale psv-caption-button")||this;e.psv.on(q.HIDE_NOTIFICATION,Ht(Ht(e)));return e}var e=t.prototype;e.destroy=function t(){this.psv.off(q.HIDE_NOTIFICATION,this);i.prototype.destroy.call(this)};e.handleEvent=function t(e){switch(e.type){case q.HIDE_NOTIFICATION:this.toggleActive(false);break}};e.__onClick=function t(){if(this.psv.notification.visible){this.psv.notification.hide()}else{this.psv.notification.show(this.parent.prop.caption);this.toggleActive(true)}};return t}(Gt);var Jt=function(o){It(t,o);function t(t,e){var i;i=o.call(this,t,"psv-caption")||this;i.id="caption";i.prop={caption:"",width:0};i.button=new Qt(Ht(Ht(i)));i.button.hide();i.content=document.createElement("div");i.content.className="psv-caption-content";i.container.appendChild(i.content);i.psv.on(q.SIZE_UPDATED,Ht(Ht(i)));i.setCaption(e);return i}var e=t.prototype;e.destroy=function t(){this.psv.off(q.SIZE_UPDATED,this);this.button.destroy();delete this.button;delete this.content;o.prototype.destroy.call(this)};e.handleEvent=function t(e){switch(e.type){case q.SIZE_UPDATED:this.__onResize();break}};e.setCaption=function t(e){this.prop.caption=e||"";this.content.innerHTML=this.prop.caption;this.button.hide();this.content.style.display="";this.prop.width=this.content.offsetWidth;this.__onResize()};e.__onResize=function t(){if(this.container.offsetWidth>=this.prop.width){this.button.hide();this.content.style.display=""}else{this.button.show();this.content.style.display="none"}};return t}(Ut);var te=function(i){It(t,i);function t(t){var e;e=i.call(this,t,"psv-navbar")||this;e.items=[];if(e.psv.config.navbar){e.setButtons(e.psv.config.navbar)}return e}var e=t.prototype;e.destroy=function t(){this.setButtons([]);delete this.items;i.prototype.destroy.call(this)};e.setButtons=function t(e){var i=this;this.items.forEach(function(t){return t.destroy()});this.items.length=0;e.forEach(function(t){if(typeof t==="object"){i.items.push(new Xt(i,t))}else{switch(t){case Yt.id:i.items.push(new Yt(i));break;case qt.id:i.items.push(new qt(i));break;case Zt.id:i.items.push(new Zt(i));break;case Bt.id:i.items.push(new Bt(i));break;case jt.id:i.items.push(new jt(i));break;case Kt.id:i.items.push(new Kt(i));break;case $t.id:i.items.push(new $t(i));break;case"caption":i.items.push(new Jt(i,i.psv.config.caption));break;default:throw new v("Unknown button "+t)}}})};e.setCaption=function t(e){var i=this.getButton("caption",true);if(!i){throw new v("Cannot set caption, the navbar caption container is not initialized.")}i.setCaption(e)};e.getButton=function t(e,i){var o=null;this.items.some(function(t){if(t.id===e){o=t;return true}else{return false}});if(!o&&!i){N('button "'+e+'" not found in the navbar')}return o};e.show=function t(){this.container.classList.add("psv-navbar--open");this.visible=true};e.hide=function t(){this.container.classList.remove("psv-navbar--open");this.visible=false};return t}(Ut);var ee=function(i){It(t,i);function t(t){var e;e=i.call(this,t,"psv-notification")||this;e.prop={timeout:null};e.content=document.createElement("div");e.content.className="psv-notification-content";e.container.appendChild(e.content);e.content.addEventListener("click",function(){return e.hide()});return e}var e=t.prototype;e.destroy=function t(){delete this.content;i.prototype.destroy.call(this)};e.show=function t(e){var i=this;if(this.prop.timeout){clearTimeout(this.prop.timeout);this.prop.timeout=null}if(typeof e==="string"){e={content:e}}this.content.innerHTML=e.content;this.visible=true;this.container.classList.add("psv-notification--visible");this.psv.trigger(q.SHOW_NOTIFICATION);if(e.timeout){this.prop.timeout=setTimeout(function(){return i.hide()},e.timeout)}};e.hide=function t(){if(this.visible){this.container.classList.remove("psv-notification--visible");this.visible=false;this.psv.trigger(q.HIDE_NOTIFICATION)}};return t}(Ut);var ie=function(i){It(t,i);function t(t){var e;e=i.call(this,t,"psv-overlay")||this;e.prop={id:undefined};e.image=document.createElement("div");e.image.className="psv-overlay-image";e.container.appendChild(e.image);e.text=document.createElement("div");e.text.className="psv-overlay-text";e.container.appendChild(e.text);e.subtext=document.createElement("div");e.subtext.className="psv-overlay-subtext";e.container.appendChild(e.subtext);e.container.addEventListener("mouseup",function(t){t.stopPropagation();e.hide()},true);i.prototype.hide.call(Ht(e));return e}var e=t.prototype;e.destroy=function t(){delete this.prop;delete this.image;delete this.text;delete this.subtext;i.prototype.destroy.call(this)};e.show=function t(e){if(typeof e==="string"){e={text:e}}this.prop.id=e.id;this.image.innerHTML=e.image||"";this.text.innerHTML=e.text||"";this.subtext.innerHTML=e.subtext||"";i.prototype.show.call(this);this.psv.trigger(q.SHOW_OVERLAY,e.id)};e.hide=function t(e){if(this.visible&&(!e||!this.prop.id||this.prop.id===e)){i.prototype.hide.call(this);this.prop.id=undefined;this.psv.trigger(q.HIDE_OVERLAY)}};return t}(Ut);var oe=200;var ne=function(n){It(t,n);function t(t){var e;e=n.call(this,t,"psv-panel")||this;e.prop={id:undefined,mouseX:0,mouseY:0,mousedown:false};var i=document.createElement("div");i.className="psv-panel-resizer";e.container.appendChild(i);var o=document.createElement("div");o.className="psv-panel-close-button";e.container.appendChild(o);e.content=document.createElement("div");e.content.className="psv-panel-content";e.container.appendChild(e.content);e.container.addEventListener(it.mouseWheelEvent,function(t){return t.stopPropagation()});o.addEventListener("click",function(){return e.hide()});i.addEventListener("mousedown",Ht(Ht(e)));i.addEventListener("touchstart",Ht(Ht(e)));e.psv.container.addEventListener("mouseup",Ht(Ht(e)));e.psv.container.addEventListener("touchend",Ht(Ht(e)));e.psv.container.addEventListener("mousemove",Ht(Ht(e)));e.psv.container.addEventListener("touchmove",Ht(Ht(e)));return e}var e=t.prototype;e.destroy=function t(){this.psv.container.removeEventListener("mousemove",this);this.psv.container.removeEventListener("touchmove",this);this.psv.container.removeEventListener("mouseup",this);this.psv.container.removeEventListener("touchend",this);delete this.prop;delete this.content;n.prototype.destroy.call(this)};e.handleEvent=function t(e){switch(e.type){case"mousedown":this.__onMouseDown(e);break;case"touchstart":this.__onTouchStart(e);break;case"mousemove":this.__onMouseMove(e);break;case"touchmove":this.__onTouchMove(e);break;case"mouseup":this.__onMouseUp(e);break;case"touchend":this.__onMouseUp(e);break}};e.show=function t(e){if(typeof e==="string"){e={content:e}}this.prop.id=e.id;this.visible=true;this.content.innerHTML=e.content;this.content.scrollTop=0;this.container.classList.add("psv-panel--open");c(this.content,"psv-panel-content--no-margin",e.noMargin===true);this.psv.trigger(q.OPEN_PANEL,e.id)};e.hide=function t(e){if(this.visible&&(!e||!this.prop.id||this.prop.id===e)){this.visible=false;this.prop.id=undefined;this.content.innerHTML=null;this.container.classList.remove("psv-panel--open");this.psv.trigger(q.CLOSE_PANEL)}};e.__onMouseDown=function t(e){e.stopPropagation();this.__startResize(e)};e.__onTouchStart=function t(e){e.stopPropagation();this.__startResize(e.changedTouches[0])};e.__onMouseUp=function t(e){if(this.prop.mousedown){e.stopPropagation();this.prop.mousedown=false;this.content.classList.remove("psv-panel-content--no-interaction")}};e.__onMouseMove=function t(e){if(this.prop.mousedown){e.stopPropagation();this.__resize(e)}};e.__onTouchMove=function t(e){if(this.prop.mousedown){this.__resize(e.touches[0])}};e.__startResize=function t(e){this.prop.mouseX=e.clientX;this.prop.mouseY=e.clientY;this.prop.mousedown=true;this.content.classList.add("psv-panel-content--no-interaction")};e.__resize=function t(e){var i=e.clientX;var o=e.clientY;this.container.style.width=Math.max(oe,this.container.offsetWidth-(i-this.prop.mouseX))+"px";this.prop.mouseX=i;this.prop.mouseY=o};return t}(Ut);var re={0:"left",.5:"center",1:"right"};var se={0:"top",.5:"center",1:"bottom"};var ae=function(i){It(t,i);function t(t){var e;e=i.call(this,t,"psv-tooltip")||this;e.prop={state:null,arrowSize:0,offset:0};e.content=document.createElement("div");e.content.className="psv-tooltip-content";e.container.appendChild(e.content);e.arrow=document.createElement("div");e.arrow.className="psv-tooltip-arrow";e.container.appendChild(e.arrow);e.container.addEventListener("transitionend",Ht(Ht(e)));e.container.style.top="-1000px";e.container.style.left="-1000px";e.prop.arrowSize=parseInt(_(e.arrow,"borderTopWidth"),10);e.prop.offset=parseInt(_(e.container,"outlineWidth"),10);e.psv.on(q.RENDER,Ht(Ht(e)));return e}var e=t.prototype;e.destroy=function t(){this.psv.off(q.RENDER,this);delete this.arrow;delete this.content;delete this.prop;i.prototype.destroy.call(this)};e.handleEvent=function t(e){switch(e.type){case q.RENDER:this.hide();break;case"transitionend":this.__onTransitionEnd(e);break}};e.show=function t(e){var i=this.visible;var o=this.container;var n=this.content;var r=this.arrow;if(!e.position){e.position=["top","center"]}if(!e.box){e.box={width:0,height:0}}if(typeof e.position==="string"){var s=M(e.position);if(!(s.x in re)||!(s.y in se)){throw new v('unable to parse tooltip position "'+e.position+'"')}e.position=[se[s.y],re[s.x]]}if(e.position[0]==="center"&&e.position[1]==="center"){throw new v('unable to parse tooltip position "center center"')}if(i){for(var a=o.classList.length-1;a>=0;a--){var l=o.classList.item(a);if(l!=="psv-tooltip"&&l!=="psv-tooltip--visible"){o.classList.remove(l)}}}else{o.className="psv-tooltip"}if(e.className){p(o,e.className)}n.innerHTML=e.content;o.style.top="0px";o.style.left="0px";var h=o.getBoundingClientRect();var c={posClass:e.position.slice(),width:h.right-h.left,height:h.bottom-h.top,top:0,left:0,arrowTop:0,arrowLeft:0};this.__computeTooltipPosition(c,e);var u=false;if(c.topthis.psv.prop.size.height-this.prop.offset){c.posClass[0]="top";u=true}if(c.leftthis.psv.prop.size.width-this.prop.offset){c.posClass[1]="left";u=true}if(u){this.__computeTooltipPosition(c,e)}o.style.top=c.top+"px";o.style.left=c.left+"px";r.style.top=c.arrowTop+"px";r.style.left=c.arrowLeft+"px";o.classList.add("psv-tooltip--"+c.posClass.join("-"));this.prop.state="showing"};e.hide=function t(){if(this.visible){this.container.classList.remove("psv-tooltip--visible");this.visible=false;this.prop.state="hidding";this.psv.trigger(q.HIDE_TOOLTIP)}};e.__onTransitionEnd=function t(e){if(e.propertyName==="transform"){switch(this.prop.state){case"showing":this.container.classList.add("psv-tooltip--visible");this.visible=true;this.prop.state=null;this.psv.trigger(q.SHOW_TOOLTIP);break;case"hidding":this.prop.state=null;this.content.innerHTML=null;this.container.style.top="-1000px";this.container.style.left="-1000px";break;default:this.prop.state=null}}};e.__computeTooltipPosition=function t(e,i){var o=false;switch(e.posClass[0]){case"bottom":e.top=i.top+i.box.height+this.prop.offset+this.prop.arrowSize;e.arrowTop=-this.prop.arrowSize*2;o=true;break;case"center":e.top=i.top+i.box.height/2-e.height/2;e.arrowTop=e.height/2-this.prop.arrowSize;break;case"top":e.top=i.top-e.height-this.prop.offset-this.prop.arrowSize;e.arrowTop=e.height;o=true;break}switch(e.posClass[1]){case"right":if(o){e.left=i.left+i.box.width/2-this.prop.offset-this.prop.arrowSize;e.arrowLeft=this.prop.offset}else{e.left=i.left+i.box.width+this.prop.offset+this.prop.arrowSize;e.arrowLeft=-this.prop.arrowSize*2}break;case"center":e.left=i.left+i.box.width/2-e.width/2;e.arrowLeft=e.width/2-this.prop.arrowSize;break;case"left":if(o){e.left=i.left-e.width+i.box.width/2+this.prop.offset+this.prop.arrowSize;e.arrowLeft=e.width-this.prop.offset-this.prop.arrowSize*2}else{e.left=i.left-e.width-this.prop.offset-this.prop.arrowSize;e.arrowLeft=e.width}break}};return t}(Ut);var le=function(){function t(t){this.psv=t;this.config=t.config;this.prop=t.prop}var e=t.prototype;e.destroy=function t(){delete this.psv;delete this.config;delete this.prop};return t}();var he=function(e){It(t,e);function t(t){return e.call(this,t)||this}var i=t.prototype;i.fovToZoomLevel=function t(e){var i=Math.round((e-this.config.minFov)/(this.config.maxFov-this.config.minFov)*100);return i-2*(i-50)};i.zoomLevelToFov=function t(e){return this.config.maxFov+e/100*(this.config.minFov-this.config.maxFov)};i.vFovToHFov=function t(e){return f.Math.radToDeg(2*Math.atan(Math.tan(f.Math.degToRad(e)/2)*this.prop.aspect))};i.speedToDuration=function t(e,i){if(!e||typeof e!=="number"){var o=e?C(e):this.config.autorotateSpeed;return i/Math.abs(o)*1e3}else{return Math.abs(e)}};i.textureCoordsToSphericalCoords=function t(e){if(this.prop.isCubemap){throw new v("Unable to use texture coords with cubemap.")}var i=this.prop.panoData;var o=(e.x+i.croppedX)/i.fullWidth*Math.PI*2;var n=(e.y+i.croppedY)/i.fullHeight*Math.PI;return{longitude:o>=Math.PI?o-Math.PI:o+Math.PI,latitude:Math.PI/2-n}};i.sphericalCoordsToTextureCoords=function t(e){if(this.prop.isCubemap){throw new v("Unable to use texture coords with cubemap.")}var i=this.prop.panoData;var o=e.longitude/Math.PI/2*i.fullWidth;var n=e.latitude/Math.PI*i.fullHeight;return{x:Math.round(e.longituden[1]){if(e.longitude>n[1]&&e.longituden[0]/2+n[1]/2){i.longitude=n[0];o.push("left")}else{i.longitude=n[1];o.push("right")}}}else if(e.longituden[1]){i.longitude=n[1];o.push("right")}}if(this.config.latitudeRange){n=L(this.config.latitudeRange);r=f.Math.degToRad(this.prop.vFov)/2;n[0]=k(Math.min(n[0]+r,n[1]),true);n[1]=k(Math.max(n[1]-r,n[0]),true);if(e.latituden[1]){i.latitude=n[1];o.push("top")}}return{rangedPosition:i,sidesReached:o}};return t}(le);var ce=function(i){It(t,i);function t(t){var e;e=i.call(this,t)||this;e.state={keyboardEnabled:false,moving:false,zooming:false,startMouseX:0,startMouseY:0,mouseX:0,mouseY:0,mouseHistory:[],pinchDist:0,dblclickData:null,dblclickTimeout:null};e.__onResize=R(function(){return e.psv.autoSize()},50);return e}var e=t.prototype;e.init=function t(){window.addEventListener("resize",this);window.addEventListener("keydown",this);if(this.config.mousemove){if(this.config.mousemoveHover){this.psv.hud.container.addEventListener("mouseenter",this);this.psv.hud.container.addEventListener("mouseleave",this)}else{this.psv.hud.container.addEventListener("mousedown",this);window.addEventListener("mouseup",this)}this.psv.hud.container.addEventListener("touchstart",this);window.addEventListener("touchend",this);this.psv.hud.container.addEventListener("mousemove",this);this.psv.hud.container.addEventListener("touchmove",this)}if(it.fullscreenEvent){document.addEventListener(it.fullscreenEvent,this)}if(this.config.mousewheel){this.psv.hud.container.addEventListener(it.mouseWheelEvent,this)}};e.destroy=function t(){window.removeEventListener("resize",this);window.removeEventListener("keydown",this);if(this.config.mousemove){this.psv.hud.container.removeEventListener("mousedown",this);this.psv.hud.container.removeEventListener("mouseenter",this);this.psv.hud.container.removeEventListener("touchstart",this);window.removeEventListener("mouseup",this);window.removeEventListener("touchend",this);this.psv.hud.container.removeEventListener("mouseleave",this);this.psv.hud.container.removeEventListener("mousemove",this);this.psv.hud.container.removeEventListener("touchmove",this)}if(it.fullscreenEvent){document.removeEventListener(it.fullscreenEvent,this)}if(this.config.mousewheel){this.psv.hud.container.removeEventListener(it.mouseWheelEvent,this)}delete this.state;i.prototype.destroy.call(this)};e.handleEvent=function t(e){switch(e.type){case"resize":this.__onResize();break;case"keydown":this.__onKeyDown(e);break;case"mousedown":this.__onMouseDown(e);break;case"mouseenter":this.__onMouseDown(e);break;case"touchstart":this.__onTouchStart(e);break;case"mouseup":this.__onMouseUp(e);break;case"mouseleave":this.__onMouseUp(e);break;case"touchend":this.__onTouchEnd(e);break;case"mousemove":this.__onMouseMove(e);break;case"touchmove":this.__onTouchMove(e);break;case it.fullscreenEvent:this.__fullscreenToggled();break;case it.mouseWheelEvent:this.__onMouseWheel(e);break}};e.enableKeyboard=function t(){this.state.keyboardEnabled=true};e.disableKeyboard=function t(){this.state.keyboardEnabled=false};e.__onKeyDown=function t(e){if(!this.state.keyboardEnabled){return}var i=0;var o=0;var n=0;var r=a(e);var s=this.config.keyboard[r];switch(s){case K.ROTATE_LAT_UP:o=.01;break;case K.ROTATE_LAT_DOWN:o=-.01;break;case K.ROTATE_LONG_RIGHT:i=.01;break;case K.ROTATE_LONG_LEFT:i=-.01;break;case K.ZOOM_IN:n=1;break;case K.ZOOM_OUT:n=-1;break;case K.TOGGLE_AUTOROTATE:this.psv.toggleAutorotate();break}if(n!==0){this.psv.zoom(this.prop.zoomLvl+n*this.config.zoomSpeed)}else if(o!==0||i!==0){this.psv.rotate({longitude:this.prop.position.longitude+i*this.prop.moveSpeed*this.prop.hFov,latitude:this.prop.position.latitude+o*this.prop.moveSpeed*this.prop.vFov})}};e.__onMouseDown=function t(e){this.__startMove(e)};e.__onMouseUp=function t(e){this.__stopMove(e);if(this.psv.isStereoEnabled()){this.psv.stopStereoView()}};e.__onMouseMove=function t(e){if(e.buttons!==0){e.preventDefault();this.__move(e)}else if(this.config.mousemoveHover){this.__moveAbsolute(e)}};e.__onTouchStart=function t(e){if(e.touches.length===1){if(!this.config.touchmoveTwoFingers){this.__startMove(e.touches[0]);e.preventDefault()}}else if(e.touches.length===2){this.__startMoveZoom(e);e.preventDefault()}};e.__onTouchEnd=function t(e){if(e.touches.length===1){this.__stopMoveZoom()}else if(e.touches.length===0){this.__stopMove(e.changedTouches[0]);if(this.config.touchmoveTwoFingers){this.psv.overlay.hide(J.TWO_FINGERS)}}};e.__onTouchMove=function t(e){if(e.touches.length===1){if(this.config.touchmoveTwoFingers){this.psv.overlay.show({id:J.TWO_FINGERS,image:this.psv.icons.gesture,text:this.config.lang.twoFingers[0]})}else{e.preventDefault();this.__move(e.touches[0])}}else if(e.touches.length===2){e.preventDefault();this.__moveZoom(e)}};e.__onMouseWheel=function t(e){e.preventDefault();e.stopPropagation();var i=O(e).spinY*5;if(i!==0){this.psv.zoom(this.prop.zoomLvl-i*this.config.mousewheelFactor)}};e.__fullscreenToggled=function t(){this.prop.fullscreen=w(this.psv.container);if(this.config.keyboard){if(this.prop.fullscreen){this.psv.startKeyboardControl()}else{this.psv.stopKeyboardControl()}}this.psv.trigger(q.FULLSCREEN_UPDATED,this.prop.fullscreen)};e.__startMove=function t(e){var i=this;this.psv.stopAutorotate();this.psv.stopAnimation().then(function(){i.state.mouseX=e.clientX;i.state.mouseY=e.clientY;i.state.startMouseX=i.state.mouseX;i.state.startMouseY=i.state.mouseY;i.state.moving=true;i.state.zooming=false;i.state.mouseHistory.length=0;i.__logMouseMove(e)})};e.__startMoveZoom=function t(e){var i={x:e.touches[0].clientX,y:e.touches[0].clientY};var o={x:e.touches[1].clientX,y:e.touches[1].clientY};this.state.pinchDist=u(i,o);this.state.mouseX=(i.x+o.x)/2;this.state.mouseY=(i.y+o.y)/2;this.state.startMouseX=this.state.mouseX;this.state.startMouseY=this.state.mouseY;this.state.moving=true;this.state.zooming=true};e.__stopMove=function t(e){if(!r(e.target,".psv-hud")){return}if(this.state.moving){if(Math.abs(e.clientX-this.state.startMouseX)W/10){this.state.mouseHistory.splice(0,n);n=0;o=this.state.mouseHistory[0][n]}else{n++;o=this.state.mouseHistory[0][n]}}};return t}(le);var ue=function(i){It(t,i);function t(t){var e;e=i.call(this,t)||this;e.mainReqid=undefined;e.canvasContainer=null;e.renderer=null;e.stereoEffect=null;e.scene=null;e.camera=null;e.mesh=null;e.raycaster=null;e.doControls=null;t.on(q.SIZE_UPDATED,function(t){if(e.renderer){(e.stereoEffect||e.renderer).setSize(t.width,t.height)}});return e}var e=t.prototype;e.destroy=function t(){if(this.mainReqid){window.cancelAnimationFrame(this.mainReqid)}if(this.scene){x(this.scene)}if(this.doControls){this.doControls.disconnect()}if(this.canvasContainer){this.psv.container.removeChild(this.canvasContainer)}delete this.canvasContainer;delete this.renderer;delete this.stereoEffect;delete this.scene;delete this.camera;delete this.mesh;delete this.raycaster;delete this.doControls;i.prototype.destroy.call(this)};e.hide=function t(){if(this.canvasContainer){this.canvasContainer.style.opacity=0}};e.show=function t(){if(this.canvasContainer){this.canvasContainer.style.opacity=1}};e.__renderLoop=function t(e){var i=this;this.psv.trigger(q.BEFORE_RENDER,e);if(this.prop.needsUpdate){this.render();this.prop.needsUpdate=false}this.mainReqid=window.requestAnimationFrame(function(t){return i.__renderLoop(t)})};e.render=function t(){this.prop.direction=this.psv.dataHelper.sphericalCoordsToVector3(this.prop.position);this.camera.position.set(0,0,0);this.camera.lookAt(this.prop.direction);if(this.config.fisheye){this.camera.position.copy(this.prop.direction).multiplyScalar(this.config.fisheye/2).negate()}this.camera.aspect=this.prop.aspect;this.camera.fov=this.prop.vFov;this.camera.updateProjectionMatrix();(this.stereoEffect||this.renderer).render(this.scene,this.camera);this.psv.trigger(q.RENDER)};e.setTexture=function t(e){var i=e.texture,o=e.panoData;this.prop.panoData=o;if(!this.scene){this.__createScene()}if(this.prop.isCubemap){for(var n=0;n<6;n++){if(this.mesh.material[n].map){this.mesh.material[n].map.dispose()}this.mesh.material[n].map=i[n]}}else{if(this.mesh.material.map){this.mesh.material.map.dispose()}this.mesh.material.map=i}this.psv.trigger(q.PANORAMA_LOADED);if(!this.mainReqid){this.__renderLoop(+new Date)}};e.setSphereCorrection=function t(e,i){if(i===void 0){i=this.mesh}var o=this.psv.dataHelper.cleanSphereCorrection(e);i.rotation.set(o.tilt,o.pan,o.roll)};e.__createScene=function t(){this.raycaster=new f.Raycaster;this.renderer=this.config.webgl?new f.WebGLRenderer:new f.CanvasRenderer;this.renderer.setSize(this.prop.size.width,this.prop.size.height);this.renderer.setPixelRatio(it.pixelRatio);var e=G;if(this.prop.isCubemap){e*=Math.sqrt(3)}if(this.config.fisheye){e+=G}this.camera=new f.PerspectiveCamera(this.config.defaultFov,this.prop.size.width/this.prop.size.height,1,e);this.camera.position.set(0,0,0);if(it.checkTHREE("DeviceOrientationControls")){this.doControls=new f.DeviceOrientationControls(this.camera)}this.scene=new f.Scene;this.scene.add(this.camera);if(this.prop.isCubemap){this.mesh=this.__createCubemap()}else{this.mesh=this.__createSphere()}this.scene.add(this.mesh);this.canvasContainer=document.createElement("div");this.canvasContainer.className="psv-canvas-container";this.renderer.domElement.className="psv-canvas";this.psv.container.appendChild(this.canvasContainer);this.canvasContainer.appendChild(this.renderer.domElement);this.hide()};e.__createSphere=function t(e){if(e===void 0){e=1}var i=new f.SphereGeometry(G*e,Y,Y,-Math.PI/2);var o=new f.MeshBasicMaterial({side:f.DoubleSide,overdraw:this.config.webgl?0:1});var n=new f.Mesh(i,o);n.scale.x=-1;return n};e.__createCubemap=function t(e){if(e===void 0){e=1}var i=G*2*e;var o=new f.BoxGeometry(i,i,i,X,X,X);var n=[];for(var r=0;r<6;r++){n.push(new f.MeshBasicMaterial({side:f.BackSide,overdraw:this.config.webgl?0:1}))}var s=new f.Mesh(o,n);s.position.x-=G*e;s.position.y-=G*e;s.position.z-=G*e;s.applyMatrix((new f.Matrix4).makeScale(1,1,-1));return s};e.transition=function t(e,i){var o=this;var n=e.texture;var r=this.psv.dataHelper.isExtendedPosition(i);var s="zoom"in i;var a;if(this.prop.isCubemap){if(r){N("cannot perform cubemap transition to different position");r=false}a=this.__createCubemap(.9);a.material.forEach(function(t,e){t.map=n[e];t.transparent=true;t.opacity=0})}else{a=this.__createSphere(.9);a.material.map=n;a.material.transparent=true;a.material.opacity=0;if(i.sphereCorrection){this.setSphereCorrection(i.sphereCorrection,a)}}if(r){var l=this.psv.dataHelper.cleanPosition(i);var h=new f.Vector3(0,1,0);a.rotateOnWorldAxis(h,l.longitude-this.prop.position.longitude);var c=new f.Vector3(0,1,0).cross(this.camera.getWorldDirection(new f.Vector3)).normalize();a.rotateOnWorldAxis(c,l.latitude-this.prop.position.latitude);if(this.config.latitudeRange||this.config.longitudeRange){this.config.longitudeRange=null;this.config.latitudeRange=null;N("trying to perform transition with longitudeRange and/or latitudeRange, ranges cleared")}}this.scene.add(a);this.psv.needsUpdate();return new zt({properties:{opacity:{start:0,end:1},zoom:s?{start:this.prop.zoomLvl,end:i.zoom}:undefined},duration:this.config.transitionDuration,easing:"outCubic",onTick:function t(e){if(o.prop.isCubemap){for(var i=0;i<6;i++){a.material[i].opacity=e.opacity}}else{a.material.opacity=e.opacity}if(s){o.psv.zoom(e.zoom)}o.psv.needsUpdate()}}).then(function(){o.setTexture(e);o.scene.remove(a);a.geometry.dispose();a.geometry=null;if(i.sphereCorrection){o.setSphereCorrection(i.sphereCorrection)}else{o.setSphereCorrection({})}if(r){o.psv.rotate(i)}})};e.reverseAutorotate=function t(){var i=this;if(!this.psv.isAutorotateEnabled()){return}var e=-this.config.autorotateSpeed;var o=this.config.longitudeRange;this.config.longitudeRange=null;new zt({properties:{speed:{start:this.config.autorotateSpeed,end:0}},duration:300,easing:"inSine",onTick:function t(e){i.config.autorotateSpeed=e.speed}}).then(function(){return new zt({properties:{speed:{start:0,end:e}},duration:300,easing:"outSine",onTick:function t(e){i.config.autorotateSpeed=e.speed}})}).then(function(){i.config.longitudeRange=o;i.config.autorotateSpeed=e})};e.startGyroscopeControl=function t(){var e=this;this.doControls.alphaOffset=0;this.doControls.update();var i=this.camera.getWorldDirection(new f.Vector3);var o=this.psv.dataHelper.vector3ToSphericalCoords(i);this.prop.gyroAlphaOffset=E(this.prop.position.longitude,o.longitude);this.prop.orientationCb=function(){e.doControls.alphaOffset=e.prop.gyroAlphaOffset;e.doControls.update();e.camera.getWorldDirection(e.prop.direction);e.prop.direction.multiplyScalar(G);var t=e.psv.dataHelper.vector3ToSphericalCoords(e.prop.direction);e.prop.position.longitude=t.longitude;e.prop.position.latitude=t.latitude;e.psv.needsUpdate()};this.psv.on(q.BEFORE_RENDER,this.prop.orientationCb)};e.stopGyroscopeControl=function t(){this.psv.off(q.BEFORE_RENDER,this.prop.orientationCb);this.prop.orientationCb=null};e.startStereoView=function t(){this.stereoEffect=new f.StereoEffect(this.renderer)};e.stopStereoView=function t(){this.stereoEffect=null};return t}(le);var pe=function(i){It(t,i);function t(t){var e;e=i.call(this,t)||this;e.cache=[];return e}var e=t.prototype;e.destroy=function t(){this.cache.length=0;i.prototype.destroy.call(this)};e.loadTexture=function t(i){var o=[];if(Array.isArray(i)){if(i.length!==6){throw new v("Must provide exactly 6 image paths when using cubemap.")}for(var e=0;e<6;e++){o[e]=i[Z[e]]}return this.__loadCubemapTexture(o)}else if(typeof i==="object"){if(!j.every(function(t){return!!i[t]})){throw new v("Must provide exactly left, front, right, back, top, bottom when using cubemap.")}j.forEach(function(t,e){o[e]=i[t]});return this.__loadCubemapTexture(o)}else{return this.__loadEquirectangularTexture(i)}};e.__loadEquirectangularTexture=function t(u){var p=this;if(this.prop.isCubemap===true){throw new v("The viewer was initialized with an cubemap, cannot switch to equirectangular panorama.")}this.prop.isCubemap=false;if(this.config.cacheTexture){var e=this.getPanoramaCache(u);if(e){this.prop.panodata=e.panoData;return Promise.resolve({texture:e.image,panoData:e.panoData})}}return this.__loadXMP(u).then(function(c){return new Promise(function(l,i){var t=new f.ImageLoader;var h=c?100:0;if(p.config.withCredentials){t.setCrossOrigin("use-credentials")}else{t.setCrossOrigin("anonymous")}var e=function t(e){h=100;p.psv.loader.setProgress(h);p.psv.trigger(q.PANORAMA_LOAD_PROGRESS,u,h);var i=c||{fullWidth:e.width,fullHeight:e.height,croppedWidth:e.width,croppedHeight:e.height,croppedX:0,croppedY:0};var o;var n=Math.min(i.fullWidth,it.maxTextureWidth)/i.fullWidth;if(n!==1||i.croppedWidth!==i.fullWidth||i.croppedHeight!==i.fullHeight){var r=L(i);r.fullWidth*=n;r.fullHeight*=n;r.croppedWidth*=n;r.croppedHeight*=n;r.croppedX*=n;r.croppedY*=n;e.width=r.croppedWidth;e.height=r.croppedHeight;var s=document.createElement("canvas");s.width=r.fullWidth;s.height=r.fullHeight;var a=s.getContext("2d");a.drawImage(e,r.croppedX,r.croppedY,r.croppedWidth,r.croppedHeight);o=new f.Texture(s)}else{o=new f.Texture(e)}o.needsUpdate=true;o.minFilter=f.LinearFilter;o.generateMipmaps=false;if(p.config.cacheTexture){p.__putPanoramaCache({panorama:u,image:o,panoData:L(i)})}l({texture:o,panoData:i})};var o=function t(e){if(e.lengthComputable){var i=e.loaded/e.total*100;if(i>h){h=i;p.psv.loader.setProgress(h);p.psv.trigger(q.PANORAMA_LOAD_PROGRESS,u,h)}}};var n=function t(e){p.psv.showError("Cannot load image");i(e)};t.load(u,e,o,n)})})};e.__loadCubemapTexture=function t(p){var d=this;if(this.prop.isCubemap===false){throw new v("The viewer was initialized with an equirectangular panorama, cannot switch to cubemap.")}if(this.config.fisheye){N("fisheye effect with cubemap texture can generate distorsion")}if(this.config.cacheTexture===dt.cacheTexture){this.config.cacheTexture*=6}this.prop.isCubemap=true;return new Promise(function(e,o){var t=new f.ImageLoader;var s=[0,0,0,0,0,0];var a=[];var l=0;if(d.config.withCredentials){t.setCrossOrigin("use-credentials")}else{t.setCrossOrigin("anonymous")}var h=function t(){a.forEach(function(t){t.needsUpdate=true;t.minFilter=f.LinearFilter;t.generateMipmaps=false});e({texture:a})};var i=function t(e,i){l++;s[e]=100;d.psv.loader.setProgress(g(s)/6);d.psv.trigger(q.PANORAMA_LOAD_PROGRESS,p[e],s[e]);var o=Math.min(i.width,it.maxTextureWidth/2)/i.width;if(o!==1){var n=document.createElement("canvas");n.width=i.width*o;n.height=i.height*o;var r=n.getContext("2d");r.drawImage(i,0,0,n.width,n.height);a[e]=new f.Texture(n)}else{a[e]=new f.Texture(i)}if(d.config.cacheTexture){d.__putPanoramaCache({panorama:p[e],image:a[e]})}if(l===6){h()}};var n=function t(e,i){if(i.lengthComputable){var o=i.loaded/i.total*100;if(o>s[e]){s[e]=o;d.psv.loader.setProgress(g(s)/6);d.psv.trigger(q.PANORAMA_LOAD_PROGRESS,p[e],s[e])}}};var r=function t(e,i){d.psv.showError("Cannot load image");o(i)};for(var c=0;c<6;c++){if(d.config.cacheTexture){var u=d.getPanoramaCache(p[c]);if(u){l++;s[c]=100;a[c]=u.image}}if(!a[c]){t.load(p[c],i.bind(d,c),n.bind(d,c),r.bind(d,c))}}if(l===6){e({texture:a})}})};e.__loadXMP=function t(e){var h=this;if(!this.config.useXmpData){return Promise.resolve(null)}return new Promise(function(r,s){var a=0;var l=new XMLHttpRequest;if(h.config.withCredentials){l.withCredentials=true}l.onreadystatechange=function(){if(l.readyState===4){if(l.status===200||l.status===201||l.status===202||l.status===0){h.psv.loader.setProgress(100);var t=l.responseText;var e=t.indexOf("");var o=t.substring(e,i);var n=null;if(e!==-1&&i!==-1&&o.indexOf("GPano:")!==-1){n={fullWidth:parseInt(m(o,"FullPanoWidthPixels"),10),fullHeight:parseInt(m(o,"FullPanoHeightPixels"),10),croppedWidth:parseInt(m(o,"CroppedAreaImageWidthPixels"),10),croppedHeight:parseInt(m(o,"CroppedAreaImageHeightPixels"),10),croppedX:parseInt(m(o,"CroppedAreaLeftPixels"),10),croppedY:parseInt(m(o,"CroppedAreaTopPixels"),10)};if(!n.fullWidth||!n.fullHeight||!n.croppedWidth||!n.croppedHeight){N("invalid XMP data");n=null}}r(n)}else{h.psv.showError("Cannot load image");s()}}else if(l.readyState===3){h.psv.loader.setProgress(a+=10)}};l.onprogress=function(t){if(t.lengthComputable){var e=t.loaded/t.total*100;if(e>a){a=e;h.psv.loader.setProgress(a)}}};l.onerror=function(t){h.psv.showError("Cannot load image");s(t)};l.open("GET",e,true);l.send(null)})};e.preloadPanorama=function t(e){if(!this.config.cacheTexture){throw new v("Cannot preload panorama, cacheTexture is disabled")}return this.loadTexture(e)};e.clearPanoramaCache=function t(e){if(!this.config.cacheTexture){throw new v("Cannot clear cache, cacheTexture is disabled")}if(e){for(var i=0,o=this.cache.length;iwindow.innerWidth){e.overlay.show({id:J.PLEASE_ROTATE,image:e.icons.mobileRotate,text:e.config.lang.pleaseRotate[0],subtext:e.config.lang.pleaseRotate[1]})}if(i){clearTimeout(i);i=null}};if(window.screen&&window.screen.orientation){window.screen.orientation.lock("landscape").then(null,function(){return o()});i=setTimeout(function(){return o()},500)}else{o()}};t.unlockOrientation=function t(){if(window.screen&&window.screen.orientation){window.screen.orientation.unlock()}else{this.overlay.hide(J.PLEASE_ROTATE)}};t.rotate=function t(e,i){if(i===void 0){i=false}var o=this.dataHelper.cleanPosition(e);if(!i){var n=this.dataHelper.applyRanges(o),r=n.rangedPosition,s=n.sidesReached;if(D(["left","right"],s).length>0){this.renderer.reverseAutorotate()}this.prop.position.longitude=r.longitude;this.prop.position.latitude=r.latitude}else{this.prop.position.longitude=o.longitude;this.prop.position.latitude=o.latitude}this.needsUpdate();this.trigger(q.POSITION_UPDATED,this.getPosition())};t.animate=function t(e,i){var o=this;this.__stopAll();var n=this.dataHelper.isExtendedPosition(e);var r="zoom"in e;var s={};var a;if(n){var l=this.dataHelper.cleanPosition(e);var h=this.dataHelper.applyRanges(l),c=h.rangedPosition;var u=this.prop.position;var p=Math.abs(c.longitude-u.longitude);var d=Math.abs(c.latitude-u.latitude);if(p>=U||d>=U){var f=E(u.longitude,c.longitude);s.longitude={start:u.longitude,end:u.longitude+f};s.latitude={start:u.latitude,end:c.latitude};a=this.dataHelper.speedToDuration(i,b(u,c))}}if(r){var v=Math.abs(e.zoom-this.prop.zoomLvl);if(v>=1){s.zoom={start:this.prop.zoomLvl,end:e.zoom};if(!a){a=this.dataHelper.speedToDuration(i,Math.PI/4*v/100)}}}if(!a){if(n){this.rotate(e)}if(r){this.zoom(e.zoom)}return zt.resolve()}this.prop.animationPromise=new zt({properties:s,duration:a,easing:"inOutSine",onTick:function t(e){if(n){o.rotate(e,true)}if(r){o.zoom(e.zoom)}}});return this.prop.animationPromise};t.stopAnimation=function t(){var e=this;if(this.prop.animationPromise){return new Promise(function(t){e.prop.animationPromise.finally(t);e.prop.animationPromise.cancel();e.prop.animationPromise=null})}else{return Promise.resolve()}};t.zoom=function t(e){this.prop.zoomLvl=l(e,0,100);this.prop.vFov=this.dataHelper.zoomLevelToFov(this.prop.zoomLvl);this.prop.hFov=this.dataHelper.vFovToHFov(this.prop.vFov);this.needsUpdate();this.trigger(q.ZOOM_UPDATED,this.getZoomLevel())};t.zoomIn=function t(){if(this.prop.zoomLvl<100){this.zoom(this.prop.zoomLvl+this.config.zoomSpeed)}};t.zoomOut=function t(){if(this.prop.zoomLvl>0){this.zoom(this.prop.zoomLvl-this.config.zoomSpeed)}};t.resize=function t(e){var i=this;["width","height"].forEach(function(t){if(e&&e[t]){if(/^[0-9.]+$/.test(e[t])){e[t]+="px"}i.parent.style[t]=e[t]}});this.autoSize()};t.enterFullscreen=function t(){if(it.fullscreenEvent){e(this.container)}else{this.container.classList.add("psv-container--fullscreen");this.prop.fullscreen=true;this.autoSize()}};t.exitFullscreen=function t(){if(it.fullscreenEvent){y()}else{this.container.classList.remove("psv-container--fullscreen");this.prop.fullscreen=false;this.autoSize()}};t.toggleFullscreen=function t(){if(!this.isFullscreenEnabled()){this.enterFullscreen()}else{this.exitFullscreen()}};t.startKeyboardControl=function t(){this.eventsHandler.enableKeyboard()};t.stopKeyboardControl=function t(){this.eventsHandler.disableKeyboard()};t.__stopAll=function t(){this.stopAutorotate();this.stopAnimation();this.stopGyroscopeControl();this.stopStereoView()};t.toggleMarkersList=function t(){if(this.panel.prop.id===J.MARKERS_LIST){this.hideMarkersList()}else{this.showMarkersList()}};t.showMarkersList=function t(){var n=this;var e=[];z(this.hud.markers,function(t){if(t.visible&&!t.config.hideList){e.push(t)}});e=this.change(q.RENDER_MARKERS_LIST,e);this.panel.show({id:J.MARKERS_LIST,content:this.templates.markersList(e,this),noMargin:true});var i=this.panel.container.querySelector(".psv-markers-list");i.addEventListener("click",function(t){var e=t.target?r(t.target,"li"):undefined;var i=e?e.dataset[$]:undefined;if(i){var o=n.hud.getMarker(i);n.trigger(q.SELECT_MARKER_LIST,o);n.hud.gotoMarker(o,1e3);n.hideMarkersList()}})};t.hideMarkersList=function t(){this.panel.hide(J.MARKERS_LIST)};return i}();de.Utils=I;de.CONSTANTS=et;de.DEFAULTS=dt;de.TEMPLATES=gt;de.ICONS=Pt;de.SYSTEM=it;de.PSVError=v;de.PSVAnimation=zt;t.mixin(de);return de});