@openlist-frontend/openlist-frontend 4.2.0 → 4.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/VERSION +1 -1
- package/dist/assets/polyfills-legacy-h7H8XqQx.js +1 -0
- package/dist/i18n.tar.gz +0 -0
- package/dist/index.html +1 -1
- package/dist/lite/VERSION +1 -1
- package/dist/lite/assets/{2fa-Cpwit0Sr.js → 2fa-DTutmNbf.js} +1 -1
- package/dist/lite/assets/{2fa-legacy-BV80Xmmb.js → 2fa-legacy-DbBySHVF.js} +1 -1
- package/dist/lite/assets/{About-Cu2-75RR.js → About-_hJuNaH_.js} +1 -1
- package/dist/lite/assets/{About-legacy-C37sOQhm.js → About-legacy-CaLm7kbI.js} +1 -1
- package/dist/lite/assets/{AddOrEdit-Wdbp4PWO.js → AddOrEdit-49-UQtaG.js} +1 -1
- package/dist/lite/assets/{AddOrEdit-BWduAPOa.js → AddOrEdit-BCTuahUP.js} +1 -1
- package/dist/lite/assets/{AddOrEdit-CZnPofX2.js → AddOrEdit-Bgz6_5Sb.js} +1 -1
- package/dist/lite/assets/{AddOrEdit-cxf_NyVS.js → AddOrEdit-CbKEYHAy.js} +1 -1
- package/dist/lite/assets/{AddOrEdit-legacy-DAXPEGkN.js → AddOrEdit-legacy-CcWxIJSY.js} +1 -1
- package/dist/lite/assets/{AddOrEdit-legacy-2bg6358l.js → AddOrEdit-legacy-DOf8eTkz.js} +1 -1
- package/dist/lite/assets/{AddOrEdit-legacy-BB_Q5cWC.js → AddOrEdit-legacy-DvuS1lGq.js} +1 -1
- package/dist/lite/assets/{AddOrEdit-legacy-Bi5RkSpR.js → AddOrEdit-legacy-SS88nL_8.js} +1 -1
- package/dist/lite/assets/Common-7SPE00KT.js +1 -0
- package/dist/lite/assets/{Common-SxI9gPMx.js → Common-DKBpZ31X.js} +1 -1
- package/dist/lite/assets/{Common-legacy-DlpN8uIa.js → Common-legacy-B179Edqf.js} +1 -1
- package/dist/lite/assets/Common-legacy-DG884Joe.js +1 -0
- package/dist/lite/assets/{Copy-DTFns9Y1.js → Copy-BQypLOnU.js} +1 -1
- package/dist/lite/assets/{Copy-legacy-B72Ffy5O.js → Copy-legacy-CHg9MrvY.js} +1 -1
- package/dist/lite/assets/{Decompress-legacy-CZ_oH15V.js → Decompress-legacy-Cb2O6mH9.js} +1 -1
- package/dist/lite/assets/{Decompress-BPew2ezc.js → Decompress-sZhi71xA.js} +1 -1
- package/dist/lite/assets/{DeletePopover-cSxOxJZY.js → DeletePopover-9knkuVst.js} +1 -1
- package/dist/lite/assets/{DeletePopover-legacy-CBtUkOSh.js → DeletePopover-legacy-KFuQEYkg.js} +1 -1
- package/dist/lite/assets/{File-D7bnUBYC.js → File-Cm5ZVXiU.js} +1 -1
- package/dist/lite/assets/{File-legacy-aPuubWt-.js → File-legacy-BghKHFM3.js} +1 -1
- package/dist/lite/assets/{Folder-legacy-Bp34_ra2.js → Folder-legacy-rxbbWmwF.js} +1 -1
- package/dist/lite/assets/{Folder-DdumvcC1.js → Folder-u_3vXWLj.js} +3 -3
- package/dist/lite/assets/{Grid-C9qEJXle.js → Grid-CQOeEHng.js} +1 -1
- package/dist/lite/assets/{Grid-legacy-DFmTlJOv.js → Grid-legacy-CZ5i1Iq2.js} +1 -1
- package/dist/lite/assets/{GridItem-Cb9pnioW.js → GridItem-BnM21uyA.js} +1 -1
- package/dist/lite/assets/{GridItem-legacy-8gNLCEoo.js → GridItem-legacy-iFmz7kDs.js} +1 -1
- package/dist/lite/assets/{Images-C_Ql-iwF.js → Images-DohfDDrf.js} +1 -1
- package/dist/lite/assets/{Images-legacy-CoWBNLGZ.js → Images-legacy-4WKrTzml.js} +1 -1
- package/dist/lite/assets/{Layout-BQJH47LI.js → Layout-Dq3Tblc3.js} +4 -4
- package/dist/lite/assets/{Layout-legacy-MFuRQRbi.js → Layout-legacy-BqI9aaEd.js} +1 -1
- package/dist/lite/assets/{List-Dp5qYO6K.js → List-CKWRuz8M.js} +1 -1
- package/dist/lite/assets/{List-legacy-LpRbqCuW.js → List-legacy-CfJa4V_M.js} +1 -1
- package/dist/lite/assets/{Messenger-m_DjhhjC.js → Messenger-Csg3VDhD.js} +1 -1
- package/dist/lite/assets/{Messenger-legacy-qy8NmzD_.js → Messenger-legacy-Aqu2TXLS.js} +1 -1
- package/dist/lite/assets/{Metas-BW-d9X3k.js → Metas-CFhxnUzn.js} +1 -1
- package/dist/lite/assets/{Metas-legacy-DF5C5c9k.js → Metas-legacy-CpZKT74d.js} +1 -1
- package/dist/lite/assets/{Move-Btb_epTo.js → Move-Bp7Hz-5A.js} +1 -1
- package/dist/lite/assets/{Move-legacy-CkLWtx_Y.js → Move-legacy-iko-6o08.js} +1 -1
- package/dist/lite/assets/{Other-D3tOfd7k.js → Other-CmK2wAaG.js} +1 -1
- package/dist/lite/assets/{Other-legacy-Cx6-rrJn.js → Other-legacy-BfsPMHAC.js} +1 -1
- package/dist/lite/assets/{PackageDownload-C4OIBiuO.js → PackageDownload-DAD_3hcp.js} +1 -1
- package/dist/lite/assets/{PackageDownload-legacy-D6wcXpsR.js → PackageDownload-legacy-CYUHsuep.js} +1 -1
- package/dist/lite/assets/{Password-DOgJvyE0.js → Password-CsEn2L1J.js} +1 -1
- package/dist/lite/assets/{Password-legacy-Dau7Rj6C.js → Password-legacy-C_ug59KC.js} +1 -1
- package/dist/lite/assets/{Profile-vc4L2vOh.js → Profile-DE1w63ju.js} +1 -1
- package/dist/lite/assets/{Profile-legacy-CG7V6K6c.js → Profile-legacy-BccA5tXg.js} +1 -1
- package/dist/lite/assets/{PublicKeys-BhL22dhK.js → PublicKeys-DhLQRXa5.js} +1 -1
- package/dist/lite/assets/{PublicKeys-legacy-w8t5s90k.js → PublicKeys-legacy-Dm2rmP-Z.js} +1 -1
- package/dist/lite/assets/{ResponsiveGrid--eNaea9R.js → ResponsiveGrid-CPv65KKk.js} +1 -1
- package/dist/lite/assets/{ResponsiveGrid-legacy-BcOgU6tQ.js → ResponsiveGrid-legacy-B09IQ8PO.js} +1 -1
- package/dist/lite/assets/{S3-D5KR0Y4t.js → S3-3qppG_kP.js} +1 -1
- package/dist/lite/assets/{S3-legacy-DwkNpjzH.js → S3-legacy-GtHjMhMP.js} +1 -1
- package/dist/lite/assets/{SettingItem-gAxndiQS.js → SettingItem-BNkjHZxi.js} +1 -1
- package/dist/lite/assets/{SettingItem-legacy-CoygdggD.js → SettingItem-legacy-DhwPjjh6.js} +1 -1
- package/dist/lite/assets/{Shares-DYa-7p_E.js → Shares-CxJ5bbP4.js} +1 -1
- package/dist/lite/assets/{Shares-legacy-CD4V2Nkm.js → Shares-legacy-bRg_GWJc.js} +1 -1
- package/dist/lite/assets/{Storages-B0C3wLOw.js → Storages-CiA0_Ux3.js} +1 -1
- package/dist/lite/assets/{Storages-legacy-Hu3NLgcV.js → Storages-legacy-nNc5p2x6.js} +1 -1
- package/dist/lite/assets/{Upload-CujV1cl2.js → Upload-6mLh9vS_.js} +1 -1
- package/dist/lite/assets/{Upload-CoXrosgy.js → Upload-LroLcc--.js} +1 -1
- package/dist/lite/assets/{Upload-legacy-BrGogy7u.js → Upload-legacy-DzBqXsqi.js} +1 -1
- package/dist/lite/assets/{Upload-legacy-ipwT0CGa.js → Upload-legacy-YbbM49hO.js} +1 -1
- package/dist/lite/assets/{Users-CQMS_vRF.js → Users-Cebos0QK.js} +1 -1
- package/dist/lite/assets/{Users-legacy-CMqmVwDR.js → Users-legacy-D4Ji7uVA.js} +1 -1
- package/dist/lite/assets/{aliyun_video-BPU9Winc.js → aliyun_video-DMomVZ86.js} +1 -1
- package/dist/lite/assets/{aliyun_video-legacy-DqXKJ6bJ.js → aliyun_video-legacy-BVrXTQ7C.js} +1 -1
- package/dist/lite/assets/{archive-CFoJgIJg.js → archive-iaznZ7i5.js} +1 -1
- package/dist/lite/assets/{archive-legacy-CbLxcvcU.js → archive-legacy-BTi-FFWj.js} +1 -1
- package/dist/lite/assets/{artplayer-CKFboV1K.js → artplayer-GcZA8xWm.js} +1 -1
- package/dist/lite/assets/{artplayer-legacy-nsuIJ8X1.js → artplayer-legacy-0q8fSTli.js} +1 -1
- package/dist/lite/assets/{asciinema-Co15uYSl.js → asciinema-hP2thET0.js} +1 -1
- package/dist/lite/assets/{asciinema-legacy-cldShqIF.js → asciinema-legacy-HM3pomQn.js} +1 -1
- package/dist/lite/assets/{audio-DN7yh-1u.js → audio-CEdHvJQm.js} +1 -1
- package/dist/lite/assets/{audio-legacy-ZcTFmCaq.js → audio-legacy-Bf3rfImY.js} +1 -1
- package/dist/lite/assets/{backup-restore-CyTdjYa5.js → backup-restore-BI1XH72_.js} +1 -1
- package/dist/lite/assets/{backup-restore-legacy-4843qwpn.js → backup-restore-legacy-o4-z3xf2.js} +1 -1
- package/dist/lite/assets/{cg-BoXizs5U.js → cg-Cugc4PRy.js} +1 -1
- package/dist/lite/assets/{cg-legacy-B6dnZxHN.js → cg-legacy-en8-FR60.js} +1 -1
- package/dist/lite/assets/{doc-CwFJHCye.js → doc-Dx8w2-z-.js} +1 -1
- package/dist/lite/assets/{doc-legacy-BcqyYqI8.js → doc-legacy-Cirxey5M.js} +1 -1
- package/dist/lite/assets/{download-BWIL9ZbS.js → download-D5HXXjYD.js} +1 -1
- package/dist/lite/assets/{download-legacy-BRxDfnJM.js → download-legacy-BtfDXiWv.js} +1 -1
- package/dist/lite/assets/{flash-Do4k4HF4.js → flash-D3tyxPhf.js} +1 -1
- package/dist/lite/assets/{flash-legacy-Dth0lnEy.js → flash-legacy-C4GlbMx5.js} +1 -1
- package/dist/lite/assets/{heic-BQ1sxr--.js → heic-DddGOj_0.js} +1 -1
- package/dist/lite/assets/{heic-legacy-D7C3AFkl.js → heic-legacy-B6Y5cyvF.js} +1 -1
- package/dist/lite/assets/{helper-COm3HMuR.js → helper-DZTPC0ym.js} +1 -1
- package/dist/lite/assets/{helper-CW89pSnh.js → helper-DcuvUci3.js} +1 -1
- package/dist/lite/assets/{helper-legacy-CRIrgp8-.js → helper-legacy-Cuhr9yhF.js} +1 -1
- package/dist/lite/assets/{helper-legacy-CmC0lRkW.js → helper-legacy-qY9yuzKw.js} +1 -1
- package/dist/lite/assets/{html-BH-siIo1.js → html-TrHlpF58.js} +1 -1
- package/dist/lite/assets/{html-legacy-C6F-KW6p.js → html-legacy-RtqGGa31.js} +1 -1
- package/dist/lite/assets/{icon-I31eZk5I.js → icon-TcP3LdUy.js} +1 -1
- package/dist/lite/assets/{icon-legacy-Cmi1b15o.js → icon-legacy-CCjPA35g.js} +1 -1
- package/dist/lite/assets/{im-32Y5iioc.js → im-Bfh3t-9k.js} +1 -1
- package/dist/lite/assets/{im-legacy-CuBPXwQP.js → im-legacy-bfeqh7q-.js} +1 -1
- package/dist/lite/assets/{image-Cn7F3i7p.js → image-CHfw1saX.js} +1 -1
- package/dist/lite/assets/{image-legacy-BdZBZ4I3.js → image-legacy-FyBUH0Wv.js} +1 -1
- package/dist/lite/assets/{index-BdrlLL7h.js → index-Do6wV20T.js} +4 -4
- package/dist/lite/assets/{index-legacy-DVVw2Tdl.js → index-legacy-DX8ZPqos.js} +1 -1
- package/dist/lite/assets/{index_page-CI4452wz.js → index_page-Ci6zIIEm.js} +1 -1
- package/dist/lite/assets/{index_page-legacy-DpZgbky_.js → index_page-legacy-Dia6n6V8.js} +1 -1
- package/dist/lite/assets/{info-4RJdJqGX.js → info-Eur0D5WL.js} +1 -1
- package/dist/lite/assets/{info-legacy-D81BT5je.js → info-legacy-DSnpfN_T.js} +1 -1
- package/dist/lite/assets/{ipa-BRMsKQrP.js → ipa-QQId27CM.js} +1 -1
- package/dist/lite/assets/{ipa-legacy-DxYHqNRr.js → ipa-legacy-Dk-qFvQl.js} +1 -1
- package/dist/lite/assets/{login-DSgwb8b8.js → login-DNWEpAg4.js} +1 -1
- package/dist/lite/assets/{login-legacy-CE4m2hrW.js → login-legacy-X5eqwtmJ.js} +1 -1
- package/dist/lite/assets/{manage-Bn2g6-4u.js → manage-BoJn00at.js} +2 -2
- package/dist/lite/assets/{manage-legacy-Ctq_PlSk.js → manage-legacy-BWRpx6eL.js} +1 -1
- package/dist/lite/assets/markdown-BeLwer8m.js +1 -0
- package/dist/lite/assets/{markdown-legacy-SrX3ihxa.js → markdown-legacy-DqCEmWHU.js} +1 -1
- package/dist/lite/assets/{markdown_with_word_wrap-CTF7F6kA.js → markdown_with_word_wrap-Ck5Le6kt.js} +1 -1
- package/dist/lite/assets/{markdown_with_word_wrap-legacy-5S3gtO5K.js → markdown_with_word_wrap-legacy-B778apZq.js} +1 -1
- package/dist/lite/assets/{offline_download-DplxhzId.js → offline_download-BxvK9sas.js} +1 -1
- package/dist/lite/assets/{offline_download-legacy-D-fNKFYv.js → offline_download-legacy-Sn7LVNoj.js} +1 -1
- package/dist/lite/assets/{open-with-DB-thDwq.js → open-with-Dm0Xiltd.js} +1 -1
- package/dist/lite/assets/{open-with-legacy-BV0zWWih.js → open-with-legacy-CzqkMUrw.js} +1 -1
- package/dist/lite/assets/{operations-DUc1_ZG_.js → operations-DtIJGjr3.js} +1 -1
- package/dist/lite/assets/{operations-legacy-D7uRiFrF.js → operations-legacy-x4qCe3Nr.js} +1 -1
- package/dist/lite/assets/{plist-Bdtf7mmC.js → plist-I5MRvpO4.js} +1 -1
- package/dist/lite/assets/{plist-legacy-BUgj41A2.js → plist-legacy-BjlqWsae.js} +1 -1
- package/dist/lite/assets/polyfills-legacy-CY-LI3wc.js +1 -0
- package/dist/lite/assets/{ppt-legacy-CfobOD2q.js → ppt-legacy-BauMuKYT.js} +1 -1
- package/dist/lite/assets/{ppt-CQUs3gCH.js → ppt-sj6qWvel.js} +1 -1
- package/dist/lite/assets/{previews-ikRB1E3g.js → previews-C3V57ws2.js} +2 -2
- package/dist/lite/assets/{previews-legacy-BOyZeoEk.js → previews-legacy-C_1n4grk.js} +1 -1
- package/dist/lite/assets/{rehype-katex-PXUO2tmG.js → rehype-katex-fpXCKXq-.js} +1 -1
- package/dist/lite/assets/{rehype-katex-legacy-l00blOnq.js → rehype-katex-legacy-t-Y3uu45.js} +1 -1
- package/dist/lite/assets/{remark-math-B2pF2g5L.js → remark-math-DmyB6UtF.js} +1 -1
- package/dist/lite/assets/{remark-math-legacy-C2fL8O2-.js → remark-math-legacy-BxMiMhBe.js} +1 -1
- package/dist/lite/assets/{ri-BpBjk-eu.js → ri-Co752El1.js} +1 -1
- package/dist/lite/assets/{ri-legacy-DF_J6UvM.js → ri-legacy-C5_hBj57.js} +1 -1
- package/dist/lite/assets/{si-CExwmFBP.js → si-8vtL5WDZ.js} +1 -1
- package/dist/lite/assets/{si-legacy-CM4ZmTcr.js → si-legacy-CRNlhjOc.js} +1 -1
- package/dist/lite/assets/{solid-contextmenu-DNoyC52a.js → solid-contextmenu-Q14whW6u.js} +1 -1
- package/dist/lite/assets/{solid-contextmenu-legacy-DSVwqGw2.js → solid-contextmenu-legacy-sZs92FT7.js} +1 -1
- package/dist/lite/assets/{store-BgSFahAe.js → store-jmqpI8w9.js} +1 -1
- package/dist/lite/assets/{store-legacy-DEv5m7Se.js → store-legacy-CI1UFD5I.js} +1 -1
- package/dist/lite/assets/test-VgTEJWSX.js +1 -0
- package/dist/lite/assets/{test-legacy-CwP5y5rh.js → test-legacy-BRB5AFL9.js} +1 -1
- package/dist/lite/assets/{text-editor-CXH-M_d8.js → text-editor-DN-5m547.js} +1 -1
- package/dist/lite/assets/{text-editor-legacy-Bvg6h1LG.js → text-editor-legacy-DlNbA4NX.js} +1 -1
- package/dist/lite/assets/{ti-DorTQHjy.js → ti-CJTnvYDC.js} +1 -1
- package/dist/lite/assets/{ti-legacy-BLnieiZv.js → ti-legacy-C5F9deYz.js} +1 -1
- package/dist/lite/assets/{url-CrBOHT0m.js → url-Dc_ERS90.js} +1 -1
- package/dist/lite/assets/{url-legacy-BlD6ZzNt.js → url-legacy-DqRcH2qB.js} +1 -1
- package/dist/lite/assets/{video-2Qz8WbEM.js → video-CMVGTs9H.js} +1 -1
- package/dist/lite/assets/{video-legacy-CZofzk3c.js → video-legacy-CARCtj8A.js} +1 -1
- package/dist/lite/assets/{video360-DUQPJklE.js → video360-Cn4J_avk.js} +1 -1
- package/dist/lite/assets/{video360-legacy-t7FzLnsS.js → video360-legacy-QrceD6P2.js} +1 -1
- package/dist/lite/assets/{video_box-wwi7WLeT.js → video_box-BpjZ-ZST.js} +1 -1
- package/dist/lite/assets/{video_box-legacy-B4dnjnjL.js → video_box-legacy-DJTbgfFE.js} +1 -1
- package/dist/lite/assets/{vs-DQyKZ4nV.js → vs-D6iduhy9.js} +1 -1
- package/dist/lite/assets/{vs-legacy-Gzvbg9kw.js → vs-legacy-HDoHHJI2.js} +1 -1
- package/dist/lite/assets/{xls-UBX1oyWL.js → xls-B0hoyRio.js} +1 -1
- package/dist/lite/assets/{xls-legacy-BTO_I1zz.js → xls-legacy-B5QjbgBE.js} +1 -1
- package/dist/lite/i18n.tar.gz +0 -0
- package/dist/lite/index.html +2 -2
- package/package.json +1 -1
- package/dist/assets/polyfills-legacy-3zNmgeF1.js +0 -1
- package/dist/lite/assets/Common-GRQCAwrU.js +0 -1
- package/dist/lite/assets/Common-legacy-eXCYBqpA.js +0 -1
- package/dist/lite/assets/markdown-BDzlyh3V.js +0 -1
- package/dist/lite/assets/polyfills-legacy-D9TUrbOt.js +0 -1
- package/dist/lite/assets/test-Bp2AX12i.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{D as e,Pi as t,Tn as n,Zi as r,aa as i,da as a,g as o,na as s,ua as c,zi as l}from"./store-BgSFahAe.js";import{n as u}from"./video_box-wwi7WLeT.js";function d(e){var t=typeof Symbol==`function`&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&typeof e.length==`number`)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)}function f(e,t){var n=typeof Symbol==`function`&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,a=[],o;try{for(;(t===void 0||t-- >0)&&!(i=r.next()).done;)a.push(i.value)}catch(e){o={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a}function p(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(f(arguments[t]));return e}var m=function(e){return e===void 0},h=function(){function e(e,t){var n,r;if(this._canceled=!1,t)try{for(var i=d(Object.keys(t)),a=i.next();!a.done;a=i.next()){var o=a.value;this[o]=t[o]}}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}this.eventType=e}var t=e.prototype;return t.stop=function(){this._canceled=!0},t.isCanceled=function(){return this._canceled},e}(),g=function(){function e(){this._eventHandler={}}var t=e.prototype;return t.trigger=function(e){var t=[...arguments].slice(1),n=e instanceof h?e.eventType:e,r=p(this._eventHandler[n]||[]);return r.length<=0||(e instanceof h?(e.currentTarget=this,r.forEach(function(t){t(e)})):r.forEach(function(e){e.apply(void 0,p(t))})),this},t.once=function(e,t){var n=this;if(typeof e==`object`&&m(t)){var r=e;for(var i in r)this.once(i,r[i]);return this}else if(typeof e==`string`&&typeof t==`function`){var a=function(){var r=[...arguments];t.apply(void 0,p(r)),n.off(e,a)};this.on(e,a)}return this},t.hasOn=function(e){return!!this._eventHandler[e]},t.on=function(e,t){if(typeof e==`object`&&m(t)){var n=e;for(var r in n)this.on(r,n[r]);return this}else if(typeof e==`string`&&typeof t==`function`){var i=this._eventHandler[e];m(i)&&(this._eventHandler[e]=[],i=this._eventHandler[e]),i.push(t)}return this},t.off=function(e,t){if(m(e))return this._eventHandler={},this;if(m(t)){if(typeof e==`string`)return delete this._eventHandler[e],this;var n=e;for(var r in n)this.off(r,n[r]);return this}var i=this._eventHandler[e];if(i){for(var a=i.length,o=0;o<a;++o)if(i[o]===t){i.splice(o,1),a<=1&&delete this._eventHandler[e];break}}return this},e.VERSION=`3.0.5`,e}(),_=h,v=typeof Float32Array<`u`?Float32Array:Array;Math.PI/180,Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});function y(){var e=new v(9);return v!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}function b(){var e=new v(16);return v!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function x(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function S(e,t,n){var r=t[0],i=t[1],a=t[2],o=t[3],s=t[4],c=t[5],l=t[6],u=t[7],d=t[8],f=t[9],p=t[10],m=t[11],h=t[12],g=t[13],_=t[14],v=t[15],y=n[0],b=n[1],x=n[2],S=n[3];return e[0]=y*r+b*s+x*d+S*h,e[1]=y*i+b*c+x*f+S*g,e[2]=y*a+b*l+x*p+S*_,e[3]=y*o+b*u+x*m+S*v,y=n[4],b=n[5],x=n[6],S=n[7],e[4]=y*r+b*s+x*d+S*h,e[5]=y*i+b*c+x*f+S*g,e[6]=y*a+b*l+x*p+S*_,e[7]=y*o+b*u+x*m+S*v,y=n[8],b=n[9],x=n[10],S=n[11],e[8]=y*r+b*s+x*d+S*h,e[9]=y*i+b*c+x*f+S*g,e[10]=y*a+b*l+x*p+S*_,e[11]=y*o+b*u+x*m+S*v,y=n[12],b=n[13],x=n[14],S=n[15],e[12]=y*r+b*s+x*d+S*h,e[13]=y*i+b*c+x*f+S*g,e[14]=y*a+b*l+x*p+S*_,e[15]=y*o+b*u+x*m+S*v,e}function C(e,t,n,r){var i=t[0],a=t[1],o=t[2],s=t[3],c=i+i,l=a+a,u=o+o,d=i*c,f=i*l,p=i*u,m=a*l,h=a*u,g=o*u,_=s*c,v=s*l,y=s*u,b=r[0],x=r[1],S=r[2];return e[0]=(1-(m+g))*b,e[1]=(f+y)*b,e[2]=(p-v)*b,e[3]=0,e[4]=(f-y)*x,e[5]=(1-(d+g))*x,e[6]=(h+_)*x,e[7]=0,e[8]=(p+v)*S,e[9]=(h-_)*S,e[10]=(1-(d+m))*S,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function ee(e,t,n,r,i){var a=1/Math.tan(t/2),o;return e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,i!=null&&i!==1/0?(o=1/(r-i),e[10]=(i+r)*o,e[14]=2*i*r*o):(e[10]=-1,e[14]=-2*r),e}var te=ee;function ne(e,t,n,r){var i,a,o,s,c,l,u,d,f,p,m=t[0],h=t[1],g=t[2],_=r[0],v=r[1],y=r[2],b=n[0],S=n[1],C=n[2];return Math.abs(m-b)<1e-6&&Math.abs(h-S)<1e-6&&Math.abs(g-C)<1e-6?x(e):(u=m-b,d=h-S,f=g-C,p=1/Math.hypot(u,d,f),u*=p,d*=p,f*=p,i=v*f-y*d,a=y*u-_*f,o=_*d-v*u,p=Math.hypot(i,a,o),p?(p=1/p,i*=p,a*=p,o*=p):(i=0,a=0,o=0),s=d*o-f*a,c=f*i-u*o,l=u*a-d*i,p=Math.hypot(s,c,l),p?(p=1/p,s*=p,c*=p,l*=p):(s=0,c=0,l=0),e[0]=i,e[1]=s,e[2]=u,e[3]=0,e[4]=a,e[5]=c,e[6]=d,e[7]=0,e[8]=o,e[9]=l,e[10]=f,e[11]=0,e[12]=-(i*m+a*h+o*g),e[13]=-(s*m+c*h+l*g),e[14]=-(u*m+d*h+f*g),e[15]=1,e)}function w(){var e=new v(3);return v!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function re(e){var t=e[0],n=e[1],r=e[2];return Math.hypot(t,n,r)}function T(e,t,n){var r=new v(3);return r[0]=e,r[1]=t,r[2]=n,r}function ie(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function ae(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function oe(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function se(e,t){var n=t[0],r=t[1],i=t[2],a=n*n+r*r+i*i;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function ce(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function E(e,t,n){var r=t[0],i=t[1],a=t[2],o=n[0],s=n[1],c=n[2];return e[0]=i*c-a*s,e[1]=a*o-r*c,e[2]=r*s-i*o,e}function le(e,t,n){var r=t[0],i=t[1],a=t[2],o=n[3]*r+n[7]*i+n[11]*a+n[15];return o=o||1,e[0]=(n[0]*r+n[4]*i+n[8]*a+n[12])/o,e[1]=(n[1]*r+n[5]*i+n[9]*a+n[13])/o,e[2]=(n[2]*r+n[6]*i+n[10]*a+n[14])/o,e}function D(e,t,n){var r=n[0],i=n[1],a=n[2],o=n[3],s=t[0],c=t[1],l=t[2],u=i*l-a*c,d=a*s-r*l,f=r*c-i*s,p=i*f-a*d,m=a*u-r*f,h=r*d-i*u,g=o*2;return u*=g,d*=g,f*=g,p*=2,m*=2,h*=2,e[0]=s+u+p,e[1]=c+d+m,e[2]=l+f+h,e}var ue=re;(function(){var e=w();return function(t,n,r,i,a,o){var s,c;for(n||(n=3),r||(r=0),c=i?Math.min(i*n+r,t.length):t.length,s=r;s<c;s+=n)e[0]=t[s],e[1]=t[s+1],e[2]=t[s+2],a(e,e,o),t[s]=e[0],t[s+1]=e[1],t[s+2]=e[2];return t}})();function de(){var e=new v(4);return v!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e}function fe(e){var t=new v(4);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function pe(e,t,n,r){var i=new v(4);return i[0]=e,i[1]=t,i[2]=n,i[3]=r,i}function me(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}function he(e,t,n,r,i){return e[0]=t,e[1]=n,e[2]=r,e[3]=i,e}function ge(e,t){var n=t[0],r=t[1],i=t[2],a=t[3],o=n*n+r*r+i*i+a*a;return o>0&&(o=1/Math.sqrt(o)),e[0]=n*o,e[1]=r*o,e[2]=i*o,e[3]=a*o,e}function _e(e,t){var n=e[0],r=e[1],i=e[2],a=e[3],o=t[0],s=t[1],c=t[2],l=t[3];return Math.abs(n-o)<=1e-6*Math.max(1,Math.abs(n),Math.abs(o))&&Math.abs(r-s)<=1e-6*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(i-c)<=1e-6*Math.max(1,Math.abs(i),Math.abs(c))&&Math.abs(a-l)<=1e-6*Math.max(1,Math.abs(a),Math.abs(l))}(function(){var e=de();return function(t,n,r,i,a,o){var s,c;for(n||(n=4),r||(r=0),c=i?Math.min(i*n+r,t.length):t.length,s=r;s<c;s+=n)e[0]=t[s],e[1]=t[s+1],e[2]=t[s+2],e[3]=t[s+3],a(e,e,o),t[s]=e[0],t[s+1]=e[1],t[s+2]=e[2],t[s+3]=e[3];return t}})();function O(){var e=new v(4);return v!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}function ve(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e}function ye(e,t,n){n*=.5;var r=Math.sin(n);return e[0]=r*t[0],e[1]=r*t[1],e[2]=r*t[2],e[3]=Math.cos(n),e}function be(e,t,n){var r=t[0],i=t[1],a=t[2],o=t[3],s=n[0],c=n[1],l=n[2],u=n[3];return e[0]=r*u+o*s+i*l-a*c,e[1]=i*u+o*c+a*s-r*l,e[2]=a*u+o*l+r*c-i*s,e[3]=o*u-r*s-i*c-a*l,e}function xe(e,t,n){n*=.5;var r=t[0],i=t[1],a=t[2],o=t[3],s=Math.sin(n),c=Math.cos(n);return e[0]=r*c+o*s,e[1]=i*c+a*s,e[2]=a*c-i*s,e[3]=o*c-r*s,e}function Se(e,t,n){n*=.5;var r=t[0],i=t[1],a=t[2],o=t[3],s=Math.sin(n),c=Math.cos(n);return e[0]=r*c-a*s,e[1]=i*c+o*s,e[2]=a*c+r*s,e[3]=o*c-i*s,e}function Ce(e,t,n){n*=.5;var r=t[0],i=t[1],a=t[2],o=t[3],s=Math.sin(n),c=Math.cos(n);return e[0]=r*c+i*s,e[1]=i*c-r*s,e[2]=a*c+o*s,e[3]=o*c-a*s,e}function we(e,t,n,r){var i=t[0],a=t[1],o=t[2],s=t[3],c=n[0],l=n[1],u=n[2],d=n[3],f,p=i*c+a*l+o*u+s*d,m,h,g;return p<0&&(p=-p,c=-c,l=-l,u=-u,d=-d),1-p>1e-6?(f=Math.acos(p),m=Math.sin(f),h=Math.sin((1-r)*f)/m,g=Math.sin(r*f)/m):(h=1-r,g=r),e[0]=h*i+g*c,e[1]=h*a+g*l,e[2]=h*o+g*u,e[3]=h*s+g*d,e}function Te(e,t){var n=t[0]+t[4]+t[8],r;if(n>0)r=Math.sqrt(n+1),e[3]=.5*r,r=.5/r,e[0]=(t[5]-t[7])*r,e[1]=(t[6]-t[2])*r,e[2]=(t[1]-t[3])*r;else{var i=0;t[4]>t[0]&&(i=1),t[8]>t[i*3+i]&&(i=2);var a=(i+1)%3,o=(i+2)%3;r=Math.sqrt(t[i*3+i]-t[a*3+a]-t[o*3+o]+1),e[i]=.5*r,r=.5/r,e[3]=(t[a*3+o]-t[o*3+a])*r,e[a]=(t[a*3+i]+t[i*3+a])*r,e[o]=(t[o*3+i]+t[i*3+o])*r}return e}var Ee=fe,De=pe,Oe=me,ke=he,k=ge,Ae=_e;(function(){var e=w(),t=T(1,0,0),n=T(0,1,0);return function(r,i,a){var o=ce(i,a);return o<-.999999?(E(e,t,i),ue(e)<1e-6&&E(e,n,i),se(e,e),ye(r,e,Math.PI),r):o>.999999?(r[0]=0,r[1]=0,r[2]=0,r[3]=1,r):(E(e,i,a),r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=1+o,k(r,r))}})(),function(){var e=O(),t=O();return function(n,r,i,a,o,s){return we(e,r,o,s),we(t,i,a,s),we(n,e,t,2*s*(1-s)),n}}(),function(){var e=y();return function(t,n,r,i){return e[0]=r[0],e[3]=r[1],e[6]=r[2],e[1]=i[0],e[4]=i[1],e[7]=i[2],e[2]=-n[0],e[5]=-n[1],e[8]=-n[2],k(t,Te(t,e))}}();function je(){var e=new v(2);return v!=Float32Array&&(e[0]=0,e[1]=0),e}function Me(e,t){var n=new v(2);return n[0]=e,n[1]=t,n}(function(){var e=je();return function(t,n,r,i,a,o){var s,c;for(n||(n=2),r||(r=0),c=i?Math.min(i*n+r,t.length):t.length,s=r;s<c;s+=n)e[0]=t[s],e[1]=t[s+1],a(e,e,o),t[s]=e[0],t[s+1]=e[1];return t}})();var Ne=function(e,t){return Ne=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Ne(e,t)};function A(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Class extends value `+String(t)+` is not a constructor or null`);Ne(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var j=function(){return j=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},j.apply(this,arguments)};function Pe(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;for(var r=Array(e),i=0,t=0;t<n;t++)for(var a=arguments[t],o=0,s=a.length;o<s;o++,i++)r[i]=a[o];return r}var Fe=typeof window<`u`,Ie=Fe?window.navigator.userAgent:``,Le=Fe?`getComputedStyle`in window:!1,Re=/MSIE|Trident|Windows Phone|Edge/.test(Ie),ze=Fe?`addEventListener`in document:!1,Be=`width`,Ve=`height`;function He(e,t){return e.getAttribute(t)||``}function Ue(e){return[].slice.call(e)}function We(e,t){return t===void 0&&(t=`data-`),!!e.getAttribute(t+`width`)}function Ge(e,t){return t===void 0&&(t=`data-`),`loading`in e&&e.getAttribute(`loading`)===`lazy`||!!e.getAttribute(t+`lazy`)}function Ke(e,t){return t===void 0&&(t=`data-`),!!e.getAttribute(t+`skip`)}function qe(e,t,n){ze?e.addEventListener(t,n,!1):e.attachEvent?e.attachEvent(`on`+t,n):e[`on`+t]=n}function Je(e,t,n){e.removeEventListener?e.removeEventListener(t,n,!1):e.detachEvent?e.detachEvent(`on`+t,n):e[`on`+t]=null}function Ye(e){return Qe(e,`Width`)}function Xe(e){return Qe(e,`Height`)}function Ze(e){return(Le?window.getComputedStyle(e):e.currentStyle)||{}}function Qe(e,t){var n=e[`client`+t]||e[`offset`+t];return parseFloat(n||Ze(e)[t.toLowerCase()])||0}function $e(e,t,n){var r=Ue(e.querySelectorAll(Pe([`[`+n+`skip] [`+n+`width]`],t.map(function(e){return[`[`+n+`skip] `+e,e+`[`+n+`skip]`,`[`+n+`width] `+e].join(`, `)})).join(`, `)));return Ue(e.querySelectorAll(`[`+n+`width], `+t.join(`, `))).filter(function(e){return r.indexOf(e)===-1})}var M=[];function et(e,t){!M.length&&qe(window,`resize`,rt),e.__PREFIX__=t,M.push(e),nt(e)}function tt(e,t){var n=M.indexOf(e);if(!(n<0)){var r=He(e,t+`fixed`);delete e.__PREFIX__,e.style[r===Ve?Be:Ve]=``,M.splice(n,1),!M.length&&Je(window,`resize`,rt)}}function nt(e,t){t===void 0&&(t=`data-`);var n=e.__PREFIX__||t,r=parseInt(He(e,``+n+Be),10)||0,i=parseInt(He(e,``+n+Ve),10)||0;if(He(e,n+`fixed`)===Ve){var a=Xe(e)||i;e.style[Be]=r/i*a+`px`}else{var a=Ye(e)||r;e.style[Ve]=i/r*a+`px`}}function rt(){M.forEach(function(e){nt(e)})}var it=function(e){A(t,e);function t(t,n){n===void 0&&(n={});var r=e.call(this)||this;r.isReady=!1,r.isPreReady=!1,r.hasDataSize=!1,r.hasLoading=!1,r.isSkip=!1,r.onCheck=function(e){r.clear(),e&&e.type===`error`&&r.onError(r.element),!(r.hasLoading&&r.checkElement())&&r.onReady()},r.options=j({prefix:`data-`},n),r.element=t;var i=r.options.prefix;return r.hasDataSize=We(t,i),r.isSkip=Ke(t,i),r.hasLoading=Ge(t,i),r}var n=t.prototype;return n.check=function(){return this.isSkip||!this.checkElement()?(this.onAlreadyReady(),!1):(this.hasDataSize&&et(this.element,this.options.prefix),(this.hasDataSize||this.hasLoading)&&this.onAlreadyPreReady(),!0)},n.addEvents=function(){var e=this,t=this.element;this.constructor.EVENTS.forEach(function(n){qe(t,n,e.onCheck)})},n.clear=function(){var e=this,t=this.element;this.constructor.EVENTS.forEach(function(n){Je(t,n,e.onCheck)}),this.removeAutoSizer()},n.destroy=function(){this.clear(),this.off()},n.removeAutoSizer=function(){if(this.hasDataSize){var e=this.options.prefix;tt(this.element,e)}},n.onError=function(e){this.trigger(`error`,{element:this.element,target:e})},n.onPreReady=function(){this.isPreReady||(this.isPreReady=!0,this.trigger(`preReady`,{element:this.element,hasLoading:this.hasLoading,isSkip:this.isSkip}))},n.onReady=function(){var e=this.isPreReady;this.isPreReady=!0,!this.isReady&&(this.removeAutoSizer(),this.isReady=!0,this.trigger(`ready`,{element:this.element,withPreReady:!e,hasLoading:this.hasLoading,isSkip:this.isSkip}))},n.onAlreadyError=function(e){var t=this;setTimeout(function(){t.onError(e)})},n.onAlreadyPreReady=function(){var e=this;setTimeout(function(){e.onPreReady()})},n.onAlreadyReady=function(){var e=this;setTimeout(function(){e.onReady()})},t.EVENTS=[],t}(g),at=function(e){A(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}var n=t.prototype;return n.setHasLoading=function(e){this.hasLoading=e},n.check=function(){return this.isSkip?(this.onAlreadyReady(),!1):(this.hasDataSize?(et(this.element,this.options.prefix),this.onAlreadyPreReady()):this.trigger(`requestChildren`),!0)},n.checkElement=function(){return!0},n.destroy=function(){this.clear(),this.trigger(`requestDestroy`),this.off()},n.onAlreadyPreReady=function(){e.prototype.onAlreadyPreReady.call(this),this.trigger(`reqeustReadyChildren`)},t.EVENTS=[],t}(it),ot=function(e){A(t,e);function t(t){t===void 0&&(t={});var n=e.call(this)||this;return n.readyCount=0,n.preReadyCount=0,n.totalCount=0,n.totalErrorCount=0,n.isPreReadyOver=!0,n.elementInfos=[],n.options=j({loaders:{},prefix:`data-`},t),n}var n=t.prototype;return n.check=function(e){var t=this,n=this.options.prefix;this.clear(),this.elementInfos=Ue(e).map(function(e,r){var i=t.getLoader(e,{prefix:n});return i.check(),i.on(`error`,function(e){t.onError(r,e.target)}).on(`preReady`,function(e){var n=t.elementInfos[r];n.hasLoading=e.hasLoading,n.isSkip=e.isSkip;var i=t.checkPreReady(r);t.onPreReadyElement(r),i&&t.onPreReady()}).on(`ready`,function(e){var n=e.withPreReady,i=e.hasLoading,a=e.isSkip,o=t.elementInfos[r];o.hasLoading=i,o.isSkip=a;var s=n&&t.checkPreReady(r),c=t.checkReady(r);n&&t.onPreReadyElement(r),t.onReadyElement(r),s&&t.onPreReady(),c&&t.onReady()}),{loader:i,element:e,hasLoading:!1,hasError:!1,isPreReady:!1,isReady:!1,isSkip:!1}});var r=this.elementInfos.length;return this.totalCount=r,r||setTimeout(function(){t.onPreReady(),t.onReady()}),this},n.getTotalCount=function(){return this.totalCount},n.isPreReady=function(){return this.elementInfos.every(function(e){return e.isPreReady})},n.isReady=function(){return this.elementInfos.every(function(e){return e.isReady})},n.hasError=function(){return this.totalErrorCount>0},n.clear=function(){this.isPreReadyOver=!1,this.totalCount=0,this.preReadyCount=0,this.readyCount=0,this.totalErrorCount=0,this.elementInfos.forEach(function(e){e.loader&&e.loader.destroy()}),this.elementInfos=[]},n.destroy=function(){this.clear(),this.off()},n.getLoader=function(e,t){var n=this,r=e.tagName.toLowerCase(),i=this.options.loaders,a=t.prefix,o=Object.keys(i);if(i[r])return new i[r](e,t);var s=new at(e,t),c=Ue(e.querySelectorAll(o.join(`, `)));s.setHasLoading(c.some(function(e){return Ge(e,a)}));var l=this.clone().on(`error`,function(e){s.onError(e.target)}).on(`ready`,function(){s.onReady()});return s.on(`requestChildren`,function(){var t=$e(e,o,n.options.prefix);l.check(t).on(`preReady`,function(e){e.isReady||s.onPreReady()})}).on(`reqeustReadyChildren`,function(){l.check(c)}).on(`requestDestroy`,function(){l.destroy()}),s},n.clone=function(){return new t(j({},this.options))},n.checkPreReady=function(e){return this.elementInfos[e].isPreReady=!0,++this.preReadyCount,!(this.preReadyCount<this.totalCount)},n.checkReady=function(e){return this.elementInfos[e].isReady=!0,++this.readyCount,!(this.readyCount<this.totalCount)},n.onError=function(e,t){var n=this.elementInfos[e];n.hasError=!0,this.trigger(new _(`error`,{element:n.element,index:e,target:t,errorCount:this.getErrorCount(),totalErrorCount:++this.totalErrorCount}))},n.onPreReadyElement=function(e){var t=this.elementInfos[e];this.trigger(new _(`preReadyElement`,{element:t.element,index:e,preReadyCount:this.preReadyCount,readyCount:this.readyCount,totalCount:this.totalCount,isPreReady:this.isPreReady(),isReady:this.isReady(),hasLoading:t.hasLoading,isSkip:t.isSkip}))},n.onPreReady=function(){this.isPreReadyOver=!0,this.trigger(new _(`preReady`,{readyCount:this.readyCount,totalCount:this.totalCount,isReady:this.isReady(),hasLoading:this.hasLoading()}))},n.onReadyElement=function(e){var t=this.elementInfos[e];this.trigger(new _(`readyElement`,{index:e,element:t.element,hasError:t.hasError,errorCount:this.getErrorCount(),totalErrorCount:this.totalErrorCount,preReadyCount:this.preReadyCount,readyCount:this.readyCount,totalCount:this.totalCount,isPreReady:this.isPreReady(),isReady:this.isReady(),hasLoading:t.hasLoading,isPreReadyOver:this.isPreReadyOver,isSkip:t.isSkip}))},n.onReady=function(){this.trigger(new _(`ready`,{errorCount:this.getErrorCount(),totalErrorCount:this.totalErrorCount,totalCount:this.totalCount}))},n.getErrorCount=function(){return this.elementInfos.filter(function(e){return e.hasError}).length},n.hasLoading=function(){return this.elementInfos.some(function(e){return e.hasLoading})},t}(g),st=function(e){A(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}var n=t.prototype;return n.checkElement=function(){var e=this.element,t=e.getAttribute(`src`);if(e.complete){if(t)return e.naturalWidth||this.onAlreadyError(e),!1;this.onAlreadyPreReady()}return this.addEvents(),Re&&e.setAttribute(`src`,t),!0},t.EVENTS=[`load`,`error`],t}(it),ct=function(e){A(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}var n=t.prototype;return n.checkElement=function(){var e=this.element;return e.readyState>=1?!1:e.error?(this.onAlreadyError(e),!1):(this.addEvents(),!0)},t.EVENTS=[`loadedmetadata`,`error`],t}(it),lt=function(e){A(t,e);function t(t){return t===void 0&&(t={}),e.call(this,j({loaders:{img:st,video:ct}},t))||this}return t}(ot);function N(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||(n=Promise))(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})}var P=class e extends Error{constructor(t,n){super(t),Object.setPrototypeOf(this,e.prototype),this.name=`View360Error`,this.code=n}},F={CODES:{WRONG_TYPE:0,WRONG_OPTION:1,ELEMENT_NOT_FOUND:2,CANVAS_NOT_FOUND:3,WEBGL_NOT_SUPPORTED:4,FAILED_CREATE_CONTEXT_2D:5,PROVIDE_PROJECTION_FIRST:6,FAILED_LINKING_PROGRAM:7,INSUFFICIENT_ARGS:8},MESSAGES:{WRONG_TYPE:(e,t)=>`${typeof e} is not a ${t.map(e=>`"${e}"`).join(` or `)}.`,WRONG_OPTION:(e,t)=>`Bad option: given "${e}" for option "${t}".`,ELEMENT_NOT_FOUND:e=>`Element with selector "${e}" not found.`,CANVAS_NOT_FOUND:`The canvas element was not found inside the given root element.`,WEBGL_NOT_SUPPORTED:`WebGL is not supported on this browser.`,FAILED_CREATE_CONTEXT_2D:`Failed to create canvas 2D context`,PROVIDE_PROJECTION_FIRST:`"projection" should be provided before initialization.`,FAILED_LINKING_PROGRAM:(e,t)=>`Failed linking WebGL program - "${e}\nShader compile Log: ${t}`,INSUFFICIENT_ARGS:(e,t)=>`Insufficient arguments: given "${e}" for "${t}".`}},I={MOUSE_DOWN:`mousedown`,MOUSE_MOVE:`mousemove`,MOUSE_UP:`mouseup`,TOUCH_START:`touchstart`,TOUCH_MOVE:`touchmove`,TOUCH_END:`touchend`,WHEEL:`wheel`,RESIZE:`resize`,CONTEXT_MENU:`contextmenu`,MOUSE_ENTER:`mouseenter`,MOUSE_LEAVE:`mouseleave`,POINTER_DOWN:`pointerdown`,POINTER_MOVE:`pointermove`,POINTER_UP:`pointerup`,POINTER_CANCEL:`pointercancel`,POINTER_ENTER:`pointerenter`,POINTER_LEAVE:`pointerleave`,KEY_DOWN:`keydown`,KEY_UP:`keyup`,LOAD:`load`,ERROR:`error`,CLICK:`click`,DOUBLE_CLICK:`dblclick`,CONTEXT_CREATE_ERROR:`webglcontextcreationerror`,CONTEXT_LOST:`webglcontextlost`,CONTEXT_RESTORED:`webglcontextrestored`,DEVICE_ORIENTATION:`deviceorientation`,DEVICE_MOTION:`devicemotion`,ORIENTATION_CHANGE:`orientationchange`,VIDEO_PLAY:`play`,VIDEO_PAUSE:`pause`,VIDEO_LOADED_DATA:`loadeddata`,VIDEO_VOLUME_CHANGE:`volumechange`,VIDEO_TIME_UPDATE:`timeupdate`,VIDEO_DURATION_CHANGE:`durationchange`,VIDEO_CAN_PLAYTHROUGH:`canplaythrough`,TRANSITION_END:`transitionend`,XR_END:`end`},L=`div`,ut=`button`,dt;(function(e){e[e.LEFT=0]=`LEFT`,e[e.MIDDLE=1]=`MIDDLE`,e[e.RIGHT=2]=`RIGHT`})(dt||(dt={}));var R={GRAB:`grab`,GRABBING:`grabbing`,NONE:``},ft=[`LEFT`,`UP`,`RIGHT`,`DOWN`],pt;(function(e){e[e.LEFT=37]=`LEFT`,e[e.UP=38]=`UP`,e[e.RIGHT=39]=`RIGHT`,e[e.DOWN=40]=`DOWN`})(pt||(pt={}));var mt=32,ht={LEFT:`ArrowLeft`,UP:`ArrowUp`,RIGHT:`ArrowRight`,DOWN:`ArrowDown`},gt=` `,_t=[`requestFullscreen`,`webkitRequestFullscreen`,`webkitRequestFullScreen`,`webkitCancelFullScreen`,`mozRequestFullScreen`,`msRequestFullscreen`],vt=[`fullscreenElement`,`webkitFullscreenElement`,`webkitCurrentFullScreenElement`,`mozFullScreenElement`,`msFullscreenElement`],yt=[`exitFullscreen`,`webkitExitFullscreen`,`webkitCancelFullScreen`,`mozCancelFullScreen`,`msExitFullscreen`],bt=[`fullscreenchange`,`webkitfullscreenchange`,`mozfullscreenchange`,`MSFullscreenChange`],z={CONTAINER:`view360-container`,CANVAS:`view360-canvas`,CTX_LOST:`view360-ctx-lost`,IN_VR:`view360-vr-presenting`,HOTSPOT_CONTAINER:`view360-hotspots`,HOTSPOT:`view360-hotspot`,HOTSPOT_VISIBLE:`view360-hotspot-visible`,HOTSPOT_FLIP_X:`view360-hotspot-flip-x`,HOTSPOT_FLIP_Y:`view360-hotspot-flip-y`},B={READY:`ready`,LOAD_START:`loadStart`,LOAD:`load`,PROJECTION_CHANGE:`projectionChange`,RESIZE:`resize`,BEFORE_RENDER:`beforeRender`,RENDER:`render`,INPUT_START:`inputStart`,INPUT_END:`inputEnd`,VIEW_CHANGE:`viewChange`,STATIC_CLICK:`staticClick`,VR_START:`vrStart`,VR_END:`vrEnd`},xt={LINEAR:e=>e,SINE_WAVE:e=>Math.sin(e*Math.PI*2),EASE_OUT_CUBIC:e=>1-(1-e)**3,EASE_OUT_BOUNCE:e=>{let t=7.5625,n=2.75;return e<1/n?t*e*e:e<2/n?t*(e-=1.5/n)*e+.75:e<2.5/n?t*(e-=2.25/n)*e+.9375:t*(e-=2.625/n)*e+.984375}},St={CHANGE:`change`,ANIMATION_END:`animationEnd`},Ct={UPDATE:`update`},V={INPUT_START:`inputStart`,CHANGE:`change`,INPUT_END:`inputEnd`,ENABLE:`enable`,DISABLE:`disable`,STATIC_CLICK:`staticClick`},H=Math.PI/180,U=180/Math.PI,W=xt.EASE_OUT_CUBIC,G=300,wt={min:-1/0,max:1/0},Tt={min:-90,max:90},Et={min:.6,max:10},Dt;(function(e){e[e.ZERO=0]=`ZERO`,e[e.CW_90=1]=`CW_90`,e[e.CCW_90=2]=`CCW_90`,e[e.CW_180=3]=`CW_180`})(Dt||(Dt={}));var K=`view360videotimechange`,Ot=`http://www.w3.org/2000/svg`,kt=`immersive-vr`,At=`local`,jt=2**-52,Mt=e=>typeof e==`string`,Nt=e=>!!e&&e.nodeType===Node.ELEMENT_NODE,q=(e,t=L)=>{let n=document.createElement(t);return n.classList.add(e),n},Pt=(e,t)=>{let n=null;if(Mt(e)){let r=(t||document).querySelector(e);if(!r)return null;n=r}else Nt(e)&&(n=e);return n},Ft=(e,t)=>{let n=Pt(e,t);if(!n)throw Mt(e)?new P(F.MESSAGES.ELEMENT_NOT_FOUND(e),F.CODES.ELEMENT_NOT_FOUND):new P(F.MESSAGES.WRONG_TYPE(e,[`HTMLElement`,`string`]),F.CODES.WRONG_TYPE);return n},It=(e,t)=>{let n=e.querySelector(t);if(!n)throw new P(F.MESSAGES.CANVAS_NOT_FOUND,F.CODES.CANVAS_NOT_FOUND);return n},J=(e,t,n)=>Math.max(Math.min(e,n),t),Lt=(e,t,n)=>e*(1-n)+t*n,Y=(e,t,n)=>{let r=Math.abs(n-t);return e<t?e=n-(t-e)%r:e>n&&(e=t+(e-n)%r),e},Rt=(e,t)=>{for(let n=0;n<e.length;n++)if(t(e[n]))return n;return-1},X=e=>typeof e==`object`?e:{},zt=(e,t)=>Math.atan(Math.tan(e*.5)/t)*2,Bt=()=>{if(!document)return!1;for(let e of vt)if(document[e])return!0;return!1},Vt=()=>window.isSecureContext&&!!DeviceMotionEvent&&`requestPermission`in DeviceMotionEvent,Ht=(e,t)=>Math.tan(H*e*.5)/Math.tan(H*t*.5),Ut=(e,t,n,r)=>{ve(e);let i=.01,a=J(n,-90+i,90-i);return Se(e,e,t*H),xe(e,e,a*H),Ce(e,e,r*H),e},Wt=e=>{let t=e[0],n=e[1],r=e[2],i=e[3],a=t*t,o=n*n,s=r*r,c=i*i,l=a+o+s+c,u=t*i-n*r,d,f;if(u>.499995*l)d=Math.PI/2,f=2*Math.atan2(n,t);else if(u<-.499995*l)d=-Math.PI/2,f=-2*Math.atan2(n,t);else{let t=T(0,0,1),n=T(0,1,0);D(t,t,e),D(n,n,e);let r=Math.sqrt(t[0]*t[0]+t[2]*t[2]);d=Math.atan2(-t[1],r),f=Math.atan2(t[0],t[2])}return{pitch:J(d*U,-90,90),yaw:Y(f*U,0,360)}},Gt=class{get val(){return this._val}get start(){return this._start}get end(){return this._end}get progress(){return this._progress}get activated(){return this._activated}get duration(){return this._duration}set duration(e){this._duration=e}get loop(){return this._loop}set loop(e){this._loop=e}get range(){return this._range}get easing(){return this._easing}set easing(e){this._easing=e}constructor({duration:e=G,loop:t=!1,range:n={min:0,max:1},easing:r=W}={}){this._duration=e,this._loop=t,this._range=n,this._easing=r,this._activated=!1,this.reset(0)}update(e){if(!this._activated)return this._val=this._end,0;let t=this._start,n=this._end,r=this._duration,i=this._val,a=this._loop,o=this._progress+e/r;return this._progress=a?Y(o,0,1):J(o,0,1),this._val=Lt(t,n,this._easing(this._progress)),!a&&this._progress>=1&&(this._activated=!1),this._val-i}reset(e){let t=this._range,n=J(e,t.min,t.max);this._start=n,this._end=n,this._val=n,this._progress=0,this._activated=!1}add(e){let t=this._range;this._start=J(this._start+e,t.min,t.max),this._end=J(this._end+e,t.min,t.max),this._val=J(this._val+e,t.min,t.max)}setNewEndByDelta(e){let t=this._range;this._start=this._val,this._end=J(this._end+e,t.min,t.max),this._progress=0,this._activated=!0}setRange(e,t){this._start=J(this._start,e,t),this._end=J(this._end,e,t),this._range={min:e,max:t}}},Kt=class{get duration(){return this._motion.duration}set duration(e){this._motion.duration=e}get easing(){return this._motion.easing}set easing(e){this._motion.easing=e}constructor(e,t,n,{duration:r=G,easing:i=W}={}){this._camera=e,this._motion=new Gt({duration:r,easing:i,range:{min:0,max:1}}),this._from=t,this._to=n,this._finishPromise=new Promise(e=>{this._finish=e}),this._motion.setNewEndByDelta(1)}getFinishPromise(){return this._finishPromise}update(e){let t=this._camera,n=this._from,r=this._to,i=this._motion;i.update(e);let a=i.val,o=O(),s=Lt(n.zoom,r.zoom,a);we(o,n.rotation,r.rotation,a),t.rotate(o,s),a>=1&&this._finish()}},qt=class extends g{get aspect(){return this._aspect}get changed(){return this._changed}get yawRange(){return this._initialYawRange}set yawRange(e){this._initialYawRange=e}get pitchRange(){return this._initialPitchRange}set pitchRange(e){this._initialPitchRange=e}get zoomRange(){return this._initialZoomRange}set zoomRange(e){this._initialZoomRange=e}constructor({initialYaw:e,initialPitch:t,initialZoom:n,yawRange:r,pitchRange:i,zoomRange:a,fov:o}){super(),this.yaw=e,this.pitch=t,this.zoom=n,this.rollOffset=0,this.initialYaw=e,this.initialPitch=t,this.initialZoom=n,this.position=w(),this.animation=null,this._up=T(0,1,0),this._aspect=1,this._initialYawRange=r,this._initialPitchRange=i,this._initialZoomRange=a,this._yawRange=r,this._pitchRange=i,this._zoomRange=a,this.quaternion=O(),this._updateQuaternion(),this.viewMatrix=b(),this.projectionMatrix=b(),this.fov=o,this._maxRenderHeight=-1}destroy(){this.off()}resize(e,t){let n=this._aspect;this._aspect=e/t,this._aspect!==n&&this.updateMatrix()}lookAt({yaw:e=this.yaw,pitch:t=this.pitch,zoom:n=this.zoom}){let r=Ee(this.quaternion),i=this.zoom;this.yaw=Y(e,0,360),this.pitch=J(t,-90,90),this.zoom=n,this._updateQuaternion();let a=Math.abs(n-i);(!Ae(this.quaternion,r)||a>=jt*10)&&this.updateMatrix()}rotate(e,t=this.zoom){let n=k(O(),e),r=Ae(this.quaternion,n);Oe(this.quaternion,n);let i=this.zoom,{yaw:a,pitch:o}=Wt(n);this.yaw=a,this.pitch=o,this.zoom=t;let s=Math.abs(t-i);(!r||s>=jt*10)&&this.updateMatrix()}animateTo({yaw:e=this.yaw,pitch:t=this.pitch,zoom:n=this.zoom,duration:r=0,easing:i=W}={}){return N(this,void 0,void 0,function*(){if(this.yaw===e&&this.pitch===t&&this.zoom===n)return;let a={rotation:Ee(this.quaternion),zoom:this.zoom},o={rotation:Ut(O(),e,t,this.rollOffset),zoom:n},s=new Kt(this,a,o,{duration:r,easing:i}),c=s.getFinishPromise();return this.animation=s,c.then(()=>{this.animation=null,this.trigger(St.ANIMATION_END,{animation:s})}),c})}restrictYawRange(e,t){this._yawRange={min:e,max:t}}restrictPitchRange(e,t){this._pitchRange={min:e,max:t}}restrictZoomRange(e,t){this._zoomRange={min:e,max:t}}restrictRenderHeight(e){this._maxRenderHeight=e}resetRange(){this._yawRange=this._initialYawRange,this._pitchRange=this._initialPitchRange,this._zoomRange=this._initialZoomRange,this._maxRenderHeight=-1}getYawRange(e){let t=this._yawRange,n=this._maxRenderHeight;if(!t)return wt;let r=this.getHorizontalFov(e)*.5,i=t.min,a=t.max;if(n>0){let e=zt(r*H,this._aspect),o=n*.5,s=Math.tan(e),c=Math.sqrt((1+o*o)/(1+s*s)),l=Math.atan(Math.tan(r*H)*c)*U;i=t.min+l,a=t.max-l}return i>a&&(i=0,a=0),{min:i,max:a}}getPitchRange(e){let t=this._pitchRange,n=this._maxRenderHeight;if(!t)return Tt;let r=t.min,i=t.max;if(n>0){let n=this.getVerticalFov(e)*.5;r=t.min+n,i=t.max-n}return r>i&&(r=0,i=0),{min:Math.max(r,-90),max:Math.min(i,90)}}getZoomRange(){let e=this._zoomRange??Et,t=this.getHorizontalFov(e.max),n=this.getHorizontalFov(e.min),r=this.getHorizontalFov(this.zoom);return{min:Math.max(t,1),max:Math.min(n,180),current:r}}getHorizontalFov(e=this.zoom){return this._getZoomedHorizontalFov(e)*U}getVerticalFov(e=this.zoom){let t=this._aspect;return zt(this._getZoomedHorizontalFov(e),t)*U}fovToZoom(e){let t=this.fov;return Math.tan(H*t*.5)/Math.tan(H*e*.5)}updateMatrix(){let e=this._up,t=this._aspect,n=this.viewMatrix,r=this.projectionMatrix,i=this.position,a=this.quaternion,o=w(),s=T(0,0,-1);D(s,s,a),D(o,e,a);let c=zt(this._getZoomedHorizontalFov(),t);ne(n,i,s,o),te(r,c,t,.1,100),this._changed=!0}onFrameRender(){this._changed=!1}_updateQuaternion(){Ut(this.quaternion,this.yaw,this.pitch,this.rollOffset)}_getZoomedHorizontalFov(e=this.zoom){return 2*Math.atan(Math.tan(H*this.fov*.5)/e)}},Jt=class extends g{constructor(){super(),this._onMouseDown=e=>{let t=this._el;!t||e.button!==dt.LEFT||(e.preventDefault(),t.focus?t.focus():window.focus(),this._prevPos[0]=e.clientX,this._prevPos[1]=e.clientY,window.addEventListener(I.MOUSE_MOVE,this._onMouseMove,!1),window.addEventListener(I.MOUSE_UP,this._onMouseUp,!1),this.trigger(V.INPUT_START,{srcEvent:e,isTouch:!1,isKeyboard:!1}))},this._onMouseMove=e=>{e.preventDefault();let t=e.clientX,n=e.clientY,r=this._prevPos,i=t-r[0],a=n-r[1];this.trigger(V.CHANGE,{delta:{x:i,y:a},isTouch:!1,isKeyboard:!1}),r[0]=t,r[1]=n},this._onMouseUp=()=>{this._prevPos[0]=0,this._prevPos[1]=0,window.removeEventListener(I.MOUSE_MOVE,this._onMouseMove,!1),window.removeEventListener(I.MOUSE_UP,this._onMouseUp,!1),this.trigger(V.INPUT_END,{isTouch:!1,isKeyboard:!1,scrolling:!1})},this._el=null,this._prevPos=[0,0]}enable(e){this._el||(e.addEventListener(I.MOUSE_DOWN,this._onMouseDown),this._el=e)}disable(){let e=this._el;e&&(e.removeEventListener(I.MOUSE_DOWN,this._onMouseDown),window.removeEventListener(I.MOUSE_MOVE,this._onMouseMove,!1),window.removeEventListener(I.MOUSE_UP,this._onMouseUp,!1),this._el=null)}},Yt=class extends g{get scrollable(){return this._scrollable}set scrollable(e){this._scrollable=e}constructor(){super(),this._onTouchStart=e=>{if(e.touches.length>1||this._scrolling)return;let t=e.touches[0];this._isFirstTouch=!0,this._prevPos[0]=t.clientX,this._prevPos[1]=t.clientY,this.trigger(V.INPUT_START,{srcEvent:e,isTouch:!0,isKeyboard:!1})},this._onTouchMove=e=>{if(e.touches.length>1||this._scrolling)return;let t=e.touches[0],n=this._scrollable,r=this._prevPos,i=t.clientX,a=t.clientY,o=i-r[0],s=a-r[1];if(this._isFirstTouch){if(n&&!Bt()&&Math.abs(s)>Math.abs(o)){this._scrolling=!0;return}this._isFirstTouch=!1}e.cancelable!==!1&&e.preventDefault(),this.trigger(V.CHANGE,{delta:{x:o,y:s},isTouch:!0,isKeyboard:!1}),r[0]=i,r[1]=a},this._onTouchEnd=e=>{if(e.touches.length!==0)return;let t=e.touches[0],n=this._prevPos;t?(n[0]=t.clientX,n[1]=t.clientY):(n[0]=0,n[1]=0,this.trigger(V.INPUT_END,{isTouch:!0,isKeyboard:!1,scrolling:this._scrolling})),e.cancelable!==!1&&e.preventDefault(),this._scrolling=!1},this._el=null,this._prevPos=[0,0],this._isFirstTouch=!1,this._scrolling=!1,this._scrollable=!1}enable(e){this._el||(e.addEventListener(I.TOUCH_START,this._onTouchStart,{passive:!1}),e.addEventListener(I.TOUCH_MOVE,this._onTouchMove,{passive:!1}),e.addEventListener(I.TOUCH_END,this._onTouchEnd),this._el=e)}disable(){let e=this._el;e&&(e.removeEventListener(I.TOUCH_START,this._onTouchStart),e.removeEventListener(I.TOUCH_MOVE,this._onTouchMove),e.removeEventListener(I.TOUCH_END,this._onTouchEnd),this._el=null)}},Xt=class extends g{get active(){let e=this._pressed;return e.LEFT||e.UP||e.RIGHT||e.DOWN}constructor(){super(),this._onKeyDown=e=>{if(e.location!==KeyboardEvent.DOM_KEY_LOCATION_STANDARD)return;this._updateKeyPress(e,!0);let t=this._getPressedKeyCount();t<=0||(e.preventDefault(),t===1&&!e.repeat&&this.trigger(V.INPUT_START,{srcEvent:e,isTouch:!1,isKeyboard:!0}))},this._onKeyUp=e=>{e.location===KeyboardEvent.DOM_KEY_LOCATION_STANDARD&&(this._updateKeyPress(e,!1),!(this._getPressedKeyCount()>0)&&this.trigger(V.INPUT_END,{isTouch:!1,isKeyboard:!0,scrolling:!1}))},this._el=null,this._clearPressedKeys()}enable(e){this._el||(e.addEventListener(I.KEY_DOWN,this._onKeyDown),e.addEventListener(I.KEY_UP,this._onKeyUp),this._el=e,this._clearPressedKeys())}disable(){let e=this._el;e&&(e.removeEventListener(I.KEY_DOWN,this._onKeyDown),e.removeEventListener(I.KEY_UP,this._onKeyUp),this._el=null,this._clearPressedKeys())}update(){let e=this._getDeltaByPressedKeys();(e.x!==0||e.y!==0)&&this.trigger(V.CHANGE,{delta:e,isTouch:!1,isKeyboard:!0})}_clearPressedKeys(){this._pressed=ft.reduce((e,t)=>Object.assign(Object.assign({},e),{[t]:!1}),{})}_updateKeyPress(e,t){let n=this._pressed,r=e.keyCode==null?ht[e.key]:pt[e.keyCode];r&&(n[r]=t)}_getPressedKeyCount(){return ft.filter(e=>this._pressed[e]).length}_getDeltaByPressedKeys(){let e=this._pressed,t=0,n=0;return e.LEFT&&(t+=1),e.RIGHT&&--t,e.UP&&(n+=1),e.DOWN&&--n,{x:t,y:n}}},Zt=class extends g{get enabled(){return this._enabled}get enableBlocked(){return this._enableBlocked}get animating(){return this._keyboardInput.active||this._xMotion.activated||this._yMotion.activated}get yaw(){return this._xMotion}get pitch(){return this._yMotion}get scrollable(){return this._touchInput.scrollable}set scrollable(e){this._touchInput.scrollable=e}get pointerScale(){return this._pointerScale}set pointerScale(e){this._pointerScale=e}get keyboardScale(){return this._keyboardScale}set keyboardScale(e){this._keyboardScale=e}get duration(){return this._duration}set duration(e){this._duration=e,this._xMotion.duration=e,this._yMotion.duration=e}get easing(){return this._easing}set easing(e){this._easing=e,this._xMotion.easing=e,this._yMotion.easing=e}get disablePitch(){return this._disablePitch}set disablePitch(e){this._disablePitch=e}get disableYaw(){return this._disableYaw}set disableYaw(e){this._disableYaw=e}get disableKeyboard(){return this._disableKeyboard}set disableKeyboard(e){this._disableKeyboard=e}constructor(e,t,{duration:n=G,easing:r=W,pointerScale:i=[1,1],keyboardScale:a=[1,1],disablePitch:o=!1,disableYaw:s=!1,disableKeyboard:c=!1}={}){super(),this._onInputStart=e=>{this._changedWhileDragging=!1,this.trigger(V.INPUT_START,Object.assign(Object.assign({},e),{inputType:`rotate`}))},this._onChange=e=>{let t=e.delta,n=1/this._zoomScale,r=this._screenScale,i=this._keyboardScale,a=this._pointerScale,o;o=e.isKeyboard?[i[0]*n,i[1]*n]:[a[0]*r[0]*n,a[1]*r[1]*n];let s=t.x*o[0],c=t.y*o[1];this._xMotion.setNewEndByDelta(s),this._yMotion.setNewEndByDelta(c),this._changedWhileDragging=!0},this._onInputEnd=e=>{this.trigger(V.INPUT_END,Object.assign(Object.assign({},e),{inputType:`rotate`})),!this._changedWhileDragging&&!e.isKeyboard&&!e.scrolling&&this.trigger(V.STATIC_CLICK,{isTouch:e.isTouch}),this._changedWhileDragging=!1},this._controlEl=e,this._pointerScale=i,this._keyboardScale=a,this._duration=n,this._easing=r,this._disablePitch=o,this._disableYaw=s,this._disableKeyboard=c,this._enableBlocked=t,this._mouseInput=new Jt,this._touchInput=new Yt,this._keyboardInput=new Xt,this._xMotion=new Gt({duration:n,range:wt,easing:r}),this._yMotion=new Gt({duration:n,range:Tt,easing:r}),this._screenScale=[1,1],this._zoomScale=1,this._enabled=!1,this._changedWhileDragging=!1,this._bindInputs()}destroy(){this.disable(),this._mouseInput.off(),this._touchInput.off(),this._keyboardInput.off(),this.off(),this._changedWhileDragging=!1}update(e){if(!this._enabled)return;let t=this._xMotion,n=this._yMotion,r=this._keyboardInput;this._disableKeyboard||r.update(),this._disablePitch||n.update(e),this._disableYaw||t.update(e)}updateRange(e,t){let n=e.getYawRange(t),r=e.getPitchRange(t);this._xMotion.setRange(n.min,n.max),this._yMotion.setRange(r.min,r.max)}setZoomScale(e){this._zoomScale=e}resize(e,t,n,r){let i=zt(e*H,t)*U;this._screenScale[0]=e/n,this._screenScale[1]=i/r}enable(){if(this._enabled)return;let e=this._controlEl;this._mouseInput.enable(e),this._touchInput.enable(e),this._keyboardInput.enable(e),this._enabled=!0,this._enableBlocked=!1,this.trigger(V.ENABLE,{control:this,updateCursor:!0})}disable(){this._enabled&&(this._mouseInput.disable(),this._touchInput.disable(),this._keyboardInput.disable(),this._enabled=!1,this.trigger(V.DISABLE,{updateCursor:!0}))}sync(e){this.updateRange(e,e.zoom),this._xMotion.reset(e.yaw),this._yMotion.reset(e.pitch)}_bindInputs(){let e=this._mouseInput,t=this._touchInput,n=this._keyboardInput;e.on(V.INPUT_START,this._onInputStart),e.on(V.CHANGE,this._onChange),e.on(V.INPUT_END,this._onInputEnd),t.on(V.INPUT_START,this._onInputStart),t.on(V.CHANGE,this._onChange),t.on(V.INPUT_END,this._onInputEnd),n.on(V.INPUT_START,this._onInputStart),n.on(V.CHANGE,this._onChange),n.on(V.INPUT_END,this._onInputEnd)}},Qt=class extends g{get scrollable(){return this._scrollable}set scrollable(e){this._scrollable=e}constructor(){super(),this._onWheel=e=>{let t=this._scrollable;if(e.deltaY===0||t)return;e.preventDefault(),e.stopPropagation(),this._inputTimer<0?this.trigger(V.INPUT_START,{srcEvent:e,isTouch:!1,isKeyboard:!1}):this._clearTimer();let n=this._baseScale*e.deltaY;this.trigger(V.CHANGE,{delta:n,isTouch:!1,isKeyboard:!1}),this._inputTimer=window.setTimeout(()=>{this.trigger(V.INPUT_END,{isTouch:!1,isKeyboard:!1,scrolling:!1}),this._inputTimer=-1},G)},this._el=null,this._baseScale=.04,this._scrollable=!1,this._inputTimer=-1}enable(e){this._el||(e.addEventListener(I.WHEEL,this._onWheel,{passive:!1,capture:!1}),this._el=e,this._clearTimer())}disable(){let e=this._el;e&&(e.removeEventListener(I.WHEEL,this._onWheel,!1),this._el=null,this._clearTimer())}_clearTimer(){window.clearTimeout(this._inputTimer),this._inputTimer=-1}},$t=class extends g{constructor(){super(),this._onTouchMove=e=>{let t=e.touches;if(t.length!==2||!e.cancelable)return;e.preventDefault(),e.stopPropagation();let n=this._prevDistance,r=[t[0].pageX-t[1].pageX,t[0].pageY-t[1].pageY],i=Math.sqrt(r[0]*r[0]+r[1]*r[1])*this._baseScale,a=this._isFirstTouch?0:i-n;this._isFirstTouch&&this.trigger(V.INPUT_START,{srcEvent:e,isTouch:!0,isKeyboard:!1}),this._prevDistance=i,this._isFirstTouch=!1,this.trigger(V.CHANGE,{delta:a,isTouch:!0,isKeyboard:!1})},this._onTouchEnd=e=>{e.touches.length===0&&(this._isFirstTouch||this.trigger(V.INPUT_END,{isTouch:!0,isKeyboard:!1,scrolling:!1}),this._prevDistance=-1,this._isFirstTouch=!0)},this._el=null,this._baseScale=-.2,this._prevDistance=-1,this._isFirstTouch=!0}enable(e){this._el||(e.addEventListener(I.TOUCH_MOVE,this._onTouchMove,{passive:!1,capture:!1}),e.addEventListener(I.TOUCH_END,this._onTouchEnd),this._el=e,this._prevDistance=-1,this._isFirstTouch=!0)}disable(){let e=this._el;e&&(e.removeEventListener(I.TOUCH_MOVE,this._onTouchMove,!1),e.removeEventListener(I.TOUCH_END,this._onTouchEnd),this._el=null)}},en=class extends g{get enabled(){return this._enabled}get enableBlocked(){return this._enableBlocked}get animating(){return this._motion.activated}get zoom(){return this._motion.val}get scrollable(){return this._wheelInput.scrollable}set scrollable(e){this._wheelInput.scrollable=e}get range(){return this._motion.range}get scale(){return this._scale}set scale(e){this._scale=e}get duration(){return this._motion.duration}get easing(){return this._motion.easing}constructor(e,t,{scale:n=1,duration:r=G,easing:i=W}={}){super(),this._onInputStart=e=>{this.trigger(V.INPUT_START,Object.assign(Object.assign({},e),{inputType:`zoom`}))},this._onChange=({delta:e})=>{let t=e*this._scale;this._motion.setNewEndByDelta(t)},this._onInputEnd=e=>{this.trigger(V.INPUT_END,Object.assign(Object.assign({},e),{inputType:`zoom`}))},this._scale=n,this._controlEl=e,this._enableBlocked=t,this._wheelInput=new Qt,this._pinchInput=new $t,this._motion=new Gt({duration:r,easing:i,range:wt}),this._enabled=!1,this._bindInputs()}destroy(){this.disable(),this._wheelInput.off(),this._pinchInput.off(),this.off()}update(e){this._enabled&&this._motion.update(e)}enable(){if(this._enabled)return;let e=this._controlEl;this._wheelInput.enable(e),this._pinchInput.enable(e),this._enabled=!0,this._enableBlocked=!1,this.trigger(V.ENABLE,{control:this,updateCursor:!1})}disable(){this._enabled&&(this._wheelInput.disable(),this._pinchInput.disable(),this._enabled=!1,this.trigger(V.DISABLE,{updateCursor:!1}))}sync(e){let t=this._motion,n=e.getZoomRange();t.setRange(n.min,n.max),t.reset(n.current)}_bindInputs(){let e=this._wheelInput,t=this._pinchInput;e.on(V.INPUT_START,this._onInputStart),e.on(V.CHANGE,this._onChange),e.on(V.INPUT_END,this._onInputEnd),t.on(V.INPUT_START,this._onInputStart),t.on(V.CHANGE,this._onChange),t.on(V.INPUT_END,this._onInputEnd)}},Z={PITCH_DELTA:1,YAW_DELTA_BY_ROLL:2,YAW_DELTA_BY_YAW:3};Z[Z.PITCH_DELTA]={targetAxis:[0,1,0],meshPoint:[0,0,1]},Z[Z.YAW_DELTA_BY_ROLL]={targetAxis:[0,1,0],meshPoint:[1,0,0]},Z[Z.YAW_DELTA_BY_YAW]={targetAxis:[1,0,0],meshPoint:[0,0,1]};var tn=class extends g{get enabled(){return this._enabled}get orientationUpdated(){return this._orientationUpdated}get ignoreRoll(){return this._ignoreRoll}set ignoreRoll(e){this._ignoreRoll=e}constructor(){super(),this._onDeviceOrientation=e=>{let t=this._orientation,{alpha:n,beta:r,gamma:i}=e;n==null||r==null||i==null||(t.alpha=n,t.beta=r,t.gamma=i,this._orientationUpdated=!0,this._needsCalibrate&&(this._needsCalibrate=!1,this._calibrateSensor()))},this._updateScreenOrientation=()=>{window.screen&&window.screen.orientation&&window.screen.orientation.angle!==void 0?this._screenOrientation=screen.orientation.angle:window.orientation===void 0?this._screenOrientation=0:this._screenOrientation=window.orientation>=0?window.orientation:360+window.orientation},this.quaternion=O(),this._orientation={alpha:0,beta:90,gamma:0},this._yawOrigin=0,this._yawOffset=0,this._orientationUpdated=!1,this._screenOrientation=0,this._needsCalibrate=!0,this._enabled=!1}enable(){this._enabled||(window.addEventListener(I.DEVICE_ORIENTATION,this._onDeviceOrientation),window.addEventListener(I.ORIENTATION_CHANGE,this._updateScreenOrientation),this._updateScreenOrientation(),this._orientationUpdated=!1,this._needsCalibrate=!0,this._enabled=!0)}disable(){this._enabled&&(window.removeEventListener(I.DEVICE_ORIENTATION,this._onDeviceOrientation),window.removeEventListener(I.ORIENTATION_CHANGE,this._updateScreenOrientation),this._enabled=!1)}update(){this._updateRotation(),this._orientationUpdated=!1}collectDelta(){if(!this._orientationUpdated)return{pitch:0,yaw:0};let e=Ee(this.quaternion);return this._updateRotation(),this._orientationUpdated=!1,this._toEulerDelta(e,this.quaternion)}setInitialRotation(e){this._yawOrigin=e}_calibrateSensor(){let e=this._yawOrigin,t=this.quaternion;this._yawOffset=0,this._updateRotation();let{yaw:n}=Wt(t);this._yawOffset=n-e,this._updateRotation(),this._needsCalibrate=!1}_updateRotation(){let e=this.quaternion,{alpha:t,beta:n,gamma:r}=this._orientation;ve(e),Se(e,e,(t-this._yawOffset)*H),xe(e,e,n*H),Ce(e,e,-r*H);let i=O(),a=-this._screenOrientation*.5*H,o=De(-Math.sqrt(.5),0,0,Math.sqrt(.5));ke(i,0,Math.sin(a),0,Math.cos(a)),be(e,e,i),be(e,e,o),k(e,e)}_toEulerDelta(e,t){return{yaw:this._getDeltaYaw(e,t),pitch:this._getDeltaPitch(e,t)}}_getDeltaYaw(e,t){let n=this._getRotationDelta(e,t,Z.YAW_DELTA_BY_YAW);return this._getRotationDelta(e,t,Z.YAW_DELTA_BY_ROLL)*Math.sin(this._extractPitchFromQuat(t))+n}_getDeltaPitch(e,t){return this._getRotationDelta(e,t,Z.PITCH_DELTA)}_getRotationDelta(e,t,n){let r=T(Z[n].targetAxis[0],Z[n].targetAxis[1],Z[n].targetAxis[2]),i=Z[n].meshPoint,a=Ee(e),o=Ee(t);k(a,a),k(o,o);let s=T(0,0,1),c=T(0,0,1);D(s,s,a),D(c,c,o),D(r,r,o);let l=ce(r,E(w(),s,c))>0?1:-1,u=T(i[0],i[1],i[2]),d;d=n===Z.YAW_DELTA_BY_YAW?T(l,0,0):T(0,l,0),D(u,u,o),D(d,d,o);let f=u,p=d,m=w();E(m,f,p),se(m,m);let h=m[0],g=m[1],_=m[2];c=T(i[0],i[1],i[2]),D(c,c,o),s=T(i[0],i[1],i[2]),D(s,s,a);let v=Math.abs(s[0]*h+s[1]*g+s[2]*_),y=w();ae(y,s,oe(w(),m,v));let b=(y[0]*c[0]+y[1]*c[1]+y[2]*c[2])/(re(y)*re(c));b>1&&(b=1);let x=Math.acos(b),S=E(w(),c,y);v=h*S[0]+g*S[1]+_*S[2];let C;return C=n===Z.YAW_DELTA_BY_YAW?v<0?1:-1:v>0?1:-1,x*C*l*U}_extractPitchFromQuat(e){let t=T(0,0,1);return D(t,t,e),-1*Math.atan2(t[1],Math.sqrt(t[0]**2+t[2]**2))}},nn=class extends g{get enabled(){return this._input.enabled}get enableBlocked(){return this._enableBlocked}get animating(){return this._input.enabled&&this._input.orientationUpdated}get ignoreRoll(){return this._ignoreRoll}set ignoreRoll(e){this._ignoreRoll=e}static isAvailable(){return N(this,void 0,void 0,function*(){if(!DeviceMotionEvent)return!1;let e;return Promise.race([new Promise(t=>{e=e=>{t(e.rotationRate&&e.rotationRate.alpha!=null)},window.addEventListener(I.DEVICE_MOTION,e)}),new Promise(e=>{setTimeout(()=>e(!1),1e3)})]).then(t=>(window.removeEventListener(I.DEVICE_MOTION,e),t))})}static requestSensorPermission(){return N(this,void 0,void 0,function*(){return Vt()?DeviceMotionEvent.requestPermission().then(e=>e===`granted`).catch(()=>!1):!0})}constructor(e,{ignoreRoll:t=!0}={}){super(),this._enableBlocked=e,this._ignoreRoll=t,this._input=new tn}destroy(){this.disable(),this._input.off(),this.off()}update(e,t,n,r){this._ignoreRoll?this._updateYawPitch(e,t,n,r):this._updateQuaternion(e,r)}enable(){this._input.enabled||(this._input.enable(),this._enableBlocked=!1,this.trigger(V.ENABLE,{control:this,updateCursor:!1}))}disable(){this._input.enabled&&(this._input.disable(),this.trigger(V.DISABLE,{updateCursor:!1}))}sync(){}_updateYawPitch(e,t,n,r){let i=this._input;if(!i.enabled)return;let{yaw:a,pitch:o}=i.collectDelta();t.add(a),n.add(o),e.lookAt({yaw:t.val,pitch:n.val,zoom:r})}_updateQuaternion(e,t){let n=this._input;n.enabled&&(n.update(),e.rotate(n.quaternion,t))}},rn=class{get useGrabCursor(){return this._useGrabCursor}set useGrabCursor(e){e!==this._useGrabCursor&&(this._useGrabCursor=e,e&&this._enabled?this._setCursor(R.GRAB):e||this._setCursor(R.NONE))}get disableContextMenu(){return this._disableContextMenu}set disableContextMenu(e){e!==this._disableContextMenu&&(this._disableContextMenu=e,e&&this._enabled?this._blockContextMenu():e||this._restoreContextMenu())}get scrollable(){return this._rotateControl.scrollable}set scrollable(e){this._rotateControl.scrollable=e}get wheelScrollable(){return this._zoomControl.scrollable}set wheelScrollable(e){this._zoomControl.scrollable=e}get ignoreZoomScale(){return this._ignoreZoomScale}set ignoreZoomScale(e){this._ignoreZoomScale=e}get enabled(){return this._enabled}get rotate(){return this._rotateControl}get zoom(){return this._zoomControl}get gyro(){return this._gyroControl}get animating(){return this._rotateControl.animating||this._zoomControl.animating||this._gyroControl.animating}constructor(e,t,{useGrabCursor:n,scrollable:r,wheelScrollable:i,disableContextMenu:a,rotate:o,zoom:s,gyro:c}){this._preventContextMenu=e=>{e.preventDefault()},this._onInputStart=e=>{this._useGrabCursor&&!e.isKeyboard&&this._setCursor(R.GRABBING)},this._onInputEnd=e=>{this._useGrabCursor&&!e.isKeyboard&&this._setCursor(R.GRAB)},this._onEnable=({control:e,updateCursor:t})=>{t&&this._useGrabCursor&&this._setCursor(R.GRAB),e.sync(this._camera)},this._onDisable=({updateCursor:e})=>{e&&this._setCursor(R.NONE)},this._onCameraAnimationEnd=({animation:e})=>{e.getFinishPromise().then(()=>{this.sync()})},this._useGrabCursor=n,this._disableContextMenu=a,this._camera=t,this._controlEl=e,this._ignoreZoomScale=!1,this._enabled=!1,this._rotateControl=new Zt(e,!o,X(o)),this._zoomControl=new en(e,!s,X(s)),this._gyroControl=new nn(!c,X(c)),this._rotateControl.scrollable=r,this._zoomControl.scrollable=i,this._bindEvents()}destroy(){this.disable(),this._rotateControl.destroy(),this._zoomControl.destroy(),this._setCursor(R.NONE)}resize(e,t){let n=this._camera;this._rotateControl.resize(n.fov,n.aspect,e,t)}enable(){return N(this,void 0,void 0,function*(){this._enabled||(this._rotateControl.enableBlocked||this._rotateControl.enable(),this._zoomControl.enableBlocked||this._zoomControl.enable(),this._gyroControl.enableBlocked||(yield nn.isAvailable())&&this._gyroControl.enable(),this.sync(),this._disableContextMenu&&this._blockContextMenu(),this._enabled=!0)})}disable(){this._enabled&&(this._rotateControl.disable(),this._zoomControl.disable(),this._gyroControl.disable(),this._restoreContextMenu(),this._enabled=!1)}update(e){let t=this._camera,n=this._rotateControl,r=this._zoomControl,i=this._gyroControl;r.update(e);let a=Ht(t.fov,r.zoom),o=this._ignoreZoomScale?1:Math.max(a,1);n.setZoomScale(o),n.updateRange(t,a),n.update(e);let s=n.yaw,c=n.pitch;i.enabled?i.update(t,s,c,a):t.lookAt({yaw:s.val,pitch:c.val,zoom:a})}sync(){let e=this._camera;this._zoomControl.sync(e),this._rotateControl.sync(e)}_blockContextMenu(){this._controlEl.addEventListener(I.CONTEXT_MENU,this._preventContextMenu)}_restoreContextMenu(){this._controlEl.removeEventListener(I.CONTEXT_MENU,this._preventContextMenu)}_setCursor(e){if(!this._useGrabCursor&&e!==R.NONE)return;let t=this._controlEl;t.style.cursor=e}_bindEvents(){let e=this._rotateControl,t=this._zoomControl;e.on(V.INPUT_START,this._onInputStart),e.on(V.INPUT_END,this._onInputEnd),e.on(V.ENABLE,this._onEnable),e.on(V.DISABLE,this._onDisable),t.on(V.ENABLE,this._onEnable),t.on(V.DISABLE,this._onDisable),this._camera.on(St.ANIMATION_END,this._onCameraAnimationEnd)}},an=class{constructor({width:e,height:t,flipY:n}){this.width=e,this.height=t,this.flipY=n,this.wrapS=WebGLRenderingContext.CLAMP_TO_EDGE,this.wrapT=WebGLRenderingContext.CLAMP_TO_EDGE}destroy(){}isVideo(){return!1}isCube(){return!1}},on=class extends an{constructor({source:e,width:t,height:n,flipY:r}){super({width:t,height:n,flipY:r}),this.source=e}},sn=class extends on{destroy(){let e=this.source;e.pause(),e.removeAttribute(`src`),e.load()}isVideo(){return!0}isPaused(){let e=this.source;return e.paused||e.ended||e.readyState<=2}hasAudio(){let e=this.source;return e.audioTracks?e.audioTracks.length>0:e.webkitAudioDecodedByteCount==null?e.mozHasAudio==null?!0:e.mozHasAudio:e.webkitAudioDecodedByteCount>0}},cn=class extends an{constructor({sources:e,width:t,height:n,flipY:r}){super({width:t,height:n,flipY:r}),this.sources=e}isCube(){return!0}},ln=class{constructor(){this._loadChecker=new lt}load(e,t){return N(this,void 0,void 0,function*(){if(t)return this.loadVideo(e,X(t));if(Array.isArray(e)&&e.length>1)return this.loadCubeImage(e);{let t=Array.isArray(e)?e[0]:e;return this.loadImage(t)}})}loadImage(e){return N(this,void 0,void 0,function*(){let t=this._toImageArray(e);return this._load(t,e=>{let n=t[0];e(new on({source:n,width:n.naturalWidth,height:n.naturalHeight,flipY:!0}))})})}loadCubeImage(e){return N(this,void 0,void 0,function*(){let t=this._toImageArray(e);return this._load(t,e=>{e(new cn({sources:t,width:t[0].naturalWidth,height:t[0].naturalHeight,flipY:!1}))})})}loadVideo(e,t){return N(this,void 0,void 0,function*(){let n=Object.assign({autoplay:!0,muted:!0,loop:!1,volume:1},t),r=this._toVideoElement(e,n);return this._load([r],e=>{let{autoplay:t,muted:i}=n;r.currentTime=0,t&&i&&r.play().catch(()=>void 0),e(new sn({source:r,width:r.videoWidth,height:r.videoHeight,flipY:!0}))})})}_load(e,t){let n=this._loadChecker;return new Promise((r,i)=>{n.once(`ready`,e=>{e.errorCount>0||t(r)}),n.once(`error`,i),n.check(e)})}_toImageArray(e){return(Array.isArray(e)?e:[e]).map(e=>{if(Mt(e)){let t=new Image;return t.crossOrigin=`anonymous`,t.src=e,t}else return e})}_toVideoElement(e,{muted:t,loop:n,volume:r}){if(e instanceof HTMLVideoElement)return e;let i=document.createElement(`video`);return i.crossOrigin=`anonymous`,i.playsInline=!0,i.setAttribute(`webkit-playsinline`,``),i.muted=t,i.volume=r,i.loop=n,Array.isArray(e)?e.forEach(e=>this._appendSourceElement(i,e)):this._appendSourceElement(i,e),i.querySelectorAll(`source`).length>0&&i.readyState<1&&i.load(),i}_appendSourceElement(e,t){if(t instanceof HTMLSourceElement)return t;let n=document.createElement(`source`);n.src=t,e.appendChild(n)}},un=class{constructor(e,t=window){this.maxDeltaTime=e,this._context=t,this._rafId=-1,this._rafTimer=-1,this._lastUpdateTime=-1}start(e){let t=this._context;if(!t||!e||this._rafId>=0||this._rafTimer>=0)return;let n=(r,i)=>{let a=Date.now();e(Math.min(a-this._lastUpdateTime,this.maxDeltaTime*1e3),i),this._lastUpdateTime=a,this._rafId=t.requestAnimationFrame(n)};this._lastUpdateTime=Date.now(),this._rafId=t.requestAnimationFrame(n)}stop(){this._rafId>=0&&this._context.cancelAnimationFrame(this._rafId),this._rafTimer>=0&&clearTimeout(this._rafTimer),this._rafId=-1,this._rafTimer=-1}changeContext(e){this.stop(),this._context=e}},dn=class{get useResizeObserver(){return this._useResizeObserver}get enabled(){return this._enabled}constructor(e,t){this._skipFirstResize=(()=>{let e=!0;return()=>{if(e){e=!1;return}this._onResize()}})(),this._useResizeObserver=e,this._enabled=!1,this._resizeObserver=null,this._onResize=t}enable(e){if(this._enabled&&this.disable(),this._useResizeObserver&&window.ResizeObserver){let t=e.getBoundingClientRect(),n=t.width!==0||t.height!==0,r=new ResizeObserver(n?this._skipFirstResize:this._onResize);r.observe(e),this._resizeObserver=r}else window.addEventListener(I.RESIZE,this._onResize);return this._enabled=!0,this}disable(){if(!this._enabled)return this;let e=this._resizeObserver;return e?(e.disconnect(),this._resizeObserver=null):window.removeEventListener(I.RESIZE,this._onResize),this._enabled=!1,this}},fn=class{get enabled(){return this._enabled}get enableBlocked(){return this._enableBlocked}get playing(){return this._enabled&&!this._interrupted}get delay(){return this._delay}set delay(e){this._delay=e}get delayOnMouseLeave(){return this._delayOnMouseLeave}set delayOnMouseLeave(e){this._delayOnMouseLeave=e}get speed(){return this._speed}set speed(e){this._speed=e}get pauseOnHover(){return this._pauseOnHover}set pauseOnHover(e){this._pauseOnHover=e}get canInterrupt(){return this._canInterrupt}set canInterrupt(e){this._canInterrupt=e}get disableOnInterrupt(){return this._disableOnInterrupt}set disableOnInterrupt(e){this._disableOnInterrupt=e}constructor(e,t,n){this._onInputStart=()=>{this._canInterrupt&&(this._interrupted=!0,this._clearTimeout())},this._onInputEnd=()=>{this._setUninterruptedAfterDelay(this._delay)},this._onGyroEnable=()=>{this.disable()},this._onMouseEnter=()=>{this._pauseOnHover&&(this._interrupted=!0,this._hovering=!0)},this._onMouseLeave=()=>{this._pauseOnHover&&(this._hovering=!1,this._setUninterruptedAfterDelay(this._delayOnMouseLeave))},this._camera=e.camera,this._control=e.control,this._element=t,this._enabled=!1,this._interrupted=!1,this._interruptionTimer=-1,this._hovering=!1;let{delay:r=2e3,delayOnMouseLeave:i=0,speed:a=1,pauseOnHover:o=!1,canInterrupt:s=!0,disableOnInterrupt:c=!1}=X(n);this._enableBlocked=!n,this._delay=r,this._delayOnMouseLeave=i,this._speed=a,this._pauseOnHover=o,this._canInterrupt=s,this._disableOnInterrupt=c}destroy(){this.disable()}update(e){if(!this._enabled)return;if(this._interrupted){this._disableOnInterrupt&&this.disable();return}let t=this._camera,n=-this._speed*e/100;t.yaw=Y(t.yaw+n,0,360)}enable(){let e=this._control,t=this._element;this._enabled||e.gyro.enabled||(e.rotate.on(V.INPUT_START,this._onInputStart),e.rotate.on(V.INPUT_END,this._onInputEnd),e.zoom.on(V.INPUT_START,this._onInputStart),e.zoom.on(V.INPUT_END,this._onInputEnd),e.gyro.on(V.ENABLE,this._onGyroEnable),t.addEventListener(I.MOUSE_ENTER,this._onMouseEnter,!1),t.addEventListener(I.MOUSE_LEAVE,this._onMouseLeave,!1),this._enabled=!0,this._enableBlocked=!1)}enableAfterDelay(){this.enable(),this._interrupted=!0,this._setUninterruptedAfterDelay(this._delay)}disable(){if(!this._enabled)return;let e=this._control,t=this._element;e.rotate.off(V.INPUT_START,this._onInputStart),e.rotate.off(V.INPUT_END,this._onInputEnd),e.zoom.off(V.INPUT_START,this._onInputStart),e.zoom.off(V.INPUT_END,this._onInputEnd),e.gyro.off(V.ENABLE,this._onGyroEnable),t.removeEventListener(I.MOUSE_ENTER,this._onMouseEnter,!1),t.removeEventListener(I.MOUSE_LEAVE,this._onMouseLeave,!1),this._enabled=!1,this._interrupted=!1,this._hovering=!1,this._clearTimeout()}_setUninterruptedAfterDelay(e){this._hovering||(this._clearTimeout(),e>0?this._interruptionTimer=window.setTimeout(()=>{this._interrupted=!1,this._interruptionTimer=-1},e):(this._interrupted=!1,this._interruptionTimer=-1))}_clearTimeout(){this._interruptionTimer>=0&&(window.clearTimeout(this._interruptionTimer),this._interruptionTimer=-1)}},pn=class extends g{constructor(e,t={}){super(),this.destroy=()=>{this.exit(),this.off()},this._onSessionEnd=()=>{this.exit(),this.trigger(B.VR_END)},this._xrSession=null,this._xrRefSpace=null,this._ctx=e,this._options=t}isAvailable(){return N(this,void 0,void 0,function*(){let e=window.navigator.xr;return e?e.isSessionSupported(kt).then(e=>e).catch(()=>!1):!1})}enter(){return N(this,void 0,void 0,function*(){let e=this._ctx,t=window.navigator.xr;if(!t)return;yield nn.requestSensorPermission();let n=Object.assign({requiredFeatures:[At]},this._options);yield e.makeXRCompatible();let r=yield t.requestSession(kt,n);e.bindXRLayer(r);let i=yield r.requestReferenceSpace(At);this._setSession(r,i),this.trigger(B.VR_START,{session:r})})}exit(){let e=this._xrSession;e&&e.end().catch(()=>void 0),this._xrSession=null,this._xrRefSpace=null}canRender(e){let t=this._xrRefSpace;return t?!!e.getViewerPose(t):!1}getEyeParams(e){let t=e.session,n=e.getViewerPose(this._xrRefSpace);if(!n)return null;let r=t.renderState.baseLayer;return r?n.views.map(e=>({viewport:r.getViewport(e),vMatrix:e.transform.inverse.matrix,pMatrix:e.projectionMatrix})):null}_setSession(e,t){this._xrSession=e,this._xrRefSpace=t,e.addEventListener(I.XR_END,this._onSessionEnd)}},mn=class{constructor(e,t){this.element=e,this.position=t}},hn=class{constructor(e,t,{zoom:n=!1}){this._containerEl=Pt(`.${z.HOTSPOT_CONTAINER}`,e),this._renderer=t,this._hotspots=[],this._zoom=n}refresh(){let e=this._containerEl;e&&(this._hotspots=[].slice.apply(e.querySelectorAll(`.${z.HOTSPOT}`)).map(e=>this._parseHotspot(e)))}render(e){let t=this._hotspots,n=this._renderer.width*.5,r=this._renderer.height*.5,i=e.zoom,a=this._zoom?`scale(${i})`:``;t.forEach(t=>{let i=t.position,o=w();if(ie(o,i),le(o,o,e.viewMatrix),le(o,o,e.projectionMatrix),o[2]>1||o[2]<0){t.element.classList.remove(z.HOTSPOT_VISIBLE);return}let s=Me(o[0]*n+n,-o[1]*r+r);t.element.classList.add(z.HOTSPOT_VISIBLE),t.element.style.transform=[`translate(-50%, -50%)`,`translate(${s[0]}px, ${s[1]}px)`,a].join(` `)})}_parseHotspot(e){let t=e.dataset.yaw,n=e.dataset.pitch,r=e.dataset.position;if(t||n){let r=t?parseFloat(t):0,i=n?parseFloat(n):0;return new mn(e,this._yawPitchToVec3(r,i))}else if(r){let t=r.split(` `).map(e=>parseFloat(e));if(t.length<3)throw new P(F.MESSAGES.INSUFFICIENT_ARGS(r,`hotspot attribute "data-position"`),F.CODES.INSUFFICIENT_ARGS);return new mn(e,T(t[0],t[1],t[2]))}else return new mn(e,T(0,0,-1))}_yawPitchToVec3(e,t){let n=e*H,r=t*H,i=w();return i[1]=Math.sin(r),i[2]=Math.cos(r),i[0]=i[2]*Math.sin(-n),i[2]=-i[2]*Math.cos(-n),i}},gn=class{get count(){return this.geometry.indicies.count}constructor(e,t,n){this.obj=e,this.geometry=t,this.buffers=n}},_n=class{get canvas(){return this._canvas}get maxTextureSize(){return this._maxTextureSize}get isWebGL2(){return this._isWebGL2}get supportVAO(){return this._isWebGL2||!!this._extensions.vao}get lost(){return this._contextLost}get debug(){return this._debug}constructor(e,t){this._onContextLost=()=>{this._canvas.classList.add(z.CTX_LOST),this._contextLost=!0},this._onContextRestore=()=>{this._canvas.classList.remove(z.CTX_LOST),this._contextLost=!1},this._canvas=e,this._contextLost=!1,this._debug=t,this._extensions={vao:null,loseContext:null}}init(){let e=this._canvas,{gl:t,isWebGL2:n}=this._getContext(e);this._gl=t,this._maxTextureSize=t.getParameter(t.MAX_TEXTURE_SIZE),this._isWebGL2=n,this._isWebGL2||(this._extensions.vao=t.getExtension(`OES_vertex_array_object`)),this._extensions.loseContext=t.getExtension(`WEBGL_lose_context`),e.addEventListener(I.CONTEXT_LOST,this._onContextLost),e.addEventListener(I.CONTEXT_RESTORED,this._onContextRestore)}destroy(){let e=this._gl,t=this._canvas;e&&(e.bindBuffer(e.ARRAY_BUFFER,null),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)),t.removeEventListener(I.CONTEXT_LOST,this._onContextLost),t.removeEventListener(I.CONTEXT_RESTORED,this._onContextRestore)}forceLoseContext(){let e=this._extensions.loseContext;e&&e.loseContext()}forceRestoreContext(){let e=this._extensions.loseContext;e&&e.restoreContext()}clear(){let e=this._gl;e.clear(e.COLOR_BUFFER_BIT)}resize(){let e=this._gl;e.viewport(0,0,e.drawingBufferWidth,e.drawingBufferHeight)}viewport(e,t,n,r){this._gl.viewport(e,t,n,r)}createVAO(e,t){let n=this._createNativeVAO(),r=new gn(n,e,{indicies:this._createBuffer(),position:this._createBuffer(),uv:this._createBuffer()});return n&&(this._bindNativeVAO(n),this._supplyGeometryData(r,t),this._bindNativeVAO(null),this._unbindBuffers()),r}draw(e,t){let n=this._gl;e.obj?this._bindNativeVAO(e.obj):this._supplyGeometryData(e,t),n.drawElements(n.TRIANGLES,e.count,n.UNSIGNED_SHORT,0),e.obj?this._bindNativeVAO(null):this._unbindBuffers()}releaseVAO(e){e.obj&&this._deleteNativeVAO(e.obj),this._deleteBuffer(e.buffers.indicies),this._deleteBuffer(e.buffers.position),this._deleteBuffer(e.buffers.uv)}getUniformLocations(e,t){let n=this._gl,r=Object.keys(t).reduce((t,r)=>(t[r]=n.getUniformLocation(e,r),t),{});return Object.assign(Object.assign({},this._getCommonUniformLocations(e)),r)}updateCommonUniforms(e,t,n){let r=this._gl,i=n.uniformLocations,a=e.matrix,o=b();S(o,t.viewMatrix,a),r.uniformMatrix4fv(i.uMVMatrix,!1,o),r.uniformMatrix4fv(i.uPMatrix,!1,t.projectionMatrix)}updateVRUniforms(e,t,n,r){let i=this._gl,a=e.uniformLocations;i.uniformMatrix4fv(a.uMVMatrix,!1,t),i.uniformMatrix4fv(a.uPMatrix,!1,n),a.uEye&&i.uniform1f(a.uEye,r)}updateUniforms(e){let t=this._gl,n=e.uniforms,r=e.uniformLocations;for(let e in n){let i=n[e],a=r[e];i&&i.needsUpdate&&i.update(t,a,this._isWebGL2)}}releaseShaderResources(e){let t=this._gl,n=e.uniforms;for(let e in n){let r=n[e];r&&r.needsUpdate&&r.destroy(t)}t.deleteProgram(e.program)}useProgram(e){this._gl.useProgram(e.program)}createProgram(e,t){let n=this._gl,r=n.createProgram(),i=this._compileShader(n.VERTEX_SHADER,e),a=this._compileShader(n.FRAGMENT_SHADER,t);if(n.attachShader(r,i),n.attachShader(r,a),n.bindAttribLocation(r,0,`position`),n.bindAttribLocation(r,1,`uv`),n.linkProgram(r),this._debug&&!n.getProgramParameter(r,n.LINK_STATUS)){let e=null;throw n.getShaderParameter(i,n.COMPILE_STATUS)?n.getShaderParameter(a,n.COMPILE_STATUS)||(e=n.getShaderInfoLog(a)):e=n.getShaderInfoLog(i),new P(F.MESSAGES.FAILED_LINKING_PROGRAM(n.getProgramInfoLog(r),e),F.CODES.FAILED_LINKING_PROGRAM)}return n.deleteShader(i),n.deleteShader(a),r}createWebGLTexture(e){let t=this._gl,n=t.createTexture();if(t.bindTexture(t.TEXTURE_2D,n),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,e.wrapS),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,e.wrapT),!e.isVideo()&&this._isWebGL2){let n=t;n.texStorage2D(n.TEXTURE_2D,1,n.RGBA8,e.width,e.height)}return n}createWebGLCubeTexture(e,t){let n=this._gl,r=n.createTexture();if(n.bindTexture(n.TEXTURE_CUBE_MAP,r),n.texParameteri(n.TEXTURE_CUBE_MAP,n.TEXTURE_MIN_FILTER,n.LINEAR),n.texParameteri(n.TEXTURE_CUBE_MAP,n.TEXTURE_MAG_FILTER,n.LINEAR),n.texParameteri(n.TEXTURE_CUBE_MAP,n.TEXTURE_WRAP_S,e.wrapS),n.texParameteri(n.TEXTURE_CUBE_MAP,n.TEXTURE_WRAP_T,e.wrapT),this._isWebGL2){let e=n;e.texStorage2D(e.TEXTURE_CUBE_MAP,1,e.RGBA8,t,t)}return r}makeXRCompatible(){return N(this,void 0,void 0,function*(){let e=this._gl,t=e.getContextAttributes();t&&t.xrCompatible!==!0&&(yield e.makeXRCompatible())})}bindXRLayer(e){let t=this._gl,n=new XRWebGLLayer(e,t);e.updateRenderState({baseLayer:n})}bindXRFrame(e){let t=this._gl,n=e.session.renderState.baseLayer;t.bindFramebuffer(t.FRAMEBUFFER,n.framebuffer)}useDefaultFrameBuffer(){let e=this._gl;e.bindFramebuffer(e.FRAMEBUFFER,null)}_createBuffer(){return this._gl.createBuffer()}_deleteBuffer(e){return this._gl.deleteBuffer(e)}_createNativeVAO(){let e=this._gl;return this._isWebGL2?e.createVertexArray():this._extensions.vao?.createVertexArrayOES()||null}_bindNativeVAO(e){let t=this._gl;this._isWebGL2?t.bindVertexArray(e):this._extensions.vao?.bindVertexArrayOES(e)}_deleteNativeVAO(e){let t=this._gl;this._isWebGL2?t.deleteVertexArray(e):this._extensions.vao?.deleteVertexArrayOES(e)}_supplyGeometryData(e,t){let n=e.geometry;this._supplyIndiciesData(n.indicies,e.buffers.indicies),this._supplyAttributeData(n.vertices,t.program,`position`,e.buffers.position),this._supplyAttributeData(n.uvs,t.program,`uv`,e.buffers.uv)}_unbindBuffers(){let e=this._gl;e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null),e.bindBuffer(e.ARRAY_BUFFER,null)}_supplyIndiciesData(e,t){let n=this._gl;n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,t),n.bufferData(n.ELEMENT_ARRAY_BUFFER,e.data,n.STATIC_DRAW)}_supplyAttributeData(e,t,n,r){let i=this._gl,a=i.getAttribLocation(t,n);a<0||(i.bindBuffer(i.ARRAY_BUFFER,r),i.bufferData(i.ARRAY_BUFFER,e.data,i.STATIC_DRAW),i.vertexAttribPointer(a,e.itemSize,i.FLOAT,!1,0,0),i.enableVertexAttribArray(a))}_compileShader(e,t){let n=this._gl,r=n.createShader(e);return n.shaderSource(r,t),n.compileShader(r),r}_getCommonUniformLocations(e){let t=this._gl;return{uMVMatrix:t.getUniformLocation(e,`uMVMatrix`),uPMatrix:t.getUniformLocation(e,`uPMatrix`)}}_getContext(e){let t=[`webgl2`,`webgl`,`experimental-webgl`,`webkit-3d`,`moz-webgl`],n=null,r=!1,i={preserveDrawingBuffer:!1,antialias:!1},a=e=>e.statusMessage;e.addEventListener(I.CONTEXT_CREATE_ERROR,a);for(let a of t){try{n=e.getContext(a,i),r=a===`webgl2`}catch{}if(n)break}if(e.removeEventListener(I.CONTEXT_CREATE_ERROR,a),!n)throw new P(F.MESSAGES.WEBGL_NOT_SUPPORTED,F.CODES.WEBGL_NOT_SUPPORTED);return{gl:n,isWebGL2:r}}},vn=class{get canvas(){return this._canvas}get width(){return this._elementSize.x}get height(){return this._elementSize.y}get pixelRatio(){return this._pixelRatio}get aspect(){return this._elementSize.x/this._elementSize.y}constructor(e,t){this._canvas=e,this._elementSize={x:0,y:0},this._pixelRatio=1,this.ctx=new _n(e,t)}destroy(){let e=this._canvas;this.ctx.destroy(),e.width=1,e.height=1}resize(){let e=this._canvas,t=this._elementSize,n=window.devicePixelRatio;t.x=e.clientWidth,t.y=e.clientHeight,e.width=t.x*n,e.height=t.y*n,this._pixelRatio=n,this.ctx.resize()}render(e,t){let n=this.ctx;n.lost||(n.clear(),n.useProgram(e.program),n.updateCommonUniforms(e,t,e.program),e.update({camera:t}),n.updateUniforms(e.program),n.draw(e.vao,e.program))}renderVR(e,t,n){let r=this.ctx,i=t.getEyeParams(n);!i||!e||(r.bindXRFrame(n),r.useProgram(e.program),r.updateUniforms(e.program),i.forEach((t,n)=>{let i=t.viewport,a=S(b(),t.vMatrix,e.matrix);r.viewport(i.x,i.y,i.width,i.height),r.updateVRUniforms(e.program,a,t.pMatrix,n),r.draw(e.vao,e.program)}))}},yn=class extends g{get rootEl(){return this._rootEl}get renderer(){return this._renderer}get camera(){return this._camera}get control(){return this._control}get vr(){return this._vr}get hotspot(){return this._hotspot}get plugins(){return this._plugins}get projection(){return this._projection}set projection(e){this._initialized&&e?this.load(e):this._projection=e}get mesh(){return this._mesh}get initialized(){return this._initialized}get autoplay(){return this._autoplay}get autoInit(){return this._autoInit}get autoResize(){return this._autoResize}get canvasSelector(){return this._canvasSelector}get useResizeObserver(){return this._useResizeObserver}get tabIndex(){return this._tabIndex}set tabIndex(e){let t=this._renderer.canvas;this._tabIndex=e,e==null?t.removeAttribute(`tabindex`):t.tabIndex=e}get maxDeltaTime(){return this._animator.maxDeltaTime}set maxDeltaTime(e){this._animator.maxDeltaTime=e}get debug(){return this._debug}set debug(e){this._debug=e}get initialYaw(){return this._camera.initialYaw}set initialYaw(e){this._camera.initialYaw=e}get initialPitch(){return this._camera.initialPitch}set initialPitch(e){this._camera.initialPitch=e}get initialZoom(){return this._camera.initialZoom}set initialZoom(e){this._camera.initialZoom=e}get yawRange(){return this._camera.yawRange}set yawRange(e){this._camera.yawRange=e,this._projection&&this._projection.updateCamera(this._camera)}get pitchRange(){return this._camera.pitchRange}set pitchRange(e){this._camera.pitchRange=e,this._projection&&this._projection.updateCamera(this._camera)}get zoomRange(){return this._camera.zoomRange}set zoomRange(e){this._camera.zoomRange=e,this._projection&&this._projection.updateCamera(this._camera)}get fov(){return this._camera.fov}set fov(e){let t=this._camera,n=this._control;t.fov=e,t.updateMatrix(),n.sync()}get rotate(){return this._control.rotate}get zoom(){return this._control.zoom}get gyro(){return this._control.gyro}get useGrabCursor(){return this._control.useGrabCursor}set useGrabCursor(e){this._control.useGrabCursor=e}get disableContextMenu(){return this._control.disableContextMenu}set disableContextMenu(e){this._control.disableContextMenu=e}get scrollable(){return this._control.scrollable}set scrollable(e){this._control.scrollable=e}get wheelScrollable(){return this._control.wheelScrollable}set wheelScrollable(e){this._control.wheelScrollable=e}constructor(e,{projection:t=null,initialYaw:n=0,initialPitch:r=0,initialZoom:i=1,yawRange:a=null,pitchRange:o=null,zoomRange:s=null,fov:c=90,useGrabCursor:l=!0,disableContextMenu:u=!1,rotate:d=!0,zoom:f=!0,gyro:p=!1,scrollable:m=!0,wheelScrollable:h=!1,autoplay:g=!1,hotspot:_={},autoInit:v=!0,autoResize:y=!0,canvasSelector:b=`canvas`,useResizeObserver:x=!0,on:S={},plugins:C=[],maxDeltaTime:ee=1/30,tabIndex:te=0,debug:ne=!1}={}){super(),this.renderFrame=e=>{let t=this._camera,n=this._renderer,r=this._control,i=this._hotspot,a=this._autoplay,o=this._mesh;o&&(this._emit(B.BEFORE_RENDER),a.playing&&(a.update(e),r.sync()),t.animation?t.animation.update(e):r.update(e),n.render(o,t),i.render(t),t.changed&&this._emit(B.VIEW_CHANGE,{yaw:t.yaw,pitch:t.pitch,zoom:t.zoom,quaternion:[t.quaternion[0],t.quaternion[1],t.quaternion[2],t.quaternion[3]]}),t.onFrameRender(),this._emit(B.RENDER))},this._renderFrameOnDemand=e=>{let t=this._camera,n=this._control,r=this._autoplay,i=this._mesh?.getTexture();!this._initialized||!i||!t.animation&&!n.animating&&!r.playing&&!i.isVideo()||this.renderFrame(e)},this._renderVRFrame=(e,t)=>{let n=this._vr,r=this._mesh,i=this._renderer;r&&(this._emit(B.BEFORE_RENDER),i.renderVR(r,n,t),this._emit(B.RENDER))},this._rootEl=Ft(e),this._plugins=C,this._initialized=!1,this._autoInit=v,this._autoResize=y,this._canvasSelector=b,this._useResizeObserver=x,this._tabIndex=te,this._debug=ne;let w=It(this._rootEl,b);this._renderer=new vn(w,ne),this._camera=new qt({initialYaw:n,initialPitch:r,initialZoom:i,fov:c,yawRange:a,pitchRange:o,zoomRange:s}),this._control=new rn(w,this._camera,{useGrabCursor:l,scrollable:m,wheelScrollable:h,disableContextMenu:u,rotate:d,zoom:f,gyro:p}),this._animator=new un(ee),this._autoplay=new fn(this,w,g),this._projection=t,this._mesh=null,this._autoResizer=new dn(x,()=>this.resize()),this._vr=new pn(this._renderer.ctx),this._hotspot=new hn(this._rootEl,this._renderer,_),this._addEventHandlers(S),t&&v&&this.init()}destroy(){this._camera.destroy(),this._animator.stop(),this._renderer.destroy(),this._control.destroy(),this._autoResizer.disable(),this._mesh&&(this._mesh.destroy(this._renderer.ctx),this._mesh=null),this._plugins.forEach(e=>e.destroy(this)),this._initialized=!1}init(){return N(this,void 0,void 0,function*(){if(!this._projection)throw new P(F.MESSAGES.PROVIDE_PROJECTION_FIRST,F.CODES.PROVIDE_PROJECTION_FIRST);let e=this._renderer,t=this._camera,n=this._control,r=this._animator,i=this._hotspot,a=this._projection,o=e.canvas;this._bindComponentEvents(),e.ctx.init(),this._resizeComponents(),t.updateMatrix(),this._autoResize&&this._autoResizer.enable(o),this._autoplay.enableBlocked||this._autoplay.enable(),this._plugins.forEach(e=>{e.init(this)});let s=yield this._loadTexture(a);this._applyProjection(a,s),i.refresh(),r.start(this._renderFrameOnDemand),yield n.enable(),this._tabIndex!=null&&!o.hasAttribute(`tabIndex`)&&(o.tabIndex=this._tabIndex),this._initialized=!0,this.renderFrame(0),this._emit(B.READY)})}load(e){return N(this,void 0,void 0,function*(){if(!e)return!1;if(this._initialized){let t=yield this._loadTexture(e);this._applyProjection(e,t),this.renderFrame(0)}else this._projection=e,this.init();return!0})}resize(){if(!this._initialized)return;this._resizeComponents(),this.renderFrame(0);let{width:e,height:t}=this._renderer;this._emit(B.RESIZE,{width:e,height:t})}addPlugins(...e){this._initialized&&e.forEach(e=>{e.init(this)}),this._plugins.push(...e)}removePlugins(...e){e.forEach(e=>{let t=this._plugins.indexOf(e);t<0||(e.destroy(this),this._plugins.splice(t,1))})}_emit(e,...t){let n=t?t[0]:{};this.trigger(e,Object.assign({type:e,target:this},n))}_applyProjection(e,t){let n=this._camera,r=this._control,i=this._renderer,a=this._mesh;a&&a.destroy(i.ctx);let o=e.createMesh(i.ctx,t);e.updateCamera(n),e.updateControl(r),this._mesh=o,this._emit(B.PROJECTION_CHANGE,{projection:e})}_loadTexture(e){return N(this,void 0,void 0,function*(){let t=new ln,{src:n,video:r}=e;this._emit(B.LOAD_START,{src:n,video:r});let i=yield t.load(n,r);return this._emit(B.LOAD,{src:n,video:r}),i})}_resizeComponents(){let e=this._renderer,t=this._camera,n=this._control;e.resize(),t.resize(e.width,e.height),n.resize(e.width,e.height)}_addEventHandlers(e){Object.keys(e).forEach(t=>{this.on(t,e[t])})}_bindComponentEvents(){let e=this._rootEl,t=this._control,n=this._animator,r=this._renderer,i=this._vr;[V.STATIC_CLICK,V.INPUT_START,V.INPUT_END].forEach(e=>{t.rotate.on(e,t=>{this._emit(e,t)}),t.zoom.on(e,t=>{this._emit(e,t)})}),i.on(B.VR_START,t=>{e.classList.add(z.IN_VR),n.changeContext(t.session),n.start(this._renderVRFrame),this._emit(B.VR_START)}),i.on(B.VR_END,()=>{e.classList.remove(z.IN_VR),r.ctx.useDefaultFrameBuffer(),n.changeContext(window),n.start(this._renderFrameOnDemand),this.resize(),this._emit(B.VR_END)})}};yn.VERSION=`4.0.0-beta.7`;var bn=class extends g{constructor(){super(),this.matrix=b(),this.rotation=O(),this.position=T(0,0,0),this.scale=T(1,1,1)}updateMatrix(){C(this.matrix,this.rotation,this.position,this.scale)}update(e){this.trigger(Ct.UPDATE,e)}},xn=class e{constructor({className:e={}}={}){this._startLoading=({target:e})=>{e.rootEl.appendChild(this._container),e.initialized?e.once(B.LOAD,this._detachElements):e.once(B.READY,this._detachElements)},this._detachElements=({target:e})=>{let t=this._container;t&&t.parentElement===e.rootEl&&e.rootEl.removeChild(t)},this.className=e,this._container=this._createElements()}init(e){e.on(B.LOAD_START,this._startLoading)}destroy(e){e.off(B.LOAD_START,this._startLoading),this._detachElements({target:e})}_createElements(){let t=Object.assign(Object.assign({},this.className),e.DEFAULT_CLASS),n=q(t.CONTAINER),r=q(t.RING);return n.appendChild(r),n}};xn.DEFAULT_CLASS={CONTAINER:`view360-spinner`,RING:`view360-spinner-ring`};var Q=class{constructor(e){this.position=e.position,this.order=e.order}},Sn={CONTROLS_ROOT:`view360-controls`,CONTROLS_BG:`view360-controls-background`,CONTROLS_MAIN:`view360-controls-main`,CONTROLS_TOP:`view360-controls-top`,CONTROLS_BOTTOM:`view360-controls-bottom`,CONTROLS_MID:`view360-controls-mid`,CONTROLS_LEFT:`view360-controls-left`,CONTROLS_RIGHT:`view360-controls-right`,CONTROLS_FLOAT_LEFT:`view360-controls-float-left`,CONTROLS_FLOAT_RIGHT:`view360-controls-float-right`,CONTROLS_BUTTON:`view360-controls-button`,PROGRESS_ROOT:`view360-controls-progress`,VOLUME_ROOT:`view360-controls-volume`,RANGE_ROOT:`view360-range`,RANGE_TRACK:`view360-range-track`,RANGE_THUMB:`view360-range-thumb`,RANGE_FILLER:`view360-range-filler`,PLAY_BUTTON:`view360-controls-play`,PAUSE_BUTTON:`view360-controls-pause`,UNMUTED_BUTTON:`view360-controls-unmuted`,MUTED_BUTTON:`view360-controls-muted`,FULLSCREEN_BUTTON:`view360-controls-fullscreen`,FULLSCREEN_EXIT_BUTTON:`view360-controls-fullscreen-exit`,VR_BUTTON:`view360-controls-vr`,GYRO_ENABLED:`view360-controls-gyro-enabled`,GYRO_DISABLED:`view360-controls-gyro-disabled`,VIDEO_TIME_DISPLAY:`view360-controls-time`,PIEVIEW_ROOT:`view360-controls-pie`,FIXED:`view360-controls-fixed`,UNAVAILABLE:`view360-controls-unavailable`,HIDDEN:`view360-controls-hidden`},$={TOP_LEFT:`top-left`,TOP_RIGHT:`top-right`,MAIN_TOP:`main-top`,MAIN_BOTTOM:`main-bottom`,MAIN_LEFT:`main-left`,MAIN_RIGHT:`main-right`},Cn=class extends g{constructor(){super(),this._onHold=({srcEvent:e,isTouch:t})=>{let n=this._bbox;if(!n)return;let r=t?e.touches[0].pageX:e.pageX,i=n.x+(window.scrollX??window.pageXOffset),a=J(r,i,i+n.width),o=(a-i)/n.width;this._motion.reset(a),this.thumbEl.classList.add(this._fixedClass),this.trigger(V.INPUT_START,o)},this._onChange=({delta:e})=>{let t=this._motion,n=this._bbox;if(!n)return;t.setNewEndByDelta(e.x),t.update(1);let r=n.x+(window.scrollX??window.pageXOffset),i=(J(t.val,r,r+n.width)-r)/n.width;this.trigger(V.CHANGE,i)},this._onRelease=()=>{this._bbox&&(this.thumbEl.classList.remove(this._fixedClass),this.trigger(V.INPUT_END))};let e=document.createElement(L),t=document.createElement(L),n=document.createElement(L),r=document.createElement(L);e.draggable=!1,t.appendChild(r),t.appendChild(n),e.appendChild(t),this.rootEl=e,this.trackEl=t,this.thumbEl=n,this.fillerEl=r,this._mouseInput=new Jt,this._touchInput=new Yt,this._motion=new Gt({duration:1,range:wt,easing:e=>e}),this._bbox={x:0,y:0,width:0,height:0,left:0,right:0,bottom:0,top:0},this._fixedClass=Sn.FIXED}init(e){let t=this._mouseInput,n=this._touchInput;this.rootEl.classList.add(e.RANGE_ROOT),this.trackEl.classList.add(e.RANGE_TRACK),this.thumbEl.classList.add(e.RANGE_THUMB),this.fillerEl.classList.add(e.RANGE_FILLER),this._fixedClass=e.FIXED,t.on(V.INPUT_START,this._onHold),n.on(V.INPUT_START,this._onHold),t.on(V.INPUT_END,this._onRelease),n.on(V.INPUT_END,this._onRelease),t.on(V.CHANGE,this._onChange),n.on(V.CHANGE,this._onChange),t.enable(this.rootEl),n.enable(this.rootEl),this.resize()}destroy(){let e=this._mouseInput,t=this._touchInput;this.rootEl.className=``,this.trackEl.className=``,this.thumbEl.className=``,this.fillerEl.className=``,e.off(),t.off(),e.disable(),t.disable()}resize(){this._bbox=this.trackEl.getBoundingClientRect()}updateStyle(e){let t=this._bbox.width,n=J(e,0,1);this.fillerEl.style.width=`${n*100}%`,this.thumbEl.style.transform=`translateX(${n*t}px)`}},wn=class extends Q{get element(){return this._rangeControl.rootEl}constructor({position:e=$.MAIN_TOP,order:t=9999}={}){super({position:e,order:t}),this._onResize=()=>{this._rangeControl.resize()},this._onTimeUpdate=()=>{let e=this._video;e&&(this._currentTime=e.source.currentTime,this._rangeControl.updateStyle(this._currentTime/this._duration))},this._onDurationChange=()=>{let e=this._video;e&&(this._duration=e.source.duration,this._rangeControl.updateStyle(this._currentTime/this._duration))},this._onHold=e=>{let t=this._video,n=this._controlBar;if(!t||!n)return;let r=t.isPaused();t.source.pause();let i=t.source.duration*e;t.source.currentTime=i,t.source.dispatchEvent(new CustomEvent(K,{detail:{time:i}})),n.rootEl.classList.add(n.className.FIXED),this._wasPaused=!this._playPromise&&r},this._onControl=e=>{let t=this._video;if(!t)return;let n=t.source.duration*e;t.source.currentTime=n,t.source.dispatchEvent(new CustomEvent(K,{detail:{time:n}}))},this._onRelease=()=>{let e=this._video,t=this._controlBar;e&&t&&!this._wasPaused&&!this._playPromise&&(this._playPromise=e.source.play().catch(()=>void 0),this._playPromise.then(()=>{this._playPromise=null}),t.rootEl.classList.remove(t.className.FIXED)),this._wasPaused=!1},this.position=e,this.order=t,this._controlBar=null,this._rangeControl=new Cn,this._video=null,this._wasPaused=!1,this._currentTime=0,this._duration=0,this._playPromise=null}init(e,t){let n=e.mesh?.getTexture(),r=this.element,i=this._rangeControl,a=t.className.UNAVAILABLE;if(!n||!n.isVideo()){r.classList.add(a);return}r.classList.remove(a),r.classList.add(t.className.PROGRESS_ROOT),e.on(B.RESIZE,this._onResize),n.source.addEventListener(I.VIDEO_TIME_UPDATE,this._onTimeUpdate),n.source.addEventListener(I.VIDEO_DURATION_CHANGE,this._onDurationChange),n.source.addEventListener(K,this._onTimeUpdate),i.init(t.className),i.on(V.INPUT_START,this._onHold),i.on(V.CHANGE,this._onControl),i.on(V.INPUT_END,this._onRelease),this._video=n,this._currentTime=n.source.currentTime,this._duration=n.source.duration,this._controlBar=t,i.updateStyle(this._currentTime/this._duration)}destroy(e){let t=this._video;e.off(B.RESIZE,this._onResize),t&&(t.source.removeEventListener(I.VIDEO_TIME_UPDATE,this._onTimeUpdate),t.source.removeEventListener(I.VIDEO_DURATION_CHANGE,this._onDurationChange),t.source.removeEventListener(K,this._onTimeUpdate)),this._rangeControl.destroy(),this._video=null,this._playPromise=null}},Tn=class extends Q{constructor({position:e=$.MAIN_LEFT,order:t=9999}={}){super({position:e,order:t}),this._onClick=()=>{let e=this._video;e&&(this._paused?e.source.play():e.source.pause())},this._onPlay=()=>{if(!this._controlBar)return;let e=this.element,t=this._controlBar.className;e.classList.add(t.PAUSE_BUTTON),e.classList.remove(t.PLAY_BUTTON),e.title=`Pause Video`,this._paused=!1},this._onPause=()=>{if(!this._controlBar)return;let e=this.element,t=this._controlBar.className;e.classList.add(t.PLAY_BUTTON),e.classList.remove(t.PAUSE_BUTTON),e.title=`Play Video`,this._paused=!0},this.element=document.createElement(ut),this._video=null,this._paused=!0,this._controlBar=null}init(e,t){let n=this.element,r=e.mesh?.getTexture(),i=t.className,a=i.UNAVAILABLE;if(!r||!r.isVideo()){n.classList.add(a);return}n.classList.add(i.CONTROLS_BUTTON),n.classList.remove(a);let o=r.isPaused();this._video=r,this._paused=o,this._controlBar=t,o?this._onPause():this._onPlay(),n.addEventListener(I.CLICK,this._onClick),r.source.addEventListener(I.VIDEO_PLAY,this._onPlay),r.source.addEventListener(I.VIDEO_PAUSE,this._onPause)}destroy(){let e=this._video,t=this.element;e&&(t.className=``,t.removeEventListener(I.CLICK,this._onClick),e.source.removeEventListener(I.VIDEO_PLAY,this._onPlay),e.source.removeEventListener(I.VIDEO_PAUSE,this._onPause),this._video=null,this._paused=!0,this._controlBar=null)}},En=class extends Q{get element(){return this._rootEl}constructor({position:e=$.MAIN_RIGHT,order:t=9999}={}){super({position:e,order:t}),this._onResize=()=>{this._rangeControl.resize(),this._updateDisplay()},this._onClick=()=>{let e=this._video;!e||this._rootEl.disabled||(e.source.muted=!e.source.muted)},this._onVolumeChange=()=>{let e=this._buttonEl,t=this._video,n=this._controlBar;if(!t||!n)return;let r=n.className;t.source.muted||t.source.volume===0?(e.classList.add(r.MUTED_BUTTON),e.classList.remove(r.UNMUTED_BUTTON)):(e.classList.add(r.UNMUTED_BUTTON),e.classList.remove(r.MUTED_BUTTON)),this._updateDisplay()},this._onHold=e=>{let t=this._video,n=this._controlBar;if(!t||!n)return;let r=n.className;t.source.volume=e,this._rootEl.classList.add(r.FIXED),n.containerEl.classList.add(r.FIXED),this._updateDisplay()},this._onChange=e=>{let t=this._video;t&&(t.source.volume=e,e>0?t.source.muted=!1:t.source.muted=!0,this._updateDisplay())},this._onRelease=()=>{let e=this._controlBar;if(!e)return;let t=e.className;this._rootEl.classList.remove(t.FIXED),e.containerEl.classList.remove(t.FIXED)},this._updateDisplay=()=>{let e=this._video,t=this._rootEl;if(!e)return;if(!e.hasAudio()){t.disabled=!0;return}t.disabled=!1;let n=e.source.muted?0:e.source.volume;this._rangeControl.updateStyle(n)},this._controlBar=null,this._rangeControl=new Cn,this._createElements(),this._video=null}init(e,t){let n=e.mesh?.getTexture(),r=this._rootEl,i=this._buttonEl,a=this._rangeControl,o=t.className,s=o.UNAVAILABLE;if(!n||!n.isVideo()){r.classList.add(s);return}r.classList.remove(s),r.classList.add(o.CONTROLS_BUTTON),r.classList.add(o.VOLUME_ROOT),i.classList.add(o.CONTROLS_BUTTON),n.source.muted?i.classList.add(o.MUTED_BUTTON):i.classList.add(o.UNMUTED_BUTTON),e.on(B.RESIZE,this._onResize),r.addEventListener(I.TRANSITION_END,this._onResize),i.addEventListener(I.CLICK,this._onClick),n.source.addEventListener(I.VIDEO_VOLUME_CHANGE,this._onVolumeChange),n.source.addEventListener(I.VIDEO_LOADED_DATA,this._updateDisplay),n.source.addEventListener(I.VIDEO_CAN_PLAYTHROUGH,this._updateDisplay),a.init(o),a.on(V.INPUT_START,this._onHold),a.on(V.CHANGE,this._onChange),a.on(V.INPUT_END,this._onRelease),this._controlBar=t,this._video=n,this._updateDisplay()}destroy(e){let t=this._video,n=this._buttonEl,r=this._rootEl;r.className=``,n.className=``,e.off(B.RESIZE,this._onResize),r.removeEventListener(I.TRANSITION_END,this._onResize),n.removeEventListener(I.CLICK,this._onClick),t&&(t.source.removeEventListener(I.VIDEO_VOLUME_CHANGE,this._onVolumeChange),t.source.removeEventListener(I.VIDEO_LOADED_DATA,this._updateDisplay),t.source.removeEventListener(I.VIDEO_CAN_PLAYTHROUGH,this._updateDisplay)),this._controlBar=null,this._rangeControl.destroy(),this._video=null}_createElements(){let e=document.createElement(ut),t=document.createElement(L);e.appendChild(this._rangeControl.rootEl),e.appendChild(t),e.title=`Toggle Mute`,this._rootEl=e,this._buttonEl=t}},Dn=class extends Q{constructor({position:e=$.MAIN_RIGHT,order:t=9999}={}){super({position:e,order:t}),this._onClick=()=>{let e=this._targetEl;e&&(Bt()?this._exitFullscreen():this._requestFullscreen(e))},this._onFullscreenChange=()=>{let e=this.element,t=this._controlBar;if(!t)return;let n=t.className;Bt()?(e.classList.add(n.FULLSCREEN_EXIT_BUTTON),e.classList.remove(n.FULLSCREEN_BUTTON)):(e.classList.add(n.FULLSCREEN_BUTTON),e.classList.remove(n.FULLSCREEN_EXIT_BUTTON))},this.element=document.createElement(ut),this.element.title=`Toggle Fullscreen`,this._controlBar=null,this._targetEl=null}init(e,t){let n=this.element,r=t.className;if(!this._fullscreenAvailable()){n.classList.add(r.UNAVAILABLE);return}n.classList.add(r.CONTROLS_BUTTON),n.classList.remove(r.UNAVAILABLE),n.addEventListener(I.CLICK,this._onClick),this._addFullscreenHandlers(),Bt()?n.classList.add(r.FULLSCREEN_EXIT_BUTTON):n.classList.add(r.FULLSCREEN_BUTTON),this._controlBar=t,this._targetEl=e.rootEl}destroy(){let e=this.element;e.className=``,e.removeEventListener(I.CLICK,this._onClick),this._removeFullscreenHandlers(),this._controlBar=null,this._targetEl=null}_fullscreenAvailable(){return _t.some(e=>!!document[e])}_requestFullscreen(e){for(let t of _t){let n=e[t];if(n){n.call(e);return}}}_exitFullscreen(){for(let e of yt){let t=document[e];if(t){t.call(document);return}}}_addFullscreenHandlers(){bt.forEach(e=>{document.addEventListener(e,this._onFullscreenChange)})}_removeFullscreenHandlers(){bt.forEach(e=>{document.removeEventListener(e,this._onFullscreenChange)})}},On=class extends Q{constructor({position:e=$.MAIN_LEFT,order:t=9999}={}){super({position:e,order:t}),this._onTimeUpdate=()=>{let e=this._video;e&&(this._currentTime=e.source.currentTime,this._updateDisplay())},this._onDurationChange=()=>{let e=this._video;e&&(this._duration=e.source.duration,this._updateDisplay())},this._onCustomTimeChange=e=>{this._currentTime=e.detail.time,this._updateDisplay()},this.element=document.createElement(L),this._video=null,this._currentTime=0,this._duration=0}init(e,t){let n=e.mesh?.getTexture(),r=this.element,i=t.className;if(!n||!n.isVideo()){r.classList.add(i.UNAVAILABLE);return}r.classList.add(i.VIDEO_TIME_DISPLAY),r.classList.remove(i.UNAVAILABLE),n.source.addEventListener(I.VIDEO_TIME_UPDATE,this._onTimeUpdate),n.source.addEventListener(I.VIDEO_DURATION_CHANGE,this._onDurationChange),n.source.addEventListener(K,this._onCustomTimeChange),this._video=n,this._currentTime=n.source.currentTime,this._duration=n.source.duration,this._updateDisplay()}destroy(){let e=this._video;e&&(this.element.className=``,e.source.removeEventListener(I.VIDEO_TIME_UPDATE,this._onTimeUpdate),e.source.removeEventListener(I.VIDEO_DURATION_CHANGE,this._onDurationChange),e.source.removeEventListener(K,this._onCustomTimeChange),this._video=null)}_updateDisplay(){let e=this._currentTime,t=Math.floor(e/60),n=Math.floor(e-t*60),r=n<10?`0${n}`:n,i=this._duration,a=Math.floor(i/60),o=Math.floor(i-a*60),s=o<10?`0${o}`:o;this.element.innerText=`${t}:${r} / ${a}:${s}`}},kn=class extends Q{constructor({resetCamera:e=!0,position:t=$.TOP_RIGHT,order:n=9999}={}){super({position:t,order:n}),this._onClick=()=>{let e=this._viewer,t=this.resetCamera;if(!e||!t)return;let{yaw:n=e.initialYaw,pitch:r=e.initialPitch,zoom:i=e.initialZoom,duration:a=500}=X(t);e.camera.animateTo({yaw:n,pitch:r,zoom:i,duration:a})},this._updatePie=({target:e})=>{let t=this._piePathEl,n=this._rangeCircleEl,r=e.camera,i=r.getHorizontalFov(),a=r.getYawRange(r.zoom),o=i*.5,s=24*Math.PI,c=s*i/360,l=s*(r.yaw+o+90)/360;if(t.setAttribute(`stroke-dasharray`,`${c} ${s-c}`),t.setAttribute(`stroke-dashoffset`,`${l}`),isFinite(a.min)&&isFinite(a.max)){let e=45*Math.PI,t=(Y(a.min,-180,180)-o)/360,r=(Y(a.max,-180,180)+o)/360,i=e*Math.abs(r-t),s=-e*(t-.25);n.setAttribute(`stroke-dasharray`,`${i} ${e-i}`),n.setAttribute(`stroke-dashoffset`,`${s}`)}else n.setAttribute(`stroke-dasharray`,``),n.setAttribute(`stroke-dashoffset`,``)},this.element=document.createElement(L),this.element.title=`Reset view`,this.resetCamera=e,this._createPieElements(),this._viewer=null}init(e,t){let n=this.element;e.initialized?this._updatePie({target:e}):e.once(B.READY,this._updatePie);let r=t.className.PIEVIEW_ROOT;n.classList.add(r),this.resetCamera&&n.addEventListener(I.CLICK,this._onClick),e.on(B.VIEW_CHANGE,this._updatePie),this._viewer=e}destroy(e){let t=this.element;t.removeEventListener(I.CLICK,this._onClick),t.className=``,e.off(B.READY,this._updatePie),e.off(B.VIEW_CHANGE,this._updatePie),this._viewer=null}_createPieElements(){let e=this.element,t=document.createElementNS(Ot,`svg`);t.setAttribute(`viewBox`,`0 0 48 48`),t.setAttribute(`width`,`100%`),t.setAttribute(`height`,`100%`);let n=document.createElementNS(Ot,`circle`);n.setAttribute(`stroke`,`currentColor`),n.setAttribute(`fill`,`transparent`),n.setAttribute(`cx`,`24`),n.setAttribute(`cy`,`24`),n.setAttribute(`r`,`12`),n.setAttribute(`stroke-width`,`24`),t.appendChild(n);let r=document.createElementNS(Ot,`circle`);r.setAttribute(`stroke`,`currentColor`),r.setAttribute(`fill`,`transparent`),r.setAttribute(`cx`,`24`),r.setAttribute(`cy`,`24`),r.setAttribute(`r`,`22.5`),r.setAttribute(`stroke-width`,`3`),t.appendChild(r),e.appendChild(t),this._piePathEl=n,this._rangeCircleEl=r}},An=class extends Q{constructor({position:e=$.MAIN_RIGHT,order:t=9999}={}){super({position:e,order:t}),this._onClick=()=>{let e=this._viewer;e&&e.vr.enter()},this.element=document.createElement(ut),this.element.title=`Enter VR`,this._viewer=null}init(e,t){let n=this.element,r=t.className;n.classList.add(r.UNAVAILABLE),n.classList.add(r.VR_BUTTON),n.classList.add(r.CONTROLS_BUTTON),e.vr.isAvailable().then(e=>{e&&n.classList.remove(r.UNAVAILABLE)}),n.addEventListener(I.CLICK,this._onClick),this._viewer=e}destroy(){let e=this.element;e.className=``,e.removeEventListener(I.CLICK,this._onClick),this._viewer=null}},jn=class extends Q{constructor({position:e=$.MAIN_RIGHT,order:t=9999}={}){super({position:e,order:t}),this._onClick=()=>{let e=this._viewer,t=this._controlBar;if(!e||!t)return;let n=e.control.gyro;n.enabled?n.disable():nn.requestSensorPermission().then(e=>{e?n.enable():this.element.classList.add(t.className.UNAVAILABLE)})},this._updateStyle=()=>{let e=this.element,t=this._viewer,n=this._controlBar;if(!t||!n)return;let r=t.control.gyro,i=n.className;r.enabled?(e.classList.add(i.GYRO_ENABLED),e.classList.remove(i.GYRO_DISABLED)):(e.classList.add(i.GYRO_DISABLED),e.classList.remove(i.GYRO_ENABLED))},this.element=document.createElement(L),this.element.title=`Toggle gyroscope control`}init(e,t){let n=this.element,r=t.className;n.addEventListener(I.CLICK,this._onClick),n.classList.add(r.CONTROLS_BUTTON),n.classList.add(r.UNAVAILABLE);let i=()=>{n.classList.remove(r.UNAVAILABLE),e.control.gyro.on(V.ENABLE,this._updateStyle),e.control.gyro.on(V.DISABLE,this._updateStyle)};Vt()?i():nn.isAvailable().then(e=>{e&&i()}),this._controlBar=t,this._viewer=e,this._updateStyle()}destroy(e){let t=this.element;e.control.gyro.off(V.ENABLE,this._updateStyle),e.control.gyro.off(V.DISABLE,this._updateStyle),t.removeEventListener(I.CLICK,this._onClick),t.className=``,this._controlBar=null,this._viewer=null}},Mn=class{get enabled(){return!!this._targetEl}get hidden(){return this._controlBar.containerEl.classList.contains(this._hiddenClass)}get _hiddenClass(){return this._controlBar.className.HIDDEN}get _fixedClass(){return this._controlBar.className.FIXED}constructor(e,{initialDelay:t=3e3,delay:n=0,idleDelay:r=3e3}){this._onMouseEnter=()=>{this._isCursorInside=!0,this.show()},this._onMouseLeave=()=>{this._isCursorInside=!1,this._hideAfterDelay()},this._onMouseMove=()=>{this._isFullscreen&&this.showTemporaliy()},this._onHold=e=>{this._isGrabbing=!0,e.pointerType===`mouse`&&(this._isCursorInside=!0),window.addEventListener(I.MOUSE_UP,this._onRelease),this.show()},this._onRelease=()=>{this._isGrabbing=!1,window.removeEventListener(I.MOUSE_UP,this._onRelease),this._hideAfterDelay()},this._onVideoPlay=()=>{this._targetEl&&this._controlBar.containerEl.classList.remove(this._fixedClass)},this._onVideoPause=()=>{this._targetEl&&this._controlBar.containerEl.classList.add(this._fixedClass)},this._onFullscreenChange=()=>{this._isFullscreen=Bt(),this._isFullscreen&&this._hideAfterDelay()},this._controlBar=e,this._initialDelay=t,this._delay=n,this._idleDelay=r,this._timer=-1,this._isCursorInside=!1,this._isGrabbing=!1,this._isFullscreen=!1,this._video=null,this._targetEl=null}enable(e){this._targetEl&&this.disable(e);let t=this._initialDelay,n=e.rootEl;this._targetEl=e.rootEl,this._timer=window.setTimeout(()=>{this.hide()},t),n.addEventListener(I.MOUSE_DOWN,this._onHold),n.addEventListener(I.MOUSE_ENTER,this._onMouseEnter),n.addEventListener(I.MOUSE_MOVE,this._onMouseMove),n.addEventListener(I.MOUSE_LEAVE,this._onMouseLeave),this._addFullscreenHandlers();let r=e.mesh?.getTexture();!r||!r.isVideo()||(r.isPaused()&&this._controlBar.containerEl.classList.add(this._fixedClass),r.source.addEventListener(I.VIDEO_PLAY,this._onVideoPlay),r.source.addEventListener(I.VIDEO_PAUSE,this._onVideoPause),this._video=r)}disable(e){if(!this._targetEl)return;let t=this._controlBar,n=e.rootEl,r=this._video;n.removeEventListener(I.MOUSE_DOWN,this._onHold),window.removeEventListener(I.MOUSE_UP,this._onRelease),n.removeEventListener(I.MOUSE_ENTER,this._onMouseEnter),n.removeEventListener(I.MOUSE_MOVE,this._onMouseMove),n.removeEventListener(I.MOUSE_LEAVE,this._onMouseLeave),this._removeFullscreenHandlers(),window.clearTimeout(this._timer),t.containerEl.classList.remove(this._fixedClass),r&&(r.source.removeEventListener(I.VIDEO_PLAY,this._onVideoPlay),r.source.removeEventListener(I.VIDEO_PAUSE,this._onVideoPause)),this._isCursorInside=!1,this._isGrabbing=!1,this._video=null,this._targetEl=null}show(){this._clearHideTimer(),this._controlBar.containerEl.classList.remove(this._hiddenClass)}showTemporaliy(){this.show(),this._hideAfterDelay(this._idleDelay)}hide(){this._clearHideTimer(),this._controlBar.containerEl.classList.add(this._hiddenClass)}_clearHideTimer(){this._timer&&(window.clearTimeout(this._timer),this._timer=-1)}_hideAfterDelay(e=this._delay){this._isGrabbing||!this._isFullscreen&&this._isCursorInside||(this._clearHideTimer(),e<=0?this.hide():this._timer=window.setTimeout(()=>{this.hide()},e))}_addFullscreenHandlers(){bt.forEach(e=>{document.addEventListener(e,this._onFullscreenChange)})}_removeFullscreenHandlers(){bt.forEach(e=>{document.removeEventListener(e,this._onFullscreenChange)})}},Nn=class{constructor(){this._onKeyDown=e=>{let t=this._video;if(!t)return;e.preventDefault(),e.stopPropagation();let n=t.source,r=e.keyCode==null?ht[e.key]:pt[e.keyCode];switch(r){case`LEFT`:case`RIGHT`:return this._changeVideoTime(n,r===`RIGHT`);case`UP`:case`DOWN`:return this._changeVideoVolume(n,r===`UP`)}(e.keyCode===mt||e.key===gt)&&this._toggleVideo(t)}}enable(e,t){this._video=t,e.addEventListener(I.KEY_DOWN,this._onKeyDown,!0)}disable(e){this._video=null,e.removeEventListener(I.KEY_DOWN,this._onKeyDown,!0)}_changeVideoTime(e,t){e.currentTime+=t?5:-5,e.dispatchEvent(new CustomEvent(K,{detail:{time:e.currentTime}}))}_changeVideoVolume(e,t){let n=t?.1:-.1;e.muted?e.volume=J(n,0,1):e.volume=J(e.volume+n,0,1),e.volume>0?e.muted=!1:e.muted=!0}_toggleVideo(e){e.isPaused()?e.source.play():e.source.pause()}},Pn=class e{get rootEl(){return this._rootEl}get containerEl(){return this._containerEl}get backgroundEl(){return this._bgEl}get items(){return this._items}get customItems(){return this._customItems}constructor({autoHide:t,showBackground:n,clickToPlay:r=!0,keyboardControls:i=!0,progressBar:a=!0,playButton:o=!0,volumeButton:s=!0,fullscreenButton:c=!0,videoTime:l=!0,pieView:u=!0,vrButton:d=!0,gyroButton:f=!0,className:p={},customItems:m=[]}={}){this._onStaticClick=({target:e,isTouch:t})=>{let n=this._autoHider;if(t){if(!n.enabled)return;n.hidden?n.showTemporaliy():n.hide()}else{if(!this.clickToPlay)return;let t=e.mesh?.getTexture();if(!t||!t.isVideo())return;t.isPaused()?t.source.play():t.source.pause()}},this._onNewSrcLoad=({target:e})=>{let t=this._items;this._updateBackground(e),this._updateAutoHide(e),this._updateKeyboardHandler(e),Object.keys(t).forEach(n=>{t[n].forEach(t=>{t.destroy(e,this),t.init(e,this)})})},this.autoHide=t,this.showBackground=n,this.clickToPlay=r,this.keyboardControls=i,this.progressBar=a,this.playButton=o,this.volumeButton=s,this.fullscreenButton=c,this.videoTime=l,this.pieView=u,this.vrButton=d,this.gyroButton=f,this.className=Object.assign(Object.assign({},e.DEFAULT_CLASS),p),this._rootEl=q(p.CONTROLS_ROOT??e.DEFAULT_CLASS.CONTROLS_ROOT),this._createPositionWrappers(),this._items=Object.keys(e.POSITION).reduce((t,n)=>(t[e.POSITION[n]]=[],t),{}),this._customItems=m,this._autoHider=new Mn(this,X(t)),this._videoControl=new Nn,m.forEach(e=>{this._items[e.position].push(e)})}init(e){let t=e.rootEl,n=this._rootEl,r=this._createDefaultItems();this._updateBackground(e),this._updateAutoHide(e),this._updateKeyboardHandler(e),t.appendChild(n),this._addItem(e,r),this._addItem(e,this._customItems),e.on(B.PROJECTION_CHANGE,this._onNewSrcLoad),e.on(B.STATIC_CLICK,this._onStaticClick)}destroy(e){let t=e.rootEl,n=this._rootEl,r=this._items;n.parentElement===t&&t.removeChild(n),Object.keys(r).forEach(t=>{r[t].forEach(t=>{t.destroy(e,this)}),r[t]=[]}),this._clearItemElements(),this._autoHider.disable(e),this._videoControl.disable(t),e.off(B.PROJECTION_CHANGE,this._onNewSrcLoad),e.off(B.STATIC_CLICK,this._onStaticClick)}_addItem(e,t){for(let n of t){let t=this._items[n.position],r=this._wrapperEl[n.position],i=Rt(t,e=>e.order>n.order);if(i>=0){let e=t[i].element;t.splice(i,0,n),r.insertBefore(n.element,e)}else t.push(n),r.appendChild(n.element);n.init(e,this)}}_createPositionWrappers(){let t=Object.assign(Object.assign({},e.DEFAULT_CLASS),this.className),n=this._rootEl,r=q(t.CONTROLS_BG),i=q(t.CONTROLS_FLOAT_LEFT),a=q(t.CONTROLS_FLOAT_RIGHT);n.appendChild(i),n.appendChild(a);let o=q(t.CONTROLS_MAIN),s=q(t.CONTROLS_TOP),c=q(t.CONTROLS_BOTTOM),l=q(t.CONTROLS_MID),u=q(t.CONTROLS_LEFT),d=q(t.CONTROLS_RIGHT);l.appendChild(u),l.appendChild(d),o.appendChild(r),o.appendChild(s),o.appendChild(l),o.appendChild(c),n.appendChild(o),this._bgEl=r,this._containerEl=o,this._wrapperEl={[e.POSITION.MAIN_TOP]:s,[e.POSITION.MAIN_LEFT]:u,[e.POSITION.MAIN_RIGHT]:d,[e.POSITION.MAIN_BOTTOM]:c,[e.POSITION.TOP_LEFT]:i,[e.POSITION.TOP_RIGHT]:a}}_clearItemElements(){Object.keys(e.POSITION).map(t=>e.POSITION[t]).map(e=>this._wrapperEl[e]).forEach(e=>{for(;e.firstChild;)e.removeChild(e.firstChild)})}_updateAutoHide(e){let t=this.autoHide,n=this._autoHider;if(t!=null)t?n.enable(e):n.disable(e);else{let t=e.mesh?.getTexture();t&&t.isVideo()?n.enable(e):n.disable(e)}}_updateBackground(t){let n=this._bgEl,r=this.showBackground,i=this.className.HIDDEN??e.DEFAULT_CLASS.HIDDEN;if(r!=null)r?n.classList.remove(i):n.classList.add(i);else{let e=t.mesh?.getTexture();e&&e.isVideo()?n.classList.remove(i):n.classList.add(i)}}_updateKeyboardHandler(e){let t=e.rootEl,n=this._videoControl,r=e.mesh?.getTexture();this.keyboardControls&&r&&r.isVideo()?n.enable(t,r):n.disable(t)}_createDefaultItems(){let e=[];return this.progressBar&&e.push(new wn(X(this.progressBar))),this.playButton&&e.push(new Tn(X(this.playButton))),this.volumeButton&&e.push(new En(X(this.volumeButton))),this.gyroButton&&e.push(new jn(X(this.gyroButton))),this.vrButton&&e.push(new An(X(this.vrButton))),this.fullscreenButton&&e.push(new Dn(X(this.fullscreenButton))),this.videoTime&&e.push(new On(X(this.videoTime))),this.pieView&&e.push(new kn(X(this.pieView))),e}};Pn.DEFAULT_CLASS=Sn,Pn.POSITION=$;var Fn=class{constructor({src:e,video:t=!1}){this.src=e,this.video=t}updateCamera(e){e.resetRange()}updateControl(e){e.ignoreZoomScale=!1}},In=class{constructor(){this.needsUpdate=!0}destroy(e){}},Ln=class extends bn{constructor(e,t){super(),this.vao=e,this.program=t}destroy(e){e.releaseVAO(this.vao),e.releaseShaderResources(this.program)}getTexture(){return this.program.uniforms.uTexture.texture}},Rn=class{constructor(e,t,n,r){this.program=e.createProgram(t,n),this.uniforms=r,this.uniformLocations=e.getUniformLocations(this.program,r)}},zn=class{constructor(e,t){this.data=e,this.itemSize=t,this.count=e.length/t}},Bn=class{constructor(e,t,n){this.vertices=new zn(new Float32Array(e),3),this.indicies=new zn(new Uint16Array(t),1),this.uvs=new zn(new Float32Array(n),2)}},Vn=class extends In{constructor(e,t){super(),this.texture=t,this._webglTexture=e.createWebGLTexture(t)}destroy(e){this.texture.destroy(),e.deleteTexture(this._webglTexture)}update(e,t,n){let r=this.texture,i=r.isVideo();e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,r.flipY),e.uniform1i(t,0),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,this._webglTexture),!i&&n?e.texSubImage2D(e.TEXTURE_2D,0,0,0,e.RGBA,e.UNSIGNED_BYTE,r.source):e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,r.source),i||(this.needsUpdate=!1)}},Hn=`#define GLSLIFY 1
|
|
1
|
+
import{D as e,Pi as t,Tn as n,Zi as r,aa as i,da as a,g as o,na as s,ua as c,zi as l}from"./store-jmqpI8w9.js";import{n as u}from"./video_box-BpjZ-ZST.js";function d(e){var t=typeof Symbol==`function`&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&typeof e.length==`number`)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)}function f(e,t){var n=typeof Symbol==`function`&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,a=[],o;try{for(;(t===void 0||t-- >0)&&!(i=r.next()).done;)a.push(i.value)}catch(e){o={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a}function p(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(f(arguments[t]));return e}var m=function(e){return e===void 0},h=function(){function e(e,t){var n,r;if(this._canceled=!1,t)try{for(var i=d(Object.keys(t)),a=i.next();!a.done;a=i.next()){var o=a.value;this[o]=t[o]}}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}this.eventType=e}var t=e.prototype;return t.stop=function(){this._canceled=!0},t.isCanceled=function(){return this._canceled},e}(),g=function(){function e(){this._eventHandler={}}var t=e.prototype;return t.trigger=function(e){var t=[...arguments].slice(1),n=e instanceof h?e.eventType:e,r=p(this._eventHandler[n]||[]);return r.length<=0||(e instanceof h?(e.currentTarget=this,r.forEach(function(t){t(e)})):r.forEach(function(e){e.apply(void 0,p(t))})),this},t.once=function(e,t){var n=this;if(typeof e==`object`&&m(t)){var r=e;for(var i in r)this.once(i,r[i]);return this}else if(typeof e==`string`&&typeof t==`function`){var a=function(){var r=[...arguments];t.apply(void 0,p(r)),n.off(e,a)};this.on(e,a)}return this},t.hasOn=function(e){return!!this._eventHandler[e]},t.on=function(e,t){if(typeof e==`object`&&m(t)){var n=e;for(var r in n)this.on(r,n[r]);return this}else if(typeof e==`string`&&typeof t==`function`){var i=this._eventHandler[e];m(i)&&(this._eventHandler[e]=[],i=this._eventHandler[e]),i.push(t)}return this},t.off=function(e,t){if(m(e))return this._eventHandler={},this;if(m(t)){if(typeof e==`string`)return delete this._eventHandler[e],this;var n=e;for(var r in n)this.off(r,n[r]);return this}var i=this._eventHandler[e];if(i){for(var a=i.length,o=0;o<a;++o)if(i[o]===t){i.splice(o,1),a<=1&&delete this._eventHandler[e];break}}return this},e.VERSION=`3.0.5`,e}(),_=h,v=typeof Float32Array<`u`?Float32Array:Array;Math.PI/180,Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});function y(){var e=new v(9);return v!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}function b(){var e=new v(16);return v!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function x(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function S(e,t,n){var r=t[0],i=t[1],a=t[2],o=t[3],s=t[4],c=t[5],l=t[6],u=t[7],d=t[8],f=t[9],p=t[10],m=t[11],h=t[12],g=t[13],_=t[14],v=t[15],y=n[0],b=n[1],x=n[2],S=n[3];return e[0]=y*r+b*s+x*d+S*h,e[1]=y*i+b*c+x*f+S*g,e[2]=y*a+b*l+x*p+S*_,e[3]=y*o+b*u+x*m+S*v,y=n[4],b=n[5],x=n[6],S=n[7],e[4]=y*r+b*s+x*d+S*h,e[5]=y*i+b*c+x*f+S*g,e[6]=y*a+b*l+x*p+S*_,e[7]=y*o+b*u+x*m+S*v,y=n[8],b=n[9],x=n[10],S=n[11],e[8]=y*r+b*s+x*d+S*h,e[9]=y*i+b*c+x*f+S*g,e[10]=y*a+b*l+x*p+S*_,e[11]=y*o+b*u+x*m+S*v,y=n[12],b=n[13],x=n[14],S=n[15],e[12]=y*r+b*s+x*d+S*h,e[13]=y*i+b*c+x*f+S*g,e[14]=y*a+b*l+x*p+S*_,e[15]=y*o+b*u+x*m+S*v,e}function C(e,t,n,r){var i=t[0],a=t[1],o=t[2],s=t[3],c=i+i,l=a+a,u=o+o,d=i*c,f=i*l,p=i*u,m=a*l,h=a*u,g=o*u,_=s*c,v=s*l,y=s*u,b=r[0],x=r[1],S=r[2];return e[0]=(1-(m+g))*b,e[1]=(f+y)*b,e[2]=(p-v)*b,e[3]=0,e[4]=(f-y)*x,e[5]=(1-(d+g))*x,e[6]=(h+_)*x,e[7]=0,e[8]=(p+v)*S,e[9]=(h-_)*S,e[10]=(1-(d+m))*S,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function ee(e,t,n,r,i){var a=1/Math.tan(t/2),o;return e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,i!=null&&i!==1/0?(o=1/(r-i),e[10]=(i+r)*o,e[14]=2*i*r*o):(e[10]=-1,e[14]=-2*r),e}var te=ee;function ne(e,t,n,r){var i,a,o,s,c,l,u,d,f,p,m=t[0],h=t[1],g=t[2],_=r[0],v=r[1],y=r[2],b=n[0],S=n[1],C=n[2];return Math.abs(m-b)<1e-6&&Math.abs(h-S)<1e-6&&Math.abs(g-C)<1e-6?x(e):(u=m-b,d=h-S,f=g-C,p=1/Math.hypot(u,d,f),u*=p,d*=p,f*=p,i=v*f-y*d,a=y*u-_*f,o=_*d-v*u,p=Math.hypot(i,a,o),p?(p=1/p,i*=p,a*=p,o*=p):(i=0,a=0,o=0),s=d*o-f*a,c=f*i-u*o,l=u*a-d*i,p=Math.hypot(s,c,l),p?(p=1/p,s*=p,c*=p,l*=p):(s=0,c=0,l=0),e[0]=i,e[1]=s,e[2]=u,e[3]=0,e[4]=a,e[5]=c,e[6]=d,e[7]=0,e[8]=o,e[9]=l,e[10]=f,e[11]=0,e[12]=-(i*m+a*h+o*g),e[13]=-(s*m+c*h+l*g),e[14]=-(u*m+d*h+f*g),e[15]=1,e)}function w(){var e=new v(3);return v!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function re(e){var t=e[0],n=e[1],r=e[2];return Math.hypot(t,n,r)}function T(e,t,n){var r=new v(3);return r[0]=e,r[1]=t,r[2]=n,r}function ie(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function ae(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function oe(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function se(e,t){var n=t[0],r=t[1],i=t[2],a=n*n+r*r+i*i;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function ce(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function E(e,t,n){var r=t[0],i=t[1],a=t[2],o=n[0],s=n[1],c=n[2];return e[0]=i*c-a*s,e[1]=a*o-r*c,e[2]=r*s-i*o,e}function le(e,t,n){var r=t[0],i=t[1],a=t[2],o=n[3]*r+n[7]*i+n[11]*a+n[15];return o=o||1,e[0]=(n[0]*r+n[4]*i+n[8]*a+n[12])/o,e[1]=(n[1]*r+n[5]*i+n[9]*a+n[13])/o,e[2]=(n[2]*r+n[6]*i+n[10]*a+n[14])/o,e}function D(e,t,n){var r=n[0],i=n[1],a=n[2],o=n[3],s=t[0],c=t[1],l=t[2],u=i*l-a*c,d=a*s-r*l,f=r*c-i*s,p=i*f-a*d,m=a*u-r*f,h=r*d-i*u,g=o*2;return u*=g,d*=g,f*=g,p*=2,m*=2,h*=2,e[0]=s+u+p,e[1]=c+d+m,e[2]=l+f+h,e}var ue=re;(function(){var e=w();return function(t,n,r,i,a,o){var s,c;for(n||(n=3),r||(r=0),c=i?Math.min(i*n+r,t.length):t.length,s=r;s<c;s+=n)e[0]=t[s],e[1]=t[s+1],e[2]=t[s+2],a(e,e,o),t[s]=e[0],t[s+1]=e[1],t[s+2]=e[2];return t}})();function de(){var e=new v(4);return v!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e}function fe(e){var t=new v(4);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function pe(e,t,n,r){var i=new v(4);return i[0]=e,i[1]=t,i[2]=n,i[3]=r,i}function me(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}function he(e,t,n,r,i){return e[0]=t,e[1]=n,e[2]=r,e[3]=i,e}function ge(e,t){var n=t[0],r=t[1],i=t[2],a=t[3],o=n*n+r*r+i*i+a*a;return o>0&&(o=1/Math.sqrt(o)),e[0]=n*o,e[1]=r*o,e[2]=i*o,e[3]=a*o,e}function _e(e,t){var n=e[0],r=e[1],i=e[2],a=e[3],o=t[0],s=t[1],c=t[2],l=t[3];return Math.abs(n-o)<=1e-6*Math.max(1,Math.abs(n),Math.abs(o))&&Math.abs(r-s)<=1e-6*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(i-c)<=1e-6*Math.max(1,Math.abs(i),Math.abs(c))&&Math.abs(a-l)<=1e-6*Math.max(1,Math.abs(a),Math.abs(l))}(function(){var e=de();return function(t,n,r,i,a,o){var s,c;for(n||(n=4),r||(r=0),c=i?Math.min(i*n+r,t.length):t.length,s=r;s<c;s+=n)e[0]=t[s],e[1]=t[s+1],e[2]=t[s+2],e[3]=t[s+3],a(e,e,o),t[s]=e[0],t[s+1]=e[1],t[s+2]=e[2],t[s+3]=e[3];return t}})();function O(){var e=new v(4);return v!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}function ve(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e}function ye(e,t,n){n*=.5;var r=Math.sin(n);return e[0]=r*t[0],e[1]=r*t[1],e[2]=r*t[2],e[3]=Math.cos(n),e}function be(e,t,n){var r=t[0],i=t[1],a=t[2],o=t[3],s=n[0],c=n[1],l=n[2],u=n[3];return e[0]=r*u+o*s+i*l-a*c,e[1]=i*u+o*c+a*s-r*l,e[2]=a*u+o*l+r*c-i*s,e[3]=o*u-r*s-i*c-a*l,e}function xe(e,t,n){n*=.5;var r=t[0],i=t[1],a=t[2],o=t[3],s=Math.sin(n),c=Math.cos(n);return e[0]=r*c+o*s,e[1]=i*c+a*s,e[2]=a*c-i*s,e[3]=o*c-r*s,e}function Se(e,t,n){n*=.5;var r=t[0],i=t[1],a=t[2],o=t[3],s=Math.sin(n),c=Math.cos(n);return e[0]=r*c-a*s,e[1]=i*c+o*s,e[2]=a*c+r*s,e[3]=o*c-i*s,e}function Ce(e,t,n){n*=.5;var r=t[0],i=t[1],a=t[2],o=t[3],s=Math.sin(n),c=Math.cos(n);return e[0]=r*c+i*s,e[1]=i*c-r*s,e[2]=a*c+o*s,e[3]=o*c-a*s,e}function we(e,t,n,r){var i=t[0],a=t[1],o=t[2],s=t[3],c=n[0],l=n[1],u=n[2],d=n[3],f,p=i*c+a*l+o*u+s*d,m,h,g;return p<0&&(p=-p,c=-c,l=-l,u=-u,d=-d),1-p>1e-6?(f=Math.acos(p),m=Math.sin(f),h=Math.sin((1-r)*f)/m,g=Math.sin(r*f)/m):(h=1-r,g=r),e[0]=h*i+g*c,e[1]=h*a+g*l,e[2]=h*o+g*u,e[3]=h*s+g*d,e}function Te(e,t){var n=t[0]+t[4]+t[8],r;if(n>0)r=Math.sqrt(n+1),e[3]=.5*r,r=.5/r,e[0]=(t[5]-t[7])*r,e[1]=(t[6]-t[2])*r,e[2]=(t[1]-t[3])*r;else{var i=0;t[4]>t[0]&&(i=1),t[8]>t[i*3+i]&&(i=2);var a=(i+1)%3,o=(i+2)%3;r=Math.sqrt(t[i*3+i]-t[a*3+a]-t[o*3+o]+1),e[i]=.5*r,r=.5/r,e[3]=(t[a*3+o]-t[o*3+a])*r,e[a]=(t[a*3+i]+t[i*3+a])*r,e[o]=(t[o*3+i]+t[i*3+o])*r}return e}var Ee=fe,De=pe,Oe=me,ke=he,k=ge,Ae=_e;(function(){var e=w(),t=T(1,0,0),n=T(0,1,0);return function(r,i,a){var o=ce(i,a);return o<-.999999?(E(e,t,i),ue(e)<1e-6&&E(e,n,i),se(e,e),ye(r,e,Math.PI),r):o>.999999?(r[0]=0,r[1]=0,r[2]=0,r[3]=1,r):(E(e,i,a),r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=1+o,k(r,r))}})(),function(){var e=O(),t=O();return function(n,r,i,a,o,s){return we(e,r,o,s),we(t,i,a,s),we(n,e,t,2*s*(1-s)),n}}(),function(){var e=y();return function(t,n,r,i){return e[0]=r[0],e[3]=r[1],e[6]=r[2],e[1]=i[0],e[4]=i[1],e[7]=i[2],e[2]=-n[0],e[5]=-n[1],e[8]=-n[2],k(t,Te(t,e))}}();function je(){var e=new v(2);return v!=Float32Array&&(e[0]=0,e[1]=0),e}function Me(e,t){var n=new v(2);return n[0]=e,n[1]=t,n}(function(){var e=je();return function(t,n,r,i,a,o){var s,c;for(n||(n=2),r||(r=0),c=i?Math.min(i*n+r,t.length):t.length,s=r;s<c;s+=n)e[0]=t[s],e[1]=t[s+1],a(e,e,o),t[s]=e[0],t[s+1]=e[1];return t}})();var Ne=function(e,t){return Ne=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Ne(e,t)};function A(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Class extends value `+String(t)+` is not a constructor or null`);Ne(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var j=function(){return j=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},j.apply(this,arguments)};function Pe(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;for(var r=Array(e),i=0,t=0;t<n;t++)for(var a=arguments[t],o=0,s=a.length;o<s;o++,i++)r[i]=a[o];return r}var Fe=typeof window<`u`,Ie=Fe?window.navigator.userAgent:``,Le=Fe?`getComputedStyle`in window:!1,Re=/MSIE|Trident|Windows Phone|Edge/.test(Ie),ze=Fe?`addEventListener`in document:!1,Be=`width`,Ve=`height`;function He(e,t){return e.getAttribute(t)||``}function Ue(e){return[].slice.call(e)}function We(e,t){return t===void 0&&(t=`data-`),!!e.getAttribute(t+`width`)}function Ge(e,t){return t===void 0&&(t=`data-`),`loading`in e&&e.getAttribute(`loading`)===`lazy`||!!e.getAttribute(t+`lazy`)}function Ke(e,t){return t===void 0&&(t=`data-`),!!e.getAttribute(t+`skip`)}function qe(e,t,n){ze?e.addEventListener(t,n,!1):e.attachEvent?e.attachEvent(`on`+t,n):e[`on`+t]=n}function Je(e,t,n){e.removeEventListener?e.removeEventListener(t,n,!1):e.detachEvent?e.detachEvent(`on`+t,n):e[`on`+t]=null}function Ye(e){return Qe(e,`Width`)}function Xe(e){return Qe(e,`Height`)}function Ze(e){return(Le?window.getComputedStyle(e):e.currentStyle)||{}}function Qe(e,t){var n=e[`client`+t]||e[`offset`+t];return parseFloat(n||Ze(e)[t.toLowerCase()])||0}function $e(e,t,n){var r=Ue(e.querySelectorAll(Pe([`[`+n+`skip] [`+n+`width]`],t.map(function(e){return[`[`+n+`skip] `+e,e+`[`+n+`skip]`,`[`+n+`width] `+e].join(`, `)})).join(`, `)));return Ue(e.querySelectorAll(`[`+n+`width], `+t.join(`, `))).filter(function(e){return r.indexOf(e)===-1})}var M=[];function et(e,t){!M.length&&qe(window,`resize`,rt),e.__PREFIX__=t,M.push(e),nt(e)}function tt(e,t){var n=M.indexOf(e);if(!(n<0)){var r=He(e,t+`fixed`);delete e.__PREFIX__,e.style[r===Ve?Be:Ve]=``,M.splice(n,1),!M.length&&Je(window,`resize`,rt)}}function nt(e,t){t===void 0&&(t=`data-`);var n=e.__PREFIX__||t,r=parseInt(He(e,``+n+Be),10)||0,i=parseInt(He(e,``+n+Ve),10)||0;if(He(e,n+`fixed`)===Ve){var a=Xe(e)||i;e.style[Be]=r/i*a+`px`}else{var a=Ye(e)||r;e.style[Ve]=i/r*a+`px`}}function rt(){M.forEach(function(e){nt(e)})}var it=function(e){A(t,e);function t(t,n){n===void 0&&(n={});var r=e.call(this)||this;r.isReady=!1,r.isPreReady=!1,r.hasDataSize=!1,r.hasLoading=!1,r.isSkip=!1,r.onCheck=function(e){r.clear(),e&&e.type===`error`&&r.onError(r.element),!(r.hasLoading&&r.checkElement())&&r.onReady()},r.options=j({prefix:`data-`},n),r.element=t;var i=r.options.prefix;return r.hasDataSize=We(t,i),r.isSkip=Ke(t,i),r.hasLoading=Ge(t,i),r}var n=t.prototype;return n.check=function(){return this.isSkip||!this.checkElement()?(this.onAlreadyReady(),!1):(this.hasDataSize&&et(this.element,this.options.prefix),(this.hasDataSize||this.hasLoading)&&this.onAlreadyPreReady(),!0)},n.addEvents=function(){var e=this,t=this.element;this.constructor.EVENTS.forEach(function(n){qe(t,n,e.onCheck)})},n.clear=function(){var e=this,t=this.element;this.constructor.EVENTS.forEach(function(n){Je(t,n,e.onCheck)}),this.removeAutoSizer()},n.destroy=function(){this.clear(),this.off()},n.removeAutoSizer=function(){if(this.hasDataSize){var e=this.options.prefix;tt(this.element,e)}},n.onError=function(e){this.trigger(`error`,{element:this.element,target:e})},n.onPreReady=function(){this.isPreReady||(this.isPreReady=!0,this.trigger(`preReady`,{element:this.element,hasLoading:this.hasLoading,isSkip:this.isSkip}))},n.onReady=function(){var e=this.isPreReady;this.isPreReady=!0,!this.isReady&&(this.removeAutoSizer(),this.isReady=!0,this.trigger(`ready`,{element:this.element,withPreReady:!e,hasLoading:this.hasLoading,isSkip:this.isSkip}))},n.onAlreadyError=function(e){var t=this;setTimeout(function(){t.onError(e)})},n.onAlreadyPreReady=function(){var e=this;setTimeout(function(){e.onPreReady()})},n.onAlreadyReady=function(){var e=this;setTimeout(function(){e.onReady()})},t.EVENTS=[],t}(g),at=function(e){A(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}var n=t.prototype;return n.setHasLoading=function(e){this.hasLoading=e},n.check=function(){return this.isSkip?(this.onAlreadyReady(),!1):(this.hasDataSize?(et(this.element,this.options.prefix),this.onAlreadyPreReady()):this.trigger(`requestChildren`),!0)},n.checkElement=function(){return!0},n.destroy=function(){this.clear(),this.trigger(`requestDestroy`),this.off()},n.onAlreadyPreReady=function(){e.prototype.onAlreadyPreReady.call(this),this.trigger(`reqeustReadyChildren`)},t.EVENTS=[],t}(it),ot=function(e){A(t,e);function t(t){t===void 0&&(t={});var n=e.call(this)||this;return n.readyCount=0,n.preReadyCount=0,n.totalCount=0,n.totalErrorCount=0,n.isPreReadyOver=!0,n.elementInfos=[],n.options=j({loaders:{},prefix:`data-`},t),n}var n=t.prototype;return n.check=function(e){var t=this,n=this.options.prefix;this.clear(),this.elementInfos=Ue(e).map(function(e,r){var i=t.getLoader(e,{prefix:n});return i.check(),i.on(`error`,function(e){t.onError(r,e.target)}).on(`preReady`,function(e){var n=t.elementInfos[r];n.hasLoading=e.hasLoading,n.isSkip=e.isSkip;var i=t.checkPreReady(r);t.onPreReadyElement(r),i&&t.onPreReady()}).on(`ready`,function(e){var n=e.withPreReady,i=e.hasLoading,a=e.isSkip,o=t.elementInfos[r];o.hasLoading=i,o.isSkip=a;var s=n&&t.checkPreReady(r),c=t.checkReady(r);n&&t.onPreReadyElement(r),t.onReadyElement(r),s&&t.onPreReady(),c&&t.onReady()}),{loader:i,element:e,hasLoading:!1,hasError:!1,isPreReady:!1,isReady:!1,isSkip:!1}});var r=this.elementInfos.length;return this.totalCount=r,r||setTimeout(function(){t.onPreReady(),t.onReady()}),this},n.getTotalCount=function(){return this.totalCount},n.isPreReady=function(){return this.elementInfos.every(function(e){return e.isPreReady})},n.isReady=function(){return this.elementInfos.every(function(e){return e.isReady})},n.hasError=function(){return this.totalErrorCount>0},n.clear=function(){this.isPreReadyOver=!1,this.totalCount=0,this.preReadyCount=0,this.readyCount=0,this.totalErrorCount=0,this.elementInfos.forEach(function(e){e.loader&&e.loader.destroy()}),this.elementInfos=[]},n.destroy=function(){this.clear(),this.off()},n.getLoader=function(e,t){var n=this,r=e.tagName.toLowerCase(),i=this.options.loaders,a=t.prefix,o=Object.keys(i);if(i[r])return new i[r](e,t);var s=new at(e,t),c=Ue(e.querySelectorAll(o.join(`, `)));s.setHasLoading(c.some(function(e){return Ge(e,a)}));var l=this.clone().on(`error`,function(e){s.onError(e.target)}).on(`ready`,function(){s.onReady()});return s.on(`requestChildren`,function(){var t=$e(e,o,n.options.prefix);l.check(t).on(`preReady`,function(e){e.isReady||s.onPreReady()})}).on(`reqeustReadyChildren`,function(){l.check(c)}).on(`requestDestroy`,function(){l.destroy()}),s},n.clone=function(){return new t(j({},this.options))},n.checkPreReady=function(e){return this.elementInfos[e].isPreReady=!0,++this.preReadyCount,!(this.preReadyCount<this.totalCount)},n.checkReady=function(e){return this.elementInfos[e].isReady=!0,++this.readyCount,!(this.readyCount<this.totalCount)},n.onError=function(e,t){var n=this.elementInfos[e];n.hasError=!0,this.trigger(new _(`error`,{element:n.element,index:e,target:t,errorCount:this.getErrorCount(),totalErrorCount:++this.totalErrorCount}))},n.onPreReadyElement=function(e){var t=this.elementInfos[e];this.trigger(new _(`preReadyElement`,{element:t.element,index:e,preReadyCount:this.preReadyCount,readyCount:this.readyCount,totalCount:this.totalCount,isPreReady:this.isPreReady(),isReady:this.isReady(),hasLoading:t.hasLoading,isSkip:t.isSkip}))},n.onPreReady=function(){this.isPreReadyOver=!0,this.trigger(new _(`preReady`,{readyCount:this.readyCount,totalCount:this.totalCount,isReady:this.isReady(),hasLoading:this.hasLoading()}))},n.onReadyElement=function(e){var t=this.elementInfos[e];this.trigger(new _(`readyElement`,{index:e,element:t.element,hasError:t.hasError,errorCount:this.getErrorCount(),totalErrorCount:this.totalErrorCount,preReadyCount:this.preReadyCount,readyCount:this.readyCount,totalCount:this.totalCount,isPreReady:this.isPreReady(),isReady:this.isReady(),hasLoading:t.hasLoading,isPreReadyOver:this.isPreReadyOver,isSkip:t.isSkip}))},n.onReady=function(){this.trigger(new _(`ready`,{errorCount:this.getErrorCount(),totalErrorCount:this.totalErrorCount,totalCount:this.totalCount}))},n.getErrorCount=function(){return this.elementInfos.filter(function(e){return e.hasError}).length},n.hasLoading=function(){return this.elementInfos.some(function(e){return e.hasLoading})},t}(g),st=function(e){A(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}var n=t.prototype;return n.checkElement=function(){var e=this.element,t=e.getAttribute(`src`);if(e.complete){if(t)return e.naturalWidth||this.onAlreadyError(e),!1;this.onAlreadyPreReady()}return this.addEvents(),Re&&e.setAttribute(`src`,t),!0},t.EVENTS=[`load`,`error`],t}(it),ct=function(e){A(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}var n=t.prototype;return n.checkElement=function(){var e=this.element;return e.readyState>=1?!1:e.error?(this.onAlreadyError(e),!1):(this.addEvents(),!0)},t.EVENTS=[`loadedmetadata`,`error`],t}(it),lt=function(e){A(t,e);function t(t){return t===void 0&&(t={}),e.call(this,j({loaders:{img:st,video:ct}},t))||this}return t}(ot);function N(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||(n=Promise))(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})}var P=class e extends Error{constructor(t,n){super(t),Object.setPrototypeOf(this,e.prototype),this.name=`View360Error`,this.code=n}},F={CODES:{WRONG_TYPE:0,WRONG_OPTION:1,ELEMENT_NOT_FOUND:2,CANVAS_NOT_FOUND:3,WEBGL_NOT_SUPPORTED:4,FAILED_CREATE_CONTEXT_2D:5,PROVIDE_PROJECTION_FIRST:6,FAILED_LINKING_PROGRAM:7,INSUFFICIENT_ARGS:8},MESSAGES:{WRONG_TYPE:(e,t)=>`${typeof e} is not a ${t.map(e=>`"${e}"`).join(` or `)}.`,WRONG_OPTION:(e,t)=>`Bad option: given "${e}" for option "${t}".`,ELEMENT_NOT_FOUND:e=>`Element with selector "${e}" not found.`,CANVAS_NOT_FOUND:`The canvas element was not found inside the given root element.`,WEBGL_NOT_SUPPORTED:`WebGL is not supported on this browser.`,FAILED_CREATE_CONTEXT_2D:`Failed to create canvas 2D context`,PROVIDE_PROJECTION_FIRST:`"projection" should be provided before initialization.`,FAILED_LINKING_PROGRAM:(e,t)=>`Failed linking WebGL program - "${e}\nShader compile Log: ${t}`,INSUFFICIENT_ARGS:(e,t)=>`Insufficient arguments: given "${e}" for "${t}".`}},I={MOUSE_DOWN:`mousedown`,MOUSE_MOVE:`mousemove`,MOUSE_UP:`mouseup`,TOUCH_START:`touchstart`,TOUCH_MOVE:`touchmove`,TOUCH_END:`touchend`,WHEEL:`wheel`,RESIZE:`resize`,CONTEXT_MENU:`contextmenu`,MOUSE_ENTER:`mouseenter`,MOUSE_LEAVE:`mouseleave`,POINTER_DOWN:`pointerdown`,POINTER_MOVE:`pointermove`,POINTER_UP:`pointerup`,POINTER_CANCEL:`pointercancel`,POINTER_ENTER:`pointerenter`,POINTER_LEAVE:`pointerleave`,KEY_DOWN:`keydown`,KEY_UP:`keyup`,LOAD:`load`,ERROR:`error`,CLICK:`click`,DOUBLE_CLICK:`dblclick`,CONTEXT_CREATE_ERROR:`webglcontextcreationerror`,CONTEXT_LOST:`webglcontextlost`,CONTEXT_RESTORED:`webglcontextrestored`,DEVICE_ORIENTATION:`deviceorientation`,DEVICE_MOTION:`devicemotion`,ORIENTATION_CHANGE:`orientationchange`,VIDEO_PLAY:`play`,VIDEO_PAUSE:`pause`,VIDEO_LOADED_DATA:`loadeddata`,VIDEO_VOLUME_CHANGE:`volumechange`,VIDEO_TIME_UPDATE:`timeupdate`,VIDEO_DURATION_CHANGE:`durationchange`,VIDEO_CAN_PLAYTHROUGH:`canplaythrough`,TRANSITION_END:`transitionend`,XR_END:`end`},L=`div`,ut=`button`,dt;(function(e){e[e.LEFT=0]=`LEFT`,e[e.MIDDLE=1]=`MIDDLE`,e[e.RIGHT=2]=`RIGHT`})(dt||(dt={}));var R={GRAB:`grab`,GRABBING:`grabbing`,NONE:``},ft=[`LEFT`,`UP`,`RIGHT`,`DOWN`],pt;(function(e){e[e.LEFT=37]=`LEFT`,e[e.UP=38]=`UP`,e[e.RIGHT=39]=`RIGHT`,e[e.DOWN=40]=`DOWN`})(pt||(pt={}));var mt=32,ht={LEFT:`ArrowLeft`,UP:`ArrowUp`,RIGHT:`ArrowRight`,DOWN:`ArrowDown`},gt=` `,_t=[`requestFullscreen`,`webkitRequestFullscreen`,`webkitRequestFullScreen`,`webkitCancelFullScreen`,`mozRequestFullScreen`,`msRequestFullscreen`],vt=[`fullscreenElement`,`webkitFullscreenElement`,`webkitCurrentFullScreenElement`,`mozFullScreenElement`,`msFullscreenElement`],yt=[`exitFullscreen`,`webkitExitFullscreen`,`webkitCancelFullScreen`,`mozCancelFullScreen`,`msExitFullscreen`],bt=[`fullscreenchange`,`webkitfullscreenchange`,`mozfullscreenchange`,`MSFullscreenChange`],z={CONTAINER:`view360-container`,CANVAS:`view360-canvas`,CTX_LOST:`view360-ctx-lost`,IN_VR:`view360-vr-presenting`,HOTSPOT_CONTAINER:`view360-hotspots`,HOTSPOT:`view360-hotspot`,HOTSPOT_VISIBLE:`view360-hotspot-visible`,HOTSPOT_FLIP_X:`view360-hotspot-flip-x`,HOTSPOT_FLIP_Y:`view360-hotspot-flip-y`},B={READY:`ready`,LOAD_START:`loadStart`,LOAD:`load`,PROJECTION_CHANGE:`projectionChange`,RESIZE:`resize`,BEFORE_RENDER:`beforeRender`,RENDER:`render`,INPUT_START:`inputStart`,INPUT_END:`inputEnd`,VIEW_CHANGE:`viewChange`,STATIC_CLICK:`staticClick`,VR_START:`vrStart`,VR_END:`vrEnd`},xt={LINEAR:e=>e,SINE_WAVE:e=>Math.sin(e*Math.PI*2),EASE_OUT_CUBIC:e=>1-(1-e)**3,EASE_OUT_BOUNCE:e=>{let t=7.5625,n=2.75;return e<1/n?t*e*e:e<2/n?t*(e-=1.5/n)*e+.75:e<2.5/n?t*(e-=2.25/n)*e+.9375:t*(e-=2.625/n)*e+.984375}},St={CHANGE:`change`,ANIMATION_END:`animationEnd`},Ct={UPDATE:`update`},V={INPUT_START:`inputStart`,CHANGE:`change`,INPUT_END:`inputEnd`,ENABLE:`enable`,DISABLE:`disable`,STATIC_CLICK:`staticClick`},H=Math.PI/180,U=180/Math.PI,W=xt.EASE_OUT_CUBIC,G=300,wt={min:-1/0,max:1/0},Tt={min:-90,max:90},Et={min:.6,max:10},Dt;(function(e){e[e.ZERO=0]=`ZERO`,e[e.CW_90=1]=`CW_90`,e[e.CCW_90=2]=`CCW_90`,e[e.CW_180=3]=`CW_180`})(Dt||(Dt={}));var K=`view360videotimechange`,Ot=`http://www.w3.org/2000/svg`,kt=`immersive-vr`,At=`local`,jt=2**-52,Mt=e=>typeof e==`string`,Nt=e=>!!e&&e.nodeType===Node.ELEMENT_NODE,q=(e,t=L)=>{let n=document.createElement(t);return n.classList.add(e),n},Pt=(e,t)=>{let n=null;if(Mt(e)){let r=(t||document).querySelector(e);if(!r)return null;n=r}else Nt(e)&&(n=e);return n},Ft=(e,t)=>{let n=Pt(e,t);if(!n)throw Mt(e)?new P(F.MESSAGES.ELEMENT_NOT_FOUND(e),F.CODES.ELEMENT_NOT_FOUND):new P(F.MESSAGES.WRONG_TYPE(e,[`HTMLElement`,`string`]),F.CODES.WRONG_TYPE);return n},It=(e,t)=>{let n=e.querySelector(t);if(!n)throw new P(F.MESSAGES.CANVAS_NOT_FOUND,F.CODES.CANVAS_NOT_FOUND);return n},J=(e,t,n)=>Math.max(Math.min(e,n),t),Lt=(e,t,n)=>e*(1-n)+t*n,Y=(e,t,n)=>{let r=Math.abs(n-t);return e<t?e=n-(t-e)%r:e>n&&(e=t+(e-n)%r),e},Rt=(e,t)=>{for(let n=0;n<e.length;n++)if(t(e[n]))return n;return-1},X=e=>typeof e==`object`?e:{},zt=(e,t)=>Math.atan(Math.tan(e*.5)/t)*2,Bt=()=>{if(!document)return!1;for(let e of vt)if(document[e])return!0;return!1},Vt=()=>window.isSecureContext&&!!DeviceMotionEvent&&`requestPermission`in DeviceMotionEvent,Ht=(e,t)=>Math.tan(H*e*.5)/Math.tan(H*t*.5),Ut=(e,t,n,r)=>{ve(e);let i=.01,a=J(n,-90+i,90-i);return Se(e,e,t*H),xe(e,e,a*H),Ce(e,e,r*H),e},Wt=e=>{let t=e[0],n=e[1],r=e[2],i=e[3],a=t*t,o=n*n,s=r*r,c=i*i,l=a+o+s+c,u=t*i-n*r,d,f;if(u>.499995*l)d=Math.PI/2,f=2*Math.atan2(n,t);else if(u<-.499995*l)d=-Math.PI/2,f=-2*Math.atan2(n,t);else{let t=T(0,0,1),n=T(0,1,0);D(t,t,e),D(n,n,e);let r=Math.sqrt(t[0]*t[0]+t[2]*t[2]);d=Math.atan2(-t[1],r),f=Math.atan2(t[0],t[2])}return{pitch:J(d*U,-90,90),yaw:Y(f*U,0,360)}},Gt=class{get val(){return this._val}get start(){return this._start}get end(){return this._end}get progress(){return this._progress}get activated(){return this._activated}get duration(){return this._duration}set duration(e){this._duration=e}get loop(){return this._loop}set loop(e){this._loop=e}get range(){return this._range}get easing(){return this._easing}set easing(e){this._easing=e}constructor({duration:e=G,loop:t=!1,range:n={min:0,max:1},easing:r=W}={}){this._duration=e,this._loop=t,this._range=n,this._easing=r,this._activated=!1,this.reset(0)}update(e){if(!this._activated)return this._val=this._end,0;let t=this._start,n=this._end,r=this._duration,i=this._val,a=this._loop,o=this._progress+e/r;return this._progress=a?Y(o,0,1):J(o,0,1),this._val=Lt(t,n,this._easing(this._progress)),!a&&this._progress>=1&&(this._activated=!1),this._val-i}reset(e){let t=this._range,n=J(e,t.min,t.max);this._start=n,this._end=n,this._val=n,this._progress=0,this._activated=!1}add(e){let t=this._range;this._start=J(this._start+e,t.min,t.max),this._end=J(this._end+e,t.min,t.max),this._val=J(this._val+e,t.min,t.max)}setNewEndByDelta(e){let t=this._range;this._start=this._val,this._end=J(this._end+e,t.min,t.max),this._progress=0,this._activated=!0}setRange(e,t){this._start=J(this._start,e,t),this._end=J(this._end,e,t),this._range={min:e,max:t}}},Kt=class{get duration(){return this._motion.duration}set duration(e){this._motion.duration=e}get easing(){return this._motion.easing}set easing(e){this._motion.easing=e}constructor(e,t,n,{duration:r=G,easing:i=W}={}){this._camera=e,this._motion=new Gt({duration:r,easing:i,range:{min:0,max:1}}),this._from=t,this._to=n,this._finishPromise=new Promise(e=>{this._finish=e}),this._motion.setNewEndByDelta(1)}getFinishPromise(){return this._finishPromise}update(e){let t=this._camera,n=this._from,r=this._to,i=this._motion;i.update(e);let a=i.val,o=O(),s=Lt(n.zoom,r.zoom,a);we(o,n.rotation,r.rotation,a),t.rotate(o,s),a>=1&&this._finish()}},qt=class extends g{get aspect(){return this._aspect}get changed(){return this._changed}get yawRange(){return this._initialYawRange}set yawRange(e){this._initialYawRange=e}get pitchRange(){return this._initialPitchRange}set pitchRange(e){this._initialPitchRange=e}get zoomRange(){return this._initialZoomRange}set zoomRange(e){this._initialZoomRange=e}constructor({initialYaw:e,initialPitch:t,initialZoom:n,yawRange:r,pitchRange:i,zoomRange:a,fov:o}){super(),this.yaw=e,this.pitch=t,this.zoom=n,this.rollOffset=0,this.initialYaw=e,this.initialPitch=t,this.initialZoom=n,this.position=w(),this.animation=null,this._up=T(0,1,0),this._aspect=1,this._initialYawRange=r,this._initialPitchRange=i,this._initialZoomRange=a,this._yawRange=r,this._pitchRange=i,this._zoomRange=a,this.quaternion=O(),this._updateQuaternion(),this.viewMatrix=b(),this.projectionMatrix=b(),this.fov=o,this._maxRenderHeight=-1}destroy(){this.off()}resize(e,t){let n=this._aspect;this._aspect=e/t,this._aspect!==n&&this.updateMatrix()}lookAt({yaw:e=this.yaw,pitch:t=this.pitch,zoom:n=this.zoom}){let r=Ee(this.quaternion),i=this.zoom;this.yaw=Y(e,0,360),this.pitch=J(t,-90,90),this.zoom=n,this._updateQuaternion();let a=Math.abs(n-i);(!Ae(this.quaternion,r)||a>=jt*10)&&this.updateMatrix()}rotate(e,t=this.zoom){let n=k(O(),e),r=Ae(this.quaternion,n);Oe(this.quaternion,n);let i=this.zoom,{yaw:a,pitch:o}=Wt(n);this.yaw=a,this.pitch=o,this.zoom=t;let s=Math.abs(t-i);(!r||s>=jt*10)&&this.updateMatrix()}animateTo({yaw:e=this.yaw,pitch:t=this.pitch,zoom:n=this.zoom,duration:r=0,easing:i=W}={}){return N(this,void 0,void 0,function*(){if(this.yaw===e&&this.pitch===t&&this.zoom===n)return;let a={rotation:Ee(this.quaternion),zoom:this.zoom},o={rotation:Ut(O(),e,t,this.rollOffset),zoom:n},s=new Kt(this,a,o,{duration:r,easing:i}),c=s.getFinishPromise();return this.animation=s,c.then(()=>{this.animation=null,this.trigger(St.ANIMATION_END,{animation:s})}),c})}restrictYawRange(e,t){this._yawRange={min:e,max:t}}restrictPitchRange(e,t){this._pitchRange={min:e,max:t}}restrictZoomRange(e,t){this._zoomRange={min:e,max:t}}restrictRenderHeight(e){this._maxRenderHeight=e}resetRange(){this._yawRange=this._initialYawRange,this._pitchRange=this._initialPitchRange,this._zoomRange=this._initialZoomRange,this._maxRenderHeight=-1}getYawRange(e){let t=this._yawRange,n=this._maxRenderHeight;if(!t)return wt;let r=this.getHorizontalFov(e)*.5,i=t.min,a=t.max;if(n>0){let e=zt(r*H,this._aspect),o=n*.5,s=Math.tan(e),c=Math.sqrt((1+o*o)/(1+s*s)),l=Math.atan(Math.tan(r*H)*c)*U;i=t.min+l,a=t.max-l}return i>a&&(i=0,a=0),{min:i,max:a}}getPitchRange(e){let t=this._pitchRange,n=this._maxRenderHeight;if(!t)return Tt;let r=t.min,i=t.max;if(n>0){let n=this.getVerticalFov(e)*.5;r=t.min+n,i=t.max-n}return r>i&&(r=0,i=0),{min:Math.max(r,-90),max:Math.min(i,90)}}getZoomRange(){let e=this._zoomRange??Et,t=this.getHorizontalFov(e.max),n=this.getHorizontalFov(e.min),r=this.getHorizontalFov(this.zoom);return{min:Math.max(t,1),max:Math.min(n,180),current:r}}getHorizontalFov(e=this.zoom){return this._getZoomedHorizontalFov(e)*U}getVerticalFov(e=this.zoom){let t=this._aspect;return zt(this._getZoomedHorizontalFov(e),t)*U}fovToZoom(e){let t=this.fov;return Math.tan(H*t*.5)/Math.tan(H*e*.5)}updateMatrix(){let e=this._up,t=this._aspect,n=this.viewMatrix,r=this.projectionMatrix,i=this.position,a=this.quaternion,o=w(),s=T(0,0,-1);D(s,s,a),D(o,e,a);let c=zt(this._getZoomedHorizontalFov(),t);ne(n,i,s,o),te(r,c,t,.1,100),this._changed=!0}onFrameRender(){this._changed=!1}_updateQuaternion(){Ut(this.quaternion,this.yaw,this.pitch,this.rollOffset)}_getZoomedHorizontalFov(e=this.zoom){return 2*Math.atan(Math.tan(H*this.fov*.5)/e)}},Jt=class extends g{constructor(){super(),this._onMouseDown=e=>{let t=this._el;!t||e.button!==dt.LEFT||(e.preventDefault(),t.focus?t.focus():window.focus(),this._prevPos[0]=e.clientX,this._prevPos[1]=e.clientY,window.addEventListener(I.MOUSE_MOVE,this._onMouseMove,!1),window.addEventListener(I.MOUSE_UP,this._onMouseUp,!1),this.trigger(V.INPUT_START,{srcEvent:e,isTouch:!1,isKeyboard:!1}))},this._onMouseMove=e=>{e.preventDefault();let t=e.clientX,n=e.clientY,r=this._prevPos,i=t-r[0],a=n-r[1];this.trigger(V.CHANGE,{delta:{x:i,y:a},isTouch:!1,isKeyboard:!1}),r[0]=t,r[1]=n},this._onMouseUp=()=>{this._prevPos[0]=0,this._prevPos[1]=0,window.removeEventListener(I.MOUSE_MOVE,this._onMouseMove,!1),window.removeEventListener(I.MOUSE_UP,this._onMouseUp,!1),this.trigger(V.INPUT_END,{isTouch:!1,isKeyboard:!1,scrolling:!1})},this._el=null,this._prevPos=[0,0]}enable(e){this._el||(e.addEventListener(I.MOUSE_DOWN,this._onMouseDown),this._el=e)}disable(){let e=this._el;e&&(e.removeEventListener(I.MOUSE_DOWN,this._onMouseDown),window.removeEventListener(I.MOUSE_MOVE,this._onMouseMove,!1),window.removeEventListener(I.MOUSE_UP,this._onMouseUp,!1),this._el=null)}},Yt=class extends g{get scrollable(){return this._scrollable}set scrollable(e){this._scrollable=e}constructor(){super(),this._onTouchStart=e=>{if(e.touches.length>1||this._scrolling)return;let t=e.touches[0];this._isFirstTouch=!0,this._prevPos[0]=t.clientX,this._prevPos[1]=t.clientY,this.trigger(V.INPUT_START,{srcEvent:e,isTouch:!0,isKeyboard:!1})},this._onTouchMove=e=>{if(e.touches.length>1||this._scrolling)return;let t=e.touches[0],n=this._scrollable,r=this._prevPos,i=t.clientX,a=t.clientY,o=i-r[0],s=a-r[1];if(this._isFirstTouch){if(n&&!Bt()&&Math.abs(s)>Math.abs(o)){this._scrolling=!0;return}this._isFirstTouch=!1}e.cancelable!==!1&&e.preventDefault(),this.trigger(V.CHANGE,{delta:{x:o,y:s},isTouch:!0,isKeyboard:!1}),r[0]=i,r[1]=a},this._onTouchEnd=e=>{if(e.touches.length!==0)return;let t=e.touches[0],n=this._prevPos;t?(n[0]=t.clientX,n[1]=t.clientY):(n[0]=0,n[1]=0,this.trigger(V.INPUT_END,{isTouch:!0,isKeyboard:!1,scrolling:this._scrolling})),e.cancelable!==!1&&e.preventDefault(),this._scrolling=!1},this._el=null,this._prevPos=[0,0],this._isFirstTouch=!1,this._scrolling=!1,this._scrollable=!1}enable(e){this._el||(e.addEventListener(I.TOUCH_START,this._onTouchStart,{passive:!1}),e.addEventListener(I.TOUCH_MOVE,this._onTouchMove,{passive:!1}),e.addEventListener(I.TOUCH_END,this._onTouchEnd),this._el=e)}disable(){let e=this._el;e&&(e.removeEventListener(I.TOUCH_START,this._onTouchStart),e.removeEventListener(I.TOUCH_MOVE,this._onTouchMove),e.removeEventListener(I.TOUCH_END,this._onTouchEnd),this._el=null)}},Xt=class extends g{get active(){let e=this._pressed;return e.LEFT||e.UP||e.RIGHT||e.DOWN}constructor(){super(),this._onKeyDown=e=>{if(e.location!==KeyboardEvent.DOM_KEY_LOCATION_STANDARD)return;this._updateKeyPress(e,!0);let t=this._getPressedKeyCount();t<=0||(e.preventDefault(),t===1&&!e.repeat&&this.trigger(V.INPUT_START,{srcEvent:e,isTouch:!1,isKeyboard:!0}))},this._onKeyUp=e=>{e.location===KeyboardEvent.DOM_KEY_LOCATION_STANDARD&&(this._updateKeyPress(e,!1),!(this._getPressedKeyCount()>0)&&this.trigger(V.INPUT_END,{isTouch:!1,isKeyboard:!0,scrolling:!1}))},this._el=null,this._clearPressedKeys()}enable(e){this._el||(e.addEventListener(I.KEY_DOWN,this._onKeyDown),e.addEventListener(I.KEY_UP,this._onKeyUp),this._el=e,this._clearPressedKeys())}disable(){let e=this._el;e&&(e.removeEventListener(I.KEY_DOWN,this._onKeyDown),e.removeEventListener(I.KEY_UP,this._onKeyUp),this._el=null,this._clearPressedKeys())}update(){let e=this._getDeltaByPressedKeys();(e.x!==0||e.y!==0)&&this.trigger(V.CHANGE,{delta:e,isTouch:!1,isKeyboard:!0})}_clearPressedKeys(){this._pressed=ft.reduce((e,t)=>Object.assign(Object.assign({},e),{[t]:!1}),{})}_updateKeyPress(e,t){let n=this._pressed,r=e.keyCode==null?ht[e.key]:pt[e.keyCode];r&&(n[r]=t)}_getPressedKeyCount(){return ft.filter(e=>this._pressed[e]).length}_getDeltaByPressedKeys(){let e=this._pressed,t=0,n=0;return e.LEFT&&(t+=1),e.RIGHT&&--t,e.UP&&(n+=1),e.DOWN&&--n,{x:t,y:n}}},Zt=class extends g{get enabled(){return this._enabled}get enableBlocked(){return this._enableBlocked}get animating(){return this._keyboardInput.active||this._xMotion.activated||this._yMotion.activated}get yaw(){return this._xMotion}get pitch(){return this._yMotion}get scrollable(){return this._touchInput.scrollable}set scrollable(e){this._touchInput.scrollable=e}get pointerScale(){return this._pointerScale}set pointerScale(e){this._pointerScale=e}get keyboardScale(){return this._keyboardScale}set keyboardScale(e){this._keyboardScale=e}get duration(){return this._duration}set duration(e){this._duration=e,this._xMotion.duration=e,this._yMotion.duration=e}get easing(){return this._easing}set easing(e){this._easing=e,this._xMotion.easing=e,this._yMotion.easing=e}get disablePitch(){return this._disablePitch}set disablePitch(e){this._disablePitch=e}get disableYaw(){return this._disableYaw}set disableYaw(e){this._disableYaw=e}get disableKeyboard(){return this._disableKeyboard}set disableKeyboard(e){this._disableKeyboard=e}constructor(e,t,{duration:n=G,easing:r=W,pointerScale:i=[1,1],keyboardScale:a=[1,1],disablePitch:o=!1,disableYaw:s=!1,disableKeyboard:c=!1}={}){super(),this._onInputStart=e=>{this._changedWhileDragging=!1,this.trigger(V.INPUT_START,Object.assign(Object.assign({},e),{inputType:`rotate`}))},this._onChange=e=>{let t=e.delta,n=1/this._zoomScale,r=this._screenScale,i=this._keyboardScale,a=this._pointerScale,o;o=e.isKeyboard?[i[0]*n,i[1]*n]:[a[0]*r[0]*n,a[1]*r[1]*n];let s=t.x*o[0],c=t.y*o[1];this._xMotion.setNewEndByDelta(s),this._yMotion.setNewEndByDelta(c),this._changedWhileDragging=!0},this._onInputEnd=e=>{this.trigger(V.INPUT_END,Object.assign(Object.assign({},e),{inputType:`rotate`})),!this._changedWhileDragging&&!e.isKeyboard&&!e.scrolling&&this.trigger(V.STATIC_CLICK,{isTouch:e.isTouch}),this._changedWhileDragging=!1},this._controlEl=e,this._pointerScale=i,this._keyboardScale=a,this._duration=n,this._easing=r,this._disablePitch=o,this._disableYaw=s,this._disableKeyboard=c,this._enableBlocked=t,this._mouseInput=new Jt,this._touchInput=new Yt,this._keyboardInput=new Xt,this._xMotion=new Gt({duration:n,range:wt,easing:r}),this._yMotion=new Gt({duration:n,range:Tt,easing:r}),this._screenScale=[1,1],this._zoomScale=1,this._enabled=!1,this._changedWhileDragging=!1,this._bindInputs()}destroy(){this.disable(),this._mouseInput.off(),this._touchInput.off(),this._keyboardInput.off(),this.off(),this._changedWhileDragging=!1}update(e){if(!this._enabled)return;let t=this._xMotion,n=this._yMotion,r=this._keyboardInput;this._disableKeyboard||r.update(),this._disablePitch||n.update(e),this._disableYaw||t.update(e)}updateRange(e,t){let n=e.getYawRange(t),r=e.getPitchRange(t);this._xMotion.setRange(n.min,n.max),this._yMotion.setRange(r.min,r.max)}setZoomScale(e){this._zoomScale=e}resize(e,t,n,r){let i=zt(e*H,t)*U;this._screenScale[0]=e/n,this._screenScale[1]=i/r}enable(){if(this._enabled)return;let e=this._controlEl;this._mouseInput.enable(e),this._touchInput.enable(e),this._keyboardInput.enable(e),this._enabled=!0,this._enableBlocked=!1,this.trigger(V.ENABLE,{control:this,updateCursor:!0})}disable(){this._enabled&&(this._mouseInput.disable(),this._touchInput.disable(),this._keyboardInput.disable(),this._enabled=!1,this.trigger(V.DISABLE,{updateCursor:!0}))}sync(e){this.updateRange(e,e.zoom),this._xMotion.reset(e.yaw),this._yMotion.reset(e.pitch)}_bindInputs(){let e=this._mouseInput,t=this._touchInput,n=this._keyboardInput;e.on(V.INPUT_START,this._onInputStart),e.on(V.CHANGE,this._onChange),e.on(V.INPUT_END,this._onInputEnd),t.on(V.INPUT_START,this._onInputStart),t.on(V.CHANGE,this._onChange),t.on(V.INPUT_END,this._onInputEnd),n.on(V.INPUT_START,this._onInputStart),n.on(V.CHANGE,this._onChange),n.on(V.INPUT_END,this._onInputEnd)}},Qt=class extends g{get scrollable(){return this._scrollable}set scrollable(e){this._scrollable=e}constructor(){super(),this._onWheel=e=>{let t=this._scrollable;if(e.deltaY===0||t)return;e.preventDefault(),e.stopPropagation(),this._inputTimer<0?this.trigger(V.INPUT_START,{srcEvent:e,isTouch:!1,isKeyboard:!1}):this._clearTimer();let n=this._baseScale*e.deltaY;this.trigger(V.CHANGE,{delta:n,isTouch:!1,isKeyboard:!1}),this._inputTimer=window.setTimeout(()=>{this.trigger(V.INPUT_END,{isTouch:!1,isKeyboard:!1,scrolling:!1}),this._inputTimer=-1},G)},this._el=null,this._baseScale=.04,this._scrollable=!1,this._inputTimer=-1}enable(e){this._el||(e.addEventListener(I.WHEEL,this._onWheel,{passive:!1,capture:!1}),this._el=e,this._clearTimer())}disable(){let e=this._el;e&&(e.removeEventListener(I.WHEEL,this._onWheel,!1),this._el=null,this._clearTimer())}_clearTimer(){window.clearTimeout(this._inputTimer),this._inputTimer=-1}},$t=class extends g{constructor(){super(),this._onTouchMove=e=>{let t=e.touches;if(t.length!==2||!e.cancelable)return;e.preventDefault(),e.stopPropagation();let n=this._prevDistance,r=[t[0].pageX-t[1].pageX,t[0].pageY-t[1].pageY],i=Math.sqrt(r[0]*r[0]+r[1]*r[1])*this._baseScale,a=this._isFirstTouch?0:i-n;this._isFirstTouch&&this.trigger(V.INPUT_START,{srcEvent:e,isTouch:!0,isKeyboard:!1}),this._prevDistance=i,this._isFirstTouch=!1,this.trigger(V.CHANGE,{delta:a,isTouch:!0,isKeyboard:!1})},this._onTouchEnd=e=>{e.touches.length===0&&(this._isFirstTouch||this.trigger(V.INPUT_END,{isTouch:!0,isKeyboard:!1,scrolling:!1}),this._prevDistance=-1,this._isFirstTouch=!0)},this._el=null,this._baseScale=-.2,this._prevDistance=-1,this._isFirstTouch=!0}enable(e){this._el||(e.addEventListener(I.TOUCH_MOVE,this._onTouchMove,{passive:!1,capture:!1}),e.addEventListener(I.TOUCH_END,this._onTouchEnd),this._el=e,this._prevDistance=-1,this._isFirstTouch=!0)}disable(){let e=this._el;e&&(e.removeEventListener(I.TOUCH_MOVE,this._onTouchMove,!1),e.removeEventListener(I.TOUCH_END,this._onTouchEnd),this._el=null)}},en=class extends g{get enabled(){return this._enabled}get enableBlocked(){return this._enableBlocked}get animating(){return this._motion.activated}get zoom(){return this._motion.val}get scrollable(){return this._wheelInput.scrollable}set scrollable(e){this._wheelInput.scrollable=e}get range(){return this._motion.range}get scale(){return this._scale}set scale(e){this._scale=e}get duration(){return this._motion.duration}get easing(){return this._motion.easing}constructor(e,t,{scale:n=1,duration:r=G,easing:i=W}={}){super(),this._onInputStart=e=>{this.trigger(V.INPUT_START,Object.assign(Object.assign({},e),{inputType:`zoom`}))},this._onChange=({delta:e})=>{let t=e*this._scale;this._motion.setNewEndByDelta(t)},this._onInputEnd=e=>{this.trigger(V.INPUT_END,Object.assign(Object.assign({},e),{inputType:`zoom`}))},this._scale=n,this._controlEl=e,this._enableBlocked=t,this._wheelInput=new Qt,this._pinchInput=new $t,this._motion=new Gt({duration:r,easing:i,range:wt}),this._enabled=!1,this._bindInputs()}destroy(){this.disable(),this._wheelInput.off(),this._pinchInput.off(),this.off()}update(e){this._enabled&&this._motion.update(e)}enable(){if(this._enabled)return;let e=this._controlEl;this._wheelInput.enable(e),this._pinchInput.enable(e),this._enabled=!0,this._enableBlocked=!1,this.trigger(V.ENABLE,{control:this,updateCursor:!1})}disable(){this._enabled&&(this._wheelInput.disable(),this._pinchInput.disable(),this._enabled=!1,this.trigger(V.DISABLE,{updateCursor:!1}))}sync(e){let t=this._motion,n=e.getZoomRange();t.setRange(n.min,n.max),t.reset(n.current)}_bindInputs(){let e=this._wheelInput,t=this._pinchInput;e.on(V.INPUT_START,this._onInputStart),e.on(V.CHANGE,this._onChange),e.on(V.INPUT_END,this._onInputEnd),t.on(V.INPUT_START,this._onInputStart),t.on(V.CHANGE,this._onChange),t.on(V.INPUT_END,this._onInputEnd)}},Z={PITCH_DELTA:1,YAW_DELTA_BY_ROLL:2,YAW_DELTA_BY_YAW:3};Z[Z.PITCH_DELTA]={targetAxis:[0,1,0],meshPoint:[0,0,1]},Z[Z.YAW_DELTA_BY_ROLL]={targetAxis:[0,1,0],meshPoint:[1,0,0]},Z[Z.YAW_DELTA_BY_YAW]={targetAxis:[1,0,0],meshPoint:[0,0,1]};var tn=class extends g{get enabled(){return this._enabled}get orientationUpdated(){return this._orientationUpdated}get ignoreRoll(){return this._ignoreRoll}set ignoreRoll(e){this._ignoreRoll=e}constructor(){super(),this._onDeviceOrientation=e=>{let t=this._orientation,{alpha:n,beta:r,gamma:i}=e;n==null||r==null||i==null||(t.alpha=n,t.beta=r,t.gamma=i,this._orientationUpdated=!0,this._needsCalibrate&&(this._needsCalibrate=!1,this._calibrateSensor()))},this._updateScreenOrientation=()=>{window.screen&&window.screen.orientation&&window.screen.orientation.angle!==void 0?this._screenOrientation=screen.orientation.angle:window.orientation===void 0?this._screenOrientation=0:this._screenOrientation=window.orientation>=0?window.orientation:360+window.orientation},this.quaternion=O(),this._orientation={alpha:0,beta:90,gamma:0},this._yawOrigin=0,this._yawOffset=0,this._orientationUpdated=!1,this._screenOrientation=0,this._needsCalibrate=!0,this._enabled=!1}enable(){this._enabled||(window.addEventListener(I.DEVICE_ORIENTATION,this._onDeviceOrientation),window.addEventListener(I.ORIENTATION_CHANGE,this._updateScreenOrientation),this._updateScreenOrientation(),this._orientationUpdated=!1,this._needsCalibrate=!0,this._enabled=!0)}disable(){this._enabled&&(window.removeEventListener(I.DEVICE_ORIENTATION,this._onDeviceOrientation),window.removeEventListener(I.ORIENTATION_CHANGE,this._updateScreenOrientation),this._enabled=!1)}update(){this._updateRotation(),this._orientationUpdated=!1}collectDelta(){if(!this._orientationUpdated)return{pitch:0,yaw:0};let e=Ee(this.quaternion);return this._updateRotation(),this._orientationUpdated=!1,this._toEulerDelta(e,this.quaternion)}setInitialRotation(e){this._yawOrigin=e}_calibrateSensor(){let e=this._yawOrigin,t=this.quaternion;this._yawOffset=0,this._updateRotation();let{yaw:n}=Wt(t);this._yawOffset=n-e,this._updateRotation(),this._needsCalibrate=!1}_updateRotation(){let e=this.quaternion,{alpha:t,beta:n,gamma:r}=this._orientation;ve(e),Se(e,e,(t-this._yawOffset)*H),xe(e,e,n*H),Ce(e,e,-r*H);let i=O(),a=-this._screenOrientation*.5*H,o=De(-Math.sqrt(.5),0,0,Math.sqrt(.5));ke(i,0,Math.sin(a),0,Math.cos(a)),be(e,e,i),be(e,e,o),k(e,e)}_toEulerDelta(e,t){return{yaw:this._getDeltaYaw(e,t),pitch:this._getDeltaPitch(e,t)}}_getDeltaYaw(e,t){let n=this._getRotationDelta(e,t,Z.YAW_DELTA_BY_YAW);return this._getRotationDelta(e,t,Z.YAW_DELTA_BY_ROLL)*Math.sin(this._extractPitchFromQuat(t))+n}_getDeltaPitch(e,t){return this._getRotationDelta(e,t,Z.PITCH_DELTA)}_getRotationDelta(e,t,n){let r=T(Z[n].targetAxis[0],Z[n].targetAxis[1],Z[n].targetAxis[2]),i=Z[n].meshPoint,a=Ee(e),o=Ee(t);k(a,a),k(o,o);let s=T(0,0,1),c=T(0,0,1);D(s,s,a),D(c,c,o),D(r,r,o);let l=ce(r,E(w(),s,c))>0?1:-1,u=T(i[0],i[1],i[2]),d;d=n===Z.YAW_DELTA_BY_YAW?T(l,0,0):T(0,l,0),D(u,u,o),D(d,d,o);let f=u,p=d,m=w();E(m,f,p),se(m,m);let h=m[0],g=m[1],_=m[2];c=T(i[0],i[1],i[2]),D(c,c,o),s=T(i[0],i[1],i[2]),D(s,s,a);let v=Math.abs(s[0]*h+s[1]*g+s[2]*_),y=w();ae(y,s,oe(w(),m,v));let b=(y[0]*c[0]+y[1]*c[1]+y[2]*c[2])/(re(y)*re(c));b>1&&(b=1);let x=Math.acos(b),S=E(w(),c,y);v=h*S[0]+g*S[1]+_*S[2];let C;return C=n===Z.YAW_DELTA_BY_YAW?v<0?1:-1:v>0?1:-1,x*C*l*U}_extractPitchFromQuat(e){let t=T(0,0,1);return D(t,t,e),-1*Math.atan2(t[1],Math.sqrt(t[0]**2+t[2]**2))}},nn=class extends g{get enabled(){return this._input.enabled}get enableBlocked(){return this._enableBlocked}get animating(){return this._input.enabled&&this._input.orientationUpdated}get ignoreRoll(){return this._ignoreRoll}set ignoreRoll(e){this._ignoreRoll=e}static isAvailable(){return N(this,void 0,void 0,function*(){if(!DeviceMotionEvent)return!1;let e;return Promise.race([new Promise(t=>{e=e=>{t(e.rotationRate&&e.rotationRate.alpha!=null)},window.addEventListener(I.DEVICE_MOTION,e)}),new Promise(e=>{setTimeout(()=>e(!1),1e3)})]).then(t=>(window.removeEventListener(I.DEVICE_MOTION,e),t))})}static requestSensorPermission(){return N(this,void 0,void 0,function*(){return Vt()?DeviceMotionEvent.requestPermission().then(e=>e===`granted`).catch(()=>!1):!0})}constructor(e,{ignoreRoll:t=!0}={}){super(),this._enableBlocked=e,this._ignoreRoll=t,this._input=new tn}destroy(){this.disable(),this._input.off(),this.off()}update(e,t,n,r){this._ignoreRoll?this._updateYawPitch(e,t,n,r):this._updateQuaternion(e,r)}enable(){this._input.enabled||(this._input.enable(),this._enableBlocked=!1,this.trigger(V.ENABLE,{control:this,updateCursor:!1}))}disable(){this._input.enabled&&(this._input.disable(),this.trigger(V.DISABLE,{updateCursor:!1}))}sync(){}_updateYawPitch(e,t,n,r){let i=this._input;if(!i.enabled)return;let{yaw:a,pitch:o}=i.collectDelta();t.add(a),n.add(o),e.lookAt({yaw:t.val,pitch:n.val,zoom:r})}_updateQuaternion(e,t){let n=this._input;n.enabled&&(n.update(),e.rotate(n.quaternion,t))}},rn=class{get useGrabCursor(){return this._useGrabCursor}set useGrabCursor(e){e!==this._useGrabCursor&&(this._useGrabCursor=e,e&&this._enabled?this._setCursor(R.GRAB):e||this._setCursor(R.NONE))}get disableContextMenu(){return this._disableContextMenu}set disableContextMenu(e){e!==this._disableContextMenu&&(this._disableContextMenu=e,e&&this._enabled?this._blockContextMenu():e||this._restoreContextMenu())}get scrollable(){return this._rotateControl.scrollable}set scrollable(e){this._rotateControl.scrollable=e}get wheelScrollable(){return this._zoomControl.scrollable}set wheelScrollable(e){this._zoomControl.scrollable=e}get ignoreZoomScale(){return this._ignoreZoomScale}set ignoreZoomScale(e){this._ignoreZoomScale=e}get enabled(){return this._enabled}get rotate(){return this._rotateControl}get zoom(){return this._zoomControl}get gyro(){return this._gyroControl}get animating(){return this._rotateControl.animating||this._zoomControl.animating||this._gyroControl.animating}constructor(e,t,{useGrabCursor:n,scrollable:r,wheelScrollable:i,disableContextMenu:a,rotate:o,zoom:s,gyro:c}){this._preventContextMenu=e=>{e.preventDefault()},this._onInputStart=e=>{this._useGrabCursor&&!e.isKeyboard&&this._setCursor(R.GRABBING)},this._onInputEnd=e=>{this._useGrabCursor&&!e.isKeyboard&&this._setCursor(R.GRAB)},this._onEnable=({control:e,updateCursor:t})=>{t&&this._useGrabCursor&&this._setCursor(R.GRAB),e.sync(this._camera)},this._onDisable=({updateCursor:e})=>{e&&this._setCursor(R.NONE)},this._onCameraAnimationEnd=({animation:e})=>{e.getFinishPromise().then(()=>{this.sync()})},this._useGrabCursor=n,this._disableContextMenu=a,this._camera=t,this._controlEl=e,this._ignoreZoomScale=!1,this._enabled=!1,this._rotateControl=new Zt(e,!o,X(o)),this._zoomControl=new en(e,!s,X(s)),this._gyroControl=new nn(!c,X(c)),this._rotateControl.scrollable=r,this._zoomControl.scrollable=i,this._bindEvents()}destroy(){this.disable(),this._rotateControl.destroy(),this._zoomControl.destroy(),this._setCursor(R.NONE)}resize(e,t){let n=this._camera;this._rotateControl.resize(n.fov,n.aspect,e,t)}enable(){return N(this,void 0,void 0,function*(){this._enabled||(this._rotateControl.enableBlocked||this._rotateControl.enable(),this._zoomControl.enableBlocked||this._zoomControl.enable(),this._gyroControl.enableBlocked||(yield nn.isAvailable())&&this._gyroControl.enable(),this.sync(),this._disableContextMenu&&this._blockContextMenu(),this._enabled=!0)})}disable(){this._enabled&&(this._rotateControl.disable(),this._zoomControl.disable(),this._gyroControl.disable(),this._restoreContextMenu(),this._enabled=!1)}update(e){let t=this._camera,n=this._rotateControl,r=this._zoomControl,i=this._gyroControl;r.update(e);let a=Ht(t.fov,r.zoom),o=this._ignoreZoomScale?1:Math.max(a,1);n.setZoomScale(o),n.updateRange(t,a),n.update(e);let s=n.yaw,c=n.pitch;i.enabled?i.update(t,s,c,a):t.lookAt({yaw:s.val,pitch:c.val,zoom:a})}sync(){let e=this._camera;this._zoomControl.sync(e),this._rotateControl.sync(e)}_blockContextMenu(){this._controlEl.addEventListener(I.CONTEXT_MENU,this._preventContextMenu)}_restoreContextMenu(){this._controlEl.removeEventListener(I.CONTEXT_MENU,this._preventContextMenu)}_setCursor(e){if(!this._useGrabCursor&&e!==R.NONE)return;let t=this._controlEl;t.style.cursor=e}_bindEvents(){let e=this._rotateControl,t=this._zoomControl;e.on(V.INPUT_START,this._onInputStart),e.on(V.INPUT_END,this._onInputEnd),e.on(V.ENABLE,this._onEnable),e.on(V.DISABLE,this._onDisable),t.on(V.ENABLE,this._onEnable),t.on(V.DISABLE,this._onDisable),this._camera.on(St.ANIMATION_END,this._onCameraAnimationEnd)}},an=class{constructor({width:e,height:t,flipY:n}){this.width=e,this.height=t,this.flipY=n,this.wrapS=WebGLRenderingContext.CLAMP_TO_EDGE,this.wrapT=WebGLRenderingContext.CLAMP_TO_EDGE}destroy(){}isVideo(){return!1}isCube(){return!1}},on=class extends an{constructor({source:e,width:t,height:n,flipY:r}){super({width:t,height:n,flipY:r}),this.source=e}},sn=class extends on{destroy(){let e=this.source;e.pause(),e.removeAttribute(`src`),e.load()}isVideo(){return!0}isPaused(){let e=this.source;return e.paused||e.ended||e.readyState<=2}hasAudio(){let e=this.source;return e.audioTracks?e.audioTracks.length>0:e.webkitAudioDecodedByteCount==null?e.mozHasAudio==null?!0:e.mozHasAudio:e.webkitAudioDecodedByteCount>0}},cn=class extends an{constructor({sources:e,width:t,height:n,flipY:r}){super({width:t,height:n,flipY:r}),this.sources=e}isCube(){return!0}},ln=class{constructor(){this._loadChecker=new lt}load(e,t){return N(this,void 0,void 0,function*(){if(t)return this.loadVideo(e,X(t));if(Array.isArray(e)&&e.length>1)return this.loadCubeImage(e);{let t=Array.isArray(e)?e[0]:e;return this.loadImage(t)}})}loadImage(e){return N(this,void 0,void 0,function*(){let t=this._toImageArray(e);return this._load(t,e=>{let n=t[0];e(new on({source:n,width:n.naturalWidth,height:n.naturalHeight,flipY:!0}))})})}loadCubeImage(e){return N(this,void 0,void 0,function*(){let t=this._toImageArray(e);return this._load(t,e=>{e(new cn({sources:t,width:t[0].naturalWidth,height:t[0].naturalHeight,flipY:!1}))})})}loadVideo(e,t){return N(this,void 0,void 0,function*(){let n=Object.assign({autoplay:!0,muted:!0,loop:!1,volume:1},t),r=this._toVideoElement(e,n);return this._load([r],e=>{let{autoplay:t,muted:i}=n;r.currentTime=0,t&&i&&r.play().catch(()=>void 0),e(new sn({source:r,width:r.videoWidth,height:r.videoHeight,flipY:!0}))})})}_load(e,t){let n=this._loadChecker;return new Promise((r,i)=>{n.once(`ready`,e=>{e.errorCount>0||t(r)}),n.once(`error`,i),n.check(e)})}_toImageArray(e){return(Array.isArray(e)?e:[e]).map(e=>{if(Mt(e)){let t=new Image;return t.crossOrigin=`anonymous`,t.src=e,t}else return e})}_toVideoElement(e,{muted:t,loop:n,volume:r}){if(e instanceof HTMLVideoElement)return e;let i=document.createElement(`video`);return i.crossOrigin=`anonymous`,i.playsInline=!0,i.setAttribute(`webkit-playsinline`,``),i.muted=t,i.volume=r,i.loop=n,Array.isArray(e)?e.forEach(e=>this._appendSourceElement(i,e)):this._appendSourceElement(i,e),i.querySelectorAll(`source`).length>0&&i.readyState<1&&i.load(),i}_appendSourceElement(e,t){if(t instanceof HTMLSourceElement)return t;let n=document.createElement(`source`);n.src=t,e.appendChild(n)}},un=class{constructor(e,t=window){this.maxDeltaTime=e,this._context=t,this._rafId=-1,this._rafTimer=-1,this._lastUpdateTime=-1}start(e){let t=this._context;if(!t||!e||this._rafId>=0||this._rafTimer>=0)return;let n=(r,i)=>{let a=Date.now();e(Math.min(a-this._lastUpdateTime,this.maxDeltaTime*1e3),i),this._lastUpdateTime=a,this._rafId=t.requestAnimationFrame(n)};this._lastUpdateTime=Date.now(),this._rafId=t.requestAnimationFrame(n)}stop(){this._rafId>=0&&this._context.cancelAnimationFrame(this._rafId),this._rafTimer>=0&&clearTimeout(this._rafTimer),this._rafId=-1,this._rafTimer=-1}changeContext(e){this.stop(),this._context=e}},dn=class{get useResizeObserver(){return this._useResizeObserver}get enabled(){return this._enabled}constructor(e,t){this._skipFirstResize=(()=>{let e=!0;return()=>{if(e){e=!1;return}this._onResize()}})(),this._useResizeObserver=e,this._enabled=!1,this._resizeObserver=null,this._onResize=t}enable(e){if(this._enabled&&this.disable(),this._useResizeObserver&&window.ResizeObserver){let t=e.getBoundingClientRect(),n=t.width!==0||t.height!==0,r=new ResizeObserver(n?this._skipFirstResize:this._onResize);r.observe(e),this._resizeObserver=r}else window.addEventListener(I.RESIZE,this._onResize);return this._enabled=!0,this}disable(){if(!this._enabled)return this;let e=this._resizeObserver;return e?(e.disconnect(),this._resizeObserver=null):window.removeEventListener(I.RESIZE,this._onResize),this._enabled=!1,this}},fn=class{get enabled(){return this._enabled}get enableBlocked(){return this._enableBlocked}get playing(){return this._enabled&&!this._interrupted}get delay(){return this._delay}set delay(e){this._delay=e}get delayOnMouseLeave(){return this._delayOnMouseLeave}set delayOnMouseLeave(e){this._delayOnMouseLeave=e}get speed(){return this._speed}set speed(e){this._speed=e}get pauseOnHover(){return this._pauseOnHover}set pauseOnHover(e){this._pauseOnHover=e}get canInterrupt(){return this._canInterrupt}set canInterrupt(e){this._canInterrupt=e}get disableOnInterrupt(){return this._disableOnInterrupt}set disableOnInterrupt(e){this._disableOnInterrupt=e}constructor(e,t,n){this._onInputStart=()=>{this._canInterrupt&&(this._interrupted=!0,this._clearTimeout())},this._onInputEnd=()=>{this._setUninterruptedAfterDelay(this._delay)},this._onGyroEnable=()=>{this.disable()},this._onMouseEnter=()=>{this._pauseOnHover&&(this._interrupted=!0,this._hovering=!0)},this._onMouseLeave=()=>{this._pauseOnHover&&(this._hovering=!1,this._setUninterruptedAfterDelay(this._delayOnMouseLeave))},this._camera=e.camera,this._control=e.control,this._element=t,this._enabled=!1,this._interrupted=!1,this._interruptionTimer=-1,this._hovering=!1;let{delay:r=2e3,delayOnMouseLeave:i=0,speed:a=1,pauseOnHover:o=!1,canInterrupt:s=!0,disableOnInterrupt:c=!1}=X(n);this._enableBlocked=!n,this._delay=r,this._delayOnMouseLeave=i,this._speed=a,this._pauseOnHover=o,this._canInterrupt=s,this._disableOnInterrupt=c}destroy(){this.disable()}update(e){if(!this._enabled)return;if(this._interrupted){this._disableOnInterrupt&&this.disable();return}let t=this._camera,n=-this._speed*e/100;t.yaw=Y(t.yaw+n,0,360)}enable(){let e=this._control,t=this._element;this._enabled||e.gyro.enabled||(e.rotate.on(V.INPUT_START,this._onInputStart),e.rotate.on(V.INPUT_END,this._onInputEnd),e.zoom.on(V.INPUT_START,this._onInputStart),e.zoom.on(V.INPUT_END,this._onInputEnd),e.gyro.on(V.ENABLE,this._onGyroEnable),t.addEventListener(I.MOUSE_ENTER,this._onMouseEnter,!1),t.addEventListener(I.MOUSE_LEAVE,this._onMouseLeave,!1),this._enabled=!0,this._enableBlocked=!1)}enableAfterDelay(){this.enable(),this._interrupted=!0,this._setUninterruptedAfterDelay(this._delay)}disable(){if(!this._enabled)return;let e=this._control,t=this._element;e.rotate.off(V.INPUT_START,this._onInputStart),e.rotate.off(V.INPUT_END,this._onInputEnd),e.zoom.off(V.INPUT_START,this._onInputStart),e.zoom.off(V.INPUT_END,this._onInputEnd),e.gyro.off(V.ENABLE,this._onGyroEnable),t.removeEventListener(I.MOUSE_ENTER,this._onMouseEnter,!1),t.removeEventListener(I.MOUSE_LEAVE,this._onMouseLeave,!1),this._enabled=!1,this._interrupted=!1,this._hovering=!1,this._clearTimeout()}_setUninterruptedAfterDelay(e){this._hovering||(this._clearTimeout(),e>0?this._interruptionTimer=window.setTimeout(()=>{this._interrupted=!1,this._interruptionTimer=-1},e):(this._interrupted=!1,this._interruptionTimer=-1))}_clearTimeout(){this._interruptionTimer>=0&&(window.clearTimeout(this._interruptionTimer),this._interruptionTimer=-1)}},pn=class extends g{constructor(e,t={}){super(),this.destroy=()=>{this.exit(),this.off()},this._onSessionEnd=()=>{this.exit(),this.trigger(B.VR_END)},this._xrSession=null,this._xrRefSpace=null,this._ctx=e,this._options=t}isAvailable(){return N(this,void 0,void 0,function*(){let e=window.navigator.xr;return e?e.isSessionSupported(kt).then(e=>e).catch(()=>!1):!1})}enter(){return N(this,void 0,void 0,function*(){let e=this._ctx,t=window.navigator.xr;if(!t)return;yield nn.requestSensorPermission();let n=Object.assign({requiredFeatures:[At]},this._options);yield e.makeXRCompatible();let r=yield t.requestSession(kt,n);e.bindXRLayer(r);let i=yield r.requestReferenceSpace(At);this._setSession(r,i),this.trigger(B.VR_START,{session:r})})}exit(){let e=this._xrSession;e&&e.end().catch(()=>void 0),this._xrSession=null,this._xrRefSpace=null}canRender(e){let t=this._xrRefSpace;return t?!!e.getViewerPose(t):!1}getEyeParams(e){let t=e.session,n=e.getViewerPose(this._xrRefSpace);if(!n)return null;let r=t.renderState.baseLayer;return r?n.views.map(e=>({viewport:r.getViewport(e),vMatrix:e.transform.inverse.matrix,pMatrix:e.projectionMatrix})):null}_setSession(e,t){this._xrSession=e,this._xrRefSpace=t,e.addEventListener(I.XR_END,this._onSessionEnd)}},mn=class{constructor(e,t){this.element=e,this.position=t}},hn=class{constructor(e,t,{zoom:n=!1}){this._containerEl=Pt(`.${z.HOTSPOT_CONTAINER}`,e),this._renderer=t,this._hotspots=[],this._zoom=n}refresh(){let e=this._containerEl;e&&(this._hotspots=[].slice.apply(e.querySelectorAll(`.${z.HOTSPOT}`)).map(e=>this._parseHotspot(e)))}render(e){let t=this._hotspots,n=this._renderer.width*.5,r=this._renderer.height*.5,i=e.zoom,a=this._zoom?`scale(${i})`:``;t.forEach(t=>{let i=t.position,o=w();if(ie(o,i),le(o,o,e.viewMatrix),le(o,o,e.projectionMatrix),o[2]>1||o[2]<0){t.element.classList.remove(z.HOTSPOT_VISIBLE);return}let s=Me(o[0]*n+n,-o[1]*r+r);t.element.classList.add(z.HOTSPOT_VISIBLE),t.element.style.transform=[`translate(-50%, -50%)`,`translate(${s[0]}px, ${s[1]}px)`,a].join(` `)})}_parseHotspot(e){let t=e.dataset.yaw,n=e.dataset.pitch,r=e.dataset.position;if(t||n){let r=t?parseFloat(t):0,i=n?parseFloat(n):0;return new mn(e,this._yawPitchToVec3(r,i))}else if(r){let t=r.split(` `).map(e=>parseFloat(e));if(t.length<3)throw new P(F.MESSAGES.INSUFFICIENT_ARGS(r,`hotspot attribute "data-position"`),F.CODES.INSUFFICIENT_ARGS);return new mn(e,T(t[0],t[1],t[2]))}else return new mn(e,T(0,0,-1))}_yawPitchToVec3(e,t){let n=e*H,r=t*H,i=w();return i[1]=Math.sin(r),i[2]=Math.cos(r),i[0]=i[2]*Math.sin(-n),i[2]=-i[2]*Math.cos(-n),i}},gn=class{get count(){return this.geometry.indicies.count}constructor(e,t,n){this.obj=e,this.geometry=t,this.buffers=n}},_n=class{get canvas(){return this._canvas}get maxTextureSize(){return this._maxTextureSize}get isWebGL2(){return this._isWebGL2}get supportVAO(){return this._isWebGL2||!!this._extensions.vao}get lost(){return this._contextLost}get debug(){return this._debug}constructor(e,t){this._onContextLost=()=>{this._canvas.classList.add(z.CTX_LOST),this._contextLost=!0},this._onContextRestore=()=>{this._canvas.classList.remove(z.CTX_LOST),this._contextLost=!1},this._canvas=e,this._contextLost=!1,this._debug=t,this._extensions={vao:null,loseContext:null}}init(){let e=this._canvas,{gl:t,isWebGL2:n}=this._getContext(e);this._gl=t,this._maxTextureSize=t.getParameter(t.MAX_TEXTURE_SIZE),this._isWebGL2=n,this._isWebGL2||(this._extensions.vao=t.getExtension(`OES_vertex_array_object`)),this._extensions.loseContext=t.getExtension(`WEBGL_lose_context`),e.addEventListener(I.CONTEXT_LOST,this._onContextLost),e.addEventListener(I.CONTEXT_RESTORED,this._onContextRestore)}destroy(){let e=this._gl,t=this._canvas;e&&(e.bindBuffer(e.ARRAY_BUFFER,null),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)),t.removeEventListener(I.CONTEXT_LOST,this._onContextLost),t.removeEventListener(I.CONTEXT_RESTORED,this._onContextRestore)}forceLoseContext(){let e=this._extensions.loseContext;e&&e.loseContext()}forceRestoreContext(){let e=this._extensions.loseContext;e&&e.restoreContext()}clear(){let e=this._gl;e.clear(e.COLOR_BUFFER_BIT)}resize(){let e=this._gl;e.viewport(0,0,e.drawingBufferWidth,e.drawingBufferHeight)}viewport(e,t,n,r){this._gl.viewport(e,t,n,r)}createVAO(e,t){let n=this._createNativeVAO(),r=new gn(n,e,{indicies:this._createBuffer(),position:this._createBuffer(),uv:this._createBuffer()});return n&&(this._bindNativeVAO(n),this._supplyGeometryData(r,t),this._bindNativeVAO(null),this._unbindBuffers()),r}draw(e,t){let n=this._gl;e.obj?this._bindNativeVAO(e.obj):this._supplyGeometryData(e,t),n.drawElements(n.TRIANGLES,e.count,n.UNSIGNED_SHORT,0),e.obj?this._bindNativeVAO(null):this._unbindBuffers()}releaseVAO(e){e.obj&&this._deleteNativeVAO(e.obj),this._deleteBuffer(e.buffers.indicies),this._deleteBuffer(e.buffers.position),this._deleteBuffer(e.buffers.uv)}getUniformLocations(e,t){let n=this._gl,r=Object.keys(t).reduce((t,r)=>(t[r]=n.getUniformLocation(e,r),t),{});return Object.assign(Object.assign({},this._getCommonUniformLocations(e)),r)}updateCommonUniforms(e,t,n){let r=this._gl,i=n.uniformLocations,a=e.matrix,o=b();S(o,t.viewMatrix,a),r.uniformMatrix4fv(i.uMVMatrix,!1,o),r.uniformMatrix4fv(i.uPMatrix,!1,t.projectionMatrix)}updateVRUniforms(e,t,n,r){let i=this._gl,a=e.uniformLocations;i.uniformMatrix4fv(a.uMVMatrix,!1,t),i.uniformMatrix4fv(a.uPMatrix,!1,n),a.uEye&&i.uniform1f(a.uEye,r)}updateUniforms(e){let t=this._gl,n=e.uniforms,r=e.uniformLocations;for(let e in n){let i=n[e],a=r[e];i&&i.needsUpdate&&i.update(t,a,this._isWebGL2)}}releaseShaderResources(e){let t=this._gl,n=e.uniforms;for(let e in n){let r=n[e];r&&r.needsUpdate&&r.destroy(t)}t.deleteProgram(e.program)}useProgram(e){this._gl.useProgram(e.program)}createProgram(e,t){let n=this._gl,r=n.createProgram(),i=this._compileShader(n.VERTEX_SHADER,e),a=this._compileShader(n.FRAGMENT_SHADER,t);if(n.attachShader(r,i),n.attachShader(r,a),n.bindAttribLocation(r,0,`position`),n.bindAttribLocation(r,1,`uv`),n.linkProgram(r),this._debug&&!n.getProgramParameter(r,n.LINK_STATUS)){let e=null;throw n.getShaderParameter(i,n.COMPILE_STATUS)?n.getShaderParameter(a,n.COMPILE_STATUS)||(e=n.getShaderInfoLog(a)):e=n.getShaderInfoLog(i),new P(F.MESSAGES.FAILED_LINKING_PROGRAM(n.getProgramInfoLog(r),e),F.CODES.FAILED_LINKING_PROGRAM)}return n.deleteShader(i),n.deleteShader(a),r}createWebGLTexture(e){let t=this._gl,n=t.createTexture();if(t.bindTexture(t.TEXTURE_2D,n),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,e.wrapS),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,e.wrapT),!e.isVideo()&&this._isWebGL2){let n=t;n.texStorage2D(n.TEXTURE_2D,1,n.RGBA8,e.width,e.height)}return n}createWebGLCubeTexture(e,t){let n=this._gl,r=n.createTexture();if(n.bindTexture(n.TEXTURE_CUBE_MAP,r),n.texParameteri(n.TEXTURE_CUBE_MAP,n.TEXTURE_MIN_FILTER,n.LINEAR),n.texParameteri(n.TEXTURE_CUBE_MAP,n.TEXTURE_MAG_FILTER,n.LINEAR),n.texParameteri(n.TEXTURE_CUBE_MAP,n.TEXTURE_WRAP_S,e.wrapS),n.texParameteri(n.TEXTURE_CUBE_MAP,n.TEXTURE_WRAP_T,e.wrapT),this._isWebGL2){let e=n;e.texStorage2D(e.TEXTURE_CUBE_MAP,1,e.RGBA8,t,t)}return r}makeXRCompatible(){return N(this,void 0,void 0,function*(){let e=this._gl,t=e.getContextAttributes();t&&t.xrCompatible!==!0&&(yield e.makeXRCompatible())})}bindXRLayer(e){let t=this._gl,n=new XRWebGLLayer(e,t);e.updateRenderState({baseLayer:n})}bindXRFrame(e){let t=this._gl,n=e.session.renderState.baseLayer;t.bindFramebuffer(t.FRAMEBUFFER,n.framebuffer)}useDefaultFrameBuffer(){let e=this._gl;e.bindFramebuffer(e.FRAMEBUFFER,null)}_createBuffer(){return this._gl.createBuffer()}_deleteBuffer(e){return this._gl.deleteBuffer(e)}_createNativeVAO(){let e=this._gl;return this._isWebGL2?e.createVertexArray():this._extensions.vao?.createVertexArrayOES()||null}_bindNativeVAO(e){let t=this._gl;this._isWebGL2?t.bindVertexArray(e):this._extensions.vao?.bindVertexArrayOES(e)}_deleteNativeVAO(e){let t=this._gl;this._isWebGL2?t.deleteVertexArray(e):this._extensions.vao?.deleteVertexArrayOES(e)}_supplyGeometryData(e,t){let n=e.geometry;this._supplyIndiciesData(n.indicies,e.buffers.indicies),this._supplyAttributeData(n.vertices,t.program,`position`,e.buffers.position),this._supplyAttributeData(n.uvs,t.program,`uv`,e.buffers.uv)}_unbindBuffers(){let e=this._gl;e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null),e.bindBuffer(e.ARRAY_BUFFER,null)}_supplyIndiciesData(e,t){let n=this._gl;n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,t),n.bufferData(n.ELEMENT_ARRAY_BUFFER,e.data,n.STATIC_DRAW)}_supplyAttributeData(e,t,n,r){let i=this._gl,a=i.getAttribLocation(t,n);a<0||(i.bindBuffer(i.ARRAY_BUFFER,r),i.bufferData(i.ARRAY_BUFFER,e.data,i.STATIC_DRAW),i.vertexAttribPointer(a,e.itemSize,i.FLOAT,!1,0,0),i.enableVertexAttribArray(a))}_compileShader(e,t){let n=this._gl,r=n.createShader(e);return n.shaderSource(r,t),n.compileShader(r),r}_getCommonUniformLocations(e){let t=this._gl;return{uMVMatrix:t.getUniformLocation(e,`uMVMatrix`),uPMatrix:t.getUniformLocation(e,`uPMatrix`)}}_getContext(e){let t=[`webgl2`,`webgl`,`experimental-webgl`,`webkit-3d`,`moz-webgl`],n=null,r=!1,i={preserveDrawingBuffer:!1,antialias:!1},a=e=>e.statusMessage;e.addEventListener(I.CONTEXT_CREATE_ERROR,a);for(let a of t){try{n=e.getContext(a,i),r=a===`webgl2`}catch{}if(n)break}if(e.removeEventListener(I.CONTEXT_CREATE_ERROR,a),!n)throw new P(F.MESSAGES.WEBGL_NOT_SUPPORTED,F.CODES.WEBGL_NOT_SUPPORTED);return{gl:n,isWebGL2:r}}},vn=class{get canvas(){return this._canvas}get width(){return this._elementSize.x}get height(){return this._elementSize.y}get pixelRatio(){return this._pixelRatio}get aspect(){return this._elementSize.x/this._elementSize.y}constructor(e,t){this._canvas=e,this._elementSize={x:0,y:0},this._pixelRatio=1,this.ctx=new _n(e,t)}destroy(){let e=this._canvas;this.ctx.destroy(),e.width=1,e.height=1}resize(){let e=this._canvas,t=this._elementSize,n=window.devicePixelRatio;t.x=e.clientWidth,t.y=e.clientHeight,e.width=t.x*n,e.height=t.y*n,this._pixelRatio=n,this.ctx.resize()}render(e,t){let n=this.ctx;n.lost||(n.clear(),n.useProgram(e.program),n.updateCommonUniforms(e,t,e.program),e.update({camera:t}),n.updateUniforms(e.program),n.draw(e.vao,e.program))}renderVR(e,t,n){let r=this.ctx,i=t.getEyeParams(n);!i||!e||(r.bindXRFrame(n),r.useProgram(e.program),r.updateUniforms(e.program),i.forEach((t,n)=>{let i=t.viewport,a=S(b(),t.vMatrix,e.matrix);r.viewport(i.x,i.y,i.width,i.height),r.updateVRUniforms(e.program,a,t.pMatrix,n),r.draw(e.vao,e.program)}))}},yn=class extends g{get rootEl(){return this._rootEl}get renderer(){return this._renderer}get camera(){return this._camera}get control(){return this._control}get vr(){return this._vr}get hotspot(){return this._hotspot}get plugins(){return this._plugins}get projection(){return this._projection}set projection(e){this._initialized&&e?this.load(e):this._projection=e}get mesh(){return this._mesh}get initialized(){return this._initialized}get autoplay(){return this._autoplay}get autoInit(){return this._autoInit}get autoResize(){return this._autoResize}get canvasSelector(){return this._canvasSelector}get useResizeObserver(){return this._useResizeObserver}get tabIndex(){return this._tabIndex}set tabIndex(e){let t=this._renderer.canvas;this._tabIndex=e,e==null?t.removeAttribute(`tabindex`):t.tabIndex=e}get maxDeltaTime(){return this._animator.maxDeltaTime}set maxDeltaTime(e){this._animator.maxDeltaTime=e}get debug(){return this._debug}set debug(e){this._debug=e}get initialYaw(){return this._camera.initialYaw}set initialYaw(e){this._camera.initialYaw=e}get initialPitch(){return this._camera.initialPitch}set initialPitch(e){this._camera.initialPitch=e}get initialZoom(){return this._camera.initialZoom}set initialZoom(e){this._camera.initialZoom=e}get yawRange(){return this._camera.yawRange}set yawRange(e){this._camera.yawRange=e,this._projection&&this._projection.updateCamera(this._camera)}get pitchRange(){return this._camera.pitchRange}set pitchRange(e){this._camera.pitchRange=e,this._projection&&this._projection.updateCamera(this._camera)}get zoomRange(){return this._camera.zoomRange}set zoomRange(e){this._camera.zoomRange=e,this._projection&&this._projection.updateCamera(this._camera)}get fov(){return this._camera.fov}set fov(e){let t=this._camera,n=this._control;t.fov=e,t.updateMatrix(),n.sync()}get rotate(){return this._control.rotate}get zoom(){return this._control.zoom}get gyro(){return this._control.gyro}get useGrabCursor(){return this._control.useGrabCursor}set useGrabCursor(e){this._control.useGrabCursor=e}get disableContextMenu(){return this._control.disableContextMenu}set disableContextMenu(e){this._control.disableContextMenu=e}get scrollable(){return this._control.scrollable}set scrollable(e){this._control.scrollable=e}get wheelScrollable(){return this._control.wheelScrollable}set wheelScrollable(e){this._control.wheelScrollable=e}constructor(e,{projection:t=null,initialYaw:n=0,initialPitch:r=0,initialZoom:i=1,yawRange:a=null,pitchRange:o=null,zoomRange:s=null,fov:c=90,useGrabCursor:l=!0,disableContextMenu:u=!1,rotate:d=!0,zoom:f=!0,gyro:p=!1,scrollable:m=!0,wheelScrollable:h=!1,autoplay:g=!1,hotspot:_={},autoInit:v=!0,autoResize:y=!0,canvasSelector:b=`canvas`,useResizeObserver:x=!0,on:S={},plugins:C=[],maxDeltaTime:ee=1/30,tabIndex:te=0,debug:ne=!1}={}){super(),this.renderFrame=e=>{let t=this._camera,n=this._renderer,r=this._control,i=this._hotspot,a=this._autoplay,o=this._mesh;o&&(this._emit(B.BEFORE_RENDER),a.playing&&(a.update(e),r.sync()),t.animation?t.animation.update(e):r.update(e),n.render(o,t),i.render(t),t.changed&&this._emit(B.VIEW_CHANGE,{yaw:t.yaw,pitch:t.pitch,zoom:t.zoom,quaternion:[t.quaternion[0],t.quaternion[1],t.quaternion[2],t.quaternion[3]]}),t.onFrameRender(),this._emit(B.RENDER))},this._renderFrameOnDemand=e=>{let t=this._camera,n=this._control,r=this._autoplay,i=this._mesh?.getTexture();!this._initialized||!i||!t.animation&&!n.animating&&!r.playing&&!i.isVideo()||this.renderFrame(e)},this._renderVRFrame=(e,t)=>{let n=this._vr,r=this._mesh,i=this._renderer;r&&(this._emit(B.BEFORE_RENDER),i.renderVR(r,n,t),this._emit(B.RENDER))},this._rootEl=Ft(e),this._plugins=C,this._initialized=!1,this._autoInit=v,this._autoResize=y,this._canvasSelector=b,this._useResizeObserver=x,this._tabIndex=te,this._debug=ne;let w=It(this._rootEl,b);this._renderer=new vn(w,ne),this._camera=new qt({initialYaw:n,initialPitch:r,initialZoom:i,fov:c,yawRange:a,pitchRange:o,zoomRange:s}),this._control=new rn(w,this._camera,{useGrabCursor:l,scrollable:m,wheelScrollable:h,disableContextMenu:u,rotate:d,zoom:f,gyro:p}),this._animator=new un(ee),this._autoplay=new fn(this,w,g),this._projection=t,this._mesh=null,this._autoResizer=new dn(x,()=>this.resize()),this._vr=new pn(this._renderer.ctx),this._hotspot=new hn(this._rootEl,this._renderer,_),this._addEventHandlers(S),t&&v&&this.init()}destroy(){this._camera.destroy(),this._animator.stop(),this._renderer.destroy(),this._control.destroy(),this._autoResizer.disable(),this._mesh&&(this._mesh.destroy(this._renderer.ctx),this._mesh=null),this._plugins.forEach(e=>e.destroy(this)),this._initialized=!1}init(){return N(this,void 0,void 0,function*(){if(!this._projection)throw new P(F.MESSAGES.PROVIDE_PROJECTION_FIRST,F.CODES.PROVIDE_PROJECTION_FIRST);let e=this._renderer,t=this._camera,n=this._control,r=this._animator,i=this._hotspot,a=this._projection,o=e.canvas;this._bindComponentEvents(),e.ctx.init(),this._resizeComponents(),t.updateMatrix(),this._autoResize&&this._autoResizer.enable(o),this._autoplay.enableBlocked||this._autoplay.enable(),this._plugins.forEach(e=>{e.init(this)});let s=yield this._loadTexture(a);this._applyProjection(a,s),i.refresh(),r.start(this._renderFrameOnDemand),yield n.enable(),this._tabIndex!=null&&!o.hasAttribute(`tabIndex`)&&(o.tabIndex=this._tabIndex),this._initialized=!0,this.renderFrame(0),this._emit(B.READY)})}load(e){return N(this,void 0,void 0,function*(){if(!e)return!1;if(this._initialized){let t=yield this._loadTexture(e);this._applyProjection(e,t),this.renderFrame(0)}else this._projection=e,this.init();return!0})}resize(){if(!this._initialized)return;this._resizeComponents(),this.renderFrame(0);let{width:e,height:t}=this._renderer;this._emit(B.RESIZE,{width:e,height:t})}addPlugins(...e){this._initialized&&e.forEach(e=>{e.init(this)}),this._plugins.push(...e)}removePlugins(...e){e.forEach(e=>{let t=this._plugins.indexOf(e);t<0||(e.destroy(this),this._plugins.splice(t,1))})}_emit(e,...t){let n=t?t[0]:{};this.trigger(e,Object.assign({type:e,target:this},n))}_applyProjection(e,t){let n=this._camera,r=this._control,i=this._renderer,a=this._mesh;a&&a.destroy(i.ctx);let o=e.createMesh(i.ctx,t);e.updateCamera(n),e.updateControl(r),this._mesh=o,this._emit(B.PROJECTION_CHANGE,{projection:e})}_loadTexture(e){return N(this,void 0,void 0,function*(){let t=new ln,{src:n,video:r}=e;this._emit(B.LOAD_START,{src:n,video:r});let i=yield t.load(n,r);return this._emit(B.LOAD,{src:n,video:r}),i})}_resizeComponents(){let e=this._renderer,t=this._camera,n=this._control;e.resize(),t.resize(e.width,e.height),n.resize(e.width,e.height)}_addEventHandlers(e){Object.keys(e).forEach(t=>{this.on(t,e[t])})}_bindComponentEvents(){let e=this._rootEl,t=this._control,n=this._animator,r=this._renderer,i=this._vr;[V.STATIC_CLICK,V.INPUT_START,V.INPUT_END].forEach(e=>{t.rotate.on(e,t=>{this._emit(e,t)}),t.zoom.on(e,t=>{this._emit(e,t)})}),i.on(B.VR_START,t=>{e.classList.add(z.IN_VR),n.changeContext(t.session),n.start(this._renderVRFrame),this._emit(B.VR_START)}),i.on(B.VR_END,()=>{e.classList.remove(z.IN_VR),r.ctx.useDefaultFrameBuffer(),n.changeContext(window),n.start(this._renderFrameOnDemand),this.resize(),this._emit(B.VR_END)})}};yn.VERSION=`4.0.0-beta.7`;var bn=class extends g{constructor(){super(),this.matrix=b(),this.rotation=O(),this.position=T(0,0,0),this.scale=T(1,1,1)}updateMatrix(){C(this.matrix,this.rotation,this.position,this.scale)}update(e){this.trigger(Ct.UPDATE,e)}},xn=class e{constructor({className:e={}}={}){this._startLoading=({target:e})=>{e.rootEl.appendChild(this._container),e.initialized?e.once(B.LOAD,this._detachElements):e.once(B.READY,this._detachElements)},this._detachElements=({target:e})=>{let t=this._container;t&&t.parentElement===e.rootEl&&e.rootEl.removeChild(t)},this.className=e,this._container=this._createElements()}init(e){e.on(B.LOAD_START,this._startLoading)}destroy(e){e.off(B.LOAD_START,this._startLoading),this._detachElements({target:e})}_createElements(){let t=Object.assign(Object.assign({},this.className),e.DEFAULT_CLASS),n=q(t.CONTAINER),r=q(t.RING);return n.appendChild(r),n}};xn.DEFAULT_CLASS={CONTAINER:`view360-spinner`,RING:`view360-spinner-ring`};var Q=class{constructor(e){this.position=e.position,this.order=e.order}},Sn={CONTROLS_ROOT:`view360-controls`,CONTROLS_BG:`view360-controls-background`,CONTROLS_MAIN:`view360-controls-main`,CONTROLS_TOP:`view360-controls-top`,CONTROLS_BOTTOM:`view360-controls-bottom`,CONTROLS_MID:`view360-controls-mid`,CONTROLS_LEFT:`view360-controls-left`,CONTROLS_RIGHT:`view360-controls-right`,CONTROLS_FLOAT_LEFT:`view360-controls-float-left`,CONTROLS_FLOAT_RIGHT:`view360-controls-float-right`,CONTROLS_BUTTON:`view360-controls-button`,PROGRESS_ROOT:`view360-controls-progress`,VOLUME_ROOT:`view360-controls-volume`,RANGE_ROOT:`view360-range`,RANGE_TRACK:`view360-range-track`,RANGE_THUMB:`view360-range-thumb`,RANGE_FILLER:`view360-range-filler`,PLAY_BUTTON:`view360-controls-play`,PAUSE_BUTTON:`view360-controls-pause`,UNMUTED_BUTTON:`view360-controls-unmuted`,MUTED_BUTTON:`view360-controls-muted`,FULLSCREEN_BUTTON:`view360-controls-fullscreen`,FULLSCREEN_EXIT_BUTTON:`view360-controls-fullscreen-exit`,VR_BUTTON:`view360-controls-vr`,GYRO_ENABLED:`view360-controls-gyro-enabled`,GYRO_DISABLED:`view360-controls-gyro-disabled`,VIDEO_TIME_DISPLAY:`view360-controls-time`,PIEVIEW_ROOT:`view360-controls-pie`,FIXED:`view360-controls-fixed`,UNAVAILABLE:`view360-controls-unavailable`,HIDDEN:`view360-controls-hidden`},$={TOP_LEFT:`top-left`,TOP_RIGHT:`top-right`,MAIN_TOP:`main-top`,MAIN_BOTTOM:`main-bottom`,MAIN_LEFT:`main-left`,MAIN_RIGHT:`main-right`},Cn=class extends g{constructor(){super(),this._onHold=({srcEvent:e,isTouch:t})=>{let n=this._bbox;if(!n)return;let r=t?e.touches[0].pageX:e.pageX,i=n.x+(window.scrollX??window.pageXOffset),a=J(r,i,i+n.width),o=(a-i)/n.width;this._motion.reset(a),this.thumbEl.classList.add(this._fixedClass),this.trigger(V.INPUT_START,o)},this._onChange=({delta:e})=>{let t=this._motion,n=this._bbox;if(!n)return;t.setNewEndByDelta(e.x),t.update(1);let r=n.x+(window.scrollX??window.pageXOffset),i=(J(t.val,r,r+n.width)-r)/n.width;this.trigger(V.CHANGE,i)},this._onRelease=()=>{this._bbox&&(this.thumbEl.classList.remove(this._fixedClass),this.trigger(V.INPUT_END))};let e=document.createElement(L),t=document.createElement(L),n=document.createElement(L),r=document.createElement(L);e.draggable=!1,t.appendChild(r),t.appendChild(n),e.appendChild(t),this.rootEl=e,this.trackEl=t,this.thumbEl=n,this.fillerEl=r,this._mouseInput=new Jt,this._touchInput=new Yt,this._motion=new Gt({duration:1,range:wt,easing:e=>e}),this._bbox={x:0,y:0,width:0,height:0,left:0,right:0,bottom:0,top:0},this._fixedClass=Sn.FIXED}init(e){let t=this._mouseInput,n=this._touchInput;this.rootEl.classList.add(e.RANGE_ROOT),this.trackEl.classList.add(e.RANGE_TRACK),this.thumbEl.classList.add(e.RANGE_THUMB),this.fillerEl.classList.add(e.RANGE_FILLER),this._fixedClass=e.FIXED,t.on(V.INPUT_START,this._onHold),n.on(V.INPUT_START,this._onHold),t.on(V.INPUT_END,this._onRelease),n.on(V.INPUT_END,this._onRelease),t.on(V.CHANGE,this._onChange),n.on(V.CHANGE,this._onChange),t.enable(this.rootEl),n.enable(this.rootEl),this.resize()}destroy(){let e=this._mouseInput,t=this._touchInput;this.rootEl.className=``,this.trackEl.className=``,this.thumbEl.className=``,this.fillerEl.className=``,e.off(),t.off(),e.disable(),t.disable()}resize(){this._bbox=this.trackEl.getBoundingClientRect()}updateStyle(e){let t=this._bbox.width,n=J(e,0,1);this.fillerEl.style.width=`${n*100}%`,this.thumbEl.style.transform=`translateX(${n*t}px)`}},wn=class extends Q{get element(){return this._rangeControl.rootEl}constructor({position:e=$.MAIN_TOP,order:t=9999}={}){super({position:e,order:t}),this._onResize=()=>{this._rangeControl.resize()},this._onTimeUpdate=()=>{let e=this._video;e&&(this._currentTime=e.source.currentTime,this._rangeControl.updateStyle(this._currentTime/this._duration))},this._onDurationChange=()=>{let e=this._video;e&&(this._duration=e.source.duration,this._rangeControl.updateStyle(this._currentTime/this._duration))},this._onHold=e=>{let t=this._video,n=this._controlBar;if(!t||!n)return;let r=t.isPaused();t.source.pause();let i=t.source.duration*e;t.source.currentTime=i,t.source.dispatchEvent(new CustomEvent(K,{detail:{time:i}})),n.rootEl.classList.add(n.className.FIXED),this._wasPaused=!this._playPromise&&r},this._onControl=e=>{let t=this._video;if(!t)return;let n=t.source.duration*e;t.source.currentTime=n,t.source.dispatchEvent(new CustomEvent(K,{detail:{time:n}}))},this._onRelease=()=>{let e=this._video,t=this._controlBar;e&&t&&!this._wasPaused&&!this._playPromise&&(this._playPromise=e.source.play().catch(()=>void 0),this._playPromise.then(()=>{this._playPromise=null}),t.rootEl.classList.remove(t.className.FIXED)),this._wasPaused=!1},this.position=e,this.order=t,this._controlBar=null,this._rangeControl=new Cn,this._video=null,this._wasPaused=!1,this._currentTime=0,this._duration=0,this._playPromise=null}init(e,t){let n=e.mesh?.getTexture(),r=this.element,i=this._rangeControl,a=t.className.UNAVAILABLE;if(!n||!n.isVideo()){r.classList.add(a);return}r.classList.remove(a),r.classList.add(t.className.PROGRESS_ROOT),e.on(B.RESIZE,this._onResize),n.source.addEventListener(I.VIDEO_TIME_UPDATE,this._onTimeUpdate),n.source.addEventListener(I.VIDEO_DURATION_CHANGE,this._onDurationChange),n.source.addEventListener(K,this._onTimeUpdate),i.init(t.className),i.on(V.INPUT_START,this._onHold),i.on(V.CHANGE,this._onControl),i.on(V.INPUT_END,this._onRelease),this._video=n,this._currentTime=n.source.currentTime,this._duration=n.source.duration,this._controlBar=t,i.updateStyle(this._currentTime/this._duration)}destroy(e){let t=this._video;e.off(B.RESIZE,this._onResize),t&&(t.source.removeEventListener(I.VIDEO_TIME_UPDATE,this._onTimeUpdate),t.source.removeEventListener(I.VIDEO_DURATION_CHANGE,this._onDurationChange),t.source.removeEventListener(K,this._onTimeUpdate)),this._rangeControl.destroy(),this._video=null,this._playPromise=null}},Tn=class extends Q{constructor({position:e=$.MAIN_LEFT,order:t=9999}={}){super({position:e,order:t}),this._onClick=()=>{let e=this._video;e&&(this._paused?e.source.play():e.source.pause())},this._onPlay=()=>{if(!this._controlBar)return;let e=this.element,t=this._controlBar.className;e.classList.add(t.PAUSE_BUTTON),e.classList.remove(t.PLAY_BUTTON),e.title=`Pause Video`,this._paused=!1},this._onPause=()=>{if(!this._controlBar)return;let e=this.element,t=this._controlBar.className;e.classList.add(t.PLAY_BUTTON),e.classList.remove(t.PAUSE_BUTTON),e.title=`Play Video`,this._paused=!0},this.element=document.createElement(ut),this._video=null,this._paused=!0,this._controlBar=null}init(e,t){let n=this.element,r=e.mesh?.getTexture(),i=t.className,a=i.UNAVAILABLE;if(!r||!r.isVideo()){n.classList.add(a);return}n.classList.add(i.CONTROLS_BUTTON),n.classList.remove(a);let o=r.isPaused();this._video=r,this._paused=o,this._controlBar=t,o?this._onPause():this._onPlay(),n.addEventListener(I.CLICK,this._onClick),r.source.addEventListener(I.VIDEO_PLAY,this._onPlay),r.source.addEventListener(I.VIDEO_PAUSE,this._onPause)}destroy(){let e=this._video,t=this.element;e&&(t.className=``,t.removeEventListener(I.CLICK,this._onClick),e.source.removeEventListener(I.VIDEO_PLAY,this._onPlay),e.source.removeEventListener(I.VIDEO_PAUSE,this._onPause),this._video=null,this._paused=!0,this._controlBar=null)}},En=class extends Q{get element(){return this._rootEl}constructor({position:e=$.MAIN_RIGHT,order:t=9999}={}){super({position:e,order:t}),this._onResize=()=>{this._rangeControl.resize(),this._updateDisplay()},this._onClick=()=>{let e=this._video;!e||this._rootEl.disabled||(e.source.muted=!e.source.muted)},this._onVolumeChange=()=>{let e=this._buttonEl,t=this._video,n=this._controlBar;if(!t||!n)return;let r=n.className;t.source.muted||t.source.volume===0?(e.classList.add(r.MUTED_BUTTON),e.classList.remove(r.UNMUTED_BUTTON)):(e.classList.add(r.UNMUTED_BUTTON),e.classList.remove(r.MUTED_BUTTON)),this._updateDisplay()},this._onHold=e=>{let t=this._video,n=this._controlBar;if(!t||!n)return;let r=n.className;t.source.volume=e,this._rootEl.classList.add(r.FIXED),n.containerEl.classList.add(r.FIXED),this._updateDisplay()},this._onChange=e=>{let t=this._video;t&&(t.source.volume=e,e>0?t.source.muted=!1:t.source.muted=!0,this._updateDisplay())},this._onRelease=()=>{let e=this._controlBar;if(!e)return;let t=e.className;this._rootEl.classList.remove(t.FIXED),e.containerEl.classList.remove(t.FIXED)},this._updateDisplay=()=>{let e=this._video,t=this._rootEl;if(!e)return;if(!e.hasAudio()){t.disabled=!0;return}t.disabled=!1;let n=e.source.muted?0:e.source.volume;this._rangeControl.updateStyle(n)},this._controlBar=null,this._rangeControl=new Cn,this._createElements(),this._video=null}init(e,t){let n=e.mesh?.getTexture(),r=this._rootEl,i=this._buttonEl,a=this._rangeControl,o=t.className,s=o.UNAVAILABLE;if(!n||!n.isVideo()){r.classList.add(s);return}r.classList.remove(s),r.classList.add(o.CONTROLS_BUTTON),r.classList.add(o.VOLUME_ROOT),i.classList.add(o.CONTROLS_BUTTON),n.source.muted?i.classList.add(o.MUTED_BUTTON):i.classList.add(o.UNMUTED_BUTTON),e.on(B.RESIZE,this._onResize),r.addEventListener(I.TRANSITION_END,this._onResize),i.addEventListener(I.CLICK,this._onClick),n.source.addEventListener(I.VIDEO_VOLUME_CHANGE,this._onVolumeChange),n.source.addEventListener(I.VIDEO_LOADED_DATA,this._updateDisplay),n.source.addEventListener(I.VIDEO_CAN_PLAYTHROUGH,this._updateDisplay),a.init(o),a.on(V.INPUT_START,this._onHold),a.on(V.CHANGE,this._onChange),a.on(V.INPUT_END,this._onRelease),this._controlBar=t,this._video=n,this._updateDisplay()}destroy(e){let t=this._video,n=this._buttonEl,r=this._rootEl;r.className=``,n.className=``,e.off(B.RESIZE,this._onResize),r.removeEventListener(I.TRANSITION_END,this._onResize),n.removeEventListener(I.CLICK,this._onClick),t&&(t.source.removeEventListener(I.VIDEO_VOLUME_CHANGE,this._onVolumeChange),t.source.removeEventListener(I.VIDEO_LOADED_DATA,this._updateDisplay),t.source.removeEventListener(I.VIDEO_CAN_PLAYTHROUGH,this._updateDisplay)),this._controlBar=null,this._rangeControl.destroy(),this._video=null}_createElements(){let e=document.createElement(ut),t=document.createElement(L);e.appendChild(this._rangeControl.rootEl),e.appendChild(t),e.title=`Toggle Mute`,this._rootEl=e,this._buttonEl=t}},Dn=class extends Q{constructor({position:e=$.MAIN_RIGHT,order:t=9999}={}){super({position:e,order:t}),this._onClick=()=>{let e=this._targetEl;e&&(Bt()?this._exitFullscreen():this._requestFullscreen(e))},this._onFullscreenChange=()=>{let e=this.element,t=this._controlBar;if(!t)return;let n=t.className;Bt()?(e.classList.add(n.FULLSCREEN_EXIT_BUTTON),e.classList.remove(n.FULLSCREEN_BUTTON)):(e.classList.add(n.FULLSCREEN_BUTTON),e.classList.remove(n.FULLSCREEN_EXIT_BUTTON))},this.element=document.createElement(ut),this.element.title=`Toggle Fullscreen`,this._controlBar=null,this._targetEl=null}init(e,t){let n=this.element,r=t.className;if(!this._fullscreenAvailable()){n.classList.add(r.UNAVAILABLE);return}n.classList.add(r.CONTROLS_BUTTON),n.classList.remove(r.UNAVAILABLE),n.addEventListener(I.CLICK,this._onClick),this._addFullscreenHandlers(),Bt()?n.classList.add(r.FULLSCREEN_EXIT_BUTTON):n.classList.add(r.FULLSCREEN_BUTTON),this._controlBar=t,this._targetEl=e.rootEl}destroy(){let e=this.element;e.className=``,e.removeEventListener(I.CLICK,this._onClick),this._removeFullscreenHandlers(),this._controlBar=null,this._targetEl=null}_fullscreenAvailable(){return _t.some(e=>!!document[e])}_requestFullscreen(e){for(let t of _t){let n=e[t];if(n){n.call(e);return}}}_exitFullscreen(){for(let e of yt){let t=document[e];if(t){t.call(document);return}}}_addFullscreenHandlers(){bt.forEach(e=>{document.addEventListener(e,this._onFullscreenChange)})}_removeFullscreenHandlers(){bt.forEach(e=>{document.removeEventListener(e,this._onFullscreenChange)})}},On=class extends Q{constructor({position:e=$.MAIN_LEFT,order:t=9999}={}){super({position:e,order:t}),this._onTimeUpdate=()=>{let e=this._video;e&&(this._currentTime=e.source.currentTime,this._updateDisplay())},this._onDurationChange=()=>{let e=this._video;e&&(this._duration=e.source.duration,this._updateDisplay())},this._onCustomTimeChange=e=>{this._currentTime=e.detail.time,this._updateDisplay()},this.element=document.createElement(L),this._video=null,this._currentTime=0,this._duration=0}init(e,t){let n=e.mesh?.getTexture(),r=this.element,i=t.className;if(!n||!n.isVideo()){r.classList.add(i.UNAVAILABLE);return}r.classList.add(i.VIDEO_TIME_DISPLAY),r.classList.remove(i.UNAVAILABLE),n.source.addEventListener(I.VIDEO_TIME_UPDATE,this._onTimeUpdate),n.source.addEventListener(I.VIDEO_DURATION_CHANGE,this._onDurationChange),n.source.addEventListener(K,this._onCustomTimeChange),this._video=n,this._currentTime=n.source.currentTime,this._duration=n.source.duration,this._updateDisplay()}destroy(){let e=this._video;e&&(this.element.className=``,e.source.removeEventListener(I.VIDEO_TIME_UPDATE,this._onTimeUpdate),e.source.removeEventListener(I.VIDEO_DURATION_CHANGE,this._onDurationChange),e.source.removeEventListener(K,this._onCustomTimeChange),this._video=null)}_updateDisplay(){let e=this._currentTime,t=Math.floor(e/60),n=Math.floor(e-t*60),r=n<10?`0${n}`:n,i=this._duration,a=Math.floor(i/60),o=Math.floor(i-a*60),s=o<10?`0${o}`:o;this.element.innerText=`${t}:${r} / ${a}:${s}`}},kn=class extends Q{constructor({resetCamera:e=!0,position:t=$.TOP_RIGHT,order:n=9999}={}){super({position:t,order:n}),this._onClick=()=>{let e=this._viewer,t=this.resetCamera;if(!e||!t)return;let{yaw:n=e.initialYaw,pitch:r=e.initialPitch,zoom:i=e.initialZoom,duration:a=500}=X(t);e.camera.animateTo({yaw:n,pitch:r,zoom:i,duration:a})},this._updatePie=({target:e})=>{let t=this._piePathEl,n=this._rangeCircleEl,r=e.camera,i=r.getHorizontalFov(),a=r.getYawRange(r.zoom),o=i*.5,s=24*Math.PI,c=s*i/360,l=s*(r.yaw+o+90)/360;if(t.setAttribute(`stroke-dasharray`,`${c} ${s-c}`),t.setAttribute(`stroke-dashoffset`,`${l}`),isFinite(a.min)&&isFinite(a.max)){let e=45*Math.PI,t=(Y(a.min,-180,180)-o)/360,r=(Y(a.max,-180,180)+o)/360,i=e*Math.abs(r-t),s=-e*(t-.25);n.setAttribute(`stroke-dasharray`,`${i} ${e-i}`),n.setAttribute(`stroke-dashoffset`,`${s}`)}else n.setAttribute(`stroke-dasharray`,``),n.setAttribute(`stroke-dashoffset`,``)},this.element=document.createElement(L),this.element.title=`Reset view`,this.resetCamera=e,this._createPieElements(),this._viewer=null}init(e,t){let n=this.element;e.initialized?this._updatePie({target:e}):e.once(B.READY,this._updatePie);let r=t.className.PIEVIEW_ROOT;n.classList.add(r),this.resetCamera&&n.addEventListener(I.CLICK,this._onClick),e.on(B.VIEW_CHANGE,this._updatePie),this._viewer=e}destroy(e){let t=this.element;t.removeEventListener(I.CLICK,this._onClick),t.className=``,e.off(B.READY,this._updatePie),e.off(B.VIEW_CHANGE,this._updatePie),this._viewer=null}_createPieElements(){let e=this.element,t=document.createElementNS(Ot,`svg`);t.setAttribute(`viewBox`,`0 0 48 48`),t.setAttribute(`width`,`100%`),t.setAttribute(`height`,`100%`);let n=document.createElementNS(Ot,`circle`);n.setAttribute(`stroke`,`currentColor`),n.setAttribute(`fill`,`transparent`),n.setAttribute(`cx`,`24`),n.setAttribute(`cy`,`24`),n.setAttribute(`r`,`12`),n.setAttribute(`stroke-width`,`24`),t.appendChild(n);let r=document.createElementNS(Ot,`circle`);r.setAttribute(`stroke`,`currentColor`),r.setAttribute(`fill`,`transparent`),r.setAttribute(`cx`,`24`),r.setAttribute(`cy`,`24`),r.setAttribute(`r`,`22.5`),r.setAttribute(`stroke-width`,`3`),t.appendChild(r),e.appendChild(t),this._piePathEl=n,this._rangeCircleEl=r}},An=class extends Q{constructor({position:e=$.MAIN_RIGHT,order:t=9999}={}){super({position:e,order:t}),this._onClick=()=>{let e=this._viewer;e&&e.vr.enter()},this.element=document.createElement(ut),this.element.title=`Enter VR`,this._viewer=null}init(e,t){let n=this.element,r=t.className;n.classList.add(r.UNAVAILABLE),n.classList.add(r.VR_BUTTON),n.classList.add(r.CONTROLS_BUTTON),e.vr.isAvailable().then(e=>{e&&n.classList.remove(r.UNAVAILABLE)}),n.addEventListener(I.CLICK,this._onClick),this._viewer=e}destroy(){let e=this.element;e.className=``,e.removeEventListener(I.CLICK,this._onClick),this._viewer=null}},jn=class extends Q{constructor({position:e=$.MAIN_RIGHT,order:t=9999}={}){super({position:e,order:t}),this._onClick=()=>{let e=this._viewer,t=this._controlBar;if(!e||!t)return;let n=e.control.gyro;n.enabled?n.disable():nn.requestSensorPermission().then(e=>{e?n.enable():this.element.classList.add(t.className.UNAVAILABLE)})},this._updateStyle=()=>{let e=this.element,t=this._viewer,n=this._controlBar;if(!t||!n)return;let r=t.control.gyro,i=n.className;r.enabled?(e.classList.add(i.GYRO_ENABLED),e.classList.remove(i.GYRO_DISABLED)):(e.classList.add(i.GYRO_DISABLED),e.classList.remove(i.GYRO_ENABLED))},this.element=document.createElement(L),this.element.title=`Toggle gyroscope control`}init(e,t){let n=this.element,r=t.className;n.addEventListener(I.CLICK,this._onClick),n.classList.add(r.CONTROLS_BUTTON),n.classList.add(r.UNAVAILABLE);let i=()=>{n.classList.remove(r.UNAVAILABLE),e.control.gyro.on(V.ENABLE,this._updateStyle),e.control.gyro.on(V.DISABLE,this._updateStyle)};Vt()?i():nn.isAvailable().then(e=>{e&&i()}),this._controlBar=t,this._viewer=e,this._updateStyle()}destroy(e){let t=this.element;e.control.gyro.off(V.ENABLE,this._updateStyle),e.control.gyro.off(V.DISABLE,this._updateStyle),t.removeEventListener(I.CLICK,this._onClick),t.className=``,this._controlBar=null,this._viewer=null}},Mn=class{get enabled(){return!!this._targetEl}get hidden(){return this._controlBar.containerEl.classList.contains(this._hiddenClass)}get _hiddenClass(){return this._controlBar.className.HIDDEN}get _fixedClass(){return this._controlBar.className.FIXED}constructor(e,{initialDelay:t=3e3,delay:n=0,idleDelay:r=3e3}){this._onMouseEnter=()=>{this._isCursorInside=!0,this.show()},this._onMouseLeave=()=>{this._isCursorInside=!1,this._hideAfterDelay()},this._onMouseMove=()=>{this._isFullscreen&&this.showTemporaliy()},this._onHold=e=>{this._isGrabbing=!0,e.pointerType===`mouse`&&(this._isCursorInside=!0),window.addEventListener(I.MOUSE_UP,this._onRelease),this.show()},this._onRelease=()=>{this._isGrabbing=!1,window.removeEventListener(I.MOUSE_UP,this._onRelease),this._hideAfterDelay()},this._onVideoPlay=()=>{this._targetEl&&this._controlBar.containerEl.classList.remove(this._fixedClass)},this._onVideoPause=()=>{this._targetEl&&this._controlBar.containerEl.classList.add(this._fixedClass)},this._onFullscreenChange=()=>{this._isFullscreen=Bt(),this._isFullscreen&&this._hideAfterDelay()},this._controlBar=e,this._initialDelay=t,this._delay=n,this._idleDelay=r,this._timer=-1,this._isCursorInside=!1,this._isGrabbing=!1,this._isFullscreen=!1,this._video=null,this._targetEl=null}enable(e){this._targetEl&&this.disable(e);let t=this._initialDelay,n=e.rootEl;this._targetEl=e.rootEl,this._timer=window.setTimeout(()=>{this.hide()},t),n.addEventListener(I.MOUSE_DOWN,this._onHold),n.addEventListener(I.MOUSE_ENTER,this._onMouseEnter),n.addEventListener(I.MOUSE_MOVE,this._onMouseMove),n.addEventListener(I.MOUSE_LEAVE,this._onMouseLeave),this._addFullscreenHandlers();let r=e.mesh?.getTexture();!r||!r.isVideo()||(r.isPaused()&&this._controlBar.containerEl.classList.add(this._fixedClass),r.source.addEventListener(I.VIDEO_PLAY,this._onVideoPlay),r.source.addEventListener(I.VIDEO_PAUSE,this._onVideoPause),this._video=r)}disable(e){if(!this._targetEl)return;let t=this._controlBar,n=e.rootEl,r=this._video;n.removeEventListener(I.MOUSE_DOWN,this._onHold),window.removeEventListener(I.MOUSE_UP,this._onRelease),n.removeEventListener(I.MOUSE_ENTER,this._onMouseEnter),n.removeEventListener(I.MOUSE_MOVE,this._onMouseMove),n.removeEventListener(I.MOUSE_LEAVE,this._onMouseLeave),this._removeFullscreenHandlers(),window.clearTimeout(this._timer),t.containerEl.classList.remove(this._fixedClass),r&&(r.source.removeEventListener(I.VIDEO_PLAY,this._onVideoPlay),r.source.removeEventListener(I.VIDEO_PAUSE,this._onVideoPause)),this._isCursorInside=!1,this._isGrabbing=!1,this._video=null,this._targetEl=null}show(){this._clearHideTimer(),this._controlBar.containerEl.classList.remove(this._hiddenClass)}showTemporaliy(){this.show(),this._hideAfterDelay(this._idleDelay)}hide(){this._clearHideTimer(),this._controlBar.containerEl.classList.add(this._hiddenClass)}_clearHideTimer(){this._timer&&(window.clearTimeout(this._timer),this._timer=-1)}_hideAfterDelay(e=this._delay){this._isGrabbing||!this._isFullscreen&&this._isCursorInside||(this._clearHideTimer(),e<=0?this.hide():this._timer=window.setTimeout(()=>{this.hide()},e))}_addFullscreenHandlers(){bt.forEach(e=>{document.addEventListener(e,this._onFullscreenChange)})}_removeFullscreenHandlers(){bt.forEach(e=>{document.removeEventListener(e,this._onFullscreenChange)})}},Nn=class{constructor(){this._onKeyDown=e=>{let t=this._video;if(!t)return;e.preventDefault(),e.stopPropagation();let n=t.source,r=e.keyCode==null?ht[e.key]:pt[e.keyCode];switch(r){case`LEFT`:case`RIGHT`:return this._changeVideoTime(n,r===`RIGHT`);case`UP`:case`DOWN`:return this._changeVideoVolume(n,r===`UP`)}(e.keyCode===mt||e.key===gt)&&this._toggleVideo(t)}}enable(e,t){this._video=t,e.addEventListener(I.KEY_DOWN,this._onKeyDown,!0)}disable(e){this._video=null,e.removeEventListener(I.KEY_DOWN,this._onKeyDown,!0)}_changeVideoTime(e,t){e.currentTime+=t?5:-5,e.dispatchEvent(new CustomEvent(K,{detail:{time:e.currentTime}}))}_changeVideoVolume(e,t){let n=t?.1:-.1;e.muted?e.volume=J(n,0,1):e.volume=J(e.volume+n,0,1),e.volume>0?e.muted=!1:e.muted=!0}_toggleVideo(e){e.isPaused()?e.source.play():e.source.pause()}},Pn=class e{get rootEl(){return this._rootEl}get containerEl(){return this._containerEl}get backgroundEl(){return this._bgEl}get items(){return this._items}get customItems(){return this._customItems}constructor({autoHide:t,showBackground:n,clickToPlay:r=!0,keyboardControls:i=!0,progressBar:a=!0,playButton:o=!0,volumeButton:s=!0,fullscreenButton:c=!0,videoTime:l=!0,pieView:u=!0,vrButton:d=!0,gyroButton:f=!0,className:p={},customItems:m=[]}={}){this._onStaticClick=({target:e,isTouch:t})=>{let n=this._autoHider;if(t){if(!n.enabled)return;n.hidden?n.showTemporaliy():n.hide()}else{if(!this.clickToPlay)return;let t=e.mesh?.getTexture();if(!t||!t.isVideo())return;t.isPaused()?t.source.play():t.source.pause()}},this._onNewSrcLoad=({target:e})=>{let t=this._items;this._updateBackground(e),this._updateAutoHide(e),this._updateKeyboardHandler(e),Object.keys(t).forEach(n=>{t[n].forEach(t=>{t.destroy(e,this),t.init(e,this)})})},this.autoHide=t,this.showBackground=n,this.clickToPlay=r,this.keyboardControls=i,this.progressBar=a,this.playButton=o,this.volumeButton=s,this.fullscreenButton=c,this.videoTime=l,this.pieView=u,this.vrButton=d,this.gyroButton=f,this.className=Object.assign(Object.assign({},e.DEFAULT_CLASS),p),this._rootEl=q(p.CONTROLS_ROOT??e.DEFAULT_CLASS.CONTROLS_ROOT),this._createPositionWrappers(),this._items=Object.keys(e.POSITION).reduce((t,n)=>(t[e.POSITION[n]]=[],t),{}),this._customItems=m,this._autoHider=new Mn(this,X(t)),this._videoControl=new Nn,m.forEach(e=>{this._items[e.position].push(e)})}init(e){let t=e.rootEl,n=this._rootEl,r=this._createDefaultItems();this._updateBackground(e),this._updateAutoHide(e),this._updateKeyboardHandler(e),t.appendChild(n),this._addItem(e,r),this._addItem(e,this._customItems),e.on(B.PROJECTION_CHANGE,this._onNewSrcLoad),e.on(B.STATIC_CLICK,this._onStaticClick)}destroy(e){let t=e.rootEl,n=this._rootEl,r=this._items;n.parentElement===t&&t.removeChild(n),Object.keys(r).forEach(t=>{r[t].forEach(t=>{t.destroy(e,this)}),r[t]=[]}),this._clearItemElements(),this._autoHider.disable(e),this._videoControl.disable(t),e.off(B.PROJECTION_CHANGE,this._onNewSrcLoad),e.off(B.STATIC_CLICK,this._onStaticClick)}_addItem(e,t){for(let n of t){let t=this._items[n.position],r=this._wrapperEl[n.position],i=Rt(t,e=>e.order>n.order);if(i>=0){let e=t[i].element;t.splice(i,0,n),r.insertBefore(n.element,e)}else t.push(n),r.appendChild(n.element);n.init(e,this)}}_createPositionWrappers(){let t=Object.assign(Object.assign({},e.DEFAULT_CLASS),this.className),n=this._rootEl,r=q(t.CONTROLS_BG),i=q(t.CONTROLS_FLOAT_LEFT),a=q(t.CONTROLS_FLOAT_RIGHT);n.appendChild(i),n.appendChild(a);let o=q(t.CONTROLS_MAIN),s=q(t.CONTROLS_TOP),c=q(t.CONTROLS_BOTTOM),l=q(t.CONTROLS_MID),u=q(t.CONTROLS_LEFT),d=q(t.CONTROLS_RIGHT);l.appendChild(u),l.appendChild(d),o.appendChild(r),o.appendChild(s),o.appendChild(l),o.appendChild(c),n.appendChild(o),this._bgEl=r,this._containerEl=o,this._wrapperEl={[e.POSITION.MAIN_TOP]:s,[e.POSITION.MAIN_LEFT]:u,[e.POSITION.MAIN_RIGHT]:d,[e.POSITION.MAIN_BOTTOM]:c,[e.POSITION.TOP_LEFT]:i,[e.POSITION.TOP_RIGHT]:a}}_clearItemElements(){Object.keys(e.POSITION).map(t=>e.POSITION[t]).map(e=>this._wrapperEl[e]).forEach(e=>{for(;e.firstChild;)e.removeChild(e.firstChild)})}_updateAutoHide(e){let t=this.autoHide,n=this._autoHider;if(t!=null)t?n.enable(e):n.disable(e);else{let t=e.mesh?.getTexture();t&&t.isVideo()?n.enable(e):n.disable(e)}}_updateBackground(t){let n=this._bgEl,r=this.showBackground,i=this.className.HIDDEN??e.DEFAULT_CLASS.HIDDEN;if(r!=null)r?n.classList.remove(i):n.classList.add(i);else{let e=t.mesh?.getTexture();e&&e.isVideo()?n.classList.remove(i):n.classList.add(i)}}_updateKeyboardHandler(e){let t=e.rootEl,n=this._videoControl,r=e.mesh?.getTexture();this.keyboardControls&&r&&r.isVideo()?n.enable(t,r):n.disable(t)}_createDefaultItems(){let e=[];return this.progressBar&&e.push(new wn(X(this.progressBar))),this.playButton&&e.push(new Tn(X(this.playButton))),this.volumeButton&&e.push(new En(X(this.volumeButton))),this.gyroButton&&e.push(new jn(X(this.gyroButton))),this.vrButton&&e.push(new An(X(this.vrButton))),this.fullscreenButton&&e.push(new Dn(X(this.fullscreenButton))),this.videoTime&&e.push(new On(X(this.videoTime))),this.pieView&&e.push(new kn(X(this.pieView))),e}};Pn.DEFAULT_CLASS=Sn,Pn.POSITION=$;var Fn=class{constructor({src:e,video:t=!1}){this.src=e,this.video=t}updateCamera(e){e.resetRange()}updateControl(e){e.ignoreZoomScale=!1}},In=class{constructor(){this.needsUpdate=!0}destroy(e){}},Ln=class extends bn{constructor(e,t){super(),this.vao=e,this.program=t}destroy(e){e.releaseVAO(this.vao),e.releaseShaderResources(this.program)}getTexture(){return this.program.uniforms.uTexture.texture}},Rn=class{constructor(e,t,n,r){this.program=e.createProgram(t,n),this.uniforms=r,this.uniformLocations=e.getUniformLocations(this.program,r)}},zn=class{constructor(e,t){this.data=e,this.itemSize=t,this.count=e.length/t}},Bn=class{constructor(e,t,n){this.vertices=new zn(new Float32Array(e),3),this.indicies=new zn(new Uint16Array(t),1),this.uvs=new zn(new Float32Array(n),2)}},Vn=class extends In{constructor(e,t){super(),this.texture=t,this._webglTexture=e.createWebGLTexture(t)}destroy(e){this.texture.destroy(),e.deleteTexture(this._webglTexture)}update(e,t,n){let r=this.texture,i=r.isVideo();e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,r.flipY),e.uniform1i(t,0),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,this._webglTexture),!i&&n?e.texSubImage2D(e.TEXTURE_2D,0,0,0,e.RGBA,e.UNSIGNED_BYTE,r.source):e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,r.source),i||(this.needsUpdate=!1)}},Hn=`#define GLSLIFY 1
|
|
2
2
|
attribute vec3 position;attribute vec2 uv;uniform mat4 uMVMatrix;uniform mat4 uPMatrix;varying highp vec2 vUV;void main(){vUV=uv;gl_Position=uPMatrix*uMVMatrix*vec4(position,1.0);}`,Un=`#define GLSLIFY 1
|
|
3
3
|
uniform sampler2D uTexture;varying highp vec2 vUV;void main(){gl_FragColor=texture2D(uTexture,vUV.st);}`,Wn=class extends Bn{constructor(){let e=-.5*Math.PI,t=[],n=[],r=[],i,a;for(i=0;i<=60;i++){let o=(i/60-.5)*Math.PI,s=Math.sin(o),c=Math.cos(o);for(a=0;a<=60;a++){let o=(a/60-.5)*2*Math.PI+e,l=Math.sin(o),u=Math.cos(o)*c,d=s,f=l*c,p=a/60,m=i/60;if(t.push(p,m),n.push(u,d,f),a!==60&&i!==60){let e=i*61+a,t=e+60+1;r.push(e,e+1,t,t,e+1,t+1)}}}super(n,r,t)}},Gn=class extends Fn{constructor(e){super(e)}createMesh(e,t){let n={uTexture:new Vn(e,t)},r=new Wn,i=new Rn(e,Hn,Un,n);return new Ln(e.createVAO(r,i),i)}},Kn=class extends In{constructor(e){super(),this.val=e}update(e,t){e.uniform1f(t,this.val),this.needsUpdate=!1}},qn=class extends In{constructor(e){super(),this.val=e}update(e,t){e.uniform4fv(t,this.val.reduce((e,t)=>[...e,...t],[])),this.needsUpdate=!1}},Jn=`#define GLSLIFY 1
|
|
4
4
|
attribute vec3 position;attribute vec2 uv;uniform mat4 uMVMatrix;uniform mat4 uPMatrix;uniform vec4 uTexScaleOffset[2];uniform float uEye;varying highp vec2 vUV;void main(){vec4 scaleOffset=uTexScaleOffset[int(uEye)];vUV=uv.xy*scaleOffset.xy+scaleOffset.zw;gl_Position=uPMatrix*uMVMatrix*vec4(position,1.0);}`,Yn=class e extends Fn{constructor(e){super(e),this._mode=e.mode}createMesh(t,n){let r,i;switch(this._mode){case e.MODE.LEFT_RIGHT:r=[.5,1,0,0],i=[.5,1,.5,0];break;default:r=[1,.5,0,0],i=[1,.5,0,.5]}let a={uTexture:new Vn(t,n),uEye:new Kn(0),uTexScaleOffset:new qn([r,i])},o=new Wn,s=new Rn(t,Jn,Un,a);return new Ln(t.createVAO(o,s),s)}};Yn.MODE={LEFT_RIGHT:`left_right`,TOP_BOTTOM:`top_bottom`};var Xn=l(`<canvas class=view360-canvas>`),Zn=l(`<video id=view360-video playsinline crossorigin=anonymous style=display:none>`),Qn=()=>{let l;a(()=>{let e=document.getElementById(`view360-container`),t=document.getElementById(`view360-video`);e&&t&&(l=new yn(e,{projection:new Gn({src:t,video:{autoplay:o(`video_autoplay`)}}),plugins:[new Pn({pieView:{order:0},gyroButton:{position:`top-right`,order:1},vrButton:{position:`top-right`,order:2}})]}))}),c(()=>l?.destroy());let[d,f]=i(!1);return r(u,{onAutoNextChange:f,get children(){return r(n,{w:`$full`,h:`60vh`,id:`video360-player`,get children(){return r(n,{w:`100%`,h:`100%`,id:`view360-container`,className:`view360-container`,get children(){return[Xn(),(()=>{var n=Zn();return s(()=>t(n,`src`,e.raw_url)),n})()]}})}})}})};export{Qn as default};
|