{"version":3,"file":"photo-sphere-viewer.js","sources":["../src/PSVError.js","../src/adapters/AbstractAdapter.js","../src/data/constants.js","../src/data/system.js","../src/utils/browser.js","../src/utils/math.js","../src/utils/misc.js","../src/utils/psv.js","../src/utils/Animation.js","../src/utils/Dynamic.js","../src/utils/MultiDynamic.js","../src/utils/Slider.js","../src/utils/index.js","../src/adapters/equirectangular/index.js","../src/components/AbstractComponent.js","../src/buttons/AbstractButton.js","../src/buttons/AutorotateButton.js","../src/buttons/CustomButton.js","../src/buttons/DescriptionButton.js","../src/buttons/DownloadButton.js","../src/buttons/FullscreenButton.js","../src/buttons/MenuButton.js","../src/utils/PressHandler.js","../src/buttons/AbstractMoveButton.js","../src/buttons/MoveDownButton.js","../src/buttons/MoveLeftButton.js","../src/buttons/MoveRightButton.js","../src/buttons/MoveUpButton.js","../src/buttons/AbstractZoomButton.js","../src/buttons/ZoomInButton.js","../src/buttons/ZoomOutButton.js","../src/buttons/ZoomRangeButton.js","../src/plugins/AbstractPlugin.js","../src/data/config.js","../src/components/NavbarCaption.js","../src/components/Navbar.js","../src/components/Loader.js","../src/components/Notification.js","../src/components/Overlay.js","../src/components/Panel.js","../src/services/AbstractService.js","../src/services/DataHelper.js","../src/services/EventsHandler.js","../src/services/Renderer.js","../src/services/TextureLoader.js","../src/components/Tooltip.js","../src/services/TooltipRenderer.js","../src/Viewer.js"],"sourcesContent":["/**\n * @summary Custom error used in the lib\n * @param {string} message\n * @constructor\n * @memberOf PSV\n */\nfunction PSVError(message) {\n this.message = message;\n\n // Use V8's native method if available, otherwise fallback\n if ('captureStackTrace' in Error) {\n Error.captureStackTrace(this, PSVError);\n }\n else {\n this.stack = (new Error()).stack;\n }\n}\n\nPSVError.prototype = Object.create(Error.prototype);\nPSVError.prototype.name = 'PSVError';\nPSVError.prototype.constructor = PSVError;\n\nexport { PSVError };\n","import { ShaderMaterial, Texture } from 'three';\nimport { PSVError } from '../PSVError';\n\n/**\n * @namespace PSV.adapters\n */\n\n\n/**\n * @summary Base adapters class\n * @memberof PSV.adapters\n * @abstract\n */\nexport class AbstractAdapter {\n\n /**\n * @summary Unique identifier of the adapter\n * @member {string}\n * @readonly\n * @static\n */\n static id = null;\n\n /**\n * @summary Indicates if the adapter supports panorama download natively\n * @type {boolean}\n * @readonly\n * @static\n */\n static supportsDownload = false;\n\n /**\n * @summary Indicated if the adapter can display an additional transparent image above the panorama\n * @type {boolean}\n */\n static supportsOverlay = false;\n\n /**\n * @param {PSV.Viewer} psv\n */\n constructor(psv) {\n /**\n * @summary Reference to main controller\n * @type {PSV.Viewer}\n * @readonly\n */\n this.psv = psv;\n }\n\n /**\n * @summary Destroys the adapter\n */\n destroy() {\n delete this.psv;\n }\n\n /**\n * @summary Indicates if the adapter supports transitions between panoramas\n * @param {*} panorama\n * @return {boolean}\n */\n supportsTransition(panorama) { // eslint-disable-line no-unused-vars\n return false;\n }\n\n /**\n * @summary Indicates if the adapter supports preload of a panorama\n * @param {*} panorama\n * @return {boolean}\n */\n supportsPreload(panorama) { // eslint-disable-line no-unused-vars\n return false;\n }\n\n /**\n * @abstract\n * @summary Loads the panorama texture(s)\n * @param {*} panorama\n * @param {PSV.PanoData | PSV.PanoDataProvider} [newPanoData]\n * @param {boolean} [useXmpPanoData]\n * @returns {Promise.}\n */\n loadTexture(panorama, newPanoData, useXmpPanoData) { // eslint-disable-line no-unused-vars\n throw new PSVError('loadTexture not implemented');\n }\n\n /**\n * @abstract\n * @summary Creates the cube mesh\n * @param {number} [scale=1]\n * @returns {external:THREE.Mesh}\n */\n createMesh(scale = 1) { // eslint-disable-line no-unused-vars\n throw new PSVError('createMesh not implemented');\n }\n\n /**\n * @abstract\n * @summary Applies the texture to the mesh\n * @param {external:THREE.Mesh} mesh\n * @param {PSV.TextureData} textureData\n * @param {boolean} [transition=false]\n */\n setTexture(mesh, textureData, transition = false) { // eslint-disable-line no-unused-vars\n throw new PSVError('setTexture not implemented');\n }\n\n /**\n * @abstract\n * @summary Changes the opacity of the mesh\n * @param {external:THREE.Mesh} mesh\n * @param {number} opacity\n */\n setTextureOpacity(mesh, opacity) { // eslint-disable-line no-unused-vars\n throw new PSVError('setTextureOpacity not implemented');\n }\n\n /**\n * @abstract\n * @summary Clear a loaded texture from memory\n * @param {PSV.TextureData} textureData\n */\n disposeTexture(textureData) { // eslint-disable-line no-unused-vars\n throw new PSVError('disposeTexture not implemented');\n }\n\n /**\n * @abstract\n * @summary Applies the overlay to the mesh\n * @param {external:THREE.Mesh} mesh\n * @param {PSV.TextureData} textureData\n * @param {number} opacity\n */\n setOverlay(mesh, textureData, opacity) { // eslint-disable-line no-unused-vars\n throw new PSVError('setOverlay not implemented');\n }\n\n /**\n * @internal\n */\n static OVERLAY_UNIFORMS = {\n panorama : 'panorama',\n overlay : 'overlay',\n globalOpacity : 'globalOpacity',\n overlayOpacity: 'overlayOpacity',\n };\n\n /**\n * @internal\n */\n static createOverlayMaterial({ additionalUniforms, overrideVertexShader } = {}) {\n return new ShaderMaterial({\n uniforms: {\n ...additionalUniforms,\n [AbstractAdapter.OVERLAY_UNIFORMS.panorama] : { value: new Texture() },\n [AbstractAdapter.OVERLAY_UNIFORMS.overlay] : { value: new Texture() },\n [AbstractAdapter.OVERLAY_UNIFORMS.globalOpacity] : { value: 1.0 },\n [AbstractAdapter.OVERLAY_UNIFORMS.overlayOpacity]: { value: 1.0 },\n },\n\n vertexShader: overrideVertexShader || `\nvarying vec2 vUv;\n\nvoid main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}`,\n\n fragmentShader: `\nuniform sampler2D ${AbstractAdapter.OVERLAY_UNIFORMS.panorama};\nuniform sampler2D ${AbstractAdapter.OVERLAY_UNIFORMS.overlay};\nuniform float ${AbstractAdapter.OVERLAY_UNIFORMS.globalOpacity};\nuniform float ${AbstractAdapter.OVERLAY_UNIFORMS.overlayOpacity};\n\nvarying vec2 vUv;\n\nvoid main() {\n vec4 tColor1 = texture2D( ${AbstractAdapter.OVERLAY_UNIFORMS.panorama}, vUv );\n vec4 tColor2 = texture2D( ${AbstractAdapter.OVERLAY_UNIFORMS.overlay}, vUv );\n gl_FragColor = vec4(\n mix( tColor1.rgb, tColor2.rgb, tColor2.a * ${AbstractAdapter.OVERLAY_UNIFORMS.overlayOpacity} ),\n ${AbstractAdapter.OVERLAY_UNIFORMS.globalOpacity}\n );\n}`,\n });\n }\n\n}\n","/**\n * @namespace PSV.constants\n */\n\n/**\n * @summary Default duration of the transition between panoramas\n * @memberOf PSV.constants\n * @type {number}\n * @constant\n */\nexport const DEFAULT_TRANSITION = 1500;\n\n/**\n * @summary Minimum duration of the animations created with {@link Viewer#animate}\n * @memberOf PSV.constants\n * @type {number}\n * @constant\n */\nexport const ANIMATION_MIN_DURATION = 500;\n\n/**\n * @summary Number of pixels bellow which a mouse move will be considered as a click\n * @memberOf PSV.constants\n * @type {number}\n * @constant\n */\nexport const MOVE_THRESHOLD = 4;\n\n/**\n * @summary Delay in milliseconds between two clicks to consider a double click\n * @memberOf PSV.constants\n * @type {number}\n * @constant\n */\nexport const DBLCLICK_DELAY = 300;\n\n/**\n * @summary Delay in milliseconds to emulate a long touch\n * @memberOf PSV.constants\n * @type {number}\n * @constant\n */\nexport const LONGTOUCH_DELAY = 500;\n\n/**\n * @summary Delay in milliseconds to for the two fingers overlay to appear\n * @memberOf PSV.constants\n * @type {number}\n * @constant\n */\nexport const TWOFINGERSOVERLAY_DELAY = 100;\n\n/**\n * @summary Duration in milliseconds of the \"ctrl zoom\" overlay\n * @memberOf PSV.constants\n * @type {number}\n * @constant\n */\nexport const CTRLZOOM_TIMEOUT = 2000;\n\n/**\n * @summary Time size of the mouse position history used to compute inertia\n * @memberOf PSV.constants\n * @type {number}\n * @constant\n */\nexport const INERTIA_WINDOW = 300;\n\n/**\n * @summary Radius of the THREE.SphereGeometry, Half-length of the THREE.BoxGeometry\n * @memberOf PSV.constants\n * @type {number}\n * @constant\n */\nexport const SPHERE_RADIUS = 10;\n\n/**\n * @summary Property name added to viewer element\n * @memberOf PSV.constants\n * @type {string}\n * @constant\n */\nexport const VIEWER_DATA = 'photoSphereViewer';\n\n/**\n * @summary Property added the the main Mesh object\n * @memberOf PSV.constants\n * @type {string}\n * @constant\n */\nexport const MESH_USER_DATA = 'psvSphere';\n\n/**\n * @summary Available actions\n * @memberOf PSV.constants\n * @enum {string}\n * @constant\n */\nexport const ACTIONS = {\n ROTATE_LAT_UP : 'rotateLatitudeUp',\n ROTATE_LAT_DOWN : 'rotateLatitudeDown',\n ROTATE_LONG_RIGHT: 'rotateLongitudeRight',\n ROTATE_LONG_LEFT : 'rotateLongitudeLeft',\n ZOOM_IN : 'zoomIn',\n ZOOM_OUT : 'zoomOut',\n TOGGLE_AUTOROTATE: 'toggleAutorotate',\n};\n\n/**\n * @summary Available events names\n * @memberOf PSV.constants\n * @enum {string}\n * @constant\n */\nexport const EVENTS = {\n /**\n * @event autorotate\n * @memberof PSV\n * @summary Triggered when the automatic rotation is enabled/disabled\n * @param {boolean} enabled\n */\n AUTOROTATE : 'autorotate',\n /**\n * @event before-render\n * @memberof PSV\n * @summary Triggered before a render, used to modify the view\n * @param {number} timestamp - time provided by requestAnimationFrame\n * @param {number} elapsed - time elapsed from the previous frame\n */\n BEFORE_RENDER : 'before-render',\n /**\n * @event before-rotate\n * @memberOf PSV\n * @summary Triggered before a rotate operation, can be cancelled\n * @param {PSV.ExtendedPosition}\n */\n BEFORE_ROTATE : 'before-rotate',\n /**\n * @event click\n * @memberof PSV\n * @summary Triggered when the user clicks on the viewer (everywhere excluding the navbar and the side panel)\n * @param {PSV.ClickData} data\n */\n CLICK : 'click',\n /**\n * @event close-panel\n * @memberof PSV\n * @summary Triggered when the panel is closed\n * @param {string} [id]\n */\n CLOSE_PANEL : 'close-panel',\n /**\n * @event config-changed\n * @memberOf PSV\n * @summary Triggered after a call to setOption/setOptions\n * @param {string[]} name of changed options\n */\n CONFIG_CHANGED : 'config-changed',\n /**\n * @event dblclick\n * @memberof PSV\n * @summary Triggered when the user double clicks on the viewer. The simple `click` event is always fired before `dblclick`\n * @param {PSV.ClickData} data\n */\n DOUBLE_CLICK : 'dblclick',\n /**\n * @event fullscreen-updated\n * @memberof PSV\n * @summary Triggered when the fullscreen mode is enabled/disabled\n * @param {boolean} enabled\n */\n FULLSCREEN_UPDATED: 'fullscreen-updated',\n /**\n * @event hide-notification\n * @memberof PSV\n * @summary Triggered when the notification is hidden\n * @param {string} [id]\n */\n HIDE_NOTIFICATION : 'hide-notification',\n /**\n * @event hide-overlay\n * @memberof PSV\n * @summary Triggered when the overlay is hidden\n * @param {string} [id]\n */\n HIDE_OVERLAY : 'hide-overlay',\n /**\n * @event hide-tooltip\n * @memberof PSV\n * @summary Triggered when the tooltip is hidden\n * @param {*} Data associated to this tooltip\n */\n HIDE_TOOLTIP : 'hide-tooltip',\n /**\n * @event key-press\n * @memberof PSV\n * @summary Triggered when a key is pressed, can be cancelled\n * @param {string} key\n */\n KEY_PRESS : 'key-press',\n /**\n * @event load-progress\n * @memberof PSV\n * @summary Triggered when the loader value changes\n * @param {number} value from 0 to 100\n */\n LOAD_PROGRESS : 'load-progress',\n /**\n * @event open-panel\n * @memberof PSV\n * @summary Triggered when the panel is opened\n * @param {string} [id]\n */\n OPEN_PANEL : 'open-panel',\n /**\n * @event panorama-loaded\n * @memberof PSV\n * @summary Triggered when a panorama image has been loaded\n * @param {PSV.TextureData} textureData\n */\n PANORAMA_LOADED : 'panorama-loaded',\n /**\n * @event position-updated\n * @memberof PSV\n * @summary Triggered when the view longitude and/or latitude changes\n * @param {PSV.Position} position\n */\n POSITION_UPDATED : 'position-updated',\n /**\n * @event ready\n * @memberof PSV\n * @summary Triggered when the panorama image has been loaded and the viewer is ready to perform the first render\n */\n READY : 'ready',\n /**\n * @event render\n * @memberof PSV\n * @summary Triggered on each viewer render, **this event is triggered very often**\n */\n RENDER : 'render',\n /**\n * @event show-notification\n * @memberof PSV\n * @summary Triggered when the notification is shown\n * @param {string} [id]\n */\n SHOW_NOTIFICATION : 'show-notification',\n /**\n * @event show-overlay\n * @memberof PSV\n * @summary Triggered when the overlay is shown\n * @param {string} [id]\n */\n SHOW_OVERLAY : 'show-overlay',\n /**\n * @event show-tooltip\n * @memberof PSV\n * @summary Triggered when the tooltip is shown\n * @param {*} Data associated to this tooltip\n * @param {PSV.components.Tooltip} Instance of the tooltip\n */\n SHOW_TOOLTIP : 'show-tooltip',\n /**\n * @event size-updated\n * @memberof PSV\n * @summary Triggered when the viewer size changes\n * @param {PSV.Size} size\n */\n SIZE_UPDATED : 'size-updated',\n /**\n * @event stop-all\n * @memberof PSV\n * @summary Triggered when all current animations are stopped\n */\n STOP_ALL : 'stop-all',\n /**\n * @event zoom-updated\n * @memberof PSV\n * @summary Triggered when the zoom level changes\n * @param {number} zoomLevel\n */\n ZOOM_UPDATED : 'zoom-updated',\n};\n\n/**\n * @summary Available change events names\n * @memberOf PSV.constants\n * @enum {string}\n * @constant\n */\nexport const CHANGE_EVENTS = {\n /**\n * @event get-animate-position\n * @memberof PSV\n * @param {Position} position\n * @returns {Position}\n * @summary Called to alter the target position of an animation\n */\n GET_ANIMATE_POSITION: 'get-animate-position',\n /**\n * @event get-rotate-position\n * @memberof PSV\n * @param {Position} position\n * @returns {Position}\n * @summary Called to alter the target position of a rotation\n */\n GET_ROTATE_POSITION : 'get-rotate-position',\n};\n\n/**\n * @summary Special events emitted to listener using {@link Viewer#observeObjects}\n * @memberOf PSV.constants\n * @constant\n * @package\n */\nexport const OBJECT_EVENTS = {\n ENTER_OBJECT: 'enter-object',\n HOVER_OBJECT: 'hover-object',\n LEAVE_OBJECT: 'leave-object',\n};\n\n/**\n * @summary Internal identifiers for various stuff\n * @memberOf PSV.constants\n * @enum {string}\n * @constant\n */\nexport const IDS = {\n MENU : 'menu',\n TWO_FINGERS: 'twoFingers',\n CTRL_ZOOM : 'ctrlZoom',\n ERROR : 'error',\n DESCRIPTION: 'description',\n};\n\n/* eslint-disable */\n// @formatter:off\n/**\n * @summary Collection of easing functions\n * @memberOf PSV.constants\n * @see {@link https://gist.github.com/frederickk/6165768}\n * @type {Object}\n * @constant\n */\nexport const EASINGS = {\n linear : (t) => t,\n\n inQuad : (t) => t*t,\n outQuad : (t) => t*(2-t),\n inOutQuad : (t) => t<.5 ? 2*t*t : -1+(4-2*t)*t,\n\n inCubic : (t) => t*t*t,\n outCubic : (t) => (--t)*t*t+1,\n inOutCubic: (t) => t<.5 ? 4*t*t*t : (t-1)*(2*t-2)*(2*t-2)+1,\n\n inQuart : (t) => t*t*t*t,\n outQuart : (t) => 1-(--t)*t*t*t,\n inOutQuart: (t) => t<.5 ? 8*t*t*t*t : 1-8*(--t)*t*t*t,\n\n inQuint : (t) => t*t*t*t*t,\n outQuint : (t) => 1+(--t)*t*t*t*t,\n inOutQuint: (t) => t<.5 ? 16*t*t*t*t*t : 1+16*(--t)*t*t*t*t,\n\n inSine : (t) => 1-Math.cos(t*(Math.PI/2)),\n outSine : (t) => Math.sin(t*(Math.PI/2)),\n inOutSine : (t) => .5-.5*Math.cos(Math.PI*t),\n\n inExpo : (t) => Math.pow(2, 10*(t-1)),\n outExpo : (t) => 1-Math.pow(2, -10*t),\n inOutExpo : (t) => (t=t*2-1)<0 ? .5*Math.pow(2, 10*t) : 1-.5*Math.pow(2, -10*t),\n\n inCirc : (t) => 1-Math.sqrt(1-t*t),\n outCirc : (t) => Math.sqrt(1-(t-1)*(t-1)),\n inOutCirc : (t) => (t*=2)<1 ? .5-.5*Math.sqrt(1-t*t) : .5+.5*Math.sqrt(1-(t-=2)*t)\n};\n// @formatter:on\n/* eslint-enable */\n\n/**\n * @summary Subset of key codes\n * @memberOf PSV.constants\n * @type {Object}\n * @constant\n */\nexport const KEY_CODES = {\n Enter : 'Enter',\n Control : 'Control',\n Escape : 'Escape',\n Space : ' ',\n PageUp : 'PageUp',\n PageDown : 'PageDown',\n ArrowLeft : 'ArrowLeft',\n ArrowUp : 'ArrowUp',\n ArrowRight: 'ArrowRight',\n ArrowDown : 'ArrowDown',\n Delete : 'Delete',\n Plus : '+',\n Minus : '-',\n};\n","import { PSVError } from '../PSVError';\nimport { VIEWER_DATA } from './constants';\n\nconst LOCALSTORAGE_TOUCH_SUPPORT = `${VIEWER_DATA}_touchSupport`;\n\n/**\n * @summary General information about the system\n * @constant\n * @memberOf PSV\n * @property {boolean} loaded - Indicates if the system data has been loaded\n * @property {Function} load - Loads the system if not already loaded\n * @property {number} pixelRatio\n * @property {boolean} isWebGLSupported\n * @property {number} maxCanvasWidth\n * @property {string} mouseWheelEvent\n * @property {string} fullscreenEvent\n * @property {Function} getMaxCanvasWidth - Returns the max width of a canvas allowed by the browser\n * @property {{initial: boolean, promise: Promise}} isTouchEnabled\n */\nexport const SYSTEM = {\n loaded : false,\n pixelRatio : 1,\n isWebGLSupported: false,\n isTouchEnabled : null,\n maxTextureWidth : 0,\n mouseWheelEvent : null,\n fullscreenEvent : null,\n};\n\n/**\n * @summary Loads the system if not already loaded\n */\nSYSTEM.load = () => {\n if (!SYSTEM.loaded) {\n const ctx = getWebGLCtx();\n\n SYSTEM.loaded = true;\n SYSTEM.pixelRatio = window.devicePixelRatio || 1;\n SYSTEM.isWebGLSupported = ctx != null;\n SYSTEM.isTouchEnabled = isTouchEnabled();\n SYSTEM.maxTextureWidth = getMaxTextureWidth(ctx);\n SYSTEM.mouseWheelEvent = getMouseWheelEvent();\n SYSTEM.fullscreenEvent = getFullscreenEvent();\n }\n};\n\nlet maxCanvasWidth = null;\nSYSTEM.getMaxCanvasWidth = () => {\n if (maxCanvasWidth === null) {\n maxCanvasWidth = getMaxCanvasWidth(SYSTEM.maxTextureWidth);\n }\n return maxCanvasWidth;\n};\n\n/**\n * @summary Tries to return a canvas webgl context\n * @returns {WebGLRenderingContext}\n * @private\n */\nfunction getWebGLCtx() {\n const canvas = document.createElement('canvas');\n const names = ['webgl', 'experimental-webgl', 'moz-webgl', 'webkit-3d'];\n let context = null;\n\n if (!canvas.getContext) {\n return null;\n }\n\n if (names.some((name) => {\n try {\n context = canvas.getContext(name);\n return context !== null;\n }\n catch (e) {\n return false;\n }\n })) {\n return context;\n }\n else {\n return null;\n }\n}\n\n/**\n * @summary Detects if the user is using a touch screen\n * @returns {{initial: boolean, promise: Promise}}\n * @private\n */\nfunction isTouchEnabled() {\n let initial = ('ontouchstart' in window) || (navigator.maxTouchPoints > 0);\n if (LOCALSTORAGE_TOUCH_SUPPORT in localStorage) {\n initial = localStorage[LOCALSTORAGE_TOUCH_SUPPORT] === 'true';\n }\n\n const promise = new Promise((resolve) => {\n let clear;\n\n const listenerMouse = () => {\n clear();\n localStorage[LOCALSTORAGE_TOUCH_SUPPORT] = false;\n resolve(false);\n };\n\n const listenerTouch = () => {\n clear();\n localStorage[LOCALSTORAGE_TOUCH_SUPPORT] = true;\n resolve(true);\n };\n\n const listenerTimeout = () => {\n clear();\n localStorage[LOCALSTORAGE_TOUCH_SUPPORT] = initial;\n resolve(initial);\n };\n\n window.addEventListener('mousedown', listenerMouse, false);\n window.addEventListener('touchstart', listenerTouch, false);\n const listenerTimeoutId = setTimeout(listenerTimeout, 10000);\n\n clear = () => {\n window.removeEventListener('mousedown', listenerMouse);\n window.removeEventListener('touchstart', listenerTouch);\n clearTimeout(listenerTimeoutId);\n };\n });\n\n return { initial, promise };\n}\n\n/**\n * @summary Gets max texture width in WebGL context\n * @returns {number}\n * @private\n */\nfunction getMaxTextureWidth(ctx) {\n if (ctx !== null) {\n return ctx.getParameter(ctx.MAX_TEXTURE_SIZE);\n }\n else {\n return 0;\n }\n}\n\n/**\n * @summary Gets max canvas width supported by the browser.\n * We only test powers of 2 and height = width / 2 because that's what we need to generate WebGL textures\n * @param maxWidth\n * @return {number}\n * @private\n */\nfunction getMaxCanvasWidth(maxWidth) {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n canvas.width = maxWidth;\n canvas.height = maxWidth / 2;\n\n while (canvas.width > 1024) {\n ctx.fillStyle = 'white';\n ctx.fillRect(0, 0, 1, 1);\n\n try {\n if (ctx.getImageData(0, 0, 1, 1).data[0] > 0) {\n return canvas.width;\n }\n }\n catch (e) {\n // continue\n }\n\n canvas.width /= 2;\n canvas.height /= 2;\n }\n\n throw new PSVError('Unable to detect system capabilities');\n}\n\n/**\n * @summary Gets the event name for mouse wheel\n * @returns {string}\n * @private\n */\nfunction getMouseWheelEvent() {\n if ('onwheel' in document.createElement('div')) { // Modern browsers support \"wheel\"\n return 'wheel';\n }\n else if (document.onmousewheel !== undefined) { // Webkit and IE support at least \"mousewheel\"\n return 'mousewheel';\n }\n else { // let's assume that remaining browsers are older Firefox\n return 'DOMMouseScroll';\n }\n}\n\n/**\n * @summary Map between fullsceen method and fullscreen event name\n * @type {Object}\n * @readonly\n * @private\n */\nconst FULLSCREEN_EVT_MAP = {\n exitFullscreen : 'fullscreenchange',\n webkitExitFullscreen: 'webkitfullscreenchange',\n mozCancelFullScreen : 'mozfullscreenchange',\n msExitFullscreen : 'MSFullscreenChange',\n};\n\n\n/**\n * @summary Gets the event name for fullscreen\n * @returns {string}\n * @private\n */\nfunction getFullscreenEvent() {\n const validExits = Object.keys(FULLSCREEN_EVT_MAP).filter(exit => exit in document);\n\n if (validExits.length) {\n return FULLSCREEN_EVT_MAP[validExits[0]];\n }\n else {\n return null;\n }\n}\n","/**\n * @summary Toggles a CSS class\n * @memberOf PSV.utils\n * @param {HTMLElement|SVGElement} element\n * @param {string} className\n * @param {boolean} [active] - forced state\n */\nexport function toggleClass(element, className, active) {\n if (active === undefined) {\n element.classList.toggle(className);\n }\n else if (active) {\n element.classList.add(className);\n }\n else if (!active) {\n element.classList.remove(className);\n }\n}\n\n/**\n * @summary Adds one or several CSS classes to an element\n * @memberOf PSV.utils\n * @param {HTMLElement} element\n * @param {string} className\n */\nexport function addClasses(element, className) {\n element.classList.add(...className.split(' '));\n}\n\n/**\n * @summary Removes one or several CSS classes to an element\n * @memberOf PSV.utils\n * @param {HTMLElement} element\n * @param {string} className\n */\nexport function removeClasses(element, className) {\n element.classList.remove(...className.split(' '));\n}\n\n/**\n * @summary Searches if an element has a particular parent at any level including itself\n * @memberOf PSV.utils\n * @param {HTMLElement} el\n * @param {HTMLElement} parent\n * @returns {boolean}\n */\nexport function hasParent(el, parent) {\n let test = el;\n\n do {\n if (test === parent) {\n return true;\n }\n test = test.parentNode;\n } while (test);\n\n return false;\n}\n\n/**\n * @summary Gets the closest parent (can by itself)\n * @memberOf PSV.utils\n * @param {HTMLElement|SVGElement} el\n * @param {string} selector\n * @returns {HTMLElement}\n */\nexport function getClosest(el, selector) {\n // When el is document or window, the matches does not exist\n if (!el?.matches) {\n return null;\n }\n\n let test = el;\n\n do {\n if (test.matches(selector)) {\n return test;\n }\n test = test instanceof SVGElement ? test.parentNode : test.parentElement;\n } while (test);\n\n return null;\n}\n\n/**\n * @summary Gets the position of an element in the viewer without reflow\n * @description Will gives the same result as getBoundingClientRect() as soon as there are no CSS transforms\n * @memberOf PSV.utils\n * @param {HTMLElement} el\n * @return {{left: number, top: number}}\n */\nexport function getPosition(el) {\n let left = 0;\n let top = 0;\n let test = el;\n\n while (test) {\n left += (test.offsetLeft - test.scrollLeft + test.clientLeft);\n top += (test.offsetTop - test.scrollTop + test.clientTop);\n test = test.offsetParent;\n }\n\n return { left, top };\n}\n\n/**\n * @summary Detects if fullscreen is enabled\n * @memberOf PSV.utils\n * @param {HTMLElement} elt\n * @returns {boolean}\n */\nexport function isFullscreenEnabled(elt) {\n return (document.fullscreenElement || document.webkitFullscreenElement) === elt;\n}\n\n/**\n * @summary Enters fullscreen mode\n * @memberOf PSV.utils\n * @param {HTMLElement} elt\n */\nexport function requestFullscreen(elt) {\n (elt.requestFullscreen || elt.webkitRequestFullscreen).call(elt);\n}\n\n/**\n * @summary Exits fullscreen mode\n * @memberOf PSV.utils\n */\nexport function exitFullscreen() {\n (document.exitFullscreen || document.webkitExitFullscreen).call(document);\n}\n\n/**\n * @summary Gets an element style\n * @memberOf PSV.utils\n * @param {HTMLElement} elt\n * @param {string} prop\n * @returns {*}\n */\nexport function getStyle(elt, prop) {\n return window.getComputedStyle(elt, null)[prop];\n}\n\n/**\n * @summary Normalize mousewheel values accross browsers\n * @memberOf PSV.utils\n * @description From Facebook's Fixed Data Table\n * {@link https://github.com/facebookarchive/fixed-data-table/blob/master/src/vendor_upstream/dom/normalizeWheel.js}\n * @copyright Facebook\n * @param {WheelEvent} event\n * @returns {{spinX: number, spinY: number, pixelX: number, pixelY: number}}\n */\nexport function normalizeWheel(event) {\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let spinX = 0;\n let spinY = 0;\n let pixelX = 0;\n let pixelY = 0;\n\n // Legacy\n if ('detail' in event) {\n spinY = event.detail;\n }\n if ('wheelDelta' in event) {\n spinY = -event.wheelDelta / 120;\n }\n if ('wheelDeltaY' in event) {\n spinY = -event.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in event) {\n spinX = -event.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in event && event.axis === event.HORIZONTAL_AXIS) {\n spinX = spinY;\n spinY = 0;\n }\n\n pixelX = spinX * PIXEL_STEP;\n pixelY = spinY * PIXEL_STEP;\n\n if ('deltaY' in event) {\n pixelY = event.deltaY;\n }\n if ('deltaX' in event) {\n pixelX = event.deltaX;\n }\n\n if ((pixelX || pixelY) && event.deltaMode) {\n // delta in LINE units\n if (event.deltaMode === 1) {\n pixelX *= LINE_HEIGHT;\n pixelY *= LINE_HEIGHT;\n }\n // delta in PAGE units\n else {\n pixelX *= PAGE_HEIGHT;\n pixelY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pixelX && !spinX) {\n spinX = (pixelX < 1) ? -1 : 1;\n }\n if (pixelY && !spinY) {\n spinY = (pixelY < 1) ? -1 : 1;\n }\n\n return { spinX, spinY, pixelX, pixelY };\n}\n","import { MathUtils } from 'three';\n\n/**\n * @deprecated use THREE.MathUtils.clamp\n */\nexport function bound(x, min, max) {\n return MathUtils.clamp(x, min, max);\n}\n\n/**\n * @summary Ensure a value is within 0 and `max`\n * @param {number} value\n * @param {number} max\n * @return {number}\n */\nexport function loop(value, max) {\n let result = value % max;\n\n if (result < 0) {\n result += max;\n }\n\n return result;\n}\n\n/**\n * @deprecated Use THREE.MathUtils.isPowerOfTwo\n */\nexport function isPowerOfTwo(x) {\n return MathUtils.isPowerOfTwo(x);\n}\n\n/**\n * @summary Computes the sum of an array\n * @memberOf PSV.utils\n * @param {number[]} array\n * @returns {number}\n */\nexport function sum(array) {\n return array.reduce((a, b) => a + b, 0);\n}\n\n/**\n * @summary Computes the distance between two points\n * @memberOf PSV.utils\n * @param {PSV.Point} p1\n * @param {PSV.Point} p2\n * @returns {number}\n */\nexport function distance(p1, p2) {\n return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n}\n\n/**\n * @summary Compute the shortest offset between two longitudes\n * @memberOf PSV.utils\n * @param {number} from\n * @param {number} to\n * @returns {number}\n */\nexport function getShortestArc(from, to) {\n const tCandidates = [\n 0, // direct\n Math.PI * 2, // clock-wise cross zero\n -Math.PI * 2, // counter-clock-wise cross zero\n ];\n\n return tCandidates.reduce((value, candidate) => {\n const newCandidate = to - from + candidate;\n return Math.abs(newCandidate) < Math.abs(value) ? newCandidate : value;\n }, Infinity);\n}\n\n/**\n * @summary Computes the angle between the current position and a target position\n * @memberOf PSV.utils\n * @param {PSV.Position} position1\n * @param {PSV.Position} position2\n * @returns {number}\n */\nexport function getAngle(position1, position2) {\n return Math.acos(\n Math.cos(position1.latitude)\n * Math.cos(position2.latitude)\n * Math.cos(position1.longitude - position2.longitude)\n + Math.sin(position1.latitude)\n * Math.sin(position2.latitude)\n );\n}\n\n/**\n * @summary Returns the distance between two points on a sphere of radius one\n * {@link http://www.movable-type.co.uk/scripts/latlong.html}\n * @memberOf PSV.utils\n * @param {number[]} p1\n * @param {number[]} p2\n * @returns {number}\n */\nexport function greatArcDistance(p1, p2) {\n const [λ1, φ1] = p1;\n const [λ2, φ2] = p2;\n\n const x = (λ2 - λ1) * Math.cos((φ1 + φ2) / 2);\n const y = (φ2 - φ1);\n return Math.sqrt(x * x + y * y);\n}\n","/**\n * @summary Transforms a string to dash-case {@link https://github.com/shahata/dasherize}\n * @memberOf PSV.utils\n * @param {string} str\n * @returns {string}\n */\nexport function dasherize(str) {\n return str.replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g, (s, i) => {\n return (i > 0 ? '-' : '') + s.toLowerCase();\n });\n}\n\n/**\n * @summary Returns a function, that, when invoked, will only be triggered at most once during a given window of time.\n * @memberOf PSV.utils\n * @copyright underscore.js - modified by Clément Prévost {@link http://stackoverflow.com/a/27078401}\n * @param {Function} func\n * @param {number} wait\n * @returns {Function}\n */\nexport function throttle(func, wait) {\n /* eslint-disable */\n let self, args, result;\n let timeout;\n let previous = 0;\n const later = function() {\n previous = Date.now();\n timeout = undefined;\n result = func.apply(self, args);\n if (!timeout) {\n self = args = null;\n }\n };\n return function() {\n const now = Date.now();\n if (!previous) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n self = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n previous = now;\n result = func.apply(self, args);\n if (!timeout) {\n self = args = null;\n }\n }\n else if (!timeout) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n /* eslint-enable */\n}\n\n/**\n * @summary Test if an object is a plain object\n * @memberOf PSV.utils\n * @description Test if an object is a plain object, i.e. is constructed\n * by the built-in Object constructor and inherits directly from Object.prototype\n * or null. Some built-in objects pass the test, e.g. Math which is a plain object\n * and some host or exotic objects may pass also.\n * {@link http://stackoverflow.com/a/5878101/1207670}\n * @param {*} obj\n * @returns {boolean}\n */\nexport function isPlainObject(obj) {\n // Basic check for Type object that's not null\n if (typeof obj === 'object' && obj !== null) {\n // If Object.getPrototypeOf supported, use it\n if (typeof Object.getPrototypeOf === 'function') {\n const proto = Object.getPrototypeOf(obj);\n return proto === Object.prototype || proto === null;\n }\n\n // Otherwise, use internal class\n // This should be reliable as if getPrototypeOf not supported, is pre-ES5\n return Object.prototype.toString.call(obj) === '[object Object]';\n }\n\n // Not an object\n return false;\n}\n\n/**\n * @summary Merges the enumerable attributes of two objects\n * @memberOf PSV.utils\n * @description Replaces arrays and alters the target object.\n * @copyright Nicholas Fisher \n * @param {Object} target\n * @param {Object} src\n * @returns {Object} target\n */\nexport function deepmerge(target, src) {\n /* eslint-disable */\n let first = src;\n\n return (function merge(target, src) {\n if (Array.isArray(src)) {\n if (!target || !Array.isArray(target)) {\n target = [];\n }\n else {\n target.length = 0;\n }\n src.forEach(function(e, i) {\n target[i] = merge(null, e);\n });\n }\n else if (typeof src === 'object') {\n if (!target || Array.isArray(target)) {\n target = {};\n }\n Object.keys(src).forEach(function(key) {\n if (typeof src[key] !== 'object' || !src[key] || !isPlainObject(src[key])) {\n target[key] = src[key];\n }\n else if (src[key] != first) {\n if (!target[key]) {\n target[key] = merge(null, src[key]);\n }\n else {\n merge(target[key], src[key]);\n }\n }\n });\n }\n else {\n target = src;\n }\n\n return target;\n }(target, src));\n /* eslint-enable */\n}\n\n/**\n * @summary Deeply clones an object\n * @memberOf PSV.utils\n * @param {Object} src\n * @returns {Object}\n */\nexport function clone(src) {\n return deepmerge(null, src);\n}\n\n/**\n * @summery Test of an object is empty\n * @memberOf PSV.utils\n * @param {object} obj\n * @returns {boolean}\n */\nexport function isEmpty(obj) {\n return !obj || (Object.keys(obj).length === 0 && obj.constructor === Object);\n}\n\n/**\n * @summary Loops over enumerable properties of an object\n * @memberOf PSV.utils\n * @param {Object} object\n * @param {Function} callback\n */\nexport function each(object, callback) {\n Object.keys(object).forEach((key) => {\n callback(object[key], key);\n });\n}\n\n/**\n * @summary Returns if a valu is null or undefined\n * @memberOf PSV.utils\n * @param {*} val\n * @return {boolean}\n */\nexport function isNil(val) {\n return val === null || val === undefined;\n}\n\n/**\n * @summary Returns the first non null non undefined parameter\n * @memberOf PSV.utils\n * @param {*} values\n * @return {*}\n */\nexport function firstNonNull(...values) {\n for (const val of values) {\n if (!isNil(val)) {\n return val;\n }\n }\n\n return undefined;\n}\n\n/**\n * @summary Returns deep equality between objects\n * {@link https://gist.github.com/egardner/efd34f270cc33db67c0246e837689cb9}\n * @param obj1\n * @param obj2\n * @return {boolean}\n * @private\n */\nexport function deepEqual(obj1, obj2) {\n if (obj1 === obj2) {\n return true;\n }\n else if (isObject(obj1) && isObject(obj2)) {\n if (Object.keys(obj1).length !== Object.keys(obj2).length) {\n return false;\n }\n for (const prop of Object.keys(obj1)) {\n if (!deepEqual(obj1[prop], obj2[prop])) {\n return false;\n }\n }\n return true;\n }\n else {\n return false;\n }\n}\n\nfunction isObject(obj) {\n return typeof obj === 'object' && obj != null;\n}\n\n","import { LinearFilter, MathUtils, Quaternion, Texture } from 'three';\nimport { PSVError } from '../PSVError';\nimport { loop } from './math';\n\n/**\n * @summary Returns the plugin constructor from the imported object\n * For retrocompatibility with previous default exports\n * @memberOf PSV.utils\n * @package\n */\nexport function pluginInterop(plugin, target) {\n if (plugin) {\n for (const [, p] of [['_', plugin], ...Object.entries(plugin)]) {\n if (p.prototype instanceof target) {\n return p;\n }\n }\n }\n return null;\n}\n\n/**\n * @summary Builds an Error with name 'AbortError'\n * @memberOf PSV.utils\n * @return {Error}\n */\nexport function getAbortError() {\n const error = new Error('Loading was aborted.');\n error.name = 'AbortError';\n return error;\n}\n\n/**\n * @summary Tests if an Error has name 'AbortError'\n * @memberOf PSV.utils\n * @param {Error} err\n * @return {boolean}\n */\nexport function isAbortError(err) {\n return err?.name === 'AbortError';\n}\n\n/**\n * @summary Displays a warning in the console\n * @memberOf PSV.utils\n * @param {string} message\n */\nexport function logWarn(message) {\n console.warn(`PhotoSphereViewer: ${message}`);\n}\n\n/**\n * @summary Checks if an object is a {PSV.ExtendedPosition}, ie has x/y or longitude/latitude\n * @memberOf PSV.utils\n * @param {object} object\n * @returns {boolean}\n */\nexport function isExtendedPosition(object) {\n return [['x', 'y'], ['longitude', 'latitude']].some(([key1, key2]) => {\n return object[key1] !== undefined && object[key2] !== undefined;\n });\n}\n\n/**\n * @summary Returns the value of a given attribute in the panorama metadata\n * @memberOf PSV.utils\n * @param {string} data\n * @param {string} attr\n * @returns (number)\n */\nexport function getXMPValue(data, attr) {\n // XMP data are stored in children\n let result = data.match('(.*)');\n if (result !== null) {\n const val = parseInt(result[1], 10);\n return isNaN(val) ? null : val;\n }\n\n // XMP data are stored in attributes\n result = data.match('GPano:' + attr + '=\"(.*?)\"');\n if (result !== null) {\n const val = parseInt(result[1], 10);\n return isNaN(val) ? null : val;\n }\n\n return null;\n}\n\n/**\n * @readonly\n * @private\n * @type {{top: string, left: string, bottom: string, center: string, right: string}}\n */\nconst CSS_POSITIONS = {\n top : '0%',\n bottom: '100%',\n left : '0%',\n right : '100%',\n center: '50%',\n};\n\n/**\n * @summary Translate CSS values like \"top center\" or \"10% 50%\" as top and left positions\n * @memberOf PSV.utils\n * @description The implementation is as close as possible to the \"background-position\" specification\n * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/background-position}\n * @param {string|PSV.Point} value\n * @returns {PSV.Point}\n */\nexport function parsePosition(value) {\n if (!value) {\n return { x: 0.5, y: 0.5 };\n }\n\n if (typeof value === 'object') {\n return value;\n }\n\n let tokens = value.toLocaleLowerCase().split(' ').slice(0, 2);\n\n if (tokens.length === 1) {\n if (CSS_POSITIONS[tokens[0]] !== undefined) {\n tokens = [tokens[0], 'center'];\n }\n else {\n tokens = [tokens[0], tokens[0]];\n }\n }\n\n const xFirst = tokens[1] !== 'left' && tokens[1] !== 'right' && tokens[0] !== 'top' && tokens[0] !== 'bottom';\n\n tokens = tokens.map(token => CSS_POSITIONS[token] || token);\n\n if (!xFirst) {\n tokens.reverse();\n }\n\n const parsed = tokens.join(' ').match(/^([0-9.]+)% ([0-9.]+)%$/);\n\n if (parsed) {\n return {\n x: parseFloat(parsed[1]) / 100,\n y: parseFloat(parsed[2]) / 100,\n };\n }\n else {\n return { x: 0.5, y: 0.5 };\n }\n}\n\n/**\n * @readonly\n * @private\n */\nconst X_VALUES = ['left', 'center', 'right'];\n/**\n * @readonly\n * @private\n */\nconst Y_VALUES = ['top', 'center', 'bottom'];\n/**\n * @readonly\n * @private\n */\nconst POS_VALUES = [...X_VALUES, ...Y_VALUES];\n/**\n * @readonly\n * @private\n */\nconst CENTER = 'center';\n\n/**\n * @summary Parse a CSS-like position into an array of position keywords among top, bottom, left, right and center\n * @memberOf PSV.utils\n * @param {string | string[]} value\n * @param {object} [options]\n * @param {boolean} [options.allowCenter=true] allow \"center center\"\n * @param {boolean} [options.cssOrder=true] force CSS order (y axis then x axis)\n * @return {string[]}\n */\nexport function cleanPosition(value, { allowCenter, cssOrder } = { allowCenter: true, cssOrder: true }) {\n if (!value) {\n return null;\n }\n\n if (typeof value === 'string') {\n value = value.split(' ');\n }\n\n if (value.length === 1) {\n if (value[0] === CENTER) {\n value = [CENTER, CENTER];\n }\n else if (X_VALUES.indexOf(value[0]) !== -1) {\n value = [CENTER, value[0]];\n }\n else if (Y_VALUES.indexOf(value[0]) !== -1) {\n value = [value[0], CENTER];\n }\n }\n\n if (value.length !== 2 || POS_VALUES.indexOf(value[0]) === -1 || POS_VALUES.indexOf(value[1]) === -1) {\n logWarn(`Unparsable position ${value}`);\n return null;\n }\n\n if (!allowCenter && value[0] === CENTER && value[1] === CENTER) {\n logWarn(`Invalid position center center`);\n return null;\n }\n\n if (cssOrder && !positionIsOrdered(value)) {\n value = [value[1], value[0]];\n }\n if (value[1] === CENTER && X_VALUES.indexOf(value[0]) !== -1) {\n value = [CENTER, value[0]];\n }\n if (value[0] === CENTER && Y_VALUES.indexOf(value[1]) !== -1) {\n value = [value[1], CENTER];\n }\n\n return value;\n}\n\n/**\n * @summary Checks if an array of two positions is ordered (y axis then x axis)\n * @param {string[]} value\n * @return {boolean}\n */\nexport function positionIsOrdered(value) {\n return Y_VALUES.indexOf(value[0]) !== -1 && X_VALUES.indexOf(value[1]) !== -1;\n}\n\n/**\n * @summary Parses an speed\n * @memberOf PSV.utils\n * @param {string|number} speed - The speed, in radians/degrees/revolutions per second/minute\n * @returns {number} radians per second\n * @throws {PSV.PSVError} when the speed cannot be parsed\n */\nexport function parseSpeed(speed) {\n let parsed;\n\n if (typeof speed === 'string') {\n const speedStr = speed.toString().trim();\n\n // Speed extraction\n let speedValue = parseFloat(speedStr.replace(/^(-?[0-9]+(?:\\.[0-9]*)?).*$/, '$1'));\n const speedUnit = speedStr.replace(/^-?[0-9]+(?:\\.[0-9]*)?(.*)$/, '$1').trim();\n\n // \"per minute\" -> \"per second\"\n if (speedUnit.match(/(pm|per minute)$/)) {\n speedValue /= 60;\n }\n\n // Which unit?\n switch (speedUnit) {\n // Degrees per minute / second\n case 'dpm':\n case 'degrees per minute':\n case 'dps':\n case 'degrees per second':\n parsed = MathUtils.degToRad(speedValue);\n break;\n\n // Radians per minute / second\n case 'rdpm':\n case 'radians per minute':\n case 'rdps':\n case 'radians per second':\n parsed = speedValue;\n break;\n\n // Revolutions per minute / second\n case 'rpm':\n case 'revolutions per minute':\n case 'rps':\n case 'revolutions per second':\n parsed = speedValue * Math.PI * 2;\n break;\n\n // Unknown unit\n default:\n throw new PSVError('Unknown speed unit \"' + speedUnit + '\"');\n }\n }\n else {\n parsed = speed;\n }\n\n return parsed;\n}\n\n/**\n * @summary Parses an angle value in radians or degrees and returns a normalized value in radians\n * @memberOf PSV.utils\n * @param {string|number} angle - eg: 3.14, 3.14rad, 180deg\n * @param {boolean} [zeroCenter=false] - normalize between -Pi - Pi instead of 0 - 2*Pi\n * @param {boolean} [halfCircle=zeroCenter] - normalize between -Pi/2 - Pi/2 instead of -Pi - Pi\n * @returns {number}\n * @throws {PSV.PSVError} when the angle cannot be parsed\n */\nexport function parseAngle(angle, zeroCenter = false, halfCircle = zeroCenter) {\n let parsed;\n\n if (typeof angle === 'string') {\n const match = angle.toLowerCase().trim().match(/^(-?[0-9]+(?:\\.[0-9]*)?)(.*)$/);\n\n if (!match) {\n throw new PSVError('Unknown angle \"' + angle + '\"');\n }\n\n const value = parseFloat(match[1]);\n const unit = match[2];\n\n if (unit) {\n switch (unit) {\n case 'deg':\n case 'degs':\n parsed = MathUtils.degToRad(value);\n break;\n case 'rad':\n case 'rads':\n parsed = value;\n break;\n default:\n throw new PSVError('Unknown angle unit \"' + unit + '\"');\n }\n }\n else {\n parsed = value;\n }\n }\n else if (typeof angle === 'number' && !isNaN(angle)) {\n parsed = angle;\n }\n else {\n throw new PSVError('Unknown angle \"' + angle + '\"');\n }\n\n parsed = loop(zeroCenter ? parsed + Math.PI : parsed, Math.PI * 2);\n\n return zeroCenter ? MathUtils.clamp(parsed - Math.PI, -Math.PI / (halfCircle ? 2 : 1), Math.PI / (halfCircle ? 2 : 1)) : parsed;\n}\n\n/**\n * @summary Creates a THREE texture from an image\n * @memberOf PSV.utils\n * @param {HTMLImageElement | HTMLCanvasElement} img\n * @return {external:THREE.Texture}\n */\nexport function createTexture(img) {\n const texture = new Texture(img);\n texture.needsUpdate = true;\n texture.minFilter = LinearFilter;\n texture.generateMipmaps = false;\n return texture;\n}\n\nconst quaternion = new Quaternion();\n\n/**\n * @summary Applies the inverse of Euler angles to a vector\n * @memberOf PSV.utils\n * @param {external:THREE.Vector3} vector\n * @param {external:THREE.Euler} euler\n */\nexport function applyEulerInverse(vector, euler) {\n quaternion.setFromEuler(euler).invert();\n vector.applyQuaternion(quaternion);\n}\n","import { EASINGS } from '../data/constants';\nimport { each } from './misc';\n\n/**\n * @callback OnTick\n * @summary Function called for each animation frame with computed properties\n * @memberOf PSV.utils.Animation\n * @param {Object.} properties - current values\n * @param {float} progress - 0 to 1\n */\n\n/**\n * @summary Interpolation helper for animations\n * @memberOf PSV.utils\n * @description\n * Implements the Promise API with an additional \"cancel\" method.\n * The promise is resolved with `true` when the animation is completed and `false` if the animation is cancelled.\n * @example\n * const anim = new Animation({\n * properties: {\n * width: {start: 100, end: 200}\n * },\n * duration: 5000,\n * onTick: (properties) => element.style.width = `${properties.width}px`;\n * });\n *\n * anim.then((completed) => ...);\n *\n * anim.cancel()\n */\nexport class Animation {\n\n /**\n * @param {Object} options\n * @param {Object.} options.properties\n * @param {number} options.properties[].start\n * @param {number} options.properties[].end\n * @param {number} options.duration\n * @param {number} [options.delay=0]\n * @param {string} [options.easing='linear']\n * @param {PSV.utils.Animation.OnTick} options.onTick - called on each frame\n */\n constructor(options) {\n this.__callbacks = [];\n\n if (options) {\n if (!options.easing || typeof options.easing === 'string') {\n options.easing = EASINGS[options.easing || 'linear'];\n }\n\n this.__start = null;\n this.options = options;\n\n if (options.delay) {\n this.__delayTimeout = setTimeout(() => {\n this.__delayTimeout = null;\n this.__animationFrame = window.requestAnimationFrame(t => this.__run(t));\n }, options.delay);\n }\n else {\n this.__animationFrame = window.requestAnimationFrame(t => this.__run(t));\n }\n }\n else {\n this.__resolved = true;\n }\n }\n\n /**\n * @summary Main loop for the animation\n * @param {number} timestamp\n * @private\n */\n __run(timestamp) {\n if (this.__cancelled) {\n return;\n }\n\n // first iteration\n if (this.__start === null) {\n this.__start = timestamp;\n }\n\n // compute progress\n const progress = (timestamp - this.__start) / this.options.duration;\n const current = {};\n\n if (progress < 1.0) {\n // interpolate properties\n each(this.options.properties, (prop, name) => {\n if (prop) {\n current[name] = prop.start + (prop.end - prop.start) * this.options.easing(progress);\n }\n });\n this.options.onTick(current, progress);\n\n this.__animationFrame = window.requestAnimationFrame(t => this.__run(t));\n }\n else {\n // call onTick one last time with final values\n each(this.options.properties, (prop, name) => {\n if (prop) {\n current[name] = prop.end;\n }\n });\n this.options.onTick(current, 1.0);\n\n this.__animationFrame = window.requestAnimationFrame(() => {\n this.__resolved = true;\n this.__resolve(true);\n });\n }\n }\n\n /**\n * @private\n */\n __resolve(value) {\n this.__callbacks.forEach(cb => cb(value));\n this.__callbacks.length = 0;\n }\n\n /**\n * @summary Promise chaining\n * @param {Function} [onFulfilled] - Called when the animation is complete (true) or cancelled (false)\n * @returns {Promise}\n */\n then(onFulfilled) {\n if (this.__resolved || this.__cancelled) {\n return Promise.resolve(this.__resolved)\n .then(onFulfilled);\n }\n\n return new Promise((resolve) => {\n this.__callbacks.push(resolve);\n })\n .then(onFulfilled);\n }\n\n /**\n * @summary Cancels the animation\n */\n cancel() {\n if (!this.__cancelled && !this.__resolved) {\n this.__cancelled = true;\n this.__resolve(false);\n\n if (this.__delayTimeout) {\n window.clearTimeout(this.__delayTimeout);\n this.__delayTimeout = null;\n }\n if (this.__animationFrame) {\n window.cancelAnimationFrame(this.__animationFrame);\n this.__animationFrame = null;\n }\n }\n }\n\n}\n","import { MathUtils } from 'three';\nimport { PSVError } from '../PSVError';\nimport { loop } from './math';\n\n/**\n * @summary Represents a variable that can dynamically change with time (using requestAnimationFrame)\n * @memberOf PSV.utils\n */\nexport class Dynamic {\n\n static STOP = 0;\n static INFINITE = 1;\n static POSITION = 2;\n\n /**\n * @param {Function} [fn] Callback function\n * @param {number} [defaultValue] Default position\n * @param {number} [min] Minimum position\n * @param {number} [max] Maximum position\n * @param {boolean} [loopValue] Loop value between min and max\n */\n constructor(fn, defaultValue = 0, min = -Infinity, max = Infinity, loopValue = false) {\n /**\n * @type {Function}\n * @private\n * @readonly\n */\n this.fn = fn;\n\n /**\n * @type {number}\n * @private\n */\n this.mode = Dynamic.STOP;\n\n /**\n * @type {number}\n * @private\n */\n this.speed = 0;\n\n /**\n * @type {number}\n * @private\n */\n this.speedMult = 1;\n\n /**\n * @type {number}\n * @private\n */\n this.currentSpeed = 0;\n\n /**\n * @type {number}\n * @private\n */\n this.target = 0;\n\n /**\n * @type {number}\n * @readonly\n */\n this.current = defaultValue;\n\n /**\n * @type {number}\n * @private\n */\n this.min = min;\n\n /**\n * @type {number}\n * @private\n */\n this.max = max;\n\n /**\n * @type {boolean}\n * @private\n */\n this.loopValue = loopValue;\n\n if (loopValue && min !== 0) {\n throw new PSVError('invalid config');\n }\n\n if (this.fn) {\n this.fn(defaultValue);\n }\n }\n\n /**\n * Changes base speed\n * @param {number} speed\n */\n setSpeed(speed) {\n this.speed = speed;\n }\n\n /**\n * Defines the target position\n * @param {number} position\n * @param {number} [speedMult=1]\n */\n goto(position, speedMult = 1) {\n this.mode = Dynamic.POSITION;\n this.target = this.loopValue ? loop(position, this.max) : MathUtils.clamp(position, this.min, this.max);\n this.speedMult = speedMult;\n }\n\n /**\n * Increase/decrease the target position\n * @param {number} step\n * @param {number} [speedMult=1]\n */\n step(step, speedMult = 1) {\n if (this.mode !== Dynamic.POSITION) {\n this.target = this.current;\n }\n this.goto(this.target + step, speedMult);\n }\n\n /**\n * Starts infinite movement\n * @param {boolean} [invert=false]\n * @param {number} [speedMult=1]\n */\n roll(invert = false, speedMult = 1) {\n this.mode = Dynamic.INFINITE;\n this.target = invert ? -Infinity : Infinity;\n this.speedMult = speedMult;\n }\n\n /**\n * Stops movement\n */\n stop() {\n this.mode = Dynamic.STOP;\n }\n\n /**\n * Defines the current position and immediately stops movement\n * @param {number} value\n */\n setValue(value) {\n this.target = this.loopValue ? loop(value, this.max) : MathUtils.clamp(value, this.min, this.max);\n this.mode = Dynamic.STOP;\n if (this.target !== this.current) {\n this.current = this.target;\n if (this.fn) {\n this.fn(this.current);\n }\n return true;\n }\n return false;\n }\n\n /**\n * @package\n */\n update(elapsed) {\n // in position mode switch to stop mode when in the decceleration window\n if (this.mode === Dynamic.POSITION) {\n // in loop mode, alter \"current\" to avoid crossing the origin\n if (this.loopValue && Math.abs(this.target - this.current) > this.max / 2) {\n this.current = this.current < this.target ? this.current + this.max : this.current - this.max;\n }\n\n const dstStop = this.currentSpeed * this.currentSpeed / (this.speed * this.speedMult * 4);\n if (Math.abs(this.target - this.current) <= dstStop) {\n this.mode = Dynamic.STOP;\n }\n }\n\n // compute speed\n let targetSpeed = this.mode === Dynamic.STOP ? 0 : this.speed * this.speedMult;\n if (this.target < this.current) {\n targetSpeed = -targetSpeed;\n }\n if (this.currentSpeed < targetSpeed) {\n this.currentSpeed = Math.min(targetSpeed, this.currentSpeed + elapsed / 1000 * this.speed * this.speedMult * 2);\n }\n else if (this.currentSpeed > targetSpeed) {\n this.currentSpeed = Math.max(targetSpeed, this.currentSpeed - elapsed / 1000 * this.speed * this.speedMult * 2);\n }\n\n // compute new position\n let next = null;\n if (this.current > this.target && this.currentSpeed) {\n next = Math.max(this.target, this.current + this.currentSpeed * elapsed / 1000);\n }\n else if (this.current < this.target && this.currentSpeed) {\n next = Math.min(this.target, this.current + this.currentSpeed * elapsed / 1000);\n }\n\n // apply value\n if (next !== null) {\n next = this.loopValue ? loop(next, this.max) : MathUtils.clamp(next, this.min, this.max);\n if (next !== this.current) {\n this.current = next;\n if (this.fn) {\n this.fn(this.current);\n }\n return true;\n }\n }\n\n return false;\n }\n\n}\n","import { each } from './misc';\n\n/**\n * @summary Wrapper for multiple {@link PSV.utils.Dynamic} evolving together\n * @memberOf PSV.utils\n */\nexport class MultiDynamic {\n\n /**\n * @type {Object}\n * @readonly\n */\n get current() {\n const values = {};\n each(this.dynamics, (dynamic, name) => {\n values[name] = dynamic.current;\n });\n return values;\n }\n\n /**\n * @param {Record} dynamics\n * @param {Function} [fn] Callback function\n */\n constructor(dynamics, fn) {\n /**\n * @type {Function}\n * @private\n * @readonly\n */\n this.fn = fn;\n\n /**\n * @type {Record}\n * @private\n * @readonly\n */\n this.dynamics = dynamics;\n\n if (this.fn) {\n this.fn(this.current);\n }\n }\n\n /**\n * Changes base speed\n * @param {number} speed\n */\n setSpeed(speed) {\n each(this.dynamics, (d) => {\n d.setSpeed(speed);\n });\n }\n\n /**\n * Defines the target positions\n * @param {Record} positions\n * @param {number} [speedMult=1]\n */\n goto(positions, speedMult = 1) {\n each(positions, (position, name) => {\n this.dynamics[name].goto(position, speedMult);\n });\n }\n\n /**\n * Increase/decrease the target positions\n * @param {Record} steps\n * @param {number} [speedMult=1]\n */\n step(steps, speedMult = 1) {\n each(steps, (step, name) => {\n this.dynamics[name].step(step, speedMult);\n });\n }\n\n /**\n * Starts infinite movements\n * @param {Record} rolls\n * @param {number} [speedMult=1]\n */\n roll(rolls, speedMult = 1) {\n each(rolls, (roll, name) => {\n this.dynamics[name].roll(roll, speedMult);\n });\n }\n\n /**\n * Stops movements\n */\n stop() {\n each(this.dynamics, d => d.stop());\n }\n\n /**\n * Defines the current positions and immediately stops movements\n * @param {Record} values\n */\n setValue(values) {\n let hasUpdates = false;\n each(values, (value, name) => {\n hasUpdates |= this.dynamics[name].setValue(value);\n });\n\n if (hasUpdates && this.fn) {\n this.fn(this.current);\n }\n\n return hasUpdates;\n }\n\n /**\n * @package\n */\n update(elapsed) {\n let hasUpdates = false;\n each(this.dynamics, (dynamic) => {\n hasUpdates |= dynamic.update(elapsed);\n });\n\n if (hasUpdates && this.fn) {\n this.fn(this.current);\n }\n\n return hasUpdates;\n }\n\n}\n","import { EventEmitter } from 'uevent';\n\n/**\n * @summary Helper to make sliders elements\n * @memberOf PSV.utils\n */\nexport class Slider extends EventEmitter {\n\n static VERTICAL = 1;\n static HORIZONTAL = 2;\n\n /**\n * @type {boolean}\n * @readonly\n */\n get vertical() {\n return this.prop.direction === Slider.VERTICAL;\n }\n\n constructor({ psv, container, direction, onUpdate }) {\n super();\n\n /**\n * @summary Reference to main controller\n * @type {PSV.Viewer}\n * @readonly\n */\n this.psv = psv;\n\n /**\n * @member {HTMLElement}\n * @readonly\n */\n this.container = container;\n\n /**\n * @summary Internal properties\n * @member {Object}\n * @protected\n * @property {boolean} mousedown\n * @property {number} mediaMinWidth\n */\n this.prop = {\n onUpdate : onUpdate,\n direction: direction,\n mousedown: false,\n mouseover: false,\n };\n\n this.container.addEventListener('click', this);\n this.container.addEventListener('mousedown', this);\n this.container.addEventListener('mouseenter', this);\n this.container.addEventListener('mouseleave', this);\n this.container.addEventListener('touchstart', this);\n this.container.addEventListener('mousemove', this, true);\n this.container.addEventListener('touchmove', this, true);\n window.addEventListener('mouseup', this);\n window.addEventListener('touchend', this);\n }\n\n /**\n * @protected\n */\n destroy() {\n window.removeEventListener('mouseup', this);\n window.removeEventListener('touchend', this);\n }\n\n /**\n * @summary Handles events\n * @param {Event} e\n * @private\n */\n handleEvent(e) {\n /* eslint-disable */\n switch (e.type) {\n // @formatter:off\n case 'click': e.stopPropagation(); break;\n case 'mousedown': this.__onMouseDown(e); break;\n case 'mouseenter': this.__onMouseEnter(e); break;\n case 'mouseleave': this.__onMouseLeave(e); break;\n case 'touchstart': this.__onTouchStart(e); break;\n case 'mousemove': this.__onMouseMove(e); break;\n case 'touchmove': this.__onTouchMove(e); break;\n case 'mouseup': this.__onMouseUp(e); break;\n case 'touchend': this.__onTouchEnd(e); break;\n // @formatter:on\n }\n /* eslint-enable */\n }\n\n /**\n * @private\n */\n __onMouseDown(evt) {\n this.prop.mousedown = true;\n this.__update(evt, true);\n }\n\n /**\n * @private\n */\n __onMouseEnter(evt) {\n this.prop.mouseover = true;\n this.__update(evt, true);\n }\n\n /**\n * @private\n */\n __onTouchStart(evt) {\n this.prop.mouseover = true;\n this.prop.mousedown = true;\n this.__update(evt.changedTouches[0], true);\n }\n\n /**\n * @private\n */\n __onMouseMove(evt) {\n if (this.prop.mousedown || this.prop.mouseover) {\n evt.stopPropagation();\n this.__update(evt, true);\n }\n }\n\n /**\n * @private\n */\n __onTouchMove(evt) {\n if (this.prop.mousedown || this.prop.mouseover) {\n evt.stopPropagation();\n this.__update(evt.changedTouches[0], true);\n }\n }\n\n /**\n * @private\n */\n __onMouseUp(evt) {\n if (this.prop.mousedown) {\n this.prop.mousedown = false;\n this.__update(evt, false);\n }\n }\n\n /**\n * @private\n */\n __onMouseLeave(evt) {\n if (this.prop.mouseover) {\n this.prop.mouseover = false;\n this.__update(evt, true);\n }\n }\n\n /**\n * @private\n */\n __onTouchEnd(evt) {\n if (this.prop.mousedown) {\n this.prop.mouseover = false;\n this.prop.mousedown = false;\n this.__update(evt.changedTouches[0], false);\n }\n }\n\n /**\n * @private\n */\n __update(evt, moving) {\n const boundingClientRect = this.container.getBoundingClientRect();\n const cursor = evt[this.vertical ? 'clientY' : 'clientX'];\n const pos = boundingClientRect[this.vertical ? 'bottom' : 'left'];\n const size = boundingClientRect[this.vertical ? 'height' : 'width'];\n const val = Math.abs((pos - cursor) / size);\n\n this.prop.onUpdate({\n value : val,\n click : !moving,\n mousedown: this.prop.mousedown,\n mouseover: this.prop.mouseover,\n cursor : evt,\n });\n }\n\n}\n","/**\n * @namespace PSV.utils\n */\n\nexport * from './browser';\nexport * from './math';\nexport * from './misc';\nexport * from './psv';\n\nexport * from './Animation';\nexport * from './Dynamic';\nexport * from './MultiDynamic';\nexport * from './Slider';\n","import { MathUtils, Mesh, SphereGeometry, Texture } from 'three';\nimport { SPHERE_RADIUS } from '../../data/constants';\nimport { SYSTEM } from '../../data/system';\nimport { PSVError } from '../../PSVError';\nimport { createTexture, firstNonNull, getXMPValue, logWarn } from '../../utils';\nimport { AbstractAdapter } from '../AbstractAdapter';\n\n\n/**\n * @typedef {Object} PSV.adapters.EquirectangularAdapter.Options\n * @property {number} [resolution=64] - number of faces of the sphere geometry, higher values may decrease performances\n */\n\n\n/**\n * @summary Adapter for equirectangular panoramas\n * @memberof PSV.adapters\n * @extends PSV.adapters.AbstractAdapter\n */\nexport class EquirectangularAdapter extends AbstractAdapter {\n\n static id = 'equirectangular';\n static supportsDownload = true;\n static supportsOverlay = true;\n\n /**\n * @param {PSV.Viewer} psv\n * @param {PSV.adapters.EquirectangularAdapter.Options} options\n */\n constructor(psv, options) {\n super(psv);\n\n /**\n * @member {PSV.adapters.EquirectangularAdapter.Options}\n * @private\n */\n this.config = {\n resolution: 64,\n ...options,\n };\n\n if (!MathUtils.isPowerOfTwo(this.config.resolution)) {\n throw new PSVError('EquirectangularAdapter resolution must be power of two');\n }\n\n this.SPHERE_SEGMENTS = this.config.resolution;\n this.SPHERE_HORIZONTAL_SEGMENTS = this.SPHERE_SEGMENTS / 2;\n }\n\n /**\n * @override\n */\n supportsTransition() {\n return true;\n }\n\n /**\n * @override\n */\n supportsPreload() {\n return true;\n }\n\n /**\n * @override\n * @param {string} panorama\n * @param {PSV.PanoData | PSV.PanoDataProvider} [newPanoData]\n * @param {boolean} [useXmpPanoData]\n * @returns {Promise.}\n */\n loadTexture(panorama, newPanoData, useXmpPanoData = this.psv.config.useXmpData) {\n if (typeof panorama !== 'string') {\n if (Array.isArray(panorama) || typeof panorama === 'object' && !!panorama.left) {\n logWarn('Cubemap support now requires an additional adapter, see https://photo-sphere-viewer.js.org/guide/adapters');\n }\n return Promise.reject(new PSVError('Invalid panorama url, are you using the right adapter?'));\n }\n\n return (\n useXmpPanoData\n ? this.__loadXMP(panorama, p => this.psv.loader.setProgress(p))\n .then(xmpPanoData => this.psv.textureLoader.loadImage(panorama).then(img => ({ img, xmpPanoData })))\n : this.psv.textureLoader.loadImage(panorama, p => this.psv.loader.setProgress(p))\n .then(img => ({ img: img, xmpPanoData: null }))\n )\n .then(({ img, xmpPanoData }) => {\n if (typeof newPanoData === 'function') {\n newPanoData = newPanoData(img);\n }\n\n const panoData = {\n fullWidth : firstNonNull(newPanoData?.fullWidth, xmpPanoData?.fullWidth, img.width),\n fullHeight : firstNonNull(newPanoData?.fullHeight, xmpPanoData?.fullHeight, img.height),\n croppedWidth : firstNonNull(newPanoData?.croppedWidth, xmpPanoData?.croppedWidth, img.width),\n croppedHeight: firstNonNull(newPanoData?.croppedHeight, xmpPanoData?.croppedHeight, img.height),\n croppedX : firstNonNull(newPanoData?.croppedX, xmpPanoData?.croppedX, 0),\n croppedY : firstNonNull(newPanoData?.croppedY, xmpPanoData?.croppedY, 0),\n poseHeading : firstNonNull(newPanoData?.poseHeading, xmpPanoData?.poseHeading, 0),\n posePitch : firstNonNull(newPanoData?.posePitch, xmpPanoData?.posePitch, 0),\n poseRoll : firstNonNull(newPanoData?.poseRoll, xmpPanoData?.poseRoll, 0),\n };\n\n if (panoData.croppedWidth !== img.width || panoData.croppedHeight !== img.height) {\n logWarn(`Invalid panoData, croppedWidth and/or croppedHeight is not coherent with loaded image.\n panoData: ${panoData.croppedWidth}x${panoData.croppedHeight}, image: ${img.width}x${img.height}`);\n }\n if ((newPanoData || xmpPanoData) && panoData.fullWidth !== panoData.fullHeight * 2) {\n logWarn('Invalid panoData, fullWidth should be twice fullHeight');\n }\n\n const texture = this.__createEquirectangularTexture(img, panoData);\n\n return { panorama, texture, panoData };\n });\n }\n\n /**\n * @summary Loads the XMP data of an image\n * @param {string} panorama\n * @param {function(number)} [onProgress]\n * @returns {Promise}\n * @throws {PSV.PSVError} when the image cannot be loaded\n * @private\n */\n __loadXMP(panorama, onProgress) {\n return this.psv.textureLoader.loadFile(panorama, onProgress)\n .then(blob => this.__loadBlobAsString(blob))\n .then((binary) => {\n const a = binary.indexOf('');\n const data = binary.substring(a, b);\n\n if (a !== -1 && b !== -1 && data.includes('GPano:')) {\n return {\n fullWidth : getXMPValue(data, 'FullPanoWidthPixels'),\n fullHeight : getXMPValue(data, 'FullPanoHeightPixels'),\n croppedWidth : getXMPValue(data, 'CroppedAreaImageWidthPixels'),\n croppedHeight: getXMPValue(data, 'CroppedAreaImageHeightPixels'),\n croppedX : getXMPValue(data, 'CroppedAreaLeftPixels'),\n croppedY : getXMPValue(data, 'CroppedAreaTopPixels'),\n poseHeading : getXMPValue(data, 'PoseHeadingDegrees'),\n posePitch : getXMPValue(data, 'PosePitchDegrees'),\n poseRoll : getXMPValue(data, 'PoseRollDegrees'),\n };\n }\n\n return null;\n });\n }\n\n /**\n * @summmary read a Blob as string\n * @param {Blob} blob\n * @returns {Promise}\n * @private\n */\n __loadBlobAsString(blob) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result);\n reader.onerror = reject;\n reader.readAsText(blob);\n });\n }\n\n /**\n * @summary Creates the final texture from image and panorama data\n * @param {Image} img\n * @param {PSV.PanoData} panoData\n * @returns {external:THREE.Texture}\n * @private\n */\n __createEquirectangularTexture(img, panoData) {\n // resize image / fill cropped parts with black\n if (panoData.fullWidth > SYSTEM.maxTextureWidth\n || panoData.croppedWidth !== panoData.fullWidth\n || panoData.croppedHeight !== panoData.fullHeight\n ) {\n const ratio = SYSTEM.getMaxCanvasWidth() / panoData.fullWidth;\n\n const resizedPanoData = { ...panoData };\n if (ratio < 1) {\n resizedPanoData.fullWidth *= ratio;\n resizedPanoData.fullHeight *= ratio;\n resizedPanoData.croppedWidth *= ratio;\n resizedPanoData.croppedHeight *= ratio;\n resizedPanoData.croppedX *= ratio;\n resizedPanoData.croppedY *= ratio;\n }\n\n const buffer = document.createElement('canvas');\n buffer.width = resizedPanoData.fullWidth;\n buffer.height = resizedPanoData.fullHeight;\n\n const ctx = buffer.getContext('2d');\n ctx.drawImage(img,\n resizedPanoData.croppedX, resizedPanoData.croppedY,\n resizedPanoData.croppedWidth, resizedPanoData.croppedHeight);\n\n return createTexture(buffer);\n }\n\n return createTexture(img);\n }\n\n /**\n * @override\n */\n createMesh(scale = 1) {\n // The middle of the panorama is placed at longitude=0\n const geometry = new SphereGeometry(\n SPHERE_RADIUS * scale,\n this.SPHERE_SEGMENTS,\n this.SPHERE_HORIZONTAL_SEGMENTS,\n -Math.PI / 2\n )\n .scale(-1, 1, 1);\n\n const material = AbstractAdapter.createOverlayMaterial();\n\n return new Mesh(geometry, material);\n }\n\n /**\n * @override\n */\n setTexture(mesh, textureData) {\n this.__setUniform(mesh, AbstractAdapter.OVERLAY_UNIFORMS.panorama, textureData.texture);\n this.setOverlay(mesh, null);\n }\n\n /**\n * @override\n */\n setOverlay(mesh, textureData, opacity) {\n this.__setUniform(mesh, AbstractAdapter.OVERLAY_UNIFORMS.overlayOpacity, opacity);\n if (!textureData) {\n this.__setUniform(mesh, AbstractAdapter.OVERLAY_UNIFORMS.overlay, new Texture());\n }\n else {\n this.__setUniform(mesh, AbstractAdapter.OVERLAY_UNIFORMS.overlay, textureData.texture);\n }\n }\n\n /**\n * @override\n */\n setTextureOpacity(mesh, opacity) {\n this.__setUniform(mesh, AbstractAdapter.OVERLAY_UNIFORMS.globalOpacity, opacity);\n mesh.material.transparent = opacity < 1;\n }\n\n /**\n * @override\n */\n disposeTexture(textureData) {\n textureData.texture?.dispose();\n }\n\n /**\n * @param {external:THREE.Mesh} mesh\n * @param {string} uniform\n * @param {*} value\n * @private\n */\n __setUniform(mesh, uniform, value) {\n if (mesh.material.uniforms[uniform].value instanceof Texture) {\n mesh.material.uniforms[uniform].value.dispose();\n }\n mesh.material.uniforms[uniform].value = value;\n }\n\n}\n","/**\n * @namespace PSV.components\n */\n\n/**\n * @summary Base component class\n * @memberof PSV.components\n * @abstract\n */\nexport class AbstractComponent {\n\n /**\n * @param {PSV.Viewer | PSV.components.AbstractComponent} parent\n * @param {string} className - CSS class added to the component's container\n */\n constructor(parent, className) {\n /**\n * @summary Reference to main controller\n * @type {PSV.Viewer}\n * @readonly\n */\n this.psv = parent.psv || parent;\n\n /**\n * @member {PSV.Viewer|PSV.components.AbstractComponent}\n * @readonly\n */\n this.parent = parent;\n this.parent.children.push(this);\n\n /**\n * @summary All child components\n * @type {PSV.components.AbstractComponent[]}\n * @readonly\n * @package\n */\n this.children = [];\n\n /**\n * @summary Internal properties\n * @member {Object}\n * @protected\n * @property {boolean} visible - Visibility of the component\n */\n this.prop = {\n visible: true,\n };\n\n /**\n * @member {HTMLElement}\n * @readonly\n */\n this.container = document.createElement('div');\n this.container.className = className;\n this.parent.container.appendChild(this.container);\n }\n\n /**\n * @summary Destroys the component\n * @protected\n */\n destroy() {\n this.parent.container.removeChild(this.container);\n\n const childIdx = this.parent.children.indexOf(this);\n if (childIdx !== -1) {\n this.parent.children.splice(childIdx, 1);\n }\n\n this.children.slice().forEach(child => child.destroy());\n this.children.length = 0;\n\n delete this.container;\n delete this.parent;\n delete this.psv;\n delete this.prop;\n }\n\n /**\n * @summary Refresh UI\n * @description Must be be a very lightweight operation\n * @package\n */\n refreshUi() {\n this.children.every((child) => {\n child.refreshUi();\n return this.psv.prop.uiRefresh === true;\n });\n }\n\n /**\n * @summary Displays or hides the component\n * @param {boolean} [visible] - forced state\n */\n toggle(visible) {\n if (visible === false || visible === undefined && this.isVisible()) {\n this.hide();\n }\n else if (visible === true || visible === undefined && !this.isVisible()) {\n this.show();\n }\n }\n\n /**\n * @summary Hides the component\n */\n hide() {\n this.container.style.display = 'none';\n this.prop.visible = false;\n }\n\n /**\n * @summary Displays the component\n */\n show() {\n this.container.style.display = '';\n this.prop.visible = true;\n }\n\n /**\n * @summary Checks if the component is visible\n * @returns {boolean}\n */\n isVisible() {\n return this.prop.visible;\n }\n\n}\n","import { AbstractComponent } from '../components/AbstractComponent';\nimport { KEY_CODES } from '../data/constants';\nimport { PSVError } from '../PSVError';\nimport { isPlainObject, toggleClass } from '../utils';\n\n/**\n * @namespace PSV.buttons\n */\n\n/**\n * @summary Base navbar button class\n * @extends PSV.components.AbstractComponent\n * @memberof PSV.buttons\n * @abstract\n */\nexport class AbstractButton extends AbstractComponent {\n\n /**\n * @summary Unique identifier of the button\n * @member {string}\n * @readonly\n * @static\n */\n static id = null;\n\n /**\n * @summary Identifier to declare a group of buttons\n * @member {string}\n * @readonly\n * @static\n */\n static groupId = null;\n\n /**\n * @summary SVG icon name injected in the button\n * @member {string}\n * @readonly\n * @static\n */\n static icon = null;\n\n /**\n * @summary SVG icon name injected in the button when it is active\n * @member {string}\n * @readonly\n * @static\n */\n static iconActive = null;\n\n /**\n * @param {PSV.components.Navbar} navbar\n * @param {string} [className] - Additional CSS classes\n * @param {boolean} [collapsable=false] - `true` if the button can be moved to menu when the navbar is too small\n * @param {boolean} [tabbable=true] - `true` if the button is accessible with the keyboard\n */\n constructor(navbar, className = '', collapsable = false, tabbable = true) {\n super(navbar, 'psv-button ' + className);\n\n /**\n * @override\n * @property {string} id - Unique identifier of the button\n * @property {boolean} enabled\n * @property {boolean} supported\n * @property {boolean} collapsed\n * @property {boolean} active\n * @property {number} width\n */\n this.prop = {\n ...this.prop,\n id : this.constructor.id,\n collapsable: collapsable,\n enabled : true,\n supported : true,\n collapsed : false,\n active : false,\n width : this.container.offsetWidth,\n };\n\n if (this.constructor.icon) {\n this.__setIcon(this.constructor.icon);\n }\n\n if (this.prop.id && this.psv.config.lang[this.prop.id]) {\n this.container.title = this.psv.config.lang[this.prop.id];\n }\n\n if (tabbable) {\n this.container.tabIndex = 0;\n }\n\n this.container.addEventListener('click', (e) => {\n if (this.prop.enabled) {\n this.onClick();\n }\n e.stopPropagation();\n });\n\n this.container.addEventListener('keydown', (e) => {\n if (e.key === KEY_CODES.Enter && this.prop.enabled) {\n this.onClick();\n e.stopPropagation();\n }\n });\n }\n\n /**\n * @package\n */\n checkSupported() {\n const supportedOrObject = this.isSupported();\n if (isPlainObject(supportedOrObject)) {\n if (supportedOrObject.initial === false) {\n this.hide();\n this.prop.supported = false;\n }\n\n supportedOrObject.promise.then((supported) => {\n if (!this.prop) {\n return; // the component has been destroyed\n }\n this.prop.supported = supported;\n this.toggle(supported);\n });\n }\n else {\n this.prop.supported = supportedOrObject;\n if (!supportedOrObject) {\n this.hide();\n }\n }\n }\n\n /**\n * @summary Checks if the button can be displayed\n * @returns {boolean|{initial: boolean, promise: Promise}}\n */\n isSupported() {\n return true;\n }\n\n /**\n * @summary Changes the active state of the button\n * @param {boolean} [active] - forced state\n */\n toggleActive(active) {\n this.prop.active = active !== undefined ? active : !this.prop.active;\n toggleClass(this.container, 'psv-button--active', this.prop.active);\n\n if (this.constructor.iconActive) {\n this.__setIcon(this.prop.active ? this.constructor.iconActive : this.constructor.icon);\n }\n }\n\n /**\n * @override\n */\n show(refresh = true) {\n if (!this.isVisible()) {\n this.prop.visible = true;\n if (!this.prop.collapsed) {\n this.container.style.display = '';\n }\n if (refresh) {\n this.psv.refreshUi(`show button ${this.prop.id}`);\n }\n }\n }\n\n /**\n * @override\n */\n hide(refresh = true) {\n if (this.isVisible()) {\n this.prop.visible = false;\n this.container.style.display = 'none';\n if (refresh) {\n this.psv.refreshUi(`hide button ${this.prop.id}`);\n }\n }\n }\n\n /**\n * @summary Disables the button\n */\n disable() {\n this.container.classList.add('psv-button--disabled');\n this.prop.enabled = false;\n }\n\n /**\n * @summary Enables the button\n */\n enable() {\n this.container.classList.remove('psv-button--disabled');\n this.prop.enabled = true;\n }\n\n /**\n * @summary Collapses the button in the navbar menu\n */\n collapse() {\n this.prop.collapsed = true;\n this.container.style.display = 'none';\n }\n\n /**\n * @summary Uncollapses the button from the navbar menu\n */\n uncollapse() {\n this.prop.collapsed = false;\n if (this.prop.visible) {\n this.container.style.display = '';\n }\n }\n\n /**\n * @summary Set the button icon\n * @param {string} icon SVG\n * @param {HTMLElement} [container] - default is the main button container\n * @private\n */\n __setIcon(icon, container = this.container) {\n if (icon) {\n container.innerHTML = icon;\n // className is read-only on SVGElement\n container.querySelector('svg').classList.add('psv-button-svg');\n }\n else {\n container.innerHTML = '';\n }\n }\n\n /**\n * @summary Action when the button is clicked\n * @private\n * @abstract\n */\n onClick() {\n throw new PSVError(`onClick not implemented for button \"${this.prop.id}\".`);\n }\n\n}\n","import { EVENTS } from '../data/constants';\nimport playActive from '../icons/play-active.svg';\nimport play from '../icons/play.svg';\nimport { AbstractButton } from './AbstractButton';\n\n/**\n * @summary Navigation bar autorotate button class\n * @extends PSV.buttons.AbstractButton\n * @memberof PSV.buttons\n */\nexport class AutorotateButton extends AbstractButton {\n\n static id = 'autorotate';\n static icon = play;\n static iconActive = playActive;\n\n /**\n * @param {PSV.components.Navbar} navbar\n */\n constructor(navbar) {\n super(navbar, 'psv-button--hover-scale psv-autorotate-button', true);\n\n this.psv.on(EVENTS.AUTOROTATE, this);\n }\n\n /**\n * @override\n */\n destroy() {\n this.psv.off(EVENTS.AUTOROTATE, this);\n\n super.destroy();\n }\n\n /**\n * @summary Handles events\n * @param {Event} e\n * @private\n */\n handleEvent(e) {\n /* eslint-disable */\n switch (e.type) {\n // @formatter:off\n case EVENTS.AUTOROTATE: this.toggleActive(e.args[0]); break;\n // @formatter:on\n }\n /* eslint-enable */\n }\n\n /**\n * @override\n * @description Toggles autorotate\n */\n onClick() {\n if (this.psv.isAutorotateEnabled()) {\n this.psv.config.autorotateIdle = false;\n this.psv.resetIdleTimer();\n }\n this.psv.toggleAutorotate();\n }\n\n}\n","import { addClasses } from '../utils';\nimport { AbstractButton } from './AbstractButton';\n\n/**\n * @summary Navigation bar custom button class\n * @extends PSV.buttons.AbstractButton\n * @memberof PSV.buttons\n */\nexport class CustomButton extends AbstractButton {\n\n /**\n * @param {PSV.components.Navbar} navbar\n * @param {PSV.NavbarCustomButton} config\n */\n constructor(navbar, config) {\n super(navbar, 'psv-custom-button', config.collapsable !== false, config.tabbable !== false);\n\n /**\n * @member {Object}\n * @readonly\n * @private\n */\n this.config = config;\n\n if (this.config.id) {\n this.prop.id = this.config.id;\n }\n else {\n this.prop.id = 'psvButton-' + Math.random().toString(36).substr(2, 9);\n }\n\n if (this.config.className) {\n addClasses(this.container, this.config.className);\n }\n\n if (this.config.title) {\n this.container.title = this.config.title;\n }\n\n if (this.config.content) {\n this.container.innerHTML = this.config.content;\n }\n\n this.prop.width = this.container.offsetWidth;\n\n if (this.config.enabled === false) {\n this.disable();\n }\n\n if (this.config.visible === false) {\n this.hide();\n }\n }\n\n /**\n * @override\n */\n destroy() {\n delete this.config;\n\n super.destroy();\n }\n\n /**\n * @override\n * @description Calls user method\n */\n onClick() {\n if (this.config.onClick) {\n this.config.onClick.call(this.psv, this.psv);\n }\n }\n\n}\n","import { EVENTS, IDS } from '../data/constants';\nimport info from '../icons/info.svg';\nimport { AbstractButton } from './AbstractButton';\n\nconst MODE_NOTIF = 1;\nconst MODE_PANEL = 2;\n\n/**\n * @summary Navigation bar description button class\n * @extends PSV.buttons.AbstractButton\n * @memberof PSV.buttons\n */\nexport class DescriptionButton extends AbstractButton {\n\n static id = 'description';\n static icon = info;\n\n /**\n * @param {PSV.components.Navbar} navbar\n */\n constructor(navbar) {\n super(navbar, 'psv-button--hover-scale psv-description-button');\n\n /**\n * @override\n * @property {string} mode - notification or panel\n */\n this.prop = {\n ...this.prop,\n mode: null,\n };\n\n this.psv.on(EVENTS.HIDE_NOTIFICATION, this);\n this.psv.on(EVENTS.SHOW_NOTIFICATION, this);\n this.psv.on(EVENTS.CLOSE_PANEL, this);\n this.psv.on(EVENTS.OPEN_PANEL, this);\n }\n\n /**\n * @override\n */\n destroy() {\n this.psv.off(EVENTS.HIDE_NOTIFICATION, this);\n this.psv.off(EVENTS.SHOW_NOTIFICATION, this);\n this.psv.off(EVENTS.CLOSE_PANEL, this);\n this.psv.off(EVENTS.OPEN_PANEL, this);\n\n super.destroy();\n }\n\n /**\n * @summary Handles events\n * @param {Event} e\n * @private\n */\n handleEvent(e) {\n if (!this.prop.mode) {\n return;\n }\n\n let closed = false;\n switch (e.type) {\n case EVENTS.HIDE_NOTIFICATION:\n closed = this.prop.mode === MODE_NOTIF;\n break;\n\n case EVENTS.SHOW_NOTIFICATION:\n closed = this.prop.mode === MODE_NOTIF && e.args[0] !== IDS.DESCRIPTION;\n break;\n\n case EVENTS.CLOSE_PANEL:\n closed = this.prop.mode === MODE_PANEL;\n break;\n\n case EVENTS.OPEN_PANEL:\n closed = this.prop.mode === MODE_PANEL && e.args[0] !== IDS.DESCRIPTION;\n break;\n\n default:\n }\n\n if (closed) {\n this.toggleActive(false);\n this.prop.mode = null;\n }\n }\n\n /**\n * @override\n */\n hide(refresh) {\n super.hide(refresh);\n\n if (this.prop.mode) {\n this.__close();\n }\n }\n\n /**\n * This button can only be refresh from NavbarCaption\n * @override\n */\n refreshUi(refresh = false) {\n if (refresh) {\n const caption = this.psv.navbar.getButton('caption', false);\n const captionHidden = caption && !caption.isVisible();\n const hasDescription = !!this.psv.config.description;\n\n if (captionHidden || hasDescription) {\n this.show(false);\n }\n else {\n this.hide(false);\n }\n }\n }\n\n /**\n * @override\n * @description Toggles caption\n */\n onClick() {\n if (this.prop.mode) {\n this.__close();\n }\n else {\n this.__open();\n }\n }\n\n /**\n * @private\n */\n __close() {\n switch (this.prop.mode) {\n case MODE_NOTIF:\n this.psv.notification.hide(IDS.DESCRIPTION);\n break;\n case MODE_PANEL:\n this.psv.panel.hide(IDS.DESCRIPTION);\n break;\n default:\n }\n }\n\n /**\n * @private\n */\n __open() {\n this.toggleActive(true);\n\n if (this.psv.config.description) {\n this.prop.mode = MODE_PANEL;\n this.psv.panel.show({\n id : IDS.DESCRIPTION,\n content: `${this.psv.config.caption ? `

${this.psv.config.caption}

` : ''}${this.psv.config.description}`,\n });\n }\n else {\n this.prop.mode = MODE_NOTIF;\n this.psv.notification.show({\n id : IDS.DESCRIPTION,\n content: this.psv.config.caption,\n });\n }\n }\n\n}\n","import download from '../icons/download.svg';\nimport { AbstractButton } from './AbstractButton';\n\n/**\n * @summary Navigation bar download button class\n * @extends PSV.buttons.AbstractButton\n * @memberof PSV.buttons\n */\nexport class DownloadButton extends AbstractButton {\n\n static id = 'download';\n static icon = download;\n\n /**\n * @param {PSV.components.Navbar} navbar\n */\n constructor(navbar) {\n super(navbar, 'psv-button--hover-scale psv-download-button', true);\n }\n\n /**\n * @override\n * @description Asks the browser to download the panorama source file\n */\n onClick() {\n const link = document.createElement('a');\n link.href = this.psv.config.downloadUrl || this.psv.config.panorama;\n link.download = link.href.split('/').pop();\n this.psv.container.appendChild(link);\n link.click();\n\n setTimeout(() => {\n this.psv.container.removeChild(link);\n }, 100);\n }\n\n /**\n * @override\n */\n refreshUi() {\n const supported = this.psv.adapter.constructor.supportsDownload || this.psv.config.downloadUrl;\n if (supported && !this.prop.visible) {\n this.show();\n }\n else if (!supported && this.prop.visible) {\n this.hide();\n }\n }\n\n}\n","import { EVENTS } from '../data/constants';\nimport fullscreenIn from '../icons/fullscreen-in.svg';\nimport fullscreenOut from '../icons/fullscreen-out.svg';\nimport { AbstractButton } from './AbstractButton';\n\n/**\n * @summary Navigation bar fullscreen button class\n * @extends PSV.buttons.AbstractButton\n * @memberof PSV.buttons\n */\nexport class FullscreenButton extends AbstractButton {\n\n static id = 'fullscreen';\n static icon = fullscreenIn;\n static iconActive = fullscreenOut;\n\n /**\n * @param {PSV.components.Navbar} navbar\n */\n constructor(navbar) {\n super(navbar, 'psv-button--hover-scale psv-fullscreen-button');\n\n this.psv.on(EVENTS.FULLSCREEN_UPDATED, this);\n }\n\n /**\n * @override\n */\n destroy() {\n this.psv.off(EVENTS.FULLSCREEN_UPDATED, this);\n\n super.destroy();\n }\n\n /**\n * Handle events\n * @param {Event} e\n * @private\n */\n handleEvent(e) {\n /* eslint-disable */\n switch (e.type) {\n // @formatter:off\n case EVENTS.FULLSCREEN_UPDATED: this.toggleActive(e.args[0]); break;\n // @formatter:on\n }\n /* eslint-enable */\n }\n\n /**\n * @override\n * @description Toggles fullscreen\n */\n onClick() {\n this.psv.toggleFullscreen();\n }\n\n}\n","import { EVENTS, IDS } from '../data/constants';\nimport menuIcon from '../icons/menu.svg';\nimport { dasherize, getClosest } from '../utils';\nimport { AbstractButton } from './AbstractButton';\n\n/**\n * @summary Navigation bar menu button class\n * @extends PSV.buttons.AbstractButton\n * @memberof PSV.buttons\n */\nexport class MenuButton extends AbstractButton {\n\n static id = 'menu';\n static icon = menuIcon;\n\n /**\n * @summary Property name added to buttons list\n * @type {string}\n * @constant\n */\n static BUTTON_DATA = 'psvButton';\n\n /**\n * @summary Menu template\n * @param {AbstractButton[]} buttons\n * @param {PSV.Viewer} psv\n * @param {string} dataKey\n * @returns {string}\n */\n static MENU_TEMPLATE = (buttons, psv, dataKey) => `\n
\n

${menuIcon} ${psv.config.lang.menu}

\n
    \n ${buttons.map(button => `\n
  • \n ${button.container.innerHTML}\n ${button.container.title}\n
  • \n `).join('')}\n
\n
\n`;\n\n /**\n * @param {PSV.components.Navbar} navbar\n */\n constructor(navbar) {\n super(navbar, 'psv-button--hover-scale psv-menu-button');\n\n this.psv.on(EVENTS.OPEN_PANEL, this);\n this.psv.on(EVENTS.CLOSE_PANEL, this);\n\n super.hide();\n }\n\n /**\n * @override\n */\n destroy() {\n this.psv.off(EVENTS.OPEN_PANEL, this);\n this.psv.off(EVENTS.CLOSE_PANEL, this);\n\n super.destroy();\n }\n\n /**\n * @summary Handles events\n * @param {Event} e\n * @private\n */\n handleEvent(e) {\n /* eslint-disable */\n switch (e.type) {\n // @formatter:off\n case EVENTS.OPEN_PANEL: this.toggleActive(e.args[0] === IDS.MENU); break;\n case EVENTS.CLOSE_PANEL: this.toggleActive(false); break;\n // @formatter:on\n }\n /* eslint-enable */\n }\n\n /**\n * @override\n */\n hide(refresh) {\n super.hide(refresh);\n this.__hideMenu();\n }\n\n /**\n * @override\n */\n show(refresh) {\n super.show(refresh);\n\n if (this.prop.active) {\n this.__showMenu();\n }\n }\n\n /**\n * @override\n * @description Toggles menu\n */\n onClick() {\n if (this.prop.active) {\n this.__hideMenu();\n }\n else {\n this.__showMenu();\n }\n }\n\n __showMenu() {\n this.psv.panel.show({\n id : IDS.MENU,\n content : MenuButton.MENU_TEMPLATE(this.parent.collapsed, this.psv, dasherize(MenuButton.BUTTON_DATA)),\n noMargin : true,\n clickHandler: (e) => {\n const li = e.target ? getClosest(e.target, 'li') : undefined;\n const buttonId = li ? li.dataset[MenuButton.BUTTON_DATA] : undefined;\n\n if (buttonId) {\n this.parent.getButton(buttonId).onClick();\n this.__hideMenu();\n }\n },\n });\n }\n\n __hideMenu() {\n this.psv.panel.hide(IDS.MENU);\n }\n\n}\n","/**\n * @summary Helper for pressable things (buttons, keyboard)\n * @description When the pressed thing goes up and was not pressed long enough, wait a bit more before execution\n * @private\n */\nexport class PressHandler {\n\n constructor(delay = 200) {\n this.delay = delay;\n this.time = 0;\n this.timeout = null;\n }\n\n down() {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n\n this.time = new Date().getTime();\n }\n\n up(cb) {\n if (!this.time) {\n return;\n }\n\n const elapsed = new Date().getTime() - this.time;\n if (elapsed < this.delay) {\n this.timeout = setTimeout(() => {\n cb();\n this.timeout = null;\n this.time = 0;\n }, this.delay);\n }\n else {\n cb();\n this.time = 0;\n }\n }\n\n}\n","import { KEY_CODES } from '../data/constants';\nimport { SYSTEM } from '../data/system';\nimport arrow from '../icons/arrow.svg';\nimport { PressHandler } from '../utils/PressHandler';\nimport { AbstractButton } from './AbstractButton';\n\nexport function getOrientedArrow(direction) {\n let angle = 0;\n switch (direction) {\n // @formatter:off\n case 'up': angle = 90; break;\n case 'right': angle = 180; break;\n case 'down': angle = -90; break;\n default: angle = 0; break;\n // @formatter:on\n }\n\n return arrow.replace('rotate(0', `rotate(${angle}`);\n}\n\n/**\n * @summary Navigation bar move button class\n * @extends PSV.buttons.AbstractButton\n * @memberof PSV.buttons\n */\nexport class AbstractMoveButton extends AbstractButton {\n\n static groupId = 'move';\n\n /**\n * @param {PSV.components.Navbar} navbar\n * @param {number} value\n */\n constructor(navbar, value) {\n super(navbar, 'psv-button--hover-scale psv-move-button');\n\n this.container.title = this.psv.config.lang.move;\n\n /**\n * @override\n * @property {{longitude: boolean, latitude: boolean}} value\n * @property {PressHandler} handler\n */\n this.prop = {\n ...this.prop,\n value : value,\n handler: new PressHandler(),\n };\n\n this.container.addEventListener('mousedown', this);\n this.container.addEventListener('keydown', this);\n this.container.addEventListener('keyup', this);\n this.psv.container.addEventListener('mouseup', this);\n this.psv.container.addEventListener('touchend', this);\n }\n\n /**\n * @override\n */\n destroy() {\n this.__onMouseUp();\n\n this.psv.container.removeEventListener('mouseup', this);\n this.psv.container.removeEventListener('touchend', this);\n\n super.destroy();\n }\n\n /**\n * @summary Handles events\n * @param {Event} e\n * @private\n */\n handleEvent(e) {\n /* eslint-disable */\n switch (e.type) {\n // @formatter:off\n case 'mousedown': this.__onMouseDown(); break;\n case 'mouseup': this.__onMouseUp(); break;\n case 'touchend': this.__onMouseUp(); break;\n case 'keydown': e.key === KEY_CODES.Enter && this.__onMouseDown(); break;\n case 'keyup': e.key === KEY_CODES.Enter && this.__onMouseUp(); break;\n // @formatter:on\n }\n /* eslint-enable */\n }\n\n /**\n * @override\n */\n isSupported() {\n return {\n initial: !SYSTEM.isTouchEnabled.initial,\n promise: SYSTEM.isTouchEnabled.promise.then(enabled => !enabled),\n };\n }\n\n /**\n * @override\n */\n onClick() {\n // nothing\n }\n\n /**\n * @private\n */\n __onMouseDown() {\n if (!this.prop.enabled) {\n return;\n }\n\n this.psv.__stopAll();\n this.psv.dynamics.position.roll(this.prop.value);\n this.prop.handler.down();\n }\n\n /**\n * @private\n */\n __onMouseUp() {\n if (!this.prop.enabled) {\n return;\n }\n\n this.prop.handler.up(() => {\n this.psv.dynamics.position.stop();\n this.psv.resetIdleTimer();\n });\n }\n\n}\n","import { AbstractMoveButton, getOrientedArrow } from './AbstractMoveButton';\n\n/**\n * @summary Navigation bar move down button class\n * @extends PSV.buttons.AbstractMoveButton\n * @memberof PSV.buttons\n */\nexport class MoveDownButton extends AbstractMoveButton {\n\n static id = 'moveDown';\n static icon = getOrientedArrow('down');\n\n /**\n * @param {PSV.components.Navbar} navbar\n */\n constructor(navbar) {\n super(navbar, { latitude: true });\n }\n\n}\n","import { AbstractMoveButton, getOrientedArrow } from './AbstractMoveButton';\n\n/**\n * @summary Navigation bar move left button class\n * @extends PSV.buttons.AbstractMoveButton\n * @memberof PSV.buttons\n */\nexport class MoveLeftButton extends AbstractMoveButton {\n\n static id = 'moveLeft';\n static icon = getOrientedArrow('left');\n\n /**\n * @param {PSV.components.Navbar} navbar\n */\n constructor(navbar) {\n super(navbar, { longitude: true });\n }\n\n}\n","import { AbstractMoveButton, getOrientedArrow } from './AbstractMoveButton';\n\n/**\n * @summary Navigation bar move right button class\n * @extends PSV.buttons.AbstractMoveButton\n * @memberof PSV.buttons\n */\nexport class MoveRightButton extends AbstractMoveButton {\n\n static id = 'moveRight';\n static icon = getOrientedArrow('right');\n\n /**\n * @param {PSV.components.Navbar} navbar\n */\n constructor(navbar) {\n super(navbar, { longitude: false });\n }\n\n}\n","import { AbstractMoveButton, getOrientedArrow } from './AbstractMoveButton';\n\n/**\n * @summary Navigation bar move up button class\n * @extends PSV.buttons.AbstractMoveButton\n * @memberof PSV.buttons\n */\nexport class MoveUpButton extends AbstractMoveButton {\n\n static id = 'moveUp';\n static icon = getOrientedArrow('up');\n\n /**\n * @param {PSV.components.Navbar} navbar\n */\n constructor(navbar) {\n super(navbar, { latitude: false });\n }\n\n}\n","import { KEY_CODES } from '../data/constants';\nimport { SYSTEM } from '../data/system';\nimport { PressHandler } from '../utils/PressHandler';\nimport { AbstractButton } from './AbstractButton';\n\n/**\n * @summary Navigation bar zoom button class\n * @extends PSV.buttons.AbstractButton\n * @memberof PSV.buttons\n */\nexport class AbstractZoomButton extends AbstractButton {\n\n static groupId = 'zoom';\n\n /**\n * @param {PSV.components.Navbar} navbar\n * @param {number} value\n */\n constructor(navbar, value) {\n super(navbar, 'psv-button--hover-scale psv-zoom-button');\n\n /**\n * @override\n * @property {boolean} value\n * @property {PressHandler} handler\n */\n this.prop = {\n ...this.prop,\n value : value,\n handler: new PressHandler(),\n };\n\n this.container.addEventListener('mousedown', this);\n this.container.addEventListener('keydown', this);\n this.container.addEventListener('keyup', this);\n this.psv.container.addEventListener('mouseup', this);\n this.psv.container.addEventListener('touchend', this);\n }\n\n /**\n * @override\n */\n destroy() {\n this.__onMouseUp();\n\n this.psv.container.removeEventListener('mouseup', this);\n this.psv.container.removeEventListener('touchend', this);\n\n super.destroy();\n }\n\n /**\n * @summary Handles events\n * @param {Event} e\n * @private\n */\n handleEvent(e) {\n /* eslint-disable */\n switch (e.type) {\n // @formatter:off\n case 'mousedown': this.__onMouseDown(); break;\n case 'mouseup': this.__onMouseUp(); break;\n case 'touchend': this.__onMouseUp(); break;\n case 'keydown': e.key === KEY_CODES.Enter && this.__onMouseDown(); break;\n case 'keyup': e.key === KEY_CODES.Enter && this.__onMouseUp(); break;\n // @formatter:on\n }\n /* eslint-enable */\n }\n\n /**\n * @override\n */\n isSupported() {\n return {\n initial: !SYSTEM.isTouchEnabled.initial,\n promise: SYSTEM.isTouchEnabled.promise.then(enabled => !enabled),\n };\n }\n\n /**\n * @override\n */\n onClick() {\n // nothing\n }\n\n /**\n * @private\n */\n __onMouseDown() {\n if (!this.prop.enabled) {\n return;\n }\n\n this.psv.dynamics.zoom.roll(this.prop.value);\n this.prop.handler.down();\n }\n\n /**\n * @private\n */\n __onMouseUp() {\n if (!this.prop.enabled) {\n return;\n }\n\n this.prop.handler.up(() => this.psv.dynamics.zoom.stop());\n }\n\n}\n","import { AbstractZoomButton } from './AbstractZoomButton';\nimport zoomIn from '../icons/zoom-in.svg';\n\n/**\n * @summary Navigation bar zoom-in button class\n * @extends PSV.buttons.AbstractZoomButton\n * @memberof PSV.buttons\n */\nexport class ZoomInButton extends AbstractZoomButton {\n\n static id = 'zoomIn';\n static icon = zoomIn;\n\n /**\n * @param {PSV.components.Navbar} navbar\n */\n constructor(navbar) {\n super(navbar, false);\n }\n\n}\n","import { AbstractZoomButton } from './AbstractZoomButton';\nimport zoomOut from '../icons/zoom-out.svg';\n\n/**\n * @summary Navigation bar zoom-out button class\n * @extends PSV.buttons.AbstractZoomButton\n * @memberof PSV.buttons\n */\nexport class ZoomOutButton extends AbstractZoomButton {\n\n static id = 'zoomOut';\n static icon = zoomOut;\n\n /**\n * @param {PSV.components.Navbar} navbar\n */\n constructor(navbar) {\n super(navbar, true);\n }\n\n}\n","import { EVENTS } from '../data/constants';\nimport { SYSTEM } from '../data/system';\nimport { getStyle, Slider } from '../utils';\nimport { AbstractButton } from './AbstractButton';\n\n/**\n * @summary Navigation bar zoom button class\n * @extends PSV.buttons.AbstractButton\n * @memberof PSV.buttons\n */\nexport class ZoomRangeButton extends AbstractButton {\n\n static id = 'zoomRange';\n static groupId = 'zoom';\n\n /**\n * @param {PSV.components.Navbar} navbar\n */\n constructor(navbar) {\n super(navbar, 'psv-zoom-range', false, false);\n\n /**\n * @override\n * @property {number} mediaMinWidth\n */\n this.prop = {\n ...this.prop,\n mediaMinWidth: 0,\n };\n\n /**\n * @member {HTMLElement}\n * @readonly\n * @private\n */\n this.zoomRange = document.createElement('div');\n this.zoomRange.className = 'psv-zoom-range-line';\n this.container.appendChild(this.zoomRange);\n\n /**\n * @member {HTMLElement}\n * @readonly\n * @private\n */\n this.zoomValue = document.createElement('div');\n this.zoomValue.className = 'psv-zoom-range-handle';\n this.zoomRange.appendChild(this.zoomValue);\n\n /**\n * @member {PSV.Slider}\n * @readonly\n * @private\n */\n this.slider = new Slider({\n container: this.container,\n direction: Slider.HORIZONTAL,\n onUpdate : e => this.__onSliderUpdate(e),\n });\n\n this.prop.mediaMinWidth = parseInt(getStyle(this.container, 'maxWidth'), 10);\n\n this.psv.on(EVENTS.ZOOM_UPDATED, this);\n if (this.psv.prop.ready) {\n this.__moveZoomValue(this.psv.getZoomLevel());\n }\n else {\n this.psv.once(EVENTS.READY, this);\n }\n\n this.refreshUi();\n }\n\n /**\n * @override\n */\n destroy() {\n this.slider.destroy();\n\n delete this.zoomRange;\n delete this.zoomValue;\n\n this.psv.off(EVENTS.ZOOM_UPDATED, this);\n this.psv.off(EVENTS.READY, this);\n\n super.destroy();\n }\n\n /**\n * @summary Handles events\n * @param {Event} e\n * @private\n */\n handleEvent(e) {\n /* eslint-disable */\n switch (e.type) {\n // @formatter:off\n case EVENTS.ZOOM_UPDATED: this.__moveZoomValue(e.args[0]); break;\n case EVENTS.READY: this.__moveZoomValue(this.psv.getZoomLevel()); break;\n // @formatter:on\n }\n /* eslint-enable */\n }\n\n /**\n * @override\n */\n isSupported() {\n return {\n initial: !SYSTEM.isTouchEnabled.initial,\n promise: SYSTEM.isTouchEnabled.promise.then(enabled => !enabled),\n };\n }\n\n /**\n * @override\n */\n refreshUi() {\n if (this.prop.supported) {\n if (this.psv.prop.size.width <= this.prop.mediaMinWidth && this.prop.visible) {\n this.hide();\n }\n else if (this.psv.prop.size.width > this.prop.mediaMinWidth && !this.prop.visible) {\n this.show();\n }\n }\n }\n\n /**\n * @override\n */\n onClick() {\n // nothing\n }\n\n /**\n * @summary Moves the zoom cursor\n * @param {number} level\n * @private\n */\n __moveZoomValue(level) {\n this.zoomValue.style.left = (level / 100 * this.zoomRange.offsetWidth - this.zoomValue.offsetWidth / 2) + 'px';\n }\n\n\n /**\n * @summary Zoom change\n * @private\n */\n __onSliderUpdate(e) {\n if (e.mousedown) {\n this.psv.zoom(e.value * 100);\n }\n }\n\n}\n","import { EventEmitter } from 'uevent';\n\n/**\n * @namespace PSV.plugins\n */\n\n/**\n * @summary Base plugins class\n * @memberof PSV.plugins\n * @abstract\n */\nexport class AbstractPlugin extends EventEmitter {\n\n /**\n * @summary Unique identifier of the plugin\n * @member {string}\n * @readonly\n * @static\n */\n static id = null;\n\n /**\n * @param {PSV.Viewer} psv\n */\n constructor(psv) {\n super();\n\n /**\n * @summary Reference to main controller\n * @type {PSV.Viewer}\n * @readonly\n */\n this.psv = psv;\n }\n\n /**\n * @summary Initializes the plugin\n * @package\n */\n init() {\n }\n\n /**\n * @summary Destroys the plugin\n * @package\n */\n destroy() {\n delete this.psv;\n }\n\n}\n","import { MathUtils } from 'three';\nimport { AbstractAdapter } from '../adapters/AbstractAdapter';\nimport { EquirectangularAdapter } from '../adapters/equirectangular';\nimport { AbstractPlugin } from '../plugins/AbstractPlugin';\nimport { PSVError } from '../PSVError';\nimport { clone, deepmerge, each, isNil, logWarn, parseAngle, parseSpeed, pluginInterop } from '../utils';\nimport { ACTIONS, KEY_CODES } from './constants';\n\n/**\n * @summary Default options\n * @type {PSV.Options}\n * @memberOf PSV\n * @constant\n */\nexport const DEFAULTS = {\n panorama : null,\n overlay : null,\n overlayOpacity : 1,\n container : null,\n adapter : null,\n plugins : [],\n caption : null,\n description : null,\n downloadUrl : null,\n loadingImg : null,\n loadingTxt : 'Loading...',\n size : null,\n fisheye : false,\n minFov : 30,\n maxFov : 90,\n defaultZoomLvl : 50,\n defaultLong : 0,\n defaultLat : 0,\n sphereCorrection : null,\n moveSpeed : 1,\n zoomSpeed : 1,\n autorotateDelay : null,\n autorotateIdle : false,\n autorotateSpeed : '2rpm',\n autorotateLat : null,\n autorotateZoomLvl : null,\n moveInertia : true,\n mousewheel : true,\n mousemove : true,\n mousewheelCtrlKey : false,\n touchmoveTwoFingers: false,\n useXmpData : true,\n panoData : null,\n requestHeaders : null,\n canvasBackground : '#000',\n withCredentials : false,\n navbar : [\n 'autorotate',\n 'zoom',\n 'move',\n 'download',\n 'description',\n 'caption',\n 'fullscreen',\n ],\n lang : {\n autorotate: 'Automatic rotation',\n zoom : 'Zoom',\n zoomOut : 'Zoom out',\n zoomIn : 'Zoom in',\n move : 'Move',\n download : 'Download',\n fullscreen: 'Fullscreen',\n menu : 'Menu',\n twoFingers: 'Use two fingers to navigate',\n ctrlZoom : 'Use ctrl + scroll to zoom the image',\n loadError : 'The panorama can\\'t be loaded',\n },\n keyboard : {\n [KEY_CODES.ArrowUp] : ACTIONS.ROTATE_LAT_UP,\n [KEY_CODES.ArrowDown] : ACTIONS.ROTATE_LAT_DOWN,\n [KEY_CODES.ArrowRight]: ACTIONS.ROTATE_LONG_RIGHT,\n [KEY_CODES.ArrowLeft] : ACTIONS.ROTATE_LONG_LEFT,\n [KEY_CODES.PageUp] : ACTIONS.ZOOM_IN,\n [KEY_CODES.PageDown] : ACTIONS.ZOOM_OUT,\n [KEY_CODES.Plus] : ACTIONS.ZOOM_IN,\n [KEY_CODES.Minus] : ACTIONS.ZOOM_OUT,\n [KEY_CODES.Space] : ACTIONS.TOGGLE_AUTOROTATE,\n },\n};\n\n/**\n * @summary List of unmodifiable options and their error messages\n * @private\n */\nexport const READONLY_OPTIONS = {\n panorama : 'Use setPanorama method to change the panorama',\n panoData : 'Use setPanorama method to change the panorama',\n container: 'Cannot change viewer container',\n adapter : 'Cannot change adapter',\n plugins : 'Cannot change plugins',\n};\n\n/**\n * @summary List of deprecated options and their warning messages\n * @private\n */\nexport const DEPRECATED_OPTIONS = {\n captureCursor: 'captureCursor is deprecated',\n};\n\n/**\n * @summary Parsers/validators for each option\n * @private\n */\nexport const CONFIG_PARSERS = {\n container : (container) => {\n if (!container) {\n throw new PSVError('No value given for container.');\n }\n return container;\n },\n adapter : (adapter) => {\n if (!adapter) {\n adapter = [EquirectangularAdapter];\n }\n else if (Array.isArray(adapter)) {\n adapter = [pluginInterop(adapter[0], AbstractAdapter), adapter[1]];\n }\n else {\n adapter = [pluginInterop(adapter, AbstractAdapter)];\n }\n if (!adapter[0]) {\n throw new PSVError('Un undefined value with given for adapter.');\n }\n return adapter;\n },\n overlayOpacity : (overlayOpacity) => {\n return MathUtils.clamp(overlayOpacity, 0, 1);\n },\n defaultLong : (defaultLong) => {\n // defaultLat is between 0 and PI\n return parseAngle(defaultLong);\n },\n defaultLat : (defaultLat) => {\n // defaultLat is between -PI/2 and PI/2\n return parseAngle(defaultLat, true);\n },\n defaultZoomLvl : (defaultZoomLvl) => {\n return MathUtils.clamp(defaultZoomLvl, 0, 100);\n },\n minFov : (minFov, config) => {\n // minFov and maxFov must be ordered\n if (config.maxFov < minFov) {\n logWarn('maxFov cannot be lower than minFov');\n minFov = config.maxFov;\n }\n // minFov between 1 and 179\n return MathUtils.clamp(minFov, 1, 179);\n },\n maxFov : (maxFov, config) => {\n // minFov and maxFov must be ordered\n if (maxFov < config.minFov) {\n maxFov = config.minFov;\n }\n // maxFov between 1 and 179\n return MathUtils.clamp(maxFov, 1, 179);\n },\n lang : (lang) => {\n if (Array.isArray(lang.twoFingers)) {\n logWarn('lang.twoFingers must not be an array');\n lang.twoFingers = lang.twoFingers[0];\n }\n return {\n ...DEFAULTS.lang,\n ...lang,\n };\n },\n keyboard : (keyboard) => {\n // keyboard=true becomes the default map\n if (keyboard === true) {\n return clone(DEFAULTS.keyboard);\n }\n return keyboard;\n },\n autorotateLat : (autorotateLat, config) => {\n // default autorotateLat is defaultLat\n if (autorotateLat === null) {\n return parseAngle(config.defaultLat, true);\n }\n // autorotateLat is between -PI/2 and PI/2\n else {\n return parseAngle(autorotateLat, true);\n }\n },\n autorotateZoomLvl: (autorotateZoomLvl) => {\n if (isNil(autorotateZoomLvl)) {\n return null;\n }\n else {\n return MathUtils.clamp(autorotateZoomLvl, 0, 100);\n }\n },\n autorotateSpeed : (autorotateSpeed) => {\n return parseSpeed(autorotateSpeed);\n },\n autorotateIdle : (autorotateIdle, config) => {\n if (autorotateIdle && isNil(config.autorotateDelay)) {\n logWarn('autorotateIdle requires a non null autorotateDelay');\n return false;\n }\n return autorotateIdle;\n },\n fisheye : (fisheye) => {\n // translate boolean fisheye to amount\n if (fisheye === true) {\n return 1;\n }\n else if (fisheye === false) {\n return 0;\n }\n return fisheye;\n },\n plugins : (plugins) => {\n return plugins\n .map((plugin) => {\n if (Array.isArray(plugin)) {\n plugin = [pluginInterop(plugin[0], AbstractPlugin), plugin[1]];\n }\n else {\n plugin = [pluginInterop(plugin, AbstractPlugin)];\n }\n if (!plugin[0]) {\n throw new PSVError('Un undefined value was given for plugins.');\n }\n return plugin;\n });\n },\n};\n\n/**\n * @summary Merge user config with default config and performs validation\n * @param {PSV.Options} options\n * @returns {PSV.Options}\n * @memberOf PSV\n * @private\n */\nexport function getConfig(options) {\n const tempConfig = clone(DEFAULTS);\n deepmerge(tempConfig, options);\n\n const config = {};\n\n each(tempConfig, (value, key) => {\n if (DEPRECATED_OPTIONS[key]) {\n logWarn(DEPRECATED_OPTIONS[key]);\n return;\n }\n\n if (!Object.prototype.hasOwnProperty.call(DEFAULTS, key)) {\n throw new PSVError(`Unknown option ${key}`);\n }\n\n if (CONFIG_PARSERS[key]) {\n config[key] = CONFIG_PARSERS[key](value, tempConfig);\n }\n else {\n config[key] = value;\n }\n });\n\n return config;\n}\n","import { DescriptionButton } from '../buttons/DescriptionButton';\nimport { AbstractComponent } from './AbstractComponent';\n\n/**\n * @summary Navbar caption class\n * @extends PSV.components.AbstractComponent\n * @memberof PSV.components\n */\nexport class NavbarCaption extends AbstractComponent {\n\n static id = 'caption';\n\n /**\n * @param {PSV.components.Navbar} navbar\n * @param {string} caption\n */\n constructor(navbar, caption) {\n super(navbar, 'psv-caption');\n\n /**\n * @override\n * @property {string} id\n * @property {boolean} collapsable\n * @property {number} width\n * @property {number} contentWidth - width of the caption content\n */\n this.prop = {\n ...this.prop,\n id : this.constructor.id,\n collapsable : false,\n width : 0,\n contentWidth: 0,\n };\n\n /**\n * @member {HTMLElement}\n * @readonly\n * @private\n */\n this.content = document.createElement('div');\n this.content.className = 'psv-caption-content';\n this.container.appendChild(this.content);\n\n this.setCaption(caption);\n }\n\n /**\n * @override\n */\n destroy() {\n delete this.content;\n\n super.destroy();\n }\n\n /**\n * @summary Sets the bar caption\n * @param {string} html\n */\n setCaption(html) {\n this.show();\n this.content.innerHTML = html;\n this.prop.contentWidth = html ? this.content.offsetWidth : 0;\n this.refreshUi();\n }\n\n /**\n * @summary Toggles content and icon depending on available space\n * @private\n */\n refreshUi() {\n this.toggle(this.container.offsetWidth >= this.prop.contentWidth);\n this.__refreshButton();\n }\n\n /**\n * @override\n */\n hide() {\n this.content.style.display = 'none';\n this.prop.visible = false;\n }\n\n /**\n * @override\n */\n show() {\n this.content.style.display = '';\n this.prop.visible = true;\n }\n\n /**\n * @private\n */\n __refreshButton() {\n this.psv.navbar.getButton(DescriptionButton.id, false)?.refreshUi(true);\n }\n\n}\n","import { AutorotateButton } from '../buttons/AutorotateButton';\nimport { CustomButton } from '../buttons/CustomButton';\nimport { DescriptionButton } from '../buttons/DescriptionButton';\nimport { DownloadButton } from '../buttons/DownloadButton';\nimport { FullscreenButton } from '../buttons/FullscreenButton';\nimport { MenuButton } from '../buttons/MenuButton';\nimport { MoveDownButton } from '../buttons/MoveDownButton';\nimport { MoveLeftButton } from '../buttons/MoveLeftButton';\nimport { MoveRightButton } from '../buttons/MoveRightButton';\nimport { MoveUpButton } from '../buttons/MoveUpButton';\nimport { ZoomInButton } from '../buttons/ZoomInButton';\nimport { ZoomOutButton } from '../buttons/ZoomOutButton';\nimport { ZoomRangeButton } from '../buttons/ZoomRangeButton';\nimport { DEFAULTS } from '../data/config';\nimport { PSVError } from '../PSVError';\nimport { clone, logWarn } from '../utils';\nimport { AbstractComponent } from './AbstractComponent';\nimport { NavbarCaption } from './NavbarCaption';\n\n/**\n * @summary List of available buttons\n * @type {Object>}\n * @private\n */\nconst AVAILABLE_BUTTONS = {};\n\n/**\n * @summary List of available buttons\n * @type {Object>>}\n * @private\n */\nconst AVAILABLE_GROUPS = {};\n\n/**\n * @summary Register a new button available for all viewers\n * @param {Class} button\n * @param {'start' | 'end' | '[id]:left' | '[id]:right'} [defaultPosition]\n * If provided the default configuration of the navbar will be modified.\n * @memberOf PSV\n */\nexport function registerButton(button, defaultPosition) {\n if (!button.id) {\n throw new PSVError('Button ID is required');\n }\n\n AVAILABLE_BUTTONS[button.id] = button;\n\n if (button.groupId) {\n AVAILABLE_GROUPS[button.groupId] = AVAILABLE_GROUPS[button.groupId] || [];\n AVAILABLE_GROUPS[button.groupId].push(button);\n }\n\n if (typeof defaultPosition === 'string') {\n switch (defaultPosition) {\n case 'start':\n DEFAULTS.navbar.unshift(button.id);\n break;\n case 'end':\n DEFAULTS.navbar.push(button.id);\n break;\n default:\n const [id, pos] = defaultPosition.split(':');\n DEFAULTS.navbar.splice(DEFAULTS.navbar.indexOf(id) + (pos === 'right' ? 1 : 0), 0, button.id);\n }\n }\n}\n\n[\n AutorotateButton,\n ZoomOutButton,\n ZoomRangeButton,\n ZoomInButton,\n DescriptionButton,\n DownloadButton,\n FullscreenButton,\n MoveLeftButton,\n MoveRightButton,\n MoveUpButton,\n MoveDownButton,\n].forEach(registerButton);\n\n/**\n * @summary Navigation bar component\n * @extends PSV.components.AbstractComponent\n * @memberof PSV.components\n */\nexport class Navbar extends AbstractComponent {\n\n /**\n * @param {PSV.Viewer} psv\n */\n constructor(psv) {\n super(psv, 'psv-navbar psv--capture-event');\n\n /**\n * @summary List of buttons of the navbar\n * @member {PSV.buttons.AbstractButton[]}\n * @override\n */\n this.children = [];\n\n /**\n * @summary List of collapsed buttons\n * @member {PSV.buttons.AbstractButton[]}\n * @private\n */\n this.collapsed = [];\n }\n\n /**\n * @summary Change the buttons visible on the navbar\n * @param {string|Array} buttons\n * @throws {PSV.PSVError} when a button is unknown\n */\n setButtons(buttons) {\n this.children.slice().forEach(item => item.destroy());\n this.children.length = 0;\n\n const cleanedButtons = this.__cleanButtons(buttons);\n\n // force description button if caption is present (used on narrow screens)\n if (cleanedButtons.indexOf(NavbarCaption.id) !== -1 && cleanedButtons.indexOf(DescriptionButton.id) === -1) {\n cleanedButtons.splice(cleanedButtons.indexOf(NavbarCaption.id), 0, DescriptionButton.id);\n }\n\n /* eslint-disable no-new */\n cleanedButtons.forEach((button) => {\n if (typeof button === 'object') {\n new CustomButton(this, button);\n }\n else if (AVAILABLE_BUTTONS[button]) {\n new AVAILABLE_BUTTONS[button](this);\n }\n else if (AVAILABLE_GROUPS[button]) {\n AVAILABLE_GROUPS[button].forEach(buttonCtor => new buttonCtor(this)); // eslint-disable-line new-cap\n }\n else if (button === NavbarCaption.id) {\n new NavbarCaption(this, this.psv.config.caption);\n }\n else {\n throw new PSVError('Unknown button ' + button);\n }\n });\n\n new MenuButton(this);\n /* eslint-enable no-new */\n\n this.children.forEach((item) => {\n if (typeof item.checkSupported === 'function') {\n item.checkSupported();\n }\n });\n }\n\n /**\n * @summary Sets the bar caption\n * @param {string} html\n */\n setCaption(html) {\n const caption = this.getButton(NavbarCaption.id, false);\n caption?.setCaption(html);\n }\n\n /**\n * @summary Returns a button by its identifier\n * @param {string} id\n * @param {boolean} [warnNotFound=true]\n * @returns {PSV.buttons.AbstractButton}\n */\n getButton(id, warnNotFound = true) {\n let button = null;\n\n this.children.some((item) => {\n if (item.prop.id === id) {\n button = item;\n return true;\n }\n else {\n return false;\n }\n });\n\n if (!button && warnNotFound) {\n logWarn(`button \"${id}\" not found in the navbar`);\n }\n\n return button;\n }\n\n /**\n * @summary Shows the navbar\n */\n show() {\n this.container.classList.add('psv-navbar--open');\n this.prop.visible = true;\n }\n\n /**\n * @summary Hides the navbar\n */\n hide() {\n this.container.classList.remove('psv-navbar--open');\n this.prop.visible = false;\n }\n\n /**\n * @override\n */\n refreshUi() {\n super.refreshUi();\n\n if (this.psv.prop.uiRefresh === true) {\n const availableWidth = this.container.offsetWidth;\n\n let totalWidth = 0;\n const visibleButtons = [];\n const collapsableButtons = [];\n\n this.children.forEach((item) => {\n if (item.prop.visible) {\n totalWidth += item.prop.width;\n visibleButtons.push(item);\n if (item.prop.collapsable) {\n collapsableButtons.push(item);\n }\n }\n });\n\n if (!visibleButtons.length) {\n return;\n }\n\n if (availableWidth < totalWidth && collapsableButtons.length > 0) {\n collapsableButtons.forEach(item => item.collapse());\n this.collapsed = collapsableButtons;\n\n this.getButton(MenuButton.id).show(false);\n }\n else if (availableWidth >= totalWidth && this.collapsed.length > 0) {\n this.collapsed.forEach(item => item.uncollapse());\n this.collapsed = [];\n\n this.getButton(MenuButton.id).hide(false);\n }\n\n const caption = this.getButton(NavbarCaption.id, false);\n if (caption) {\n caption.refreshUi();\n }\n }\n }\n\n /**\n * @summary Ensure the buttons configuration is correct\n * @private\n */\n __cleanButtons(buttons) {\n // true becomes the default array\n if (buttons === true) {\n return clone(DEFAULTS.navbar);\n }\n // can be a space or coma separated list\n else if (typeof buttons === 'string') {\n return buttons.split(/[ ,]/);\n }\n else {\n return buttons || [];\n }\n }\n\n}\n","import { MathUtils } from 'three';\nimport { EVENTS } from '../data/constants';\nimport { SYSTEM } from '../data/system';\nimport { getStyle } from '../utils';\nimport { AbstractComponent } from './AbstractComponent';\n\n/**\n * @summary Loader component\n * @extends PSV.components.AbstractComponent\n * @memberof PSV.components\n */\nexport class Loader extends AbstractComponent {\n\n /**\n * @param {PSV.Viewer} psv\n */\n constructor(psv) {\n super(psv, 'psv-loader-container');\n\n /**\n * @summary Inner container for vertical center\n * @member {HTMLElement}\n * @readonly\n * @private\n */\n this.loader = document.createElement('div');\n this.loader.className = 'psv-loader';\n this.container.appendChild(this.loader);\n\n /**\n * @summary Animation canvas\n * @member {HTMLCanvasElement}\n * @readonly\n * @private\n */\n this.canvas = document.createElement('canvas');\n this.canvas.className = 'psv-loader-canvas';\n\n this.canvas.width = this.loader.clientWidth * SYSTEM.pixelRatio;\n this.canvas.height = this.loader.clientWidth * SYSTEM.pixelRatio;\n this.loader.appendChild(this.canvas);\n\n /**\n * @override\n * @property {number} thickness\n * @property {string} current\n */\n this.prop = {\n ...this.prop,\n tickness: (this.loader.offsetWidth - this.loader.clientWidth) / 2 * SYSTEM.pixelRatio,\n current : null,\n };\n\n this.refreshUi();\n this.hide();\n }\n\n /**\n * @override\n */\n destroy() {\n delete this.loader;\n delete this.canvas;\n\n super.destroy();\n }\n\n /**\n * @override\n */\n refreshUi() {\n if (this.prop.current !== (this.psv.config.loadingImg || this.psv.config.loadingTxt)) {\n if (this.prop.current) {\n this.loader.removeChild(this.loader.lastChild);\n }\n\n let inner;\n if (this.psv.config.loadingImg) {\n inner = document.createElement('img');\n inner.className = 'psv-loader-image';\n inner.src = this.psv.config.loadingImg;\n }\n else if (this.psv.config.loadingTxt) {\n inner = document.createElement('div');\n inner.className = 'psv-loader-text';\n inner.innerHTML = this.psv.config.loadingTxt;\n }\n if (inner) {\n const size = Math.round(Math.sqrt(2 * Math.pow((this.canvas.width / 2 - this.prop.tickness / 2) / SYSTEM.pixelRatio, 2)));\n inner.style.maxWidth = size + 'px';\n inner.style.maxHeight = size + 'px';\n this.loader.appendChild(inner);\n }\n\n this.prop.current = this.psv.config.loadingImg || this.psv.config.loadingTxt;\n }\n }\n\n /**\n * @summary Sets the loader progression\n * @param {number} value - from 0 to 100\n */\n setProgress(value) {\n const context = this.canvas.getContext('2d');\n\n context.clearRect(0, 0, this.canvas.width, this.canvas.height);\n\n context.lineWidth = this.prop.tickness;\n context.strokeStyle = getStyle(this.loader, 'color');\n\n context.beginPath();\n context.arc(\n this.canvas.width / 2, this.canvas.height / 2,\n this.canvas.width / 2 - this.prop.tickness / 2,\n -Math.PI / 2, MathUtils.clamp(value, 0, 100) / 100 * 2 * Math.PI - Math.PI / 2\n );\n context.stroke();\n\n this.psv.trigger(EVENTS.LOAD_PROGRESS, Math.round(value));\n }\n\n}\n","import { EVENTS } from '../data/constants';\nimport { PSVError } from '../PSVError';\nimport { AbstractComponent } from './AbstractComponent';\n\n/**\n * @summary Notification component\n * @extends PSV.components.AbstractComponent\n * @memberof PSV.components\n */\nexport class Notification extends AbstractComponent {\n\n /**\n * @param {PSV.Viewer} psv\n */\n constructor(psv) {\n super(psv, 'psv-notification');\n\n /**\n * @override\n * @property {*} timeout\n */\n this.prop = {\n ...this.prop,\n visible : false,\n contentId: undefined,\n timeout : null,\n };\n\n /**\n * Notification content\n * @member {HTMLElement}\n * @readonly\n * @private\n */\n this.content = document.createElement('div');\n this.content.className = 'psv-notification-content';\n this.container.appendChild(this.content);\n\n this.content.addEventListener('click', () => this.hide());\n }\n\n /**\n * @override\n */\n destroy() {\n delete this.content;\n\n super.destroy();\n }\n\n /**\n * @override\n * @param {string} [id]\n */\n isVisible(id) {\n return this.prop.visible && (!id || !this.prop.contentId || this.prop.contentId === id);\n }\n\n /**\n * @override\n * @summary This method is not supported\n * @throws {PSV.PSVError} always\n */\n toggle() {\n throw new PSVError('Notification cannot be toggled');\n }\n\n /**\n * @summary Displays a notification on the viewer\n * @param {Object|string} config\n * @param {string} [config.id] - unique identifier to use with \"hide\"\n * @param {string} config.content\n * @param {number} [config.timeout]\n * @fires PSV.show-notification\n *\n * @example\n * viewer.showNotification({ content: 'Hello world', timeout: 5000 })\n * @example\n * viewer.showNotification('Hello world')\n */\n show(config) {\n if (this.prop.timeout) {\n clearTimeout(this.prop.timeout);\n this.prop.timeout = null;\n }\n\n if (typeof config === 'string') {\n config = { content: config };\n }\n\n this.prop.contentId = config.id;\n this.content.innerHTML = config.content;\n\n this.container.classList.add('psv-notification--visible');\n this.prop.visible = true;\n\n this.psv.trigger(EVENTS.SHOW_NOTIFICATION, config.id);\n\n if (config.timeout) {\n this.prop.timeout = setTimeout(() => this.hide(config.id), config.timeout);\n }\n }\n\n /**\n * @summary Hides the notification\n * @param {string} [id]\n * @fires PSV.hide-notification\n */\n hide(id) {\n if (this.isVisible(id)) {\n const contentId = this.prop.contentId;\n\n this.container.classList.remove('psv-notification--visible');\n this.prop.visible = false;\n\n this.prop.contentId = undefined;\n\n this.psv.trigger(EVENTS.HIDE_NOTIFICATION, contentId);\n }\n }\n\n}\n","import { EVENTS, KEY_CODES } from '../data/constants';\nimport { PSVError } from '../PSVError';\nimport { AbstractComponent } from './AbstractComponent';\n\n/**\n * @summary Overlay component\n * @extends PSV.components.AbstractComponent\n * @memberof PSV.components\n */\nexport class Overlay extends AbstractComponent {\n\n /**\n * @param {PSV.Viewer} psv\n */\n constructor(psv) {\n super(psv, 'psv-overlay');\n\n /**\n * @override\n * @property {string} contentId\n * @property {boolean} dissmisable\n */\n this.prop = {\n ...this.prop,\n contentId : undefined,\n dissmisable: true,\n };\n\n /**\n * Image container\n * @member {HTMLElement}\n * @readonly\n * @private\n */\n this.image = document.createElement('div');\n this.image.className = 'psv-overlay-image';\n this.container.appendChild(this.image);\n\n /**\n * Text container\n * @member {HTMLElement}\n * @readonly\n * @private\n */\n this.text = document.createElement('div');\n this.text.className = 'psv-overlay-text';\n this.container.appendChild(this.text);\n\n /**\n * Subtext container\n * @member {HTMLElement}\n * @readonly\n * @private\n */\n this.subtext = document.createElement('div');\n this.subtext.className = 'psv-overlay-subtext';\n this.container.appendChild(this.subtext);\n\n this.psv.on(EVENTS.CLICK, this);\n this.psv.on(EVENTS.KEY_PRESS, this);\n\n super.hide();\n }\n\n /**\n * @override\n */\n destroy() {\n this.psv.off(EVENTS.CLICK, this);\n this.psv.off(EVENTS.KEY_PRESS, this);\n\n delete this.image;\n delete this.text;\n delete this.subtext;\n\n super.destroy();\n }\n\n /**\n * @summary Handles events\n * @param {Event} e\n * @private\n */\n handleEvent(e) {\n /* eslint-disable */\n switch (e.type) {\n case EVENTS.CLICK:\n if (this.isVisible() && this.prop.dissmisable) {\n this.hide();\n e.stopPropagation();\n }\n break;\n case EVENTS.KEY_PRESS:\n if (this.isVisible() && this.prop.dissmisable && e.args[0] === KEY_CODES.Escape) {\n this.hide();\n e.preventDefault();\n }\n break;\n }\n /* eslint-enable */\n }\n\n /**\n * @override\n * @param {string} [id]\n */\n isVisible(id) {\n return this.prop.visible && (!id || !this.prop.contentId || this.prop.contentId === id);\n }\n\n /**\n * @override\n * @summary This method is not supported\n * @throws {PSV.PSVError} always\n */\n toggle() {\n throw new PSVError('Overlay cannot be toggled');\n }\n\n /**\n * @summary Displays an overlay on the viewer\n * @param {Object|string} config\n * @param {string} [config.id] - unique identifier to use with \"hide\"\n * @param {string} config.image - SVG image/icon displayed above the text\n * @param {string} config.text - main message\n * @param {string} [config.subtext] - secondary message\n * @param {boolean} [config.dissmisable=true] - if the user can hide the overlay by clicking\n * @fires PSV.show-overlay\n */\n show(config) {\n if (typeof config === 'string') {\n config = { text: config };\n }\n\n this.prop.contentId = config.id;\n this.prop.dissmisable = config.dissmisable !== false;\n this.image.innerHTML = config.image || '';\n this.text.innerHTML = config.text || '';\n this.subtext.innerHTML = config.subtext || '';\n\n super.show();\n\n this.psv.trigger(EVENTS.SHOW_OVERLAY, config.id);\n }\n\n /**\n * @summary Hides the overlay\n * @param {string} [id]\n * @fires PSV.hide-overlay\n */\n hide(id) {\n if (this.isVisible(id)) {\n const contentId = this.prop.contentId;\n\n super.hide();\n\n this.prop.contentId = undefined;\n\n this.psv.trigger(EVENTS.HIDE_OVERLAY, contentId);\n }\n }\n\n}\n","import { EVENTS, KEY_CODES } from '../data/constants';\nimport { SYSTEM } from '../data/system';\nimport { PSVError } from '../PSVError';\nimport { toggleClass } from '../utils';\nimport { AbstractComponent } from './AbstractComponent';\n\n/**\n * @summary Minimum width of the panel\n * @type {number}\n * @constant\n * @private\n */\nconst PANEL_MIN_WIDTH = 200;\n\n/**\n * @summary Panel component\n * @extends PSV.components.AbstractComponent\n * @memberof PSV.components\n */\nexport class Panel extends AbstractComponent {\n\n /**\n * @param {PSV.Viewer} psv\n */\n constructor(psv) {\n super(psv, 'psv-panel psv--capture-event');\n\n /**\n * @override\n * @property {string} contentId\n * @property {number} mouseX\n * @property {number} mouseY\n * @property {boolean} mousedown\n * @property {function} clickHandler\n * @property {function} keyHandler\n */\n this.prop = {\n ...this.prop,\n visible : false,\n contentId : undefined,\n mouseX : 0,\n mouseY : 0,\n mousedown : false,\n clickHandler: null,\n keyHandler : null,\n width : {},\n };\n\n const resizer = document.createElement('div');\n resizer.className = 'psv-panel-resizer';\n this.container.appendChild(resizer);\n\n const closeBtn = document.createElement('div');\n closeBtn.className = 'psv-panel-close-button';\n this.container.appendChild(closeBtn);\n\n /**\n * @summary Content container\n * @member {HTMLElement}\n * @readonly\n * @private\n */\n this.content = document.createElement('div');\n this.content.className = 'psv-panel-content';\n this.container.appendChild(this.content);\n\n // Stop wheel event bubbling from panel\n this.container.addEventListener(SYSTEM.mouseWheelEvent, e => e.stopPropagation());\n\n closeBtn.addEventListener('click', () => this.hide());\n\n // Event for panel resizing + stop bubling\n resizer.addEventListener('mousedown', this);\n resizer.addEventListener('touchstart', this);\n this.psv.container.addEventListener('mouseup', this);\n this.psv.container.addEventListener('touchend', this);\n this.psv.container.addEventListener('mousemove', this);\n this.psv.container.addEventListener('touchmove', this);\n\n this.psv.on(EVENTS.KEY_PRESS, this);\n }\n\n /**\n * @override\n */\n destroy() {\n this.psv.off(EVENTS.KEY_PRESS, this);\n\n this.psv.container.removeEventListener('mousemove', this);\n this.psv.container.removeEventListener('touchmove', this);\n this.psv.container.removeEventListener('mouseup', this);\n this.psv.container.removeEventListener('touchend', this);\n\n delete this.prop;\n delete this.content;\n\n super.destroy();\n }\n\n /**\n * @summary Handles events\n * @param {Event} e\n * @private\n */\n handleEvent(e) {\n /* eslint-disable */\n switch (e.type) {\n // @formatter:off\n case 'mousedown': this.__onMouseDown(e); break;\n case 'touchstart': this.__onTouchStart(e); break;\n case 'mousemove': this.__onMouseMove(e); break;\n case 'touchmove': this.__onTouchMove(e); break;\n case 'mouseup': this.__onMouseUp(e); break;\n case 'touchend': this.__onMouseUp(e); break;\n case EVENTS.KEY_PRESS:\n if (this.isVisible() && e.args[0] === KEY_CODES.Escape) {\n this.hide();\n e.preventDefault();\n }\n break;\n // @formatter:on\n }\n /* eslint-enable */\n }\n\n /**\n * @override\n * @param {string} [id]\n */\n isVisible(id) {\n return this.prop.visible && (!id || !this.prop.contentId || this.prop.contentId === id);\n }\n\n /**\n * @override\n * @summary This method is not supported\n * @throws {PSV.PSVError} always\n */\n toggle() {\n throw new PSVError('Panel cannot be toggled');\n }\n\n /**\n * @summary Shows the panel\n * @param {string|Object} config\n * @param {string} [config.id] - unique identifier to use with \"hide\" and to store the user desired width\n * @param {string} config.content - HTML content of the panel\n * @param {boolean} [config.noMargin=false] - remove the default margins\n * @param {string} [config.width] - initial width\n * @param {Function} [config.clickHandler] - called when the user clicks inside the panel or presses the Enter key while an element focused\n * @fires PSV.open-panel\n */\n show(config) {\n const wasVisible = this.isVisible(config.id);\n\n if (typeof config === 'string') {\n config = { content: config };\n }\n\n this.prop.contentId = config.id;\n this.prop.visible = true;\n\n if (this.prop.clickHandler) {\n this.content.removeEventListener('click', this.prop.clickHandler);\n this.content.removeEventListener('keydown', this.prop.keyHandler);\n this.prop.clickHandler = null;\n this.prop.keyHandler = null;\n }\n\n if (config.id && this.prop.width[config.id]) {\n this.container.style.width = this.prop.width[config.id];\n }\n else if (config.width) {\n this.container.style.width = config.width;\n }\n else {\n this.container.style.width = null;\n }\n\n this.content.innerHTML = config.content;\n this.content.scrollTop = 0;\n this.container.classList.add('psv-panel--open');\n\n toggleClass(this.content, 'psv-panel-content--no-margin', config.noMargin === true);\n\n if (config.clickHandler) {\n this.prop.clickHandler = config.clickHandler;\n this.prop.keyHandler = (e) => {\n if (e.key === KEY_CODES.Enter) {\n config.clickHandler(e);\n }\n };\n this.content.addEventListener('click', this.prop.clickHandler);\n this.content.addEventListener('keydown', this.prop.keyHandler);\n\n // focus the first element if possible, after animation ends\n if (!wasVisible) {\n setTimeout(() => {\n this.content.querySelector('a,button,[tabindex]')?.focus();\n }, 300);\n }\n }\n\n this.psv.trigger(EVENTS.OPEN_PANEL, config.id);\n }\n\n /**\n * @summary Hides the panel\n * @param {string} [id]\n * @fires PSV.close-panel\n */\n hide(id) {\n if (this.isVisible(id)) {\n const contentId = this.prop.contentId;\n\n this.prop.visible = false;\n this.prop.contentId = undefined;\n\n this.content.innerHTML = null;\n this.container.classList.remove('psv-panel--open');\n\n if (this.prop.clickHandler) {\n this.content.removeEventListener('click', this.prop.clickHandler);\n this.prop.clickHandler = null;\n }\n\n this.psv.trigger(EVENTS.CLOSE_PANEL, contentId);\n }\n }\n\n /**\n * @summary Handles mouse down events\n * @param {MouseEvent} evt\n * @private\n */\n __onMouseDown(evt) {\n evt.stopPropagation();\n this.__startResize(evt);\n }\n\n /**\n * @summary Handles touch events\n * @param {TouchEvent} evt\n * @private\n */\n __onTouchStart(evt) {\n evt.stopPropagation();\n this.__startResize(evt.changedTouches[0]);\n }\n\n /**\n * @summary Handles mouse up events\n * @param {MouseEvent} evt\n * @private\n */\n __onMouseUp(evt) {\n if (this.prop.mousedown) {\n evt.stopPropagation();\n this.prop.mousedown = false;\n this.content.classList.remove('psv-panel-content--no-interaction');\n }\n }\n\n /**\n * @summary Handles mouse move events\n * @param {MouseEvent} evt\n * @private\n */\n __onMouseMove(evt) {\n if (this.prop.mousedown) {\n evt.stopPropagation();\n this.__resize(evt);\n }\n }\n\n /**\n * @summary Handles touch move events\n * @param {TouchEvent} evt\n * @private\n */\n __onTouchMove(evt) {\n if (this.prop.mousedown) {\n this.__resize(evt.touches[0]);\n }\n }\n\n /**\n * @summary Initializes the panel resize\n * @param {MouseEvent|Touch} evt\n * @private\n */\n __startResize(evt) {\n this.prop.mouseX = evt.clientX;\n this.prop.mouseY = evt.clientY;\n this.prop.mousedown = true;\n this.content.classList.add('psv-panel-content--no-interaction');\n }\n\n /**\n * @summary Resizes the panel\n * @param {MouseEvent|Touch} evt\n * @private\n */\n __resize(evt) {\n const x = evt.clientX;\n const y = evt.clientY;\n const width = Math.max(PANEL_MIN_WIDTH, this.container.offsetWidth - (x - this.prop.mouseX)) + 'px';\n\n if (this.prop.contentId) {\n this.prop.width[this.prop.contentId] = width;\n }\n\n this.container.style.width = width;\n\n this.prop.mouseX = x;\n this.prop.mouseY = y;\n }\n\n}\n","/**\n * @namespace PSV.services\n */\n\n/**\n * @summary Base services class\n * @memberof PSV.services\n * @abstract\n */\nexport class AbstractService {\n\n /**\n * @param {PSV.Viewer} psv\n */\n constructor(psv) {\n /**\n * @summary Reference to main controller\n * @type {PSV.Viewer}\n * @readonly\n */\n this.psv = psv;\n\n /**\n * @summary Configuration holder\n * @type {PSV.Options}\n * @readonly\n */\n this.config = psv.config;\n\n /**\n * @summary Properties holder\n * @type {Object}\n * @readonly\n */\n this.prop = psv.prop;\n }\n\n /**\n * @summary Destroys the service\n */\n destroy() {\n delete this.psv;\n delete this.config;\n delete this.prop;\n }\n\n}\n","import { Euler, MathUtils, Vector2, Vector3 } from 'three';\nimport { MESH_USER_DATA, SPHERE_RADIUS } from '../data/constants';\nimport { PSVError } from '../PSVError';\nimport { applyEulerInverse, parseAngle, parseSpeed } from '../utils';\nimport { AbstractService } from './AbstractService';\n\nconst vector2 = new Vector2();\nconst vector3 = new Vector3();\nconst eulerZero = new Euler(0, 0, 0, 'ZXY');\n\n/**\n * @summary Collections of data converters for the current viewer\n * @extends PSV.services.AbstractService\n * @memberof PSV.services\n */\nexport class DataHelper extends AbstractService {\n\n /**\n * @param {PSV.Viewer} psv\n */\n constructor(psv) {\n super(psv);\n }\n\n /**\n * @summary Converts vertical FOV to zoom level\n * @param {number} fov\n * @returns {number}\n */\n fovToZoomLevel(fov) {\n const temp = Math.round((fov - this.config.minFov) / (this.config.maxFov - this.config.minFov) * 100);\n return temp - 2 * (temp - 50);\n }\n\n /**\n * @summary Converts zoom level to vertical FOV\n * @param {number} level\n * @returns {number}\n */\n zoomLevelToFov(level) {\n return this.config.maxFov + (level / 100) * (this.config.minFov - this.config.maxFov);\n }\n\n /**\n * @summary Convert vertical FOV to horizontal FOV\n * @param {number} vFov\n * @returns {number}\n */\n vFovToHFov(vFov) {\n return MathUtils.radToDeg(2 * Math.atan(Math.tan(MathUtils.degToRad(vFov) / 2) * this.prop.aspect));\n }\n\n /**\n * @summary Converts a speed into a duration from current position to a new position\n * @param {string|number} value\n * @param {number} angle\n * @returns {number}\n */\n speedToDuration(value, angle) {\n if (!value || typeof value !== 'number') {\n // desired radial speed\n const speed = value ? parseSpeed(value) : this.config.autorotateSpeed;\n // compute duration\n return angle / Math.abs(speed) * 1000;\n }\n else {\n return Math.abs(value);\n }\n }\n\n /**\n * @summary Converts pixel texture coordinates to spherical radians coordinates\n * @param {PSV.Point} point\n * @returns {PSV.Position}\n * @throws {PSV.PSVError} when the current adapter does not support texture coordinates\n */\n textureCoordsToSphericalCoords(point) {\n const panoData = this.prop.panoData;\n if (!panoData) {\n throw new PSVError('Current adapter does not support texture coordinates.');\n }\n\n const relativeX = (point.x + panoData.croppedX) / panoData.fullWidth * Math.PI * 2;\n const relativeY = (point.y + panoData.croppedY) / panoData.fullHeight * Math.PI;\n\n const result = {\n longitude: relativeX >= Math.PI ? relativeX - Math.PI : relativeX + Math.PI,\n latitude : Math.PI / 2 - relativeY,\n };\n\n // Apply panoData pose and sphereCorrection\n if (!eulerZero.equals(this.psv.renderer.mesh.rotation) || !eulerZero.equals(this.psv.renderer.meshContainer.rotation)) {\n this.sphericalCoordsToVector3(result, vector3);\n vector3.applyEuler(this.psv.renderer.mesh.rotation);\n vector3.applyEuler(this.psv.renderer.meshContainer.rotation);\n return this.vector3ToSphericalCoords(vector3);\n }\n else {\n return result;\n }\n }\n\n /**\n * @summary Converts spherical radians coordinates to pixel texture coordinates\n * @param {PSV.Position} position\n * @returns {PSV.Point}\n * @throws {PSV.PSVError} when the current adapter does not support texture coordinates\n */\n sphericalCoordsToTextureCoords(position) {\n const panoData = this.prop.panoData;\n if (!panoData) {\n throw new PSVError('Current adapter does not support texture coordinates.');\n }\n\n // Apply panoData pose and sphereCorrection\n if (!eulerZero.equals(this.psv.renderer.mesh.rotation) || !eulerZero.equals(this.psv.renderer.meshContainer.rotation)) {\n this.sphericalCoordsToVector3(position, vector3);\n applyEulerInverse(vector3, this.psv.renderer.meshContainer.rotation);\n applyEulerInverse(vector3, this.psv.renderer.mesh.rotation);\n position = this.vector3ToSphericalCoords(vector3);\n }\n\n const relativeLong = position.longitude / Math.PI / 2 * panoData.fullWidth;\n const relativeLat = position.latitude / Math.PI * panoData.fullHeight;\n\n return {\n x: Math.round(position.longitude < Math.PI ? relativeLong + panoData.fullWidth / 2 : relativeLong - panoData.fullWidth / 2) - panoData.croppedX,\n y: Math.round(panoData.fullHeight / 2 - relativeLat) - panoData.croppedY,\n };\n }\n\n /**\n * @summary Converts spherical radians coordinates to a THREE.Vector3\n * @param {PSV.Position} position\n * @param {external:THREE.Vector3} [vector]\n * @returns {external:THREE.Vector3}\n */\n sphericalCoordsToVector3(position, vector) {\n if (!vector) {\n vector = new Vector3();\n }\n vector.x = SPHERE_RADIUS * -Math.cos(position.latitude) * Math.sin(position.longitude);\n vector.y = SPHERE_RADIUS * Math.sin(position.latitude);\n vector.z = SPHERE_RADIUS * Math.cos(position.latitude) * Math.cos(position.longitude);\n return vector;\n }\n\n /**\n * @summary Converts a THREE.Vector3 to spherical radians coordinates\n * @param {external:THREE.Vector3} vector\n * @returns {PSV.Position}\n */\n vector3ToSphericalCoords(vector) {\n const phi = Math.acos(vector.y / Math.sqrt(vector.x * vector.x + vector.y * vector.y + vector.z * vector.z));\n const theta = Math.atan2(vector.x, vector.z);\n\n return {\n longitude: theta < 0 ? -theta : Math.PI * 2 - theta,\n latitude : Math.PI / 2 - phi,\n };\n }\n\n /**\n * @summary Converts position on the viewer to a THREE.Vector3\n * @param {PSV.Point} viewerPoint\n * @returns {external:THREE.Vector3}\n */\n viewerCoordsToVector3(viewerPoint) {\n const sphereIntersect = this.getIntersections(viewerPoint).filter(i => i.object.userData[MESH_USER_DATA]);\n\n if (sphereIntersect.length) {\n return sphereIntersect[0].point;\n }\n else {\n return null;\n }\n }\n\n /**\n * @summary Converts a THREE.Vector3 to position on the viewer\n * @param {external:THREE.Vector3} vector\n * @returns {PSV.Point}\n */\n vector3ToViewerCoords(vector) {\n const vectorClone = vector.clone();\n vectorClone.project(this.psv.renderer.camera);\n\n return {\n x: Math.round((vectorClone.x + 1) / 2 * this.prop.size.width),\n y: Math.round((1 - vectorClone.y) / 2 * this.prop.size.height),\n };\n }\n\n /**\n * @summary Converts spherical radians coordinates to position on the viewer\n * @param {PSV.Position} position\n * @returns {PSV.Point}\n */\n sphericalCoordsToViewerCoords(position) {\n return this.vector3ToViewerCoords(this.sphericalCoordsToVector3(position, vector3));\n }\n\n /**\n * @summary Returns intersections with objects in the scene\n * @param {PSV.Point} viewerPoint\n * @return {external:THREE.Intersection[]}\n */\n getIntersections(viewerPoint) {\n vector2.x = 2 * viewerPoint.x / this.prop.size.width - 1;\n vector2.y = -2 * viewerPoint.y / this.prop.size.height + 1;\n\n this.psv.renderer.raycaster.setFromCamera(vector2, this.psv.renderer.camera);\n\n return this.psv.renderer.raycaster.intersectObjects(this.psv.renderer.scene.children, true)\n .filter(i => !!i.object.userData);\n }\n\n /**\n * @summary Converts x/y to latitude/longitude if present and ensure boundaries\n * @param {PSV.ExtendedPosition} position\n * @returns {PSV.Position}\n */\n cleanPosition(position) {\n if (position.x !== undefined && position.y !== undefined) {\n return this.textureCoordsToSphericalCoords(position);\n }\n else {\n return {\n longitude: parseAngle(position.longitude),\n latitude : parseAngle(position.latitude, !this.prop.littlePlanet),\n };\n }\n }\n\n /**\n * @summary Ensure a SphereCorrection object is valid\n * @param {PSV.SphereCorrection} sphereCorrection\n * @returns {PSV.SphereCorrection}\n */\n cleanSphereCorrection(sphereCorrection) {\n return {\n pan : parseAngle(sphereCorrection?.pan || 0),\n tilt: parseAngle(sphereCorrection?.tilt || 0, true),\n roll: parseAngle(sphereCorrection?.roll || 0, true, false),\n };\n }\n\n /**\n * @summary Parse the pose angles of the pano data\n * @param {PSV.PanoData} panoData\n * @returns {PSV.SphereCorrection}\n */\n cleanPanoramaPose(panoData) {\n return {\n pan : MathUtils.degToRad(panoData?.poseHeading || 0),\n tilt: MathUtils.degToRad(panoData?.posePitch || 0),\n roll: MathUtils.degToRad(panoData?.poseRoll || 0),\n };\n }\n\n}\n","import { MathUtils, SplineCurve, Vector2 } from 'three';\nimport {\n ACTIONS,\n CTRLZOOM_TIMEOUT,\n DBLCLICK_DELAY,\n EVENTS,\n IDS,\n INERTIA_WINDOW,\n KEY_CODES,\n LONGTOUCH_DELAY,\n MESH_USER_DATA,\n MOVE_THRESHOLD,\n OBJECT_EVENTS,\n TWOFINGERSOVERLAY_DELAY\n} from '../data/constants';\nimport { SYSTEM } from '../data/system';\nimport gestureIcon from '../icons/gesture.svg';\nimport mousewheelIcon from '../icons/mousewheel.svg';\nimport {\n clone,\n distance,\n each,\n getClosest,\n getPosition,\n hasParent,\n isEmpty,\n isFullscreenEnabled,\n normalizeWheel,\n throttle\n} from '../utils';\nimport { Animation } from '../utils/Animation';\nimport { PressHandler } from '../utils/PressHandler';\nimport { AbstractService } from './AbstractService';\n\nconst IDLE = 0;\nconst MOVING = 1;\nconst INERTIA = 2;\n\n/**\n * @summary Events handler\n * @extends PSV.services.AbstractService\n * @memberof PSV.services\n */\nexport class EventsHandler extends AbstractService {\n\n /**\n * @param {PSV.Viewer} psv\n */\n constructor(psv) {\n super(psv);\n\n /**\n * @summary Internal properties\n * @member {Object}\n * @property {number} moveThreshold - computed threshold based on device pixel ratio\n * @property {number} step\n * @property {boolean} mousedown - before moving past the threshold\n * @property {number} startMouseX - start x position of the click/touch\n * @property {number} startMouseY - start y position of the click/touch\n * @property {number} mouseX - current x position of the cursor\n * @property {number} mouseY - current y position of the cursor\n * @property {number[][]} mouseHistory - list of latest positions of the cursor, [time, x, y]\n * @property {number} pinchDist - distance between fingers when zooming\n * @property {PressHandler} keyHandler\n * @property {boolean} ctrlKeyDown - when the Ctrl key is pressed\n * @property {PSV.ClickData} dblclickData - temporary storage of click data between two clicks\n * @property {number} dblclickTimeout - timeout id for double click\n * @property {number} twofingersTimeout - timeout id for \"two fingers\" overlay\n * @property {number} ctrlZoomTimeout - timeout id for \"ctrol zoom\" overlay\n * @protected\n */\n this.state = {\n moveThreshold : MOVE_THRESHOLD * SYSTEM.pixelRatio,\n keyboardEnabled : false,\n step : IDLE,\n mousedown : false,\n startMouseX : 0,\n startMouseY : 0,\n mouseX : 0,\n mouseY : 0,\n mouseHistory : [],\n pinchDist : 0,\n keyHandler : new PressHandler(),\n ctrlKeyDown : false,\n dblclickData : null,\n dblclickTimeout : null,\n longtouchTimeout : null,\n twofingersTimeout: null,\n ctrlZoomTimeout : null,\n };\n\n /**\n * @summary Throttled wrapper of {@link PSV.Viewer#autoSize}\n * @type {Function}\n * @private\n */\n this.__onResize = throttle(() => this.psv.autoSize(), 50);\n }\n\n /**\n * @summary Initializes event handlers\n * @protected\n */\n init() {\n window.addEventListener('resize', this);\n window.addEventListener('keydown', this, { passive: false });\n window.addEventListener('keyup', this);\n this.psv.container.addEventListener('mousedown', this);\n window.addEventListener('mousemove', this, { passive: false });\n window.addEventListener('mouseup', this);\n this.psv.container.addEventListener('touchstart', this, { passive: false });\n window.addEventListener('touchmove', this, { passive: false });\n window.addEventListener('touchend', this, { passive: false });\n this.psv.container.addEventListener(SYSTEM.mouseWheelEvent, this, { passive: false });\n\n if (SYSTEM.fullscreenEvent) {\n document.addEventListener(SYSTEM.fullscreenEvent, this);\n }\n }\n\n /**\n * @override\n */\n destroy() {\n window.removeEventListener('resize', this);\n window.removeEventListener('keydown', this);\n window.removeEventListener('keyup', this);\n this.psv.container.removeEventListener('mousedown', this);\n window.removeEventListener('mousemove', this);\n window.removeEventListener('mouseup', this);\n this.psv.container.removeEventListener('touchstart', this);\n window.removeEventListener('touchmove', this);\n window.removeEventListener('touchend', this);\n this.psv.container.removeEventListener(SYSTEM.mouseWheelEvent, this);\n\n if (SYSTEM.fullscreenEvent) {\n document.removeEventListener(SYSTEM.fullscreenEvent, this);\n }\n\n clearTimeout(this.state.dblclickTimeout);\n clearTimeout(this.state.longtouchTimeout);\n clearTimeout(this.state.twofingersTimeout);\n clearTimeout(this.state.ctrlZoomTimeout);\n\n delete this.state;\n\n super.destroy();\n }\n\n /**\n * @summary Handles events\n * @param {Event} evt\n * @private\n */\n handleEvent(evt) {\n /* eslint-disable */\n switch (evt.type) {\n // @formatter:off\n case 'resize': this.__onResize(); break;\n case 'keydown': this.__onKeyDown(evt); break;\n case 'keyup': this.__onKeyUp(); break;\n case 'mousemove': this.__onMouseMove(evt); break;\n case 'mouseup': this.__onMouseUp(evt); break;\n case 'touchmove': this.__onTouchMove(evt); break;\n case 'touchend': this.__onTouchEnd(evt); break;\n case SYSTEM.fullscreenEvent: this.__fullscreenToggled(); break;\n // @formatter:on\n }\n /* eslint-enable */\n\n if (!getClosest(evt.target, '.psv--capture-event')) {\n /* eslint-disable */\n switch (evt.type) {\n // @formatter:off\n case 'mousedown': this.__onMouseDown(evt); break;\n case 'touchstart': this.__onTouchStart(evt); break;\n case SYSTEM.mouseWheelEvent: this.__onMouseWheel(evt); break;\n // @formatter:on\n }\n /* eslint-enable */\n }\n }\n\n /**\n * @summary Enables the keyboard controls\n * @protected\n */\n enableKeyboard() {\n this.state.keyboardEnabled = true;\n }\n\n /**\n * @summary Disables the keyboard controls\n * @protected\n */\n disableKeyboard() {\n this.state.keyboardEnabled = false;\n }\n\n /**\n * @summary Handles keyboard events\n * @param {KeyboardEvent} e\n * @private\n */\n __onKeyDown(e) {\n if (this.config.mousewheelCtrlKey) {\n this.state.ctrlKeyDown = e.key === KEY_CODES.Control;\n\n if (this.state.ctrlKeyDown) {\n clearTimeout(this.state.ctrlZoomTimeout);\n this.psv.overlay.hide(IDS.CTRL_ZOOM);\n }\n }\n\n const e2 = this.psv.trigger(EVENTS.KEY_PRESS, e.key);\n if (e2.isDefaultPrevented()) {\n return;\n }\n\n if (!this.state.keyboardEnabled) {\n return;\n }\n\n const action = this.config.keyboard[e.key];\n if (action === ACTIONS.TOGGLE_AUTOROTATE) {\n this.psv.toggleAutorotate();\n e.preventDefault();\n }\n else if (action && !this.state.keyHandler.time) {\n if (action !== ACTIONS.ZOOM_IN && action !== ACTIONS.ZOOM_OUT) {\n this.psv.__stopAll();\n }\n\n /* eslint-disable */\n switch (action) {\n // @formatter:off\n case ACTIONS.ROTATE_LAT_UP: this.psv.dynamics.position.roll({latitude: false}); break;\n case ACTIONS.ROTATE_LAT_DOWN: this.psv.dynamics.position.roll({latitude: true}); break;\n case ACTIONS.ROTATE_LONG_RIGHT: this.psv.dynamics.position.roll({longitude: false}); break;\n case ACTIONS.ROTATE_LONG_LEFT: this.psv.dynamics.position.roll({longitude: true}); break;\n case ACTIONS.ZOOM_IN: this.psv.dynamics.zoom.roll(false); break;\n case ACTIONS.ZOOM_OUT: this.psv.dynamics.zoom.roll(true); break;\n // @formatter:on\n }\n /* eslint-enable */\n\n this.state.keyHandler.down();\n e.preventDefault();\n }\n }\n\n /**\n * @summary Handles keyboard events\n * @private\n */\n __onKeyUp() {\n this.state.ctrlKeyDown = false;\n\n if (!this.state.keyboardEnabled) {\n return;\n }\n\n this.state.keyHandler.up(() => {\n this.psv.dynamics.position.stop();\n this.psv.dynamics.zoom.stop();\n this.psv.resetIdleTimer();\n });\n }\n\n /**\n * @summary Handles mouse down events\n * @param {MouseEvent} evt\n * @private\n */\n __onMouseDown(evt) {\n this.state.mousedown = true;\n this.state.startMouseX = evt.clientX;\n this.state.startMouseY = evt.clientY;\n }\n\n /**\n * @summary Handles mouse up events\n * @param {MouseEvent} evt\n * @private\n */\n __onMouseUp(evt) {\n if (this.state.mousedown || this.state.step === MOVING) {\n this.__stopMove(evt.clientX, evt.clientY, evt.target, evt.button === 2);\n }\n }\n\n /**\n * @summary Handles mouse move events\n * @param {MouseEvent} evt\n * @private\n */\n __onMouseMove(evt) {\n if (this.config.mousemove && (this.state.mousedown || this.state.step === MOVING)) {\n evt.preventDefault();\n this.__move(evt.clientX, evt.clientY);\n }\n\n if (!isEmpty(this.prop.objectsObservers) && hasParent(evt.target, this.psv.container)) {\n const viewerPos = getPosition(this.psv.container);\n\n const viewerPoint = {\n x: evt.clientX - viewerPos.left,\n y: evt.clientY - viewerPos.top,\n };\n\n const intersections = this.psv.dataHelper.getIntersections(viewerPoint);\n\n const emit = (observer, key, type) => {\n observer.listener.handleEvent(new CustomEvent(type, {\n detail: {\n originalEvent: evt,\n object : observer.object,\n data : observer.object.userData[key],\n viewerPoint : viewerPoint,\n },\n }));\n };\n\n each(this.prop.objectsObservers, (observer, key) => {\n const intersection = intersections.find(i => i.object.userData[key]);\n\n if (intersection) {\n if (observer.object && intersection.object !== observer.object) {\n emit(observer, key, OBJECT_EVENTS.LEAVE_OBJECT);\n delete observer.object;\n }\n\n if (!observer.object) {\n observer.object = intersection.object;\n emit(observer, key, OBJECT_EVENTS.ENTER_OBJECT);\n }\n else {\n emit(observer, key, OBJECT_EVENTS.HOVER_OBJECT);\n }\n }\n else if (observer.object) {\n emit(observer, key, OBJECT_EVENTS.LEAVE_OBJECT);\n delete observer.object;\n }\n });\n }\n }\n\n /**\n * @summary Handles touch events\n * @param {TouchEvent} evt\n * @private\n */\n __onTouchStart(evt) {\n if (evt.touches.length === 1) {\n this.state.mousedown = true;\n this.state.startMouseX = evt.touches[0].clientX;\n this.state.startMouseY = evt.touches[0].clientY;\n\n if (!this.prop.longtouchTimeout) {\n this.prop.longtouchTimeout = setTimeout(() => {\n const touch = evt.touches[0];\n this.__stopMove(touch.clientX, touch.clientY, touch.target, true);\n this.prop.longtouchTimeout = null;\n }, LONGTOUCH_DELAY);\n }\n }\n else if (evt.touches.length === 2) {\n this.state.mousedown = false;\n this.__cancelLongTouch();\n\n if (this.config.mousemove) {\n this.__cancelTwoFingersOverlay();\n this.__startMoveZoom(evt);\n evt.preventDefault();\n }\n }\n }\n\n /**\n * @summary Handles touch events\n * @param {TouchEvent} evt\n * @private\n */\n __onTouchEnd(evt) {\n this.__cancelLongTouch();\n\n if (this.state.mousedown || this.state.step === MOVING) {\n evt.preventDefault();\n this.__cancelTwoFingersOverlay();\n\n if (evt.touches.length === 1) {\n this.__stopMove(this.state.mouseX, this.state.mouseY);\n }\n else if (evt.touches.length === 0) {\n const touch = evt.changedTouches[0];\n this.__stopMove(touch.clientX, touch.clientY, touch.target);\n }\n }\n }\n\n /**\n * @summary Handles touch move events\n * @param {TouchEvent} evt\n * @private\n */\n __onTouchMove(evt) {\n this.__cancelLongTouch();\n\n if (!this.config.mousemove) {\n return;\n }\n\n if (evt.touches.length === 1) {\n if (this.config.touchmoveTwoFingers) {\n if (this.state.mousedown && !this.prop.twofingersTimeout) {\n this.prop.twofingersTimeout = setTimeout(() => {\n this.psv.overlay.show({\n id : IDS.TWO_FINGERS,\n image: gestureIcon,\n text : this.config.lang.twoFingers,\n });\n }, TWOFINGERSOVERLAY_DELAY);\n }\n }\n else if (this.state.mousedown || this.state.step === MOVING) {\n evt.preventDefault();\n const touch = evt.touches[0];\n this.__move(touch.clientX, touch.clientY);\n }\n }\n else {\n this.__moveZoom(evt);\n this.__cancelTwoFingersOverlay();\n }\n }\n\n /**\n * @summary Cancel the long touch timer if any\n * @private\n */\n __cancelLongTouch() {\n if (this.prop.longtouchTimeout) {\n clearTimeout(this.prop.longtouchTimeout);\n this.prop.longtouchTimeout = null;\n }\n }\n\n /**\n * @summary Cancel the two fingers overlay timer if any\n * @private\n */\n __cancelTwoFingersOverlay() {\n if (this.config.touchmoveTwoFingers) {\n if (this.prop.twofingersTimeout) {\n clearTimeout(this.prop.twofingersTimeout);\n this.prop.twofingersTimeout = null;\n }\n this.psv.overlay.hide(IDS.TWO_FINGERS);\n }\n }\n\n /**\n * @summary Handles mouse wheel events\n * @param {WheelEvent} evt\n * @private\n */\n __onMouseWheel(evt) {\n if (!this.config.mousewheel) {\n return;\n }\n\n if (this.config.mousewheelCtrlKey && !this.state.ctrlKeyDown) {\n this.psv.overlay.show({\n id : IDS.CTRL_ZOOM,\n image: mousewheelIcon,\n text : this.config.lang.ctrlZoom,\n });\n\n clearTimeout(this.state.ctrlZoomTimeout);\n this.state.ctrlZoomTimeout = setTimeout(() => this.psv.overlay.hide(IDS.CTRL_ZOOM), CTRLZOOM_TIMEOUT);\n\n return;\n }\n\n evt.preventDefault();\n evt.stopPropagation();\n\n const delta = normalizeWheel(evt).spinY * 5 * this.config.zoomSpeed;\n if (delta !== 0) {\n this.psv.dynamics.zoom.step(-delta, 5);\n }\n }\n\n /**\n * @summary Handles fullscreen events\n * @param {boolean} [force] force state\n * @fires PSV.fullscreen-updated\n * @package\n */\n __fullscreenToggled(force) {\n this.prop.fullscreen = force !== undefined ? force : isFullscreenEnabled(this.psv.container);\n\n if (this.config.keyboard) {\n if (this.prop.fullscreen) {\n this.psv.startKeyboardControl();\n }\n else {\n this.psv.stopKeyboardControl();\n }\n }\n\n this.psv.trigger(EVENTS.FULLSCREEN_UPDATED, this.prop.fullscreen);\n }\n\n /**\n * @summary Resets all state variables\n * @private\n */\n __resetMove() {\n this.state.step = IDLE;\n this.state.mousedown = false;\n this.state.mouseX = 0;\n this.state.mouseY = 0;\n this.state.startMouseX = 0;\n this.state.startMouseY = 0;\n this.state.mouseHistory.length = 0;\n }\n\n /**\n * @summary Initializes the combines move and zoom\n * @param {TouchEvent} evt\n * @private\n */\n __startMoveZoom(evt) {\n this.psv.__stopAll();\n this.__resetMove();\n\n const p1 = { x: evt.touches[0].clientX, y: evt.touches[0].clientY };\n const p2 = { x: evt.touches[1].clientX, y: evt.touches[1].clientY };\n\n this.state.step = MOVING;\n this.state.pinchDist = distance(p1, p2);\n this.state.mouseX = (p1.x + p2.x) / 2;\n this.state.mouseY = (p1.y + p2.y) / 2;\n this.__logMouseMove(this.state.mouseX, this.state.mouseY);\n }\n\n /**\n * @summary Stops the movement\n * @description If the move threshold was not reached a click event is triggered, otherwise an animation is launched to simulate inertia\n * @param {int} clientX\n * @param {int} clientY\n * @param {EventTarget} [target]\n * @param {boolean} [rightclick=false]\n * @private\n */\n __stopMove(clientX, clientY, target = null, rightclick = false) {\n if (this.state.step === MOVING) {\n if (this.config.moveInertia) {\n this.__logMouseMove(clientX, clientY);\n this.__stopMoveInertia(clientX, clientY);\n }\n else {\n this.__resetMove();\n this.psv.resetIdleTimer();\n }\n }\n else if (this.state.mousedown) {\n this.psv.stopAnimation();\n this.__click(clientX, clientY, target, rightclick);\n this.__resetMove();\n this.psv.resetIdleTimer();\n }\n }\n\n /**\n * @summary Performs an animation to simulate inertia when the movement stops\n * @param {int} clientX\n * @param {int} clientY\n * @private\n */\n __stopMoveInertia(clientX, clientY) {\n // get direction at end of movement\n const curve = new SplineCurve(this.state.mouseHistory.map(([, x, y]) => new Vector2(x, y)));\n const direction = curve.getTangent(1);\n\n // average speed\n const speed = this.state.mouseHistory.slice(1).reduce(({ total, prev }, curr) => {\n return {\n total: total + distance({ x: prev[1], y: prev[2] }, { x: curr[1], y: curr[2] }) / (curr[0] - prev[0]),\n prev : curr,\n };\n }, {\n total: 0,\n prev : this.state.mouseHistory[0],\n }).total / this.state.mouseHistory.length;\n\n if (!speed) {\n this.__resetMove();\n this.psv.resetIdleTimer();\n return;\n }\n\n this.state.step = INERTIA;\n\n let currentClientX = clientX;\n let currentClientY = clientY;\n\n this.prop.animationPromise = new Animation({\n properties: {\n speed: { start: speed, end: 0 },\n },\n duration : 1000,\n easing : 'outQuad',\n onTick : (properties) => {\n // 3 is a magic number\n currentClientX += properties.speed * direction.x * 3 * SYSTEM.pixelRatio;\n currentClientY += properties.speed * direction.y * 3 * SYSTEM.pixelRatio;\n this.__applyMove(currentClientX, currentClientY);\n },\n });\n\n this.prop.animationPromise\n .then((done) => {\n this.prop.animationPromise = null;\n if (done) {\n this.__resetMove();\n this.psv.resetIdleTimer();\n }\n });\n }\n\n /**\n * @summary Triggers an event with all coordinates when a simple click is performed\n * @param {int} clientX\n * @param {int} clientY\n * @param {EventTarget} target\n * @param {boolean} [rightclick=false]\n * @fires PSV.click\n * @fires PSV.dblclick\n * @private\n */\n __click(clientX, clientY, target, rightclick = false) {\n const boundingRect = this.psv.container.getBoundingClientRect();\n\n /**\n * @type {PSV.ClickData}\n */\n const data = {\n rightclick: rightclick,\n target : target,\n clientX : clientX,\n clientY : clientY,\n viewerX : clientX - boundingRect.left,\n viewerY : clientY - boundingRect.top,\n };\n\n const intersections = this.psv.dataHelper.getIntersections({\n x: data.viewerX,\n y: data.viewerY,\n });\n\n const sphereIntersection = intersections.find(i => i.object.userData[MESH_USER_DATA]);\n\n if (sphereIntersection) {\n const sphericalCoords = this.psv.dataHelper.vector3ToSphericalCoords(sphereIntersection.point);\n data.longitude = sphericalCoords.longitude;\n data.latitude = sphericalCoords.latitude;\n\n data.objects = intersections.map(i => i.object).filter(o => !o.userData[MESH_USER_DATA]);\n\n try {\n const textureCoords = this.psv.dataHelper.sphericalCoordsToTextureCoords(data);\n data.textureX = textureCoords.x;\n data.textureY = textureCoords.y;\n }\n catch (e) {\n data.textureX = NaN;\n data.textureY = NaN;\n }\n\n if (!this.state.dblclickTimeout) {\n this.psv.trigger(EVENTS.CLICK, data);\n\n this.state.dblclickData = clone(data);\n this.state.dblclickTimeout = setTimeout(() => {\n this.state.dblclickTimeout = null;\n this.state.dblclickData = null;\n }, DBLCLICK_DELAY);\n }\n else {\n if (Math.abs(this.state.dblclickData.clientX - data.clientX) < this.state.moveThreshold\n && Math.abs(this.state.dblclickData.clientY - data.clientY) < this.state.moveThreshold) {\n this.psv.trigger(EVENTS.DOUBLE_CLICK, this.state.dblclickData);\n }\n\n clearTimeout(this.state.dblclickTimeout);\n this.state.dblclickTimeout = null;\n this.state.dblclickData = null;\n }\n }\n }\n\n /**\n * @summary Starts moving when crossing moveThreshold and performs movement\n * @param {int} clientX\n * @param {int} clientY\n * @private\n */\n __move(clientX, clientY) {\n if (this.state.mousedown\n && (Math.abs(clientX - this.state.startMouseX) >= this.state.moveThreshold\n || Math.abs(clientY - this.state.startMouseY) >= this.state.moveThreshold)) {\n this.psv.__stopAll();\n this.__resetMove();\n this.state.step = MOVING;\n this.state.mouseX = clientX;\n this.state.mouseY = clientY;\n this.__logMouseMove(clientX, clientY);\n }\n else if (this.state.step === MOVING) {\n this.__applyMove(clientX, clientY);\n this.__logMouseMove(clientX, clientY);\n }\n }\n\n /**\n * @summary Raw method for movement, called from mouse event and move inertia\n * @param {int} clientX\n * @param {int} clientY\n * @private\n */\n __applyMove(clientX, clientY) {\n const rotation = {\n longitude: (clientX - this.state.mouseX) / this.prop.size.width * this.config.moveSpeed\n * MathUtils.degToRad(this.prop.littlePlanet ? 90 : this.prop.hFov),\n latitude : (clientY - this.state.mouseY) / this.prop.size.height * this.config.moveSpeed\n * MathUtils.degToRad(this.prop.littlePlanet ? 90 : this.prop.vFov),\n };\n\n const currentPosition = this.psv.getPosition();\n this.psv.rotate({\n longitude: currentPosition.longitude - rotation.longitude,\n latitude : currentPosition.latitude + rotation.latitude,\n });\n\n this.state.mouseX = clientX;\n this.state.mouseY = clientY;\n }\n\n /**\n * @summary Perfoms combined move and zoom\n * @param {TouchEvent} evt\n * @private\n */\n __moveZoom(evt) {\n if (this.state.step === MOVING) {\n evt.preventDefault();\n\n const p1 = { x: evt.touches[0].clientX, y: evt.touches[0].clientY };\n const p2 = { x: evt.touches[1].clientX, y: evt.touches[1].clientY };\n\n const p = distance(p1, p2);\n const delta = (p - this.state.pinchDist) / SYSTEM.pixelRatio * this.config.zoomSpeed;\n\n this.psv.zoom(this.psv.getZoomLevel() + delta);\n\n this.__move((p1.x + p2.x) / 2, (p1.y + p2.y) / 2);\n\n this.state.pinchDist = p;\n }\n }\n\n /**\n * @summary Stores each mouse position during a mouse move\n * @description Positions older than \"INERTIA_WINDOW\" are removed
\n * Positions before a pause of \"INERTIA_WINDOW\" / 10 are removed\n * @param {int} clientX\n * @param {int} clientY\n * @private\n */\n __logMouseMove(clientX, clientY) {\n const now = Date.now();\n\n const last = this.state.mouseHistory.length ? this.state.mouseHistory[this.state.mouseHistory.length - 1] : [0, -1, -1];\n\n // avoid duplicates\n if (last[1] === clientX && last[2] === clientY) {\n last[0] = now;\n }\n else if (now === last[0]) {\n last[1] = clientX;\n last[2] = clientY;\n }\n else {\n this.state.mouseHistory.push([now, clientX, clientY]);\n }\n\n let previous = null;\n\n for (let i = 0; i < this.state.mouseHistory.length;) {\n if (this.state.mouseHistory[i][0] < now - INERTIA_WINDOW) {\n this.state.mouseHistory.splice(i, 1);\n }\n else if (previous && this.state.mouseHistory[i][0] - previous > INERTIA_WINDOW / 10) {\n this.state.mouseHistory.splice(0, i);\n i = 0;\n previous = this.state.mouseHistory[i][0];\n }\n else {\n previous = this.state.mouseHistory[i][0];\n i++;\n }\n }\n }\n\n}\n","import { Group, PerspectiveCamera, Raycaster, Scene, Vector3, WebGLRenderer } from 'three';\nimport { EVENTS, MESH_USER_DATA, SPHERE_RADIUS } from '../data/constants';\nimport { SYSTEM } from '../data/system';\nimport { Animation, each, isExtendedPosition } from '../utils';\nimport { AbstractService } from './AbstractService';\n\n/**\n * @summary Viewer and renderer\n * @extends PSV.services.AbstractService\n * @memberof PSV.services\n */\nexport class Renderer extends AbstractService {\n\n /**\n * @param {PSV.Viewer} psv\n */\n constructor(psv) {\n super(psv);\n\n /**\n * @member {external:THREE.WebGLRenderer}\n * @readonly\n * @protected\n */\n this.renderer = new WebGLRenderer({ alpha: true, antialias: true });\n this.renderer.setPixelRatio(SYSTEM.pixelRatio);\n this.renderer.domElement.className = 'psv-canvas';\n\n /**\n * @member {external:THREE.Scene}\n * @readonly\n * @protected\n */\n this.scene = new Scene();\n\n /**\n * @member {external:THREE.PerspectiveCamera}\n * @readonly\n * @protected\n */\n this.camera = new PerspectiveCamera(50, 16 / 9, 0.1, 2 * SPHERE_RADIUS);\n\n /**\n * @member {external:THREE.Mesh}\n * @readonly\n * @protected\n */\n this.mesh = this.psv.adapter.createMesh();\n this.mesh.userData = { [MESH_USER_DATA]: true };\n\n /**\n * @member {external:THREE.Group}\n * @readonly\n * @private\n */\n this.meshContainer = new Group();\n this.meshContainer.add(this.mesh);\n this.scene.add(this.meshContainer);\n\n /**\n * @member {external:THREE.Raycaster}\n * @readonly\n * @protected\n */\n this.raycaster = new Raycaster();\n\n /**\n * @member {number}\n * @private\n */\n this.timestamp = null;\n\n /**\n * @member {boolean}\n * @private\n */\n this.ready = false;\n\n /**\n * @member {HTMLElement}\n * @readonly\n * @package\n */\n this.canvasContainer = document.createElement('div');\n this.canvasContainer.className = 'psv-canvas-container';\n this.canvasContainer.style.background = this.psv.config.canvasBackground;\n this.canvasContainer.style.cursor = this.psv.config.mousemove ? 'move' : 'default';\n this.canvasContainer.appendChild(this.renderer.domElement);\n this.psv.container.appendChild(this.canvasContainer);\n\n psv.on(EVENTS.SIZE_UPDATED, this);\n psv.on(EVENTS.ZOOM_UPDATED, this);\n psv.on(EVENTS.POSITION_UPDATED, this);\n psv.on(EVENTS.CONFIG_CHANGED, this);\n\n this.hide();\n }\n\n /**\n * @override\n */\n destroy() {\n // cancel render loop\n this.renderer.setAnimationLoop(null);\n\n // destroy ThreeJS view\n this.__cleanTHREEScene(this.scene);\n\n // remove container\n this.psv.container.removeChild(this.canvasContainer);\n\n delete this.canvasContainer;\n delete this.renderer;\n delete this.scene;\n delete this.camera;\n delete this.mesh;\n delete this.meshContainer;\n delete this.raycaster;\n\n super.destroy();\n }\n\n /**\n * @summary Handles events\n * @param {Event} evt\n * @private\n */\n handleEvent(evt) {\n /* eslint-disable */\n switch (evt.type) {\n // @formatter:off\n case EVENTS.SIZE_UPDATED: this.__onSizeUpdated(); break;\n case EVENTS.ZOOM_UPDATED: this.__onZoomUpdated(); break;\n case EVENTS.POSITION_UPDATED: this.__onPositionUpdated(); break;\n case EVENTS.CONFIG_CHANGED:\n if (evt.args[0].includes('fisheye')) {\n this.__onPositionUpdated();\n }\n if (evt.args[0].includes('mousemove')) {\n this.canvasContainer.style.cursor = this.psv.config.mousemove ? 'move' : 'default';\n }\n break;\n // @formatter:on\n }\n /* eslint-enable */\n }\n\n /**\n * @summary Hides the viewer\n */\n hide() {\n this.canvasContainer.style.opacity = 0;\n }\n\n /**\n * @summary Shows the viewer\n */\n show() {\n this.canvasContainer.style.opacity = 1;\n }\n\n /**\n * @summary Updates the size of the renderer and the aspect of the camera\n * @private\n */\n __onSizeUpdated() {\n this.renderer.setSize(this.prop.size.width, this.prop.size.height);\n this.camera.aspect = this.prop.aspect;\n this.camera.updateProjectionMatrix();\n this.prop.needsUpdate = true;\n }\n\n /**\n * @summary Updates the fov of the camera\n * @private\n */\n __onZoomUpdated() {\n this.camera.fov = this.prop.vFov;\n this.camera.updateProjectionMatrix();\n this.prop.needsUpdate = true;\n }\n\n /**\n * @summary Updates the position of the camera\n * @private\n */\n __onPositionUpdated() {\n this.camera.position.set(0, 0, 0);\n this.camera.lookAt(this.prop.direction);\n if (this.config.fisheye) {\n this.camera.position.copy(this.prop.direction).multiplyScalar(this.config.fisheye / 2).negate();\n }\n this.prop.needsUpdate = true;\n }\n\n /**\n * @summary Main event loop, calls {@link render} if `prop.needsUpdate` is true\n * @param {number} timestamp\n * @fires PSV.before-render\n * @private\n */\n __renderLoop(timestamp) {\n const elapsed = this.timestamp !== null ? timestamp - this.timestamp : 0;\n this.timestamp = timestamp;\n\n this.psv.trigger(EVENTS.BEFORE_RENDER, timestamp, elapsed);\n each(this.psv.dynamics, d => d.update(elapsed));\n\n if (this.prop.idleTime > 0 && timestamp - this.prop.idleTime > this.config.autorotateDelay) {\n this.psv.startAutorotate();\n }\n\n if (this.prop.needsUpdate) {\n this.render();\n this.prop.needsUpdate = false;\n }\n }\n\n /**\n * @summary Performs a render\n * @description Do not call this method directly, instead call\n * {@link PSV.Viewer#needsUpdate} on {@link PSV.event:before-render}.\n * @fires PSV.render\n */\n render() {\n this.renderer.render(this.scene, this.camera);\n this.psv.trigger(EVENTS.RENDER);\n }\n\n /**\n * @summary Applies the texture to the scene, creates the scene if needed\n * @param {PSV.TextureData} textureData\n * @fires PSV.panorama-loaded\n * @package\n */\n setTexture(textureData) {\n this.prop.panoData = textureData.panoData;\n\n this.psv.adapter.setTexture(this.mesh, textureData);\n\n if (!this.ready) {\n this.renderer.setAnimationLoop(t => this.__renderLoop(t));\n this.ready = true;\n }\n\n this.psv.needsUpdate();\n\n this.psv.trigger(EVENTS.PANORAMA_LOADED, textureData);\n }\n\n /**\n * @summary Applies the overlay to the mesh\n * @param {PSV.TextureData} textureData\n * @param {number} opacity\n * @package\n */\n setOverlay(textureData, opacity) {\n this.psv.adapter.setOverlay(this.mesh, textureData, opacity);\n this.psv.needsUpdate();\n }\n\n /**\n * @summary Apply a panorama data pose to a Mesh\n * @param {PSV.PanoData} [panoData]\n * @param {external:THREE.Mesh} [mesh=this.mesh]\n * @package\n */\n setPanoramaPose(panoData, mesh = this.mesh) {\n // By Google documentation the angles are applied on the camera in order : heading, pitch, roll\n // here we apply the reverse transformation on the sphere\n const cleanCorrection = this.psv.dataHelper.cleanPanoramaPose(panoData);\n\n mesh.rotation.set(\n -cleanCorrection.tilt,\n -cleanCorrection.pan,\n -cleanCorrection.roll,\n 'ZXY'\n );\n }\n\n /**\n * @summary Apply a SphereCorrection to a Mesh\n * @param {PSV.SphereCorrection} [sphereCorrection]\n * @param {external:THREE.Mesh} [mesh=this.meshContainer]\n * @package\n */\n setSphereCorrection(sphereCorrection, mesh = this.meshContainer) {\n const cleanCorrection = this.psv.dataHelper.cleanSphereCorrection(sphereCorrection);\n\n mesh.rotation.set(\n cleanCorrection.tilt,\n cleanCorrection.pan,\n cleanCorrection.roll,\n 'ZXY'\n );\n }\n\n /**\n * @summary Performs transition between the current and a new texture\n * @param {PSV.TextureData} textureData\n * @param {PSV.PanoramaOptions} options\n * @returns {PSV.utils.Animation}\n * @package\n */\n transition(textureData, options) {\n const positionProvided = isExtendedPosition(options);\n const zoomProvided = 'zoom' in options;\n\n // create temp group and new mesh, half size to be in \"front\" of the first one\n const group = new Group();\n const mesh = this.psv.adapter.createMesh(0.5);\n this.psv.adapter.setTexture(mesh, textureData, true);\n this.psv.adapter.setTextureOpacity(mesh, 0);\n this.setPanoramaPose(textureData.panoData, mesh);\n this.setSphereCorrection(options.sphereCorrection, group);\n\n // rotate the new sphere to make the target position face the camera\n if (positionProvided) {\n const cleanPosition = this.psv.dataHelper.cleanPosition(options);\n const currentPosition = this.psv.getPosition();\n\n // Longitude rotation along the vertical axis\n const verticalAxis = new Vector3(0, 1, 0);\n group.rotateOnWorldAxis(verticalAxis, cleanPosition.longitude - currentPosition.longitude);\n\n // Latitude rotation along the camera horizontal axis\n const horizontalAxis = new Vector3(0, 1, 0).cross(this.camera.getWorldDirection(new Vector3())).normalize();\n group.rotateOnWorldAxis(horizontalAxis, cleanPosition.latitude - currentPosition.latitude);\n }\n\n group.add(mesh);\n this.scene.add(group);\n\n const animation = new Animation({\n properties: {\n opacity: { start: 0.0, end: 1.0 },\n zoom : zoomProvided ? { start: this.psv.getZoomLevel(), end: options.zoom } : undefined,\n },\n duration : options.transition,\n easing : 'outCubic',\n onTick : (properties) => {\n this.psv.adapter.setTextureOpacity(mesh, properties.opacity);\n this.psv.adapter.setTextureOpacity(this.mesh, 1 - properties.opacity);\n\n if (zoomProvided) {\n this.psv.zoom(properties.zoom);\n }\n\n this.psv.needsUpdate();\n },\n });\n\n animation\n .then((completed) => {\n if (completed) {\n // remove temp sphere and transfer the texture to the main mesh\n this.setTexture(textureData);\n this.psv.adapter.setTextureOpacity(this.mesh, 1);\n this.setPanoramaPose(textureData.panoData);\n this.setSphereCorrection(options.sphereCorrection);\n\n // actually rotate the camera\n if (positionProvided) {\n this.psv.rotate(options);\n }\n }\n else {\n this.psv.adapter.disposeTexture(textureData);\n }\n\n this.scene.remove(group);\n mesh.geometry.dispose();\n mesh.geometry = null;\n });\n\n return animation;\n }\n\n /**\n * @summary Calls `dispose` on all objects and textures\n * @param {external:THREE.Object3D} object\n * @private\n */\n __cleanTHREEScene(object) {\n object.traverse((item) => {\n if (item.geometry) {\n item.geometry.dispose();\n }\n\n if (item.material) {\n if (Array.isArray(item.material)) {\n item.material.forEach((material) => {\n if (material.map) {\n material.map.dispose();\n }\n\n material.dispose();\n });\n }\n else {\n if (item.material.map) {\n item.material.map.dispose();\n }\n\n item.material.dispose();\n }\n }\n\n if (item.dispose && !(item instanceof Scene)) {\n item.dispose();\n }\n\n if (item !== object) {\n this.__cleanTHREEScene(item);\n }\n });\n }\n\n}\n","import { FileLoader } from 'three';\nimport { AbstractService } from './AbstractService';\n\n/**\n * @summary Texture loader\n * @extends PSV.services.AbstractService\n * @memberof PSV.services\n */\nexport class TextureLoader extends AbstractService {\n\n /**\n * @param {PSV.Viewer} psv\n */\n constructor(psv) {\n super(psv);\n\n /**\n * @summary THREE file loader\n * @type {external:THREE:FileLoader}\n * @private\n */\n this.loader = new FileLoader();\n this.loader.setResponseType('blob');\n if (this.config.withCredentials) {\n this.loader.setWithCredentials(true);\n }\n if (this.config.requestHeaders && typeof this.config.requestHeaders === 'object') {\n this.loader.setRequestHeader(this.config.requestHeaders);\n }\n }\n\n /**\n * @override\n */\n destroy() {\n this.abortLoading();\n super.destroy();\n }\n\n /**\n * @summary Cancels current HTTP requests\n * @package\n */\n abortLoading() {\n // noop implementation waiting for https://github.com/mrdoob/three.js/pull/23070\n }\n\n /**\n * @summary Loads a Blob with FileLoader\n * @param {string} url\n * @param {function(number)} [onProgress]\n * @returns {Promise}\n */\n loadFile(url, onProgress) {\n if (this.config.requestHeaders && typeof this.config.requestHeaders === 'function') {\n this.loader.setRequestHeader(this.config.requestHeaders(url));\n }\n\n return new Promise((resolve, reject) => {\n let progress = 0;\n onProgress?.(progress);\n\n this.loader.load(\n url,\n (result) => {\n progress = 100;\n onProgress?.(progress);\n resolve(result);\n },\n (e) => {\n if (e.lengthComputable) {\n const newProgress = e.loaded / e.total * 100;\n if (newProgress > progress) {\n progress = newProgress;\n onProgress?.(progress);\n }\n }\n },\n (err) => {\n reject(err);\n }\n );\n });\n }\n\n /**\n * @summary Loads an Image using FileLoader to have progress events\n * @param {string} url\n * @param {function(number)} [onProgress]\n * @returns {Promise}\n */\n loadImage(url, onProgress) {\n return this.loadFile(url, onProgress)\n .then(result => new Promise((resolve, reject) => {\n const img = document.createElementNS('http://www.w3.org/1999/xhtml', 'img');\n img.onload = () => {\n URL.revokeObjectURL(img.src);\n resolve(img);\n };\n img.onerror = reject;\n img.src = URL.createObjectURL(result);\n }));\n }\n\n /**\n * @summary Preload a panorama file without displaying it\n * @param {*} panorama\n * @returns {Promise}\n */\n preloadPanorama(panorama) {\n if (this.psv.adapter.supportsPreload(panorama)) {\n return this.psv.adapter.loadTexture(panorama);\n }\n else {\n return Promise.resolve();\n }\n }\n\n}\n","import { EVENTS } from '../data/constants';\nimport { PSVError } from '../PSVError';\nimport { addClasses, cleanPosition, positionIsOrdered } from '../utils';\nimport { AbstractComponent } from './AbstractComponent';\n\nconst STATE = { NONE: 0, SHOWING: 1, HIDING: 2, READY: 3 };\n\n/**\n * @typedef {Object} PSV.components.Tooltip.Position\n * @summary Object defining the tooltip position\n * @property {number} top - Position of the tip of the arrow of the tooltip, in pixels\n * @property {number} left - Position of the tip of the arrow of the tooltip, in pixels\n * @property {string|string[]} [position='top center'] - Tooltip position toward it's arrow tip.\n * Accepted values are combinations of `top`, `center`, `bottom` and `left`, `center`, `right`\n * @property {Object} [box] - Used when displaying a tooltip on a marker\n * @property {number} [box.width=0]\n * @property {number} [box.height=0]\n */\n\n/**\n * @typedef {PSV.components.Tooltip.Position} PSV.components.Tooltip.Config\n * @summary Object defining the tooltip configuration\n * @property {string} content - HTML content of the tooltip\n * @property {string} [className] - Additional CSS class added to the tooltip\n * @property {*} [data] - Userdata associated to the tooltip\n */\n\n/**\n * @summary Tooltip component\n * @description Never instanciate tooltips directly use {@link PSV.services.TooltipRenderer} instead\n * @extends PSV.components.AbstractComponent\n * @memberof PSV.components\n */\nexport class Tooltip extends AbstractComponent {\n\n /**\n * @param {PSV.Viewer} psv\n * @param {{arrow: number, border: number}} size\n */\n constructor(psv, size) {\n super(psv, 'psv-tooltip');\n\n /**\n * @override\n * @property {number} arrow\n * @property {number} border\n * @property {number} width\n * @property {number} height\n * @property {string} pos\n * @property {string} state\n * @property {*} data\n */\n this.prop = {\n ...this.prop,\n ...size,\n state : STATE.NONE,\n width : 0,\n height: 0,\n pos : '',\n config: null,\n data : null,\n };\n\n /**\n * Tooltip content\n * @member {HTMLElement}\n * @readonly\n * @private\n */\n this.content = document.createElement('div');\n this.content.className = 'psv-tooltip-content';\n this.container.appendChild(this.content);\n\n /**\n * Tooltip arrow\n * @member {HTMLElement}\n * @readonly\n * @package\n */\n this.arrow = document.createElement('div');\n this.arrow.className = 'psv-tooltip-arrow';\n this.container.appendChild(this.arrow);\n\n this.container.addEventListener('transitionend', this);\n\n this.container.style.top = '-1000px';\n this.container.style.left = '-1000px';\n }\n\n /**\n * @override\n */\n destroy() {\n delete this.arrow;\n delete this.content;\n\n super.destroy();\n }\n\n /**\n * @summary Handles events\n * @param {Event} e\n * @private\n */\n handleEvent(e) {\n /* eslint-disable */\n switch (e.type) {\n // @formatter:off\n case 'transitionend': this.__onTransitionEnd(e); break;\n // @formatter:on\n }\n /* eslint-enable */\n }\n\n /**\n * @override\n * @summary This method is not supported\n * @throws {PSV.PSVError} always\n */\n toggle() {\n throw new PSVError('Tooltip cannot be toggled');\n }\n\n /**\n * @summary Displays the tooltip on the viewer\n * Do not call this method directly, use {@link PSV.services.TooltipRenderer} instead.\n * @param {PSV.components.Tooltip.Config} config\n *\n * @fires PSV.show-tooltip\n * @throws {PSV.PSVError} when the configuration is incorrect\n *\n * @package\n */\n show(config) {\n if (this.prop.state !== STATE.NONE) {\n throw new PSVError('Initialized tooltip cannot be re-initialized');\n }\n\n if (config.className) {\n addClasses(this.container, config.className);\n }\n\n this.content.innerHTML = config.content;\n\n const rect = this.container.getBoundingClientRect();\n this.prop.width = rect.right - rect.left;\n this.prop.height = rect.bottom - rect.top;\n\n this.prop.state = STATE.READY;\n\n this.move(config);\n\n this.prop.data = config.data;\n this.prop.state = STATE.SHOWING;\n\n this.psv.trigger(EVENTS.SHOW_TOOLTIP, this.prop.data, this);\n\n this.__waitImages();\n }\n\n /**\n * @summary Moves the tooltip to a new position\n * @param {PSV.components.Tooltip.Position} config\n *\n * @throws {PSV.PSVError} when the configuration is incorrect\n */\n move(config) {\n if (this.prop.state !== STATE.SHOWING && this.prop.state !== STATE.READY) {\n throw new PSVError('Uninitialized tooltip cannot be moved');\n }\n\n if (!config.box) {\n config.box = {\n width : 0,\n height: 0,\n };\n }\n\n this.config = config;\n\n const t = this.container;\n const a = this.arrow;\n\n // compute size\n const style = {\n posClass : cleanPosition(config.position, { allowCenter: false, cssOrder: false }) || ['top', 'center'],\n width : this.prop.width,\n height : this.prop.height,\n top : 0,\n left : 0,\n arrowTop : 0,\n arrowLeft: 0,\n };\n\n // set initial position\n this.__computeTooltipPosition(style, config);\n\n // correct position if overflow\n let swapY = null;\n let swapX = null;\n if (style.top < 0) {\n swapY = 'bottom';\n }\n else if (style.top + style.height > this.psv.prop.size.height) {\n swapY = 'top';\n }\n if (style.left < 0) {\n swapX = 'right';\n }\n else if (style.left + style.width > this.psv.prop.size.width) {\n swapX = 'left';\n }\n if (swapX || swapY) {\n const ordered = positionIsOrdered(style.posClass);\n if (swapY) {\n style.posClass[ordered ? 0 : 1] = swapY;\n }\n if (swapX) {\n style.posClass[ordered ? 1 : 0] = swapX;\n }\n this.__computeTooltipPosition(style, config);\n }\n\n // apply position\n t.style.top = style.top + 'px';\n t.style.left = style.left + 'px';\n\n a.style.top = style.arrowTop + 'px';\n a.style.left = style.arrowLeft + 'px';\n\n const newPos = style.posClass.join('-');\n if (newPos !== this.prop.pos) {\n t.classList.remove(`psv-tooltip--${this.prop.pos}`);\n\n this.prop.pos = newPos;\n t.classList.add(`psv-tooltip--${this.prop.pos}`);\n }\n }\n\n /**\n * @summary Hides the tooltip\n * @fires PSV.hide-tooltip\n */\n hide() {\n this.container.classList.remove('psv-tooltip--visible');\n this.prop.state = STATE.HIDING;\n\n this.psv.trigger(EVENTS.HIDE_TOOLTIP, this.prop.data);\n }\n\n /**\n * @summary Finalize transition\n * @param {TransitionEvent} e\n * @private\n */\n __onTransitionEnd(e) {\n if (e.propertyName === 'transform') {\n switch (this.prop.state) {\n case STATE.SHOWING:\n this.container.classList.add('psv-tooltip--visible');\n this.prop.state = STATE.READY;\n break;\n\n case STATE.HIDING:\n this.prop.state = STATE.NONE;\n this.destroy();\n break;\n\n default:\n // nothing\n }\n }\n }\n\n /**\n * @summary Computes the position of the tooltip and its arrow\n * @param {Object} style\n * @param {Object} config\n * @private\n */\n __computeTooltipPosition(style, config) {\n const arrow = this.prop.arrow;\n const top = config.top;\n const height = style.height;\n const left = config.left;\n const width = style.width;\n const offsetSide = arrow + this.prop.border;\n const offsetX = config.box.width / 2 + arrow * 2;\n const offsetY = config.box.height / 2 + arrow * 2;\n\n switch (style.posClass.join('-')) {\n case 'top-left':\n style.top = top - offsetY - height;\n style.left = left + offsetSide - width;\n style.arrowTop = height;\n style.arrowLeft = width - offsetSide - arrow;\n break;\n case 'top-center':\n style.top = top - offsetY - height;\n style.left = left - width / 2;\n style.arrowTop = height;\n style.arrowLeft = width / 2 - arrow;\n break;\n case 'top-right':\n style.top = top - offsetY - height;\n style.left = left - offsetSide;\n style.arrowTop = height;\n style.arrowLeft = arrow;\n break;\n case 'bottom-left':\n style.top = top + offsetY;\n style.left = left + offsetSide - width;\n style.arrowTop = -arrow * 2;\n style.arrowLeft = width - offsetSide - arrow;\n break;\n case 'bottom-center':\n style.top = top + offsetY;\n style.left = left - width / 2;\n style.arrowTop = -arrow * 2;\n style.arrowLeft = width / 2 - arrow;\n break;\n case 'bottom-right':\n style.top = top + offsetY;\n style.left = left - offsetSide;\n style.arrowTop = -arrow * 2;\n style.arrowLeft = arrow;\n break;\n case 'left-top':\n style.top = top + offsetSide - height;\n style.left = left - offsetX - width;\n style.arrowTop = height - offsetSide - arrow;\n style.arrowLeft = width;\n break;\n case 'center-left':\n style.top = top - height / 2;\n style.left = left - offsetX - width;\n style.arrowTop = height / 2 - arrow;\n style.arrowLeft = width;\n break;\n case 'left-bottom':\n style.top = top - offsetSide;\n style.left = left - offsetX - width;\n style.arrowTop = arrow;\n style.arrowLeft = width;\n break;\n case 'right-top':\n style.top = top + offsetSide - height;\n style.left = left + offsetX;\n style.arrowTop = height - offsetSide - arrow;\n style.arrowLeft = -arrow * 2;\n break;\n case 'center-right':\n style.top = top - height / 2;\n style.left = left + offsetX;\n style.arrowTop = height / 2 - arrow;\n style.arrowLeft = -arrow * 2;\n break;\n case 'right-bottom':\n style.top = top - offsetSide;\n style.left = left + offsetX;\n style.arrowTop = arrow;\n style.arrowLeft = -arrow * 2;\n break;\n\n // no default\n }\n }\n\n /**\n * @summary If the tooltip contains images, recompute its size once they are loaded\n * @private\n */\n __waitImages() {\n const images = this.content.querySelectorAll('img');\n\n if (images.length > 0) {\n const promises = [];\n\n images.forEach((image) => {\n promises.push(new Promise((resolve) => {\n image.onload = resolve;\n image.onerror = resolve;\n }));\n });\n\n Promise.all(promises)\n .then(() => {\n if (this.prop.state === STATE.SHOWING || this.prop.state === STATE.READY) {\n const rect = this.container.getBoundingClientRect();\n this.prop.width = rect.right - rect.left;\n this.prop.height = rect.bottom - rect.top;\n this.move(this.config);\n }\n });\n }\n }\n\n}\n","import { Tooltip } from '../components/Tooltip';\nimport { getStyle } from '../utils';\nimport { AbstractService } from './AbstractService';\n\n/**\n * @summary Tooltip renderer\n * @extends PSV.services.AbstractService\n * @memberof PSV.services\n */\nexport class TooltipRenderer extends AbstractService {\n\n /**\n * @param {PSV.Viewer} psv\n */\n constructor(psv) {\n super(psv);\n\n const testTooltip = new Tooltip(this.psv, { arrow: 0, border: 0 });\n\n /**\n * @summary Computed static sizes\n * @member {Object}\n * @package\n * @property {number} arrow\n * @property {number} border\n */\n this.size = {\n arrow : parseInt(getStyle(testTooltip.arrow, 'borderTopWidth'), 10),\n border: parseInt(getStyle(testTooltip.container, 'borderTopLeftRadius'), 10),\n };\n\n testTooltip.destroy();\n }\n\n /**\n * @override\n */\n destroy() {\n delete this.size;\n\n super.destroy();\n }\n\n /**\n * @summary Displays a tooltip on the viewer\n * @param {PSV.components.Tooltip.Config} config\n * @returns {PSV.components.Tooltip}\n *\n * @fires PSV.show-tooltip\n * @throws {PSV.PSVError} when the configuration is incorrect\n *\n * @example\n * viewer.tooltip.create({ content: 'Hello world', top: 200, left: 450, position: 'center bottom'})\n */\n create(config) {\n const tooltip = new Tooltip(this.psv, this.size);\n tooltip.show(config);\n\n return tooltip;\n }\n\n}\n","import { Cache, MathUtils, Vector3 } from 'three';\nimport { EventEmitter } from 'uevent';\nimport { Loader } from './components/Loader';\nimport { Navbar } from './components/Navbar';\nimport { Notification } from './components/Notification';\nimport { Overlay } from './components/Overlay';\nimport { Panel } from './components/Panel';\nimport { CONFIG_PARSERS, DEFAULTS, DEPRECATED_OPTIONS, getConfig, READONLY_OPTIONS } from './data/config';\nimport {\n ANIMATION_MIN_DURATION,\n CHANGE_EVENTS,\n DEFAULT_TRANSITION,\n EVENTS,\n IDS,\n SPHERE_RADIUS,\n VIEWER_DATA\n} from './data/constants';\nimport { SYSTEM } from './data/system';\nimport errorIcon from './icons/error.svg';\nimport { AbstractPlugin } from './plugins/AbstractPlugin';\nimport { PSVError } from './PSVError';\nimport { DataHelper } from './services/DataHelper';\nimport { EventsHandler } from './services/EventsHandler';\nimport { Renderer } from './services/Renderer';\nimport { TextureLoader } from './services/TextureLoader';\nimport { TooltipRenderer } from './services/TooltipRenderer';\nimport {\n Animation,\n Dynamic,\n each,\n exitFullscreen,\n getAbortError,\n getAngle,\n getShortestArc,\n isAbortError,\n isExtendedPosition,\n isFullscreenEnabled,\n isNil,\n logWarn,\n MultiDynamic,\n pluginInterop,\n requestFullscreen,\n throttle,\n toggleClass\n} from './utils';\n\nCache.enabled = true;\n\n/**\n * @summary Main class\n * @memberOf PSV\n * @extends {external:uEvent.EventEmitter}\n */\nexport class Viewer extends EventEmitter {\n\n /**\n * @param {PSV.Options} options\n * @fires PSV.ready\n * @throws {PSV.PSVError} when the configuration is incorrect\n */\n constructor(options) {\n super();\n\n SYSTEM.load();\n\n // must support WebGL\n if (!SYSTEM.isWebGLSupported) {\n throw new PSVError('WebGL is not supported.');\n }\n\n if (SYSTEM.maxTextureWidth === 0) {\n throw new PSVError('Unable to detect system capabilities');\n }\n\n /**\n * @summary Internal properties\n * @member {Object}\n * @protected\n * @property {boolean} ready - when all components are loaded\n * @property {boolean} uiRefresh - if the UI needs to be renderer\n * @property {boolean} needsUpdate - if the view needs to be renderer\n * @property {boolean} fullscreen - if the viewer is currently fullscreen\n * @property {external:THREE.Vector3} direction - direction of the camera\n * @property {number} vFov - vertical FOV\n * @property {number} hFov - horizontal FOV\n * @property {number} aspect - viewer aspect ratio\n * @property {boolean} autorotateEnabled - automatic rotation is enabled\n * @property {PSV.utils.Animation} animationPromise - promise of the current animation\n * @property {Promise} loadingPromise - promise of the setPanorama method\n * @property {boolean} littlePlanet - special tweaks for LittlePlanetAdapter\n * @property {number} idleTime - time of the last user action\n * @property {object} objectsObservers\n * @property {PSV.Size} size - size of the container\n * @property {PSV.PanoData} panoData - panorama metadata, if supported\n */\n this.prop = {\n ready : false,\n uiRefresh : false,\n needsUpdate : false,\n fullscreen : false,\n direction : new Vector3(0, 0, SPHERE_RADIUS),\n vFov : null,\n hFov : null,\n aspect : null,\n autorotateEnabled: false,\n animationPromise : null,\n loadingPromise : null,\n littlePlanet : false,\n idleTime : -1,\n objectsObservers : {},\n size : {\n width : 0,\n height: 0,\n },\n panoData : {\n fullWidth : 0,\n fullHeight : 0,\n croppedWidth : 0,\n croppedHeight: 0,\n croppedX : 0,\n croppedY : 0,\n poseHeading : 0,\n posePitch : 0,\n poseRoll : 0,\n },\n };\n\n /**\n * @summary Configuration holder\n * @type {PSV.Options}\n * @readonly\n */\n this.config = getConfig(options);\n\n /**\n * @summary Top most parent\n * @member {HTMLElement}\n * @readonly\n */\n this.parent = (typeof options.container === 'string') ? document.getElementById(options.container) : options.container;\n this.parent[VIEWER_DATA] = this;\n\n /**\n * @summary Main container\n * @member {HTMLElement}\n * @readonly\n */\n this.container = document.createElement('div');\n this.container.classList.add('psv-container');\n this.parent.appendChild(this.container);\n\n /**\n * @summary Render adapter\n * @type {PSV.adapters.AbstractAdapter}\n * @readonly\n * @package\n */\n this.adapter = new this.config.adapter[0](this, this.config.adapter[1]); // eslint-disable-line new-cap\n\n /**\n * @summary All child components\n * @type {PSV.components.AbstractComponent[]}\n * @readonly\n * @package\n */\n this.children = [];\n\n /**\n * @summary All plugins\n * @type {Object}\n * @readonly\n * @package\n */\n this.plugins = {};\n\n /**\n * @type {PSV.services.Renderer}\n * @readonly\n */\n this.renderer = new Renderer(this);\n\n /**\n * @type {PSV.services.TextureLoader}\n * @readonly\n */\n this.textureLoader = new TextureLoader(this);\n\n /**\n * @type {PSV.services.EventsHandler}\n * @readonly\n */\n this.eventsHandler = new EventsHandler(this);\n\n /**\n * @type {PSV.services.DataHelper}\n * @readonly\n */\n this.dataHelper = new DataHelper(this);\n\n /**\n * @member {PSV.components.Loader}\n * @readonly\n */\n this.loader = new Loader(this);\n\n /**\n * @member {PSV.components.Navbar}\n * @readonly\n */\n this.navbar = new Navbar(this);\n\n /**\n * @member {PSV.components.Panel}\n * @readonly\n */\n this.panel = new Panel(this);\n\n /**\n * @member {PSV.services.TooltipRenderer}\n * @readonly\n */\n this.tooltip = new TooltipRenderer(this);\n\n /**\n * @member {PSV.components.Notification}\n * @readonly\n */\n this.notification = new Notification(this);\n\n /**\n * @member {PSV.components.Overlay}\n * @readonly\n */\n this.overlay = new Overlay(this);\n\n /**\n * @member {Record}\n * @package\n */\n this.dynamics = {\n zoom: new Dynamic((value) => {\n this.prop.vFov = this.dataHelper.zoomLevelToFov(value);\n this.prop.hFov = this.dataHelper.vFovToHFov(this.prop.vFov);\n this.trigger(EVENTS.ZOOM_UPDATED, value);\n }, this.config.defaultZoomLvl, 0, 100),\n\n position: new MultiDynamic({\n longitude: new Dynamic(null, this.config.defaultLong, 0, 2 * Math.PI, true),\n latitude : this.prop.littlePlanet\n ? new Dynamic(null, this.config.defaultLat, 0, Math.PI * 2, true)\n : new Dynamic(null, this.config.defaultLat, -Math.PI / 2, Math.PI / 2),\n }, (position) => {\n this.dataHelper.sphericalCoordsToVector3(position, this.prop.direction);\n this.trigger(EVENTS.POSITION_UPDATED, position);\n }),\n };\n\n this.__updateSpeeds();\n\n this.eventsHandler.init();\n\n this.__resizeRefresh = throttle(() => this.refreshUi('resize'), 500);\n\n // apply container size\n this.resize(this.config.size);\n\n // init plugins\n this.config.plugins.forEach(([plugin, opts]) => {\n this.plugins[plugin.id] = new plugin(this, opts); // eslint-disable-line new-cap\n });\n each(this.plugins, plugin => plugin.init?.());\n\n // init buttons\n this.navbar.setButtons(this.config.navbar);\n\n // load panorama\n if (this.config.panorama) {\n this.setPanorama(this.config.panorama);\n }\n\n toggleClass(this.container, 'psv--is-touch', SYSTEM.isTouchEnabled.initial);\n SYSTEM.isTouchEnabled.promise.then(enabled => toggleClass(this.container, 'psv--is-touch', enabled));\n\n // enable GUI after first render\n this.once(EVENTS.RENDER, () => {\n if (this.config.navbar) {\n this.container.classList.add('psv--has-navbar');\n this.navbar.show();\n }\n\n // Queue autorotate\n if (!isNil(this.config.autorotateDelay)) {\n this.prop.idleTime = performance.now();\n }\n\n this.prop.ready = true;\n\n setTimeout(() => {\n this.refreshUi('init');\n\n this.trigger(EVENTS.READY);\n }, 0);\n });\n }\n\n /**\n * @summary Destroys the viewer\n * @description The memory used by the ThreeJS context is not totally cleared. This will be fixed as soon as possible.\n */\n destroy() {\n this.__stopAll();\n this.stopKeyboardControl();\n this.exitFullscreen();\n\n each(this.plugins, plugin => plugin.destroy());\n delete this.plugins;\n\n this.children.slice().forEach(child => child.destroy());\n this.children.length = 0;\n\n this.eventsHandler.destroy();\n this.renderer.destroy();\n this.textureLoader.destroy();\n this.dataHelper.destroy();\n this.adapter.destroy();\n\n this.parent.removeChild(this.container);\n delete this.parent[VIEWER_DATA];\n\n delete this.parent;\n delete this.container;\n\n delete this.loader;\n delete this.navbar;\n delete this.panel;\n delete this.tooltip;\n delete this.notification;\n delete this.overlay;\n delete this.dynamics;\n\n delete this.config;\n }\n\n /**\n * @summary Refresh UI\n * @package\n */\n refreshUi(reason) {\n if (!this.prop.ready) {\n return;\n }\n\n if (!this.prop.uiRefresh) {\n // console.log(`PhotoSphereViewer: UI Refresh, ${reason}`);\n\n this.prop.uiRefresh = true;\n\n this.children.every((child) => {\n child.refreshUi();\n return this.prop.uiRefresh === true;\n });\n\n this.prop.uiRefresh = false;\n }\n else if (this.prop.uiRefresh !== 'new') {\n this.prop.uiRefresh = 'new';\n\n // wait for current refresh to cancel\n setTimeout(() => {\n this.prop.uiRefresh = false;\n this.refreshUi(reason);\n });\n }\n }\n\n /**\n * @summary Returns the instance of a plugin if it exists\n * @param {Class|string} pluginId\n * @returns {PSV.plugins.AbstractPlugin}\n */\n getPlugin(pluginId) {\n if (typeof pluginId === 'string') {\n return this.plugins[pluginId];\n }\n else {\n const pluginCtor = pluginInterop(pluginId, AbstractPlugin);\n return pluginCtor ? this.plugins[pluginCtor.id] : undefined;\n }\n }\n\n /**\n * @summary Returns the current position of the camera\n * @returns {PSV.Position}\n */\n getPosition() {\n return this.dataHelper.cleanPosition(this.dynamics.position.current);\n }\n\n /**\n * @summary Returns the current zoom level\n * @returns {number}\n */\n getZoomLevel() {\n return this.dynamics.zoom.current;\n }\n\n /**\n * @summary Returns the current viewer size\n * @returns {PSV.Size}\n */\n getSize() {\n return { ...this.prop.size };\n }\n\n /**\n * @summary Checks if the automatic rotation is enabled\n * @returns {boolean}\n */\n isAutorotateEnabled() {\n return this.prop.autorotateEnabled;\n }\n\n /**\n * @summary Checks if the viewer is in fullscreen\n * @returns {boolean}\n */\n isFullscreenEnabled() {\n if (SYSTEM.fullscreenEvent) {\n return isFullscreenEnabled(this.container);\n }\n else {\n return this.prop.fullscreen;\n }\n }\n\n /**\n * @summary Flags the view has changed for the next render\n */\n needsUpdate() {\n this.prop.needsUpdate = true;\n }\n\n /**\n * @summary Resizes the canvas when the window is resized\n * @fires PSV.size-updated\n */\n autoSize() {\n if (this.container.clientWidth !== this.prop.size.width || this.container.clientHeight !== this.prop.size.height) {\n this.prop.size.width = Math.round(this.container.clientWidth);\n this.prop.size.height = Math.round(this.container.clientHeight);\n this.prop.aspect = this.prop.size.width / this.prop.size.height;\n this.prop.hFov = this.dataHelper.vFovToHFov(this.prop.vFov);\n\n this.trigger(EVENTS.SIZE_UPDATED, this.getSize());\n this.__resizeRefresh();\n }\n }\n\n /**\n * @summary Loads a new panorama file\n * @description Loads a new panorama file, optionally changing the camera position/zoom and activating the transition animation.
\n * If the \"options\" parameter is not defined, the camera will not move and the ongoing animation will continue.
\n * If another loading is already in progress it will be aborted.\n * @param {*} path - URL of the new panorama file\n * @param {PSV.PanoramaOptions} [options]\n * @returns {Promise} resolves false if the loading was aborted by another call\n */\n setPanorama(path, options = {}) {\n this.textureLoader.abortLoading();\n this.prop.transitionAnimation?.cancel();\n\n // apply default parameters on first load\n if (!this.prop.ready) {\n ['sphereCorrection', 'panoData', 'overlay', 'overlayOpacity'].forEach((opt) => {\n if (!(opt in options)) {\n options[opt] = this.config[opt];\n }\n });\n }\n\n if (options.transition === undefined || options.transition === true) {\n options.transition = DEFAULT_TRANSITION;\n }\n if (options.showLoader === undefined) {\n options.showLoader = true;\n }\n if (options.caption === undefined) {\n options.caption = this.config.caption;\n }\n if (options.description === undefined) {\n options.description = this.config.description;\n }\n if (!options.panoData && typeof this.config.panoData === 'function') {\n options.panoData = this.config.panoData;\n }\n\n const positionProvided = isExtendedPosition(options);\n const zoomProvided = 'zoom' in options;\n\n if (positionProvided || zoomProvided) {\n this.__stopAll();\n }\n\n this.hideError();\n\n this.config.panorama = path;\n this.config.caption = options.caption;\n this.config.description = options.description;\n\n const done = (err) => {\n this.loader.hide();\n\n this.prop.loadingPromise = null;\n\n if (isAbortError(err)) {\n return false;\n }\n else if (err) {\n this.navbar.setCaption('');\n this.showError(this.config.lang.loadError);\n console.error(err);\n throw err;\n }\n else {\n this.resetIdleTimer();\n this.setOverlay(options.overlay, options.overlayOpacity);\n this.navbar.setCaption(this.config.caption);\n return true;\n }\n };\n\n this.navbar.setCaption(`${this.config.loadingTxt || ''}`);\n if (options.showLoader || !this.prop.ready) {\n this.loader.show();\n }\n\n const loadingPromise = this.adapter.loadTexture(this.config.panorama, options.panoData)\n .then((textureData) => {\n // check if another panorama was requested\n if (textureData.panorama !== this.config.panorama) {\n this.adapter.disposeTexture(textureData);\n throw getAbortError();\n }\n return textureData;\n });\n\n if (!options.transition || !this.prop.ready || !this.adapter.supportsTransition(this.config.panorama)) {\n this.prop.loadingPromise = loadingPromise\n .then((textureData) => {\n this.renderer.show();\n this.renderer.setTexture(textureData);\n this.renderer.setPanoramaPose(textureData.panoData);\n this.renderer.setSphereCorrection(options.sphereCorrection);\n\n if (zoomProvided) {\n this.zoom(options.zoom);\n }\n if (positionProvided) {\n this.rotate(options);\n }\n })\n .then(done, done);\n }\n else {\n this.prop.loadingPromise = loadingPromise\n .then((textureData) => {\n this.loader.hide();\n\n this.prop.transitionAnimation = this.renderer.transition(textureData, options);\n return this.prop.transitionAnimation;\n })\n .then((completed) => {\n this.prop.transitionAnimation = null;\n if (!completed) {\n throw getAbortError();\n }\n })\n .then(done, done);\n }\n\n return this.prop.loadingPromise;\n }\n\n /**\n * @summary Loads a new overlay\n * @param {*} path - URL of the new overlay file\n * @param {number} [opacity=1]\n * @returns {Promise}\n */\n setOverlay(path, opacity = 1) {\n if (!path) {\n if (this.adapter.constructor.supportsOverlay) {\n this.renderer.setOverlay(null, 0);\n }\n\n return Promise.resolve();\n }\n else {\n if (!this.adapter.constructor.supportsOverlay) {\n return Promise.reject(new PSVError(`${this.adapter.constructor.id} adapter does not supports overlay`));\n }\n\n return this.adapter.loadTexture(path, (image) => {\n const p = this.prop.panoData;\n const r = image.width / p.croppedWidth;\n return {\n fullWidth : r * p.fullWidth,\n fullHeight : r * p.fullHeight,\n croppedWidth : r * p.croppedWidth,\n croppedHeight: r * p.croppedHeight,\n croppedX : r * p.croppedX,\n croppedY : r * p.croppedY,\n };\n }, false)\n .then((textureData) => {\n this.renderer.setOverlay(textureData, opacity);\n });\n }\n }\n\n /**\n * @summary Update options\n * @param {PSV.Options} options\n * @fires PSV.config-changed\n * @throws {PSV.PSVError} when the configuration is incorrect\n */\n setOptions(options) {\n const rawConfig = {\n ...this.config,\n ...options,\n };\n\n each(options, (value, key) => {\n if (DEPRECATED_OPTIONS[key]) {\n logWarn(DEPRECATED_OPTIONS[key]);\n return;\n }\n\n if (!Object.prototype.hasOwnProperty.call(DEFAULTS, key)) {\n throw new PSVError(`Unknown option ${key}`);\n }\n\n if (READONLY_OPTIONS[key]) {\n throw new PSVError(READONLY_OPTIONS[key]);\n }\n\n if (CONFIG_PARSERS[key]) {\n this.config[key] = CONFIG_PARSERS[key](value, rawConfig);\n }\n else {\n this.config[key] = value;\n }\n\n switch (key) {\n case 'overlay':\n case 'overlayOpacity':\n this.setOverlay(this.config.overlay, this.config.overlayOpacity);\n break;\n\n case 'caption':\n case 'description':\n this.navbar.setCaption(this.config.caption);\n break;\n\n case 'size':\n this.resize(value);\n break;\n\n case 'sphereCorrection':\n this.renderer.setSphereCorrection(value);\n break;\n\n case 'navbar':\n case 'lang':\n this.navbar.setButtons(this.config.navbar);\n break;\n\n case 'moveSpeed':\n case 'zoomSpeed':\n this.__updateSpeeds();\n break;\n\n case 'minFov':\n case 'maxFov':\n this.dynamics.zoom.setValue(this.dataHelper.fovToZoomLevel(this.prop.vFov));\n this.trigger(EVENTS.ZOOM_UPDATED, this.getZoomLevel());\n break;\n\n case 'canvasBackground':\n this.renderer.canvasContainer.style.background = this.config.canvasBackground;\n break;\n\n case 'autorotateIdle':\n this.resetIdleTimer();\n break;\n\n default:\n break;\n }\n });\n\n this.needsUpdate();\n this.refreshUi('set options');\n\n this.trigger(EVENTS.CONFIG_CHANGED, Object.keys(options));\n }\n\n /**\n * @summary Update options\n * @param {string} option\n * @param {any} value\n * @fires PSV.config-changed\n * @throws {PSV.PSVError} when the configuration is incorrect\n */\n setOption(option, value) {\n this.setOptions({ [option]: value });\n }\n\n /**\n * @summary Restarts the idle timer (if `autorotateIdle=true`)\n * @package\n */\n resetIdleTimer() {\n this.prop.idleTime = this.config.autorotateIdle ? performance.now() : -1;\n }\n\n /**\n * @summary Stops the idle timer\n * @package\n */\n disableIdleTimer() {\n this.prop.idleTime = -1;\n }\n\n /**\n * @summary Starts the automatic rotation\n * @fires PSV.autorotate\n */\n startAutorotate(refresh = false) {\n if (refresh && !this.isAutorotateEnabled()) {\n return;\n }\n if (!refresh && this.isAutorotateEnabled()) {\n return;\n }\n\n if (!refresh) {\n this.__stopAll();\n }\n\n this.dynamics.position.roll({\n longitude: this.config.autorotateSpeed < 0,\n }, Math.abs(this.config.autorotateSpeed / this.config.moveSpeed));\n\n this.dynamics.position.goto({\n latitude: this.config.autorotateLat,\n }, Math.abs(this.config.autorotateSpeed / this.config.moveSpeed));\n\n if (this.config.autorotateZoomLvl !== null) {\n this.dynamics.zoom.goto(this.config.autorotateZoomLvl);\n }\n\n this.prop.autorotateEnabled = true;\n\n if (!refresh) {\n this.trigger(EVENTS.AUTOROTATE, true);\n }\n }\n\n /**\n * @summary Stops the automatic rotation\n * @fires PSV.autorotate\n */\n stopAutorotate() {\n if (this.isAutorotateEnabled()) {\n this.dynamics.position.stop();\n this.dynamics.zoom.stop();\n\n this.prop.autorotateEnabled = false;\n\n this.trigger(EVENTS.AUTOROTATE, false);\n }\n }\n\n /**\n * @summary Starts or stops the automatic rotation\n * @fires PSV.autorotate\n */\n toggleAutorotate() {\n if (this.isAutorotateEnabled()) {\n this.stopAutorotate();\n }\n else {\n this.startAutorotate();\n }\n }\n\n /**\n * @summary Displays an error message over the viewer\n * @param {string} message\n */\n showError(message) {\n this.overlay.show({\n id : IDS.ERROR,\n image : errorIcon,\n text : message,\n dissmisable: false,\n });\n }\n\n /**\n * @summary Hides the error message\n */\n hideError() {\n this.overlay.hide(IDS.ERROR);\n }\n\n /**\n * @summary Rotates the view to specific longitude and latitude\n * @param {PSV.ExtendedPosition} position\n * @fires PSV.before-rotate\n * @fires PSV.position-updated\n */\n rotate(position) {\n const e = this.trigger(EVENTS.BEFORE_ROTATE, position);\n if (e.isDefaultPrevented()) {\n return;\n }\n\n const cleanPosition = this.change(CHANGE_EVENTS.GET_ROTATE_POSITION, this.dataHelper.cleanPosition(position));\n this.dynamics.position.setValue(cleanPosition);\n }\n\n /**\n * @summary Rotates and zooms the view with a smooth animation\n * @param {PSV.AnimateOptions} options - position and/or zoom level\n * @returns {PSV.utils.Animation}\n */\n animate(options) {\n this.__stopAll();\n\n const positionProvided = isExtendedPosition(options);\n const zoomProvided = options.zoom !== undefined;\n\n const animProperties = {};\n let duration;\n\n // clean/filter position and compute duration\n if (positionProvided) {\n const cleanPosition = this.change(CHANGE_EVENTS.GET_ANIMATE_POSITION, this.dataHelper.cleanPosition(options));\n const currentPosition = this.getPosition();\n\n // longitude offset for shortest arc\n const tOffset = getShortestArc(currentPosition.longitude, cleanPosition.longitude);\n\n animProperties.longitude = { start: currentPosition.longitude, end: currentPosition.longitude + tOffset };\n animProperties.latitude = { start: currentPosition.latitude, end: cleanPosition.latitude };\n\n duration = this.dataHelper.speedToDuration(options.speed, getAngle(currentPosition, cleanPosition));\n }\n\n // clean/filter zoom and compute duration\n if (zoomProvided) {\n const dZoom = Math.abs(options.zoom - this.getZoomLevel());\n\n animProperties.zoom = { start: this.getZoomLevel(), end: options.zoom };\n\n if (!duration) {\n // if animating zoom only and a speed is given, use an arbitrary PI/4 to compute the duration\n duration = this.dataHelper.speedToDuration(options.speed, Math.PI / 4 * dZoom / 100);\n }\n }\n\n // if no animation needed\n if (!duration) {\n if (positionProvided) {\n this.rotate(options);\n }\n if (zoomProvided) {\n this.zoom(options.zoom);\n }\n\n return new Animation();\n }\n\n this.prop.animationPromise = new Animation({\n properties: animProperties,\n duration : Math.max(ANIMATION_MIN_DURATION, duration),\n easing : 'inOutSine',\n onTick : (properties) => {\n if (positionProvided) {\n this.rotate(properties);\n }\n if (zoomProvided) {\n this.zoom(properties.zoom);\n }\n },\n });\n\n this.prop.animationPromise.then(() => {\n this.prop.animationPromise = null;\n this.resetIdleTimer();\n });\n\n return this.prop.animationPromise;\n }\n\n /**\n * @summary Stops the ongoing animation\n * @description The return value is a Promise because the is no guaranty the animation can be stopped synchronously.\n * @returns {Promise} Resolved when the animation has ben cancelled\n */\n stopAnimation() {\n if (this.prop.animationPromise) {\n this.prop.animationPromise.cancel();\n return this.prop.animationPromise;\n }\n else {\n return Promise.resolve();\n }\n }\n\n /**\n * @summary Zooms to a specific level between `max_fov` and `min_fov`\n * @param {number} level - new zoom level from 0 to 100\n * @fires PSV.zoom-updated\n */\n zoom(level) {\n this.dynamics.zoom.setValue(level);\n }\n\n /**\n * @summary Increases the zoom level\n * @param {number} [step=1]\n */\n zoomIn(step = 1) {\n this.dynamics.zoom.step(step);\n }\n\n /**\n * @summary Decreases the zoom level\n * @param {number} [step=1]\n */\n zoomOut(step = 1) {\n this.dynamics.zoom.step(-step);\n }\n\n /**\n * @summary Resizes the viewer\n * @param {PSV.CssSize} size\n */\n resize(size) {\n ['width', 'height'].forEach((dim) => {\n if (size && size[dim]) {\n if (/^[0-9.]+$/.test(size[dim])) {\n size[dim] += 'px';\n }\n this.parent.style[dim] = size[dim];\n }\n });\n\n this.autoSize();\n }\n\n /**\n * @summary Enters the fullscreen mode\n * @fires PSV.fullscreen-updated\n */\n enterFullscreen() {\n if (SYSTEM.fullscreenEvent) {\n requestFullscreen(this.container);\n }\n else {\n this.container.classList.add('psv-container--fullscreen');\n this.autoSize();\n this.eventsHandler.__fullscreenToggled(true);\n }\n }\n\n /**\n * @summary Exits the fullscreen mode\n * @fires PSV.fullscreen-updated\n */\n exitFullscreen() {\n if (this.isFullscreenEnabled()) {\n if (SYSTEM.fullscreenEvent) {\n exitFullscreen();\n }\n else {\n this.container.classList.remove('psv-container--fullscreen');\n this.autoSize();\n this.eventsHandler.__fullscreenToggled(false);\n }\n }\n }\n\n /**\n * @summary Enters or exits the fullscreen mode\n * @fires PSV.fullscreen-updated\n */\n toggleFullscreen() {\n if (!this.isFullscreenEnabled()) {\n this.enterFullscreen();\n }\n else {\n this.exitFullscreen();\n }\n }\n\n /**\n * @summary Enables the keyboard controls (done automatically when entering fullscreen)\n */\n startKeyboardControl() {\n this.eventsHandler.enableKeyboard();\n }\n\n /**\n * @summary Disables the keyboard controls (done automatically when exiting fullscreen)\n */\n stopKeyboardControl() {\n this.eventsHandler.disableKeyboard();\n }\n\n /**\n * @summary Subscribes to events on objects in the scene\n * @param {string} userDataKey - only objects with the following `userData` will be emitted\n * @param {EventListener} listener - must implement `handleEvent`\n * @return {function} call to stop the subscription\n * @package\n */\n observeObjects(userDataKey, listener) {\n this.prop.objectsObservers[userDataKey] = { listener };\n\n return () => {\n delete this.prop.objectsObservers[userDataKey];\n };\n }\n\n /**\n * @summary Stops all current animations\n * @returns {Promise}\n * @package\n */\n __stopAll() {\n this.trigger(EVENTS.STOP_ALL);\n\n this.disableIdleTimer();\n this.stopAutorotate();\n return this.stopAnimation();\n }\n\n /**\n * @summary Recomputes dynamics speeds\n * @private\n */\n __updateSpeeds() {\n this.dynamics.zoom.setSpeed(this.config.zoomSpeed * 50);\n this.dynamics.position.setSpeed(MathUtils.degToRad(this.config.moveSpeed * 50));\n }\n\n}\n"],"names":["PSVError","message","Error","captureStackTrace","stack","prototype","Object","create","name","constructor","AbstractAdapter","psv","destroy","supportsTransition","panorama","supportsPreload","loadTexture","newPanoData","useXmpPanoData","createMesh","scale","setTexture","mesh","textureData","transition","setTextureOpacity","opacity","disposeTexture","setOverlay","createOverlayMaterial","additionalUniforms","overrideVertexShader","ShaderMaterial","uniforms","OVERLAY_UNIFORMS","value","Texture","overlay","globalOpacity","overlayOpacity","vertexShader","fragmentShader","id","supportsDownload","supportsOverlay","DEFAULT_TRANSITION","ANIMATION_MIN_DURATION","MOVE_THRESHOLD","DBLCLICK_DELAY","LONGTOUCH_DELAY","TWOFINGERSOVERLAY_DELAY","CTRLZOOM_TIMEOUT","INERTIA_WINDOW","SPHERE_RADIUS","VIEWER_DATA","MESH_USER_DATA","ACTIONS","ROTATE_LAT_UP","ROTATE_LAT_DOWN","ROTATE_LONG_RIGHT","ROTATE_LONG_LEFT","ZOOM_IN","ZOOM_OUT","TOGGLE_AUTOROTATE","EVENTS","AUTOROTATE","BEFORE_RENDER","BEFORE_ROTATE","CLICK","CLOSE_PANEL","CONFIG_CHANGED","DOUBLE_CLICK","FULLSCREEN_UPDATED","HIDE_NOTIFICATION","HIDE_OVERLAY","HIDE_TOOLTIP","KEY_PRESS","LOAD_PROGRESS","OPEN_PANEL","PANORAMA_LOADED","POSITION_UPDATED","READY","RENDER","SHOW_NOTIFICATION","SHOW_OVERLAY","SHOW_TOOLTIP","SIZE_UPDATED","STOP_ALL","ZOOM_UPDATED","CHANGE_EVENTS","GET_ANIMATE_POSITION","GET_ROTATE_POSITION","OBJECT_EVENTS","ENTER_OBJECT","HOVER_OBJECT","LEAVE_OBJECT","IDS","MENU","TWO_FINGERS","CTRL_ZOOM","ERROR","DESCRIPTION","EASINGS","linear","t","inQuad","outQuad","inOutQuad","inCubic","outCubic","inOutCubic","inQuart","outQuart","inOutQuart","inQuint","outQuint","inOutQuint","inSine","Math","cos","PI","outSine","sin","inOutSine","inExpo","pow","outExpo","inOutExpo","inCirc","sqrt","outCirc","inOutCirc","KEY_CODES","Enter","Control","Escape","Space","PageUp","PageDown","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","Delete","Plus","Minus","LOCALSTORAGE_TOUCH_SUPPORT","SYSTEM","loaded","pixelRatio","isWebGLSupported","isTouchEnabled","maxTextureWidth","mouseWheelEvent","fullscreenEvent","load","ctx","getWebGLCtx","window","devicePixelRatio","getMaxTextureWidth","getMouseWheelEvent","getFullscreenEvent","maxCanvasWidth","getMaxCanvasWidth","canvas","document","createElement","names","context","getContext","some","e","initial","navigator","maxTouchPoints","localStorage","promise","Promise","resolve","clear","listenerMouse","listenerTouch","listenerTimeout","addEventListener","listenerTimeoutId","setTimeout","removeEventListener","clearTimeout","getParameter","MAX_TEXTURE_SIZE","maxWidth","width","height","fillStyle","fillRect","getImageData","data","onmousewheel","undefined","FULLSCREEN_EVT_MAP","exitFullscreen","webkitExitFullscreen","mozCancelFullScreen","msExitFullscreen","validExits","keys","filter","exit","length","toggleClass","element","className","active","classList","toggle","add","remove","addClasses","split","removeClasses","hasParent","el","parent","test","parentNode","getClosest","selector","matches","SVGElement","parentElement","getPosition","left","top","offsetLeft","scrollLeft","clientLeft","offsetTop","scrollTop","clientTop","offsetParent","isFullscreenEnabled","elt","fullscreenElement","webkitFullscreenElement","requestFullscreen","webkitRequestFullscreen","call","getStyle","prop","getComputedStyle","normalizeWheel","event","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","spinX","spinY","pixelX","pixelY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","bound","x","min","max","MathUtils","clamp","loop","result","isPowerOfTwo","sum","array","reduce","a","b","distance","p1","p2","y","getShortestArc","from","to","tCandidates","candidate","newCandidate","abs","Infinity","getAngle","position1","position2","acos","latitude","longitude","greatArcDistance","λ1","φ1","λ2","φ2","dasherize","str","replace","s","i","toLowerCase","throttle","func","wait","self","args","timeout","previous","later","Date","now","apply","remaining","arguments","isPlainObject","obj","getPrototypeOf","proto","toString","deepmerge","target","src","first","merge","Array","isArray","forEach","key","clone","isEmpty","each","object","callback","isNil","val","firstNonNull","values","deepEqual","obj1","obj2","isObject","pluginInterop","plugin","entries","p","getAbortError","error","isAbortError","err","logWarn","console","warn","isExtendedPosition","key1","key2","getXMPValue","attr","match","parseInt","isNaN","CSS_POSITIONS","bottom","right","center","parsePosition","tokens","toLocaleLowerCase","slice","xFirst","map","token","reverse","parsed","join","parseFloat","X_VALUES","Y_VALUES","POS_VALUES","CENTER","cleanPosition","allowCenter","cssOrder","indexOf","positionIsOrdered","parseSpeed","speed","speedStr","trim","speedValue","speedUnit","degToRad","parseAngle","angle","zeroCenter","halfCircle","unit","createTexture","img","texture","needsUpdate","minFilter","LinearFilter","generateMipmaps","quaternion","Quaternion","applyEulerInverse","vector","euler","setFromEuler","invert","applyQuaternion","Animation","options","__callbacks","easing","__start","delay","__delayTimeout","__animationFrame","requestAnimationFrame","__run","__resolved","timestamp","__cancelled","progress","duration","current","properties","start","end","onTick","__resolve","cb","then","onFulfilled","push","cancel","cancelAnimationFrame","Dynamic","fn","defaultValue","loopValue","mode","STOP","speedMult","currentSpeed","setSpeed","goto","position","POSITION","step","roll","INFINITE","stop","setValue","update","elapsed","dstStop","targetSpeed","next","MultiDynamic","dynamics","d","positions","steps","rolls","hasUpdates","dynamic","Slider","container","direction","onUpdate","mousedown","mouseover","handleEvent","type","stopPropagation","__onMouseDown","__onMouseEnter","__onMouseLeave","__onTouchStart","__onMouseMove","__onTouchMove","__onMouseUp","__onTouchEnd","evt","__update","changedTouches","moving","boundingClientRect","getBoundingClientRect","cursor","vertical","pos","size","click","VERTICAL","EventEmitter","HORIZONTAL","EquirectangularAdapter","config","resolution","SPHERE_SEGMENTS","SPHERE_HORIZONTAL_SEGMENTS","useXmpData","reject","__loadXMP","loader","setProgress","xmpPanoData","textureLoader","loadImage","panoData","fullWidth","fullHeight","croppedWidth","croppedHeight","croppedX","croppedY","poseHeading","posePitch","poseRoll","__createEquirectangularTexture","onProgress","loadFile","blob","__loadBlobAsString","binary","substring","includes","reader","FileReader","onload","onerror","readAsText","ratio","resizedPanoData","buffer","drawImage","geometry","SphereGeometry","material","Mesh","__setUniform","transparent","dispose","uniform","AbstractComponent","children","visible","appendChild","removeChild","childIdx","splice","child","refreshUi","every","uiRefresh","isVisible","hide","show","style","display","AbstractButton","navbar","collapsable","tabbable","enabled","supported","collapsed","offsetWidth","icon","__setIcon","lang","title","tabIndex","onClick","checkSupported","supportedOrObject","isSupported","toggleActive","iconActive","refresh","disable","enable","collapse","uncollapse","innerHTML","querySelector","groupId","AutorotateButton","on","off","isAutorotateEnabled","autorotateIdle","resetIdleTimer","toggleAutorotate","play","playActive","CustomButton","random","substr","content","MODE_NOTIF","MODE_PANEL","DescriptionButton","closed","__close","caption","getButton","captionHidden","hasDescription","description","__open","notification","panel","info","DownloadButton","link","href","downloadUrl","download","pop","adapter","FullscreenButton","toggleFullscreen","fullscreenIn","fullscreenOut","MenuButton","__hideMenu","__showMenu","MENU_TEMPLATE","BUTTON_DATA","noMargin","clickHandler","li","buttonId","dataset","menuIcon","buttons","dataKey","menu","button","PressHandler","time","down","getTime","up","getOrientedArrow","arrow","AbstractMoveButton","move","handler","__stopAll","MoveDownButton","MoveLeftButton","MoveRightButton","MoveUpButton","AbstractZoomButton","zoom","ZoomInButton","zoomIn","ZoomOutButton","zoomOut","ZoomRangeButton","mediaMinWidth","zoomRange","zoomValue","slider","__onSliderUpdate","ready","__moveZoomValue","getZoomLevel","once","level","AbstractPlugin","init","DEFAULTS","plugins","loadingImg","loadingTxt","fisheye","minFov","maxFov","defaultZoomLvl","defaultLong","defaultLat","sphereCorrection","moveSpeed","zoomSpeed","autorotateDelay","autorotateSpeed","autorotateLat","autorotateZoomLvl","moveInertia","mousewheel","mousemove","mousewheelCtrlKey","touchmoveTwoFingers","requestHeaders","canvasBackground","withCredentials","autorotate","fullscreen","twoFingers","ctrlZoom","loadError","keyboard","READONLY_OPTIONS","DEPRECATED_OPTIONS","captureCursor","CONFIG_PARSERS","getConfig","tempConfig","hasOwnProperty","NavbarCaption","contentWidth","setCaption","html","__refreshButton","AVAILABLE_BUTTONS","AVAILABLE_GROUPS","registerButton","defaultPosition","unshift","Navbar","setButtons","item","cleanedButtons","__cleanButtons","buttonCtor","warnNotFound","availableWidth","totalWidth","visibleButtons","collapsableButtons","Loader","clientWidth","tickness","lastChild","inner","round","maxHeight","clearRect","lineWidth","strokeStyle","beginPath","arc","stroke","trigger","Notification","contentId","Overlay","dissmisable","image","text","subtext","preventDefault","PANEL_MIN_WIDTH","Panel","mouseX","mouseY","keyHandler","resizer","closeBtn","wasVisible","focus","__startResize","__resize","touches","clientX","clientY","AbstractService","vector2","Vector2","vector3","Vector3","eulerZero","Euler","DataHelper","fovToZoomLevel","fov","temp","zoomLevelToFov","vFovToHFov","vFov","radToDeg","atan","tan","aspect","speedToDuration","textureCoordsToSphericalCoords","point","relativeX","relativeY","equals","renderer","rotation","meshContainer","sphericalCoordsToVector3","applyEuler","vector3ToSphericalCoords","sphericalCoordsToTextureCoords","relativeLong","relativeLat","z","phi","theta","atan2","viewerCoordsToVector3","viewerPoint","sphereIntersect","getIntersections","userData","vector3ToViewerCoords","vectorClone","project","camera","sphericalCoordsToViewerCoords","raycaster","setFromCamera","intersectObjects","scene","littlePlanet","cleanSphereCorrection","pan","tilt","cleanPanoramaPose","IDLE","MOVING","INERTIA","EventsHandler","state","moveThreshold","keyboardEnabled","startMouseX","startMouseY","mouseHistory","pinchDist","ctrlKeyDown","dblclickData","dblclickTimeout","longtouchTimeout","twofingersTimeout","ctrlZoomTimeout","__onResize","autoSize","passive","__onKeyDown","__onKeyUp","__fullscreenToggled","__onMouseWheel","enableKeyboard","disableKeyboard","e2","isDefaultPrevented","action","__stopMove","__move","objectsObservers","viewerPos","intersections","dataHelper","emit","observer","listener","CustomEvent","originalEvent","intersection","find","touch","__cancelLongTouch","__cancelTwoFingersOverlay","__startMoveZoom","gestureIcon","__moveZoom","mousewheelIcon","delta","force","startKeyboardControl","stopKeyboardControl","__resetMove","__logMouseMove","rightclick","__stopMoveInertia","stopAnimation","__click","curve","SplineCurve","getTangent","curr","total","prev","currentClientX","currentClientY","animationPromise","__applyMove","done","boundingRect","viewerX","viewerY","sphereIntersection","sphericalCoords","objects","o","textureCoords","textureX","textureY","NaN","hFov","currentPosition","rotate","last","Renderer","WebGLRenderer","alpha","antialias","setPixelRatio","domElement","Scene","PerspectiveCamera","Group","Raycaster","canvasContainer","background","setAnimationLoop","__cleanTHREEScene","__onSizeUpdated","__onZoomUpdated","__onPositionUpdated","setSize","updateProjectionMatrix","set","lookAt","copy","multiplyScalar","negate","__renderLoop","idleTime","startAutorotate","render","setPanoramaPose","cleanCorrection","setSphereCorrection","positionProvided","zoomProvided","group","verticalAxis","rotateOnWorldAxis","horizontalAxis","cross","getWorldDirection","normalize","animation","completed","traverse","TextureLoader","FileLoader","setResponseType","setWithCredentials","setRequestHeader","abortLoading","url","lengthComputable","newProgress","createElementNS","URL","revokeObjectURL","createObjectURL","preloadPanorama","STATE","NONE","SHOWING","HIDING","Tooltip","__onTransitionEnd","rect","__waitImages","box","posClass","arrowTop","arrowLeft","__computeTooltipPosition","swapY","swapX","ordered","newPos","propertyName","offsetSide","border","offsetX","offsetY","images","querySelectorAll","promises","all","TooltipRenderer","testTooltip","tooltip","Cache","Viewer","autorotateEnabled","loadingPromise","getElementById","eventsHandler","__updateSpeeds","__resizeRefresh","resize","opts","setPanorama","performance","reason","getPlugin","pluginId","pluginCtor","getSize","clientHeight","path","transitionAnimation","opt","showLoader","hideError","showError","r","setOptions","rawConfig","setOption","option","disableIdleTimer","stopAutorotate","errorIcon","change","animate","animProperties","tOffset","dZoom","dim","enterFullscreen","observeObjects","userDataKey"],"mappings":"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A,QAAQ,EAAW,SANE;EAOrBC,EAAAA,iBAAiB,EAAE,kBAAA;EAPE,CAAhB,CAAA;EAUP;EACA;EACA;EACA;EACA;EACA;;EACO,IAAMC,MAAM,GAAG;EACpB;EACF;EACA;EACA;EACA;EACA;EACEC,EAAAA,UAAU,EAAU,YAPA;;EAQpB;EACF;EACA;EACA;EACA;EACA;EACA;EACEC,EAAAA,aAAa,EAAO,eAfA;;EAgBpB;EACF;EACA;EACA;EACA;EACA;EACEC,EAAAA,aAAa,EAAO,eAtBA;;EAuBpB;EACF;EACA;EACA;EACA;EACA;EACEC,EAAAA,KAAK,EAAe,OA7BA;;EA8BpB;EACF;EACA;EACA;EACA;EACA;EACEC,EAAAA,WAAW,EAAS,aApCA;;EAqCpB;EACF;EACA;EACA;EACA;EACA;EACEC,EAAAA,cAAc,EAAM,gBA3CA;;EA4CpB;EACF;EACA;EACA;EACA;EACA;EACEC,EAAAA,YAAY,EAAQ,UAlDA;;EAmDpB;EACF;EACA;EACA;EACA;EACA;EACEC,EAAAA,kBAAkB,EAAE,oBAzDA;;EA0DpB;EACF;EACA;EACA;EACA;EACA;EACEC,EAAAA,iBAAiB,EAAG,mBAhEA;;EAiEpB;EACF;EACA;EACA;EACA;EACA;EACEC,EAAAA,YAAY,EAAQ,cAvEA;;EAwEpB;EACF;EACA;EACA;EACA;EACA;EACEC,EAAAA,YAAY,EAAQ,cA9EA;;EA+EpB;EACF;EACA;EACA;EACA;EACA;EACEC,EAAAA,SAAS,EAAW,WArFA;;EAsFpB;EACF;EACA;EACA;EACA;EACA;EACEC,EAAAA,aAAa,EAAO,eA5FA;;EA6FpB;EACF;EACA;EACA;EACA;EACA;EACEC,EAAAA,UAAU,EAAU,YAnGA;;EAoGpB;EACF;EACA;EACA;EACA;EACA;EACEC,EAAAA,eAAe,EAAK,iBA1GA;;EA2GpB;EACF;EACA;EACA;EACA;EACA;EACEC,EAAAA,gBAAgB,EAAI,kBAjHA;;EAkHpB;EACF;EACA;EACA;EACA;EACEC,EAAAA,KAAK,EAAe,OAvHA;;EAwHpB;EACF;EACA;EACA;EACA;EACEC,EAAAA,M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"}