@realsee/five-webgpu 1.0.0-alpha.7 → 1.0.0-alpha.8
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/docs/classes/index.FiveRenderer.html +1 -1
- package/five/index.js +4 -4
- package/five/index.mjs +28 -21
- package/five/renderer/compute-renderers/pointcloud-compute-renderer.d.ts +2 -0
- package/gltf-loader/index.js +3 -3
- package/gltf-loader/index.mjs +3 -3
- package/line/index.js +3 -3
- package/line/index.mjs +3 -3
- package/package.json +1 -1
- package/plugins/index.js +2 -2
- package/plugins/index.mjs +2 -2
- package/react/index.js +2 -2
- package/react/index.mjs +2 -2
- package/sticker/index.js +3 -3
- package/sticker/index.mjs +3 -3
- package/umd/five-gltf-loader.js +3 -3
- package/umd/five-line.js +3 -3
- package/umd/five-plugins.js +2 -2
- package/umd/five-react.js +2 -2
- package/umd/five-sticker.js +3 -3
- package/umd/five-vfx.js +2 -2
- package/umd/five.js +4 -4
- package/vfx/index.js +2 -2
- package/vfx/index.mjs +2 -2
- package/work-downloader/index.js +2 -2
- package/work-downloader/index.mjs +2 -2
package/five/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
3
|
* @realsee/five-webgpu
|
|
4
|
-
* Generated: 10/
|
|
5
|
-
* Version: 1.0.0-alpha.
|
|
4
|
+
* Generated: 2026/10/19
|
|
5
|
+
* Version: 1.0.0-alpha.8
|
|
6
6
|
* Terms:
|
|
7
7
|
* Realsee SDK License Agreement
|
|
8
8
|
* Update: July 28, 2021
|
|
@@ -899,7 +899,7 @@ Error work input:
|
|
|
899
899
|
--prr{dvquG-@?9--prr{UrvtuG-@?9\fHMt|}5=6-Mov{qv{t5=6-nI|ntr9-rnqK-snzrossrG-nn\bI@?KHMt|}5=6-Mov{qv{t5>6-nI{vs|zK-}nnzG-]nnzHp-Snt\\}-
|
|
900
900
|
--My|pnv|{5=6-p|y|G-rpAIs@?K9--Movyv{5sntlqr}u6-qr}uG-s@?9\fHMsntzr{s{-slznv{5Movyv{5}|vv|{6-sntP||qG-rpAIs@?K6-:K-Snt\\}-
|
|
901
901
|
--yr-\x07-J-@?5sntP||q;\x076H--yr-\b-J-@?5sntP||q;\b6H--yr-vq\x07-J-\b-7-}nnz;prr{dvqu-8-\x07H--yr-r{p|qrq-J-snzrossrhvq\x07jH--n-|G-Snt\\}H--<<-Vs-}v\x07ry-n-{rr-vr{-5vyy-pyrnrq-|-=\x07SSSSSSSS69-qvpnq-v--<<-o\b-}uv{t-qr}u-|->;=-n{q-|}v{t-n{}nr{-—-rssrpvry\b-xv}}rq--vs-5r{p|qrq-JJ-=\x07SSSSSSSS6-
|
|
902
|
-
----qvpnqH--\f--<<-Qrp|qr-qr}u-s|z-}}r->C-ov-→-h=9->j--yr-qr}ub>C-J-5r{p|qrq-KK->C6-3-=\x07SSSSH--|;qr}u-J-s@?5qr}ub>C6-<-CBB@B;=H--<<-Qrp|qr-_TOBCB-s|z-y|r->C-ov--yr-toBCB-J-r{p|qrq-3-=\x07SSSSH--yr--J-s@?55toBCB-KK->>6-3-=\x07>S6-<-@>;=H--yr-t-J-s@?55toBCB-KK-B6-3-=\x07@S6-<-C@;=H--yr-o-J-s@?5toBCB-3-=\x07>S6-<-@>;=H--|;p|y|-J-rpAIs@?K59-t9-o9->;=6H--r{-|H\f`),lS=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}("p-Snzrb{vs|z-\n--vr]|wG-znA\x07AIs@?K9--prr{V{s|G-rpAI@?K9--}|v{Nr{]npxG-rpAIs@?K9--vrg_|G-rpAIs@?K9--v rV{s|=G-rpAIs@?K9--v rV{s|>G-rpAI@?K9--pnzrnd|yqG-rpAIs@?K9--pnzrnS|nqG-rpAIs@?K9--p|{n{P|y|G-rpAIs@?K9--p|y|Tnv{G-rpAIs@?K9--\byr]npxG-rpAI@?K9--sy||]npxG-rpAIs@?K9--pyv}=V{G-znA\x07AIs@?K9--pyv}=ZrnG-rpAIs@?K9--pyv}>V{G-znA\x07AIs@?K9--pyv}>ZrnG-rpAIs@?K9\fHp-avyrb{vs|z-\n--z|qryZnv\x07G-znA\x07AIs@?K9--oo|\x07Zv{G-rpAIs@?K9--oo|\x07Zn\x07G-rpAIs@?K9--vyr]npxG-rpAI@?K9\fHMt|}5=6-Mov{qv{t5=6-nI|ntr9-rnqlvrK-snzrossrG-nn\bIn|zvpI@?KKHMt|}5=6-Mov{qv{t5>6-nI{vs|zK-snzrG-Snzrb{vs|zHMt|}5=6-Mov{qv{t5?6-nI|ntr9-rnqK-}|vv|{G-nn\bIs@?KHMt|}5=6-Mov{qv{t5@6-nI|ntr9-rnqK-p|y|G-nn\bI@?KHMt|}5=6-Mov{qv{t5A6-n-tnqvr{ar\x07G-r\x07rl?qIs@?KHMt|}5=6-Mov{qv{t5B6-n-tnqvr{`nz}yrG-nz}yrHMt|}5=6-Mov{qv{t5C6-nI|ntr9-rnqK-}|v{[|znyG-nn\bI@?KHMt|}5=6-Mov{qv{t5D6-nI{vs|zK-vyrG-avyrb{vs|zHs{-{}npxlvE\x07Al{|zny5}npxrqG-@?6-:K-rp@Is@?K-\n--yr-{\x07-J-s@?55v@?5}npxrq-II-?A66-KK-?A6H--yr-{\b-J-s@?55v@?5}npxrq-II->C66-KK-?A6H--yr-{ -J-s@?55v@?5}npxrq-II--E66-KK-?A6H--r{-rp@Is@?K5{\x079-{\b9-{ 6-7-5>;=-<->?D;=6H\fs{-toBCBl|lyv{rn5toBCBG-@?6-:K-rp@Is@?K-\n--yr-B-J-5toBCB-KK->>6-3-=\x07>SH--yr-tC-J-5toBCB-KK-B6-3-=\x07@SH--yr-oB-J-toBCB-3-=\x07>SH--r{-rp@Is@?K5----s@?5B6-<-@>;=9----s@?5tC6-<-C@;=9----s@?5oB6-<-@>;=9--6H\fs{-tol|lu5pG-rp@Is@?K6-:K-rp@Is@?K-\n--yr-X-J-rpAIs@?K5=;=9-:>;=-<-@;=9-?;=-<-@;=9-:>;=6H--yr-}-J-zv\x075----rpAIs@?K5p;o9-p;t9-X;9-X; 69----rpAIs@?K5p;t9-p;o9-X;\x079-X;\b69----s@?5p;o-I-p;t69--6H--yr-\0-J-zv\x075----rpAIs@?K5};\x079-};\b9-};9-p;69----rpAIs@?K5p;9-};\b9-}; 9-};\x0769----s@?5};\x07-I-p;69--6H--yr-q-J-\0;\x07-:-zv{5\0;9-\0;\b6H--yr-r-J->;=r:>=H--r{-rp@Is@?K5----no5\0; -8-5\0;-:-\0;\b6-<-5C;=-7-q-8-r669----q-<-5\0;\x07-8-r69----\0;\x079--6H\fs{-ul|lto5pG-rp@Is@?K6-:K-rp@Is@?K-\n--yr-X-J-rpAIs@?K5>;=9-?;=-<-@;=9->;=-<-@;=9-@;=6H--yr-}-J-no5snp5p;\x07\x07\x07-8-X;\x07\b 6-7-C;=-:-X;6H--r{-p; -7-zv\x075X;\x07\x07\x079-pynz}5}-:-X;\x07\x07\x079-rp@Is@?K5=;=69-rp@Is@?K5>;=669-p;\b6H\fs{-n}}y\blp|y|lnqwzr{5toG-rp@Is@?K9-{d|yqG-rp@Is@?K9-|yq]|G-rp@Is@?K6-:K-rp@Is@?K-\n--n-u-J-tol|lu5to6H--u;\b-8J-snzr;p|y|Tnv{;\x07H--u; -8J-snzr;p|y|Tnv{;\bH--yr-un[-J-yr{tu5{d|yq6-K->r:BH--vs-5un[-33-snzr;p|y|Tnv{; -K-=;=6-\n----yr-pnza|]|v{-J-|yq]|-:-snzr;pnzrnd|yq;\x07\b H----yr-vrQv-J-{|znyv r5pnza|]|v{6H----yr-p|aurn-J-q|5{|znyv r5{d|yq69-vrQv6H----yr-n{tyr-J-np|5pynz}5p|aurn9-:>;=9->;=66H----yr-|yv{rSnp|-J-}|5>;=-:-no5n{tyr-:->;BD=DFC@?CDF6-<->;BD=DFC@?CDF9-B;=6H----u; -8J-snzr;p|y|Tnv{; -7-|yv{rSnp|H----u; -J-pynz}5u; 9-=;=9->;=6H--\f--vs-5un[-33-snzr;p|y|Tnv{;-.J-=;=6-\n----yr-oo|\x07Pr{r-J-5vyr;oo|\x07Zv{;\x07\b -8-vyr;oo|\x07Zn\x07;\x07\b 6-7-=;BH----yr-o|{qv{tYr{tu-J-zn\x075>r:B9-vyr;oo|\x07Zn\x07;\b-:-vyr;oo|\x07Zv{;\b6-7->;BH----yr-pnza|]|v{-J-|yq]|-:-snzr;pnzrnd|yq;\x07\b H----yr-pnzrnQvn{pr-J-yr{tu5pnza|]|v{6H----yr-pnzrnO|{qv{tQvn{pr-J-zn\x075=;=9-yr{tu5snzr;pnzrnd|yq;\x07\b -:-oo|\x07Pr{r6-:-o|{qv{tYr{tu-7-=;B6H----yr-pnzrnQvNqw-J-zn\x075=;=9-pnzrnQvn{pr-:-pnzrnO|{qv{tQvn{pr6H----n-qvn{prSnp|-J-pynz}5pnzrnQvNqw-<-o|{qv{tYr{tu9-=;=9->;=6H----qvn{prSnp|-J-5=;E-:-pynz}5>;=-:-}|5>;=-:-qvn{prSnp|9-@;=69-=;=9->;=66-7->?;=H----yr-p|aurn-J-q|5{|znyv r5{d|yq69-{|znyv r5pnza|]|v{66H----yr-n{tyr-J-np|5pynz}5p|aurn9-:>;=9->;=66H----yr-|yv{rSnp|-J-}|5>;=-:-no5n{tyr-:->;BD=DFC@?CDF6-<->;BD=DFC@?CDF9-B;=6H----u; -8J-zv\x075u; -7-snzr;p|y|Tnv{;-7-qvn{prSnp|9-=;=9-|yv{rSnp|6H----u; -J-pynz}5u; 9-=;=9->;=6H--\f--r{-zn\x075ul|lto5u69-rp@Is@?K5=;=66H\f<<<-与-svr-}ozl}|v{py|q<rr\x07;tyy-一致:用-}|wrpv|{-分量-8-视空间- ,而非-pyv};。s{-}|v{lv rl}v\x07rylnr{nrq5--}|v{`v rZ|qrG-@?9--onr]|v{`v rG-s@?9--r|yv|{fG-s@?9--}|v{Nr{]npxG-rpAIs@?K9--vrg_|G-rpAIs@?K9--|yq]|G-rp@Is@?K96-:K-s@?-\n--n-}|v{`v r]v\x07ry-J-onr]|v{`v rH--vs-5}|v{`v rZ|qr-JJ->6-\n----yr-zg-J-q|5vrg_|;\x07\b 9-|yq]|6-8-vrg_|;H----yr-urvtu-J-}|v{Nr{]npx;\b-7-zv\x075>;=9-zn\x075:zg9->r:B69-}|v{Nr{]npx;\x076H----}|v{`v r]v\x07ry-J-r|yv|{f-7-onr]|v{`v r-<-zn\x075urvtu9->r:B6H--\f--r{-}|v{`v r]v\x07ryH\fs{-pyv}lr5v{G-znA\x07AIs@?K9-pyv}ZrnG-rpAIs@?K9-|yq]|G-rpAIs@?K9-sy||Vq\x07G-s@?6-:K-o||y-\n--vs-5pyv}Zrn;-I-=;B6-\n----r{-snyrH--\f--yr-pyv}Sy||-J-pyv}Zrn;\x07H--yr-sy||\\x-J-pyv}Sy||-I-:=;B-\v\v-no5sy||Vq\x07-:-pyv}Sy||6-I-=;FFH--vs-5.sy||\\x6-\n----r{-snyrH--\f--yr-}-J-v{-7-|yq]|H--vs-5};\x07-K-:=;B-33-};\x07-I-=;B-33-};\b-K-:=;B-33-};\b-I-=;B-33-}; -K-:=;B-33-}; -I-=;B6-\n----r{-rH--\f--r{-snyrH\fMp|z}r-M|xt|}lv r5?BC6s{-znv{5Movyv{5ty|onylv{|pnv|{lvq6-tvqG-rp@I@?K6-\n--yr-vq\x07-J-tvq;\x07H--yr-prr{dvqu-J-snzr;prr{V{s|;\x07H--yr-prr{Urvtu-J-snzr;prr{V{s|;\bH--yr-}|v{P|{-J-vyr;vyr]npx;\x07H--yr-}|v{`v rZ|qr-J-snzr;prr{V{s|;H--yr-}|v{`pnyr-J-snzr;v rV{s|=;\x07H--yr-}|v{Zv{]v\x07ry-J-snzr;v rV{s|=;\bH--yr-}|v{Zn\x07]v\x07ry-J-snzr;v rV{s|=; H--yr-}v\x07ry_nv|-J-snzr;v rV{s|=;H--yr-r|yv|{f-J-s@?5snzr;v rV{s|>;\x076H--yr-}|v{]v\x07ryUnqZn\x07-J-s@?5snzr;v rV{s|>;\b6H--yr-}|v{`un}r-J-snzr;v rV{s|>; H--yr-p|y|`\byr-J-snzr;\byr]npx;\x07H--yr-sy||`\byr-J-snzr;\byr]npx;\bH--yr-}|v{Onpx-J-snzr;\byr]npx; H--yr-synt-J-vyr;vyr]npx;\bH--yr-un[|zny-J-5synt-3->6-.J-=H--yr-sy||Vq\x07-J-snzr;sy||]npx;\x07H--yr-u|{Sy||-J-snzr;sy||]npx;\bH--yr-z|qryNy}un-J-snzr;sy||]npx;H--vs-5vq\x07-KJ-}|v{P|{6-\n----r{H--\f--yr-onr-J-vq\x07-7-@H--yr-}|-J-rp@Is@?K5}|vv|{honrj9-}|vv|{honr-8->j9-}|vv|{honr-8-?j6H--yr-|yq]|A-J-vyr;z|qryZnv\x07-7-rpAIs@?K5}|9->;=6H--yr-|yq]|-J-|yq]|A;\x07\b H--n-{d|yq-J-rp@Is@?K5=;=6H--vs-5un[|zny6-\n----yr-{Y|pny-J-{}npxlvE\x07Al{|zny5}|v{[|znyhvq\x07j6H----{d|yq-J-{|znyv r5zn@\x07@Is@?K5------vyr;z|qryZnv\x07h=j;\x07\b 9------vyr;z|qryZnv\x07h>j;\x07\b 9------vyr;z|qryZnv\x07h?j;\x07\b 9----6-7-{Y|pny6H--\f--yr-vPr{Sy||-J-u|{Sy||-I-:=;=>-\v\v-no5sy||Vq\x07-:-u|{Sy||6-I-=;FFH--vs-5sy||`\byr-JJ-=-33-.vPr{Sy||6-\n----r{H--\f--vs-5pyv}lr5snzr;pyv}=V{9-snzr;pyv}=Zrn9-|yq]|A9-sy||Vq\x0766-\n----r{H--\f--vs-5pyv}lr5snzr;pyv}>V{9-snzr;pyv}>Zrn9-|yq]|A9-sy||Vq\x0766-\n----r{H--\f--n-sy||\\}npv\b-J->;=H--vs-5.vPr{Sy||-33-sy||`\byr-JJ->6-\n----sy||\\}npv\b-J-pynz}5=;?-7-zv{5>;=-8-snzr;pnzrnS|nq;\b9->;=69-=;=9->;=6H--\f--yr-pyv}-J-snzr;vr]|w-7-vyr;z|qryZnv\x07-7-rpAIs@?K5}|9->;=6H--vs-5no5pyv};6-I->r:C6-\n----r{H--\f--n-{qp-J-pyv};\x07\b -<-pyv};H--yr-p\x07s-J-5{qp;\x07-7-=;B-8-=;B6-7-s@?5prr{dvqu6H--yr-p\bs-J-5>;=-:-5{qp;\b-7-=;B-8-=;B66-7-s@?5prr{Urvtu6H--yr-p\x07-J-v@?5p\x07s6H--yr-p\b-J-v@?5p\bs6H--n-qr}u=>-J-pynz}5{qp; 9-=;=9->;=6H--yr-qr}ub>C-J-@?5qr}u=>-7-CBB@B;=6H--n-to-J-toBCBl|lyv{rn5p|y|hvq\x07j-3-=\x07SSSS6H--vs-5p|y|`\byr-JJ-?6-\n----to-J-snzr;p|{n{P|y|;\x07\b H--\f-ryr-vs-5p|y|`\byr-JJ->6-\n----yr-qr{|z-J-zn\x075vyr;oo|\x07Zn\x07;\b-:-vyr;oo|\x07Zv{;\b9->r:C6H----yr-Tnq-J-5|yq]|;\b-:-vyr;oo|\x07Zv{;\b6-<-qr{|zH----to-J-r\x07r`nz}yrYrry5tnqvr{ar\x079-tnqvr{`nz}yr9-rp?Is@?K5pynz}5Tnq9-=;=9->;=69-=;B69-=;=6;toH--\f--vs-5no5snzr;p|y|Tnv{;\x076-K->r:C-\v\v-no5snzr;p|y|Tnv{;\b6-K->r:C-\v\v------snzr;p|y|Tnv{; -K->r:C-\v\v-no5snzr;p|y|Tnv{;6-K->r:C6-\n----to-J-n}}y\blp|y|lnqwzr{5to9-{d|yq9-|yq]|6H--\f--vs-5un[|zny-33-}|v{Onpx-JJ->6-\n----yr-pnzQv-J-{|znyv r5snzr;pnzrnd|yq;\x07\b -:-|yq]|6H----vs-5q|5pnzQv9-{d|yq6-I-=;=6-\n------r{H----\f--\f-ryr-vs-5un[|zny-33-}|v{Onpx-JJ-?6-\n----yr-pnzQv-J-{|znyv r5snzr;pnzrnd|yq;\x07\b -:-|yq]|6H----vs-5q|5pnzQv9-{d|yq6-I-=;=6-\n------to-7J-=;EH----\f--\f--yr-ny}un-J-pynz}5z|qryNy}un-7-sy||\\}npv\b9-=;=9->;=6H--vs-5ny}un-I->r:A6-\n----r{H--\f--to-7J-ny}unH--to-7J-zn\x075vyr;oo|\x07Zn\x07;9-=;===>6H--yr-B-J-@?5pynz}5to;-7-@>;=9-=;=9-@>;=66H--yr-tC-J-@?5pynz}5to;t-7-C@;=9-=;=9-C@;=66H--yr-oB-J-@?5pynz}5to;o-7-@>;=9-=;=9-@>;=66H--yr-p|y|]npxrq-J-5B-II->>6-\v-5tC-II-B6-\v-oBH--yr-r{p|qrq-J-5qr}ub>C-II->C6-\v-5p|y|]npxrq-3-=\x07SSSS6H--yr-onr]|v{`v r-J-}|v{`pnyr-7-}v\x07ry_nv|H--n-}|v{`v r]v\x07ry-J-}|v{lv rl}v\x07rylnr{nrq5----}|v{`v rZ|qr9----onr]|v{`v r9----r|yv|{f9----snzr;}|v{Nr{]npx9----snzr;vrg_|9----|yq]|9--6H--}|v{`v r]v\x07ry-J-pynz}5}|v{`v r]v\x07ry9-}|v{Zv{]v\x07ry-7-}v\x07ry_nv|9-}|v{Zn\x07]v\x07ry-7-}v\x07ry_nv|6H--vs-5}|v{`v rZ|qr-JJ->6-\n----}|v{`v r]v\x07ry-J-zv{5}|v{`v r]v\x07ry9-}|v{]v\x07ryUnqZn\x076H--\f--}|v{`v r]v\x07ry-J-zn\x075}|v{`v r]v\x07ry9->;=6H--yr--J-v@?5prr{dvqu6H--yr-u-J-v@?5prr{Urvtu6H--vs-5}|v{`v r]v\x07ry-IJ->;=6-\n----vs-5p\x07-KJ-=-33-p\x07-I--33-p\b-KJ-=-33-p\b-I-u6-\n------yr-}v\x07ryVq\x07-J-@?5p\b6-7-prr{dvqu-8-@?5p\x076H------n|zvpZv{53snzrossrh}v\x07ryVq\x07j9-r{p|qrq6H----\f----r{H--\f--yr-unys`v r-J-}|v{`v r]v\x07ry-7-=;BH--yr-p\x07\\ss-J-p\x07s-:-=;BH--yr-p\b\\ss-J-p\bs-:-=;BH--yr-}\x07`n-J-zn\x075v@?5prvy5p\x07\\ss-:-unys`v r669-=6H--yr-}\x07R{q-J-zv{5v@?5sy||5p\x07\\ss-8-unys`v r669--:->6H--yr-}\b`n-J-zn\x075v@?5prvy5p\b\\ss-:-unys`v r669-=6H--yr-}\bR{q-J-zv{5v@?5sy||5p\b\\ss-8-unys`v r669-u-:->6H--yr-{rrqPvpyrZnx-J-}|v{`un}r-JJ->-33-}|v{`v r]v\x07ry-K-@;=H--yr-nqv`\0-J-unys`v r-7-unys`v rH--s|-5n-}\bG-v@?-J-}\b`nH-}\b-IJ-}\bR{qH-}\b-J-}\b-8->6-\n----s|-5n-}\x07G-v@?-J-}\x07`nH-}\x07-IJ-}\x07R{qH-}\x07-J-}\x07-8->6-\n------vs-5{rrqPvpyrZnx6-\n--------yr-qq\x07-J-5s@?5}\x076-8-=;B6-:-p\x07sH--------yr-qq\b-J-5s@?5}\b6-8-=;B6-:-p\bsH--------vs-5qq\x07-7-qq\x07-8-qq\b-7-qq\b-K-nqv`\x006-\n----------p|{v{rH--------\f------\f------yr-}v\x07ryVq\x07-J-@?5}\b6-7-prr{dvqu-8-@?5}\x076H------n|zvpZv{53snzrossrh}v\x07ryVq\x07j9-r{p|qrq6H----\f--\f\f");function uS(e,t,n){let r=Math.round(e*31)&31,i=Math.round(t*63)&63,a=Math.round(n*31)&31;return r<<11|i<<5|a}function dS(e){return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}var Q=class e{constructor(t,n){this.width=0,this.height=0,this.pointBuffer=null,this.colorBuffer=null,this.normalBuffer=null,this.framebuffer=null,this.clearBindGroup=null,this.rasterizeBindGroup=null,this.displayBindGroup=null,this.pointCount=0,this.frameUniformScratch=new ArrayBuffer(e.FRAME_UNIFORM_SIZE),this.tileUniformScratch=new ArrayBuffer(e.TILE_UNIFORM_SIZE),this.pointSizeUniformState={sizeMode:1,pointScale:.02,pointMinPixel:0,pointMaxPixel:40,pixelRatio:1,resolutionY:1,hardPixelMax:12,pointShape:1,maxDisplayBoost:1},this.ready=!1,this.lastBoundComputePipeline=null,this.pointCloudCache=new Map,this.rasterizeBindGroupCache=new Map,this.tileUniformBufferCache=new Map,this.tileDisposeListeners=new Map,this.packedColorScratch=new Uint32Array,this.packedNormalScratch=new Uint32Array,this.tmpVec3a=new l.Vector3,this.tmpVec3b=new l.Vector3,this.tmpVec3c=new l.Vector3,this.tmpVec3d=new l.Vector3,this.device=t,this.format=n,this.frameUniformBuffer=t.createBuffer({size:e.FRAME_UNIFORM_SIZE,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.displayParamsBuffer=t.createBuffer({size:8,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});let r=new DataView(this.frameUniformScratch),i=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);new Float32Array(this.frameUniformScratch,0,16).set(i),r.setUint32(e.OFFSET_SCREEN_WIDTH,0,!0),r.setUint32(e.OFFSET_SCREEN_HEIGHT,0,!0),r.setUint32(e.OFFSET_POINT_SIZE_MODE,this.pointSizeUniformState.sizeMode,!0),r.setFloat32(e.OFFSET_POINT_SCALE,this.pointSizeUniformState.pointScale,!0),r.setFloat32(e.OFFSET_POINT_MIN_PIXEL,this.pointSizeUniformState.pointMinPixel,!0),r.setFloat32(e.OFFSET_POINT_MAX_PIXEL,this.pointSizeUniformState.pointMaxPixel,!0),r.setFloat32(e.OFFSET_PIXEL_RATIO,this.pointSizeUniformState.pixelRatio,!0),r.setUint32(e.OFFSET_RESOLUTION_Y,Math.round(this.pointSizeUniformState.resolutionY),!0),r.setUint32(e.OFFSET_POINT_PIXEL_HARD_MAX,Math.round(this.pointSizeUniformState.hardPixelMax),!0),r.setUint32(e.OFFSET_POINT_SHAPE,this.pointSizeUniformState.pointShape,!0),t.queue.writeBuffer(this.frameUniformBuffer,0,this.frameUniformScratch);let a=t.createShaderModule({code:sS}),o=t.createShaderModule({code:lS}),s=t.createShaderModule({code:cS});this.clearPipeline=t.createComputePipeline({layout:`auto`,compute:{module:a,entryPoint:`main`}}),this.rasterizePipeline=t.createComputePipeline({layout:`auto`,compute:{module:o,entryPoint:`main`}}),this.fullscreenQuadPipeline=t.createRenderPipeline({layout:`auto`,vertex:{module:s,entryPoint:`vs_main`},fragment:{module:s,entryPoint:`fs_main`,targets:[{format:this.format}]},primitive:{topology:`triangle-list`},depthStencil:{format:`depth24plus`,depthWriteEnabled:!0,depthCompare:`less`}}),this.fullscreenQuadPipelineAdditive=t.createRenderPipeline({layout:`auto`,vertex:{module:s,entryPoint:`vs_main`},fragment:{module:s,entryPoint:`fs_main`,targets:[{format:this.format,blend:{color:{srcFactor:`one`,dstFactor:`one`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one`,operation:`add`}}}]},primitive:{topology:`triangle-list`},depthStencil:{format:`depth24plus`,depthWriteEnabled:!0,depthCompare:`less`}}),this.placeholderGradientTexture=t.createTexture({size:{width:1,height:1},format:`rgba8unorm`,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),this.placeholderGradientView=this.placeholderGradientTexture.createView(),t.queue.writeTexture({texture:this.placeholderGradientTexture},new Uint8Array([128,128,128,255]),{offset:0,bytesPerRow:4},{width:1,height:1,depthOrArrayLayers:1}),this.gradientSampler=t.createSampler({magFilter:`linear`,minFilter:`linear`,addressModeU:`clamp-to-edge`,addressModeV:`clamp-to-edge`})}setPointCloud(e,t,n,r,i,a){var o,s,c,l;let u=(o=i==null?void 0:i.positionsVersion)==null?0:o,d=(s=i==null?void 0:i.colorsVersion)==null?0:s,f=(c=e.styleRevision)==null?0:c,p=this.pointCloudCache.get(e);if(p&&p.count===r&&p.positionsRef===t&&p.colorsRef===n&&p.positionsVersion===u&&p.colorsVersion===d&&p.styleRevision===f)this.pointBuffer=p.pointBuffer,this.colorBuffer=p.colorBuffer,this.pointCount=p.count,this.normalBuffer=p.normalBuffer;else{p&&(p.pointBuffer.destroy(),p.colorBuffer.destroy(),p.normalBuffer.destroy(),this.rasterizeBindGroupCache.delete(e));let i=this.device.createBuffer({size:Math.max(12,r*12),usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST});this.device.queue.writeBuffer(i,0,t.buffer,t.byteOffset,r*12);let a=this.device.createBuffer({size:Math.max(4,r*4),usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST});if(this.packedColorScratch.length<r&&(this.packedColorScratch=new Uint32Array(r)),n instanceof Uint8Array)for(let e=0;e<r;e++){let t=e*3,r=dS(n[t]/255),i=dS(n[t+1]/255),a=dS(n[t+2]/255);this.packedColorScratch[e]=uS(r,i,a)}else for(let e=0;e<r;e++){let t=e*3;this.packedColorScratch[e]=uS(n[t],n[t+1],n[t+2])}this.device.queue.writeBuffer(a,0,this.packedColorScratch.buffer,0,r*4);let o=this.device.createBuffer({size:Math.max(4,r*4),usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST});this.packedNormalScratch.length<r&&(this.packedNormalScratch=new Uint32Array(r));let s=this.packedNormalScratch,c=e.normals;if(cn(c,r))for(let e=0;e<r;e++){let t=e*4;s[e]=c[t]&255|(c[t+1]&255)<<8|(c[t+2]&255)<<16}else for(let e=0;e<r;e++)s[e]=8323072;this.device.queue.writeBuffer(o,0,s.buffer,s.byteOffset,r*4),this.pointCloudCache.set(e,{pointBuffer:i,colorBuffer:a,normalBuffer:o,count:r,positionsRef:t,colorsRef:n,positionsVersion:u,colorsVersion:d,styleRevision:f}),this.registerTileDisposer(e),this.pointBuffer=i,this.colorBuffer=a,this.normalBuffer=o,this.pointCount=r}let m=(l=a==null?void 0:a.gradientView)==null?this.placeholderGradientView:l,h=this.normalBuffer;if(!h)return;let g=this.ensureTileUniformBuffer(e);this.bindRasterizeGroup(e,g,m,h),this.ready=!!this.framebuffer&&!!this.rasterizeBindGroup}beginPointCloudFrame(t,n,r){r.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse);let i=r.elements,a=new DataView(this.frameUniformScratch);for(let t=0;t<16;t++)a.setFloat32(e.OFFSET_VIEW_PROJ+t*4,i[t],!0);this.writeFrameUniformsDataView(a,n,t,r),this.device.queue.writeBuffer(this.frameUniformBuffer,0,this.frameUniformScratch)}writeTileUniform(e,t){let n=this.ensureTileUniformBuffer(e),r=new DataView(this.tileUniformScratch);this.writeTileUniformsDataView(r,e,t),this.device.queue.writeBuffer(n,0,this.tileUniformScratch)}setPointSizeParams(e){var t;this.pointSizeUniformState.sizeMode=+(e.sizeMode===`ATTENUATION`),this.pointSizeUniformState.pointScale=Math.max(0,e.pointScale),this.pointSizeUniformState.pointMinPixel=Math.max(0,e.pointMinPixel),this.pointSizeUniformState.pointMaxPixel=Math.max(this.pointSizeUniformState.pointMinPixel,e.pointMaxPixel),this.pointSizeUniformState.pixelRatio=Math.max(.1,e.pixelRatio),this.pointSizeUniformState.resolutionY=Math.max(1,e.resolutionY),this.pointSizeUniformState.pointShape=+(e.pointShape===`CIRCLE`);let n=(t=e.maxDisplayBoost)==null?this.pointSizeUniformState.maxDisplayBoost:t;this.pointSizeUniformState.maxDisplayBoost=Math.max(.1,n),this.pointSizeUniformState.hardPixelMax=Math.round(Math.min(96,Math.max(1,this.pointSizeUniformState.pointMaxPixel*this.pointSizeUniformState.pixelRatio)))}getPlaceholderGradientView(){return this.placeholderGradientView}static tileFlags(e,t){let n=0;return cn(e.normals,t)&&(n|=1),e.useAddBlend&&(n|=8),n}writePointAttenuationUniforms(t,n){let r=n.projectionMatrix.elements,i=n.matrixWorldInverse.elements;t.setFloat32(e.OFFSET_POINT_ATTEN_PACK,-r[11],!0),t.setFloat32(e.OFFSET_POINT_ATTEN_PACK+4,2/r[5],!0),t.setFloat32(e.OFFSET_POINT_ATTEN_PACK+8,0,!0),t.setFloat32(e.OFFSET_POINT_ATTEN_PACK+12,0,!0),t.setFloat32(e.OFFSET_VIEW_Z_ROW,i[2],!0),t.setFloat32(e.OFFSET_VIEW_Z_ROW+4,i[6],!0),t.setFloat32(e.OFFSET_VIEW_Z_ROW+8,i[10],!0),t.setFloat32(e.OFFSET_VIEW_Z_ROW+12,i[14],!0)}writeFrameUniformsDataView(t,n,r,i){var a,o;t.setUint32(e.OFFSET_SCREEN_WIDTH,this.width,!0),t.setUint32(e.OFFSET_SCREEN_HEIGHT,this.height,!0),t.setUint32(e.OFFSET_SCREEN_WIDTH+8,0,!0),this.writePointAttenuationUniforms(t,r),t.setUint32(e.OFFSET_POINT_SIZE_MODE,this.pointSizeUniformState.sizeMode,!0),t.setFloat32(e.OFFSET_POINT_SCALE,this.pointSizeUniformState.pointScale,!0),t.setFloat32(e.OFFSET_POINT_MIN_PIXEL,this.pointSizeUniformState.pointMinPixel,!0),t.setFloat32(e.OFFSET_POINT_MAX_PIXEL,this.pointSizeUniformState.pointMaxPixel,!0),t.setFloat32(e.OFFSET_PIXEL_RATIO,this.pointSizeUniformState.pixelRatio,!0),t.setUint32(e.OFFSET_RESOLUTION_Y,Math.round(this.pointSizeUniformState.resolutionY),!0),t.setUint32(e.OFFSET_POINT_PIXEL_HARD_MAX,Math.round(this.pointSizeUniformState.hardPixelMax),!0),t.setUint32(e.OFFSET_POINT_SHAPE,this.pointSizeUniformState.pointShape,!0);let s=n.colorStyle===`ALTITUDE`?1:n.colorStyle===`CONSTANT`?2:0,c=+(n.floorStyle===`OPACITY`),l=n.pointBack===`HIDDEN`?1:n.pointBack===`DARK`?2:0;r.updateMatrixWorld(!0);let u=r.getWorldPosition(this.tmpVec3c);t.setFloat32(e.OFFSET_CAMERA_WORLD,u.x,!0),t.setFloat32(e.OFFSET_CAMERA_WORLD+4,u.y,!0),t.setFloat32(e.OFFSET_CAMERA_WORLD+8,u.z,!0),t.setFloat32(e.OFFSET_CAMERA_WORLD+12,0,!0);let d=this.tmpVec3d.set(0,0,-1).applyQuaternion(r.quaternion);t.setFloat32(e.OFFSET_CAMERA_FORWARD,d.x,!0),t.setFloat32(e.OFFSET_CAMERA_FORWARD+4,d.y,!0),t.setFloat32(e.OFFSET_CAMERA_FORWARD+8,d.z,!0),t.setFloat32(e.OFFSET_CAMERA_FORWARD+12,0,!0),t.setFloat32(e.OFFSET_CONSTANT_COLOR,n.constantColor.x,!0),t.setFloat32(e.OFFSET_CONSTANT_COLOR+4,n.constantColor.y,!0),t.setFloat32(e.OFFSET_CONSTANT_COLOR+8,n.constantColor.z,!0),t.setFloat32(e.OFFSET_CONSTANT_COLOR+12,1,!0),t.setFloat32(e.OFFSET_COLOR_GAIN,n.colorSaturation,!0),t.setFloat32(e.OFFSET_COLOR_GAIN+4,n.colorBrightness,!0),t.setFloat32(e.OFFSET_COLOR_GAIN+8,n.outlineGain,!0),t.setFloat32(e.OFFSET_COLOR_GAIN+12,n.distanceGain,!0),t.setUint32(e.OFFSET_STYLE_PACK,s,!0),t.setUint32(e.OFFSET_STYLE_PACK+4,c,!0),t.setUint32(e.OFFSET_STYLE_PACK+8,l,!0),t.setUint32(e.OFFSET_STYLE_PACK+12,0,!0),t.setFloat32(e.OFFSET_FLOOR_PACK,n.floorIndex,!0),t.setFloat32(e.OFFSET_FLOOR_PACK+4,n.shownFloorIndex,!0),t.setFloat32(e.OFFSET_FLOOR_PACK+8,n.opacity,!0),t.setFloat32(e.OFFSET_FLOOR_PACK+12,n.modelAlpha,!0);let f=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);for(let n=0;n<16;n++)t.setFloat32(e.OFFSET_CLIP0_INV+n*4,f[n],!0),t.setFloat32(e.OFFSET_CLIP1_INV+n*4,f[n],!0);t.setFloat32(e.OFFSET_CLIP0_META+12,0,!0),t.setFloat32(e.OFFSET_CLIP1_META+12,0,!0);let p=n.clippers;if(p.length>0){let n=p[0];i.copy(n.clippingBoxMatrix).invert();let r=i.elements;for(let n=0;n<16;n++)t.setFloat32(e.OFFSET_CLIP0_INV+n*4,r[n],!0);t.setFloat32(e.OFFSET_CLIP0_META,(a=n.floorIndex)==null?-1:a,!0),t.setFloat32(e.OFFSET_CLIP0_META+12,1,!0)}if(p.length>1){let n=p[1];i.copy(n.clippingBoxMatrix).invert();let r=i.elements;for(let n=0;n<16;n++)t.setFloat32(e.OFFSET_CLIP1_INV+n*4,r[n],!0);t.setFloat32(e.OFFSET_CLIP1_META,(o=n.floorIndex)==null?-1:o,!0),t.setFloat32(e.OFFSET_CLIP1_META+12,1,!0)}}writeTileUniformsDataView(t,n,r){let i=n.matrixWorld.elements;for(let n=0;n<16;n++)t.setFloat32(e.OFFSET_TILE_MODEL+n*4,i[n],!0);let a=this.tmpVec3a.copy(n.modelBoundingMin),o=this.tmpVec3b.copy(n.modelBoundingMax);t.setFloat32(e.OFFSET_TILE_BBOX_MIN,a.x,!0),t.setFloat32(e.OFFSET_TILE_BBOX_MIN+4,a.y,!0),t.setFloat32(e.OFFSET_TILE_BBOX_MIN+8,a.z,!0),t.setFloat32(e.OFFSET_TILE_BBOX_MIN+12,0,!0),t.setFloat32(e.OFFSET_TILE_BBOX_MAX,o.x,!0),t.setFloat32(e.OFFSET_TILE_BBOX_MAX+4,o.y,!0),t.setFloat32(e.OFFSET_TILE_BBOX_MAX+8,o.z,!0),t.setFloat32(e.OFFSET_TILE_BBOX_MAX+12,n.brightness,!0),t.setUint32(e.OFFSET_TILE_PACK,r,!0),t.setUint32(e.OFFSET_TILE_PACK+4,e.tileFlags(n,r),!0)}resize(t,n){var r;t<=0||n<=0||(this.width=t,this.height=n,(r=this.framebuffer)==null||r.destroy(),this.framebuffer=this.device.createBuffer({size:t*n*4,usage:GPUBufferUsage.STORAGE}),this.device.queue.writeBuffer(this.displayParamsBuffer,0,new Uint32Array([t,n])),this.device.queue.writeBuffer(this.frameUniformBuffer,e.OFFSET_SCREEN_WIDTH,new Uint32Array([t,n])),this.rasterizeBindGroupCache.clear(),this.rasterizeBindGroup=null,this.ready=!1,this.recreateBindGroups())}encodeFramebufferClear(e){!this.clearBindGroup||!this.framebuffer||(e.setPipeline(this.clearPipeline),this.lastBoundComputePipeline=this.clearPipeline,e.setBindGroup(0,this.clearBindGroup),e.dispatchWorkgroups(Math.ceil(this.width*this.height/256)))}encodeRasterize(e){if(!this.ready||!this.rasterizeBindGroup||!this.pointBuffer||!this.colorBuffer||this.pointCount<=0)return;let t=this.rasterizePipeline;this.lastBoundComputePipeline!==t&&(e.setPipeline(t),this.lastBoundComputePipeline=t),e.setBindGroup(0,this.rasterizeBindGroup),e.dispatchWorkgroups(Math.ceil(this.pointCount/256))}encodeFramebufferDisplay(e,t){if(!this.displayBindGroup||!this.framebuffer)return;let n=t!=null&&t.additive?this.fullscreenQuadPipelineAdditive:this.fullscreenQuadPipeline;e.setPipeline(n),e.setBindGroup(0,this.displayBindGroup),e.draw(3)}submitMergedPointCloudFrame(e,t,n,r){var i,a,o;let s=(i=r==null?void 0:r.clear)==null?!0:i,c=(a=r==null?void 0:r.display)==null?!0:a,l=(o=r==null?void 0:r.displayAdditive)==null?!1:o,u=this.device.createCommandEncoder(),d=u.beginComputePass();if(this.lastBoundComputePipeline=null,s&&this.encodeFramebufferClear(d),n(d),d.end(),c){let n=u.beginRenderPass({colorAttachments:[{view:e,loadOp:`load`,storeOp:`store`}],depthStencilAttachment:{view:t,depthLoadOp:`load`,depthStoreOp:`store`}});this.encodeFramebufferDisplay(n,{additive:l}),n.end()}this.device.queue.submit([u.finish()])}dispose(){var e;for(let[e,t]of this.tileDisposeListeners)try{e.removeEventListener(`dispose`,t)}catch(e){}this.tileDisposeListeners.clear();for(let e of this.pointCloudCache.values())e.pointBuffer.destroy(),e.colorBuffer.destroy(),e.normalBuffer.destroy();this.pointCloudCache.clear();for(let e of this.tileUniformBufferCache.values())e.destroy();this.tileUniformBufferCache.clear(),this.rasterizeBindGroupCache.clear(),(e=this.framebuffer)==null||e.destroy(),this.frameUniformBuffer.destroy(),this.displayParamsBuffer.destroy(),this.placeholderGradientTexture.destroy(),this.pointBuffer=null,this.colorBuffer=null,this.normalBuffer=null,this.framebuffer=null,this.clearBindGroup=null,this.rasterizeBindGroup=null,this.displayBindGroup=null,this.ready=!1}registerTileDisposer(e){if(this.tileDisposeListeners.has(e))return;let t=e;if(typeof t.addEventListener!=`function`)return;let n=()=>{this.releaseTileResources(e)};this.tileDisposeListeners.set(e,n),t.addEventListener(`dispose`,n)}releaseTileResources(e){let t=this.pointCloudCache.get(e);t&&(t.pointBuffer.destroy(),t.colorBuffer.destroy(),t.normalBuffer.destroy(),this.pointCloudCache.delete(e)),this.rasterizeBindGroupCache.delete(e);let n=this.tileUniformBufferCache.get(e);n&&(n.destroy(),this.tileUniformBufferCache.delete(e));let r=this.tileDisposeListeners.get(e);if(r){try{e.removeEventListener(`dispose`,r)}catch(e){}this.tileDisposeListeners.delete(e)}}recreateBindGroups(){this.clearBindGroup=null,this.rasterizeBindGroup=null,this.displayBindGroup=null,this.ready=!1,this.framebuffer&&(this.clearBindGroup=this.device.createBindGroup({layout:this.clearPipeline.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:this.framebuffer}},{binding:1,resource:{buffer:this.frameUniformBuffer}}]}),this.displayBindGroup=this.device.createBindGroup({layout:this.fullscreenQuadPipeline.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:this.framebuffer}},{binding:1,resource:{buffer:this.displayParamsBuffer}}]}),this.ready=!1)}ensureTileUniformBuffer(t){let n=this.tileUniformBufferCache.get(t);return n||(n=this.device.createBuffer({size:e.TILE_UNIFORM_SIZE,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.tileUniformBufferCache.set(t,n),this.registerTileDisposer(t)),n}bindRasterizeGroup(e,t,n,r){if(!this.framebuffer||!this.pointBuffer||!this.colorBuffer){this.rasterizeBindGroup=null;return}let i=this.rasterizeBindGroupCache.get(e);if(i&&i.pointBuffer===this.pointBuffer&&i.colorBuffer===this.colorBuffer&&i.normalBuffer===r&&i.tileUniformBuffer===t&&i.gradientView===n){this.rasterizeBindGroup=i.bindGroup;return}let a=this.device.createBindGroup({layout:this.rasterizePipeline.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:this.framebuffer}},{binding:1,resource:{buffer:this.frameUniformBuffer}},{binding:2,resource:{buffer:this.pointBuffer}},{binding:3,resource:{buffer:this.colorBuffer}},{binding:4,resource:n},{binding:5,resource:this.gradientSampler},{binding:6,resource:{buffer:r}},{binding:7,resource:{buffer:t}}]});this.rasterizeBindGroupCache.set(e,{bindGroup:a,pointBuffer:this.pointBuffer,colorBuffer:this.colorBuffer,normalBuffer:r,tileUniformBuffer:t,gradientView:n}),this.rasterizeBindGroup=a}};Q.FRAME_UNIFORM_SIZE=512,Q.TILE_UNIFORM_SIZE=256,Q.OFFSET_VIEW_PROJ=0,Q.OFFSET_SCREEN_WIDTH=64,Q.OFFSET_SCREEN_HEIGHT=68,Q.OFFSET_POINT_SIZE_MODE=76,Q.OFFSET_POINT_ATTEN_PACK=80,Q.OFFSET_VIEW_Z_ROW=96,Q.OFFSET_POINT_SCALE=112,Q.OFFSET_POINT_MIN_PIXEL=116,Q.OFFSET_POINT_MAX_PIXEL=120,Q.OFFSET_PIXEL_RATIO=124,Q.OFFSET_RESOLUTION_Y=128,Q.OFFSET_POINT_PIXEL_HARD_MAX=132,Q.OFFSET_POINT_SHAPE=136,Q.OFFSET_CAMERA_WORLD=144,Q.OFFSET_CAMERA_FORWARD=160,Q.OFFSET_CONSTANT_COLOR=176,Q.OFFSET_COLOR_GAIN=192,Q.OFFSET_STYLE_PACK=208,Q.OFFSET_FLOOR_PACK=224,Q.OFFSET_CLIP0_INV=240,Q.OFFSET_CLIP0_META=304,Q.OFFSET_CLIP1_INV=320,Q.OFFSET_CLIP1_META=384,Q.OFFSET_TILE_MODEL=0,Q.OFFSET_TILE_BBOX_MIN=64,Q.OFFSET_TILE_BBOX_MAX=80,Q.OFFSET_TILE_PACK=96;var fS=new l.Matrix4,pS=class{constructor(e){var t;this.renderMode=`default`,this.computeRenderer=null,this.useComputePointCloud=null,this.compositeRenderTarget=null,this.lastWidth=0,this.lastHeight=0,this.gpuTextureViewCache=new WeakMap,this.outputType=(t=e==null?void 0:e.outputType)==null?l.UnsignedByteType:t,this.composer=new lx(e),this.composerVersion=``,this.renderMode=`default`,this.sceneRenders={default:new oS}}render(e,t,n,r,i){var a,o;let s=e.domElement,c=s.width,u=s.height;if(c<=0||u<=0)return!1;this.composer.updateStatus();let{endabledPassNumber:d,needsColorGBuffer:f,needsDepthGBuffer:p,version:m}=this.composer.status,h=d>0,g=e.getRenderTarget();if((c!==this.lastWidth||u!==this.lastHeight)&&(this.lastWidth=c,this.lastHeight=u,(a=this.compositeRenderTarget)==null||a.dispose(),this.compositeRenderTarget=new l.RenderTarget(c,u,{type:this.outputType}),this.compositeRenderTarget.depthTexture=new l.DepthTexture(c,u),(o=this.computeRenderer)==null||o.resize(c,u),i=!0),!this.compositeRenderTarget)return e.setRenderTarget(g),!1;!i&&h&&m!==this.composerVersion&&(i=!0),this.composerVersion=m,i&&this.renderSceneToComposite(e,t,n,r);let _=!1;return h?(this.composer.setSize(c,u),this.composer.gbuffer.clear(),f&&this.composer.gbuffer.set(`color`,this.compositeRenderTarget.texture),p&&this.compositeRenderTarget.depthTexture&&this.composer.gbuffer.set(`depth`,this.compositeRenderTarget.depthTexture),e.setRenderTarget(this.composer.readBuffer),wx(e,this.compositeRenderTarget.texture),_=this.composer.render(e)):i&&(e.setRenderTarget(null),wx(e,this.compositeRenderTarget.texture),_=!0),e.setRenderTarget(g),_}renderSceneToComposite(e,t,n,r){if(!this.compositeRenderTarget)return;r.updateMatrixWorld(!0),t.updateMatrixWorld(!0);let i=[];if(t.traverse(e=>{e instanceof pn&&i.push(e)}),i.length===0){e.setRenderTarget(this.compositeRenderTarget),e.clear(!0,!0,!0),e.render(t,r);return}if(this.useComputePointCloud===null)try{let t=e.backend;this.useComputePointCloud=(t==null?void 0:t.isWebGPUBackend)===!0&&!!(t!=null&&t.device)}catch(e){this.useComputePointCloud=!1}this.useComputePointCloud?this.renderPointCloudCompute(e,t,i,r):(e.setRenderTarget(this.compositeRenderTarget),e.clear(!0,!0,!0),e.render(t,r))}renderPointCloudCompute(e,t,n,r){var i;if(this.computeRenderer===null)try{let t=e.backend.device;if(!t)return;this.computeRenderer=new Q(t,`rgba8unorm`),this.computeRenderer.resize(this.lastWidth,this.lastHeight)}catch(e){return}e.setRenderTarget(this.compositeRenderTarget),e.clear(!0,!0,!0);let a=this.getCompositeTargetViews(e),o=Math.max(.1,r.pixelRatio||e.getPixelRatio()),s=Math.max(1,((i=r.resolution)==null?void 0:i.y)||this.lastHeight),c=[];for(let e of n)e.visible&&e.layers.test(r.layers)&&Math.max(0,Math.min(e.visiblePointCount,e.numPoints))!==0&&c.push(e);if(a&&c.length>0){let t=c.some(e=>e.useAddBlend),n=c[0];this.computeRenderer.setPointSizeParams({sizeMode:n.pointSize,pointShape:n.pointShape,pointScale:n.pointScale,pointMinPixel:n.pointMinPixel,pointMaxPixel:n.pointMaxPixel,pixelRatio:o,resolutionY:s,maxDisplayBoost:n.maxDisplayBoost}),this.computeRenderer.submitMergedPointCloudFrame(a.colorView,a.depthView,t=>{var i;this.computeRenderer.beginPointCloudFrame(r,n,fS);for(let n of c){let r=Math.max(0,Math.min(n.visiblePointCount,n.numPoints)),a=(i=this.getCachedGpuTextureView(e,n.gradientTexture))==null?this.computeRenderer.getPlaceholderGradientView():i;this.computeRenderer.setPointCloud(n,n.positions,n.colors,r,{positionsVersion:n.positionVersion,colorsVersion:n.styleRevision},{gradientView:a}),this.computeRenderer.writeTileUniform(n,r),this.computeRenderer.encodeRasterize(t)}},{displayAdditive:t})}let l=[];for(let e of n)e.visible&&(e.visible=!1,l.push(e));let u=e.autoClear,d=e.autoClearColor,f=e.autoClearDepth,p=e.autoClearStencil;e.autoClear=!1,e.autoClearColor=!1,e.autoClearDepth=!1,e.autoClearStencil=!1,e.setRenderTarget(this.compositeRenderTarget),e.render(t,r),e.autoClear=u,e.autoClearColor=d,e.autoClearDepth=f,e.autoClearStencil=p;for(let e of l)e.visible=!0}dispose(){var e,t;this.composer.dispose(),(e=this.computeRenderer)==null||e.dispose(),this.computeRenderer=null,(t=this.compositeRenderTarget)==null||t.dispose(),this.compositeRenderTarget=null}getCompositeTargetViews(e){var t;if(!((t=this.compositeRenderTarget)!=null&&t.depthTexture))return null;try{let t=e.backend,n=t.get(this.compositeRenderTarget.texture),r=t.get(this.compositeRenderTarget.depthTexture),i=n==null?void 0:n.texture,a=r==null?void 0:r.texture;return!i||!a?null:{colorView:i.createView(),depthView:a.createView()}}catch(e){return null}}getCachedGpuTextureView(e,t){var n;if(!t)return null;try{let r=e.backend,i=(n=r==null?void 0:r.get)==null?void 0:n.call(r,t),a=i==null?void 0:i.texture;if(!a)return null;let o=this.gpuTextureViewCache.get(a);return o||(o=a.createView(),this.gpuTextureViewCache.set(a,o)),o}catch(e){return null}}},mS,hS=typeof navigator<`u`?((mS=navigator==null?void 0:navigator.userAgent)==null?``:mS).toLowerCase():`node`;(()=>{try{let e=document.createElement(`canvas`);return!!(window.WebGLRenderingContext&&(e.getContext(`webgl`)||e.getContext(`experimental-webgl`)))}catch(e){return!1}})();var gS=typeof navigator<`u`&&navigator.gpu!==void 0;typeof window<`u`&&gS?navigator.gpu.requestAdapter().then(e=>(e||(gS=!1),gS)).catch(()=>(gS=!1,gS)):Promise.resolve(gS),typeof history<`u`&&`pushState`in history&&`replaceState`in history&&`state`in history;var _S=/android/i.test(hS)||/webos/i.test(hS)||/ipad|iphone|ipod/i.test(hS)||/iemobile/i.test(hS)||/opera mini/i.test(hS)||/blackberry/i.test(hS)||/windows phone/i.test(hS),vS=[`trigger`,`grip`,`primary`,`secondary`,`pinch`],yS=[`x`,`y`];function bS(e){for(let t of Object.keys(e)){let n=e[t];typeof n==`object`&&n&&!Object.isFrozen(n)&&bS(n)}return Object.freeze(e)}function xS(){return{buttons:{trigger:0,grip:1,primary:4,secondary:5,pinch:null},axes:{x:2,y:3},model:`auto`}}function SS(){return{buttons:{trigger:null,grip:null,primary:null,secondary:null,pinch:null},axes:{x:null,y:null},model:`none`}}var CS=bS({Pico:xS(),Oculus:xS(),Default:xS(),VP:SS()});function wS(e,t){try{let n=e===void 0?navigator.userAgent:e,r=t===void 0?navigator.maxTouchPoints:t;return typeof n==`string`?n.includes(`PICO`)||n.includes(`Pico`)?`Pico`:n.includes(`Macintosh`)&&r===5?`VP`:n.includes(`Oculus`)?`Oculus`:`Default`:`Default`}catch(e){return`Default`}}function TS(e){return e===null||typeof e==`number`&&Number.isInteger(e)&&e>=0}function ES(e){return typeof e==`object`&&!!e}function DS(e,t){if(e)try{e(t)}catch(e){}}function OS(e,t,n){var r;let i=(r=CS[e])==null?CS.Default:r,a={buttons:Object.assign({},i.buttons),axes:Object.assign({},i.axes),model:i.model};if(!ES(t))return a;let o=t.buttons;if(o!==void 0)if(ES(o))for(let e of vS){let t=o[e];t!==void 0&&(TS(t)?a.buttons[e]=t:DS(n,`buttons.${e}`))}else DS(n,`buttons`);let s=t.axes;if(s!==void 0)if(ES(s))for(let e of yS){let t=s[e];t!==void 0&&(TS(t)?a.axes[e]=t:DS(n,`axes.${e}`))}else DS(n,`axes`);let c=t.model;return c!==void 0&&(c===`auto`||c===`none`?a.model=c:DS(n,`model`)),a}function kS(e){return e===`Default`?`Pico`:e}function AS(){let{gl:e}=this,t=e.fenceSync(e.SYNC_GPU_COMMANDS_COMPLETE,0);return e.flush(),new Promise((n,r)=>{function i(){if(t===null){r();return}let a=e.clientWaitSync(t,e.SYNC_FLUSH_COMMANDS_BIT,0);if(a===e.WAIT_FAILED){e.deleteSync(t),r();return}if(a===e.TIMEOUT_EXPIRED){setTimeout(i,0);return}e.deleteSync(t),n()}i()})}function jS(e){if(wS()===`Default`)return!1;let t=e;if((t==null?void 0:t.isWebGLBackend)!==!0)return!1;let n=t.utils;return!n||typeof n._clientWaitAsync!=`function`?!1:(n._clientWaitAsync=AS,!0)}var MS=1579548,NS=class extends l.WebGPURenderer{constructor({antialias:e=!1,logarithmicDepthBuffer:t,outputType:n=l.UnsignedByteType,forceWebGL:r=!1}){var i;super({antialias:e,alpha:!0,depth:!0,logarithmicDepthBuffer:t,outputType:n,forceWebGL:r}),this._backendReady=!1,this.forceWebGL=r,r===!1&&gS===!1&&console.warn(`设备不支持开启 WEBGPU`),this.outputColorSpace=l.SRGBColorSpace,this.setClearColor(MS,1);let a=(i=this.onDeviceLost)==null?void 0:i.bind(this);this.onDeviceLost=e=>{var t;a==null||a(e);try{(t=this.onDeviceLostCallback)==null||t.call(this,e)}catch(e){console.error(`onDeviceLostCallback error`,e)}},this.ready=this.init().then(()=>{jS(this.backend),this._backendReady=!0})}get isInitialized(){return this._backendReady}get isXRCapable(){let e=this.backend;return(e==null?void 0:e.isWebGPUBackend)!==!0}reconfigureContext(){if(this._backendReady!==!0)return;let e=this.backend;if(e&&typeof e.updateSize==`function`)try{e.updateSize()}catch(e){console.error(`reconfigureContext error`,e)}}},PS=new l.Matrix4,FS=new l.Frustum,IS=new l.Vector2,LS=new WeakMap;function RS(e){let t=!1;return e.needsRender===!0?(e.needsRender=!1,t=!0):e.mixer&&e.mixer.stats.actions.inUse>0&&(t=!0),t}var zS=class extends l.Scene{constructor(){super(...arguments),this.needsRender=!1}add(...e){return super.add(...e)}remove(...e){return super.remove(...e)}update(e,t){let n=!1,r;return t instanceof Aa?(r=t.time,IS.copy(t.resolution)):(r=G(),e.getSize(IS)),PS.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),FS.setFromProjectionMatrix(PS),this.traverseVisible(e=>{if(e.setResolution&&e.setResolution(IS.x,IS.y),e.setTime&&e.setTime(r),e.mixer instanceof l.AnimationMixer){let t=e.mixer,n=LS.get(t);n||(n=new cx,LS.set(t,n)),n.update(r),t.update(n.getDelta())}(e instanceof l.Mesh||e instanceof l.Line||e instanceof l.Points)&&(!e.frustumCulled||FS.intersectsObject(e))&&(RS(e)&&(n=!0),e.traverseAncestors(e=>{RS(e)&&(n=!0)}))}),this.needsRender=n,n}},BS=e=>e*(2-e),VS=(()=>{let e=new Float32Array([-.18,0,-.18,.18,0,-.18,-.18,0,.18,.18,0,.18]),t=new Float32Array([1,0,0,0,1,1,0,1]),n=new Uint8Array([0,2,1,2,3,1]),r=new l.BufferGeometry;return r.setAttribute(`position`,new l.BufferAttribute(e,3)),r.setAttribute(`uv`,new l.BufferAttribute(t,2)),r.setIndex(new l.BufferAttribute(n,1)),r})(),HS=(0,f.vec2)(.5,.5),US=(0,f.float)(.017);function WS(e,t){let n=(0,f.length)(HS.sub(e));return(0,f.smoothstep)(t,t.add(US),n)}function GS(e,t){let n=(0,f.length)(HS.sub(e));return(0,f.float)(1).sub((0,f.smoothstep)(t.sub(US),t,n))}function KS(e){let t={baseColor:(0,f.uniform)(new l.Color(e)),circleScale:(0,f.uniform)(1),ringScale:(0,f.uniform)(1),ringOpacity:(0,f.uniform)(1),loadingAngle:(0,f.uniform)(0),loadingOpacity:(0,f.uniform)(0),progress:(0,f.uniform)(0),progressOpacity:(0,f.uniform)(0),expand0:(0,f.uniform)(0),expand1:(0,f.uniform)(0),expandOpacity:(0,f.uniform)(0),opacity:(0,f.uniform)(0),tapScale:(0,f.uniform)(1),tapOpacity:(0,f.uniform)(1),disable:(0,f.uniform)(0)},n=(0,f.uv)(),r=(0,f.vec4)(1,1,1,(0,f.float)(.8).add((0,f.abs)((0,f.normalize)((0,f.vec2)(1,-1)).dot(n.sub(HS))).mul(1.5)).clamp(0,1).mul(t.tapOpacity).mul(WS(n,(0,f.float)(.15).mul(t.circleScale).mul(t.tapScale))).mul(GS(n,(0,f.float)(.234).mul(t.circleScale).mul(t.tapScale)))),i=(0,f.vec4)(1,1,1,(0,f.float)(.5).add((0,f.abs)((0,f.normalize)((0,f.vec2)(1,1)).dot(n.sub(HS)))).clamp(0,1).mul(t.tapOpacity).mul(t.ringOpacity).mul(WS(n,(0,f.float)(.27).mul(t.ringScale).mul(t.tapScale))).mul(GS(n,(0,f.float)(.32).mul(t.ringScale).mul(t.tapScale)))),a=(0,f.mod)(f.PI.sub((0,f.atan)(HS.x.sub(n.x),HS.y.sub(n.y))).add(t.loadingAngle),f.PI2),o=(0,f.vec4)(1,1,1,(0,f.float)(1).sub((0,f.smoothstep)((0,f.float)(0),f.PI2,a)).mul(.4).add(.1).mul(t.tapOpacity).mul(t.loadingOpacity).mul(WS(n,(0,f.float)(.208).mul(t.circleScale).mul(t.tapScale))).mul(GS(n,(0,f.float)(.3).mul(t.circleScale).mul(t.tapScale)))),s=f.PI.add((0,f.atan)(HS.x.sub(n.x),HS.y.sub(n.y))),c=(0,f.vec4)(1,1,1,(0,f.float)(1).sub((0,f.step)(t.progress.mul(f.PI2),s)).mul(.5).mul(t.tapOpacity).mul(t.progressOpacity).mul(WS(n,(0,f.float)(.208).mul(t.circleScale).mul(t.tapScale))).mul(GS(n,(0,f.float)(.3).mul(t.circleScale).mul(t.tapScale)))),u=(0,f.float)(.2).add((0,f.float)(.23).mul(t.expand0)),d=(0,f.length)(HS.sub(n)),p=(0,f.vec4)(1,1,1,(0,f.float)(1).sub(u.sub(d).div(.2).clamp(0,1)).mul(.8).mul((0,f.float)(1).sub((0,f.abs)(t.expand0.sub(.5)).mul(2)).mul(1.2).clamp(0,1)).mul(t.expandOpacity).mul(GS(n,u))),m=(0,f.float)(.2).add((0,f.float)(.23).mul(t.expand1)),h=(0,f.length)(HS.sub(n)),g=(0,f.vec4)(1,1,1,(0,f.float)(1).sub(m.sub(h).div(.2).clamp(0,1)).mul(.8).mul((0,f.float)(1).sub((0,f.abs)(t.expand1.sub(.5)).mul(2)).mul(1.2).clamp(0,1)).mul(t.expandOpacity).mul(GS(n,m))),_=(0,f.vec4)(1,1,1,(0,f.float)(.5).mul(GS(n,(0,f.float)(.32).mul(t.circleScale).mul(t.tapScale)))),v=(0,f.vec4)(1,1,1,0);v=(0,f.mix)(v,g,g.w),v=(0,f.mix)(v,p,p.w),v=(0,f.mix)(v,c,c.w),v=(0,f.mix)(v,o,o.w),v=(0,f.mix)(v,r,r.w),v=(0,f.mix)(v,i,i.w),v=(0,f.mix)(v,_,t.disable);let y=(0,f.vec4)(v.xyz.mul(t.baseColor),v.w.mul(t.opacity).mul(t.opacity)),b=new l.NodeMaterial;return b.fragmentNode=y,b.blending=l.CustomBlending,b.blendSrc=l.SrcAlphaFactor,b.blendDst=l.OneMinusSrcAlphaFactor,b.blendSrcAlpha=l.OneFactor,b.blendDstAlpha=l.OneMinusSrcAlphaFactor,b.depthWrite=!1,b.transparent=!0,{material:b,u:t}}var qS=class extends l.Object3D{constructor(e={}){var t,n;super();let r=(t=e.color)==null?16777215:t,i=(n=e.scale)==null?1:n;this.progress=0,this.opacity=0,this.loading=!1,this.current=!1,this.disabled=!1,this.currentMotion=new J({progress:0}),this.ringMotion=new J({scale:1,opacity:1}),this.tapMotion=new J({scale:1,opacity:1}),this.loadingOpacityMotion=new J({opacity:0}),this.progressMotion=new J({progress:0}),this.progressOpacityMotion=new J({opacity:0}),this.opacityMotion=new J({opacity:0}),this.disableMotion=new J({progress:0});let{material:a,u:o}=KS(r);this.panoU=o,this.panoMesh=new l.Mesh(VS,a),this.renderOrder=-2,this.panoMesh.renderOrder=-2,this.panoMesh.position.y=.004,this.panoMesh.scale.set(i,1,i),this.add(this.panoMesh),this.currentStartTime=G(),this.needsRender=!0}setProgress(e){this.setDisabled(!1),this.setLoading(!1),this.progress!==e&&(e=H(e,0,1),this.tapMotion.ended&&(this.progress===0&&this.progressOpacityMotion.set({opacity:1},500).catch(K),e===0?this.progressOpacityMotion.set({opacity:0},500).catch(K).then(()=>{this.progressMotion.set({progress:0},0).catch(K)}):this.progressMotion.set({progress:H(e*1.2,0,1)},100).catch(K)),this.progress=e)}setOpacity(e){this.opacity!==e&&(this.opacity=e=H(e,0,1),this.opacityMotion.set({opacity:e},200).catch(K))}setCurrent(e){this.current!==e&&(this.currentMotion.set({progress:+!!e},2e3).catch(K),this.current=e,this.current===!0&&(this.currentStartTime=G()))}setLoading(e){this.loading!==e&&(this.loading=e,this.disabled===!0&&this.setDisabled(!1),this.loadingOpacityMotion.set({opacity:+!!e},500).catch(K))}setDisabled(e){this.disabled!==e&&(this.disabled=e,this.loading===!0&&this.setLoading(!1),this.disableMotion.set({progress:+!!e},500).catch(K))}tap(){return this.tapMotion.ended?(this.progressOpacityMotion.set({opacity:0},0).catch(K),this.progressMotion.set({progress:0},0).catch(K),this.tapMotion.setKeyframes([{progress:0,value:{scale:1,opacity:1}},{progress:.3,value:{scale:.85,opacity:.5}},{progress:.8,value:{scale:1.05,opacity:.6}},{progress:1,value:{scale:1,opacity:1}}],600).then(()=>{this.progressOpacityMotion.set({opacity:+(this.progress>0)},300).catch(K),this.progressMotion.set({progress:this.progress},120).catch(K)}).catch(K)):Promise.resolve()}updateTime(e,t){if(this.progressMotion.ended||(this.progressMotion.update(e),this.panoU.progress.value=this.progressMotion.value.progress,this.needsRender=!0),this.progressOpacityMotion.ended||(this.progressOpacityMotion.update(e),this.panoU.progressOpacity.value=this.progressOpacityMotion.value.opacity,this.needsRender=!0),this.opacityMotion.ended||(this.opacityMotion.update(e),this.panoU.opacity.value=this.opacityMotion.value.opacity,this.needsRender=!0),this.visible=this.opacityMotion.value.opacity!==0,(!this.loadingOpacityMotion.ended||this.loadingOpacityMotion.value.opacity>0)&&(this.loadingOpacityMotion.update(e),this.panoU.loadingOpacity.value=this.loadingOpacityMotion.value.opacity,this.panoU.loadingAngle.value=e/120%(Math.PI*2),this.needsRender=!0),this.tapMotion.ended||(this.tapMotion.update(e),this.panoU.tapOpacity.value=this.tapMotion.value.opacity,this.panoU.tapScale.value=this.tapMotion.value.scale,this.needsRender=!0),this.current||!this.currentMotion.ended){this.currentMotion.update(e),this.panoU.expandOpacity.value=this.currentMotion.value.progress;{let t=(e-this.currentStartTime-1500)/2e3;if(t%5<2){let e=1+Math.sin(Math.PI*t)/25*this.currentMotion.value.progress;this.panoU.circleScale.value=e,this.needsRender=!0}}{let t=(e-this.currentStartTime-1500)/2e3;if(t%5<2){let e=t%1;this.panoU.expand0.value=BS(e)*this.currentMotion.value.progress,this.needsRender=!0}}{let t=(e-this.currentStartTime-1e3)/2e3;if(t%5<2){let e=t%1;this.panoU.expand1.value=BS(e)*this.currentMotion.value.progress,this.needsRender=!0}}}if(this.currentMotion.value.progress>.2&&this.progress===0&&this.loading===!1&&(e-this.currentStartTime-1e3)/2e3%5<2?this.ringMotion.getTargetKeyframe().value.scale!==.8&&this.ringMotion.set({scale:.8,opacity:0},600).catch(K):this.ringMotion.getTargetKeyframe().value.scale!==1&&this.ringMotion.set({scale:1,opacity:1},600).catch(K),!this.ringMotion.ended){let{scale:t,opacity:n}=this.ringMotion.value;this.ringMotion.update(e),this.panoU.ringScale.value=t,this.panoU.ringOpacity.value=n,this.needsRender=!0}if(!this.disableMotion.ended){let{progress:t}=this.disableMotion.value;this.disableMotion.update(e),this.panoU.disable.value=t,this.needsRender=!0}}dispose(){this.ringMotion.dispose(),this.tapMotion.dispose(),this.progressMotion.dispose(),this.progressOpacityMotion.dispose(),this.opacityMotion.dispose(),this.currentMotion.dispose(),this.panoMesh.material.dispose()}},JS=e=>e*(2-e),YS=(()=>{let e=new Float32Array([-.18,0,-.18,.18,0,-.18,-.18,0,.18,.18,0,.18]),t=new Float32Array([1,0,0,0,1,1,0,1]),n=new Uint8Array([0,2,1,2,3,1]),r=new l.BufferGeometry;return r.setAttribute(`position`,new l.BufferAttribute(e,3)),r.setAttribute(`uv`,new l.BufferAttribute(t,2)),r.setIndex(new l.BufferAttribute(n,1)),r})(),XS=(0,f.vec2)(.5,.5),ZS=(0,f.float)(.017);function QS(e,t){let n=(0,f.length)(XS.sub(e));return(0,f.smoothstep)(t,t.add(ZS),n)}function $S(e,t){let n=(0,f.length)(XS.sub(e));return(0,f.float)(1).sub((0,f.smoothstep)(t.sub(ZS),t,n))}function eC(e){let t={baseColor:(0,f.uniform)(new l.Color(e)),circleScale:(0,f.uniform)(1),circleOpacity:(0,f.uniform)(1),loadingAngle:(0,f.uniform)(0),loadingOpacity:(0,f.uniform)(0),progress:(0,f.uniform)(0),progressOpacity:(0,f.uniform)(0),expand0:(0,f.uniform)(0),expand1:(0,f.uniform)(0),expandOpacity:(0,f.uniform)(0),opacity:(0,f.uniform)(0),tapScale:(0,f.uniform)(1),tapOpacity:(0,f.uniform)(1),disable:(0,f.uniform)(0)},n=(0,f.uv)(),r=(0,f.vec4)(1,1,1,(0,f.float)(.8).add((0,f.abs)((0,f.normalize)((0,f.vec2)(1,-1)).dot(n.sub(XS))).mul(1.5)).clamp(0,1).mul((0,f.step)(t.progress,(0,f.float)(0))).mul(t.tapOpacity).mul(QS(n,(0,f.float)(.2).mul(t.circleScale).mul(t.tapScale))).mul($S(n,(0,f.float)(.3).mul(t.circleScale).mul(t.tapScale)))),i=(0,f.mod)(f.PI.sub((0,f.atan)(XS.x.sub(n.x),XS.y.sub(n.y))).add(t.loadingAngle),f.PI2),a=(0,f.vec4)(1,1,1,(0,f.float)(1).sub((0,f.smoothstep)((0,f.float)(0),f.PI2,i)).mul(.9).add(.1).mul(t.tapOpacity).mul(t.loadingOpacity).mul(QS(n,(0,f.float)(.2).mul(t.circleScale).mul(t.tapScale))).mul($S(n,(0,f.float)(.3).mul(t.circleScale).mul(t.tapScale)))),o=f.PI.add((0,f.atan)(XS.x.sub(n.x),XS.y.sub(n.y))),s=(0,f.float)(1).sub((0,f.step)(t.progress.mul(f.PI2),o)),c=(0,f.float)(.04),u=t.progress.mul(f.PI2),d=(0,f.step)((0,f.length)((0,f.vec2)(XS.x.add((0,f.float)(0).sin().mul(.25)),XS.y.add((0,f.float)(0).cos().mul(.25))).sub(n)),c),p=(0,f.step)((0,f.length)((0,f.vec2)(XS.x.add(u.sin().mul(.25)),XS.y.add(u.cos().mul(.25))).sub(n)),c),m=(0,f.vec4)(1,1,1,s.add(d).add(p).clamp(0,1).mul(.9).mul(t.tapOpacity).mul(t.progressOpacity).mul(QS(n,(0,f.float)(.2).mul(t.circleScale).mul(t.tapScale))).mul($S(n,(0,f.float)(.3).mul(t.circleScale).mul(t.tapScale)))),h=(0,f.float)(.25).add((0,f.float)(.25).mul(t.expand0)),g=(0,f.length)(XS.sub(n)),_=(0,f.vec4)(1,1,1,(0,f.float)(1).sub(h.sub(g).div(.2).clamp(0,1)).mul(.8).mul((0,f.float)(1).sub((0,f.abs)(t.expand0.sub(.5)).mul(2)).mul(1.2).clamp(0,1)).mul(t.expandOpacity).mul($S(n,h))),v=(0,f.float)(.25).add((0,f.float)(.23).mul(t.expand1)),y=(0,f.length)(XS.sub(n)),b=(0,f.vec4)(1,1,1,(0,f.float)(1).sub(v.sub(y).div(.2).clamp(0,1)).mul(.8).mul((0,f.float)(1).sub((0,f.abs)(t.expand1.sub(.5)).mul(2)).mul(1.2).clamp(0,1)).mul(t.expandOpacity).mul($S(n,v))),x=(0,f.vec4)(1,1,1,(0,f.float)(.5).mul(t.tapOpacity).mul($S(n,(0,f.float)(.32).mul(t.circleScale).mul(t.tapScale)))),S=(0,f.vec4)(1,1,1,0);S=(0,f.mix)(S,b,b.w),S=(0,f.mix)(S,_,_.w),S=(0,f.mix)(S,r,r.w),S=(0,f.mix)(S,m,m.w),S=(0,f.mix)(S,a,a.w),S=(0,f.mix)(S,x,t.disable);let C=(0,f.vec4)(S.xyz.mul(t.baseColor),S.w.mul(t.opacity).mul(t.opacity)),w=new l.NodeMaterial;return w.fragmentNode=C,w.blending=l.CustomBlending,w.blendSrc=l.SrcAlphaFactor,w.blendDst=l.OneMinusSrcAlphaFactor,w.blendSrcAlpha=l.OneFactor,w.blendDstAlpha=l.OneMinusSrcAlphaFactor,w.depthWrite=!1,w.transparent=!0,{material:w,u:t}}var tC=class extends l.Object3D{constructor(e={}){var t,n;super();let r=(t=e.color)==null?16777215:t,i=(n=e.scale)==null?1:n;this.progress=0,this.opacity=0,this.loading=!1,this.current=!1,this.disabled=!1,this.currentMotion=new J({progress:0}),this.tapMotion=new J({scale:1,opacity:1}),this.loadingOpacityMotion=new J({opacity:0}),this.progressMotion=new J({progress:0}),this.progressOpacityMotion=new J({opacity:0}),this.opacityMotion=new J({opacity:0}),this.disableMotion=new J({progress:0});let{material:a,u:o}=eC(r);this.panoU=o,this.panoMesh=new l.Mesh(YS,a),this.renderOrder=-2,this.panoMesh.renderOrder=-2,this.panoMesh.position.y=.004,this.panoMesh.scale.set(i,1,i),this.add(this.panoMesh),this.currentStartTime=G(),this.needsRender=!0}setProgress(e){this.setDisabled(!1),this.setLoading(!1),this.progress!==e&&(e=H(e,0,1),this.tapMotion.ended&&(this.progress===0&&this.progressOpacityMotion.set({opacity:1},500).catch(K),e===0?this.progressOpacityMotion.set({opacity:0},500).catch(K).then(()=>{this.progressMotion.set({progress:0},0).catch(K)}):this.progressMotion.set({progress:H(e*1.2,0,1)},100).catch(K)),this.progress=e)}setOpacity(e){this.opacity!==e&&(this.opacity=e=H(e,0,1),this.opacityMotion.set({opacity:e},200).catch(K))}setCurrent(e){this.current!==e&&(this.currentMotion.set({progress:+!!e},2e3).catch(K),this.current=e,this.current===!0&&(this.currentStartTime=G()))}setLoading(e){this.loading!==e&&(this.loading=e,this.disabled===!0&&this.setDisabled(!1),this.loadingOpacityMotion.set({opacity:+!!e},500).catch(K))}setDisabled(e){this.disabled!==e&&(this.disabled=e,this.loading===!0&&this.setLoading(!1),this.disableMotion.set({progress:+!!e},500).catch(K))}tap(){return this.tapMotion.ended?(this.progressOpacityMotion.set({opacity:0},0).catch(K),this.progressMotion.set({progress:0},0).catch(K),this.tapMotion.setKeyframes([{progress:0,value:{scale:1,opacity:1}},{progress:.3,value:{scale:.85,opacity:.5}},{progress:.8,value:{scale:1.05,opacity:.6}},{progress:1,value:{scale:1,opacity:1}}],600).then(()=>{this.progressOpacityMotion.set({opacity:+(this.progress>0)},300).catch(K),this.progressMotion.set({progress:this.progress},120).catch(K)}).catch(K)):Promise.resolve()}updateTime(e,t){if(this.progressMotion.ended||(this.progressMotion.update(e),this.panoU.progress.value=this.progressMotion.value.progress,this.needsRender=!0),this.progressOpacityMotion.ended||(this.progressOpacityMotion.update(e),this.panoU.progressOpacity.value=this.progressOpacityMotion.value.opacity,this.needsRender=!0),this.opacityMotion.ended||(this.opacityMotion.update(e),this.panoU.opacity.value=this.opacityMotion.value.opacity,this.needsRender=!0),this.visible=this.opacityMotion.value.opacity!==0,(!this.loadingOpacityMotion.ended||this.loadingOpacityMotion.value.opacity>0)&&(this.loadingOpacityMotion.update(e),this.panoU.loadingOpacity.value=this.loadingOpacityMotion.value.opacity,this.panoU.loadingAngle.value=e/120%(Math.PI*2),this.needsRender=!0),this.tapMotion.ended||(this.tapMotion.update(e),this.panoU.tapOpacity.value=this.tapMotion.value.opacity,this.panoU.tapScale.value=this.tapMotion.value.scale,this.needsRender=!0),this.panoU.circleOpacity.value=Math.max(.6,1-Math.max(this.loadingOpacityMotion.value.opacity,this.progressOpacityMotion.value.opacity)),this.current||!this.currentMotion.ended){this.currentMotion.update(e),this.panoU.expandOpacity.value=this.currentMotion.value.progress;{let t=(e-this.currentStartTime-1500)/2e3;if(t%5<2){let e=1+Math.sin(Math.PI*t)/25*this.currentMotion.value.progress;this.panoU.circleScale.value=e,this.needsRender=!0}}{let t=(e-this.currentStartTime-1500)/2e3;if(t%5<2){let e=t%1;this.panoU.expand0.value=JS(e)*this.currentMotion.value.progress,this.needsRender=!0}}{let t=(e-this.currentStartTime-1e3)/2e3;if(t%5<2){let e=t%1;this.panoU.expand1.value=JS(e)*this.currentMotion.value.progress,this.needsRender=!0}}}if(!this.disableMotion.ended){let{progress:t}=this.disableMotion.value;this.disableMotion.update(e),this.panoU.disable.value=t,this.needsRender=!0}}dispose(){this.tapMotion.dispose(),this.progressMotion.dispose(),this.progressOpacityMotion.dispose(),this.opacityMotion.dispose(),this.currentMotion.dispose(),this.panoMesh.material.dispose()}},nC=e=>e*(2-e),rC=(()=>{let e=new Float32Array([-.18,0,-.18,.18,0,-.18,-.18,0,.18,.18,0,.18]),t=new Float32Array([1,0,0,0,1,1,0,1]),n=new Uint8Array([0,2,1,2,3,1]),r=new l.BufferGeometry;return r.setAttribute(`position`,new l.BufferAttribute(e,3)),r.setAttribute(`uv`,new l.BufferAttribute(t,2)),r.setIndex(new l.BufferAttribute(n,1)),r})(),iC=(0,f.vec2)(.5,.5),aC=(0,f.float)(.017);function oC(e,t){let n=(0,f.length)(iC.sub(e));return(0,f.smoothstep)(t,t.add(aC),n)}function sC(e,t){let n=(0,f.length)(iC.sub(e));return(0,f.float)(1).sub((0,f.smoothstep)(t.sub(aC),t,n))}function cC(e){let t=e.map,n=e.borderWidth>0,r={baseColor:(0,f.uniform)(new l.Color(e.color)),circleScale:(0,f.uniform)(1),circleOpacity:(0,f.uniform)(1),loadingAngle:(0,f.uniform)(0),loadingOpacity:(0,f.uniform)(0),progress:(0,f.uniform)(0),progressOpacity:(0,f.uniform)(0),expand0:(0,f.uniform)(0),expand1:(0,f.uniform)(0),expandOpacity:(0,f.uniform)(0),opacity:(0,f.uniform)(0),tapScale:(0,f.uniform)(1),tapOpacity:(0,f.uniform)(1),disable:(0,f.uniform)(0)},i=(0,f.uniform)(e.mapAlpha),a=(0,f.uniform)(e.borderWidth),o=(0,f.uniform)(new l.Color(e.borderColor)),s=(0,f.uv)(),c=(0,f.float)(.3).mul(r.circleScale).mul(r.tapScale),u=n?oC(s,c.sub(a.clamp(0,1).mul(c))):oC(s,c.sub((0,f.float)(.2).mul(c))),d;if(t){let n=c.div(.5);d=(0,f.texture)(t,s.sub(iC).div(n).add(iC)),d=(0,f.vec4)(d.rgb,d.a.mul(i)),e.mapUseColor&&(d=(0,f.vec4)(r.baseColor,(0,f.float)(1)).mul(d))}else d=(0,f.vec4)(r.baseColor,(0,f.float)(1));let p;if(e.mapUseReverse)p=(0,f.vec4)(r.baseColor,(0,f.float)(1).sub(d.a));else if(n){let e=oC(s,c.sub(a.clamp(0,1).mul(c))),t=a.mul(2).add((0,f.abs)((0,f.normalize)((0,f.vec2)(1,-1)).dot(s.sub(iC)))).clamp(0,1);p=(0,f.mix)((0,f.vec4)(o,e.mul(t)),d,d.a)}else p=d;let m=(0,f.vec4)(p.rgb,p.a.mul(r.circleOpacity).mul(r.tapOpacity).mul(sC(s,c))),h=(0,f.vec4)(r.baseColor,(0,f.float)(.5).mul(r.tapOpacity).mul(sC(s,(0,f.float)(.32).mul(r.circleScale).mul(r.tapScale)))),g=(0,f.mod)(f.PI.sub((0,f.atan)(iC.x.sub(s.x),iC.y.sub(s.y))).add(r.loadingAngle),f.PI2),_=(0,f.float)(1).sub((0,f.smoothstep)((0,f.float)(0),f.PI2,g)).mul(.9).add(.1),v=(0,f.vec4)(r.baseColor,_.mul(r.tapOpacity).mul(r.loadingOpacity).mul(u).mul(sC(s,c))),y=f.PI.add((0,f.atan)(iC.x.sub(s.x),iC.y.sub(s.y))),b=(0,f.float)(1).sub((0,f.step)(r.progress.mul(f.PI2),y)).mul(.7),x=(0,f.vec4)(r.baseColor,b.mul(r.tapOpacity).mul(r.progressOpacity).mul(u).mul(sC(s,c))),S=(0,f.float)(.25).add((0,f.float)(.25).mul(r.expand0)),C=(0,f.length)(iC.sub(s)),w=(0,f.float)(1).sub(S.sub(C).div(.2).clamp(0,1)).mul(.8).mul((0,f.float)(1).sub((0,f.abs)(r.expand0.sub(.5)).mul(2)).mul(1.2).clamp(0,1)),T=(0,f.vec4)(r.baseColor,w.mul(r.expandOpacity).mul(sC(s,S))),E=(0,f.float)(.25).add((0,f.float)(.23).mul(r.expand1)),D=(0,f.length)(iC.sub(s)),O=(0,f.float)(1).sub(E.sub(D).div(.2).clamp(0,1)).mul(.8).mul((0,f.float)(1).sub((0,f.abs)(r.expand1.sub(.5)).mul(2)).mul(1.2).clamp(0,1)),k=(0,f.vec4)(r.baseColor,O.mul(r.expandOpacity).mul(sC(s,E))),A=(0,f.vec4)(r.baseColor,(0,f.float)(0));A=(0,f.mix)(A,k,k.w),A=(0,f.mix)(A,T,T.w),A=(0,f.mix)(A,m,m.w),A=(0,f.mix)(A,x,x.w),A=(0,f.mix)(A,v,v.w),A=(0,f.mix)(A,h,r.disable);let j=(0,f.vec4)(A.rgb,A.a.mul(r.opacity)),M=new l.NodeMaterial;return M.fragmentNode=j,M.blending=l.CustomBlending,M.blendSrc=l.SrcAlphaFactor,M.blendDst=l.OneMinusSrcAlphaFactor,M.blendSrcAlpha=l.OneFactor,M.blendDstAlpha=l.OneMinusSrcAlphaFactor,M.depthWrite=!1,M.transparent=!0,{material:M,u:r}}var lC=class extends l.Object3D{constructor(e={}){var t,n,r,i,a,o,s;super();let c=(t=e.color)==null?16777215:t,u=(n=e.scale)==null?1:n;this.progress=0,this.opacity=0,this.loading=!1,this.current=!1,this.disabled=!1,this.currentMotion=new J({progress:0}),this.tapMotion=new J({scale:1,opacity:1}),this.loadingOpacityMotion=new J({opacity:0}),this.progressMotion=new J({progress:0}),this.progressOpacityMotion=new J({opacity:0}),this.opacityMotion=new J({opacity:0}),this.disableMotion=new J({progress:0});let{material:d,u:f}=cC({color:c,map:e.map,mapAlpha:(r=e.mapAlpha)==null?1:r,borderWidth:(i=e.borderWidth)==null?.1:i,borderColor:(a=e.borderColor)==null?16777215:a,mapUseColor:(o=e.mapUseColor)==null?!1:o,mapUseReverse:(s=e.mapUseReverse)==null?!1:s});this.panoU=f,this.panoMesh=new l.Mesh(rC,d),this.renderOrder=-2,this.panoMesh.renderOrder=-2,this.panoMesh.position.y=.004,this.panoMesh.scale.set(u,1,u),this.add(this.panoMesh),this.currentStartTime=G(),this.needsRender=!0}setProgress(e){this.setDisabled(!1),this.setLoading(!1),this.progress!==e&&(e=H(e,0,1),this.tapMotion.ended&&(this.progress===0&&this.progressOpacityMotion.set({opacity:1},500).catch(K),e===0?this.progressOpacityMotion.set({opacity:0},500).catch(K).then(()=>{this.progressMotion.set({progress:0},0).catch(K)}):this.progressMotion.set({progress:H(e*1.2,0,1)},100).catch(K)),this.progress=e)}setOpacity(e){this.opacity!==e&&(this.opacity=e=H(e,0,1),this.opacityMotion.set({opacity:e},200).catch(K))}setCurrent(e){this.current!==e&&(this.currentMotion.set({progress:+!!e},2e3).catch(K),this.current=e,this.current===!0&&(this.currentStartTime=G()))}setLoading(e){this.loading!==e&&(this.loading=e,this.disabled===!0&&this.setDisabled(!1),this.loadingOpacityMotion.set({opacity:+!!e},500).catch(K))}setDisabled(e){this.disabled!==e&&(this.disabled=e,this.loading===!0&&this.setLoading(!1),this.disableMotion.set({progress:+!!e},500).catch(K))}tap(){return this.tapMotion.ended?(this.progressOpacityMotion.set({opacity:0},0).catch(K),this.progressMotion.set({progress:0},0).catch(K),this.tapMotion.setKeyframes([{progress:0,value:{scale:1,opacity:1}},{progress:.3,value:{scale:.85,opacity:.5}},{progress:.8,value:{scale:1.05,opacity:.6}},{progress:1,value:{scale:1,opacity:1}}],600).then(()=>{this.progressOpacityMotion.set({opacity:+(this.progress>0)},300).catch(K),this.progressMotion.set({progress:this.progress},120).catch(K)}).catch(K)):Promise.resolve()}updateTime(e,t){if(this.progressMotion.ended||(this.progressMotion.update(e),this.panoU.progress.value=this.progressMotion.value.progress,this.needsRender=!0),this.progressOpacityMotion.ended||(this.progressOpacityMotion.update(e),this.panoU.progressOpacity.value=this.progressOpacityMotion.value.opacity,this.needsRender=!0),this.opacityMotion.ended||(this.opacityMotion.update(e),this.panoU.opacity.value=this.opacityMotion.value.opacity,this.needsRender=!0),this.visible=this.opacityMotion.value.opacity!==0,(!this.loadingOpacityMotion.ended||this.loadingOpacityMotion.value.opacity>0)&&(this.loadingOpacityMotion.update(e),this.panoU.loadingOpacity.value=this.loadingOpacityMotion.value.opacity,this.panoU.loadingAngle.value=e/120%(Math.PI*2),this.needsRender=!0),this.tapMotion.ended||(this.tapMotion.update(e),this.panoU.tapOpacity.value=this.tapMotion.value.opacity,this.panoU.tapScale.value=this.tapMotion.value.scale,this.needsRender=!0),this.panoU.circleOpacity.value=Math.max(.6,1-Math.max(this.loadingOpacityMotion.value.opacity,this.progressOpacityMotion.value.opacity)),this.current||!this.currentMotion.ended){this.currentMotion.update(e),this.panoU.expandOpacity.value=this.currentMotion.value.progress;{let t=(e-this.currentStartTime-1500)/2e3;if(t%5<2){let e=t%1;this.panoU.expand0.value=nC(e)*this.currentMotion.value.progress,this.needsRender=!0}}{let t=(e-this.currentStartTime-1e3)/2e3;if(t%5<2){let e=t%1;this.panoU.expand1.value=nC(e)*this.currentMotion.value.progress,this.needsRender=!0}}}if(!this.disableMotion.ended){let{progress:t}=this.disableMotion.value;this.disableMotion.update(e),this.panoU.disable.value=t,this.needsRender=!0}}dispose(){this.tapMotion.dispose(),this.progressMotion.dispose(),this.progressOpacityMotion.dispose(),this.opacityMotion.dispose(),this.currentMotion.dispose(),this.panoMesh.material.dispose()}};function uC(e,t,n){let r=Math.abs(e-t);return r<.001||n!==void 0&&Math.abs(n-r)<.001}function dC(e,t,n){return!uC(e,t,n)}function fC(e,t){return e.distanceTo(t)<.001}function pC(e,t){return!fC(e,t)}function mC(e){return!!e&&(typeof e==`object`||typeof e==`function`)&&typeof e.then==`function`}function $(e,t){let n=!1,r={type:e,timeStamp:G(),get defaultPrevented(){return n},preventDefault(){n=!0}};for(let e of Object.keys(t))e in r||(r[e]=t[e]);return r}var hC=new WeakMap;function gC(e,t){let n=$(e,Object.assign(Object.assign({},t),{waitUntil(e){let t=hC.get(n);t&&t.push(e)}}));return hC.set(n,[]),n}function _C(e){var t;return Promise.all((t=hC.get(e))==null?[]:t).then(K)}function vC(e,t){e.mode=t.mode,e.workCode=t.workCode,e.panoIndex=t.panoIndex,e.longitude=t.longitude,e.latitude=t.latitude,e.fov=t.fov,e.offset.copy(t.offset),e.distance=t.distance}function yC(e,t){return e.workCode===t.workCode&&e.mode===t.mode&&e.panoIndex===t.panoIndex&&uC(e.longitude,t.longitude,Math.PI*2)&&uC(e.latitude,t.latitude)&&uC(e.fov,t.fov)&&fC(e.offset,t.offset)&&uC(e.distance,t.distance)}function bC(e,t){e.longitude=t.longitude,e.latitude=t.latitude,e.fov=t.fov,e.distance=t.distance,e.offset.copy(t.offset)}function xC(e){return{longitude:e.longitude,latitude:e.latitude,fov:e.fov,offset:e.offset.clone(),distance:e.distance}}function SC(e){switch(e){case`Floorplan`:return!0;case`Mapview`:return!0;default:return!1}}function CC(e){switch(e){case`Panorama`:return!0;case`VRPanorama`:return!0;case`XRPanorama`:return!0;case`Model`:return!0;default:return!1}}function wC(e){for(let t in e)return!1;return!0}var TC=(0,f.uniform)(1),EC=(0,f.uv)(),DC=(0,f.float)(6.2831852),OC=(0,f.float)(3.1415926),kC=DC.mul(EC.x),AC=OC.mul(EC.y.sub(.5)),jC=AC.cos().abs(),MC=(0,f.normalize)((0,f.vec3)(kC.sin().negate().mul(jC),AC.sin().mul(TC),kC.cos().negate().mul(jC))),NC=(0,f.cubeTexture)(new l.CubeTexture,MC),PC=new l.NodeMaterial;PC.fragmentNode=NC,PC.transparent=!0,PC.depthTest=!1,PC.depthWrite=!1;var FC=new ux(PC);function IC(e,t,n){NC.value=t,TC.value=n?-1:1,FC.render(e),NC.value=null}var LC=new l.Color,RC=0,zC=1;function BC(e,t,n,r){return Wr(this,void 0,void 0,function*(){let i=new l.RenderTarget(r.width,r.height,{depthBuffer:!1,stencilBuffer:!1,generateMipmaps:!1,magFilter:l.LinearFilter,minFilter:l.LinearFilter}),a=e.getRenderTarget();e.getClearColor(LC);let o=e.getClearAlpha(),s=e.autoClear,c=e.autoClearColor,u=e.autoClearDepth,d=e.autoClearStencil;e.autoClear=!0,e.autoClearColor=!0,e.autoClearDepth=!0,e.autoClearStencil=!0,e.setRenderTarget(i),e.setClearColor(RC,zC),IC(e,t,n),e.setRenderTarget(a),e.setClearColor(LC,o),e.autoClear=s,e.autoClearColor=c,e.autoClearDepth=u,e.autoClearStencil=d;let f=yield e.readRenderTargetPixelsAsync(i,0,0,r.width,r.height);return r.data.set(f),i.dispose(),r})}var VC=(function(e,t,n,r){"use strict";var i=[``,`webkit`,`Moz`,`MS`,`ms`,`o`],a=t.createElement?t.createElement(`div`):r,o=`function`,s=Math.round,c=Math.abs,l=Date.now;function u(e,t,n){return setTimeout(v(e,n),t)}function d(e,t,n){return Array.isArray(e)?(f(e,n[t],n),!0):!1}function f(e,t,n){var i;if(e)if(e.forEach)e.forEach(t,n);else if(e.length!==r)for(i=0;i<e.length;)t.call(n,e[i],i,e),i++;else for(i in e)e.hasOwnProperty(i)&&t.call(n,e[i],i,e)}function p(t,n,r){var i=`DEPRECATED METHOD: `+n+`
|
|
902
|
+
----qvpnqH--\f--<<-Qrp|qr-qr}u-s|z-}}r->C-ov-→-h=9->j--yr-qr}ub>C-J-5r{p|qrq-KK->C6-3-=\x07SSSSH--|;qr}u-J-s@?5qr}ub>C6-<-CBB@B;=H--<<-Qrp|qr-_TOBCB-s|z-y|r->C-ov--yr-toBCB-J-r{p|qrq-3-=\x07SSSSH--yr--J-s@?55toBCB-KK->>6-3-=\x07>S6-<-@>;=H--yr-t-J-s@?55toBCB-KK-B6-3-=\x07@S6-<-C@;=H--yr-o-J-s@?5toBCB-3-=\x07>S6-<-@>;=H--|;p|y|-J-rpAIs@?K59-t9-o9->;=6H--r{-|H\f`),lS=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}("p-Snzrb{vs|z-\n--vr]|wG-znA\x07AIs@?K9--prr{V{s|G-rpAI@?K9--}|v{Nr{]npxG-rpAIs@?K9--vrg_|G-rpAIs@?K9--v rV{s|=G-rpAIs@?K9--v rV{s|>G-rpAI@?K9--pnzrnd|yqG-rpAIs@?K9--pnzrnS|nqG-rpAIs@?K9--p|{n{P|y|G-rpAIs@?K9--p|y|Tnv{G-rpAIs@?K9--\byr]npxG-rpAI@?K9--sy||]npxG-rpAIs@?K9--pyv}=V{G-znA\x07AIs@?K9--pyv}=ZrnG-rpAIs@?K9--pyv}>V{G-znA\x07AIs@?K9--pyv}>ZrnG-rpAIs@?K9\fHp-avyrb{vs|z-\n--z|qryZnv\x07G-znA\x07AIs@?K9--oo|\x07Zv{G-rpAIs@?K9--oo|\x07Zn\x07G-rpAIs@?K9--vyr]npxG-rpAI@?K9\fHMt|}5=6-Mov{qv{t5=6-nI|ntr9-rnqlvrK-snzrossrG-nn\bIn|zvpI@?KKHMt|}5=6-Mov{qv{t5>6-nI{vs|zK-snzrG-Snzrb{vs|zHMt|}5=6-Mov{qv{t5?6-nI|ntr9-rnqK-}|vv|{G-nn\bIs@?KHMt|}5=6-Mov{qv{t5@6-nI|ntr9-rnqK-p|y|G-nn\bI@?KHMt|}5=6-Mov{qv{t5A6-n-tnqvr{ar\x07G-r\x07rl?qIs@?KHMt|}5=6-Mov{qv{t5B6-n-tnqvr{`nz}yrG-nz}yrHMt|}5=6-Mov{qv{t5C6-nI|ntr9-rnqK-}|v{[|znyG-nn\bI@?KHMt|}5=6-Mov{qv{t5D6-nI{vs|zK-vyrG-avyrb{vs|zHs{-{}npxlvE\x07Al{|zny5}npxrqG-@?6-:K-rp@Is@?K-\n--yr-{\x07-J-s@?55v@?5}npxrq-II-?A66-KK-?A6H--yr-{\b-J-s@?55v@?5}npxrq-II->C66-KK-?A6H--yr-{ -J-s@?55v@?5}npxrq-II--E66-KK-?A6H--r{-rp@Is@?K5{\x079-{\b9-{ 6-7-5>;=-<->?D;=6H\fs{-toBCBl|lyv{rn5toBCBG-@?6-:K-rp@Is@?K-\n--yr-B-J-5toBCB-KK->>6-3-=\x07>SH--yr-tC-J-5toBCB-KK-B6-3-=\x07@SH--yr-oB-J-toBCB-3-=\x07>SH--r{-rp@Is@?K5----s@?5B6-<-@>;=9----s@?5tC6-<-C@;=9----s@?5oB6-<-@>;=9--6H\fs{-tol|lu5pG-rp@Is@?K6-:K-rp@Is@?K-\n--yr-X-J-rpAIs@?K5=;=9-:>;=-<-@;=9-?;=-<-@;=9-:>;=6H--yr-}-J-zv\x075----rpAIs@?K5p;o9-p;t9-X;9-X; 69----rpAIs@?K5p;t9-p;o9-X;\x079-X;\b69----s@?5p;o-I-p;t69--6H--yr-\0-J-zv\x075----rpAIs@?K5};\x079-};\b9-};9-p;69----rpAIs@?K5p;9-};\b9-}; 9-};\x0769----s@?5};\x07-I-p;69--6H--yr-q-J-\0;\x07-:-zv{5\0;9-\0;\b6H--yr-r-J->;=r:>=H--r{-rp@Is@?K5----no5\0; -8-5\0;-:-\0;\b6-<-5C;=-7-q-8-r669----q-<-5\0;\x07-8-r69----\0;\x079--6H\fs{-ul|lto5pG-rp@Is@?K6-:K-rp@Is@?K-\n--yr-X-J-rpAIs@?K5>;=9-?;=-<-@;=9->;=-<-@;=9-@;=6H--yr-}-J-no5snp5p;\x07\x07\x07-8-X;\x07\b 6-7-C;=-:-X;6H--r{-p; -7-zv\x075X;\x07\x07\x079-pynz}5}-:-X;\x07\x07\x079-rp@Is@?K5=;=69-rp@Is@?K5>;=669-p;\b6H\fs{-n}}y\blp|y|lnqwzr{5toG-rp@Is@?K9-{d|yqG-rp@Is@?K9-|yq]|G-rp@Is@?K6-:K-rp@Is@?K-\n--n-u-J-tol|lu5to6H--u;\b-8J-snzr;p|y|Tnv{;\x07H--u; -8J-snzr;p|y|Tnv{;\bH--yr-un[-J-yr{tu5{d|yq6-K->r:BH--vs-5un[-33-snzr;p|y|Tnv{; -K-=;=6-\n----yr-pnza|]|v{-J-|yq]|-:-snzr;pnzrnd|yq;\x07\b H----yr-vrQv-J-{|znyv r5pnza|]|v{6H----yr-p|aurn-J-q|5{|znyv r5{d|yq69-vrQv6H----yr-n{tyr-J-np|5pynz}5p|aurn9-:>;=9->;=66H----yr-|yv{rSnp|-J-}|5>;=-:-no5n{tyr-:->;BD=DFC@?CDF6-<->;BD=DFC@?CDF9-B;=6H----u; -8J-snzr;p|y|Tnv{; -7-|yv{rSnp|H----u; -J-pynz}5u; 9-=;=9->;=6H--\f--vs-5un[-33-snzr;p|y|Tnv{;-.J-=;=6-\n----yr-oo|\x07Pr{r-J-5vyr;oo|\x07Zv{;\x07\b -8-vyr;oo|\x07Zn\x07;\x07\b 6-7-=;BH----yr-o|{qv{tYr{tu-J-zn\x075>r:B9-vyr;oo|\x07Zn\x07;\b-:-vyr;oo|\x07Zv{;\b6-7->;BH----yr-pnza|]|v{-J-|yq]|-:-snzr;pnzrnd|yq;\x07\b H----yr-pnzrnQvn{pr-J-yr{tu5pnza|]|v{6H----yr-pnzrnO|{qv{tQvn{pr-J-zn\x075=;=9-yr{tu5snzr;pnzrnd|yq;\x07\b -:-oo|\x07Pr{r6-:-o|{qv{tYr{tu-7-=;B6H----yr-pnzrnQvNqw-J-zn\x075=;=9-pnzrnQvn{pr-:-pnzrnO|{qv{tQvn{pr6H----n-qvn{prSnp|-J-pynz}5pnzrnQvNqw-<-o|{qv{tYr{tu9-=;=9->;=6H----qvn{prSnp|-J-5=;E-:-pynz}5>;=-:-}|5>;=-:-qvn{prSnp|9-@;=69-=;=9->;=66-7->?;=H----yr-p|aurn-J-q|5{|znyv r5{d|yq69-{|znyv r5pnza|]|v{66H----yr-n{tyr-J-np|5pynz}5p|aurn9-:>;=9->;=66H----yr-|yv{rSnp|-J-}|5>;=-:-no5n{tyr-:->;BD=DFC@?CDF6-<->;BD=DFC@?CDF9-B;=6H----u; -8J-zv\x075u; -7-snzr;p|y|Tnv{;-7-qvn{prSnp|9-=;=9-|yv{rSnp|6H----u; -J-pynz}5u; 9-=;=9->;=6H--\f--r{-zn\x075ul|lto5u69-rp@Is@?K5=;=66H\f<<<-与-svr-}ozl}|v{py|q<rr\x07;tyy-一致:用-}|wrpv|{-分量-8-视空间- ,而非-pyv};。s{-}|v{lv rl}v\x07rylnr{nrq5--}|v{`v rZ|qrG-@?9--onr]|v{`v rG-s@?9--r|yv|{fG-s@?9--}|v{Nr{]npxG-rpAIs@?K9--vrg_|G-rpAIs@?K9--|yq]|G-rp@Is@?K96-:K-s@?-\n--n-}|v{`v r]v\x07ry-J-onr]|v{`v rH--vs-5}|v{`v rZ|qr-JJ->6-\n----yr-zg-J-q|5vrg_|;\x07\b 9-|yq]|6-8-vrg_|;H----yr-urvtu-J-}|v{Nr{]npx;\b-7-zv\x075>;=9-zn\x075:zg9->r:B69-}|v{Nr{]npx;\x076H----}|v{`v r]v\x07ry-J-r|yv|{f-7-onr]|v{`v r-<-zn\x075urvtu9->r:B6H--\f--r{-}|v{`v r]v\x07ryH\fs{-pyv}lr5v{G-znA\x07AIs@?K9-pyv}ZrnG-rpAIs@?K9-|yq]|G-rpAIs@?K9-sy||Vq\x07G-s@?6-:K-o||y-\n--vs-5pyv}Zrn;-I-=;B6-\n----r{-snyrH--\f--yr-pyv}Sy||-J-pyv}Zrn;\x07H--yr-sy||\\x-J-pyv}Sy||-I-:=;B-\v\v-no5sy||Vq\x07-:-pyv}Sy||6-I-=;FFH--vs-5.sy||\\x6-\n----r{-snyrH--\f--yr-}-J-v{-7-|yq]|H--vs-5};\x07-K-:=;B-33-};\x07-I-=;B-33-};\b-K-:=;B-33-};\b-I-=;B-33-}; -K-:=;B-33-}; -I-=;B6-\n----r{-rH--\f--r{-snyrH\fMp|z}r-M|xt|}lv r5?BC6s{-znv{5Movyv{5ty|onylv{|pnv|{lvq6-tvqG-rp@I@?K6-\n--yr-vq\x07-J-tvq;\x07H--yr-prr{dvqu-J-snzr;prr{V{s|;\x07H--yr-prr{Urvtu-J-snzr;prr{V{s|;\bH--yr-}|v{P|{-J-vyr;vyr]npx;\x07H--yr-}|v{`v rZ|qr-J-snzr;prr{V{s|;H--yr-}|v{`pnyr-J-snzr;v rV{s|=;\x07H--yr-}|v{Zv{]v\x07ry-J-snzr;v rV{s|=;\bH--yr-}|v{Zn\x07]v\x07ry-J-snzr;v rV{s|=; H--yr-}v\x07ry_nv|-J-snzr;v rV{s|=;H--yr-r|yv|{f-J-s@?5snzr;v rV{s|>;\x076H--yr-}|v{]v\x07ryUnqZn\x07-J-s@?5snzr;v rV{s|>;\b6H--yr-}|v{`un}r-J-snzr;v rV{s|>; H--yr-p|y|`\byr-J-snzr;\byr]npx;\x07H--yr-sy||`\byr-J-snzr;\byr]npx;\bH--yr-}|v{Onpx-J-snzr;\byr]npx; H--yr-synt-J-vyr;vyr]npx;\bH--yr-un[|zny-J-5synt-3->6-.J-=H--yr-sy||Vq\x07-J-snzr;sy||]npx;\x07H--yr-u|{Sy||-J-snzr;sy||]npx;\bH--yr-z|qryNy}un-J-snzr;sy||]npx;H--vs-5vq\x07-KJ-}|v{P|{6-\n----r{H--\f--yr-onr-J-vq\x07-7-@H--yr-}|-J-rp@Is@?K5}|vv|{honrj9-}|vv|{honr-8->j9-}|vv|{honr-8-?j6H--yr-|yq]|A-J-vyr;z|qryZnv\x07-7-rpAIs@?K5}|9->;=6H--yr-|yq]|-J-|yq]|A;\x07\b H--n-{d|yq-J-rp@Is@?K5=;=6H--vs-5un[|zny6-\n----yr-{Y|pny-J-{}npxlvE\x07Al{|zny5}|v{[|znyhvq\x07j6H----{d|yq-J-{|znyv r5zn@\x07@Is@?K5------vyr;z|qryZnv\x07h=j;\x07\b 9------vyr;z|qryZnv\x07h>j;\x07\b 9------vyr;z|qryZnv\x07h?j;\x07\b 9----6-7-{Y|pny6H--\f--yr-vPr{Sy||-J-u|{Sy||-I-:=;=>-\v\v-no5sy||Vq\x07-:-u|{Sy||6-I-=;FFH--vs-5sy||`\byr-JJ-=-33-.vPr{Sy||6-\n----r{H--\f--vs-5pyv}lr5snzr;pyv}=V{9-snzr;pyv}=Zrn9-|yq]|A9-sy||Vq\x0766-\n----r{H--\f--vs-5pyv}lr5snzr;pyv}>V{9-snzr;pyv}>Zrn9-|yq]|A9-sy||Vq\x0766-\n----r{H--\f--n-sy||\\}npv\b-J->;=H--vs-5.vPr{Sy||-33-sy||`\byr-JJ->6-\n----sy||\\}npv\b-J-pynz}5=;?-7-zv{5>;=-8-snzr;pnzrnS|nq;\b9->;=69-=;=9->;=6H--\f--yr-pyv}-J-snzr;vr]|w-7-vyr;z|qryZnv\x07-7-rpAIs@?K5}|9->;=6H--vs-5no5pyv};6-I->r:C6-\n----r{H--\f--n-{qp-J-pyv};\x07\b -<-pyv};H--yr-p\x07s-J-5{qp;\x07-7-=;B-8-=;B6-7-s@?5prr{dvqu6H--yr-p\bs-J-5>;=-:-5{qp;\b-7-=;B-8-=;B66-7-s@?5prr{Urvtu6H--yr-p\x07-J-v@?5p\x07s6H--yr-p\b-J-v@?5p\bs6H--n-qr}u=>-J-pynz}5{qp; 9-=;=9->;=6H--yr-qr}ub>C-J-@?5qr}u=>-7-CBB@B;=6H--n-to-J-toBCBl|lyv{rn5p|y|hvq\x07j-3-=\x07SSSS6H--vs-5p|y|`\byr-JJ-?6-\n----to-J-snzr;p|{n{P|y|;\x07\b H--\f-ryr-vs-5p|y|`\byr-JJ->6-\n----yr-qr{|z-J-zn\x075vyr;oo|\x07Zn\x07;\b-:-vyr;oo|\x07Zv{;\b9->r:C6H----yr-Tnq-J-5|yq]|;\b-:-vyr;oo|\x07Zv{;\b6-<-qr{|zH----to-J-r\x07r`nz}yrYrry5tnqvr{ar\x079-tnqvr{`nz}yr9-rp?Is@?K5pynz}5Tnq9-=;=9->;=69-=;B69-=;=6;toH--\f--vs-5no5snzr;p|y|Tnv{;\x076-K->r:C-\v\v-no5snzr;p|y|Tnv{;\b6-K->r:C-\v\v------snzr;p|y|Tnv{; -K->r:C-\v\v-no5snzr;p|y|Tnv{;6-K->r:C6-\n----to-J-n}}y\blp|y|lnqwzr{5to9-{d|yq9-|yq]|6H--\f--vs-5un[|zny-33-}|v{Onpx-JJ->6-\n----yr-pnzQv-J-{|znyv r5snzr;pnzrnd|yq;\x07\b -:-|yq]|6H----vs-5q|5pnzQv9-{d|yq6-I-=;=6-\n------r{H----\f--\f-ryr-vs-5un[|zny-33-}|v{Onpx-JJ-?6-\n----yr-pnzQv-J-{|znyv r5snzr;pnzrnd|yq;\x07\b -:-|yq]|6H----vs-5q|5pnzQv9-{d|yq6-I-=;=6-\n------to-7J-=;EH----\f--\f--yr-ny}un-J-pynz}5z|qryNy}un-7-sy||\\}npv\b9-=;=9->;=6H--vs-5ny}un-I->r:A6-\n----r{H--\f--to-7J-ny}unH--to-7J-zn\x075vyr;oo|\x07Zn\x07;9-=;===>6H--yr-B-J-@?5pynz}5to;-7-@>;=9-=;=9-@>;=66H--yr-tC-J-@?5pynz}5to;t-7-C@;=9-=;=9-C@;=66H--yr-oB-J-@?5pynz}5to;o-7-@>;=9-=;=9-@>;=66H--yr-p|y|]npxrq-J-5B-II->>6-\v-5tC-II-B6-\v-oBH--yr-r{p|qrq-J-5qr}ub>C-II->C6-\v-5p|y|]npxrq-3-=\x07SSSS6H--yr-onr]|v{`v r-J-}|v{`pnyr-7-}v\x07ry_nv|H--n-}|v{`v r]v\x07ry-J-}|v{lv rl}v\x07rylnr{nrq5----}|v{`v rZ|qr9----onr]|v{`v r9----r|yv|{f9----snzr;}|v{Nr{]npx9----snzr;vrg_|9----|yq]|9--6H--}|v{`v r]v\x07ry-J-pynz}5}|v{`v r]v\x07ry9-}|v{Zv{]v\x07ry-7-}v\x07ry_nv|9-}|v{Zn\x07]v\x07ry-7-}v\x07ry_nv|6H--vs-5}|v{`v rZ|qr-JJ->6-\n----}|v{`v r]v\x07ry-J-zv{5}|v{`v r]v\x07ry9-}|v{]v\x07ryUnqZn\x076H--\f--}|v{`v r]v\x07ry-J-zn\x075}|v{`v r]v\x07ry9->;=6H--yr--J-v@?5prr{dvqu6H--yr-u-J-v@?5prr{Urvtu6H--vs-5}|v{`v r]v\x07ry-IJ->;=6-\n----vs-5p\x07-KJ-=-33-p\x07-I--33-p\b-KJ-=-33-p\b-I-u6-\n------yr-}v\x07ryVq\x07-J-@?5p\b6-7-prr{dvqu-8-@?5p\x076H------n|zvpZv{53snzrossrh}v\x07ryVq\x07j9-r{p|qrq6H----\f----r{H--\f--yr-unys`v r-J-}|v{`v r]v\x07ry-7-=;BH--yr-p\x07\\ss-J-p\x07s-:-=;BH--yr-p\b\\ss-J-p\bs-:-=;BH--yr-}\x07`n-J-zn\x075v@?5prvy5p\x07\\ss-:-unys`v r669-=6H--yr-}\x07R{q-J-zv{5v@?5sy||5p\x07\\ss-8-unys`v r669--:->6H--yr-}\b`n-J-zn\x075v@?5prvy5p\b\\ss-:-unys`v r669-=6H--yr-}\bR{q-J-zv{5v@?5sy||5p\b\\ss-8-unys`v r669-u-:->6H--yr-{rrqPvpyrZnx-J-}|v{`un}r-JJ->-33-}|v{`v r]v\x07ry-K-@;=H--yr-nqv`\0-J-unys`v r-7-unys`v rH--s|-5n-}\bG-v@?-J-}\b`nH-}\b-IJ-}\bR{qH-}\b-J-}\b-8->6-\n----s|-5n-}\x07G-v@?-J-}\x07`nH-}\x07-IJ-}\x07R{qH-}\x07-J-}\x07-8->6-\n------vs-5{rrqPvpyrZnx6-\n--------yr-qq\x07-J-5s@?5}\x076-8-=;B6-:-p\x07sH--------yr-qq\b-J-5s@?5}\b6-8-=;B6-:-p\bsH--------vs-5qq\x07-7-qq\x07-8-qq\b-7-qq\b-K-nqv`\x006-\n----------p|{v{rH--------\f------\f------yr-}v\x07ryVq\x07-J-@?5}\b6-7-prr{dvqu-8-@?5}\x076H------n|zvpZv{53snzrossrh}v\x07ryVq\x07j9-r{p|qrq6H----\f--\f\f");function uS(e,t,n){let r=Math.round(e*31)&31,i=Math.round(t*63)&63,a=Math.round(n*31)&31;return r<<11|i<<5|a}function dS(e){return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}var Q=class e{get colorFormat(){return this.format}constructor(t,n){this.width=0,this.height=0,this.pointBuffer=null,this.colorBuffer=null,this.normalBuffer=null,this.framebuffer=null,this.clearBindGroup=null,this.rasterizeBindGroup=null,this.displayBindGroup=null,this.pointCount=0,this.frameUniformScratch=new ArrayBuffer(e.FRAME_UNIFORM_SIZE),this.tileUniformScratch=new ArrayBuffer(e.TILE_UNIFORM_SIZE),this.pointSizeUniformState={sizeMode:1,pointScale:.02,pointMinPixel:0,pointMaxPixel:40,pixelRatio:1,resolutionY:1,hardPixelMax:12,pointShape:1,maxDisplayBoost:1},this.ready=!1,this.lastBoundComputePipeline=null,this.pointCloudCache=new Map,this.rasterizeBindGroupCache=new Map,this.tileUniformBufferCache=new Map,this.tileDisposeListeners=new Map,this.packedColorScratch=new Uint32Array,this.packedNormalScratch=new Uint32Array,this.tmpVec3a=new l.Vector3,this.tmpVec3b=new l.Vector3,this.tmpVec3c=new l.Vector3,this.tmpVec3d=new l.Vector3,this.device=t,this.format=n,this.frameUniformBuffer=t.createBuffer({size:e.FRAME_UNIFORM_SIZE,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.displayParamsBuffer=t.createBuffer({size:8,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});let r=new DataView(this.frameUniformScratch),i=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);new Float32Array(this.frameUniformScratch,0,16).set(i),r.setUint32(e.OFFSET_SCREEN_WIDTH,0,!0),r.setUint32(e.OFFSET_SCREEN_HEIGHT,0,!0),r.setUint32(e.OFFSET_POINT_SIZE_MODE,this.pointSizeUniformState.sizeMode,!0),r.setFloat32(e.OFFSET_POINT_SCALE,this.pointSizeUniformState.pointScale,!0),r.setFloat32(e.OFFSET_POINT_MIN_PIXEL,this.pointSizeUniformState.pointMinPixel,!0),r.setFloat32(e.OFFSET_POINT_MAX_PIXEL,this.pointSizeUniformState.pointMaxPixel,!0),r.setFloat32(e.OFFSET_PIXEL_RATIO,this.pointSizeUniformState.pixelRatio,!0),r.setUint32(e.OFFSET_RESOLUTION_Y,Math.round(this.pointSizeUniformState.resolutionY),!0),r.setUint32(e.OFFSET_POINT_PIXEL_HARD_MAX,Math.round(this.pointSizeUniformState.hardPixelMax),!0),r.setUint32(e.OFFSET_POINT_SHAPE,this.pointSizeUniformState.pointShape,!0),t.queue.writeBuffer(this.frameUniformBuffer,0,this.frameUniformScratch);let a=t.createShaderModule({code:sS}),o=t.createShaderModule({code:lS}),s=t.createShaderModule({code:cS});this.clearPipeline=t.createComputePipeline({layout:`auto`,compute:{module:a,entryPoint:`main`}}),this.rasterizePipeline=t.createComputePipeline({layout:`auto`,compute:{module:o,entryPoint:`main`}}),this.fullscreenQuadPipeline=t.createRenderPipeline({layout:`auto`,vertex:{module:s,entryPoint:`vs_main`},fragment:{module:s,entryPoint:`fs_main`,targets:[{format:this.format}]},primitive:{topology:`triangle-list`},depthStencil:{format:`depth24plus`,depthWriteEnabled:!0,depthCompare:`less`}}),this.fullscreenQuadPipelineAdditive=t.createRenderPipeline({layout:`auto`,vertex:{module:s,entryPoint:`vs_main`},fragment:{module:s,entryPoint:`fs_main`,targets:[{format:this.format,blend:{color:{srcFactor:`one`,dstFactor:`one`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one`,operation:`add`}}}]},primitive:{topology:`triangle-list`},depthStencil:{format:`depth24plus`,depthWriteEnabled:!0,depthCompare:`less`}}),this.placeholderGradientTexture=t.createTexture({size:{width:1,height:1},format:`rgba8unorm`,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),this.placeholderGradientView=this.placeholderGradientTexture.createView(),t.queue.writeTexture({texture:this.placeholderGradientTexture},new Uint8Array([128,128,128,255]),{offset:0,bytesPerRow:4},{width:1,height:1,depthOrArrayLayers:1}),this.gradientSampler=t.createSampler({magFilter:`linear`,minFilter:`linear`,addressModeU:`clamp-to-edge`,addressModeV:`clamp-to-edge`})}setPointCloud(e,t,n,r,i,a){var o,s,c,l;let u=(o=i==null?void 0:i.positionsVersion)==null?0:o,d=(s=i==null?void 0:i.colorsVersion)==null?0:s,f=(c=e.styleRevision)==null?0:c,p=this.pointCloudCache.get(e);if(p&&p.count===r&&p.positionsRef===t&&p.colorsRef===n&&p.positionsVersion===u&&p.colorsVersion===d&&p.styleRevision===f)this.pointBuffer=p.pointBuffer,this.colorBuffer=p.colorBuffer,this.pointCount=p.count,this.normalBuffer=p.normalBuffer;else{p&&(p.pointBuffer.destroy(),p.colorBuffer.destroy(),p.normalBuffer.destroy(),this.rasterizeBindGroupCache.delete(e));let i=this.device.createBuffer({size:Math.max(12,r*12),usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST});this.device.queue.writeBuffer(i,0,t.buffer,t.byteOffset,r*12);let a=this.device.createBuffer({size:Math.max(4,r*4),usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST});if(this.packedColorScratch.length<r&&(this.packedColorScratch=new Uint32Array(r)),n instanceof Uint8Array)for(let e=0;e<r;e++){let t=e*3,r=dS(n[t]/255),i=dS(n[t+1]/255),a=dS(n[t+2]/255);this.packedColorScratch[e]=uS(r,i,a)}else for(let e=0;e<r;e++){let t=e*3;this.packedColorScratch[e]=uS(n[t],n[t+1],n[t+2])}this.device.queue.writeBuffer(a,0,this.packedColorScratch.buffer,0,r*4);let o=this.device.createBuffer({size:Math.max(4,r*4),usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST});this.packedNormalScratch.length<r&&(this.packedNormalScratch=new Uint32Array(r));let s=this.packedNormalScratch,c=e.normals;if(cn(c,r))for(let e=0;e<r;e++){let t=e*4;s[e]=c[t]&255|(c[t+1]&255)<<8|(c[t+2]&255)<<16}else for(let e=0;e<r;e++)s[e]=8323072;this.device.queue.writeBuffer(o,0,s.buffer,s.byteOffset,r*4),this.pointCloudCache.set(e,{pointBuffer:i,colorBuffer:a,normalBuffer:o,count:r,positionsRef:t,colorsRef:n,positionsVersion:u,colorsVersion:d,styleRevision:f}),this.registerTileDisposer(e),this.pointBuffer=i,this.colorBuffer=a,this.normalBuffer=o,this.pointCount=r}let m=(l=a==null?void 0:a.gradientView)==null?this.placeholderGradientView:l,h=this.normalBuffer;if(!h)return;let g=this.ensureTileUniformBuffer(e);this.bindRasterizeGroup(e,g,m,h),this.ready=!!this.framebuffer&&!!this.rasterizeBindGroup}beginPointCloudFrame(t,n,r){r.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse);let i=r.elements,a=new DataView(this.frameUniformScratch);for(let t=0;t<16;t++)a.setFloat32(e.OFFSET_VIEW_PROJ+t*4,i[t],!0);this.writeFrameUniformsDataView(a,n,t,r),this.device.queue.writeBuffer(this.frameUniformBuffer,0,this.frameUniformScratch)}writeTileUniform(e,t){let n=this.ensureTileUniformBuffer(e),r=new DataView(this.tileUniformScratch);this.writeTileUniformsDataView(r,e,t),this.device.queue.writeBuffer(n,0,this.tileUniformScratch)}setPointSizeParams(e){var t;this.pointSizeUniformState.sizeMode=+(e.sizeMode===`ATTENUATION`),this.pointSizeUniformState.pointScale=Math.max(0,e.pointScale),this.pointSizeUniformState.pointMinPixel=Math.max(0,e.pointMinPixel),this.pointSizeUniformState.pointMaxPixel=Math.max(this.pointSizeUniformState.pointMinPixel,e.pointMaxPixel),this.pointSizeUniformState.pixelRatio=Math.max(.1,e.pixelRatio),this.pointSizeUniformState.resolutionY=Math.max(1,e.resolutionY),this.pointSizeUniformState.pointShape=+(e.pointShape===`CIRCLE`);let n=(t=e.maxDisplayBoost)==null?this.pointSizeUniformState.maxDisplayBoost:t;this.pointSizeUniformState.maxDisplayBoost=Math.max(.1,n),this.pointSizeUniformState.hardPixelMax=Math.round(Math.min(96,Math.max(1,this.pointSizeUniformState.pointMaxPixel*this.pointSizeUniformState.pixelRatio)))}getPlaceholderGradientView(){return this.placeholderGradientView}static tileFlags(e,t){let n=0;return cn(e.normals,t)&&(n|=1),e.useAddBlend&&(n|=8),n}writePointAttenuationUniforms(t,n){let r=n.projectionMatrix.elements,i=n.matrixWorldInverse.elements;t.setFloat32(e.OFFSET_POINT_ATTEN_PACK,-r[11],!0),t.setFloat32(e.OFFSET_POINT_ATTEN_PACK+4,2/r[5],!0),t.setFloat32(e.OFFSET_POINT_ATTEN_PACK+8,0,!0),t.setFloat32(e.OFFSET_POINT_ATTEN_PACK+12,0,!0),t.setFloat32(e.OFFSET_VIEW_Z_ROW,i[2],!0),t.setFloat32(e.OFFSET_VIEW_Z_ROW+4,i[6],!0),t.setFloat32(e.OFFSET_VIEW_Z_ROW+8,i[10],!0),t.setFloat32(e.OFFSET_VIEW_Z_ROW+12,i[14],!0)}writeFrameUniformsDataView(t,n,r,i){var a,o;t.setUint32(e.OFFSET_SCREEN_WIDTH,this.width,!0),t.setUint32(e.OFFSET_SCREEN_HEIGHT,this.height,!0),t.setUint32(e.OFFSET_SCREEN_WIDTH+8,0,!0),this.writePointAttenuationUniforms(t,r),t.setUint32(e.OFFSET_POINT_SIZE_MODE,this.pointSizeUniformState.sizeMode,!0),t.setFloat32(e.OFFSET_POINT_SCALE,this.pointSizeUniformState.pointScale,!0),t.setFloat32(e.OFFSET_POINT_MIN_PIXEL,this.pointSizeUniformState.pointMinPixel,!0),t.setFloat32(e.OFFSET_POINT_MAX_PIXEL,this.pointSizeUniformState.pointMaxPixel,!0),t.setFloat32(e.OFFSET_PIXEL_RATIO,this.pointSizeUniformState.pixelRatio,!0),t.setUint32(e.OFFSET_RESOLUTION_Y,Math.round(this.pointSizeUniformState.resolutionY),!0),t.setUint32(e.OFFSET_POINT_PIXEL_HARD_MAX,Math.round(this.pointSizeUniformState.hardPixelMax),!0),t.setUint32(e.OFFSET_POINT_SHAPE,this.pointSizeUniformState.pointShape,!0);let s=n.colorStyle===`ALTITUDE`?1:n.colorStyle===`CONSTANT`?2:0,c=+(n.floorStyle===`OPACITY`),l=n.pointBack===`HIDDEN`?1:n.pointBack===`DARK`?2:0;r.updateMatrixWorld(!0);let u=r.getWorldPosition(this.tmpVec3c);t.setFloat32(e.OFFSET_CAMERA_WORLD,u.x,!0),t.setFloat32(e.OFFSET_CAMERA_WORLD+4,u.y,!0),t.setFloat32(e.OFFSET_CAMERA_WORLD+8,u.z,!0),t.setFloat32(e.OFFSET_CAMERA_WORLD+12,0,!0);let d=this.tmpVec3d.set(0,0,-1).applyQuaternion(r.quaternion);t.setFloat32(e.OFFSET_CAMERA_FORWARD,d.x,!0),t.setFloat32(e.OFFSET_CAMERA_FORWARD+4,d.y,!0),t.setFloat32(e.OFFSET_CAMERA_FORWARD+8,d.z,!0),t.setFloat32(e.OFFSET_CAMERA_FORWARD+12,0,!0),t.setFloat32(e.OFFSET_CONSTANT_COLOR,n.constantColor.x,!0),t.setFloat32(e.OFFSET_CONSTANT_COLOR+4,n.constantColor.y,!0),t.setFloat32(e.OFFSET_CONSTANT_COLOR+8,n.constantColor.z,!0),t.setFloat32(e.OFFSET_CONSTANT_COLOR+12,1,!0),t.setFloat32(e.OFFSET_COLOR_GAIN,n.colorSaturation,!0),t.setFloat32(e.OFFSET_COLOR_GAIN+4,n.colorBrightness,!0),t.setFloat32(e.OFFSET_COLOR_GAIN+8,n.outlineGain,!0),t.setFloat32(e.OFFSET_COLOR_GAIN+12,n.distanceGain,!0),t.setUint32(e.OFFSET_STYLE_PACK,s,!0),t.setUint32(e.OFFSET_STYLE_PACK+4,c,!0),t.setUint32(e.OFFSET_STYLE_PACK+8,l,!0),t.setUint32(e.OFFSET_STYLE_PACK+12,0,!0),t.setFloat32(e.OFFSET_FLOOR_PACK,n.floorIndex,!0),t.setFloat32(e.OFFSET_FLOOR_PACK+4,n.shownFloorIndex,!0),t.setFloat32(e.OFFSET_FLOOR_PACK+8,n.opacity,!0),t.setFloat32(e.OFFSET_FLOOR_PACK+12,n.modelAlpha,!0);let f=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);for(let n=0;n<16;n++)t.setFloat32(e.OFFSET_CLIP0_INV+n*4,f[n],!0),t.setFloat32(e.OFFSET_CLIP1_INV+n*4,f[n],!0);t.setFloat32(e.OFFSET_CLIP0_META+12,0,!0),t.setFloat32(e.OFFSET_CLIP1_META+12,0,!0);let p=n.clippers;if(p.length>0){let n=p[0];i.copy(n.clippingBoxMatrix).invert();let r=i.elements;for(let n=0;n<16;n++)t.setFloat32(e.OFFSET_CLIP0_INV+n*4,r[n],!0);t.setFloat32(e.OFFSET_CLIP0_META,(a=n.floorIndex)==null?-1:a,!0),t.setFloat32(e.OFFSET_CLIP0_META+12,1,!0)}if(p.length>1){let n=p[1];i.copy(n.clippingBoxMatrix).invert();let r=i.elements;for(let n=0;n<16;n++)t.setFloat32(e.OFFSET_CLIP1_INV+n*4,r[n],!0);t.setFloat32(e.OFFSET_CLIP1_META,(o=n.floorIndex)==null?-1:o,!0),t.setFloat32(e.OFFSET_CLIP1_META+12,1,!0)}}writeTileUniformsDataView(t,n,r){let i=n.matrixWorld.elements;for(let n=0;n<16;n++)t.setFloat32(e.OFFSET_TILE_MODEL+n*4,i[n],!0);let a=this.tmpVec3a.copy(n.modelBoundingMin),o=this.tmpVec3b.copy(n.modelBoundingMax);t.setFloat32(e.OFFSET_TILE_BBOX_MIN,a.x,!0),t.setFloat32(e.OFFSET_TILE_BBOX_MIN+4,a.y,!0),t.setFloat32(e.OFFSET_TILE_BBOX_MIN+8,a.z,!0),t.setFloat32(e.OFFSET_TILE_BBOX_MIN+12,0,!0),t.setFloat32(e.OFFSET_TILE_BBOX_MAX,o.x,!0),t.setFloat32(e.OFFSET_TILE_BBOX_MAX+4,o.y,!0),t.setFloat32(e.OFFSET_TILE_BBOX_MAX+8,o.z,!0),t.setFloat32(e.OFFSET_TILE_BBOX_MAX+12,n.brightness,!0),t.setUint32(e.OFFSET_TILE_PACK,r,!0),t.setUint32(e.OFFSET_TILE_PACK+4,e.tileFlags(n,r),!0)}resize(t,n){var r;t<=0||n<=0||(this.width=t,this.height=n,(r=this.framebuffer)==null||r.destroy(),this.framebuffer=this.device.createBuffer({size:t*n*4,usage:GPUBufferUsage.STORAGE}),this.device.queue.writeBuffer(this.displayParamsBuffer,0,new Uint32Array([t,n])),this.device.queue.writeBuffer(this.frameUniformBuffer,e.OFFSET_SCREEN_WIDTH,new Uint32Array([t,n])),this.rasterizeBindGroupCache.clear(),this.rasterizeBindGroup=null,this.ready=!1,this.recreateBindGroups())}encodeFramebufferClear(e){!this.clearBindGroup||!this.framebuffer||(e.setPipeline(this.clearPipeline),this.lastBoundComputePipeline=this.clearPipeline,e.setBindGroup(0,this.clearBindGroup),e.dispatchWorkgroups(Math.ceil(this.width*this.height/256)))}encodeRasterize(e){if(!this.ready||!this.rasterizeBindGroup||!this.pointBuffer||!this.colorBuffer||this.pointCount<=0)return;let t=this.rasterizePipeline;this.lastBoundComputePipeline!==t&&(e.setPipeline(t),this.lastBoundComputePipeline=t),e.setBindGroup(0,this.rasterizeBindGroup),e.dispatchWorkgroups(Math.ceil(this.pointCount/256))}encodeFramebufferDisplay(e,t){if(!this.displayBindGroup||!this.framebuffer)return;let n=t!=null&&t.additive?this.fullscreenQuadPipelineAdditive:this.fullscreenQuadPipeline;e.setPipeline(n),e.setBindGroup(0,this.displayBindGroup),e.draw(3)}submitMergedPointCloudFrame(e,t,n,r){var i,a,o;let s=(i=r==null?void 0:r.clear)==null?!0:i,c=(a=r==null?void 0:r.display)==null?!0:a,l=(o=r==null?void 0:r.displayAdditive)==null?!1:o,u=this.device.createCommandEncoder(),d=u.beginComputePass();if(this.lastBoundComputePipeline=null,s&&this.encodeFramebufferClear(d),n(d),d.end(),c){let n=u.beginRenderPass({colorAttachments:[{view:e,loadOp:`load`,storeOp:`store`}],depthStencilAttachment:{view:t,depthLoadOp:`load`,depthStoreOp:`store`}});this.encodeFramebufferDisplay(n,{additive:l}),n.end()}this.device.queue.submit([u.finish()])}dispose(){var e;for(let[e,t]of this.tileDisposeListeners)try{e.removeEventListener(`dispose`,t)}catch(e){}this.tileDisposeListeners.clear();for(let e of this.pointCloudCache.values())e.pointBuffer.destroy(),e.colorBuffer.destroy(),e.normalBuffer.destroy();this.pointCloudCache.clear();for(let e of this.tileUniformBufferCache.values())e.destroy();this.tileUniformBufferCache.clear(),this.rasterizeBindGroupCache.clear(),(e=this.framebuffer)==null||e.destroy(),this.frameUniformBuffer.destroy(),this.displayParamsBuffer.destroy(),this.placeholderGradientTexture.destroy(),this.pointBuffer=null,this.colorBuffer=null,this.normalBuffer=null,this.framebuffer=null,this.clearBindGroup=null,this.rasterizeBindGroup=null,this.displayBindGroup=null,this.ready=!1}registerTileDisposer(e){if(this.tileDisposeListeners.has(e))return;let t=e;if(typeof t.addEventListener!=`function`)return;let n=()=>{this.releaseTileResources(e)};this.tileDisposeListeners.set(e,n),t.addEventListener(`dispose`,n)}releaseTileResources(e){let t=this.pointCloudCache.get(e);t&&(t.pointBuffer.destroy(),t.colorBuffer.destroy(),t.normalBuffer.destroy(),this.pointCloudCache.delete(e)),this.rasterizeBindGroupCache.delete(e);let n=this.tileUniformBufferCache.get(e);n&&(n.destroy(),this.tileUniformBufferCache.delete(e));let r=this.tileDisposeListeners.get(e);if(r){try{e.removeEventListener(`dispose`,r)}catch(e){}this.tileDisposeListeners.delete(e)}}recreateBindGroups(){this.clearBindGroup=null,this.rasterizeBindGroup=null,this.displayBindGroup=null,this.ready=!1,this.framebuffer&&(this.clearBindGroup=this.device.createBindGroup({layout:this.clearPipeline.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:this.framebuffer}},{binding:1,resource:{buffer:this.frameUniformBuffer}}]}),this.displayBindGroup=this.device.createBindGroup({layout:this.fullscreenQuadPipeline.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:this.framebuffer}},{binding:1,resource:{buffer:this.displayParamsBuffer}}]}),this.ready=!1)}ensureTileUniformBuffer(t){let n=this.tileUniformBufferCache.get(t);return n||(n=this.device.createBuffer({size:e.TILE_UNIFORM_SIZE,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.tileUniformBufferCache.set(t,n),this.registerTileDisposer(t)),n}bindRasterizeGroup(e,t,n,r){if(!this.framebuffer||!this.pointBuffer||!this.colorBuffer){this.rasterizeBindGroup=null;return}let i=this.rasterizeBindGroupCache.get(e);if(i&&i.pointBuffer===this.pointBuffer&&i.colorBuffer===this.colorBuffer&&i.normalBuffer===r&&i.tileUniformBuffer===t&&i.gradientView===n){this.rasterizeBindGroup=i.bindGroup;return}let a=this.device.createBindGroup({layout:this.rasterizePipeline.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:this.framebuffer}},{binding:1,resource:{buffer:this.frameUniformBuffer}},{binding:2,resource:{buffer:this.pointBuffer}},{binding:3,resource:{buffer:this.colorBuffer}},{binding:4,resource:n},{binding:5,resource:this.gradientSampler},{binding:6,resource:{buffer:r}},{binding:7,resource:{buffer:t}}]});this.rasterizeBindGroupCache.set(e,{bindGroup:a,pointBuffer:this.pointBuffer,colorBuffer:this.colorBuffer,normalBuffer:r,tileUniformBuffer:t,gradientView:n}),this.rasterizeBindGroup=a}};Q.FRAME_UNIFORM_SIZE=512,Q.TILE_UNIFORM_SIZE=256,Q.OFFSET_VIEW_PROJ=0,Q.OFFSET_SCREEN_WIDTH=64,Q.OFFSET_SCREEN_HEIGHT=68,Q.OFFSET_POINT_SIZE_MODE=76,Q.OFFSET_POINT_ATTEN_PACK=80,Q.OFFSET_VIEW_Z_ROW=96,Q.OFFSET_POINT_SCALE=112,Q.OFFSET_POINT_MIN_PIXEL=116,Q.OFFSET_POINT_MAX_PIXEL=120,Q.OFFSET_PIXEL_RATIO=124,Q.OFFSET_RESOLUTION_Y=128,Q.OFFSET_POINT_PIXEL_HARD_MAX=132,Q.OFFSET_POINT_SHAPE=136,Q.OFFSET_CAMERA_WORLD=144,Q.OFFSET_CAMERA_FORWARD=160,Q.OFFSET_CONSTANT_COLOR=176,Q.OFFSET_COLOR_GAIN=192,Q.OFFSET_STYLE_PACK=208,Q.OFFSET_FLOOR_PACK=224,Q.OFFSET_CLIP0_INV=240,Q.OFFSET_CLIP0_META=304,Q.OFFSET_CLIP1_INV=320,Q.OFFSET_CLIP1_META=384,Q.OFFSET_TILE_MODEL=0,Q.OFFSET_TILE_BBOX_MIN=64,Q.OFFSET_TILE_BBOX_MAX=80,Q.OFFSET_TILE_PACK=96;var fS=new l.Matrix4,pS=class{constructor(e){var t;this.renderMode=`default`,this.computeRenderer=null,this.useComputePointCloud=null,this.compositeRenderTarget=null,this.lastWidth=0,this.lastHeight=0,this.gpuTextureViewCache=new WeakMap,this.outputType=(t=e==null?void 0:e.outputType)==null?l.UnsignedByteType:t,this.composer=new lx(e),this.composerVersion=``,this.renderMode=`default`,this.sceneRenders={default:new oS}}render(e,t,n,r,i){var a,o;let s=e.domElement,c=s.width,u=s.height;if(c<=0||u<=0)return!1;this.composer.updateStatus();let{endabledPassNumber:d,needsColorGBuffer:f,needsDepthGBuffer:p,version:m}=this.composer.status,h=d>0,g=e.getRenderTarget();if((c!==this.lastWidth||u!==this.lastHeight)&&(this.lastWidth=c,this.lastHeight=u,(a=this.compositeRenderTarget)==null||a.dispose(),this.compositeRenderTarget=new l.RenderTarget(c,u,{type:this.outputType}),this.compositeRenderTarget.depthTexture=new l.DepthTexture(c,u),(o=this.computeRenderer)==null||o.resize(c,u),i=!0),!this.compositeRenderTarget)return e.setRenderTarget(g),!1;!i&&h&&m!==this.composerVersion&&(i=!0),this.composerVersion=m,i&&this.renderSceneToComposite(e,t,n,r);let _=!1;return h?(this.composer.setSize(c,u),this.composer.gbuffer.clear(),f&&this.composer.gbuffer.set(`color`,this.compositeRenderTarget.texture),p&&this.compositeRenderTarget.depthTexture&&this.composer.gbuffer.set(`depth`,this.compositeRenderTarget.depthTexture),e.setRenderTarget(this.composer.readBuffer),wx(e,this.compositeRenderTarget.texture),_=this.composer.render(e)):i&&(e.setRenderTarget(null),wx(e,this.compositeRenderTarget.texture),_=!0),e.setRenderTarget(g),_}renderSceneToComposite(e,t,n,r){if(!this.compositeRenderTarget)return;r.updateMatrixWorld(!0),t.updateMatrixWorld(!0);let i=[];if(t.traverse(e=>{e instanceof pn&&i.push(e)}),i.length===0){e.setRenderTarget(this.compositeRenderTarget),e.clear(!0,!0,!0),e.render(t,r);return}if(this.useComputePointCloud===null)try{let t=e.backend;this.useComputePointCloud=(t==null?void 0:t.isWebGPUBackend)===!0&&!!(t!=null&&t.device)}catch(e){this.useComputePointCloud=!1}this.useComputePointCloud?this.renderPointCloudCompute(e,t,i,r):(e.setRenderTarget(this.compositeRenderTarget),e.clear(!0,!0,!0),e.render(t,r))}renderPointCloudCompute(e,t,n,r){var i,a,o;e.setRenderTarget(this.compositeRenderTarget),e.clear(!0,!0,!0);let s=this.getCompositeTargetViews(e),c=s==null?void 0:s.colorFormat;if(c&&((i=this.computeRenderer)==null?void 0:i.colorFormat)!==c)try{let t=e.backend.device;if(!t)return;(a=this.computeRenderer)==null||a.dispose(),this.computeRenderer=new Q(t,c),this.computeRenderer.resize(this.lastWidth,this.lastHeight)}catch(e){this.computeRenderer=null;return}if(!this.computeRenderer)return;let l=Math.max(.1,r.pixelRatio||e.getPixelRatio()),u=Math.max(1,((o=r.resolution)==null?void 0:o.y)||this.lastHeight),d=[];for(let e of n)e.visible&&e.layers.test(r.layers)&&Math.max(0,Math.min(e.visiblePointCount,e.numPoints))!==0&&d.push(e);if(s&&d.length>0){let t=d.some(e=>e.useAddBlend),n=d[0];this.computeRenderer.setPointSizeParams({sizeMode:n.pointSize,pointShape:n.pointShape,pointScale:n.pointScale,pointMinPixel:n.pointMinPixel,pointMaxPixel:n.pointMaxPixel,pixelRatio:l,resolutionY:u,maxDisplayBoost:n.maxDisplayBoost}),this.computeRenderer.submitMergedPointCloudFrame(s.colorView,s.depthView,t=>{var i;this.computeRenderer.beginPointCloudFrame(r,n,fS);for(let n of d){let r=Math.max(0,Math.min(n.visiblePointCount,n.numPoints)),a=(i=this.getCachedGpuTextureView(e,n.gradientTexture))==null?this.computeRenderer.getPlaceholderGradientView():i;this.computeRenderer.setPointCloud(n,n.positions,n.colors,r,{positionsVersion:n.positionVersion,colorsVersion:n.styleRevision},{gradientView:a}),this.computeRenderer.writeTileUniform(n,r),this.computeRenderer.encodeRasterize(t)}},{displayAdditive:t})}let f=[];for(let e of n)e.visible&&(e.visible=!1,f.push(e));let p=e.autoClear,m=e.autoClearColor,h=e.autoClearDepth,g=e.autoClearStencil;e.autoClear=!1,e.autoClearColor=!1,e.autoClearDepth=!1,e.autoClearStencil=!1,e.setRenderTarget(this.compositeRenderTarget),e.render(t,r),e.autoClear=p,e.autoClearColor=m,e.autoClearDepth=h,e.autoClearStencil=g;for(let e of f)e.visible=!0}dispose(){var e,t;this.composer.dispose(),(e=this.computeRenderer)==null||e.dispose(),this.computeRenderer=null,(t=this.compositeRenderTarget)==null||t.dispose(),this.compositeRenderTarget=null}getCompositeTargetViews(e){var t;if(!((t=this.compositeRenderTarget)!=null&&t.depthTexture))return null;try{let t=e.backend,n=t.get(this.compositeRenderTarget.texture),r=t.get(this.compositeRenderTarget.depthTexture),i=n==null?void 0:n.texture,a=r==null?void 0:r.texture;return!i||!a?null:{colorView:i.createView(),depthView:a.createView(),colorFormat:i.format}}catch(e){return null}}getCachedGpuTextureView(e,t){var n;if(!t)return null;try{let r=e.backend,i=(n=r==null?void 0:r.get)==null?void 0:n.call(r,t),a=i==null?void 0:i.texture;if(!a)return null;let o=this.gpuTextureViewCache.get(a);return o||(o=a.createView(),this.gpuTextureViewCache.set(a,o)),o}catch(e){return null}}},mS,hS=typeof navigator<`u`?((mS=navigator==null?void 0:navigator.userAgent)==null?``:mS).toLowerCase():`node`;(()=>{try{let e=document.createElement(`canvas`);return!!(window.WebGLRenderingContext&&(e.getContext(`webgl`)||e.getContext(`experimental-webgl`)))}catch(e){return!1}})();var gS=typeof navigator<`u`&&navigator.gpu!==void 0;typeof window<`u`&&gS?navigator.gpu.requestAdapter().then(e=>(e||(gS=!1),gS)).catch(()=>(gS=!1,gS)):Promise.resolve(gS),typeof history<`u`&&`pushState`in history&&`replaceState`in history&&`state`in history;var _S=/android/i.test(hS)||/webos/i.test(hS)||/ipad|iphone|ipod/i.test(hS)||/iemobile/i.test(hS)||/opera mini/i.test(hS)||/blackberry/i.test(hS)||/windows phone/i.test(hS),vS=[`trigger`,`grip`,`primary`,`secondary`,`pinch`],yS=[`x`,`y`];function bS(e){for(let t of Object.keys(e)){let n=e[t];typeof n==`object`&&n&&!Object.isFrozen(n)&&bS(n)}return Object.freeze(e)}function xS(){return{buttons:{trigger:0,grip:1,primary:4,secondary:5,pinch:null},axes:{x:2,y:3},model:`auto`}}function SS(){return{buttons:{trigger:null,grip:null,primary:null,secondary:null,pinch:null},axes:{x:null,y:null},model:`none`}}var CS=bS({Pico:xS(),Oculus:xS(),Default:xS(),VP:SS()});function wS(e,t){try{let n=e===void 0?navigator.userAgent:e,r=t===void 0?navigator.maxTouchPoints:t;return typeof n==`string`?n.includes(`PICO`)||n.includes(`Pico`)?`Pico`:n.includes(`Macintosh`)&&r===5?`VP`:n.includes(`Oculus`)?`Oculus`:`Default`:`Default`}catch(e){return`Default`}}function TS(e){return e===null||typeof e==`number`&&Number.isInteger(e)&&e>=0}function ES(e){return typeof e==`object`&&!!e}function DS(e,t){if(e)try{e(t)}catch(e){}}function OS(e,t,n){var r;let i=(r=CS[e])==null?CS.Default:r,a={buttons:Object.assign({},i.buttons),axes:Object.assign({},i.axes),model:i.model};if(!ES(t))return a;let o=t.buttons;if(o!==void 0)if(ES(o))for(let e of vS){let t=o[e];t!==void 0&&(TS(t)?a.buttons[e]=t:DS(n,`buttons.${e}`))}else DS(n,`buttons`);let s=t.axes;if(s!==void 0)if(ES(s))for(let e of yS){let t=s[e];t!==void 0&&(TS(t)?a.axes[e]=t:DS(n,`axes.${e}`))}else DS(n,`axes`);let c=t.model;return c!==void 0&&(c===`auto`||c===`none`?a.model=c:DS(n,`model`)),a}function kS(e){return e===`Default`?`Pico`:e}function AS(){let{gl:e}=this,t=e.fenceSync(e.SYNC_GPU_COMMANDS_COMPLETE,0);return e.flush(),new Promise((n,r)=>{function i(){if(t===null){r();return}let a=e.clientWaitSync(t,e.SYNC_FLUSH_COMMANDS_BIT,0);if(a===e.WAIT_FAILED){e.deleteSync(t),r();return}if(a===e.TIMEOUT_EXPIRED){setTimeout(i,0);return}e.deleteSync(t),n()}i()})}function jS(e){if(wS()===`Default`)return!1;let t=e;if((t==null?void 0:t.isWebGLBackend)!==!0)return!1;let n=t.utils;return!n||typeof n._clientWaitAsync!=`function`?!1:(n._clientWaitAsync=AS,!0)}var MS=1579548,NS=class extends l.WebGPURenderer{constructor({antialias:e=!1,logarithmicDepthBuffer:t,outputType:n=l.UnsignedByteType,forceWebGL:r=!1}){var i;super({antialias:e,alpha:!0,depth:!0,logarithmicDepthBuffer:t,outputType:n,forceWebGL:r}),this._backendReady=!1,this.forceWebGL=r,r===!1&&gS===!1&&console.warn(`设备不支持开启 WEBGPU`),this.outputColorSpace=l.SRGBColorSpace,this.setClearColor(MS,1);let a=(i=this.onDeviceLost)==null?void 0:i.bind(this);this.onDeviceLost=e=>{var t;a==null||a(e);try{(t=this.onDeviceLostCallback)==null||t.call(this,e)}catch(e){console.error(`onDeviceLostCallback error`,e)}},this.ready=this.init().then(()=>{jS(this.backend),this._backendReady=!0})}get isInitialized(){return this._backendReady}get isXRCapable(){let e=this.backend;return(e==null?void 0:e.isWebGPUBackend)!==!0}reconfigureContext(){if(this._backendReady!==!0)return;let e=this.backend;if(e&&typeof e.updateSize==`function`)try{e.updateSize()}catch(e){console.error(`reconfigureContext error`,e)}}},PS=new l.Matrix4,FS=new l.Frustum,IS=new l.Vector2,LS=new WeakMap;function RS(e){let t=!1;return e.needsRender===!0?(e.needsRender=!1,t=!0):e.mixer&&e.mixer.stats.actions.inUse>0&&(t=!0),t}var zS=class extends l.Scene{constructor(){super(...arguments),this.needsRender=!1}add(...e){return super.add(...e)}remove(...e){return super.remove(...e)}update(e,t){let n=!1,r;return t instanceof Aa?(r=t.time,IS.copy(t.resolution)):(r=G(),e.getSize(IS)),PS.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),FS.setFromProjectionMatrix(PS),this.traverseVisible(e=>{if(e.setResolution&&e.setResolution(IS.x,IS.y),e.setTime&&e.setTime(r),e.mixer instanceof l.AnimationMixer){let t=e.mixer,n=LS.get(t);n||(n=new cx,LS.set(t,n)),n.update(r),t.update(n.getDelta())}(e instanceof l.Mesh||e instanceof l.Line||e instanceof l.Points)&&(!e.frustumCulled||FS.intersectsObject(e))&&(RS(e)&&(n=!0),e.traverseAncestors(e=>{RS(e)&&(n=!0)}))}),this.needsRender=n,n}},BS=e=>e*(2-e),VS=(()=>{let e=new Float32Array([-.18,0,-.18,.18,0,-.18,-.18,0,.18,.18,0,.18]),t=new Float32Array([1,0,0,0,1,1,0,1]),n=new Uint8Array([0,2,1,2,3,1]),r=new l.BufferGeometry;return r.setAttribute(`position`,new l.BufferAttribute(e,3)),r.setAttribute(`uv`,new l.BufferAttribute(t,2)),r.setIndex(new l.BufferAttribute(n,1)),r})(),HS=(0,f.vec2)(.5,.5),US=(0,f.float)(.017);function WS(e,t){let n=(0,f.length)(HS.sub(e));return(0,f.smoothstep)(t,t.add(US),n)}function GS(e,t){let n=(0,f.length)(HS.sub(e));return(0,f.float)(1).sub((0,f.smoothstep)(t.sub(US),t,n))}function KS(e){let t={baseColor:(0,f.uniform)(new l.Color(e)),circleScale:(0,f.uniform)(1),ringScale:(0,f.uniform)(1),ringOpacity:(0,f.uniform)(1),loadingAngle:(0,f.uniform)(0),loadingOpacity:(0,f.uniform)(0),progress:(0,f.uniform)(0),progressOpacity:(0,f.uniform)(0),expand0:(0,f.uniform)(0),expand1:(0,f.uniform)(0),expandOpacity:(0,f.uniform)(0),opacity:(0,f.uniform)(0),tapScale:(0,f.uniform)(1),tapOpacity:(0,f.uniform)(1),disable:(0,f.uniform)(0)},n=(0,f.uv)(),r=(0,f.vec4)(1,1,1,(0,f.float)(.8).add((0,f.abs)((0,f.normalize)((0,f.vec2)(1,-1)).dot(n.sub(HS))).mul(1.5)).clamp(0,1).mul(t.tapOpacity).mul(WS(n,(0,f.float)(.15).mul(t.circleScale).mul(t.tapScale))).mul(GS(n,(0,f.float)(.234).mul(t.circleScale).mul(t.tapScale)))),i=(0,f.vec4)(1,1,1,(0,f.float)(.5).add((0,f.abs)((0,f.normalize)((0,f.vec2)(1,1)).dot(n.sub(HS)))).clamp(0,1).mul(t.tapOpacity).mul(t.ringOpacity).mul(WS(n,(0,f.float)(.27).mul(t.ringScale).mul(t.tapScale))).mul(GS(n,(0,f.float)(.32).mul(t.ringScale).mul(t.tapScale)))),a=(0,f.mod)(f.PI.sub((0,f.atan)(HS.x.sub(n.x),HS.y.sub(n.y))).add(t.loadingAngle),f.PI2),o=(0,f.vec4)(1,1,1,(0,f.float)(1).sub((0,f.smoothstep)((0,f.float)(0),f.PI2,a)).mul(.4).add(.1).mul(t.tapOpacity).mul(t.loadingOpacity).mul(WS(n,(0,f.float)(.208).mul(t.circleScale).mul(t.tapScale))).mul(GS(n,(0,f.float)(.3).mul(t.circleScale).mul(t.tapScale)))),s=f.PI.add((0,f.atan)(HS.x.sub(n.x),HS.y.sub(n.y))),c=(0,f.vec4)(1,1,1,(0,f.float)(1).sub((0,f.step)(t.progress.mul(f.PI2),s)).mul(.5).mul(t.tapOpacity).mul(t.progressOpacity).mul(WS(n,(0,f.float)(.208).mul(t.circleScale).mul(t.tapScale))).mul(GS(n,(0,f.float)(.3).mul(t.circleScale).mul(t.tapScale)))),u=(0,f.float)(.2).add((0,f.float)(.23).mul(t.expand0)),d=(0,f.length)(HS.sub(n)),p=(0,f.vec4)(1,1,1,(0,f.float)(1).sub(u.sub(d).div(.2).clamp(0,1)).mul(.8).mul((0,f.float)(1).sub((0,f.abs)(t.expand0.sub(.5)).mul(2)).mul(1.2).clamp(0,1)).mul(t.expandOpacity).mul(GS(n,u))),m=(0,f.float)(.2).add((0,f.float)(.23).mul(t.expand1)),h=(0,f.length)(HS.sub(n)),g=(0,f.vec4)(1,1,1,(0,f.float)(1).sub(m.sub(h).div(.2).clamp(0,1)).mul(.8).mul((0,f.float)(1).sub((0,f.abs)(t.expand1.sub(.5)).mul(2)).mul(1.2).clamp(0,1)).mul(t.expandOpacity).mul(GS(n,m))),_=(0,f.vec4)(1,1,1,(0,f.float)(.5).mul(GS(n,(0,f.float)(.32).mul(t.circleScale).mul(t.tapScale)))),v=(0,f.vec4)(1,1,1,0);v=(0,f.mix)(v,g,g.w),v=(0,f.mix)(v,p,p.w),v=(0,f.mix)(v,c,c.w),v=(0,f.mix)(v,o,o.w),v=(0,f.mix)(v,r,r.w),v=(0,f.mix)(v,i,i.w),v=(0,f.mix)(v,_,t.disable);let y=(0,f.vec4)(v.xyz.mul(t.baseColor),v.w.mul(t.opacity).mul(t.opacity)),b=new l.NodeMaterial;return b.fragmentNode=y,b.blending=l.CustomBlending,b.blendSrc=l.SrcAlphaFactor,b.blendDst=l.OneMinusSrcAlphaFactor,b.blendSrcAlpha=l.OneFactor,b.blendDstAlpha=l.OneMinusSrcAlphaFactor,b.depthWrite=!1,b.transparent=!0,{material:b,u:t}}var qS=class extends l.Object3D{constructor(e={}){var t,n;super();let r=(t=e.color)==null?16777215:t,i=(n=e.scale)==null?1:n;this.progress=0,this.opacity=0,this.loading=!1,this.current=!1,this.disabled=!1,this.currentMotion=new J({progress:0}),this.ringMotion=new J({scale:1,opacity:1}),this.tapMotion=new J({scale:1,opacity:1}),this.loadingOpacityMotion=new J({opacity:0}),this.progressMotion=new J({progress:0}),this.progressOpacityMotion=new J({opacity:0}),this.opacityMotion=new J({opacity:0}),this.disableMotion=new J({progress:0});let{material:a,u:o}=KS(r);this.panoU=o,this.panoMesh=new l.Mesh(VS,a),this.renderOrder=-2,this.panoMesh.renderOrder=-2,this.panoMesh.position.y=.004,this.panoMesh.scale.set(i,1,i),this.add(this.panoMesh),this.currentStartTime=G(),this.needsRender=!0}setProgress(e){this.setDisabled(!1),this.setLoading(!1),this.progress!==e&&(e=H(e,0,1),this.tapMotion.ended&&(this.progress===0&&this.progressOpacityMotion.set({opacity:1},500).catch(K),e===0?this.progressOpacityMotion.set({opacity:0},500).catch(K).then(()=>{this.progressMotion.set({progress:0},0).catch(K)}):this.progressMotion.set({progress:H(e*1.2,0,1)},100).catch(K)),this.progress=e)}setOpacity(e){this.opacity!==e&&(this.opacity=e=H(e,0,1),this.opacityMotion.set({opacity:e},200).catch(K))}setCurrent(e){this.current!==e&&(this.currentMotion.set({progress:+!!e},2e3).catch(K),this.current=e,this.current===!0&&(this.currentStartTime=G()))}setLoading(e){this.loading!==e&&(this.loading=e,this.disabled===!0&&this.setDisabled(!1),this.loadingOpacityMotion.set({opacity:+!!e},500).catch(K))}setDisabled(e){this.disabled!==e&&(this.disabled=e,this.loading===!0&&this.setLoading(!1),this.disableMotion.set({progress:+!!e},500).catch(K))}tap(){return this.tapMotion.ended?(this.progressOpacityMotion.set({opacity:0},0).catch(K),this.progressMotion.set({progress:0},0).catch(K),this.tapMotion.setKeyframes([{progress:0,value:{scale:1,opacity:1}},{progress:.3,value:{scale:.85,opacity:.5}},{progress:.8,value:{scale:1.05,opacity:.6}},{progress:1,value:{scale:1,opacity:1}}],600).then(()=>{this.progressOpacityMotion.set({opacity:+(this.progress>0)},300).catch(K),this.progressMotion.set({progress:this.progress},120).catch(K)}).catch(K)):Promise.resolve()}updateTime(e,t){if(this.progressMotion.ended||(this.progressMotion.update(e),this.panoU.progress.value=this.progressMotion.value.progress,this.needsRender=!0),this.progressOpacityMotion.ended||(this.progressOpacityMotion.update(e),this.panoU.progressOpacity.value=this.progressOpacityMotion.value.opacity,this.needsRender=!0),this.opacityMotion.ended||(this.opacityMotion.update(e),this.panoU.opacity.value=this.opacityMotion.value.opacity,this.needsRender=!0),this.visible=this.opacityMotion.value.opacity!==0,(!this.loadingOpacityMotion.ended||this.loadingOpacityMotion.value.opacity>0)&&(this.loadingOpacityMotion.update(e),this.panoU.loadingOpacity.value=this.loadingOpacityMotion.value.opacity,this.panoU.loadingAngle.value=e/120%(Math.PI*2),this.needsRender=!0),this.tapMotion.ended||(this.tapMotion.update(e),this.panoU.tapOpacity.value=this.tapMotion.value.opacity,this.panoU.tapScale.value=this.tapMotion.value.scale,this.needsRender=!0),this.current||!this.currentMotion.ended){this.currentMotion.update(e),this.panoU.expandOpacity.value=this.currentMotion.value.progress;{let t=(e-this.currentStartTime-1500)/2e3;if(t%5<2){let e=1+Math.sin(Math.PI*t)/25*this.currentMotion.value.progress;this.panoU.circleScale.value=e,this.needsRender=!0}}{let t=(e-this.currentStartTime-1500)/2e3;if(t%5<2){let e=t%1;this.panoU.expand0.value=BS(e)*this.currentMotion.value.progress,this.needsRender=!0}}{let t=(e-this.currentStartTime-1e3)/2e3;if(t%5<2){let e=t%1;this.panoU.expand1.value=BS(e)*this.currentMotion.value.progress,this.needsRender=!0}}}if(this.currentMotion.value.progress>.2&&this.progress===0&&this.loading===!1&&(e-this.currentStartTime-1e3)/2e3%5<2?this.ringMotion.getTargetKeyframe().value.scale!==.8&&this.ringMotion.set({scale:.8,opacity:0},600).catch(K):this.ringMotion.getTargetKeyframe().value.scale!==1&&this.ringMotion.set({scale:1,opacity:1},600).catch(K),!this.ringMotion.ended){let{scale:t,opacity:n}=this.ringMotion.value;this.ringMotion.update(e),this.panoU.ringScale.value=t,this.panoU.ringOpacity.value=n,this.needsRender=!0}if(!this.disableMotion.ended){let{progress:t}=this.disableMotion.value;this.disableMotion.update(e),this.panoU.disable.value=t,this.needsRender=!0}}dispose(){this.ringMotion.dispose(),this.tapMotion.dispose(),this.progressMotion.dispose(),this.progressOpacityMotion.dispose(),this.opacityMotion.dispose(),this.currentMotion.dispose(),this.panoMesh.material.dispose()}},JS=e=>e*(2-e),YS=(()=>{let e=new Float32Array([-.18,0,-.18,.18,0,-.18,-.18,0,.18,.18,0,.18]),t=new Float32Array([1,0,0,0,1,1,0,1]),n=new Uint8Array([0,2,1,2,3,1]),r=new l.BufferGeometry;return r.setAttribute(`position`,new l.BufferAttribute(e,3)),r.setAttribute(`uv`,new l.BufferAttribute(t,2)),r.setIndex(new l.BufferAttribute(n,1)),r})(),XS=(0,f.vec2)(.5,.5),ZS=(0,f.float)(.017);function QS(e,t){let n=(0,f.length)(XS.sub(e));return(0,f.smoothstep)(t,t.add(ZS),n)}function $S(e,t){let n=(0,f.length)(XS.sub(e));return(0,f.float)(1).sub((0,f.smoothstep)(t.sub(ZS),t,n))}function eC(e){let t={baseColor:(0,f.uniform)(new l.Color(e)),circleScale:(0,f.uniform)(1),circleOpacity:(0,f.uniform)(1),loadingAngle:(0,f.uniform)(0),loadingOpacity:(0,f.uniform)(0),progress:(0,f.uniform)(0),progressOpacity:(0,f.uniform)(0),expand0:(0,f.uniform)(0),expand1:(0,f.uniform)(0),expandOpacity:(0,f.uniform)(0),opacity:(0,f.uniform)(0),tapScale:(0,f.uniform)(1),tapOpacity:(0,f.uniform)(1),disable:(0,f.uniform)(0)},n=(0,f.uv)(),r=(0,f.vec4)(1,1,1,(0,f.float)(.8).add((0,f.abs)((0,f.normalize)((0,f.vec2)(1,-1)).dot(n.sub(XS))).mul(1.5)).clamp(0,1).mul((0,f.step)(t.progress,(0,f.float)(0))).mul(t.tapOpacity).mul(QS(n,(0,f.float)(.2).mul(t.circleScale).mul(t.tapScale))).mul($S(n,(0,f.float)(.3).mul(t.circleScale).mul(t.tapScale)))),i=(0,f.mod)(f.PI.sub((0,f.atan)(XS.x.sub(n.x),XS.y.sub(n.y))).add(t.loadingAngle),f.PI2),a=(0,f.vec4)(1,1,1,(0,f.float)(1).sub((0,f.smoothstep)((0,f.float)(0),f.PI2,i)).mul(.9).add(.1).mul(t.tapOpacity).mul(t.loadingOpacity).mul(QS(n,(0,f.float)(.2).mul(t.circleScale).mul(t.tapScale))).mul($S(n,(0,f.float)(.3).mul(t.circleScale).mul(t.tapScale)))),o=f.PI.add((0,f.atan)(XS.x.sub(n.x),XS.y.sub(n.y))),s=(0,f.float)(1).sub((0,f.step)(t.progress.mul(f.PI2),o)),c=(0,f.float)(.04),u=t.progress.mul(f.PI2),d=(0,f.step)((0,f.length)((0,f.vec2)(XS.x.add((0,f.float)(0).sin().mul(.25)),XS.y.add((0,f.float)(0).cos().mul(.25))).sub(n)),c),p=(0,f.step)((0,f.length)((0,f.vec2)(XS.x.add(u.sin().mul(.25)),XS.y.add(u.cos().mul(.25))).sub(n)),c),m=(0,f.vec4)(1,1,1,s.add(d).add(p).clamp(0,1).mul(.9).mul(t.tapOpacity).mul(t.progressOpacity).mul(QS(n,(0,f.float)(.2).mul(t.circleScale).mul(t.tapScale))).mul($S(n,(0,f.float)(.3).mul(t.circleScale).mul(t.tapScale)))),h=(0,f.float)(.25).add((0,f.float)(.25).mul(t.expand0)),g=(0,f.length)(XS.sub(n)),_=(0,f.vec4)(1,1,1,(0,f.float)(1).sub(h.sub(g).div(.2).clamp(0,1)).mul(.8).mul((0,f.float)(1).sub((0,f.abs)(t.expand0.sub(.5)).mul(2)).mul(1.2).clamp(0,1)).mul(t.expandOpacity).mul($S(n,h))),v=(0,f.float)(.25).add((0,f.float)(.23).mul(t.expand1)),y=(0,f.length)(XS.sub(n)),b=(0,f.vec4)(1,1,1,(0,f.float)(1).sub(v.sub(y).div(.2).clamp(0,1)).mul(.8).mul((0,f.float)(1).sub((0,f.abs)(t.expand1.sub(.5)).mul(2)).mul(1.2).clamp(0,1)).mul(t.expandOpacity).mul($S(n,v))),x=(0,f.vec4)(1,1,1,(0,f.float)(.5).mul(t.tapOpacity).mul($S(n,(0,f.float)(.32).mul(t.circleScale).mul(t.tapScale)))),S=(0,f.vec4)(1,1,1,0);S=(0,f.mix)(S,b,b.w),S=(0,f.mix)(S,_,_.w),S=(0,f.mix)(S,r,r.w),S=(0,f.mix)(S,m,m.w),S=(0,f.mix)(S,a,a.w),S=(0,f.mix)(S,x,t.disable);let C=(0,f.vec4)(S.xyz.mul(t.baseColor),S.w.mul(t.opacity).mul(t.opacity)),w=new l.NodeMaterial;return w.fragmentNode=C,w.blending=l.CustomBlending,w.blendSrc=l.SrcAlphaFactor,w.blendDst=l.OneMinusSrcAlphaFactor,w.blendSrcAlpha=l.OneFactor,w.blendDstAlpha=l.OneMinusSrcAlphaFactor,w.depthWrite=!1,w.transparent=!0,{material:w,u:t}}var tC=class extends l.Object3D{constructor(e={}){var t,n;super();let r=(t=e.color)==null?16777215:t,i=(n=e.scale)==null?1:n;this.progress=0,this.opacity=0,this.loading=!1,this.current=!1,this.disabled=!1,this.currentMotion=new J({progress:0}),this.tapMotion=new J({scale:1,opacity:1}),this.loadingOpacityMotion=new J({opacity:0}),this.progressMotion=new J({progress:0}),this.progressOpacityMotion=new J({opacity:0}),this.opacityMotion=new J({opacity:0}),this.disableMotion=new J({progress:0});let{material:a,u:o}=eC(r);this.panoU=o,this.panoMesh=new l.Mesh(YS,a),this.renderOrder=-2,this.panoMesh.renderOrder=-2,this.panoMesh.position.y=.004,this.panoMesh.scale.set(i,1,i),this.add(this.panoMesh),this.currentStartTime=G(),this.needsRender=!0}setProgress(e){this.setDisabled(!1),this.setLoading(!1),this.progress!==e&&(e=H(e,0,1),this.tapMotion.ended&&(this.progress===0&&this.progressOpacityMotion.set({opacity:1},500).catch(K),e===0?this.progressOpacityMotion.set({opacity:0},500).catch(K).then(()=>{this.progressMotion.set({progress:0},0).catch(K)}):this.progressMotion.set({progress:H(e*1.2,0,1)},100).catch(K)),this.progress=e)}setOpacity(e){this.opacity!==e&&(this.opacity=e=H(e,0,1),this.opacityMotion.set({opacity:e},200).catch(K))}setCurrent(e){this.current!==e&&(this.currentMotion.set({progress:+!!e},2e3).catch(K),this.current=e,this.current===!0&&(this.currentStartTime=G()))}setLoading(e){this.loading!==e&&(this.loading=e,this.disabled===!0&&this.setDisabled(!1),this.loadingOpacityMotion.set({opacity:+!!e},500).catch(K))}setDisabled(e){this.disabled!==e&&(this.disabled=e,this.loading===!0&&this.setLoading(!1),this.disableMotion.set({progress:+!!e},500).catch(K))}tap(){return this.tapMotion.ended?(this.progressOpacityMotion.set({opacity:0},0).catch(K),this.progressMotion.set({progress:0},0).catch(K),this.tapMotion.setKeyframes([{progress:0,value:{scale:1,opacity:1}},{progress:.3,value:{scale:.85,opacity:.5}},{progress:.8,value:{scale:1.05,opacity:.6}},{progress:1,value:{scale:1,opacity:1}}],600).then(()=>{this.progressOpacityMotion.set({opacity:+(this.progress>0)},300).catch(K),this.progressMotion.set({progress:this.progress},120).catch(K)}).catch(K)):Promise.resolve()}updateTime(e,t){if(this.progressMotion.ended||(this.progressMotion.update(e),this.panoU.progress.value=this.progressMotion.value.progress,this.needsRender=!0),this.progressOpacityMotion.ended||(this.progressOpacityMotion.update(e),this.panoU.progressOpacity.value=this.progressOpacityMotion.value.opacity,this.needsRender=!0),this.opacityMotion.ended||(this.opacityMotion.update(e),this.panoU.opacity.value=this.opacityMotion.value.opacity,this.needsRender=!0),this.visible=this.opacityMotion.value.opacity!==0,(!this.loadingOpacityMotion.ended||this.loadingOpacityMotion.value.opacity>0)&&(this.loadingOpacityMotion.update(e),this.panoU.loadingOpacity.value=this.loadingOpacityMotion.value.opacity,this.panoU.loadingAngle.value=e/120%(Math.PI*2),this.needsRender=!0),this.tapMotion.ended||(this.tapMotion.update(e),this.panoU.tapOpacity.value=this.tapMotion.value.opacity,this.panoU.tapScale.value=this.tapMotion.value.scale,this.needsRender=!0),this.panoU.circleOpacity.value=Math.max(.6,1-Math.max(this.loadingOpacityMotion.value.opacity,this.progressOpacityMotion.value.opacity)),this.current||!this.currentMotion.ended){this.currentMotion.update(e),this.panoU.expandOpacity.value=this.currentMotion.value.progress;{let t=(e-this.currentStartTime-1500)/2e3;if(t%5<2){let e=1+Math.sin(Math.PI*t)/25*this.currentMotion.value.progress;this.panoU.circleScale.value=e,this.needsRender=!0}}{let t=(e-this.currentStartTime-1500)/2e3;if(t%5<2){let e=t%1;this.panoU.expand0.value=JS(e)*this.currentMotion.value.progress,this.needsRender=!0}}{let t=(e-this.currentStartTime-1e3)/2e3;if(t%5<2){let e=t%1;this.panoU.expand1.value=JS(e)*this.currentMotion.value.progress,this.needsRender=!0}}}if(!this.disableMotion.ended){let{progress:t}=this.disableMotion.value;this.disableMotion.update(e),this.panoU.disable.value=t,this.needsRender=!0}}dispose(){this.tapMotion.dispose(),this.progressMotion.dispose(),this.progressOpacityMotion.dispose(),this.opacityMotion.dispose(),this.currentMotion.dispose(),this.panoMesh.material.dispose()}},nC=e=>e*(2-e),rC=(()=>{let e=new Float32Array([-.18,0,-.18,.18,0,-.18,-.18,0,.18,.18,0,.18]),t=new Float32Array([1,0,0,0,1,1,0,1]),n=new Uint8Array([0,2,1,2,3,1]),r=new l.BufferGeometry;return r.setAttribute(`position`,new l.BufferAttribute(e,3)),r.setAttribute(`uv`,new l.BufferAttribute(t,2)),r.setIndex(new l.BufferAttribute(n,1)),r})(),iC=(0,f.vec2)(.5,.5),aC=(0,f.float)(.017);function oC(e,t){let n=(0,f.length)(iC.sub(e));return(0,f.smoothstep)(t,t.add(aC),n)}function sC(e,t){let n=(0,f.length)(iC.sub(e));return(0,f.float)(1).sub((0,f.smoothstep)(t.sub(aC),t,n))}function cC(e){let t=e.map,n=e.borderWidth>0,r={baseColor:(0,f.uniform)(new l.Color(e.color)),circleScale:(0,f.uniform)(1),circleOpacity:(0,f.uniform)(1),loadingAngle:(0,f.uniform)(0),loadingOpacity:(0,f.uniform)(0),progress:(0,f.uniform)(0),progressOpacity:(0,f.uniform)(0),expand0:(0,f.uniform)(0),expand1:(0,f.uniform)(0),expandOpacity:(0,f.uniform)(0),opacity:(0,f.uniform)(0),tapScale:(0,f.uniform)(1),tapOpacity:(0,f.uniform)(1),disable:(0,f.uniform)(0)},i=(0,f.uniform)(e.mapAlpha),a=(0,f.uniform)(e.borderWidth),o=(0,f.uniform)(new l.Color(e.borderColor)),s=(0,f.uv)(),c=(0,f.float)(.3).mul(r.circleScale).mul(r.tapScale),u=n?oC(s,c.sub(a.clamp(0,1).mul(c))):oC(s,c.sub((0,f.float)(.2).mul(c))),d;if(t){let n=c.div(.5);d=(0,f.texture)(t,s.sub(iC).div(n).add(iC)),d=(0,f.vec4)(d.rgb,d.a.mul(i)),e.mapUseColor&&(d=(0,f.vec4)(r.baseColor,(0,f.float)(1)).mul(d))}else d=(0,f.vec4)(r.baseColor,(0,f.float)(1));let p;if(e.mapUseReverse)p=(0,f.vec4)(r.baseColor,(0,f.float)(1).sub(d.a));else if(n){let e=oC(s,c.sub(a.clamp(0,1).mul(c))),t=a.mul(2).add((0,f.abs)((0,f.normalize)((0,f.vec2)(1,-1)).dot(s.sub(iC)))).clamp(0,1);p=(0,f.mix)((0,f.vec4)(o,e.mul(t)),d,d.a)}else p=d;let m=(0,f.vec4)(p.rgb,p.a.mul(r.circleOpacity).mul(r.tapOpacity).mul(sC(s,c))),h=(0,f.vec4)(r.baseColor,(0,f.float)(.5).mul(r.tapOpacity).mul(sC(s,(0,f.float)(.32).mul(r.circleScale).mul(r.tapScale)))),g=(0,f.mod)(f.PI.sub((0,f.atan)(iC.x.sub(s.x),iC.y.sub(s.y))).add(r.loadingAngle),f.PI2),_=(0,f.float)(1).sub((0,f.smoothstep)((0,f.float)(0),f.PI2,g)).mul(.9).add(.1),v=(0,f.vec4)(r.baseColor,_.mul(r.tapOpacity).mul(r.loadingOpacity).mul(u).mul(sC(s,c))),y=f.PI.add((0,f.atan)(iC.x.sub(s.x),iC.y.sub(s.y))),b=(0,f.float)(1).sub((0,f.step)(r.progress.mul(f.PI2),y)).mul(.7),x=(0,f.vec4)(r.baseColor,b.mul(r.tapOpacity).mul(r.progressOpacity).mul(u).mul(sC(s,c))),S=(0,f.float)(.25).add((0,f.float)(.25).mul(r.expand0)),C=(0,f.length)(iC.sub(s)),w=(0,f.float)(1).sub(S.sub(C).div(.2).clamp(0,1)).mul(.8).mul((0,f.float)(1).sub((0,f.abs)(r.expand0.sub(.5)).mul(2)).mul(1.2).clamp(0,1)),T=(0,f.vec4)(r.baseColor,w.mul(r.expandOpacity).mul(sC(s,S))),E=(0,f.float)(.25).add((0,f.float)(.23).mul(r.expand1)),D=(0,f.length)(iC.sub(s)),O=(0,f.float)(1).sub(E.sub(D).div(.2).clamp(0,1)).mul(.8).mul((0,f.float)(1).sub((0,f.abs)(r.expand1.sub(.5)).mul(2)).mul(1.2).clamp(0,1)),k=(0,f.vec4)(r.baseColor,O.mul(r.expandOpacity).mul(sC(s,E))),A=(0,f.vec4)(r.baseColor,(0,f.float)(0));A=(0,f.mix)(A,k,k.w),A=(0,f.mix)(A,T,T.w),A=(0,f.mix)(A,m,m.w),A=(0,f.mix)(A,x,x.w),A=(0,f.mix)(A,v,v.w),A=(0,f.mix)(A,h,r.disable);let j=(0,f.vec4)(A.rgb,A.a.mul(r.opacity)),M=new l.NodeMaterial;return M.fragmentNode=j,M.blending=l.CustomBlending,M.blendSrc=l.SrcAlphaFactor,M.blendDst=l.OneMinusSrcAlphaFactor,M.blendSrcAlpha=l.OneFactor,M.blendDstAlpha=l.OneMinusSrcAlphaFactor,M.depthWrite=!1,M.transparent=!0,{material:M,u:r}}var lC=class extends l.Object3D{constructor(e={}){var t,n,r,i,a,o,s;super();let c=(t=e.color)==null?16777215:t,u=(n=e.scale)==null?1:n;this.progress=0,this.opacity=0,this.loading=!1,this.current=!1,this.disabled=!1,this.currentMotion=new J({progress:0}),this.tapMotion=new J({scale:1,opacity:1}),this.loadingOpacityMotion=new J({opacity:0}),this.progressMotion=new J({progress:0}),this.progressOpacityMotion=new J({opacity:0}),this.opacityMotion=new J({opacity:0}),this.disableMotion=new J({progress:0});let{material:d,u:f}=cC({color:c,map:e.map,mapAlpha:(r=e.mapAlpha)==null?1:r,borderWidth:(i=e.borderWidth)==null?.1:i,borderColor:(a=e.borderColor)==null?16777215:a,mapUseColor:(o=e.mapUseColor)==null?!1:o,mapUseReverse:(s=e.mapUseReverse)==null?!1:s});this.panoU=f,this.panoMesh=new l.Mesh(rC,d),this.renderOrder=-2,this.panoMesh.renderOrder=-2,this.panoMesh.position.y=.004,this.panoMesh.scale.set(u,1,u),this.add(this.panoMesh),this.currentStartTime=G(),this.needsRender=!0}setProgress(e){this.setDisabled(!1),this.setLoading(!1),this.progress!==e&&(e=H(e,0,1),this.tapMotion.ended&&(this.progress===0&&this.progressOpacityMotion.set({opacity:1},500).catch(K),e===0?this.progressOpacityMotion.set({opacity:0},500).catch(K).then(()=>{this.progressMotion.set({progress:0},0).catch(K)}):this.progressMotion.set({progress:H(e*1.2,0,1)},100).catch(K)),this.progress=e)}setOpacity(e){this.opacity!==e&&(this.opacity=e=H(e,0,1),this.opacityMotion.set({opacity:e},200).catch(K))}setCurrent(e){this.current!==e&&(this.currentMotion.set({progress:+!!e},2e3).catch(K),this.current=e,this.current===!0&&(this.currentStartTime=G()))}setLoading(e){this.loading!==e&&(this.loading=e,this.disabled===!0&&this.setDisabled(!1),this.loadingOpacityMotion.set({opacity:+!!e},500).catch(K))}setDisabled(e){this.disabled!==e&&(this.disabled=e,this.loading===!0&&this.setLoading(!1),this.disableMotion.set({progress:+!!e},500).catch(K))}tap(){return this.tapMotion.ended?(this.progressOpacityMotion.set({opacity:0},0).catch(K),this.progressMotion.set({progress:0},0).catch(K),this.tapMotion.setKeyframes([{progress:0,value:{scale:1,opacity:1}},{progress:.3,value:{scale:.85,opacity:.5}},{progress:.8,value:{scale:1.05,opacity:.6}},{progress:1,value:{scale:1,opacity:1}}],600).then(()=>{this.progressOpacityMotion.set({opacity:+(this.progress>0)},300).catch(K),this.progressMotion.set({progress:this.progress},120).catch(K)}).catch(K)):Promise.resolve()}updateTime(e,t){if(this.progressMotion.ended||(this.progressMotion.update(e),this.panoU.progress.value=this.progressMotion.value.progress,this.needsRender=!0),this.progressOpacityMotion.ended||(this.progressOpacityMotion.update(e),this.panoU.progressOpacity.value=this.progressOpacityMotion.value.opacity,this.needsRender=!0),this.opacityMotion.ended||(this.opacityMotion.update(e),this.panoU.opacity.value=this.opacityMotion.value.opacity,this.needsRender=!0),this.visible=this.opacityMotion.value.opacity!==0,(!this.loadingOpacityMotion.ended||this.loadingOpacityMotion.value.opacity>0)&&(this.loadingOpacityMotion.update(e),this.panoU.loadingOpacity.value=this.loadingOpacityMotion.value.opacity,this.panoU.loadingAngle.value=e/120%(Math.PI*2),this.needsRender=!0),this.tapMotion.ended||(this.tapMotion.update(e),this.panoU.tapOpacity.value=this.tapMotion.value.opacity,this.panoU.tapScale.value=this.tapMotion.value.scale,this.needsRender=!0),this.panoU.circleOpacity.value=Math.max(.6,1-Math.max(this.loadingOpacityMotion.value.opacity,this.progressOpacityMotion.value.opacity)),this.current||!this.currentMotion.ended){this.currentMotion.update(e),this.panoU.expandOpacity.value=this.currentMotion.value.progress;{let t=(e-this.currentStartTime-1500)/2e3;if(t%5<2){let e=t%1;this.panoU.expand0.value=nC(e)*this.currentMotion.value.progress,this.needsRender=!0}}{let t=(e-this.currentStartTime-1e3)/2e3;if(t%5<2){let e=t%1;this.panoU.expand1.value=nC(e)*this.currentMotion.value.progress,this.needsRender=!0}}}if(!this.disableMotion.ended){let{progress:t}=this.disableMotion.value;this.disableMotion.update(e),this.panoU.disable.value=t,this.needsRender=!0}}dispose(){this.tapMotion.dispose(),this.progressMotion.dispose(),this.progressOpacityMotion.dispose(),this.opacityMotion.dispose(),this.currentMotion.dispose(),this.panoMesh.material.dispose()}};function uC(e,t,n){let r=Math.abs(e-t);return r<.001||n!==void 0&&Math.abs(n-r)<.001}function dC(e,t,n){return!uC(e,t,n)}function fC(e,t){return e.distanceTo(t)<.001}function pC(e,t){return!fC(e,t)}function mC(e){return!!e&&(typeof e==`object`||typeof e==`function`)&&typeof e.then==`function`}function $(e,t){let n=!1,r={type:e,timeStamp:G(),get defaultPrevented(){return n},preventDefault(){n=!0}};for(let e of Object.keys(t))e in r||(r[e]=t[e]);return r}var hC=new WeakMap;function gC(e,t){let n=$(e,Object.assign(Object.assign({},t),{waitUntil(e){let t=hC.get(n);t&&t.push(e)}}));return hC.set(n,[]),n}function _C(e){var t;return Promise.all((t=hC.get(e))==null?[]:t).then(K)}function vC(e,t){e.mode=t.mode,e.workCode=t.workCode,e.panoIndex=t.panoIndex,e.longitude=t.longitude,e.latitude=t.latitude,e.fov=t.fov,e.offset.copy(t.offset),e.distance=t.distance}function yC(e,t){return e.workCode===t.workCode&&e.mode===t.mode&&e.panoIndex===t.panoIndex&&uC(e.longitude,t.longitude,Math.PI*2)&&uC(e.latitude,t.latitude)&&uC(e.fov,t.fov)&&fC(e.offset,t.offset)&&uC(e.distance,t.distance)}function bC(e,t){e.longitude=t.longitude,e.latitude=t.latitude,e.fov=t.fov,e.distance=t.distance,e.offset.copy(t.offset)}function xC(e){return{longitude:e.longitude,latitude:e.latitude,fov:e.fov,offset:e.offset.clone(),distance:e.distance}}function SC(e){switch(e){case`Floorplan`:return!0;case`Mapview`:return!0;default:return!1}}function CC(e){switch(e){case`Panorama`:return!0;case`VRPanorama`:return!0;case`XRPanorama`:return!0;case`Model`:return!0;default:return!1}}function wC(e){for(let t in e)return!1;return!0}var TC=(0,f.uniform)(1),EC=(0,f.uv)(),DC=(0,f.float)(6.2831852),OC=(0,f.float)(3.1415926),kC=DC.mul(EC.x),AC=OC.mul(EC.y.sub(.5)),jC=AC.cos().abs(),MC=(0,f.normalize)((0,f.vec3)(kC.sin().negate().mul(jC),AC.sin().mul(TC),kC.cos().negate().mul(jC))),NC=(0,f.cubeTexture)(new l.CubeTexture,MC),PC=new l.NodeMaterial;PC.fragmentNode=NC,PC.transparent=!0,PC.depthTest=!1,PC.depthWrite=!1;var FC=new ux(PC);function IC(e,t,n){NC.value=t,TC.value=n?-1:1,FC.render(e),NC.value=null}var LC=new l.Color,RC=0,zC=1;function BC(e,t,n,r){return Wr(this,void 0,void 0,function*(){let i=new l.RenderTarget(r.width,r.height,{depthBuffer:!1,stencilBuffer:!1,generateMipmaps:!1,magFilter:l.LinearFilter,minFilter:l.LinearFilter}),a=e.getRenderTarget();e.getClearColor(LC);let o=e.getClearAlpha(),s=e.autoClear,c=e.autoClearColor,u=e.autoClearDepth,d=e.autoClearStencil;e.autoClear=!0,e.autoClearColor=!0,e.autoClearDepth=!0,e.autoClearStencil=!0,e.setRenderTarget(i),e.setClearColor(RC,zC),IC(e,t,n),e.setRenderTarget(a),e.setClearColor(LC,o),e.autoClear=s,e.autoClearColor=c,e.autoClearDepth=u,e.autoClearStencil=d;let f=yield e.readRenderTargetPixelsAsync(i,0,0,r.width,r.height);return r.data.set(f),i.dispose(),r})}var VC=(function(e,t,n,r){"use strict";var i=[``,`webkit`,`Moz`,`MS`,`ms`,`o`],a=t.createElement?t.createElement(`div`):r,o=`function`,s=Math.round,c=Math.abs,l=Date.now;function u(e,t,n){return setTimeout(v(e,n),t)}function d(e,t,n){return Array.isArray(e)?(f(e,n[t],n),!0):!1}function f(e,t,n){var i;if(e)if(e.forEach)e.forEach(t,n);else if(e.length!==r)for(i=0;i<e.length;)t.call(n,e[i],i,e),i++;else for(i in e)e.hasOwnProperty(i)&&t.call(n,e[i],i,e)}function p(t,n,r){var i=`DEPRECATED METHOD: `+n+`
|
|
903
903
|
`+r+` AT
|
|
904
904
|
`;return function(){var n=Error(`get-stack-trace`),r=n&&n.stack?n.stack.replace(/^[^\(]+?[\n$]/gm,``).replace(/^\s+at\s+/gm,``).replace(/^Object.<anonymous>\s*\(/gm,`{anonymous}()@`):`Unknown Stack Trace`,a=e.console&&(e.console.warn||e.console.log);return a&&a.call(e.console,i,r),t.apply(this,arguments)}}var m=typeof Object.assign==`function`?Object.assign:function(e){if(e===r||e===null)throw TypeError(`Cannot convert undefined or null to object`);for(var t=Object(e),n=1;n<arguments.length;n++){var i=arguments[n];if(i!==r&&i!==null)for(var a in i)i.hasOwnProperty(a)&&(t[a]=i[a])}return t},h=p(function(e,t,n){for(var i=Object.keys(t),a=0;a<i.length;)(!n||n&&e[i[a]]===r)&&(e[i[a]]=t[i[a]]),a++;return e},`extend`,"Use `assign`."),g=p(function(e,t){return h(e,t,!0)},`merge`,"Use `assign`.");function _(e,t,n){var r=t.prototype,i=e.prototype=Object.create(r);i.constructor=e,i._super=r,n&&m(i,n)}function v(e,t){return function(){return e.apply(t,arguments)}}function y(e,t){return typeof e==o?e.apply(t&&t[0]||r,t):e}function b(e,t){return e===r?t:e}function x(e,t,n){f(T(t),function(t){e.addEventListener(t,n,!1)})}function S(e,t,n){f(T(t),function(t){e.removeEventListener(t,n,!1)})}function C(e,t){for(;e;){if(e==t)return!0;e=e.parentNode}return!1}function w(e,t){return e.indexOf(t)>-1}function T(e){return e.trim().split(/\s+/g)}function E(e,t,n){if(e.indexOf&&!n)return e.indexOf(t);for(var r=0;r<e.length;){if(n&&e[r][n]==t||!n&&e[r]===t)return r;r++}return-1}function D(e){return Array.prototype.slice.call(e,0)}function O(e,t,n){for(var r=[],i=[],a=0;a<e.length;){var o=t?e[a][t]:e[a];E(i,o)<0&&r.push(e[a]),i[a]=o,a++}return n&&(r=t?r.sort(function(e,n){return e[t]>n[t]}):r.sort()),r}function k(e,t){for(var n,a,o=t[0].toUpperCase()+t.slice(1),s=0;s<i.length;){if(n=i[s],a=n?n+o:t,a in e)return a;s++}return r}var A=1;function j(){return A++}function M(t){var n=t.ownerDocument||t;return n.defaultView||n.parentWindow||e}var N=/mobile|tablet|ip(ad|hone|od)|android/i,ee=`ontouchstart`in e,P=k(e,`PointerEvent`)!==r,te=ee&&N.test(navigator.userAgent),ne=`touch`,F=`pen`,re=`mouse`,ie=`kinect`,ae=25,I=1,L=2,R=4,oe=8,se=1,ce=2,le=4,ue=8,de=16,fe=ce|le,pe=ue|de,me=fe|pe,he=[`x`,`y`],ge=[`clientX`,`clientY`];function _e(e,t){var n=this;this.manager=e,this.callback=t,this.element=e.element,this.target=e.options.inputTarget,this.domHandler=function(t){y(e.options.enable,[e])&&n.handler(t)},this.init()}_e.prototype={handler:function(){},init:function(){this.evEl&&x(this.element,this.evEl,this.domHandler),this.evTarget&&x(this.target,this.evTarget,this.domHandler),this.evWin&&x(M(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&S(this.element,this.evEl,this.domHandler),this.evTarget&&S(this.target,this.evTarget,this.domHandler),this.evWin&&S(M(this.element),this.evWin,this.domHandler)}};function ve(e){var t;return t=e.options.inputClass||(P?Re:te?Ke:ee?Xe:Pe),new t(e,ye)}function ye(e,t,n){var r=n.pointers.length,i=n.changedPointers.length,a=t&I&&r-i===0,o=t&(R|oe)&&r-i===0;n.isFirst=!!a,n.isFinal=!!o,a&&(e.session={}),n.eventType=t,be(e,n),e.emit(`hammer.input`,n),e.recognize(n),e.session.prevInput=n}function be(e,t){var n=e.session,r=t.pointers,i=r.length;n.firstInput||(n.firstInput=Ce(t)),i>1&&!n.firstMultiple?n.firstMultiple=Ce(t):i===1&&(n.firstMultiple=!1);var a=n.firstInput,o=n.firstMultiple,s=o?o.center:a.center,u=t.center=we(r);t.timeStamp=l(),t.deltaTime=t.timeStamp-a.timeStamp,t.angle=Oe(s,u),t.distance=De(s,u),xe(n,t),t.offsetDirection=Ee(t.deltaX,t.deltaY);var d=Te(t.deltaTime,t.deltaX,t.deltaY);t.overallVelocityX=d.x,t.overallVelocityY=d.y,t.overallVelocity=c(d.x)>c(d.y)?d.x:d.y,t.scale=o?Ae(o.pointers,r):1,t.rotation=o?ke(o.pointers,r):0,t.maxPointers=n.prevInput?t.pointers.length>n.prevInput.maxPointers?t.pointers.length:n.prevInput.maxPointers:t.pointers.length,Se(n,t);var f=e.element;C(t.srcEvent.target,f)&&(f=t.srcEvent.target),t.target=f}function xe(e,t){var n=t.center,r=e.offsetDelta||{},i=e.prevDelta||{},a=e.prevInput||{};(t.eventType===I||a.eventType===R)&&(i=e.prevDelta={x:a.deltaX||0,y:a.deltaY||0},r=e.offsetDelta={x:n.x,y:n.y}),t.deltaX=i.x+(n.x-r.x),t.deltaY=i.y+(n.y-r.y)}function Se(e,t){var n=e.lastInterval||t,i=t.timeStamp-n.timeStamp,a,o,s,l;if(t.eventType!=oe&&(i>ae||n.velocity===r)){var u=t.deltaX-n.deltaX,d=t.deltaY-n.deltaY,f=Te(i,u,d);o=f.x,s=f.y,a=c(f.x)>c(f.y)?f.x:f.y,l=Ee(u,d),e.lastInterval=t}else a=n.velocity,o=n.velocityX,s=n.velocityY,l=n.direction;t.velocity=a,t.velocityX=o,t.velocityY=s,t.direction=l}function Ce(e){for(var t=[],n=0;n<e.pointers.length;)t[n]={clientX:s(e.pointers[n].clientX),clientY:s(e.pointers[n].clientY)},n++;return{timeStamp:l(),pointers:t,center:we(t),deltaX:e.deltaX,deltaY:e.deltaY}}function we(e){var t=e.length;if(t===1)return{x:s(e[0].clientX),y:s(e[0].clientY)};for(var n=0,r=0,i=0;i<t;)n+=e[i].clientX,r+=e[i].clientY,i++;return{x:s(n/t),y:s(r/t)}}function Te(e,t,n){return{x:t/e||0,y:n/e||0}}function Ee(e,t){return e===t?se:c(e)>=c(t)?e<0?ce:le:t<0?ue:de}function De(e,t,n){n||(n=he);var r=t[n[0]]-e[n[0]],i=t[n[1]]-e[n[1]];return Math.sqrt(r*r+i*i)}function Oe(e,t,n){n||(n=he);var r=t[n[0]]-e[n[0]],i=t[n[1]]-e[n[1]];return Math.atan2(i,r)*180/Math.PI}function ke(e,t){return Oe(t[1],t[0],ge)+Oe(e[1],e[0],ge)}function Ae(e,t){return De(t[0],t[1],ge)/De(e[0],e[1],ge)}var je={mousedown:I,mousemove:L,mouseup:R},Me=`mousedown`,Ne=`mousemove mouseup`;function Pe(){this.evEl=Me,this.evWin=Ne,this.pressed=!1,_e.apply(this,arguments)}_(Pe,_e,{handler:function(e){var t=je[e.type];t&I&&(e.button===0||e.button===2)&&(this.pressed=!0),t&L&&e.which!==1&&(t=R),this.pressed&&(t&R&&(this.pressed=!1),this.callback(this.manager,t,{pointers:[e],changedPointers:[e],pointerType:re,srcEvent:e}))}});var Fe={pointerdown:I,pointermove:L,pointerup:R,pointercancel:oe,pointerout:oe},Ie={2:ne,3:F,4:re,5:ie},Le=`pointerdown`,z=`pointermove pointerup pointercancel`;e.MSPointerEvent&&!e.PointerEvent&&(Le=`MSPointerDown`,z=`MSPointerMove MSPointerUp MSPointerCancel`);function Re(){this.evEl=Le,this.evWin=z,_e.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}_(Re,_e,{handler:function(e){var t=this.store,n=!1,r=!1,i=Fe[e.type.toLowerCase().replace(`ms`,``)],a=Ie[e.pointerType]||e.pointerType,o=a==ne,s=E(t,e.pointerId,`pointerId`);i&I&&(e.button===0||e.button===2||o)?s<0&&(t.push(e),s=t.length-1):i&(R|oe)?n=!0:!o&&e.buttons===0&&(n=!0,r=!0,i=Fe.pointerup),!(s<0)&&(r||(t[s]=e),this.callback(this.manager,i,{pointers:t,changedPointers:[e],pointerType:a,srcEvent:t[s]}),n&&t.splice(s,1))}});var ze={touchstart:I,touchmove:L,touchend:R,touchcancel:oe},Be=`touchstart`,Ve=`touchstart touchmove touchend touchcancel`;function He(){this.evTarget=Be,this.evWin=Ve,this.started=!1,_e.apply(this,arguments)}_(He,_e,{handler:function(e){var t=ze[e.type];if(t===I&&(this.started=!0),this.started){var n=Ue.call(this,e,t);t&(R|oe)&&n[0].length-n[1].length===0&&(this.started=!1),this.callback(this.manager,t,{pointers:n[0],changedPointers:n[1],pointerType:ne,srcEvent:e})}}});function Ue(e,t){var n=D(e.touches),r=D(e.changedTouches);return t&(R|oe)&&(n=O(n.concat(r),`identifier`,!0)),[n,r]}var We={touchstart:I,touchmove:L,touchend:R,touchcancel:oe},Ge=`touchstart touchmove touchend touchcancel`;function Ke(){this.evTarget=Ge,this.targetIds={},_e.apply(this,arguments)}_(Ke,_e,{handler:function(e){var t=We[e.type],n=qe.call(this,e,t);n&&this.callback(this.manager,t,{pointers:n[0],changedPointers:n[1],pointerType:ne,srcEvent:e})}});function qe(e,t){var n=D(e.touches),r=this.targetIds;if(t&(I|L)&&n.length===1)return r[n[0].identifier]=!0,[n,n];var i,a,o=D(e.changedTouches),s=[],c=this.target;if(a=n.filter(function(e){return C(e.target,c)}),t===I)for(i=0;i<a.length;)r[a[i].identifier]=!0,i++;for(i=0;i<o.length;)r[o[i].identifier]&&s.push(o[i]),t&(R|oe)&&delete r[o[i].identifier],i++;if(s.length)return[O(a.concat(s),`identifier`,!0),s]}var Je=2500,Ye=25;function Xe(){_e.apply(this,arguments);var e=v(this.handler,this);this.touch=new Ke(this.manager,e),this.mouse=new Pe(this.manager,e),this.primaryTouch=null,this.lastTouches=[]}_(Xe,_e,{handler:function(e,t,n){var r=n.pointerType==ne,i=n.pointerType==re;if(!(i&&n.sourceCapabilities&&n.sourceCapabilities.firesTouchEvents)){if(r)Ze.call(this,t,n);else if(i&&$e.call(this,n))return;this.callback(e,t,n)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});function Ze(e,t){e&I?(this.primaryTouch=t.changedPointers[0].identifier,Qe.call(this,t)):e&(R|oe)&&Qe.call(this,t)}function Qe(e){var t=e.changedPointers[0];if(t.identifier===this.primaryTouch){var n={x:t.clientX,y:t.clientY};this.lastTouches.push(n);var r=this.lastTouches;setTimeout(function(){var e=r.indexOf(n);e>-1&&r.splice(e,1)},Je)}}function $e(e){for(var t=e.srcEvent.clientX,n=e.srcEvent.clientY,r=0;r<this.lastTouches.length;r++){var i=this.lastTouches[r],a=Math.abs(t-i.x),o=Math.abs(n-i.y);if(a<=Ye&&o<=Ye)return!0}return!1}var et=a?k(a.style,`touchAction`):r,tt=et!==r,nt=`compute`,rt=`auto`,it=`manipulation`,at=`none`,ot=`pan-x`,st=`pan-y`,ct=dt();function lt(e,t){this.manager=e,this.set(t)}lt.prototype={set:function(e){e==nt&&(e=this.compute()),tt&&this.manager.element.style&&ct[e]&&(this.manager.element.style[et]=e),this.actions=e.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var e=[];return f(this.manager.recognizers,function(t){y(t.options.enable,[t])&&(e=e.concat(t.getTouchAction()))}),ut(e.join(` `))},preventDefaults:function(e){var t=e.srcEvent,n=e.offsetDirection;if(this.manager.session.prevented){t.preventDefault();return}var r=this.actions,i=w(r,at)&&!ct[at],a=w(r,st)&&!ct[st],o=w(r,ot)&&!ct[ot];if(i){var s=e.pointers.length===1,c=e.distance<2,l=e.deltaTime<250;if(s&&c&&l)return}if(!(o&&a)&&(i||a&&n&fe||o&&n&pe))return this.preventSrc(t)},preventSrc:function(e){this.manager.session.prevented=!0,e.preventDefault()}};function ut(e){if(w(e,at))return at;var t=w(e,ot),n=w(e,st);return t&&n?at:t||n?t?ot:st:w(e,it)?it:rt}function dt(){if(!tt)return!1;var t={},n=e.CSS&&e.CSS.supports;return[`auto`,`manipulation`,`pan-y`,`pan-x`,`pan-x pan-y`,`none`].forEach(function(r){t[r]=n?e.CSS.supports(`touch-action`,r):!0}),t}var ft=1,pt=2,mt=4,ht=8,B=ht,gt=16,V=32;function _t(e){this.options=m({},this.defaults,e||{}),this.id=j(),this.manager=null,this.options.enable=b(this.options.enable,!0),this.state=ft,this.simultaneous={},this.requireFail=[]}_t.prototype={defaults:{},set:function(e){return m(this.options,e),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(e){if(d(e,`recognizeWith`,this))return this;var t=this.simultaneous;return e=bt(e,this),t[e.id]||(t[e.id]=e,e.recognizeWith(this)),this},dropRecognizeWith:function(e){return d(e,`dropRecognizeWith`,this)?this:(e=bt(e,this),delete this.simultaneous[e.id],this)},requireFailure:function(e){if(d(e,`requireFailure`,this))return this;var t=this.requireFail;return e=bt(e,this),E(t,e)===-1&&(t.push(e),e.requireFailure(this)),this},dropRequireFailure:function(e){if(d(e,`dropRequireFailure`,this))return this;e=bt(e,this);var t=E(this.requireFail,e);return t>-1&&this.requireFail.splice(t,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(e){return!!this.simultaneous[e.id]},emit:function(e){var t=this,n=this.state;function r(n){t.manager.emit(n,e)}n<ht&&r(t.options.event+vt(n)),r(t.options.event),e.additionalEvent&&r(e.additionalEvent),n>=ht&&r(t.options.event+vt(n))},tryEmit:function(e){if(this.canEmit())return this.emit(e);this.state=V},canEmit:function(){for(var e=0;e<this.requireFail.length;){if(!(this.requireFail[e].state&(V|ft)))return!1;e++}return!0},recognize:function(e){var t=m({},e);if(!y(this.options.enable,[this,t])){this.reset(),this.state=V;return}this.state&(B|gt|V)&&(this.state=ft),this.state=this.process(t),this.state&(pt|mt|ht|gt)&&this.tryEmit(t)},process:function(e){},getTouchAction:function(){},reset:function(){}};function vt(e){return e>?`cancel`:e&ht?`end`:e&mt?`move`:e&pt?`start`:``}function yt(e){return e==de?`down`:e==ue?`up`:e==ce?`left`:e==le?`right`:``}function bt(e,t){var n=t.manager;return n?n.get(e):e}function xt(){_t.apply(this,arguments)}_(xt,_t,{defaults:{pointers:1},attrTest:function(e){var t=this.options.pointers;return t===0||e.pointers.length===t},process:function(e){var t=this.state,n=e.eventType,r=t&(pt|mt),i=this.attrTest(e);return r&&(n&oe||!i)?t|gt:r||i?n&R?t|ht:t&pt?t|mt:pt:V}});function St(){xt.apply(this,arguments),this.pX=null,this.pY=null}_(St,xt,{defaults:{event:`pan`,threshold:10,pointers:1,direction:me},getTouchAction:function(){var e=this.options.direction,t=[];return e&fe&&t.push(st),e&pe&&t.push(ot),t},directionTest:function(e){var t=this.options,n=!0,r=e.distance,i=e.direction,a=e.deltaX,o=e.deltaY;return i&t.direction||(t.direction&fe?(i=a===0?se:a<0?ce:le,n=a!=this.pX,r=Math.abs(e.deltaX)):(i=o===0?se:o<0?ue:de,n=o!=this.pY,r=Math.abs(e.deltaY))),e.direction=i,n&&r>t.threshold&&i&t.direction},attrTest:function(e){return xt.prototype.attrTest.call(this,e)&&(this.state&pt||!(this.state&pt)&&this.directionTest(e))},emit:function(e){this.pX=e.deltaX,this.pY=e.deltaY;var t=yt(e.direction);t&&(e.additionalEvent=this.options.event+t),this._super.emit.call(this,e)}});function Ct(){xt.apply(this,arguments)}_(Ct,xt,{defaults:{event:`pinch`,threshold:0,pointers:2},getTouchAction:function(){return[at]},attrTest:function(e){return this._super.attrTest.call(this,e)&&(Math.abs(e.scale-1)>this.options.threshold||this.state&pt)},emit:function(e){if(e.scale!==1){var t=e.scale<1?`in`:`out`;e.additionalEvent=this.options.event+t}this._super.emit.call(this,e)}});function wt(){_t.apply(this,arguments),this._timer=null,this._input=null}_(wt,_t,{defaults:{event:`press`,pointers:1,time:251,threshold:9},getTouchAction:function(){return[rt]},process:function(e){var t=this.options,n=e.pointers.length===t.pointers,r=e.distance<t.threshold,i=e.deltaTime>t.time;if(this._input=e,!r||!n||e.eventType&(R|oe)&&!i)this.reset();else if(e.eventType&I)this.reset(),this._timer=u(function(){this.state=B,this.tryEmit()},t.time,this);else if(e.eventType&R)return B;return V},reset:function(){clearTimeout(this._timer)},emit:function(e){this.state===B&&(e&&e.eventType&R?this.manager.emit(this.options.event+`up`,e):(this._input.timeStamp=l(),this.manager.emit(this.options.event,this._input)))}});function Tt(){xt.apply(this,arguments)}_(Tt,xt,{defaults:{event:`rotate`,threshold:0,pointers:2},getTouchAction:function(){return[at]},attrTest:function(e){return this._super.attrTest.call(this,e)&&(Math.abs(e.rotation)>this.options.threshold||this.state&pt)}});function Et(){xt.apply(this,arguments)}_(Et,xt,{defaults:{event:`swipe`,threshold:10,velocity:.3,direction:fe|pe,pointers:1},getTouchAction:function(){return St.prototype.getTouchAction.call(this)},attrTest:function(e){var t=this.options.direction,n;return t&(fe|pe)?n=e.overallVelocity:t&fe?n=e.overallVelocityX:t&pe&&(n=e.overallVelocityY),this._super.attrTest.call(this,e)&&t&e.offsetDirection&&e.distance>this.options.threshold&&e.maxPointers==this.options.pointers&&c(n)>this.options.velocity&&e.eventType&R},emit:function(e){var t=yt(e.offsetDirection);t&&this.manager.emit(this.options.event+t,e),this.manager.emit(this.options.event,e)}});function Dt(){_t.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}_(Dt,_t,{defaults:{event:`tap`,pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[it]},process:function(e){var t=this.options,n=e.pointers.length===t.pointers,r=e.distance<t.threshold,i=e.deltaTime<t.time;if(this.reset(),e.eventType&I&&this.count===0)return this.failTimeout();if(r&&i&&n){if(e.eventType!=R)return this.failTimeout();var a=this.pTime?e.timeStamp-this.pTime<t.interval:!0,o=!this.pCenter||De(this.pCenter,e.center)<t.posThreshold;if(this.pTime=e.timeStamp,this.pCenter=e.center,!o||!a?this.count=1:this.count+=1,this._input=e,this.count%t.taps===0)return this.hasRequireFailures()?(this._timer=u(function(){this.state=B,this.tryEmit()},t.interval,this),pt):B}return V},failTimeout:function(){return this._timer=u(function(){this.state=V},this.options.interval,this),V},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==B&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}});function Ot(e,t){return t=t||{},t.recognizers=b(t.recognizers,Ot.defaults.preset),new jt(e,t)}Ot.VERSION=`2.0.7`,Ot.defaults={domEvents:!1,touchAction:nt,enable:!0,inputTarget:null,inputClass:null,preset:[[Tt,{enable:!1}],[Ct,{enable:!1},[`rotate`]],[Et,{direction:fe}],[St,{direction:fe},[`swipe`]],[Dt],[Dt,{event:`doubletap`,taps:2},[`tap`]],[wt]],cssProps:{userSelect:`none`,touchSelect:`none`,touchCallout:`none`,contentZooming:`none`,userDrag:`none`,tapHighlightColor:`rgba(0,0,0,0)`}};var kt=1,At=2;function jt(e,t){this.options=m({},Ot.defaults,t||{}),this.options.inputTarget=this.options.inputTarget||e,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=e,this.input=ve(this),this.touchAction=new lt(this,this.options.touchAction),Mt(this,!0),f(this.options.recognizers,function(e){var t=this.add(new e[0](e[1]));e[2]&&t.recognizeWith(e[2]),e[3]&&t.requireFailure(e[3])},this)}jt.prototype={set:function(e){return m(this.options,e),e.touchAction&&this.touchAction.update(),e.inputTarget&&(this.input.destroy(),this.input.target=e.inputTarget,this.input.init()),this},stop:function(e){this.session.stopped=e?At:kt},recognize:function(e){var t=this.session;if(!t.stopped){this.touchAction.preventDefaults(e);var n,r=this.recognizers,i=t.curRecognizer;(!i||i&&i.state&B)&&(i=t.curRecognizer=null);for(var a=0;a<r.length;)n=r[a],t.stopped!==At&&(!i||n==i||n.canRecognizeWith(i))?n.recognize(e):n.reset(),!i&&n.state&(pt|mt|ht)&&(i=t.curRecognizer=n),a++}},get:function(e){if(e instanceof _t)return e;for(var t=this.recognizers,n=0;n<t.length;n++)if(t[n].options.event==e)return t[n];return null},add:function(e){if(d(e,`add`,this))return this;var t=this.get(e.options.event);return t&&this.remove(t),this.recognizers.push(e),e.manager=this,this.touchAction.update(),e},remove:function(e){if(d(e,`remove`,this))return this;if(e=this.get(e),e){var t=this.recognizers,n=E(t,e);n!==-1&&(t.splice(n,1),this.touchAction.update())}return this},on:function(e,t){if(e!==r&&t!==r){var n=this.handlers;return f(T(e),function(e){n[e]=n[e]||[],n[e].push(t)}),this}},off:function(e,t){if(e!==r){var n=this.handlers;return f(T(e),function(e){t?n[e]&&n[e].splice(E(n[e],t),1):delete n[e]}),this}},emit:function(e,t){this.options.domEvents&&Nt(e,t);var n=this.handlers[e]&&this.handlers[e].slice();if(!(!n||!n.length)){t.type=e,t.preventDefault=function(){t.srcEvent.preventDefault()};for(var r=0;r<n.length;)n[r](t),r++}},destroy:function(){this.element&&Mt(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}};function Mt(e,t){var n=e.element;if(n.style){var r;f(e.options.cssProps,function(i,a){r=k(n.style,a),t?(e.oldCssProps[r]=n.style[r],n.style[r]=i):n.style[r]=e.oldCssProps[r]||``}),t||(e.oldCssProps={})}}function Nt(e,n){var r=t.createEvent(`Event`);r.initEvent(e,!0,!0),r.gesture=n,n.target.dispatchEvent(r)}return m(Ot,{INPUT_START:I,INPUT_MOVE:L,INPUT_END:R,INPUT_CANCEL:oe,STATE_POSSIBLE:ft,STATE_BEGAN:pt,STATE_CHANGED:mt,STATE_ENDED:ht,STATE_RECOGNIZED:B,STATE_CANCELLED:gt,STATE_FAILED:V,DIRECTION_NONE:se,DIRECTION_LEFT:ce,DIRECTION_RIGHT:le,DIRECTION_UP:ue,DIRECTION_DOWN:de,DIRECTION_HORIZONTAL:fe,DIRECTION_VERTICAL:pe,DIRECTION_ALL:me,Manager:jt,Input:_e,TouchAction:lt,TouchInput:Ke,MouseInput:Pe,PointerEventInput:Re,TouchMouseInput:Xe,SingleTouchInput:He,Recognizer:_t,AttrRecognizer:xt,Tap:Dt,Pan:St,Swipe:Et,Pinch:Ct,Rotate:Tt,Press:wt,on:x,off:S,each:f,merge:g,extend:h,assign:m,inherit:_,bindFn:v,prefixed:k}),Ot})(typeof window<`u`?window:{},typeof document<`u`?document:{},`Hammer`);function HC(e,t,n){if(n.isPerspectiveCamera){e.setFromCamera(t,n);return}if(n.isOrthographicCamera){let r=n.projectionMatrix.elements[14];e.ray.origin.set(t.x,t.y,r).unproject(n),e.ray.direction.set(0,0,-1).transformDirection(n.matrixWorld),e.camera=n;return}e.setFromCamera(t,n)}var UC=class e extends Bt{static parseArgs(t){return t instanceof e?t:Object.assign({},t)}static initAnimationEndState(e){var t,n,r,i,a,o,s,c;let l=this.parseArgs(e),{state:u,currentState:d}=l.initial,f=typeof u.panoIndex==`number`?{workCode:(r=(t=u.workCode)==null?(n=l.works[0])==null?void 0:n.workCode:t)==null?``:r,panoIndex:u.panoIndex}:{workCode:d.workCode,panoIndex:d.panoIndex};return Object.assign(Object.assign({},f),{mode:``,longitude:(i=u.longitude)==null?d.longitude:i,latitude:(a=u.latitude)==null?d.latitude:a,fov:(o=u.fov)==null?d.fov:o,offset:(s=u.offset)==null?d.offset:s,distance:(c=u.distance)==null?d.distance:c})}constructor(t){var n,r,i;super();let a=e.parseArgs(t);this.mode=``,this.pending=new Set,this.userAction=a.initial.userAction,this.destroyed=!1,this.fiveId=a.fiveId,this.scene=a.scene,this.modelScene=a.modelScene,this.xrCustomObjectsScene=a.xrCustomObjectsScene,this.helper=a.helper,this.camera=a.camera,this.renderer=a.renderer,this.viewport=a.viewport,this.element=a.element,this.enableWheel=a.enableWheel,this.enableHDR=a.enableHDR,this.works=a.works,this.imageOptions=a.imageOptions,this.videoTexture=a.videoTexture,this.extraElements=a.extraElements,this.initial=a.initial,this.currentPano=typeof this.initial.state.panoIndex==`number`?{workCode:(i=(n=this.initial.state.workCode)==null?(r=a.works[0])==null?void 0:r.workCode:n)==null?``:i,panoIndex:this.initial.state.panoIndex}:{workCode:this.initial.currentState.workCode,panoIndex:this.initial.currentState.panoIndex},this.needsRender=!0,this.cameraMotion=new J({longitude:{value:this.camera.pose.longitude,circle:[0,Math.PI*2]},latitude:this.camera.pose.latitude,fov:this.camera.pose.fov}),this.inMomentumMovement=null,this.eventUnbinds=[a.element].concat(a.extraElements||[]).map(e=>this.bindEvents(e)),this.initAnimationIsReady=!1,this.pending.add(`init-animation`),this.initAnimationReady=new Promise(e=>{iu.shared.add(()=>{this.initAnimation().then(()=>{this.initAnimationIsReady=!0,this.pending.delete(`init-animation`),e()})},!0,0)})}updateConfiguration(e){return!0}destroy(){var e;this.stopMomentumMovement(),this.destroyed=!0,this.off(),this.cameraMotion.dispose();for(let e of this.eventUnbinds)e();this.panState=void 0,(e=this.pressState)==null||e.stop(),this.pressState=void 0}isReady(){return this.inMomentumMovement===null&&this.pending.size===0&&this.cameraMotion.ended===!0}bindExtraElement(e){for(let t of this.eventUnbinds)if(t.element===e)return;this.eventUnbinds.push(this.bindEvents(e))}unbindExtraElement(e){let t=[];for(let n of this.eventUnbinds)n.element===e?n():t.push(n);this.eventUnbinds=t}updateModel(e){this.needsRender=!0}updateWork(e,t,n,r){return this.works=e,this.userAction=r,!1}updateTime(e,t,...n){if(this.destroyed)return;let r={};this.cameraMotion.ended&&(this.cameraMotion.update(e),r.longitude=this.cameraMotion.value.longitude,r.latitude=this.cameraMotion.value.latitude,r.fov=this.cameraMotion.value.fov),wC(r)&&this.setCamera(r)}render(){return!1}updateCamera(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r={};return e.longitude!==void 0&&(r.longitude=e.longitude),e.latitude!==void 0&&(r.latitude=e.latitude),e.fov!==void 0&&(r.fov=e.fov),this.cameraMotion.set(r,t).catch(K)})}updateCameraWithKeyframes(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r=[];for(let t of e)r.push({key:t.key,progress:t.progress,value:{longitude:t.value.longitude,latitude:t.value.latitude,fov:t.value.fov}});return this.cameraMotion.setKeyframes(r,t)})}getTargetState(){let e=this.cameraMotion.getKeyFrameSegment(G())[1];return Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:e.value.longitude,latitude:e.value.latitude,fov:e.value.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance})}initAnimation(){let{state:t,currentState:n,duration:r,userAction:i}=this.initial,a=e.initAnimationEndState(this);return this.userAction=i,this.emit(`initAnimation.start`,$(`initAnimation.start`,{state:a,userAction:this.userAction})),this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:a,userAction:this.userAction})),Promise.resolve()}setCamera(e={}){var t,n,r,i,a;let o=(t=e.longitude)==null?this.camera.pose.longitude:t,s=(n=e.latitude)==null?this.camera.pose.latitude:n,c=(r=e.fov)==null?this.camera.pose.fov:r,l=(i=e.distance)==null?this.camera.pose.distance:i,u=(a=e.offset)==null?this.camera.pose.offset:a,d=dC(o,this.camera.pose.longitude,Math.PI*2)||dC(s,this.camera.pose.latitude),f=dC(c,this.camera.pose.fov),p=dC(l,this.camera.pose.distance),m=pC(u,this.camera.pose.offset);(f||d||m||p)&&(this.camera.setFromPose({longitude:o,latitude:s,fov:c,distance:l,offset:u}),this.emit(`camera.update`,$(`camera.update`,{userAction:this.userAction,state:Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:o,latitude:s,fov:c,offset:u,distance:l})})),this.needsRender=!0)}stopMomentumMovement(){if(this.inMomentumMovement&&this.inMomentumMovement.event&&!this.inMomentumMovement.event.defaultPrevented&&!this.inMomentumMovement.event.isFinal){let e=$(`gesture.momentum`,Object.assign(Object.assign({},this.inMomentumMovement.event),{isFirst:!1,isFinal:!0}));this.emit(`gesture.fire`,e),this.emit(`gesture.momentum`,e)}this.inMomentumMovement=null}onPanGesture(e){this.stopMomentumMovement(),this.emit(`gesture.pan`,e)}onTapGesture(e){this.stopMomentumMovement(),this.emit(`gesture.tap`,e)}onDblTapGesture(e){this.stopMomentumMovement(),this.emit(`gesture.dbltap`,e),!e.defaultPrevented&&(e.type=`gesture.tap`,this.onTapGesture(e))}onPressGesture(e){this.stopMomentumMovement(),this.emit(`gesture.press`,e)}onPinchGesture(e){this.stopMomentumMovement(),this.emit(`gesture.pinch`,e)}onMouseWheel(e){this.stopMomentumMovement(),this.emit(`gesture.mousewheel`,e)}onMouseMove(e){this.stopMomentumMovement(),this.emit(`gesture.mousemove`,e)}relativeClientPosition(e){let{top:t,left:n,width:r,height:i}=this.element.getBoundingClientRect();return n+=r*this.viewport.left,t+=i*(1-this.viewport.bottom-this.viewport.height),r*=this.viewport.width,i*=this.viewport.height,new l.Vector2((e.x-n)/r*2-1,-(e.y-t)/i*2+1)}createRaycasterFromCamera(e,t){let n=new l.Raycaster;return n.params.Points={threshold:.1},n.firstHitOnly=!0,n.near=t.near,n.far=t.far,HC(n,e,t),n}bindEvents(e){let t=e=>{let t=this.relativeClientPosition(e);return!(Math.abs(t.x)>1||Math.abs(t.y)>1)},n=e=>({button:`button`in e?e.button:0,buttons:`buttons`in e?e.buttons:0,shiftKey:`shiftKey`in e?e.shiftKey:!1,ctrlKey:`ctrlKey`in e?e.ctrlKey:!1,altKey:`altKey`in e?e.altKey:!1,metaKey:`metaKey`in e?e.metaKey:!1}),r=new VC.Manager(e),i=e=>e.session.firstInput||null,a=new VC.Pan({threshold:10,pointers:0}),o=new VC.Tap({interval:410}),s=new VC.Pinch({threshold:0,pointers:2});r.add([a,o,s]),r.on(`panstart pan`,e=>{let a=n(e.srcEvent),o=i(r);if(o&&!t(o.center))return;let s=$(`gesture.pan`,{target:e.target,pointerType:e.pointerType,srcEvent:e.srcEvent,pointers:e.pointers.map(e=>{let t=this.relativeClientPosition(e),n=this.createRaycasterFromCamera(t,this.camera);return Object.assign(Object.assign({x:e.x,y:e.y,delta:0},a),{coords:t,raycaster:n})}),isFirst:e.isFirst,isFinal:e.isFinal,scale:e.scale,center:(e=>{let t=this.relativeClientPosition(e),n=this.createRaycasterFromCamera(t,this.camera);return Object.assign(Object.assign({x:e.x,y:e.y,delta:0},a),{coords:t,raycaster:n})})(e.center),velocityX:e.velocityX,velocityY:e.velocityY,overallVelocityX:e.overallVelocityX,overallVelocityY:e.overallVelocityY,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),xC(this.camera.pose))});this.emit(`gesture.fire`,s),this.onPanGesture(s),v()}),r.on(`tap`,e=>{let a=n(e.srcEvent);if(e.pointerType===`mouse`&&a.button!==0)return;let o=i(r);if(o&&!t(o.center))return;let s=$(`gesture.tap`,{target:e.target,pointerType:e.pointerType,srcEvent:e.srcEvent,pointers:e.pointers.map(e=>{let t=this.relativeClientPosition(e),n=this.createRaycasterFromCamera(t,this.camera);return Object.assign(Object.assign({x:e.x,y:e.y,delta:0},a),{coords:t,raycaster:n})}),isFirst:!0,isFinal:!0,scale:e.scale,center:(e=>{let t=this.relativeClientPosition(e),n=this.createRaycasterFromCamera(t,this.camera);return Object.assign(Object.assign({x:e.x,y:e.y,delta:0},a),{coords:t,raycaster:n})})(e.center),velocityX:e.velocityX,velocityY:e.velocityY,overallVelocityX:e.overallVelocityX,overallVelocityY:e.overallVelocityY,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),xC(this.camera.pose))});this.emit(`gesture.fire`,s),this.onTapGesture(s),v()}),r.on(`pinchstart pinch pinchend`,e=>{let a=n(e.srcEvent),o=i(r);if(o&&!t(o.center))return;let s=$(`gesture.pinch`,{target:e.target,pointerType:e.pointerType,srcEvent:e.srcEvent,pointers:e.pointers.map(e=>{var t;let n=this.relativeClientPosition(e),r=new l.Raycaster;return r.params.Points={threshold:.1},HC(r,n,this.camera),Object.assign(Object.assign({x:e.x,y:e.y,delta:(t=e.delta)==null?0:t},a),{coords:n,raycaster:r})}),isFirst:e.type===`pinchstart`,isFinal:e.type===`pinchend`,scale:e.scale,center:(e=>{let t=this.relativeClientPosition(e),n=this.createRaycasterFromCamera(t,this.camera);return Object.assign(Object.assign({x:e.x,y:e.y,delta:0},a),{coords:t,raycaster:n})})(e.center),velocityX:e.velocityX,velocityY:e.velocityY,overallVelocityX:e.overallVelocityX,overallVelocityY:e.overallVelocityY,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),xC(this.camera.pose))});this.emit(`gesture.fire`,s),this.onPinchGesture(s),v()}),r.on(`dbltap`,e=>{let a=n(e.srcEvent);if(e.pointerType===`mouse`&&a.button!==0)return;let o=i(r);if(o&&!t(o.center))return;let s=$(`gesture.dbltap`,{target:e.target,pointerType:e.pointerType,srcEvent:e.srcEvent,pointers:e.pointers.map(e=>{let t=this.relativeClientPosition(e),n=this.createRaycasterFromCamera(t,this.camera);return Object.assign(Object.assign({x:e.x,y:e.y,delta:0},a),{coords:t,raycaster:n})}),isFirst:!0,isFinal:!0,scale:e.scale,center:(e=>{let t=this.relativeClientPosition(e),n=this.createRaycasterFromCamera(t,this.camera);return Object.assign(Object.assign({x:e.x,y:e.y,delta:0},a),{coords:t,raycaster:n})})(e.center),velocityX:e.velocityX,velocityY:e.velocityY,overallVelocityX:e.overallVelocityX,overallVelocityY:e.overallVelocityY,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),xC(this.camera.pose))});this.emit(`gesture.fire`,s),this.onDblTapGesture(s),v()});let c=null,u=null,d=(e,t,r)=>{let i={x:r.clientX,y:r.clientY},a=this.relativeClientPosition(i),o=this.createRaycasterFromCamera(a,this.camera),s=Object.assign(Object.assign(Object.assign(Object.assign({},i),{coords:a,raycaster:o}),n(r)),{delta:0}),c=e===`pinchend`?t:t-r.deltaY/280;return $(`gesture.pinch`,{target:r.target,pointerType:`mouse`,srcEvent:r,pointers:[Object.assign({},s)],isFirst:e===`pinchstart`,isFinal:e===`pinchend`,scale:H(c,.1,10),center:Object.assign({},s),velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),xC(this.camera.pose))})},f=e=>{var r;if(t({x:e.clientX,y:e.clientY})){if(e.preventDefault(),e.ctrlKey){let t=(r=c==null?void 0:c.prevEvent.scale)==null?1:r,n=d(c?`pinch`:`pinchstart`,t,e);this.emit(`gesture.fire`,n),c===null?c={firstEvent:n,prevEvent:n}:c.prevEvent=n,this.emit(`gesture.fire`,n),this.onPinchGesture(n),u!==null&&window.clearTimeout(u),u=window.setTimeout(()=>{var t;u=null;let n=d(`pinchend`,(t=c==null?void 0:c.prevEvent.scale)==null?1:t,e);this.emit(`gesture.fire`,n),c=null,this.onPinchGesture(n)},200)}else{let t=(Math.abs(e.deltaY)>Math.abs(e.deltaX)?e.deltaY:e.deltaX)/-60,r=this.mouseWheelState!==void 0,i={x:e.clientX,y:e.clientY},a=this.relativeClientPosition(i),o=this.createRaycasterFromCamera(a,this.camera),s=Object.assign(Object.assign(Object.assign(Object.assign({},i),{coords:a,raycaster:o}),n(e)),{delta:t}),c=$(`gesture.mousewheel`,{target:e.target,pointerType:`mouse`,srcEvent:e,pointers:[Object.assign({},s)],isFirst:r,isFinal:!1,scale:0,center:Object.assign({},s),velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),xC(this.camera.pose))});this.emit(`gesture.fire`,c),this.onMouseWheel(c),this.mouseWheelState&&clearTimeout(this.mouseWheelState.timer),this.mouseWheelState={timer:setTimeout(()=>{this.mouseWheelState=void 0;let t=$(`gesture.mousewheel`,{target:e.target,pointerType:`mouse`,srcEvent:e,pointers:[Object.assign(Object.assign({},s),{delta:0})],isFirst:!1,isFinal:!0,scale:0,center:Object.assign(Object.assign({},s),{delta:0}),velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),xC(this.camera.pose))});this.emit(`gesture.fire`,t),this.onMouseWheel(t)},100)}}v()}},p=e=>{if(_S)return;if(!t({x:e.clientX,y:e.clientY})){m();return}let r=!1;this.mouseMoveState||(r=!0);let i={x:e.clientX,y:e.clientY},a=this.relativeClientPosition(i),o=this.createRaycasterFromCamera(a,this.camera),s=Object.assign(Object.assign(Object.assign(Object.assign({},i),{coords:a,raycaster:o}),n(e)),{delta:0}),c=$(`gesture.mousemove`,{target:e.target,pointerType:`mouse`,srcEvent:e,pointers:[Object.assign({},s)],isFirst:r,isFinal:!1,scale:0,center:Object.assign({},s),velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),xC(this.camera.pose))});this.emit(`gesture.fire`,c),this.mouseMoveState={timeStamp:G(),event:c},this.onMouseMove(c),this.pressState&&Math.abs(e.clientX-this.pressState.event.center.y)>10&&Math.abs(e.clientY-this.pressState.event.center.y)>10&&v()},m=()=>{if(this.mouseMoveState){let e=$(this.mouseMoveState.event.type,Object.assign(Object.assign({},this.mouseMoveState.event),{isFinal:!0}));this.emit(`gesture.fire`,e),this.mouseMoveState=void 0,this.onMouseMove(e)}v()},h=e=>{if(!t(e.center)){v();return}let n=!1;this.pressState||(n=!0,this.pressState={event:e,timeStamp:G(),stop:K});let r=G()-this.pressState.timeStamp,i=$(this.pressState.event.type,Object.assign(Object.assign({},this.pressState.event),{isFirst:n,isFinal:!1,center:Object.assign(Object.assign({},this.pressState.event.center),{delta:r}),pointers:this.pressState.event.pointers.map(e=>Object.assign(Object.assign({},e),{delta:r}))}));this.emit(`gesture.fire`,i),this.onPressGesture(i),this.pressState&&(this.pressState.stop=iu.shared.add(t=>{h(e)},!0,1))},g=e=>{if(v(),e.touches.length>1||e.changedTouches.length<=0)return;let t={x:e.changedTouches[0].clientX,y:e.changedTouches[0].clientY},r=this.relativeClientPosition(t),i=this.createRaycasterFromCamera(r,this.camera),a=Object.assign(Object.assign(Object.assign(Object.assign({},t),{coords:r,raycaster:i}),n(e)),{delta:0}),o=$(`gesture.press`,{target:e.target,pointerType:`touch`,srcEvent:e,pointers:[Object.assign({},a)],isFirst:!1,isFinal:!1,scale:0,center:a,velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),xC(this.camera.pose))});this.emit(`gesture.fire`,o),h(o)},_=e=>{v();let t={x:e.clientX,y:e.clientY},r=this.relativeClientPosition(t),i=this.createRaycasterFromCamera(r,this.camera),a=Object.assign(Object.assign(Object.assign(Object.assign({},t),{coords:r,raycaster:i}),n(e)),{delta:0}),o=$(`gesture.press`,{target:e.target,pointerType:`mouse`,srcEvent:e,pointers:[Object.assign({},a)],isFirst:!1,isFinal:!1,scale:0,center:a,velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),xC(this.camera.pose))});this.emit(`gesture.fire`,o),h(o)},v=()=>{var e;if(this.pressState){let t=G()-this.pressState.timeStamp,n=$(this.pressState.event.type,Object.assign(Object.assign({},this.pressState.event),{center:Object.assign(Object.assign({},this.pressState.event.center),{delta:t}),isFirst:!1,isFinal:!0,pointers:this.pressState.event.pointers.map(e=>Object.assign(Object.assign({},e),{delta:t}))}));this.emit(`gesture.fire`,n),this.onPressGesture(n),(e=this.pressState)==null||e.stop(),this.pressState=void 0}},y=null,b=e=>{var t,r,i;let a=!1,o=!1;switch(e.type){case`gesturestart`:a=!0;break;case`gestureend`:o=!0;break;default:break}let s={x:(t=e.clientX)==null?0:t,y:(r=e.clientY)==null?0:r},c=this.relativeClientPosition(s),l=this.createRaycasterFromCamera(c,this.camera),u=Object.assign(Object.assign(Object.assign(Object.assign({},s),{coords:c,raycaster:l}),n(e)),{delta:0});return $(`gesture.pinch`,{target:e.target,pointerType:`mouse`,srcEvent:e,pointers:[Object.assign({},u)],isFirst:a,isFinal:o,scale:(i=e.scale)==null?1:i,center:Object.assign({},u),velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),xC(this.camera.pose))})},x=e=>{if(e.preventDefault(),_S)return;let n=b(e);this.emit(`gesture.fire`,n),y={firstEvent:n};let r=y.firstEvent;r&&!t(r.center)||this.onPinchGesture(n)},S=e=>{if(e.preventDefault(),_S||!y)return;let n=y.firstEvent;if(n&&!t(n.center))return;let r=b(e);this.emit(`gesture.fire`,r),this.onPinchGesture(r)},C=e=>{if(e.preventDefault(),_S||!y)return;let n=y.firstEvent;if(y=null,n&&!t(n.center))return;let r=b(e);this.emit(`gesture.fire`,r),this.onPinchGesture(r)},w=t=>{if(t&&typeof t.preventDefault==`function`&&t.currentTarget===e&&t.preventDefault(),typeof getSelection==`function`){let e=getSelection();e&&e.focusNode&&(e.removeAllRanges&&e.removeAllRanges(),e.empty&&e.empty())}};return this.enableWheel&&e.addEventListener(`wheel`,f,{passive:!1}),e.addEventListener(`mousemove`,p,!1),e.addEventListener(`mouseout`,m,!1),e.addEventListener(`touchstart`,g,{passive:!0}),e.addEventListener(`touchend`,v,!1),e.addEventListener(`touchcancel`,v,!1),e.addEventListener(`mousedown`,_,!1),e.addEventListener(`mouseup`,v,!1),e.addEventListener(`gesturestart`,x,{passive:!1}),e.addEventListener(`gesturechange`,S,{passive:!1}),e.addEventListener(`gestureend`,C,{passive:!1}),e.addEventListener(`touchstart`,w,{passive:!1}),e.addEventListener(`contextmenu`,w,!1),Object.assign(()=>{r.destroy(),e.removeEventListener(`wheel`,f,!1),e.removeEventListener(`mousemove`,p,!1),e.removeEventListener(`mouseout`,m,!1),e.removeEventListener(`touchstart`,g,!1),e.removeEventListener(`touchend`,v,!1),e.removeEventListener(`touchcancel`,v,!1),e.removeEventListener(`mousedown`,_,!1),e.removeEventListener(`mouseup`,v,!1),e.removeEventListener(`gesturestart`,x,!1),e.removeEventListener(`gesturechange`,S,!1),e.removeEventListener(`gestureend`,C,!1),e.removeEventListener(`touchstart`,w,!1),e.removeEventListener(`contextmenu`,w,!1)},{element:e})}},WC=new l.CircleGeometry(.1,16),GC=(0,f.uv)(),KC=(0,f.vec2)(.5,.5).sub(GC).length(),qC=(0,f.float)(.01),JC=(0,f.float)(.49),YC=(0,f.float)(.29),XC=(0,f.float)(1).sub((0,f.smoothstep)(JC.sub(qC),JC,KC)),ZC=(0,f.smoothstep)(YC,YC.add(qC),KC),QC=(0,f.vec4)(.576,.635,1,.3),$C=(0,f.vec4)(1,1,1,(0,f.abs)(KC.sub(JC.add(YC).div(2))).div(JC.sub(YC)).mul(1.5).add(.1).clamp(0,1)),ew=(0,f.mix)(QC,$C,$C.w),tw=(0,f.vec4)(ew.xyz,ew.w.mul(XC).mul(ZC)),nw=new l.NodeMaterial;nw.fragmentNode=tw,nw.side=l.DoubleSide,nw.blending=l.CustomBlending,nw.blendSrc=l.SrcAlphaFactor,nw.blendDst=l.OneMinusSrcAlphaFactor,nw.blendSrcAlpha=l.OneFactor,nw.blendDstAlpha=l.OneMinusSrcAlphaFactor,nw.depthWrite=!1,nw.transparent=!0;var rw=class extends l.Object3D{constructor(){super(),this.ringMesh=new l.Mesh(WC,nw),this.ringMesh.position.z=.01,this.ringMesh.renderOrder=9999999999,this.add(this.ringMesh)}dispose(){this.remove(this.ringMesh)}},iw=new l.Box3,aw=new l.Vector3,ow={defaultLongitude:Math.PI/4,defaultLatitude:Math.PI/4,defaultFov:80,maxFov:120,minFov:20,maxLatitude:Math.PI/2,minLatitude:-Math.PI/2,intersectMeshCreator:()=>new rw},sw=class e extends UC{static distanceFromModel(e,t,n){let r=e.boundingBox,i=r.isEmpty()?10:Math.pow(Math.pow(r.max.x-r.min.x+1,2)+Math.pow(r.max.y-r.min.y+1,2)+Math.pow(r.max.z-r.min.z+1,2),1/2);i=isNaN(i)||!isFinite(i)?1:i;let a=i/2/Math.tan(Math.PI*t/360);return n<1&&(a/=n),isNaN(a)||!isFinite(a)?i:a}static parseArgs(t){var n,r,i,a,o,s,c,l;if(t instanceof e)return t;let u=super.parseArgs(t);return Object.assign(Object.assign({},u),{defaultLongitude:(n=t.defaultLongitude)==null?ow.defaultLongitude:n,defaultLatitude:(r=t.defaultLatitude)==null?ow.defaultLatitude:r,defaultFov:(i=t.defaultFov)==null?ow.defaultFov:i,maxFov:(a=t.maxFov)==null?ow.maxFov:a,minFov:(o=t.minFov)==null?ow.minFov:o,maxLatitude:(s=t.maxLatitude)==null?ow.maxLatitude:s,minLatitude:(c=t.minLatitude)==null?ow.minLatitude:c,intersectMeshCreator:(l=t.intersectMeshCreator)==null?ow.intersectMeshCreator:l})}static initAnimationEndState(t){var n,r,i,a,o,s,c;let u=this.parseArgs(t),{state:d,currentState:f}=t.initial,p=typeof d.panoIndex==`number`?{workCode:(i=(n=d.workCode)==null?(r=u.works[0])==null?void 0:r.workCode:n)==null?``:i,panoIndex:d.panoIndex}:{workCode:f.workCode,panoIndex:f.panoIndex},m=(a=d.fov)==null?u.defaultFov:a,h=(o=d.longitude)==null?SC(f.mode)?f.longitude:u.defaultLongitude:o,g=H(typeof u.minLatitude==`function`?u.minLatitude(m):u.minLatitude,-Math.PI/2,Math.PI/2),_=H(typeof u.maxLatitude==`function`?u.maxLatitude(m):u.maxLatitude,-Math.PI/2,Math.PI/2),v=H((s=d.latitude)==null?f.mode===`Floorplan`?f.latitude:u.defaultLatitude:s,g,_),y=d.offset?d.offset.clone():t.modelScene.boundingBox.getCenter(new l.Vector3),b=(c=d.distance)==null?e.distanceFromModel(u.modelScene,u.defaultFov,u.camera.aspect):c;return Object.assign(Object.assign({},p),{mode:`Floorplan`,longitude:h,latitude:v,fov:m,offset:y,distance:b})}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`Floorplan`,this.defaultLongitude=n.defaultLongitude,this.defaultLatitude=n.defaultLatitude,this.defaultFov=n.defaultFov,this.maxFov=n.maxFov,this.minFov=n.minFov,this.maxLatitude=n.maxLatitude,this.minLatitude=n.minLatitude,this.locationMotion=new J({x:this.camera.pose.offset.x,y:this.camera.pose.offset.y,z:this.camera.pose.offset.z,distance:this.camera.pose.distance}),this.modelAlphaMotion=new J({modelAlpha:this.modelScene.parameter.resolveValue().modelAlpha}),this.perspToOrthoMotion=new J({perspToOrtho:this.camera.perspToOrtho.x}),this.pendingTextureId=null,this.textureLoader=new gu,this.intersectMeshCreator=n.intersectMeshCreator,this.intersectMesh=this.intersectMeshCreator(),this.intersectMesh.name=`intersect`,this.intersectMesh.visible=!1,this.helper.add(this.intersectMesh)}updateConfiguration(e){if(super.updateConfiguration(e)===!1)return!1;if(e.defaultLongitude!==void 0&&this.defaultLongitude!==e.defaultLongitude&&(this.defaultLongitude=e.defaultLongitude),e.defaultLatitude!==void 0&&this.defaultLatitude!==e.defaultLatitude&&(this.defaultLatitude=e.defaultLatitude),e.defaultFov!==void 0&&this.defaultFov!==e.defaultFov&&(this.defaultFov=e.defaultFov),e.maxFov!==void 0&&this.maxFov!==e.maxFov&&(this.maxFov=e.maxFov),e.minFov!==void 0&&this.minFov!==e.minFov&&(this.minFov=e.minFov),e.maxLatitude!==void 0&&this.maxLatitude!==e.maxLatitude&&(this.maxLatitude=e.maxLatitude),e.minLatitude!==void 0&&this.minLatitude!==e.minLatitude&&(this.minLatitude=e.minLatitude),e.intersectMeshCreator!==void 0&&this.intersectMeshCreator!==e.intersectMeshCreator){this.intersectMeshCreator=e.intersectMeshCreator;let t=this.intersectMesh;this.intersectMesh=this.intersectMeshCreator(),this.intersectMesh.name=t.name,this.intersectMesh.visible=t.visible;let n=this.intersectMesh.parent;n&&n.add(this.intersectMesh),t.dispose()}return!0}destroy(){super.destroy(),this.pendingTextureId=null,this.locationMotion.dispose(),this.panState=void 0,this.intersectMesh.dispose(),this.helper.remove(this.intersectMesh)}isReady(){return this.locationMotion.ended===!1?!1:super.isReady()}updateWork(e,t,n,r){var i;return this.works=e,this.updateCamera(t,(i=n.duration)==null?0:i,r),!0}updateModel(t){super.updateModel(t);let n=t.boundingBox.getCenter(new l.Vector3),r=e.distanceFromModel(t,this.defaultFov,this.camera.aspect);this.updateCamera({offset:n,distance:r},0,!0)}updateCamera(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r={},i={};return e.distance!==void 0&&(r.distance=e.distance),e.offset!==void 0&&(r.x=e.offset.x,r.y=e.offset.y,r.z=e.offset.z),e.longitude!==void 0&&(i.longitude=e.longitude),e.latitude!==void 0&&(i.latitude=e.latitude),e.fov!==void 0&&(i.fov=e.fov),this.locationMotion.set(r,t).catch(K),this.cameraMotion.set(i,t).catch(K)})}updateCameraWithKeyframes(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r=[],i=[];for(let t of e)r.push({key:t.key,progress:t.progress,value:{distance:t.value.distance,x:t.value.offset.x,y:t.value.offset.x,z:t.value.offset.x}}),i.push({key:t.key,progress:t.progress,value:{longitude:t.value.longitude,latitude:t.value.latitude,fov:t.value.fov}});return this.locationMotion.setKeyframes(r,t).catch(K),this.cameraMotion.setKeyframes(e,t)})}updateTime(e,t,...n){if(this.destroyed)return;let r={},i={};if(this.modelAlphaMotion.ended||(this.modelAlphaMotion.update(e),r.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.modelScene.parameter.modelAlpha===0&&this.modelScene.parameter.progress!==1){let{pano0:e,pano1:t}=this.modelScene.parameter;e&&e.map!==(t==null?void 0:t.map)&&e.map.dispose(),r.progress=1,r.pano0=r.pano1=t}if(this.perspToOrthoMotion.ended||(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(H(this.perspToOrthoMotion.value.perspToOrtho,0,1))),this.locationMotion.ended||(this.locationMotion.update(e),i.distance=this.locationMotion.value.distance,i.offset=new l.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z)),this.cameraMotion.ended||(this.cameraMotion.update(e),i.longitude=this.cameraMotion.value.longitude,i.latitude=this.cameraMotion.value.latitude,i.fov=this.cameraMotion.value.fov),wC(r)||this.modelScene.parameter.set(r),wC(i)||this.setCamera(i),this.intersectMesh&&this.intersectMesh.parent){let e=H(this.camera.position.distanceTo(this.intersectMesh.position)*(2*Math.tan(.5*this.camera.fov/180*Math.PI))/5,.5);this.intersectMesh.scale.setScalar(e)}else this.intersectMesh.scale.setScalar(1)}getTargetState(){let e=this.cameraMotion.getKeyFrameSegment(G())[1],t=this.locationMotion.getKeyFrameSegment(G())[1];return Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:e.value.longitude,latitude:e.value.latitude,fov:e.value.fov,offset:new l.Vector3(t.value.x,t.value.y,t.value.z),distance:t.value.distance})}initAnimation(){return this.destroyed?Promise.resolve():new Promise(t=>{let{state:n,currentState:r,duration:i,userAction:a}=this.initial;this.userAction=a;let o=e.initAnimationEndState(this),s=hl(o,[`longitude`,`latitude`,`fov`]),c={x:o.offset.x,y:o.offset.y,z:o.offset.z,distance:o.distance};this.emit(`initAnimation.start`,$(`initAnimation.start`,{state:o,userAction:this.userAction})),this.modelAlphaMotion.set({modelAlpha:1},i/3).catch(K),this.perspToOrthoMotion.set({perspToOrtho:0},i).catch(K),this.cameraMotion.set(s,i).catch(K),this.locationMotion.set(c,i).then(()=>{this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:o,userAction:this.userAction}))},e=>{let t=Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),xC(this.camera.pose));this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:t,userAction:this.userAction}))}).then(()=>{t()})})}updateRenderSize(e){this.needsRender=!0}getForwardObserverOrNot(e){let[t]=this.modelScene.intersectRaycaster(e);if(!t)return null;let n=[];for(let t of this.works){let r=this.modelScene.models.find(e=>e.work===t);if(!(!r||r.visible===!1)&&!(t.observers.length<=0)&&(iw.copy(t.observerBox).expandByScalar(10).applyMatrix4(t.transform),iw.containsPoint(e.ray.origin)||e.ray.intersectsBox(iw)))for(let e of t.observers)n.push(e)}let[r,i]=nm(n,e=>aw.copy(e.standingPosition).applyMatrix4(e.work.transform).distanceTo(t.point),!0);return r&&i<Math.max(r.standingPosition.distanceTo(this.camera.position)/5,10)?r:null}coordinatesForOffset(e){let t=this.renderer.getSize(new l.Vector2);return{longitude:-2*e.x/(t.x*this.viewport.width),latitude:2*e.y/(t.y*this.viewport.height)}}requestMomentumMovement(e,t,n,r){if(this.inMomentumMovement===null)return;r=Math.max(r,1);let i=Object.assign({},n),a={longitude:0,latitude:0};for(let e=0;e<r;e++)i.longitude*=.996,i.latitude*=.996*.998,a.longitude+=i.longitude,a.latitude+=i.latitude;let o=ga(this.cameraMotion.value.longitude+a.longitude),s=this.cameraMotion.value.fov,c=H(typeof this.minLatitude==`function`?this.minLatitude(s):this.minLatitude,-Math.PI/2,Math.PI/2),l=H(typeof this.maxLatitude==`function`?this.maxLatitude(s):this.maxLatitude,-Math.PI/2,Math.PI/2),u=H(this.cameraMotion.value.latitude+a.latitude,c,l),d=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:o,latitude:u,fov:this.cameraMotion.value.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance}),f=!(i.longitude>1e-4||i.longitude<-1e-4||i.latitude>1e-4||i.latitude<-1e-4),p=$(`gesture.momentum`,Object.assign(Object.assign({},e),{isFirst:t,isFinal:f,state:d}));if(this.emit(`gesture.fire`,p),this.inMomentumMovement.event=p,this.emit(`gesture.momentum`,p),e.defaultPrevented){this.inMomentumMovement=null;return}this.inMomentumMovement&&(this.cameraMotion.set({longitude:o,latitude:u},0).catch(K),f?this.inMomentumMovement=null:iu.shared.add((t,n)=>{this.requestMomentumMovement(e,!1,i,n)},!0))}onPanGesture(e){this.userAction=e.userAction,this.stopMomentumMovement(),this.hideIntersectMesh();let t=this.panState,n=e.pointers.length;if(e.isFinal?this.panState=void 0:this.panState={pointerLength:n,x:e.center.x,y:e.center.y},t===void 0||t.pointerLength!==n)return;let r={x:e.center.x-t.x,y:e.center.y-t.y},i=this.relativeClientPosition(e.center),a=1,o=this.camera.pose.latitude;Math.abs(o)>Math.PI/6&&(a=o<0?i.y<0?-1:1:i.y>0?-1:1),r.x*=a;let s=this.coordinatesForOffset(r),c=ga(this.cameraMotion.value.longitude+s.longitude),l=this.camera.pose.fov,u=H(typeof this.minLatitude==`function`?this.minLatitude(l):this.minLatitude,-Math.PI/2,Math.PI/2),d=H(typeof this.maxLatitude==`function`?this.maxLatitude(l):this.maxLatitude,-Math.PI/2,Math.PI/2),f=H(this.cameraMotion.value.latitude+s.latitude,u,d);this.camera.aspect<1&&Math.abs(e.overallVelocityX)>.2&&Math.atan2(Math.abs(e.overallVelocityY),Math.abs(e.overallVelocityX))<Math.PI/6.923&&(f=this.cameraMotion.value.latitude);let p=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:c,latitude:f,fov:l,offset:this.camera.pose.offset,distance:this.camera.pose.distance});if(e.state=p,this.emit(`gesture.pan`,e),!e.defaultPrevented&&(this.cameraMotion.set({longitude:p.longitude,latitude:p.latitude},0).catch(K),e.isFinal)){let t=e.velocityX*a,n=e.velocityY;this.inMomentumMovement={uuid:Ft()},this.requestMomentumMovement(e,!0,this.coordinatesForOffset({x:t,y:n}),0)}}onPinchGesture(e){var t;if(!this.initAnimationIsReady)return;this.userAction=e.userAction,this.stopMomentumMovement();let n=(t=this.pinchState)==null?void 0:t.fov;if(e.isFirst){this.pinchState={x:e.center.x,y:e.center.y,fov:this.cameraMotion.value.fov};return}if(e.isFinal&&(this.panState=void 0,this.pinchState=void 0),n===void 0)return;let r=H(n/e.scale,this.minFov,this.maxFov),i=H(typeof this.minLatitude==`function`?this.minLatitude(r):this.minLatitude,-Math.PI/2,Math.PI/2),a=H(typeof this.maxLatitude==`function`?this.maxLatitude(r):this.maxLatitude,-Math.PI/2,Math.PI/2),o=H(this.cameraMotion.value.latitude,i,a);e.state.fov=r,e.state.latitude=o,this.emit(`gesture.pinch`,e),!e.defaultPrevented&&(this.cameraMotion.set({fov:r,latitude:o},0).catch(K),this.onPanGesture(e))}onMouseMove(e){var t,n;if(!this.intersectMesh.parent||this.panState)return;if(this.emit(`gesture.mousemove`,e),e.defaultPrevented){this.hideIntersectMesh();return}let r=e.center.raycaster;if(e.isFinal&&this.intersectMesh.parent&&this.intersectMesh.visible===!0){this.hideIntersectMesh();return}let[i]=this.modelScene.intersectRaycaster(r),a=$(`intersect.update`,{raycaster:r,intersection:i==null?null:i,object:this.intersectMesh});if(this.emit(`intersect.update`,a),a.defaultPrevented){this.hideIntersectMesh();return}if(i){let e=(n=(t=i.face)==null?void 0:t.normal)==null?new l.Vector3().copy(r.ray.direction).multiplyScalar(-1):n,a=e.clone(),o=i.point.clone();this.intersectMesh.position.copy(o);let s=o.clone().add(a);if(this.intersectMesh.lookAt(s),Math.abs(e.y)>.99){let e=this.camera.position.clone().sub(o);this.intersectMesh.rotation.z=-Math.atan2(e.z,e.x)}this.intersectMesh.visible=!0,this.needsRender=!0}else this.hideIntersectMesh()}onMouseWheel(e){if(!this.initAnimationIsReady)return;this.userAction=e.userAction,this.stopMomentumMovement();let{minFov:t,maxFov:n}=this,r=H(this.camera.fov-e.center.delta,t,n),i=H(typeof this.minLatitude==`function`?this.minLatitude(r):this.minLatitude,-Math.PI/2,Math.PI/2),a=H(typeof this.maxLatitude==`function`?this.maxLatitude(r):this.maxLatitude,-Math.PI/2,Math.PI/2),o=H(this.cameraMotion.value.latitude,i,a);e.state.fov=r,e.state.latitude=o,this.emit(`gesture.mousewheel`,e),!e.defaultPrevented&&this.cameraMotion.set({fov:r,latitude:o},0).catch(K)}onTapGesture(e){var t;this.userAction=e.userAction,this.stopMomentumMovement();let n=e.center.raycaster,r=this.getForwardObserverOrNot(n);if(!r)this.emit(`gesture.tap`,e);else{let n={longitude:this.camera.pose.longitude,latitude:0},i=Object.assign(Object.assign({},e.state),{mode:`Panorama`,workCode:r.work.workCode,panoIndex:r.panoIndex,longitude:n.longitude,latitude:n.latitude,offset:r?r.position.clone():new l.Vector3,distance:0});if(e.state=i,this.emit(`gesture.tap`,e),!e.defaultPrevented&&(this.emit(`pano.select`,$(`pano.select`,{prevPano:this.currentPano,state:i,userAction:e.userAction,options:n,progress:0,error:null})),r&&r.active)){let e=this.pendingTextureId=Ft(),a=gb({panoIndex:r.panoIndex,workCode:r.work.workCode}),o=this.imageOptions.transform,s=Object.assign({key:`pano.${a}`},hl(this.imageOptions,[`format`,`size`,`quality`,`sharpen`,`forceUseExifOrientation`,`mappings`])),c={right:r.images.work.getURL(r.images.right),left:r.images.work.getURL(r.images.left),up:r.images.work.getURL(r.images.up),down:r.images.work.getURL(r.images.down),front:r.images.work.getURL(r.images.front),back:r.images.work.getURL(r.images.back)},u,d,f=this.enableHDR?r.images.gainmap:void 0;f&&(u={right:r.images.work.getURL(f.right),left:r.images.work.getURL(f.left),up:r.images.work.getURL(f.up),down:r.images.work.getURL(f.down),front:r.images.work.getURL(f.front),back:r.images.work.getURL(f.back)},d=r.images.work.getURL(f.cfg));let p=`pano:`+mb([c,u,s]),m=this.modelScene.parameter,h;if(m.pano0&&m.pano0.map.name===p?h=m.pano0:m.pano1&&m.pano1.map.name===p&&(h=m.pano1),h)m.pano0&&m.pano0.map!==h.map&&m.pano0.map.dispose(),m.pano1&&m.pano1.map!==h.map&&m.pano1.map!==((t=m.pano0)==null?void 0:t.map)&&m.pano1.map.dispose(),m.set({pano0:h,pano1:h}),this.emit(`pano.request`,$(`pano.request`,{userAction:!0,prevPano:this.currentPano,progress:0,state:i,options:n,error:null}));else{let t=this.textureLoader.loadCubeTexture(c,{imageURL:{transform:o,options:s},format:l.RGBAFormat,viaAjax:!0,fetcher:vy(this.fiveId,r.work)},void 0,void 0,void 0,this.renderer),f=d&&u?Promise.all([vy(this.fiveId,r.work).ajax(d,{responseType:`text`}).then(e=>Wt(JSON.parse(e.body))),this.textureLoader.loadCubeTexture(u,{imageURL:{transform:o,options:s},format:l.RGBAFormat,colorSpace:l.NoColorSpace,viaAjax:!0,fetcher:vy(this.fiveId,r.work)},void 0,void 0,void 0,this.renderer)]).then(([e,t])=>({config:e,map:t.body})):Promise.resolve(void 0);Promise.all([t,f]).then(t=>Wr(this,[t],void 0,function*([t,o]){var s,c;let{body:u}=t;if(this.destroyed||this.pendingTextureId!==e){u.dispose();return}this.pendingTextureId=null,u.name=p;let d=Array.isArray(u.image)?u.image[0]:u.image,f=(s=d==null?void 0:d.width)==null?2048:s,h=yield BC(this.renderer,u,!0,Dx),g=new jx().formPixels(h.data),_={panoId:a,map:u,mapSize:f,mapHistogram:new l.Vector4().fromArray(g.toArray()),matrix:r.matrix.clone().premultiply(r.work.transform),zoom:1,gainmap:o?{map:o.map,cfg:o.config}:void 0};m.pano0&&m.pano0.map.dispose(),m.pano1&&m.pano1.map!==((c=m.pano0)==null?void 0:c.map)&&m.pano1.map.dispose(),m.set({pano0:_,pano1:_}),this.emit(`pano.request`,$(`pano.request`,{userAction:!0,prevPano:this.currentPano,progress:0,state:i,options:n,error:null}))})).catch(t=>{this.destroyed||this.pendingTextureId!==e||(this.pendingTextureId=null)})}}}}onDblTapGesture(e){this.userAction=e.userAction,this.stopMomentumMovement();let t=this.cameraMotion.value.fov,n=this.minFov-t<t-this.defaultFov?this.minFov:this.defaultFov;e.state.fov=n,this.emit(`gesture.dbltap`,e),!e.defaultPrevented&&(this.cameraMotion.set({fov:n},360).catch(K),this.hideIntersectMesh())}hideIntersectMesh(){this.intersectMesh.visible=!1,this.needsRender=!0}},cw=Object.assign(Object.assign({},gl(ow,[`defaultLongitude`,`defaultLatitude`,`maxLatitude`,`minLatitude`])),{defaultLongitude:0,defaultLatitude:Math.PI/2}),lw=class e extends sw{static parseArgs(t){var n,r;if(t instanceof e)return t;let i=Object.assign(Object.assign({},t),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2,defaultLongitude:(n=t.defaultLongitude)==null?cw.defaultLongitude:n,defaultLatitude:(r=t.defaultLatitude)==null?cw.defaultLatitude:r});return super.parseArgs(i)}static initAnimationEndState(e){var t,n;let r=this.parseArgs(e),i=super.initAnimationEndState(Object.assign(Object.assign({},r),{initial:Object.assign(Object.assign({},r.initial),{state:Object.assign(Object.assign({},r.initial.state),{longitude:(t=r.initial.state.longitude)==null?r.defaultLongitude:t,latitude:(n=r.initial.state.latitude)==null?r.defaultLatitude:n})})}));return Object.assign(Object.assign({},i),{mode:`Topview`})}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`Topview`}updateConfiguration(e){return super.updateConfiguration(Object.assign({},e))}updateModel(e){this.needsRender=!0;let t=this.modelScene.boundingBox.getCenter(new l.Vector3);this.locationMotion.set({x:t.x,y:t.y,z:t.z,distance:sw.distanceFromModel(this.modelScene,this.defaultFov,this.camera.aspect)},0).catch(K),this.hideIntersectMesh()}updateCamera(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r={},i={};return e.distance!==void 0&&(r.distance=e.distance),e.offset!==void 0&&(r.x=e.offset.x,r.y=e.offset.y,r.z=e.offset.z),e.longitude!==void 0&&(i.longitude=e.longitude),e.latitude!==void 0&&(i.latitude=e.latitude),e.fov!==void 0&&(i.fov=e.fov),this.locationMotion.set(r,t).catch(K),this.cameraMotion.set(i,t).catch(K)})}updateCameraWithKeyframes(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r=[],i=[];for(let t of e)r.push({key:t.key,progress:t.progress,value:{distance:t.value.distance,x:t.value.offset.x,y:t.value.offset.y,z:t.value.offset.z}}),i.push({key:t.key,progress:t.progress,value:{longitude:t.value.longitude,latitude:t.value.latitude,fov:t.value.fov}});return this.locationMotion.setKeyframes(r,t).catch(K),this.cameraMotion.setKeyframes(e,t)})}initAnimation(){return this.destroyed?Promise.resolve():new Promise(t=>{let{state:n,currentState:r,duration:i,userAction:a}=this.initial;this.userAction=a;let o=e.initAnimationEndState(this),s={longitude:o.longitude,latitude:o.latitude,fov:o.fov},c={x:o.offset.x,y:o.offset.y,z:o.offset.z,distance:o.distance};this.emit(`initAnimation.start`,$(`initAnimation.start`,{state:o,userAction:this.userAction})),this.modelAlphaMotion.set({modelAlpha:1},i/3).catch(K),this.perspToOrthoMotion.set({perspToOrtho:1},i).catch(K),this.cameraMotion.set(s,i).catch(K),this.locationMotion.set(c,i).then(()=>{this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:o,userAction:this.userAction}))},e=>{let t=Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),xC(this.camera.pose));this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:t,userAction:this.userAction}))}).then(()=>{t()})})}requestMomentumMovement(){this.inMomentumMovement=null}onPanGesture(e){this.userAction=e.userAction,this.stopMomentumMovement();let t=this.panState,n=e.pointers.length;if(e.isFinal?this.panState=void 0:this.panState={pointerLength:n,x:e.center.x,y:e.center.y},t===void 0||t.pointerLength!==n)return;let r={x:e.center.x-t.x,y:e.center.y-t.y},i=new l.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),a=this.locationMotion.value.distance;a*=Math.tan(this.cameraMotion.value.fov/2*Math.PI/180);let o=this.renderer.getSize(new l.Vector2),s=2*r.x*a/o.y,c=2*r.y*a/o.y,u=new l.Vector3;u.setFromMatrixColumn(this.camera.matrix,0),u.multiplyScalar(-s),i.add(u),u.setFromMatrixColumn(this.camera.matrix,1),u.multiplyScalar(c),i.add(u);let d=this.modelScene.boundingBox.getCenter(new l.Vector3),f=this.modelScene.boundingBox.getSize(new l.Vector3),p=Math.max(f.x,f.y,f.z)/2;i.clamp(d.clone().sub(new l.Vector3().setScalar(p)),d.clone().add(new l.Vector3().setScalar(p))),e.state=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:0,latitude:Math.PI/2,fov:this.cameraMotion.value.fov,offset:i,distance:this.locationMotion.value.distance}),this.emit(`gesture.pan`,e),!e.defaultPrevented&&this.locationMotion.set({x:i.x,y:i.y,z:i.z},0).catch(K)}onPinchGesture(e){var t;if(!this.initAnimationIsReady)return;this.userAction=e.userAction,this.stopMomentumMovement();let n=(t=this.pinchState)==null?void 0:t.fov;if(e.isFirst){this.pinchState={x:e.center.x,y:e.center.y,fov:this.cameraMotion.value.fov};return}if(e.isFinal&&(this.pinchState=void 0),n===void 0)return;let r=H(n/e.scale,this.minFov,this.maxFov);e.state.fov=r,this.emit(`gesture.pinch`,e),!e.defaultPrevented&&(this.cameraMotion.set({fov:r},0).catch(K),e.type=`gesture.pan`,this.onPanGesture(e))}onMouseWheel(e){if(!this.initAnimationIsReady)return;this.userAction=e.userAction,this.stopMomentumMovement();let t=H(this.cameraMotion.value.fov-e.center.delta,this.minFov,this.maxFov);e.state.fov=t,this.emit(`gesture.mousewheel`,e),!e.defaultPrevented&&this.cameraMotion.set({fov:t},0).catch(K)}},uw={defaultLatitude:0,defaultFov:90,maxFov:120,minFov:20,maxLatitude:e=>Math.PI/2-e/2/180*Math.PI,minLatitude:e=>-Math.PI/2+e/2/180*Math.PI,moveSpeed:3.6,intersectMeshCreator:()=>new rw,aerialObserverMinHeight:5},dw=class e extends UC{static parseArgs(t){var n,r,i,a,o,s,c,l,u;if(t instanceof e)return t;let d=super.parseArgs(t);return Object.assign(Object.assign({},d),{defaultLatitude:(n=t.defaultLatitude)==null?uw.defaultLatitude:n,defaultFov:(r=t.defaultFov)==null?uw.defaultFov:r,maxFov:(i=t.maxFov)==null?uw.maxFov:i,minFov:(a=t.minFov)==null?uw.minFov:a,maxLatitude:(o=t.maxLatitude)==null?uw.maxLatitude:o,minLatitude:(s=t.minLatitude)==null?uw.minLatitude:s,moveSpeed:(c=t.moveSpeed)==null?uw.moveSpeed:c,intersectMeshCreator:(l=t.intersectMeshCreator)==null?uw.intersectMeshCreator:l,aerialObserverMinHeight:(u=t.aerialObserverMinHeight)==null?uw.aerialObserverMinHeight:u})}static initAnimationEndState(e){var t,n,r,i,a,o;let s=this.parseArgs(e),c=s.works,{state:u,currentState:d}=e.initial,f=typeof u.panoIndex==`number`?{workCode:(r=(t=u.workCode)==null?(n=s.works[0])==null?void 0:n.workCode:t)==null?``:r,panoIndex:u.panoIndex}:{workCode:d.workCode,panoIndex:d.panoIndex},p=c.getObserver(f),m=H((i=u.fov)==null?CC(d.mode)?d.fov:s.defaultFov:i,s.minFov,s.maxFov),h=(a=u.longitude)==null?d.longitude:a,g=H(typeof s.minLatitude==`function`?s.minLatitude(m):s.minLatitude,-Math.PI/2,Math.PI/2),_=H(typeof s.maxLatitude==`function`?s.maxLatitude(m):s.maxLatitude,-Math.PI/2,Math.PI/2),v=H((o=u.latitude)==null?CC(d.mode)?d.latitude:s.defaultLatitude:o,g,_),y=new l.Vector3;return p&&y.copy(p.position).applyMatrix4(p.work.transform),{workCode:f.workCode,panoIndex:f.panoIndex,mode:`PanoramaLike`,longitude:h,latitude:v,fov:m,offset:y,distance:0}}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`PanoramaLike`,this.defaultLatitude=n.defaultLatitude,this.defaultFov=n.defaultFov,this.maxFov=n.maxFov,this.minFov=n.minFov,this.maxLatitude=n.maxLatitude,this.minLatitude=n.minLatitude,this.moveSpeed=n.moveSpeed,this.intersectMeshCreator=n.intersectMeshCreator,this.aerialObserverMinHeight=n.aerialObserverMinHeight,this.intersectMesh=this.intersectMeshCreator(),this.intersectMesh.name=`intersect`,this.intersectMesh.visible=!1,this.helper.add(this.intersectMesh)}updateConfiguration(e){if(super.updateConfiguration(e)===!1)return!1;if(e.defaultLatitude!==void 0&&this.defaultLatitude!==e.defaultLatitude&&(this.defaultLatitude=e.defaultLatitude),e.maxLatitude!==void 0&&this.maxLatitude!==e.maxLatitude&&(this.maxLatitude=e.maxLatitude),e.minLatitude!==void 0&&this.minLatitude!==e.minLatitude&&(this.minLatitude=e.minLatitude),e.defaultFov!==void 0&&this.defaultFov!==e.defaultFov&&(this.defaultFov=e.defaultFov),e.maxFov!==void 0&&this.maxFov!==e.maxFov&&(this.maxFov=e.maxFov),e.minFov!==void 0&&this.minFov!==e.minFov&&(this.minFov=e.minFov),e.moveSpeed!==void 0&&this.moveSpeed!==e.moveSpeed&&(this.moveSpeed=e.moveSpeed),e.intersectMeshCreator!==void 0&&this.intersectMeshCreator!==e.intersectMeshCreator){this.intersectMeshCreator=e.intersectMeshCreator;let t=this.intersectMesh;this.intersectMesh=this.intersectMeshCreator(),this.intersectMesh.name=t.name,this.intersectMesh.visible=t.visible;let n=this.intersectMesh.parent;n&&n.add(this.intersectMesh),t.dispose()}return e.aerialObserverMinHeight!==void 0&&this.aerialObserverMinHeight!==e.aerialObserverMinHeight&&(this.aerialObserverMinHeight=e.aerialObserverMinHeight),!0}destroy(){super.destroy(),this.intersectMesh&&(this.helper.remove(this.intersectMesh),this.intersectMesh.dispose()),this.panState=void 0}isReady(){return this.panState||this.pinchState?!1:super.isReady()}calculateMovingDuration(e,t){switch(typeof e){case`function`:return e(t,this.moveSpeed);case`number`:return e;case`string`:return Number(e);default:return H(t,2,5)/this.moveSpeed*1e3}}hideIntersectMesh(){this.intersectMesh.visible=!1,this.needsRender=!0}coordinatesForOffset(e){let t=this.cameraMotion.value.fov,n=this.camera.aspect,r=this.renderer.getSize(new l.Vector2);return{longitude:2*e.x/(r.x*this.viewport.width)*t/95*n,latitude:-2*e.y/(r.y*this.viewport.height)*t/95}}cameraBounce(){let{longitude:e,latitude:t,fov:n}=this.cameraMotion.value,r=[{progress:0,value:{longitude:e,latitude:t,fov:n}},{progress:.5,value:{longitude:e,latitude:t,fov:n*.98}},{progress:1,value:{longitude:e,latitude:t,fov:n}}];this.cameraMotion.setKeyframes(r,500).catch(K)}requestMomentumMovement(e,t,n,r){if(this.inMomentumMovement===null)return;r=Math.max(r,1);let i=Object.assign({},n),a={longitude:0,latitude:0};for(let e=0;e<r;e++)i.longitude*=.996,i.latitude*=.996*.99,a.longitude+=i.longitude,a.latitude+=i.latitude;let o=this.cameraMotion.value.fov,s=ga(this.cameraMotion.value.longitude+a.longitude),c=H(typeof this.minLatitude==`function`?this.minLatitude(o):this.minLatitude,-Math.PI/2,Math.PI/2),l=H(typeof this.maxLatitude==`function`?this.maxLatitude(o):this.maxLatitude,-Math.PI/2,Math.PI/2),u=H(this.cameraMotion.value.latitude+a.latitude,c,l),d=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:s,latitude:u,fov:o,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance}),f=!(i.longitude>1e-4||i.longitude<-1e-4||i.latitude>1e-4||i.latitude<-1e-4),p=$(`gesture.momentum`,Object.assign(Object.assign({},e),{isFirst:t,isFinal:f,state:d}));if(this.emit(`gesture.fire`,p),this.inMomentumMovement.event=p,this.emit(`gesture.momentum`,p),e.defaultPrevented){this.inMomentumMovement=null;return}this.inMomentumMovement&&(this.cameraMotion.set({longitude:s,latitude:u},0).catch(K),f?this.inMomentumMovement=null:iu.shared.add((t,n)=>{this.requestMomentumMovement(e,!1,i,n)},!0))}onPanGesture(e){this.userAction=e.userAction,this.stopMomentumMovement(),this.hideIntersectMesh();let t=this.panState,n=e.pointers.length;if(e.isFinal?this.panState=void 0:this.panState={pointerLength:n,x:e.center.x,y:e.center.y},t===void 0||t.pointerLength!==n)return;let r={x:e.center.x-t.x,y:e.center.y-t.y},i=this.coordinatesForOffset(r),a=ga(this.cameraMotion.value.longitude+i.longitude),o=this.cameraMotion.value.fov,s=H(typeof this.minLatitude==`function`?this.minLatitude(o):this.minLatitude,-Math.PI/2,Math.PI/2),c=H(typeof this.maxLatitude==`function`?this.maxLatitude(o):this.maxLatitude,-Math.PI/2,Math.PI/2),l=H(this.cameraMotion.value.latitude+i.latitude,s,c);this.camera.aspect<1&&Math.abs(e.overallVelocityX)>.2&&Math.atan2(Math.abs(e.overallVelocityY),Math.abs(e.overallVelocityX))<Math.PI/6.923&&(l=this.cameraMotion.value.latitude);let u=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:a,latitude:l,fov:o,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance});if(e.state=u,this.emit(`gesture.pan`,e),e.defaultPrevented)return;let d={longitude:u.longitude,latitude:u.latitude,fov:u.fov};if(this.cameraMotion.set(d,0).catch(K),e.isFinal){let t=e.velocityX,n=e.velocityY*.6;Math.abs(n)>.5&&Math.abs(t)<.5&&(t=0),this.inMomentumMovement={uuid:Ft()},this.requestMomentumMovement(e,!0,this.coordinatesForOffset({x:t,y:n}),0)}}onPinchGesture(e){var t;this.userAction=e.userAction,this.stopMomentumMovement();let n=(t=this.pinchState)==null?void 0:t.fov,r=e.scale;if(e.isFirst){this.pinchState={x:e.center.x,y:e.center.y,fov:this.cameraMotion.value.fov};return}if(e.isFinal&&(this.pinchState=void 0),n===void 0)return;let i=H(n/r,this.minFov,this.maxFov),a=H(typeof this.minLatitude==`function`?this.minLatitude(i):this.minLatitude,-Math.PI/2,Math.PI/2),o=H(typeof this.maxLatitude==`function`?this.maxLatitude(i):this.maxLatitude,-Math.PI/2,Math.PI/2),s=H(this.cameraMotion.value.latitude,a,o);e.state.fov=i,e.state.latitude=s,this.emit(`gesture.pinch`,e),!e.defaultPrevented&&(this.cameraMotion.set({fov:i,latitude:s},0).catch(K),e.type=`gesture.pan`,this.onPanGesture(e))}onMouseWheel(e){this.userAction=e.userAction,this.stopMomentumMovement();let t=H(this.cameraMotion.value.fov-e.center.delta,this.minFov,this.maxFov),n=H(typeof this.minLatitude==`function`?this.minLatitude(t):this.minLatitude,-Math.PI/2,Math.PI/2),r=H(typeof this.maxLatitude==`function`?this.maxLatitude(t):this.maxLatitude,-Math.PI/2,Math.PI/2),i=H(this.cameraMotion.value.latitude,n,r);e.state.fov=t,e.state.latitude=i,this.emit(`gesture.mousewheel`,e),!e.defaultPrevented&&(this.cameraMotion.set({fov:t,latitude:i},0).catch(K),this.onMouseMove(e))}onMouseMove(e){var t,n;if(!this.intersectMesh.parent||this.panState||(this.emit(`gesture.mousemove`,e),e.defaultPrevented))return;let r=e.center.raycaster;if(e.isFinal&&this.intersectMesh.parent){this.hideIntersectMesh();return}r.floorIndex=-1;let[i]=this.modelScene.intersectRaycaster(r),a=$(`intersect.update`,{raycaster:r,intersection:i==null?null:i,object:this.intersectMesh});if(this.emit(`intersect.update`,a),a.defaultPrevented){this.hideIntersectMesh();return}if(i){let e=(n=(t=i.face)==null?void 0:t.normal)==null?new l.Vector3().copy(r.ray.direction).multiplyScalar(-1):n,a=e.clone(),o=i.point.clone();this.intersectMesh.position.copy(o);let s=o.clone().add(a);if(this.intersectMesh.lookAt(s),Math.abs(e.y)>.99){let e=this.camera.position.clone().sub(o);this.intersectMesh.rotation.z=-Math.atan2(e.z,e.x)}this.intersectMesh.visible=!0,this.needsRender=!0}else this.hideIntersectMesh()}onDblTapGesture(e){this.userAction=e.userAction,this.stopMomentumMovement();let t=this.cameraMotion.value.fov,n=2,r=this.works.getObserver(this.currentPano);if(r){let e=r.images.tiles;e&&e.length&&(n=Math.max(...e.map(e=>e.level)))}let i=Math.max(40-n*5,this.minFov,5),a=i-t<t-this.defaultFov?i:this.defaultFov;e.state.fov=a,this.emit(`gesture.dbltap`,e),!e.defaultPrevented&&(this.cameraMotion.set({fov:a},360).catch(K),this.hideIntersectMesh())}},fw=`data:video/mp4;base64,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`,pw;function mw(){return pw||(pw=new Promise(e=>{let t,n=document.createElement(`video`);n.muted=!0,n.src=fw,n.addEventListener(`timeupdate`,function r(){n.removeEventListener(`timeupdate`,r,!1),clearTimeout(t);let i=document.createElement(`canvas`);i.width=i.height=1;let a=i.getContext(`2d`);if(!a){e(!1);return}a.drawImage(n,0,0,1,1);let{data:o}=a.getImageData(0,0,1,1);o[3]>10?e(!0):e(!1)},!1),n.addEventListener(`canplay`,function e(){n.removeEventListener(`canplay`,e,!1),n.play()},!1),t=window.setTimeout(()=>e(!1),1e3)}))}var hw=[`right`,`left`,`up`,`down`,`front`,`back`];function gw(e,t,n,r){let i=new l.Box3;switch(e){case`up`:i.min.y=.5,i.max.y=.5,i.min.x=t-.5,i.max.x=t-.5+r,i.min.z=-n+.5-r,i.max.z=-n+.5;break;case`down`:i.min.y=-.5,i.max.y=-.5,i.min.x=t-.5,i.max.x=t-.5+r,i.min.z=n-.5,i.max.z=n-.5+r;break;case`left`:i.min.x=-.5,i.max.x=-.5,i.min.z=-t+.5-r,i.max.z=-t+.5,i.min.y=-n+.5-r,i.max.y=-n+.5;break;case`right`:i.min.x=.5,i.max.x=.5,i.min.z=t-.5,i.max.z=t-.5+r,i.min.y=-n+.5-r,i.max.y=-n+.5;break;case`front`:i.min.z=-.5,i.max.z=-.5,i.min.x=t-.5,i.max.x=t-.5+r,i.min.y=-n+.5-r,i.max.y=-n+.5;break;case`back`:i.min.z=.5,i.max.z=.5,i.min.x=-t+.5-r,i.max.x=-t+.5,i.min.y=-n+.5-r,i.max.y=-n+.5;break;default:break}return i.applyMatrix4(new l.Matrix4().makeRotationY(Math.PI))}var _w=(e,t)=>{if(e.level>=t)return;let n=e.level+1,r=e.size/2,i=[new l.Vector2(e.position.x,e.position.y),new l.Vector2(e.position.x+r,e.position.y),new l.Vector2(e.position.x,e.position.y+r),new l.Vector2(e.position.x+r,e.position.y+r)];for(let a of i){let i={face:e.face,level:n,size:r,position:a,box:gw(e.face,a.x,a.y,r),parent:e,children:[]};e.children.push(i),_w(i,t)}};function vw(e,t){let n={level:0,face:e,position:new l.Vector2(0,0),size:1,box:gw(e,0,0,1),parent:null,children:[]};return _w(n,t),n}function yw(e){return{children:hw.map(t=>vw(t,e)),maxLevel:e}}function bw(e,t){for(let n of e.children)t(n)!==!1&&bw(n,t)}var xw,Sw=new l.Vector3,Cw=new l.Quaternion,ww=new l.Matrix4,Tw=new l.Matrix4,Ew=new l.Matrix4,Dw=new l.Matrix4,Ow=new l.Matrix4,kw=new l.Quaternion,Aw=new l.Matrix4,jw=0,Mw=new l.Color,Nw=(xw=Math.SQRT1_2)==null?Math.sqrt(2):xw,Pw={up:new l.Quaternion(Nw,0,0,Nw),down:new l.Quaternion(-Nw,0,0,Nw),left:new l.Quaternion(0,Nw,0,Nw),right:new l.Quaternion(0,-Nw,0,Nw),front:new l.Quaternion(0,0,0,1),back:new l.Quaternion(0,1,0,0)},Fw=(()=>{let e=new Float32Array([-.5,-.5,0,.5,-.5,0,-.5,.5,0,.5,.5,0]),t=new Float32Array([0,0,1,0,0,1,1,1]),n=new Uint32Array([0,1,2,1,3,2]),r=new l.BufferGeometry;return r.setAttribute(`position`,new l.BufferAttribute(e,3)),r.setAttribute(`uv`,new l.BufferAttribute(t,2)),r.setIndex(new l.BufferAttribute(n,1)),r.computeBoundingBox(),r})(),Iw=null;function Lw(){return Iw||(Iw=new l.DataTexture(new Uint8Array([255,255,255,255]),1,1),Iw.needsUpdate=!0),Iw}function Rw(){return{enabled:(0,f.uniform)(0),maxDisplayBoost:(0,f.uniform)(1),gamma:(0,f.uniform)(Vt.gamma),minContentBoost:(0,f.uniform)(Vt.minContentBoost),maxContentBoost:(0,f.uniform)(Vt.maxContentBoost),hdrCapacityMin:(0,f.uniform)(Vt.hdrCapacityMin),hdrCapacityMax:(0,f.uniform)(Vt.hdrCapacityMax),offsetSdr:(0,f.uniform)(Vt.offsetSdr),offsetHdr:(0,f.uniform)(Vt.offsetHdr)}}function zw(e,t){let n=(0,f.vec3)((0,f.clamp)(e.r,(0,f.float)(0),(0,f.float)(1)),(0,f.clamp)(e.g,(0,f.float)(0),(0,f.float)(1)),(0,f.clamp)(e.b,(0,f.float)(0),(0,f.float)(1))),r=(0,f.float)(1).div((0,f.max)(t.gamma,(0,f.float)(1e-6))),i=(0,f.vec3)((0,f.pow)(n.r,r),(0,f.pow)(n.g,r),(0,f.pow)(n.b,r)),a=(0,f.log2)((0,f.max)(t.maxDisplayBoost,(0,f.float)(1))),o=(0,f.log2)((0,f.max)(t.hdrCapacityMin,(0,f.float)(1e-6))),s=(0,f.log2)((0,f.max)(t.hdrCapacityMax,(0,f.float)(1e-6))).sub(o),c=(0,f.clamp)(a.sub(o).div((0,f.max)(s,(0,f.float)(1e-6))),(0,f.float)(0),(0,f.float)(1)).mul((0,f.step)((0,f.float)(1e-6),s)),l=(0,f.log2)((0,f.max)(t.minContentBoost,(0,f.float)(1e-6))),u=(0,f.log2)((0,f.max)(t.maxContentBoost,(0,f.float)(1e-6))),d=(0,f.vec3)(l).add(i.mul((0,f.vec3)(u.sub(l)))).mul(c);return(0,f.vec3)((0,f.exp2)(d.x),(0,f.exp2)(d.y),(0,f.exp2)(d.z))}function Bw(e,t,n){return(0,f.vec3)(e).add(n.offsetSdr).mul(t).sub(n.offsetHdr)}var Vw=class extends l.NodeMaterial{constructor(e){super(),this.map=null,this.flipY=!0,this.level=-1,this._hdr=e,this._mapNode=(0,f.texture)(Lw()),this._gainNode=(0,f.texture)(Lw()),this.depthTest=!0,this.depthWrite=!1,this.transparent=!0,this.setupNode()}setupNode(){let e=(0,f.uv)(),t=(0,f.vec3)(e.x,e.y,0),n=(0,f.materialReference)(`opacity`,`float`),r=this._mapNode.sample(t.xy),i=zw(this._gainNode.sample(t.xy).rgb,this._hdr),a=Bw(r.rgb,i,this._hdr),o=(0,f.vec4)((0,f.mix)(r.rgb,a,this._hdr.enabled),r.a.mul(n));this.outputNode=o}setMap(e){this.map=e,this._mapNode.value=e==null?Lw():e}setGain(e){this._gainNode.value=e==null?Lw():e}},Hw=class extends l.Mesh{constructor(e,t,n,r,i){super(Fw,n),this.disposed=!1,this.releaseMaterial=r,this.releaseTexture=i,e.box.getCenter(this.position),this.quaternion.multiplyQuaternions(new l.Quaternion().setFromAxisAngle(new l.Vector3(0,1,0),-Math.PI),Pw[e.face]),this.scale.setScalar(e.size),this.node=e,this.name=`tiling:tile`,this.material.level=e.level,this.material.visible=!1,this.material.polygonOffset=!0,this.material.polygonOffsetFactor=-e.level,this.material.polygonOffsetUnits=-e.level,this.activeTime=-1,this.frustumCulled=!1,this.renderOrder=e.level,this.appearDuration=0,this.appearMotion=new J({appear:0}),t.then(([e,t])=>{this.colorTexture=e,this.gainmapTexture=t,this.disposed?(this.releaseTexture(e),this.releaseTexture(t),this.colorTexture=void 0,this.gainmapTexture=void 0):(this.material.setMap(e==null?null:e),this.material.setGain(t),this.material.visible=!0,this.appearMotion.set({appear:1},this.appearDuration*1e3).catch(K))}).catch(K)}updateTime(e){let t=!1;if(this.disposed)return t;this.appearMotion.ended===!1&&this.appearMotion.update(e),this.activeTime=e;let n=xh(this.appearMotion.value.appear);return this.material.opacity!==n&&(this.material.opacity=n,t=!0),this.material.transparent=!0,t}dispose(){this.disposed=!0,this.releaseTexture(this.colorTexture),this.releaseTexture(this.gainmapTexture),this.colorTexture=void 0,this.gainmapTexture=void 0,this.releaseMaterial(this.material)}},Uw=Ey(20,20,20);Uw.applyMatrix4(new l.Matrix4().makeScale(-1,1,1));var Ww=class extends l.NodeMaterial{constructor(e){super();let t=(0,f.normalize)(f.positionLocal),n=(0,f.vec3)(t.x,t.y,t.z);this._mapNode=(0,f.cubeTexture)(new l.CubeTexture,n),this._gainNode=(0,f.cubeTexture)(new l.CubeTexture,n);let r=zw(this._gainNode.rgb,e),i=Bw(this._mapNode.rgb,r,e);this.fragmentNode=(0,f.vec4)((0,f.mix)(this._mapNode.rgb,i,e.enabled),1),this.depthTest=!0,this.depthWrite=!0,this.transparent=!1}get map(){return this._mapNode.value}set map(e){this._mapNode.value=e}set gainmap(e){this._gainNode.value=e==null?null:e}},Gw=class extends l.Mesh{constructor(e){super(Uw,new Ww(e)),this.disposed=!1,this.frustumCulled=!1,this.renderOrder=9999}update(e,t,n){if(this.disposed){this.material.map=null,this.material.gainmap=null,this.visible=!1;return}this.material.map=t,n&&(this.material.gainmap=n),this.visible=t!==null}dispose(){this.disposed=!0,this.material.dispose()}},Kw=64,qw=32,Jw=class{constructor(e){var t;this.prevHDRKey=``,this.tileMaterialPool=[],this.tileTexturePool=new Map,this.forceRenderWhenNextUpdate=!0,this.releaseTileMaterial=e=>{if(e.setMap(null),e.setGain(null),e.opacity=0,e.visible=!1,this.disposed||this.tileMaterialPool.length>=Kw){e.dispose();return}this.tileMaterialPool.push(e)},this.releaseTileTexture=e=>{var t,n;if(!e)return;let r=e.image,i=(t=r==null?void 0:r.width)==null?0:t,a=(n=r==null?void 0:r.height)==null?0:n;if(this.disposed||i===0||a===0){e.dispose();return}let o=`${i}x${a}:${e.colorSpace}`,s=this.tileTexturePool.get(o);if(s||(s=[],this.tileTexturePool.set(o,s)),s.length>=qw){e.dispose();return}s.push(e)},this.fiveId=e.fiveId,this.enableHDR=(t=e.enableHDR)==null?!1:t,this.disposed=!1,this.level=0,this.pedding=0,this.maxRequest=1,this.appearDuration=.5,this.maxCacheTile=48,this.imageOptions={},this.hdrUniforms=Rw(),this.boundingMesh=new Gw(this.hdrUniforms),this.boundingMesh.frustumCulled=!1,this.textureLoader=new gu,this.observer=null,this.tileTree=yw(0),this.tileMeshes=new Map,this.frustum=new l.Frustum,this.scene=new l.Scene,this.camera=new l.PerspectiveCamera(90,1,.1,100),this.scene.add(this.boundingMesh),this.renderTarget=new l.RenderTarget(1,1,{depthBuffer:!0,stencilBuffer:!1,generateMipmaps:!1,magFilter:l.LinearFilter,minFilter:l.LinearFilter,wrapS:l.ClampToEdgeWrapping,wrapT:l.ClampToEdgeWrapping,type:e.enableHDR?l.HalfFloatType:l.UnsignedByteType}),this.renderTarget.texture.colorSpace=e.enableHDR?l.LinearSRGBColorSpace:l.SRGBColorSpace}dispose(){this.setObserver(null),this.renderTarget.dispose(),this.boundingMesh.dispose();for(let e of this.tileMaterialPool)e.dispose();this.tileMaterialPool.length=0,this.tileTexturePool.forEach(e=>{for(let t of e){let e=t.image;e&&typeof e.close==`function`&&e.close(),t.dispose()}}),this.tileTexturePool.clear(),this.disposed=!0}acquireTileMaterial(){return this.tileMaterialPool.pop()||new Vw(this.hdrUniforms)}acquireTileTexture(e,t,n){let r=this.tileTexturePool.get(`${e}x${t}:${n}`);return r&&r.pop()||new l.Texture}adoptTileTexture(e){var t,n;if(!e)return;let r=e.image,i=(t=r==null?void 0:r.width)==null?0:t,a=(n=r==null?void 0:r.height)==null?0:n;if(i===0||a===0)return e;let o=this.acquireTileTexture(i,a,e.colorSpace),s=o.image;return s&&s!==r&&typeof s.close==`function`&&s.close(),o.image=e.image,o.flipY=e.flipY,o.wrapS=e.wrapS,o.wrapT=e.wrapT,o.minFilter=e.minFilter,o.magFilter=e.magFilter,o.colorSpace=e.colorSpace,o.generateMipmaps=e.generateMipmaps,o.repeat.copy(e.repeat),o.offset.copy(e.offset),o.center.copy(e.center),o.matrixAutoUpdate=e.matrixAutoUpdate,o.updateMatrix(),o.needsUpdate=!0,e.image=null,o}cleanup(){this.tileMeshes.forEach(e=>{e.dispose(),this.scene.remove(e)}),this.tileMeshes.clear(),this.forceRenderWhenNextUpdate=!0}setObserver(e){var t,n,r,i;if(this.disposed||this.observer===e)return;this.cleanup(),this.observer=e;let a=(i=(r=(n=(t=this.observer)==null?void 0:t.images.tiles)==null?void 0:n.slice().sort((e,t)=>t.level-e.level)[0])==null?void 0:r.level)==null?0:i;this.tileTree=yw(a)}update(e){var t,n,r,i,a,o,s,c,u,d;let f=this.forceRenderWhenNextUpdate;if(this.disposed)return f;let{time:p,resolution:m,pixelRatio:h,renderer:g,cameraMatrix:_,cameraProjectionMatrix:v,panoMap:y,panoGainmap:b,panoMatrix:x,panoZoom:S,minLevel:C,level:w,useHDR:T,maxDisplayBoost:E}=e,D=b==null?void 0:b.cfg;this.boundingMesh.update(p,y,b==null?void 0:b.map),this.hdrUniforms.enabled.value=+!!T,this.hdrUniforms.maxDisplayBoost.value=E==null?1:E,this.hdrUniforms.gamma.value=(t=D==null?void 0:D.gamma)==null?Vt.gamma:t,this.hdrUniforms.minContentBoost.value=(n=D==null?void 0:D.minContentBoost)==null?Vt.minContentBoost:n,this.hdrUniforms.maxContentBoost.value=(r=D==null?void 0:D.maxContentBoost)==null?Vt.maxContentBoost:r,this.hdrUniforms.hdrCapacityMin.value=(i=D==null?void 0:D.hdrCapacityMin)==null?Vt.hdrCapacityMin:i,this.hdrUniforms.hdrCapacityMax.value=(a=D==null?void 0:D.hdrCapacityMax)==null?Vt.hdrCapacityMax:a,this.hdrUniforms.offsetSdr.value=(o=D==null?void 0:D.offsetSdr)==null?Vt.offsetSdr:o,this.hdrUniforms.offsetHdr.value=(s=D==null?void 0:D.offsetHdr)==null?Vt.offsetHdr:s;let O=[this.hdrUniforms.enabled.value,this.hdrUniforms.maxDisplayBoost.value,this.hdrUniforms.gamma.value,this.hdrUniforms.minContentBoost.value,this.hdrUniforms.maxContentBoost.value,this.hdrUniforms.hdrCapacityMin.value,this.hdrUniforms.hdrCapacityMax.value,this.hdrUniforms.offsetSdr.value,this.hdrUniforms.offsetHdr.value].join(`|`);if(O!==this.prevHDRKey&&(this.prevHDRKey=O,f=!0),this.observer===null)return(this.renderTarget.width!==1||this.renderTarget.height!==1)&&(this.renderTarget.setSize(1,1),f=!0),!1;this.level=H(w,0,this.tileTree.maxLevel);let k=Math.floor(m.width*h),A=Math.floor(m.height*h),j=Math.max(k,A),M=(d=(u=(c=g.backend.device)==null?void 0:c.limits)==null?void 0:u.maxTextureDimension2D)==null?8192:d;j>M&&(k=Math.floor(k/j*M),A=Math.floor(A/j*M)),(this.renderTarget.width!==k||this.renderTarget.height!==A)&&this.renderTarget.setSize(k,A),this.scene.matrix.equals(x)||(this.scene.matrix.copy(x),this.scene.matrixWorld.copy(this.scene.matrix),this.scene.matrix.decompose(this.scene.position,this.scene.quaternion,this.scene.scale),this.scene.matrixAutoUpdate=!1,f=!0);let N=Cw.setFromRotationMatrix(_),ee=ww.compose(this.scene.position,N,this.scene.scale);this.camera.matrix.equals(ee)||(this.camera.matrix.copy(ee),this.camera.matrixWorld.copy(this.camera.matrix),this.camera.position.copy(this.scene.position),this.camera.quaternion.copy(N),this.camera.scale.copy(this.scene.scale),f=!0);let P=Tw.copy(v);P.elements[0]*=S,P.elements[5]*=S,this.camera.projectionMatrix.equals(P)||(this.camera.projectionMatrix.copy(P),this.camera.projectionMatrixInverse.copy(this.camera.projectionMatrix).invert(),f=!0),kw.copy(this.scene.quaternion).invert(),Aw.makeRotationFromQuaternion(kw),Ew.copy(this.camera.matrix),Ew.setPosition(0,0,0),Ew.premultiply(Aw),Dw.copy(Ew).invert(),Ow.multiplyMatrices(this.camera.projectionMatrix,Dw),this.frustum.setFromProjectionMatrix(Ow);let te=this.frustum.planes[5].normal,ne=[];w>=C&&bw(this.tileTree,e=>{if(!(e.level<C)){if(e.level>w||!this.frustum.intersectsBox(e.box))return!1;ne.push(e)}});let F=new WeakMap;ne.sort((e,t)=>{if(e.level!==t.level)return e.level-t.level;let n=F.get(e);n===void 0&&(n=e.box.getCenter(Sw).angleTo(te),F.set(e,n));let r=F.get(t);return r===void 0&&(r=t.box.getCenter(Sw).angleTo(te),F.set(t,r)),n-r});let re=new WeakSet,ie=this.observer.images.tiles;if(ie)for(let e of ne){let t=ie.find(t=>t.level===e.level);if(!t)continue;re.add(e);let n=this.tileMeshes.get(e);if(n){n.appearDuration=this.appearDuration,n.updateTime(p)&&(f=!0);continue}if(this.pedding>=this.maxRequest)continue;let r=Math.pow(2,e.level)*e.position.y,i=Math.pow(2,e.level)*e.position.x,a=`${gb({panoIndex:this.observer.panoIndex,workCode:this.observer.work.workCode})}.${e.face}.${e.level}.${r}.${i}`,o=t.work.getURL(t[e.face]),s=this.enableHDR&&t.gainmap?t.work.getURL(t.gainmap[e.face]):void 0,c=t.size,u=this.imageOptions.transform,d=Object.assign(Object.assign({},hl(this.imageOptions,[`format`,`sharpen`,`forceUseExifOrientation`,`mappings`])),{key:`pano_tile.${a}`,size:t.scale>=1?void 0:c*e.size*t.scale,cut:e.size===1?void 0:[c*e.position.x,c*e.position.y,c*e.size,c*e.size]});e.level===1&&t.scale>=.5&&(d.format===`jpg`||/\.jpg$/.test(o))&&(d.size=void 0,d.quality||(d.quality=70)),e.size===1&&console.warn(`tile: ${d.key} should not appear.`),this.pedding++;let m=Promise.all([this.textureLoader.loadTexture(o,{imageURL:{transform:u,options:d},colorSpace:l.SRGBColorSpace,minFilter:l.LinearFilter,magFilter:l.LinearFilter,generateMipmaps:!1,fetcher:vy(this.fiveId,this.observer.work)}).then(e=>this.adoptTileTexture(e.body)),s?this.textureLoader.loadTexture(s,{imageURL:{transform:u,options:d},colorSpace:l.NoColorSpace,minFilter:l.LinearFilter,magFilter:l.LinearFilter,generateMipmaps:!1,fetcher:vy(this.fiveId,this.observer.work)}).then(e=>this.adoptTileTexture(e.body)):Promise.resolve(void 0)]);m.then(([e,t])=>Promise.all([e?Zh(e,g):Promise.resolve(),t?Zh(t,g):Promise.resolve()])).then(e=>(this.pedding--,e),e=>(this.pedding--,Promise.reject(e))),n=new Hw(e,m,this.acquireTileMaterial(),this.releaseTileMaterial,this.releaseTileTexture),n.name=`tiling:tile-${a}`,n.visible=!1,n.appearDuration=this.appearDuration,this.tileMeshes.set(e,n),this.scene.add(n),n.updateTime(p),f=!0}let ae=[],I=[];this.tileMeshes.forEach((e,t)=>{re.has(t)?ae.push(e):I.push(e);let n=t.level>=C&&t.level<=w;e.visible!==n&&(e.visible=n,f=!0)});let L=I.sort((e,t)=>t.activeTime-e.activeTime).slice(Math.max(0,this.maxCacheTile-ae.length));for(let e of L)this.tileMeshes.delete(e.node),this.scene.remove(e),e.dispose(),f=!0;if(f){let e=g.getRenderTarget(),t=g.getClearColor(Mw),n=g.getClearAlpha(),r=g.autoClear,i=g.autoClearColor,a=g.autoClearDepth,o=g.autoClearStencil;g.autoClear=!0,g.autoClearColor=!0,g.autoClearDepth=!0,g.autoClearStencil=!0,g.setRenderTarget(this.renderTarget),g.setClearColor(new l.Color(0,0,0),jw),g.render(this.scene,this.camera),g.setRenderTarget(e),g.setClearColor(t,n),g.autoClear=r,g.autoClearColor=i,g.autoClearDepth=a,g.autoClearStencil=o}return this.forceRenderWhenNextUpdate=!1,f}},Yw=new l.Matrix4().makeRotationAxis(new l.Vector3(0,1,0),Math.PI),Xw=new l.Matrix4,Zw=(0,f.float)(-1),Qw=(0,f.vec2)(.5,.5),$w=Ey(2,2,2);$w.applyMatrix4(new l.Matrix4().makeScale(-1,1,1));function eT(){let e={size:(0,f.uniform)(new l.Vector2),mapMatrix:(0,f.uniform)(new l.Matrix4),panoMatrix:(0,f.uniform)(new l.Matrix4),alpha:(0,f.uniform)(1),map:(0,f.texture)(new l.Texture)},t=f.positionWorld.sub(f.cameraPosition).normalize().toVar(`cameraToVertex`),n=e.panoMatrix.toMat3().transpose().mul(t).toVar(`panoDirection`),r=(0,f.vec3)(n.x.mul(Zw),n.y,n.z),i=e.mapMatrix.mul((0,f.vec4)(r,1)).toVar(`mapCoods`),a=(0,f.vec2)((0,f.float)(.5).add(i.x.div(i.z).div(e.size.x)),(0,f.float)(.5).sub(i.y.div(i.z).div(e.size.y))).toVar(`videoUv`),o=(0,f.texture)(e.map,a),s=(0,f.float)(1).sub((0,f.step)((0,f.float)(0),i.z)).mul((0,f.float)(1).sub((0,f.step)((0,f.float)(.5),(0,f.abs)(a.x.sub(.5))))).mul((0,f.float)(1).sub((0,f.step)((0,f.float)(.5),(0,f.abs)(a.y.sub(.5))))),c=(0,f.float)(5).mul((0,f.float)(1).sub((0,f.distance)(a,Qw).div(.55).clamp(0,1))).clamp(0,1),u=new l.NodeMaterial;return u.fragmentNode=(0,f.vec4)(o.rgb,s.mul(c).mul(e.alpha)),u.depthTest=!1,u.depthWrite=!1,u.fog=!1,u.blending=l.CustomBlending,u.blendSrc=l.SrcAlphaFactor,u.blendDst=l.OneMinusSrcAlphaFactor,u.blendSrcAlpha=l.OneFactor,u.blendDstAlpha=l.OneMinusSrcAlphaFactor,{material:u,u:e}}var tT=class{constructor(){let{material:e,u:t}=eT();this.material=e,this.u=t,this.object=new l.Mesh($w,this.material),this.object.visible=!1,this.object.renderOrder=-1,this.object.frustumCulled=!1,this.object.name=`pano-video`,this.alphaMotion=new J({alpha:0}),this.active=!1}setMaterial(e){e?(this.u.size.value.copy(e.size),this.u.mapMatrix.value.copy(Xw.multiplyMatrices(Yw,e.matrix).transpose()),this.u.panoMatrix.value.copy(e.panoMatrix),e.map.colorSpace=l.SRGBColorSpace,this.u.map.value=e.map,this.alphaMotion.set({alpha:e.alpha},500).catch(K)):(this.u.size.value.setScalar(0),this.u.mapMatrix.value.identity(),this.u.panoMatrix.value.identity(),this.u.map.value=null,this.u.alpha.value=0,this.alphaMotion.set({alpha:0},0).catch(K));let t=e!==null;this.active!==t&&(this.active=t,this.object.visible=t)}updateTime(e){this.alphaMotion.ended||(this.alphaMotion.update(e),this.u.alpha.value=this.alphaMotion.value.alpha)}dispose(){this.material.dispose()}},nT=new l.Color(0,0,0),rT=new l.Color;function iT(e){let t=e.mul(256*256*256).fract(),n=e.mul(256*256).fract().sub(t.mul(1/256)),r=e.mul(256).fract().sub(n.mul(1/256));return(0,f.vec4)(t,n,r,e.sub(r.mul(1/256))).mul(256/255)}var aT=(0,f.uniform)(0),oT=iT((0,f.clamp)((0,f.length)(f.positionWorld.sub(f.cameraPosition)).div(aT),0,1)),sT=new l.NodeMaterial;sT.fragmentNode=oT,sT.fog=!1;function cT(e,t,n,r=1e3){aT.value=r,e.getClearColor(rT);let i=e.getClearAlpha(),a=t.overrideMaterial;t.overrideMaterial=sT,e.setClearColor(nT,0),n.update(e,t),e.setClearColor(rT,i),t.overrideMaterial=a}function lT(e){if(e instanceof Error)return e;let t=typeof e;return Error(t&&t===`object`?JSON.stringify(e):e)}var uT=bh,dT=new l.Raycaster,fT=new l.Vector3,pT=[new l.Vector3(0,0,0).multiplyScalar(.1),new l.Vector3(1,0,0).multiplyScalar(.1),new l.Vector3(-.5,0,-Math.sqrt(3)/2).multiplyScalar(.1),new l.Vector3(-.5,0,Math.sqrt(3)/2).multiplyScalar(.1)],mT=Object.assign(Object.assign({},uw),{maxAccessibleDistance:5,panoTapTriggerRadius:.5,panoCircleMeshCreator:(e,t)=>e.position.distanceTo(e.standingPosition)>t.aerialObserverMinHeight?new tC:new qS,adjustPanoCircleMeshPositionBasedOnModel:!1,tileLevelForFov:((e,t)=>{var n;let r=e=>e/180*Math.PI,i=(n=Math.log2)==null?(e=>Math.log(e)*Math.LOG2E):n,a=t.height/2/Math.tan(r(e/2))*Math.tan(r(45))*2,o=Math.max(i(a/512),0);return o<2.3&&o>.1&&(o=1),o=o%1>.75?Math.ceil(o):Math.floor(o),o}),tileAppearDuration:.5,tileMaxRequest:3,flyEffectUseDepthBuffer:!1}),hT=class e extends dw{static parseArgs(t){var n,r,i,a,o,s,c,l;if(t instanceof e)return t;let u=super.parseArgs(t);return Object.assign(Object.assign({},u),{maxAccessibleDistance:(n=t.maxAccessibleDistance)==null?mT.maxAccessibleDistance:n,panoTapTriggerRadius:(r=t.panoTapTriggerRadius)==null?mT.panoTapTriggerRadius:r,panoCircleMeshCreator:(i=t.panoCircleMeshCreator)==null?mT.panoCircleMeshCreator:i,adjustPanoCircleMeshPositionBasedOnModel:(a=t.adjustPanoCircleMeshPositionBasedOnModel)==null?mT.adjustPanoCircleMeshPositionBasedOnModel:a,tileLevelForFov:(o=t.tileLevelForFov)==null?mT.tileLevelForFov:o,tileAppearDuration:(s=t.tileAppearDuration)==null?mT.tileAppearDuration:s,tileMaxRequest:(c=t.tileMaxRequest)==null?mT.tileMaxRequest:c,flyEffectUseDepthBuffer:(l=t.flyEffectUseDepthBuffer)==null?mT.flyEffectUseDepthBuffer:l})}static initAnimationEndState(e){let t=this.parseArgs(e),n=super.initAnimationEndState(t);return Object.assign(Object.assign({},n),{mode:`Panorama`})}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`Panorama`,this.initAnimationed=!1,this.maxAccessibleDistance=n.maxAccessibleDistance,this.panoTapTriggerRadius=n.panoTapTriggerRadius,this.panoCircleMeshCreator=n.panoCircleMeshCreator,this.adjustPanoCircleMeshPositionBasedOnModel=n.adjustPanoCircleMeshPositionBasedOnModel,this.tileLevelForFov=n.tileLevelForFov,this.tileAppearDuration=n.tileAppearDuration,this.tileMaxRequest=n.tileMaxRequest,this.flyEffectUseDepthBuffer=n.flyEffectUseDepthBuffer,this.adjustPanoCircleMeshPositionFix=new Map;let{pano0:r,pano1:i}=this.modelScene.parameter.resolveValue();r&&(i==null?void 0:i.map)!==r.map&&(this.modelScene.parameter.set({pano0:i}),r.map.dispose());let a=new Set;r&&a.add(r),i&&a.add(i),this.panoMeshes=new Map,this.locationMotion=new J({count:0,distance:this.camera.pose.distance}),this.modelAlphaMotion=new J({modelAlpha:this.modelScene.parameter.resolveValue().modelAlpha}),this.perspToOrthoMotion=new J({perspToOrtho:this.camera.perspToOrtho.x}),this.panoResources={},this.panoResources[this.locationMotion.keyframes[0].key=this.locationMotion.keyframes[1].key=Ft()]={panoId:gb(this.currentPano),panoPicture:this.modelScene.parameter.resolveValue().pano1,position:this.camera.pose.offset.clone(),effect:`fly`,effectEasing:uT,fixCameraTransform:new l.Matrix4},this.panoPictureObserverMap=new WeakMap,this.textureLoader=new gu,this.tiling=new Jw({fiveId:this.fiveId,enableHDR:this.enableHDR}),this.panoVideo=new tT,this.scene.add(this.panoVideo.object),this.accessibleObserverFloorCheckCount=0}get tileLevel(){return this.tiling.level}updateConfiguration(e){return super.updateConfiguration(e)===!1?!1:(e.maxAccessibleDistance!==void 0&&this.maxAccessibleDistance!==e.maxAccessibleDistance&&(this.maxAccessibleDistance=e.maxAccessibleDistance),e.panoTapTriggerRadius!==void 0&&this.panoTapTriggerRadius!==e.panoTapTriggerRadius&&(this.panoTapTriggerRadius=e.panoTapTriggerRadius),e.panoCircleMeshCreator!==void 0&&this.panoCircleMeshCreator!==e.panoCircleMeshCreator&&(this.panoCircleMeshCreator=e.panoCircleMeshCreator,this.panoMeshes&&(this.panoMeshes.forEach(e=>{this.helper.remove(e),e.dispose()}),this.panoMeshes.clear())),e.tileLevelForFov!==void 0&&this.tileLevelForFov!==e.tileLevelForFov&&(this.tileLevelForFov=e.tileLevelForFov),e.tileMaxRequest!==void 0&&this.tileMaxRequest!==e.tileMaxRequest&&(this.tileMaxRequest=e.tileMaxRequest),e.flyEffectUseDepthBuffer!==void 0&&this.flyEffectUseDepthBuffer!==e.flyEffectUseDepthBuffer&&(this.flyEffectUseDepthBuffer=e.flyEffectUseDepthBuffer),e.adjustPanoCircleMeshPositionBasedOnModel!==void 0&&this.adjustPanoCircleMeshPositionBasedOnModel!==e.adjustPanoCircleMeshPositionBasedOnModel&&(this.adjustPanoCircleMeshPositionBasedOnModel=e.adjustPanoCircleMeshPositionBasedOnModel,this.adjustPanoCircleMeshPositionBasedOnModel||this.adjustPanoCircleMeshPositionFix.clear()),!0)}destroy(){super.destroy(),this.tiling.dispose(),this.modelScene.parameter.set({refinedScreen:null,pano0Depth:null,pano1Depth:null}),this.pano0DepthCubeRenderTarget&&(this.pano0DepthCubeRenderTarget.dispose(),this.pano0DepthCubeRenderTarget=void 0),this.pano1DepthCubeRenderTarget&&(this.pano1DepthCubeRenderTarget.dispose(),this.pano1DepthCubeRenderTarget=void 0),this.locationMotion.dispose(),this.pendingTextureTask=void 0,this.panoMeshes&&(this.panoMeshes.forEach(e=>{this.helper.remove(e),e.dispose()}),this.panoMeshes.clear());let e=this.videoTexture.image;e.pause(),e.oncanplay=K,e.ontimeupdate=K,this.scene.remove(this.panoVideo.object),this.panoVideo.setMaterial(null),this.panoVideo.dispose();let{pano0:t,pano1:n}=this.modelScene.parameter.resolveValue();for(let e of Object.keys(this.panoResources)){let r=this.panoResources[e];if(r.panoPicture){let e=r.panoPicture.map;e&&e!==(t==null?void 0:t.map)&&e!==(n==null?void 0:n.map)&&(e.dispose(),r.panoPicture=null)}delete this.panoResources[e]}}isReady(){return this.locationMotion.ended===!0?super.isReady():!1}isTileReady(){let e=this.tiling.pedding<=0;return this.initAnimationed&&e}updateWork(t,n,r,i){this.userAction=i,this.works=t;let a=e.initAnimationEndState(Object.assign(Object.assign({},this),{initial:{currentState:Object.assign(Object.assign({},this.currentPano),this.camera.pose),duration:r.duration,effect:r.effect,state:n,userAction:i}}));return(a.workCode!==this.currentPano.workCode||a.panoIndex!==this.currentPano.panoIndex||a.longitude!==this.cameraMotion.value.longitude||a.latitude!==this.cameraMotion.value.latitude||a.fov!==this.cameraMotion.value.fov)&&(this.initAnimationed=!1,this.moveToPano({workCode:a.workCode,panoIndex:a.panoIndex},{effect:r.effect,duration:r.duration,longitude:a.longitude,latitude:a.latitude,fov:a.fov,moveEndCallback:()=>{this.initAnimationed=!0},moveCancelCallback:()=>{this.initAnimationed=!0}},i)),!0}updateModel(e){this.modelScene=e,this.hideIntersectMesh()}updateTime(e,t,...n){var r,i,a,o,s,c;if(this.destroyed)return;let u={},d={},f=this.camera.getDirection(new l.Vector3),p=this.locationMotion.keyframes[0],m=this.locationMotion.keyframes[this.locationMotion.keyframes.length-1],[h,g]=this.locationMotion.getKeyFrameSegment(e),_=this.panoResourceFromLocationMotionKeyframe(h),v=this.panoResourceFromLocationMotionKeyframe(g),y=this.panoResourceFromLocationMotionKeyframe(p),b=this.panoResourceFromLocationMotionKeyframe(m),x=!1;if(this.cameraMotion.ended===!1&&(this.cameraMotion.update(e),d.longitude=this.cameraMotion.value.longitude,d.latitude=this.cameraMotion.value.latitude,d.fov=this.cameraMotion.value.fov),this.modelAlphaMotion.ended===!1&&(this.modelAlphaMotion.update(e),u.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.perspToOrthoMotion.ended===!1&&(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(H(this.perspToOrthoMotion.value.perspToOrtho,0,1))),this.locationMotion.ended===!1){this.locationMotion.update(e);let t=this.locationMotion.value.count-g.value.count+1,n=new l.Vector3().copy(_.position),a=new l.Vector3().copy(v.position);if(u.progress=v.effectEasing(t),t>=.01&&t<=.99&&(u.progress=H(v.effectEasing(t),.01,.99)),v.panoPicture&&(t<1?_.panoPicture&&(u.pano0=_.panoPicture):u.pano0=v.panoPicture,u.pano1=v.panoPicture),v.effect===`montage`?u.transition=`BLACK`:v.effect===`spread`?u.transition=`SPREAD`:u.transition=`FADE`,v.effect===`zoomin`||v.effect===`zoomout`?u.progress=Math.pow(t,3):v.effect===`model`&&this.camera.pose.distance<.01&&(u.modelAlpha=1-Math.pow(H(Math.abs(t-.5)*2,0,1),4)),t<1&&v.effect!==`fly`&&v.effect!==`model`){if(u.pano0&&_.panoPicture){let e={panoId:u.pano0.panoId,map:u.pano0.map,mapHistogram:u.pano0.mapHistogram,mapSize:u.pano0.mapSize,zoom:u.pano0.zoom,matrix:_.panoPicture.matrix.clone().premultiply(_.fixCameraTransform).setPosition(v.position),gainmap:u.pano0.gainmap?{map:u.pano0.gainmap.map,cfg:Object.assign({},u.pano0.gainmap.cfg)}:void 0},t=this.panoPictureObserverMap.get(u.pano0);t&&this.panoPictureObserverMap.set(e,t),u.pano0=e}n.copy(a),x=!0}d.distance=this.locationMotion.value.distance,d.offset=new l.Vector3(n.x+(a.x-n.x)*t,n.y+(a.y-n.y)*t,n.z+(a.z-n.z)*t);let o=[],s=[];for(let e of this.locationMotion.keyframes){let{key:t,progress:n}=e;t!==void 0&&(o.push(t),n>this.locationMotion.progress&&s.push(t))}for(let e of Object.keys(this.panoResources)){if(s.indexOf(e)>=0)continue;let t=this.panoResources[e];if(t.panoPicture){let e=t.panoPicture.map;if(e){if(e===((r=u.pano0)==null?void 0:r.map)||e===((i=u.pano1)==null?void 0:i.map))continue;e.dispose(),t.panoPicture=null}}o.indexOf(e)>=0||delete this.panoResources[e]}let c=_b(v.panoId);c!==this.currentPano&&(this.currentPano=c,this.accessibleObserverFloorCheckCount=0),this.emit(`pano.moving`,$(`pano.moving`,{userAction:this.userAction,prevPano:_b(y.panoId),state:Object.assign(Object.assign(Object.assign(Object.assign({},_b(b.panoId)),{mode:this.mode}),xC(this.camera.pose)),d),options:{},progress:this.locationMotion.progress,error:null}))}wC(u)===!1&&this.modelScene.parameter.set(u),!this.modelScene.parameter.pano0&&this.modelScene.parameter.pano1&&this.modelScene.parameter.set(`pano0`,this.modelScene.parameter.pano1),wC(d)===!1&&this.setCamera(d);let S=this.works.getObserver(this.currentPano),C=this.locationMotion.ended?this.getForwardObserverOrNot(this.camera):null,w=this.works.getObserver(_.panoId),T=this.works.getObserver(v.panoId);if(this.adjustPanoCircleMeshPositionBasedOnModel&&this.helper.visible&&S){let e=[],t=S.work.observers;for(let n of S.accessibleNodes){let r=t[n];r&&e.push(r)}let n=new Map;if(e.sort((e,t)=>{let r=n.get(e);r===void 0&&(r=e.standingPosition.distanceTo(S.standingPosition),n.set(e,r));let i=n.get(e);return i===void 0&&(i=t.standingPosition.distanceTo(S.standingPosition),n.set(t,i)),r-i}),e.length){this.accessibleObserverFloorCheckCount%=e.length;let t=e[this.accessibleObserverFloorCheckCount],n=this.modelScene.models.find(e=>e.work===(t==null?void 0:t.work));if(t&&n&&n.visible){let e=.3,r=.005,i=t.standingPosition.clone().applyMatrix4(t.work.transform),a=gb({panoIndex:t.panoIndex,workCode:t.work.workCode}),o=pT.map(t=>{dT.ray.origin.copy(i),dT.ray.origin.add(fT.copy(t).setY(e)),dT.ray.direction.set(0,-1,0),dT.firstHitOnly=!0,dT.floorIndex=-1;let[a]=n.intersectRaycaster(dT);return a&&a.distance-r<=e?new l.Vector3().copy(i).setY(a.point.y+r):i});o.sort((e,t)=>t.y-e.y);let s=o[Math.floor(o.length/2)],[c]=o.filter(e=>e.distanceTo(s)<=.05);if(c){let e=new l.Vector4(i.x,i.y,i.z,c.y-i.y),t=this.adjustPanoCircleMeshPositionFix.get(a);t&&!e.equals(t)&&(this.needsRender=!0),this.adjustPanoCircleMeshPositionFix.set(a,e)}}this.accessibleObserverFloorCheckCount++}}let E=new Map;if(w)for(let e of w.accessibleNodes){let t=w.work.observers[e];if(t){let e=gb({panoIndex:t.panoIndex,workCode:t.work.workCode});E.set(e,t)}}if(T)for(let e of T.accessibleNodes){let t=T.work.observers[e];if(t){let e=gb({panoIndex:t.panoIndex,workCode:t.work.workCode});E.set(e,t)}}if(this.panoMeshes.forEach((e,t)=>{E.get(t)?E.delete(t):(this.helper.remove(e),e.dispose(),this.panoMeshes.delete(t))}),E.forEach((e,t)=>{let n=this.panoCircleMeshCreator(e,{aerialObserverMinHeight:this.aerialObserverMinHeight});this.panoMeshes.set(t,n),this.helper.add(n),E.delete(t)}),this.panoMeshes.forEach((e,t)=>{let n=this.works.getObserver(t);if(n){let r=n.position.distanceTo(n.standingPosition)>this.aerialObserverMinHeight;if(r)e.position.copy(n.position).applyMatrix4(n.work.transform),e.scale.setScalar(18);else{e.position.copy(n.standingPosition).applyMatrix4(n.work.transform);let t=this.adjustPanoCircleMeshPositionFix.get(n.panoId);t&&(fT.set(t.x,t.y,t.z),fT.equals(e.position)&&(e.position.y+=t.w)),e.scale.setScalar(1.2)}let i=this.camera.position.clone().setY(e.position.y),a=new l.Vector3().copy(e.position).sub(i).normalize();if(t===gb(this.currentPano)){let t=H((.5-i.distanceTo(e.position))/.5,0,1);a.multiplyScalar(1-t).add(f.clone().multiplyScalar(t))}if(a.length()>0){let t=r?-Math.PI/2:0,n=Math.atan2(a.x,a.z);e.quaternion.setFromEuler(new l.Euler(t,n,0,`YXZ`))}}else e.visible=!1}),this.camera.pose.distance>.1||x)this.panoMeshes.forEach(n=>{n.setOpacity(0),n.setCurrent(!1),n.updateTime&&n.updateTime(e,t),n.visible=!1});else if(S){let n=S.work.observers,[,r]=nm(S.accessibleNodes,e=>{let t=n[e];return!t||!t.active?1/0:S.standingPosition.distanceTo(t.standingPosition)},!0);r=H(r,3,1/0);let i=S.accessibleNodes.concat(S.panoIndex).map(e=>gb({panoIndex:e,workCode:S.work.workCode}));this.panoMeshes.forEach((n,a)=>{let o=this.works.getObserver(a),s=!1,c=1;if(i.indexOf(a)===-1)s=!1,c=0;else if(!o)s=!1,c=0;else if(!o.loadable&&!o.active)s=!1,c=0;else{let e=n.position.clone().project(this.camera);s=Math.abs(e.x)<1&&Math.abs(e.y)<1&&Math.abs(e.z)<1&&!n.loading&&n.progress===0&&C!==null&&gb({panoIndex:C.panoIndex,workCode:C.work.workCode})===a;let t=n.position.clone().setY(this.camera.position.y).distanceTo(this.camera.position);c=t<.01?0:H(r/t,.1,.85)}o&&o===T&&o.position.distanceTo(o.standingPosition)>this.aerialObserverMinHeight&&n.position.distanceTo(this.camera.position)<35&&(c=0),this.modelScene.parameter.resolveValue().modelAlpha>0&&(c=0),n.setCurrent(s),n.setOpacity(c),n.updateTime&&n.updateTime(e,t)})}{let e=(a=this.modelScene.parameter.progress)==null?1:a,t=Math.round(e),n=this.modelScene.parameter.pano0,r=this.modelScene.parameter.pano1,i=t===0?n:r,s;if(i&&(s=this.works.getObserver(i.panoId),s||(s=this.panoPictureObserverMap.get(i))),this.tiling.appearDuration=this.tileAppearDuration,this.tiling.maxRequest=e<(cu()?.6:.99)?0:this.tileMaxRequest,this.tiling.imageOptions=this.imageOptions,!s||!i||this.tileLevelForFov===!1||this.camera.perspToOrtho.x>0){this.tiling.setObserver(null);let e={renderer:this.renderer,resolution:this.camera.resolution,pixelRatio:this.camera.pixelRatio,time:this.camera.time,cameraMatrix:this.camera.matrixWorld,cameraProjectionMatrix:this.camera.projectionMatrix,panoMap:null,panoGainmap:void 0,panoMatrix:new l.Matrix4,panoZoom:1,minLevel:0,level:0};this.tiling.update(e),this.modelScene.parameter.set(`refinedScreen`,null)}else{let e=$l(i.mapSize),a=e+1,c=new l.Vector2().copy(this.camera.resolution).multiplyScalar(this.camera.pixelRatio),u=Math.floor(this.tileLevelForFov(this.camera.fov,c)),d=u>e?u:0;this.tiling.setObserver(s);let f={renderer:this.renderer,resolution:this.camera.resolution,pixelRatio:this.camera.pixelRatio,time:this.camera.time,cameraMatrix:this.camera.matrixWorld,cameraProjectionMatrix:this.camera.projectionMatrix,panoMap:i.map,panoGainmap:i.gainmap,panoMatrix:i.matrix,panoZoom:i.zoom,minLevel:a,level:d,useHDR:this.modelScene.parameter.useHDR,maxDisplayBoost:this.modelScene.parameter.maxDisplayBoost},p=this.tiling.update(f),m={map:this.tiling.renderTarget.texture,matrixInverse:this.tiling.camera.matrixWorldInverse,projectionMatrix:this.tiling.camera.projectionMatrix,pano:t,opacity:(n==null?void 0:n.panoId)===(r==null?void 0:r.panoId)?1:Sh(Math.abs(((o=this.modelScene.parameter.progress)==null?0:o)-.5)*2)},h=this.modelScene.parameter.refinedScreen;(p||m.pano!==(h==null?void 0:h.pano)||m.opacity!==(h==null?void 0:h.opacity))&&this.modelScene.parameter.set(`refinedScreen`,m)}}if(this.panoVideo.object.position.copy(this.camera.position),this.panoVideo.updateTime(e),S&&S.images.video&&(this.needsRender=!0),this.intersectMesh&&this.intersectMesh.parent&&S&&S.position.y-S.standingPosition.y>10){let e=H(this.camera.position.distanceTo(this.intersectMesh.position)*(2*Math.tan(.5*this.camera.fov/180*Math.PI))/5,.5);this.intersectMesh.scale.setScalar(e)}else this.intersectMesh.scale.setScalar(1);{let e=v.effect,{pano0:t,pano1:n}=this.modelScene.parameter;if(t&&n&&t!==n&&(e===`fly`||e===`model`)&&this.flyEffectUseDepthBuffer){if(((s=this.modelScene.parameter.pano0Depth)==null?void 0:s.panoId)!==t.panoId||((c=this.modelScene.parameter.pano1Depth)==null?void 0:c.panoId)!==n.panoId){this.pano0DepthCubeRenderTarget?this.pano0DepthCubeRenderTarget.width!==512&&this.pano0DepthCubeRenderTarget.setSize(512,512):this.pano0DepthCubeRenderTarget=new l.CubeRenderTarget(512,{minFilter:l.NearestFilter,magFilter:l.NearestFilter,generateMipmaps:!1}),this.pano1DepthCubeRenderTarget?this.pano1DepthCubeRenderTarget.width!==512&&this.pano1DepthCubeRenderTarget.setSize(512,512):this.pano1DepthCubeRenderTarget=new l.CubeRenderTarget(512,{minFilter:l.NearestFilter,magFilter:l.NearestFilter,generateMipmaps:!1});let e=new l.CubeCamera(this.camera.near,this.camera.far,this.pano0DepthCubeRenderTarget);e.matrix.copy(t.matrix),e.matrixWorld.copy(e.matrix),e.matrixAutoUpdate=!1,cT(this.renderer,this.modelScene,e,500);let r=new l.CubeCamera(this.camera.near,this.camera.far,this.pano1DepthCubeRenderTarget);r.matrix.copy(n.matrix),r.matrixWorld.copy(r.matrix),r.matrixAutoUpdate=!1,cT(this.renderer,this.modelScene,r,500),this.modelScene.parameter.set({pano0Depth:{panoId:t.panoId,map:this.pano0DepthCubeRenderTarget.texture,mapSize:this.pano0DepthCubeRenderTarget.width,maxDepth:500},pano1Depth:{panoId:n.panoId,map:this.pano1DepthCubeRenderTarget.texture,mapSize:this.pano1DepthCubeRenderTarget.width,maxDepth:500}})}}else this.modelScene.parameter.set({pano0Depth:null,pano1Depth:null}),this.flyEffectUseDepthBuffer||(this.pano0DepthCubeRenderTarget&&(this.pano0DepthCubeRenderTarget.dispose(),this.pano0DepthCubeRenderTarget=void 0),this.pano1DepthCubeRenderTarget&&(this.pano1DepthCubeRenderTarget.dispose(),this.pano1DepthCubeRenderTarget=void 0))}}getTargetState(){let e=this.cameraMotion.getKeyFrameSegment(G())[1],t=this.locationMotion.getKeyFrameSegment(G())[1],n=this.panoResourceFromLocationMotionKeyframe(t),r=this.works.getObserver(n.panoId);return{workCode:r?r.work.workCode:this.currentPano.workCode,panoIndex:r?r.panoIndex:this.currentPano.panoIndex,mode:this.mode,longitude:e.value.longitude,latitude:e.value.latitude,fov:e.value.fov,offset:r?r.position.clone().applyMatrix4(r.work.transform):this.camera.position.clone(),distance:this.locationMotion.value.distance}}moveToPano(e,t,n){var r,i,a;this.userAction=n,this.stopMomentumMovement();let o=gb(e),s=this.works.getObserver(e);if(!s)throw Error(`Invalid PanoId ${JSON.stringify(e)}`);let c=Xl(s.images.up),u=this.imageOptions.size;u===void 0&&s&&c&&(u=Number(c)),u===void 0&&(u=2048);let d=this.imageOptions.transform,f=Object.assign({key:`pano.${o}`},hl(this.imageOptions,[`format`,`size`,`quality`,`sharpen`,`forceUseExifOrientation`,`mappings`])),p={right:s.images.work.getURL(s.images.right),left:s.images.work.getURL(s.images.left),up:s.images.work.getURL(s.images.up),down:s.images.work.getURL(s.images.down),front:s.images.work.getURL(s.images.front),back:s.images.work.getURL(s.images.back)},m,h,g=this.enableHDR?s.images.gainmap:void 0;g&&(m={right:s.images.work.getURL(g.right),left:s.images.work.getURL(g.left),up:s.images.work.getURL(g.up),down:s.images.work.getURL(g.down),front:s.images.work.getURL(g.front),back:s.images.work.getURL(g.back)},h=s.images.work.getURL(g.cfg));let _=`pano:`+mb([p,m,f]);if(this.pendingTextureTask){if(this.pendingTextureTask.hash===_)return;{let e=this.pendingTextureTask.panoId;(r=this.panoMeshes.get(e))==null||r.setProgress(0),this.emit(`pano.texture.abort`,$(`pano.texture.abort`,{error:null,progress:0,meta:null,pano:{panoIndex:s.panoIndex,workCode:s.work.workCode}}))}}let v=`move-to-pano-`+o;this.pending.add(v);let y=gC(`pano.prepare`,{options:t,prevMode:this.mode,prevPano:this.currentPano,pano:e});if(this.emit(`pano.prepare`,y),y.defaultPrevented){this.pending.delete(v);return}y.options!==t&&Object.assign(t,y.options);let b=(i=t.effect)==null?`fly`:i,x=this.modelScene.parameter,S;if(x.pano0&&x.pano0.map.name===_?S=x.pano0:x.pano1&&x.pano1.map.name===_&&(S=x.pano1),S){let n={panoId:o,effect:b,effectEasing:(a=t.effectEasing)==null?uT:a,panoPicture:{panoId:S.panoId,map:S.map,mapHistogram:S.mapHistogram,mapSize:S.mapSize,matrix:s.matrix.clone().premultiply(s.work.transform),zoom:1,gainmap:S.gainmap?{map:S.gainmap.map,cfg:Object.assign({},S.gainmap.cfg)}:void 0},position:s.position.clone().applyMatrix4(s.work.transform),fixCameraTransform:new l.Matrix4};n.panoPicture&&this.panoPictureObserverMap.set(n.panoPicture,s),this.pendingTextureTask=void 0,Promise.resolve().then(()=>_C(y)).then(()=>{iu.shared.add(()=>{this.pending.delete(v),this.doMoveToPano(e,n,t)},!0,1)}).catch(n=>{var r;let i=lT(n),a=Object.assign(Object.assign(Object.assign({},e),{mode:this.mode}),xC(this.camera.pose));this.emit(`pano.error`,$(`pano.error`,{error:i,userAction:this.userAction,options:t,prevPano:this.currentPano,progress:0,state:a})),this.emit(`pano.cancel`,$(`pano.cancel`,{error:i,userAction:this.userAction,options:t,prevPano:this.currentPano,progress:0,state:a})),this.emit(`error`,i),t.moveCancelCallback&&t.moveCancelCallback(),this.pending.delete(v),this.pendingTextureTask=void 0,(r=this.panoMeshes.get(o))==null||r.setProgress(0)});return}this.pendingTextureTask={panoId:o,hash:_,onLoad:(n,r)=>Wr(this,void 0,void 0,function*(){var i,a;let c=n.body;if(this.destroyed)c.dispose();else{c.name=_;let n=Array.isArray(c.image)?c.image[0]:c.image,u=(i=n==null?void 0:n.width)==null?2048:i,{data:d}=yield BC(this.renderer,c,!0,Dx),f=new jx().formPixels(d),p={panoId:o,effect:b,effectEasing:(a=t.effectEasing)==null?uT:a,panoPicture:{panoId:o,map:c,mapSize:u,mapHistogram:new l.Vector4().fromArray(f.toArray()),matrix:s.matrix.clone().premultiply(s.work.transform),zoom:1,gainmap:r},position:s.position.clone().applyMatrix4(s.work.transform),fixCameraTransform:new l.Matrix4};p.panoPicture&&this.panoPictureObserverMap.set(p.panoPicture,s),this.doMoveToPano(e,p,t)}}),onError:n=>{let r=Object.assign(Object.assign(Object.assign({},e),{mode:this.mode}),xC(this.camera.pose));this.emit(`pano.error`,$(`pano.error`,{error:n,userAction:this.userAction,options:t,prevPano:this.currentPano,progress:0,state:r})),this.emit(`pano.cancel`,$(`pano.cancel`,{error:n,userAction:this.userAction,options:t,prevPano:this.currentPano,progress:0,state:r})),this.emit(`error`,n),t.moveCancelCallback&&t.moveCancelCallback()}};let C=this.panoMeshes.get(o);C&&C.tap&&C.tap();let w=this.textureLoader.loadCubeTexture(p,{imageURL:{transform:d,options:f},format:l.RGBAFormat,viaAjax:!0,fetcher:vy(this.fiveId,s.work)},void 0,void 0,t=>{var n,r;this.emit(`pano.texture.progress`,$(`pano.texture.progress`,{error:null,progress:t,meta:null,pano:e})),((n=this.pendingTextureTask)==null?void 0:n.hash)===_&&((r=this.panoMeshes.get(o))==null||r.setProgress(t))},this.renderer),T=h&&m?Promise.all([vy(this.fiveId,s.work).ajax(h,{responseType:`text`}).then(e=>Wt(JSON.parse(e.body))),this.textureLoader.loadCubeTexture(m,{imageURL:{transform:d,options:f},format:l.RGBAFormat,colorSpace:l.NoColorSpace,viaAjax:!0,fetcher:vy(this.fiveId,s.work)},void 0,void 0,void 0,this.renderer)]).then(([e,t])=>({config:e,map:t.body})):Promise.resolve(void 0),E=Promise.resolve().then(()=>_C(y)).then(()=>null).catch(e=>lT(e));Promise.all([w,T,E]).then(([t,n,r])=>{var i,a,s,c;if(this.pending.delete(v),r){t.body.dispose(),((i=this.pendingTextureTask)==null?void 0:i.hash)===_&&(this.pendingTextureTask.onError(r),this.pendingTextureTask=void 0,(a=this.panoMeshes.get(o))==null||a.setProgress(0));return}((s=this.pendingTextureTask)==null?void 0:s.hash)===_?(this.pendingTextureTask.onLoad(t,n?{map:n.map,cfg:n.config}:void 0),this.pendingTextureTask=void 0,(c=this.panoMeshes.get(o))==null||c.setProgress(0)):t.body.dispose(),this.emit(`pano.texture.success`,$(`pano.texture.success`,{error:null,progress:1,meta:t.meta,pano:e}))}).catch(t=>{var n,r;this.pending.delete(v),((n=this.pendingTextureTask)==null?void 0:n.hash)===_&&(this.pendingTextureTask.onError(t),this.pendingTextureTask=void 0,(r=this.panoMeshes.get(o))==null||r.setProgress(0)),this.emit(`pano.texture.error`,$(`pano.texture.error`,{error:t,progress:0,meta:null,pano:e})),this.emit(`error`,t)}),this.emit(`pano.texture.load`,$(`pano.texture.load`,{error:null,progress:0,meta:null,pano:e}))}initAnimation(){return this.destroyed?Promise.resolve():new Promise(t=>{let{duration:n,effect:r,userAction:i}=this.initial;this.userAction=i;let a=e.initAnimationEndState(this),o={workCode:a.workCode,panoIndex:a.panoIndex},s={modelAlpha:0},c={perspToOrtho:0},l=!1;this.moveToPano(o,{longitude:a.longitude,latitude:a.latitude,fov:a.fov,effect:r,duration:n,moveStartCallback:e=>{l=!0,this.perspToOrthoMotion.set(c,n).catch(K),this.modelAlphaMotion.setKeyframes([{progress:0,value:Object.assign({},this.modelAlphaMotion.value)},{progress:.6,value:Object.assign({},this.modelAlphaMotion.value)},{progress:1,value:s}],n).catch(K),this.emit(`initAnimation.start`,$(`initAnimation.start`,{state:e,userAction:this.userAction}))},moveEndCallback:e=>{this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:e,userAction:this.userAction})),this.initAnimationed=!0,t()},moveCancelCallback:()=>{let e=Object.assign(Object.assign(Object.assign({},o),{mode:this.mode}),xC(this.camera.pose));l===!1&&this.emit(`initAnimation.start`,$(`initAnimation.start`,{state:e,userAction:this.userAction})),this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:e,userAction:this.userAction})),this.initAnimationed=!0,t()}},i)})}panoResourceFromLocationMotionKeyframe(e){return this.panoResources[e.key]}locationMotionKeyframesLength(e){let t=0;for(let n=1;n<e.length;n++){let r=this.panoResourceFromLocationMotionKeyframe(e[n-1]).position,i=this.panoResourceFromLocationMotionKeyframe(e[n]).position,a=r.distanceTo(i)*(e[n].value.count-e[n-1].value.count);t+=a}return t}doMoveToPano(e,t,n={}){var r,i,a,o,s,c,u,d,f,p,m;let h=G(),g=Ft();this.panoResources[g]=t;let _,v,y;if(this.locationMotion.ended){let[e,n]=this.locationMotion.getKeyFrameSegment(h),i=this.locationMotion.value,a=((r=this.panoResourceFromLocationMotionKeyframe(n))==null?this.camera:r).position,o=t.position;_=Math.max(a.distanceTo(o),1),v=[{key:n.key,progress:0,value:Object.assign(Object.assign({},i),{count:0})},{key:g,progress:1,value:{distance:0,count:1}}],y=0}else{let[e,n]=this.locationMotion.getKeyFrameSegment(h),r=this.locationMotion.value,i=this.panoResourceFromLocationMotionKeyframe(e).position,a=this.panoResourceFromLocationMotionKeyframe(n).position,o=t.position,s=n.value.count-r.count,c=Math.max(i.distanceTo(a),1)*s;_=c+Math.max(a.distanceTo(o),1),v=[{key:e.key,progress:0,value:Object.assign({},r)},{key:n.key,progress:c/_,value:n.value},{key:g,progress:1,value:{count:n.value.count+1,distance:0}}];let l=this.locationMotionKeyframesLength(this.locationMotion.keyframes),u=this.locationMotionKeyframesLength(v);y=l===0||l===0?0:this.locationMotion.getProgressVelocity(h)*l/u}let b=t.effect===`instant`?0:this.calculateMovingDuration(n.duration,t.effect===`fly`||t.effect===`model`?_:0),x={longitude:n.longitude,latitude:n.latitude,fov:n.fov},S=Object.assign(Object.assign({},e),{mode:this.mode,longitude:(i=x.longitude)==null?this.camera.pose.longitude:i,latitude:(a=x.latitude)==null?this.camera.pose.latitude:a,fov:(o=x.fov)==null?this.camera.pose.fov:o,offset:t.position.clone(),distance:this.camera.pose.distance}),C=this.currentPano;if(this.emit(`pano.moveTo`,$(`pano.moveTo`,{options:n,prevPano:C,progress:0,state:S,userAction:this.userAction,error:null})),n.moveStartCallback&&n.moveStartCallback(S),this.videoTexture&&this.videoTexture.image instanceof HTMLVideoElement&&this.videoTexture.image.getAttribute(`src`)&&(this.videoTexture.image.pause(),this.videoTexture.image.removeAttribute(`uuid`),this.videoTexture.image.removeAttribute(`src`),this.videoTexture.image.oncanplay=K,this.videoTexture.needsUpdate=!0),this.panoVideo.setMaterial(null),t.effect===`fly`||t.effect===`model`)this.cameraMotion.set(x,b).catch(K);else{let e=_a({longitude:this.cameraMotion.value.longitude,latitude:this.cameraMotion.value.latitude}),n=_a({longitude:(s=x.longitude)==null?this.cameraMotion.value.longitude:s,latitude:(c=x.latitude)==null?this.cameraMotion.value.latitude:c}),r=new l.Object3D;r.lookAt(e);let i=new l.Matrix4().makeRotationFromQuaternion(r.quaternion);r.lookAt(n);let a=new l.Matrix4().makeRotationFromQuaternion(r.quaternion),o=i.clone().invert().premultiply(a),h=this.cameraMotion.value.fov,g=(u=x.fov)==null?this.cameraMotion.value.fov:u,_=1;t.effect===`zoomin`?_=1.5:t.effect===`zoomout`&&(_=.4);let y=H(g*_,1,170);for(let e=0;e<v.length-1;e++){let t=v[e].key;if(t){let e=this.panoResources[t];e&&(e.fixCameraTransform.copy(o),e.panoPicture&&(e.panoPicture.zoom=Math.tan(y/2/180*Math.PI)/Math.tan(h/2/180*Math.PI)))}}this.cameraMotion.setKeyframes([{progress:0,value:{longitude:this.cameraMotion.value.longitude,latitude:this.cameraMotion.value.latitude,fov:this.cameraMotion.value.fov}},{progress:0,value:{longitude:(d=x.longitude)==null?this.cameraMotion.value.longitude:d,latitude:(f=x.latitude)==null?this.cameraMotion.value.latitude:f,fov:y}},{progress:1,value:{longitude:(p=x.longitude)==null?this.cameraMotion.value.longitude:p,latitude:(m=x.latitude)==null?this.cameraMotion.value.latitude:m,fov:g}}],b).catch(K)}this.locationMotion.setKeyframes(v,b,y).then(()=>{for(let e of this.modelScene.children)e instanceof Ly&&e.show();let t=Object.assign(Object.assign({},e),{mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance});this.emit(`pano.arrived`,$(`pano.arrived`,{options:n,prevPano:C,progress:1,state:t,userAction:this.userAction,error:null})),n.moveEndCallback&&n.moveEndCallback(t);let r=this.works.getObserver(e);if(r&&r.images.video&&this.videoTexture&&this.videoTexture.image instanceof HTMLVideoElement){let e={map:this.videoTexture,size:r.images.video.size.clone(),matrix:r.images.video.matrix.clone(),panoMatrix:r.matrix.clone().premultiply(r.work.transform),alpha:1},t=Ft(),n=this.videoTexture.image;n.setAttribute(`uuid`,t),n.oncanplay=K,n.ontimeupdate=K,mw().then(i=>{i&&r.images.video&&n.getAttribute(`uuid`)===t&&(n.oncanplay=()=>{n.oncanplay=K,n.play()},n.ontimeupdate=()=>{n.currentTime>.5&&(n.ontimeupdate=K,this.panoVideo.setMaterial(e))},n.src=r.images.video.source)}).catch((()=>{n.removeAttribute(`uuid`)}))}else{let e=this.videoTexture.image;e.removeAttribute(`uuid`),e.oncanplay=K,e.ontimeupdate=K}},()=>{this.emit(`pano.cancel`,$(`pano.cancel`,{options:n,prevPano:C,progress:0,state:S,userAction:this.userAction,error:null})),n.moveCancelCallback&&n.moveCancelCallback()})}getForwardObserverOrNot(e,t){let n=this.works.getObserver(this.currentPano);if(!n)return null;let r=t==null?new l.Raycaster(e.position.clone(),e.getWorldDirection(new l.Vector3)):t;r.params.Points={threshold:.1},r.firstHitOnly=!0,r.floorIndex=-1;let i=n.standingPosition.clone().applyMatrix4(n.work.transform);if(n.position.clone().applyMatrix4(n.work.transform).distanceTo(r.ray.origin)>1){let e=new l.Raycaster(r.ray.origin,new l.Vector3(0,-1,0));e.firstHitOnly=r.firstHitOnly,e.floorIndex=r.floorIndex;let[t]=this.modelScene.intersectRaycaster(e);t&&t.distance<=2?i.copy(t.point):i.copy(r.ray.origin).add(new l.Vector3(0,-1.5,0))}let[a]=this.modelScene.intersectRaycaster(r),o=(a?a.point:r.ray.origin.clone().add(r.ray.direction.clone().normalize().multiplyScalar(3))).clone().sub(i).normalize();if(o.length()===0)return null;let s=n.work.observers,c=n.accessibleNodes.filter(t=>{if(t===this.currentPano.panoIndex&&n.work.workCode===this.currentPano.workCode)return!1;let r=s[t];if(!r)return!1;let i=r.standingPosition.clone().applyMatrix4(r.work.transform).project(e);return Math.abs(i.z)>1||Math.abs(i.x)>1||Math.abs(i.y)>1?!1:r.loadable||r.active}),u=new Map,d=c.slice().sort((e,t)=>{let n=s[e],r=u.get(n);r===void 0&&(r=fT.copy(n.standingPosition).applyMatrix4(n.work.transform).distanceTo(i),u.set(n,r));let a=s[t],o=u.get(a);return o===void 0&&(o=fT.copy(a.standingPosition).applyMatrix4(a.work.transform).distanceTo(i),u.set(a,o)),r-o});u.clear();for(let e of[Math.PI/8,Math.PI/6,Math.PI/4,Math.PI/3])for(let t of d){let n=s[t];if(n){let t=fT.copy(n.standingPosition).applyMatrix4(n.work.transform).sub(i);if(t&&t.length()!==0&&o.angleTo(t)<e)return n}}let f=null;if(t){let n=t.ray.intersectBox(this.modelScene.boundingBox,fT);n&&(n.project(e),Math.abs(n.z)<=1&&(f=n.clone()))}else f=new l.Vector3(0,0,0);if(f){let t=n.accessibleNodes.filter(t=>{if(t===this.currentPano.panoIndex&&n.work.workCode===this.currentPano.workCode)return!1;let r=s[t];if(!r)return!1;let i=r.position.clone().applyMatrix4(r.work.transform).project(e);return Math.abs(i.z)>1||Math.abs(i.x)>1||Math.abs(i.y)>1?!1:r.loadable||r.active}),r=new Map,i=t.slice().sort((t,n)=>{let i=s[t],a=r.get(i);a===void 0&&(a=fT.copy(i.position).applyMatrix4(i.work.transform).distanceTo(e.position),r.set(i,a));let o=s[n],c=r.get(o);return c===void 0&&(c=fT.copy(o.position).applyMatrix4(o.work.transform).distanceTo(e.position),r.set(o,c)),a-c});r.clear();for(let t of i){let n=s[t];if(n){let t=fT.copy(n.position).applyMatrix4(n.work.transform);if(t.project(e),Math.abs(t.z)>1)continue;if(Math.pow(f.x-t.x,2)+Math.pow(f.y-t.y,2)<Math.pow(.4,2))return n}}}return null}onTapGesture(e){var t;if(this.userAction=e.userAction,this.stopMomentumMovement(),!this.initAnimationed)return;let n=e.center.raycaster;n.floorIndex=-1;let r=this.camera.getDirection(new l.Vector3).setY(0),i=null,a=this.works.getObserver(this.currentPano);if(!a)return;let o=a.work.observers,s=a.accessibleNodes.filter(e=>{if(e===this.currentPano.panoIndex&&a.work.workCode===this.currentPano.workCode)return!1;let t=o[e];return!t||fT.copy(t.position).applyMatrix4(t.work.transform).distanceTo(this.camera.position)>this.maxAccessibleDistance?!1:t.loadable||t.active}),[c]=this.modelScene.intersectRaycaster(n);if(c){let[e,n]=nm(s,e=>{let t=o[e];return t?fT.copy(t.standingPosition).applyMatrix4(t.work.transform).distanceTo(c.point):1/0},!0);typeof e==`number`&&n<this.panoTapTriggerRadius&&(i=(t=o[e])==null?null:t)}if(i||(i=this.getForwardObserverOrNot(this.camera,n)),i&&i.panoId===gb(this.currentPano)&&(i=null),i&&!this.locationMotion.ended){for(let e of this.locationMotion.keyframes)if(this.panoResourceFromLocationMotionKeyframe(e).panoId===i.panoId){i=null;break}}if(!i)this.emit(`gesture.tap`,e),e.defaultPrevented||this.locationMotion.ended===!0&&this.cameraBounce();else{let t={},n=Math.PI/6,o=Math.PI/12,s=i.position.clone().applyMatrix4(i.work.transform).setY(0).sub(a.position.clone().applyMatrix4(i.work.transform).setY(0)).normalize(),c=[],l=[],u=[],d=i.work.observers;for(let e of i.accessibleNodes){if(i.panoIndex===e||e===this.currentPano.panoIndex&&i.work.workCode===this.currentPano.workCode)continue;let t=d[e];if(!t)continue;let r=t.position.clone().applyMatrix4(t.work.transform).sub(i.position.clone().applyMatrix4(i.work.transform)).setY(0).normalize();s.angleTo(r)<n&&u.push(r)}let[f]=(u.length>0?u:[...c,...l]).slice().sort((e,t)=>e.angleTo(s)-t.angleTo(s));if(f&&f.angleTo(r)>o&&(t.longitude=Math.atan2(-f.x,-f.z)),this.cameraMotion.value.latitude<-Math.PI/4){let n=e.state.fov;t.latitude=H(0,H(typeof this.minLatitude==`function`?this.minLatitude(n):this.minLatitude,-Math.PI/2,Math.PI/2),H(typeof this.maxLatitude==`function`?this.maxLatitude(n):this.maxLatitude,-Math.PI/2,Math.PI/2))}let p=Object.assign({},e.state);if(p.workCode=i.work.workCode,p.panoIndex=i.panoIndex,t.longitude!==void 0&&(p.longitude=t.longitude),t.latitude!==void 0&&(p.latitude=t.latitude),t.fov!==void 0&&(p.fov=t.fov),p.distance=0,p.offset=i.position.clone(),e.state=p,this.emit(`gesture.tap`,e),!e.defaultPrevented){if(this.emit(`pano.select`,$(`pano.select`,{prevPano:this.currentPano,state:p,userAction:e.userAction,options:t,progress:0,error:null})),i&&!i.active){let e=gb({panoIndex:i.panoIndex,workCode:i.work.workCode}),t=this.panoMeshes.get(e);t&&(t.setDisabled(!1),t.setLoading(!0))}i&&i.active&&this.emit(`pano.request`,$(`pano.request`,{userAction:e.userAction,prevPano:this.currentPano,progress:0,state:p,options:t,error:null}))}}}},gT=Math.PI/180,_T=180/Math.PI,vT=.001,yT=1,bT=(()=>{let e=typeof navigator<`u`&&/iPad|iPhone|iPod/.test(navigator.platform);return()=>e})(),xT=(()=>{let e=typeof navigator<`u`&&/^((?!chrome|android).)*safari/i.test(navigator.userAgent);return()=>e})(),ST=(()=>{let e=typeof navigator<`u`&&navigator.userAgent.indexOf(`Firefox`)!==-1&&navigator.userAgent.indexOf(`Android`)!==-1;return()=>e})(),CT=(()=>{let e=typeof navigator<`u`?navigator.userAgent.match(/.*Chrome\/([0-9]+)/):null,t=e?parseInt(e[1],10):null;return()=>t})(),wT=(()=>{let e=!1;if(CT()===65){let t=typeof navigator<`u`?navigator.userAgent.match(/.*Chrome\/([0-9\.]*)/):null;if(t){let[n,r,i,a]=t[1].split(`.`);e=parseInt(i,10)===3325&&parseInt(a,10)<148}}return()=>e})(),TT=(()=>{let e=bT()&&xT()&&typeof navigator<`u`&&navigator.userAgent.indexOf(`13_4`)!==-1;return()=>e})(),ET=(()=>{let e=typeof navigator<`u`&&navigator.userAgent.indexOf(`R7 Build`)!==-1;return()=>e})();function DT(){let e=typeof window<`u`&&(window.orientation==90||window.orientation==-90);return ET()?!e:e}function OT(e){return!(isNaN(e)||e<=vT||e>yT)}function kT(e){return e.w>1?0:2*Math.acos(e.w)}var AT=(()=>{let e={};return(t,n)=>{e[t]===void 0&&(console.warn(`cardboard: `+n),e[t]=!0)}})();function jT(e){let t,n=e.indexOf(`://`);t=n===-1?0:n+3;let r=e.indexOf(`/`,t);return r===-1&&(r=e.length),e.substring(0,r)}function MT(){if(typeof window>`u`||typeof document>`u`)return!1;let e=window.self!==window.top,t=jT(document.referrer),n=jT(window.location.href);return e&&t!==n}var NT=(()=>{function e(e,t,n){let r=t?t[0]:0,i=t?t[1]:0,a=t?t[2]:0,o=t?t[3]:1,s=r+r,c=i+i,l=a+a,u=r*s,d=r*c,f=r*l,p=i*c,m=i*l,h=a*l,g=o*s,_=o*c,v=o*l;return e[0]=1-(p+h),e[1]=d+v,e[2]=f-_,e[3]=0,e[4]=d-v,e[5]=1-(u+h),e[6]=m+g,e[7]=0,e[8]=f+_,e[9]=m-g,e[10]=1-(u+p),e[11]=0,e[12]=n?n[0]:0,e[13]=n?n[1]:0,e[14]=n?n[2]:0,e[15]=1,e}function t(e,t,n){let r=n[0],i=n[1],a=n[2],o,s,c,l,u,d,f,p,m,h,g,_;return t===e?(e[12]=t[0]*r+t[4]*i+t[8]*a+t[12],e[13]=t[1]*r+t[5]*i+t[9]*a+t[13],e[14]=t[2]*r+t[6]*i+t[10]*a+t[14],e[15]=t[3]*r+t[7]*i+t[11]*a+t[15]):(o=t[0],s=t[1],c=t[2],l=t[3],u=t[4],d=t[5],f=t[6],p=t[7],m=t[8],h=t[9],g=t[10],_=t[11],e[0]=o,e[1]=s,e[2]=c,e[3]=l,e[4]=u,e[5]=d,e[6]=f,e[7]=p,e[8]=m,e[9]=h,e[10]=g,e[11]=_,e[12]=o*r+u*i+m*a+t[12],e[13]=s*r+d*i+h*a+t[13],e[14]=c*r+f*i+g*a+t[14],e[15]=l*r+p*i+_*a+t[15]),e}function n(e,t){let n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6],l=t[7],u=t[8],d=t[9],f=t[10],p=t[11],m=t[12],h=t[13],g=t[14],_=t[15],v=n*s-r*o,y=n*c-i*o,b=n*l-a*o,x=r*c-i*s,S=r*l-a*s,C=i*l-a*c,w=u*h-d*m,T=u*g-f*m,E=u*_-p*m,D=d*g-f*h,O=d*_-p*h,k=f*_-p*g,A=v*k-y*O+b*D+x*E-S*T+C*w;return A?(A=1/A,e[0]=(s*k-c*O+l*D)*A,e[1]=(i*O-r*k-a*D)*A,e[2]=(h*C-g*S+_*x)*A,e[3]=(f*S-d*C-p*x)*A,e[4]=(c*E-o*k-l*T)*A,e[5]=(n*k-i*E+a*T)*A,e[6]=(g*b-m*C-_*y)*A,e[7]=(u*C-f*b+p*y)*A,e[8]=(o*O-s*E+l*w)*A,e[9]=(r*E-n*O-a*w)*A,e[10]=(m*S-h*b+_*v)*A,e[11]=(d*b-u*S-p*v)*A,e[12]=(s*T-o*D-c*w)*A,e[13]=(n*D-r*T+i*w)*A,e[14]=(h*y-m*x-g*v)*A,e[15]=(u*x-d*y+f*v)*A,e):null}return(r,i,a)=>{e(r,i),a&&t(r,r,a),n(r,r)}})(),PT=class{constructor(e=new l.Vector3,t=0){this.sample=e,this.timestampS=t}set(e,t){this.sample=e,this.timestampS=t}copy(e){this.set(e.sample,e.timestampS)}},FT=class{constructor(e,t){this.kFilter=e,this.isDebug=t,this.currentAccelMeasurement=new PT,this.currentGyroMeasurement=new PT,this.previousGyroMeasurement=new PT,bT()?this.filterQ=new l.Quaternion(-1,0,0,1):this.filterQ=new l.Quaternion(1,0,0,1),this.previousFilterQ=new l.Quaternion,this.previousFilterQ.copy(this.filterQ),this.accelQ=new l.Quaternion,this.isOrientationInitialized=!1,this.estimatedGravity=new l.Vector3,this.measuredGravity=new l.Vector3,this.gyroIntegralQ=new l.Quaternion}addAccelMeasurement(e,t){this.currentAccelMeasurement.set(e,t)}addGyroMeasurement(e,t){this.currentGyroMeasurement.set(e,t),OT(t-this.previousGyroMeasurement.timestampS)&&this.run_(),this.previousGyroMeasurement.copy(this.currentGyroMeasurement)}getOrientation(){return this.filterQ}run_(){if(!this.isOrientationInitialized){this.accelQ=this.accelToQuaternion_(this.currentAccelMeasurement.sample),this.previousFilterQ.copy(this.accelQ),this.isOrientationInitialized=!0;return}let e=this.currentGyroMeasurement.timestampS-this.previousGyroMeasurement.timestampS,t=this.gyroToQuaternionDelta_(this.currentGyroMeasurement.sample,e);this.gyroIntegralQ.multiply(t),this.filterQ.copy(this.previousFilterQ),this.filterQ.multiply(t);let n=new l.Quaternion;n.copy(this.filterQ),n.invert(),this.estimatedGravity.set(0,0,-1),this.estimatedGravity.applyQuaternion(n),this.estimatedGravity.normalize(),this.measuredGravity.copy(this.currentAccelMeasurement.sample),this.measuredGravity.normalize();let r=new l.Quaternion;r.setFromUnitVectors(this.estimatedGravity,this.measuredGravity),r.invert(),this.isDebug&&console.log(`Delta: %d deg, G_est: (%s, %s, %s), G_meas: (%s, %s, %s)`,_T*kT(r),this.estimatedGravity.x.toFixed(1),this.estimatedGravity.y.toFixed(1),this.estimatedGravity.z.toFixed(1),this.measuredGravity.x.toFixed(1),this.measuredGravity.y.toFixed(1),this.measuredGravity.z.toFixed(1));let i=new l.Quaternion;i.copy(this.filterQ),i.multiply(r),this.filterQ.slerp(i,1-this.kFilter),this.previousFilterQ.copy(this.filterQ)}accelToQuaternion_(e){let t=new l.Vector3;t.copy(e),t.normalize();let n=new l.Quaternion;return n.setFromUnitVectors(new l.Vector3(0,0,-1),t),n.invert(),n}gyroToQuaternionDelta_(e,t){let n=new l.Quaternion,r=new l.Vector3;return r.copy(e),r.normalize(),n.setFromAxisAngle(r,e.length()*t),n}},IT=class{constructor(e,t){this.predictionTimeS=e,this.isDebug=t,this.previousQ=new l.Quaternion,this.previousTimestampS=null,this.deltaQ=new l.Quaternion,this.outQ=new l.Quaternion}getPrediction(e,t,n){if(!this.previousTimestampS)return this.previousQ.copy(e),this.previousTimestampS=n,e;let r=new l.Vector3;r.copy(t),r.normalize();let i=t.length();if(i<gT*20)return this.isDebug&&console.log(`Moving slowly, at %s deg/s: no prediction`,(_T*i).toFixed(1)),this.outQ.copy(e),this.previousQ.copy(e),this.outQ;let a=i*this.predictionTimeS;return this.deltaQ.setFromAxisAngle(r,a),this.outQ.copy(this.previousQ),this.outQ.multiply(this.deltaQ),this.previousQ.copy(e),this.previousTimestampS=n,this.outQ}},LT=class{constructor(e){this.coefficients=e}distortInverse(e){let t=0,n=1,r=e-this.distort(t);for(;Math.abs(n-t)>1e-4;){let i=e-this.distort(n),a=n-i*((n-t)/(i-r));t=n,n=a,r=i}return n}distort(e){let t=e*e,n=0;for(let e=0;e<this.coefficients.length;e++)n=t*(n+this.coefficients[e]);return(n+1)*e}},RT=class{constructor(){this.angularAcceleration=null,this.angularVelocity=null,this.linearAcceleration=null,this.linearVelocity=null,this.orientation=null,this.position=null}},zT=class{constructor(){this.leftDegrees=0,this.rightDegrees=0,this.upDegrees=0,this.downDegrees=0}},BT=class{constructor(e,t,n,r){this.viewer={id:`CardboardV1`,label:`Cardboard I/O 2014`,fov:40,interLensDistance:.06,baselineLensDistance:.035,screenLensDistance:.042,distortionCoefficients:[.441,.156],inverseCoefficients:[-.4410035,.42756155,-.4804439,.5460139,-.58821183,.5733938,-.48303202,.33299083,-.17573841,.0651772,-.01488963,.001559834]},this.device={widthMeters:.11,heightMeters:.062,bevelMeters:.004},this.depthNear=.01,this.depthFar=1e4,this.yawOnly=n,this.accelerometer=new l.Vector3,this.gyroscope=new l.Vector3,this.filter=new FT(e,r),this.posePredictor=new IT(t,r),this.isFirefoxAndroid=ST(),this.isIOS=bT();let i=CT();this.isDeviceMotionInRadians=!this.isIOS&&i!==null&&i<66,this.isWithoutDeviceMotion=wT()||TT(),this.filterToWorldQ=new l.Quaternion,bT()?this.filterToWorldQ.setFromAxisAngle(new l.Vector3(1,0,0),Math.PI/2):this.filterToWorldQ.setFromAxisAngle(new l.Vector3(1,0,0),-Math.PI/2),this.inverseWorldToScreenQ=new l.Quaternion,this.worldToScreenQ=new l.Quaternion,this.originalPoseAdjustQ=new l.Quaternion;let a=typeof window<`u`?-window.orientation*Math.PI/180:0;this.originalPoseAdjustQ.setFromAxisAngle(new l.Vector3(0,0,1),a),this.setScreenTransform_(),DT()&&this.filterToWorldQ.multiply(this.inverseWorldToScreenQ),this.resetQ=new l.Quaternion,this.orientationOut_=new Float32Array(4),this.previousTimestampS=Date.now()}getPosition(){return null}getOrientation(){let e;if(this.isWithoutDeviceMotion&&this._deviceOrientationQ){this.deviceOrientationFixQ=this.deviceOrientationFixQ||(function(){let e=new l.Quaternion().setFromAxisAngle(new l.Vector3(0,0,-1),0),t=new l.Quaternion;return typeof window<`u`&&window.orientation===-90?t.setFromAxisAngle(new l.Vector3(0,1,0),Math.PI/-2):t.setFromAxisAngle(new l.Vector3(0,1,0),Math.PI/2),e.multiply(t)})(),this.deviceOrientationFilterToWorldQ=this.deviceOrientationFilterToWorldQ||(function(){let e=new l.Quaternion;return e.setFromAxisAngle(new l.Vector3(1,0,0),-Math.PI/2),e})(),e=this._deviceOrientationQ;let t=new l.Quaternion;return t.copy(e),t.multiply(this.deviceOrientationFilterToWorldQ),t.multiply(this.resetQ),t.multiply(this.worldToScreenQ),t.multiplyQuaternions(this.deviceOrientationFixQ,t),this.yawOnly&&(t.x=0,t.z=0,t.normalize()),this.orientationOut_[0]=t.x,this.orientationOut_[1]=t.y,this.orientationOut_[2]=t.z,this.orientationOut_[3]=t.w,this.orientationOut_}else{let t=this.filter.getOrientation();e=this.posePredictor.getPrediction(t,this.gyroscope,this.previousTimestampS)}let t=new l.Quaternion;return t.copy(this.filterToWorldQ),t.multiply(this.resetQ),t.multiply(e),t.multiply(this.worldToScreenQ),this.yawOnly&&(t.x=0,t.z=0,t.normalize()),this.orientationOut_[0]=t.x,this.orientationOut_[1]=t.y,this.orientationOut_[2]=t.z,this.orientationOut_[3]=t.w,this.orientationOut_}getPose(){let e=new RT;return e.orientation=this.getOrientation(),e}resetPose(){this.resetQ.copy(this.filter.getOrientation()),this.resetQ.x=0,this.resetQ.y=0,this.resetQ.z*=-1,this.resetQ.normalize(),DT()&&this.resetQ.multiply(this.inverseWorldToScreenQ),this.resetQ.multiply(this.originalPoseAdjustQ)}getFrameData(e){let t=this.getOrientation(),n=this.getEyeOffset(),r=this.getEyeProjectionMatrix();return e.pose.angularAcceleration=null,e.pose.angularVelocity=null,e.pose.linearAcceleration=null,e.pose.linearVelocity=null,e.pose.orientation=t,e.pose.position=null,e.timestamp=this.previousTimestampS,e.leftProjectionMatrix.set(r.left),e.rightProjectionMatrix.set(r.right),NT(e.leftViewMatrix,t,n.left),NT(e.rightViewMatrix,t,n.right),e}start(){if(typeof window>`u`)return()=>{};let e=this.onDeviceMotion_.bind(this),t=this.onOrientationChange_.bind(this),n=this.onMessage_.bind(this),r=this.onDeviceOrientation_.bind(this);return bT()&&MT()&&window.addEventListener(`message`,n),window.addEventListener(`orientationchange`,t),this.isWithoutDeviceMotion?window.addEventListener(`deviceorientation`,r):window.addEventListener(`devicemotion`,e),()=>{window.removeEventListener(`devicemotion`,e),window.removeEventListener(`deviceorientation`,t),window.removeEventListener(`orientationchange`,t),window.removeEventListener(`message`,n)}}getEyeOffset(){return{left:[-this.viewer.interLensDistance*.5,0,0],right:[this.viewer.interLensDistance*.5,0,0]}}getEyeProjectionMatrix(){let e=this.getEyeFieldOfView(),t=this.depthNear,n=this.depthFar,r={left:[],right:[]};{let i=e.left.upDegrees*gT,a=e.left.downDegrees*gT,o=e.left.leftDegrees*gT,s=e.left.rightDegrees*gT,c=2/(o+s),l=2/(i+a);r.left[0]=c,r.left[1]=0,r.left[2]=0,r.left[3]=0,r.left[4]=0,r.left[5]=l,r.left[6]=0,r.left[7]=0,r.left[8]=-((o-s)*c*.5),r.left[9]=(i-a)*l*.5,r.left[10]=n/(t-n),r.left[11]=-1,r.left[12]=0,r.left[13]=0,r.left[14]=n*t/(t-n),r.left[15]=0}{let i=e.right.upDegrees*gT,a=e.right.downDegrees*gT,o=e.right.leftDegrees*gT,s=e.right.rightDegrees*gT,c=2/(o+s),l=2/(i+a);r.right[0]=c,r.right[1]=0,r.right[2]=0,r.right[3]=0,r.right[4]=0,r.right[5]=l,r.right[6]=0,r.right[7]=0,r.right[8]=-((o-s)*c*.5),r.right[9]=(i-a)*l*.5,r.right[10]=n/(t-n),r.right[11]=-1,r.right[12]=0,r.right[13]=0,r.right[14]=n*t/(t-n),r.right[15]=0}return r}getEyeFieldOfView(){let e=this.viewer,t=this.device,n=new LT(e.distortionCoefficients),r=e.screenLensDistance,i=(t.widthMeters-e.interLensDistance)/2,a=e.interLensDistance/2,o=e.baselineLensDistance-t.bevelMeters,s=t.heightMeters-o,c=_T*Math.atan(n.distort(i/r)),l=_T*Math.atan(n.distort(a/r)),u=_T*Math.atan(n.distort(o/r)),d=_T*Math.atan(n.distort(s/r)),f=new zT,p=new zT;return f.leftDegrees=Math.min(c,e.fov),f.rightDegrees=Math.min(l,e.fov),f.downDegrees=Math.min(u,e.fov),f.upDegrees=Math.min(d,e.fov),p.leftDegrees=f.rightDegrees,p.rightDegrees=f.leftDegrees,p.upDegrees=f.upDegrees,p.downDegrees=f.downDegrees,{left:f,right:p}}onDeviceOrientation_(e){this._deviceOrientationQ=this._deviceOrientationQ||new l.Quaternion;let{alpha:t,beta:n,gamma:r}=e;t=(t||0)*Math.PI/180,n=(n||0)*Math.PI/180,r=(r||0)*Math.PI/180,this._deviceOrientationQ.setFromEuler(new l.Euler(t,n,-r,`YXZ`))}onDeviceMotion_(e){this.updateDeviceMotion_(e)}updateDeviceMotion_(e){let t=e.accelerationIncludingGravity,n=e.rotationRate,r=e.timeStamp/1e3,i=r-this.previousTimestampS;if(i<0){AT(`fusion-pose-sensor:invalid:non-monotonic`,`Invalid timestamps detected: non-monotonic timestamp from devicemotion`),this.previousTimestampS=r;return}else if(i<=vT||i>yT){AT(`fusion-pose-sensor:invalid:outside-threshold`,`Invalid timestamps detected: Timestamp from devicemotion outside expected range.`),this.previousTimestampS=r;return}t&&(this.accelerometer.set(-t.x,-t.y,-t.z),n&&(ET()?this.gyroscope.set(-n.beta,n.alpha,n.gamma):this.gyroscope.set(n.alpha,n.beta,n.gamma),this.isDeviceMotionInRadians||this.gyroscope.multiplyScalar(Math.PI/180),this.filter.addGyroMeasurement(this.gyroscope,r)),this.filter.addAccelMeasurement(this.accelerometer,r)),this.previousTimestampS=r}onOrientationChange_(){this.setScreenTransform_()}onMessage_(e){let t=e.data;!t||!t.type||t.type.toLowerCase()===`devicemotion`&&this.updateDeviceMotion_(t.deviceMotionEvent)}setScreenTransform_(){switch(this.worldToScreenQ.set(0,0,0,1),typeof window<`u`?window.orientation:0){case 0:break;case 90:this.worldToScreenQ.setFromAxisAngle(new l.Vector3(0,0,1),-Math.PI/2);break;case-90:this.worldToScreenQ.setFromAxisAngle(new l.Vector3(0,0,1),Math.PI/2);break;case 180:break}this.inverseWorldToScreenQ.copy(this.worldToScreenQ),this.inverseWorldToScreenQ.invert()}},VT=[0,0,.5,1],HT=[.5,0,.5,1],UT=class{constructor(e){this.renderer=e,this.sensor=new BT(.98,.04,!1,!1),this.scale=1,this.cameraL=new l.PerspectiveCamera,this.cameraR=new l.PerspectiveCamera;let t=this.sensor.start();this.dispose=()=>{let e=this.renderer.getSize(new l.Vector2);this.renderer.setScissor(0,0,e.width,e.height),this.renderer.setViewport(0,0,e.width,e.height),this.renderer.setScissorTest(!1),t()}}render(e,t){let n=this.renderer.getSize(new l.Vector2);if(n.width>n.height){var r=e.matrixWorldAutoUpdate;r&&(e.updateMatrixWorld(),e.matrixWorldAutoUpdate=!1);let i={x:Math.round(n.width*VT[0]),y:Math.round(n.height*VT[1]),width:Math.round(n.width*VT[2]),height:Math.round(n.height*VT[3])},a={x:Math.round(n.width*HT[0]),y:Math.round(n.height*HT[1]),width:Math.round(n.width*HT[2]),height:Math.round(n.height*HT[3])};this.renderer.setScissorTest(!0),this.renderer.autoClear&&this.renderer.clear(),t.parent===null&&t.updateMatrixWorld(),t.matrixWorld.decompose(this.cameraL.position,this.cameraL.quaternion,this.cameraL.scale),t.matrixWorld.decompose(this.cameraR.position,this.cameraR.quaternion,this.cameraR.scale);let o=this.sensor.getEyeOffset();this.cameraL.translateOnAxis(new l.Vector3().fromArray(o.left),this.scale),this.cameraR.translateOnAxis(new l.Vector3().fromArray(o.right),this.scale);let s=this.sensor.getEyeProjectionMatrix();this.cameraL.projectionMatrix.fromArray(s.left),this.cameraR.projectionMatrix.fromArray(s.right),this.renderer.setViewport(i.x,i.y,i.width,i.height),this.renderer.setScissor(i.x,i.y,i.width,i.height),this.renderer.render(e,this.cameraL),this.renderer.setViewport(a.x,a.y,a.width,a.height),this.renderer.setScissor(a.x,a.y,a.width,a.height),this.renderer.render(e,this.cameraR),this.renderer.setViewport(0,0,n.width,n.height),this.renderer.setScissor(0,0,n.width,n.height),this.renderer.setScissorTest(!1),r&&(e.matrixWorldAutoUpdate=!0)}else this.renderer.render(e,t)}dispose(){}},WT=`data:image/png;base64,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`,GT=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK4AAAClCAMAAADyFTYfAAAC+lBMVEUAAABISEhKSkpGRkZERERCQkJOTk45OTlBQUFQUFBSUlJUVFQ7OztYWFg/Pz8/Pz9aWlpkZGQ3NzdcXFxeXl5MTExHR0dhYWFJSUk9PT1WVlZMTEygoKBERERFRUVmZmZQUFA9PT1LS0tra2tPT09ubm5SUlI2NjZXV1czMzOpqalTU1O3t7dVVVVoaGhaWlpqamq1tbWhoaGenp6lpaWurq6ysrJZWVmjo6OgoKBUVFRdXV1cXFyvr6+0tLSwsLCrq6ubm5syMjKbm5twcHCQkJCLi4uGhobLy8uCgoJ9fX1ycnLPz894eHizs7NxcXFgYGCVlZWYmJh7e3umpqa3t7fOzs7JycnFxcWvr6+JiYl0dHRra2uSkpKNjY2IiIi4uLiUlJSsrKx3d3fDw8OHh4eQkJB9fX2dnZ2UlJR/f3++vr6RkZFzc3ODg4OioqKcnJyUlJSCgoJ4eHirq6u4uLh4eHiBgYF2dnaLi4uMjIyjo6OZmZm1tbWwsLCcnJyxsbF6enqAgICwsLC9vb26urqjo6OKioqsrKyWlpaoqKhbW1u2traCgoJ6enqZmZmbm5t+fn6JiYmgoKC0tLS4uLhmZma0tLSYmJhxcXF1dXWlpaWfn5+IiIicnJyzs7Ofn5+xsbGampq7u7vAwMCMjIxgYGChoaGgoKCQkJCOjo5vb2+RkZG1tbWOjo6Hh4d6enq1tbV8fHzGxsZubm5mZmanp6eZmZmvr6+Hh4eTk5Ojo6NwcHCenp6mpqZ6enqlpaWWlpaJiYmlpaVjY2OcnJyKiop9fX1/f3+CgoKlpaV4eHiUlJSIiIixsbGqqqqGhoZxcXGPj4+ysrK1tbWurq63t7eBgYG2tra2tralpaV+fn6enp6tra2EhISZmZmVlZWGhoZycnKhoaHV1dXX19fW1tbZ2dmrq6upqamwsLDa2trU1NSzs7Ovr6+ysrKurq6tra3S0tLGxsa9vb3Q0NDDw8PNzc3BwcG/v7/IyMi6urq4uLi1tbVYe8d+AAAA5HRSTlMA4+Pj4+Dj4OPj4+Pg4+Pg4+Pg4+Pj4OPg4OPg7+Dg4+Dj4OPg4+Dg4ODM4Mzg4+DjzPDwzMzM4MzM4ODgzMzMzMzg7uPMzMz+zMzM/swD4+DNzMz0/vz8+fXNzerMzAr58dPN9fLs7MzMzPn05My3j1w/Lff07+7MLRH77+7u7uVbJfr39PPr6eno6Ofn59W7jl9ZVxAK+ffr6dXVuHNAQCYm/Prx6uff3NLNuaePjX9zc/vq6d/f3NbUyK6rqaeNjXMR6ufc2tG9vLynp4xzWUnn0ry8t6WZemFLNxrRyMjIxGrWwvApAAASsUlEQVR42uzW12tTYRjH8aMQvLDiJDa2aimigqiQ3NjLIjVpTQutrba2FkupthXqIA6caNUaxYUXDlTcWhUVB+LeCxXUGy8EFxlocoxohokJ+Hvfk9Pn4q1By/EYwe9f8OHhd4b0P40qmXfm6vuJV8/Mk/6BVp19XD2Rd+Lq8xIprVu88kY1sEnuCYCltK1k3tbi+kXV8HLsgzpHIuFwnpHSMowA2EXVi7j2wYzA9/j3eLyioiL7lZRuYQTFxcX19fDiuNVtju+sOLio9ayUTmEERZO4lk9hoyUYDALburBXd8ORhkSF/DmN7osRTJoELcJtHzgrgqx43V1TRkYPtOFDQrZI6RFGAKuqrX9RFY1GgV2yYEgGsEqDErKcDs8bRtBcVFTEucDeXxv9FkWBhp4ZiLwNstwu6Z04gkdFPK59uDT+jRXccaG3KYntOK8sl0t/tcXPXhY2N6vahy9aw+EwsI4FRhNL4aoZZPmzpH80gtOFhdA2K9r75V+/htH0w4N6m3h0XF4/WQ5If6tVtx8VshTtpRWHvqJw1FJj6I0ELrT6c2kET1usHdqHzu2xGNNWzcwEFQlTgFb369II3lmtLS2Fire9PGaLgXvwcC9+WOLy6Li6cmkEe6ysFu69lB222aANm2sMLOISVkeuOALrVCsP2NfO6ZGIDbXOzDIoqVjUCTfwUdIvjGDCVGCTt22vskWQ7VBdL4OaOAXSMq5+18UIJkzo4B5fe85ut0cisbXnB6vW1FtAAb24i+c+hRVazp16b3UoZEfbF2YNNhCXsDQF3a+LEZyq5VjluBerQl9CqLKu/5DByEDcVMdFAR22e+D2ydraWlXbvn7Kly/Q2sp3GocIWuG4+nIxgicFKKk9fvSQy8+00xtygOXaX1+uyNV6BLcKOBbhsheX+T0uv99/bukAI7BMK16X3mLicUcEPv457oG9J6cV8Bj28rrJbrfH5Qo5dmUa0U+PS1hEWoGr9QiapqnaguNHK71uaD2rG0YZFWzqKZg61Y74+Ee4JftuvS2FVvHWXpzv9jHtlPEDM3FZgUta8UkjLbj96LpajmBLaWlTUxK7eZ3dh7wux67cTGjVJbB+TUveGs25d7Y9KS0rZdwmaC8frfR5YfXNahvNsHRc1m+9FtAYM8ag7QjelJVBq1z32Hw3qF7fZEvfXI6l4xpTLFf8Lef1mWHWlIsR5JexuHbzcrvPizxVm7JykcKlKYjeVJ+IHmOcZgSuViO4lp+fr2DR+kovuysbQZagRZ1gSStuoRsuqxkXI5jTmM/jXIzAi3w2S98sxLW5xE35iQA4Q3gtmOrMKveTFiNQsQgj4FaMIAfWJJe0qlc4boop1CS12XTdro8gr7ERXN7m9ZU4LJrVNnLYMEFLxyUvaVniFvqhNlA1GEPJvptX8vIa85K35SNANsvQnGGIYclLWjou1YGl1wJ5l2pwXYxgdh6PH3f3crsbny6vHyMAlrTCcUmb+rjEXZHUgvupqyO4Pm5cUgssRuCGFiMYm4NScVP+OIpbIG62mbi/PQIVC+6xNR4vw9osY4bDqnrFKSjRcAVvZw8acbt23f0/SLV7n6aiMAzg8SMkSkwkaPz+SPwqbbHcXAVjpRJ1cFIGAjJqTB1IR+IiyiDRBRZhkYGYuDK4ECb/AAcd/IgObscGk8YAf4Hve96ePj19r+e28eEf+OXJc889bfn04cqlK47LI+CYyYXc+dPCTRpu+uXmiNWq5XrcPx1yl169v0RhLVt5BJypcuE8x3VLSeOqbvVywWUtuO2PIHtJtMxdmzZMpREM5HLQppTLadHWvYlaxz3O+aO4wRFks1mnXX46bq10EvTnOJ2UywmUK1Rwb3bc7tLi+yzFlfuyPoLn5eLV3NVcR+WeONnBFITLWOFutjOClY8jI9kGd21ORjARn+nv7xcutLpcSYArCXAxBs3VI/g6cjlb12YxgkeZfqu1QbsWeza4XEon5V7gdsENj2D1MqVe7vLLxklQzGQyrKVAaxMqFw8a0g73OLjBEQxftrHaphFkBIt29RY4Spv25QK4wF5or903775eHx4erne7PDNe/UV/NIJCRsJY4upyj6XfHBH1imgEXJIKd3PrnyMYHCStlPuAR1C1IxgdGhpq1oIrWJu0m6OHDX25wPG4m8kjKA2SVrgja3O1KoVGcK4wREG5BGZs6BSTBMoVbahccDeJq0fwpVQi7KCdwgMaQZWq3Z6cL1BYK162SrfeoYtyrdfDhk4xlOtryeu1q0YQRYS15V6nEZgqZ6rcY7EFaDngkla3i49oTpv+iVKV67Xrb/fnj1I+KpWEO7xOI+BMxHevFSTYArR6C4JFuekXR30Xg7avL5m79COfz0d1rh2BqRoaQfEatF656lgIXcvDXH2KwZvMXfkWRaSNSHt99mGVsKb6vHyKsNDiQRMt2gUXWmA7vy645frtbjW4i9SslPt5ZrtqKBNxpVgkrea65bZebrxDt4Obo+ai3L5E7ru6NhqcZmqVR8C5xlFab7rhKegHLV2L6frtbglXtJa7fpu1U+WLo0UbT4stoNxcMtfXYrr6Z6kwty9pDIsRdcvaWW52en501Gk5oi0ka9X7V50LwVMsrFVj2LBvBrYSuDRD2tsvCKu4arl40Nq6iqX/zqMvN4q7JdxVovKxwNq5AWC1ViLDtd4WrXih/a+LrmjBjYW7mJfM1kxtsoewvle/Ijih96+N1qaXq7U+d4O4d77lbbfr28ZMVyqVu3eLo6FycYgprTrE2rvcHAl0q8awwlgS3zPm3gJhKbco5zhJZ24GN0fRSgJclNvJp4hWbiztfs/bdulQ2J7ncimMRc5w/Cl45QIradGCm/r61VpwY+EuUbXc7rgxYwR1adIiA5RD2IJg4YXWRbCdlKu3cKPB3SDuCmO53NptbhZSaIGlXOSc4hwIfhUiVl2u/hQRKBftxjIG90J7yOVSdLO+V7CSHpfe0/61HN0GD139UwS0/2r3u32jfTamtkBQR9Va1yv9OS1yyOWs0oa2EFgutMKN69xV+0ajLbxVxXqRZrUUWs6BQwc4vb29x/zLjY+FNjQFcNHuF7uFGdoCtOAOuFyEVheLkFa8kv2cw+Rt99tyF48rWOHaM5enW4ZUtJ5XqGJVWkiBFa5kXz3OG/jPQbXcFi5Z6W/CmHmxetQzVKp+wMLaXq1FjnK6u7t9beLlRrTCjcG1BxmduhW9WnFKUC7ScMpm1Q5IStZWbrfN3nr8LahyKU+auXLRNcYkvRRgBRRBraBKudB6te7rdlyA9+zdw+nq6iKtOhaEGzvub+JGFFNzXEyWmYob3KyTIl6tVgoruOJ1OXiwhRs3ceViLu1Ci6fLST2tgkILbwPqsNA6qkS04FJ22uzYDe4zx40oNeImnwXt70CCdvVeEXAhVVzyco6PjY097rpx5PXGb+JGBC7RzRxYHLHQpjQLK6T7odVQaD2oSKHl9Nx/tGcXx223xGMAF3sNbdZz+lxILfRvc2f2clMUhvGNkzFucOPOrTtD4kJcupArc8oQURQyJZI5U5nKzI1ZQiFTpkLxDyhxZZ91bHPmsbzvWmftd6/1rGWT4zjP58Plr6ffftdwPptHyylI0Al7FVQOkxrczLjLuC+clRZMiI/ZPPCE4dNleX1ne0qCsBVKu4qRodCuKdahDIogY6sQz1iNC8L+iratNNvWa7bCyTKWgS/x6FHTxfrbGAElVMaFXg0pzoOu8Hh5sFYAkTZPjkq/Ca1pV1/oUruwLyiZBdArLLc+p8MLukocDQyqtKuvn2mZcOdskFbW2hzTpxVnXVrsVXARVXBz2o4dO2pc2y6vYUAbecBCT5eHK6hxXk3q4BZBg7hsrsFFUhOcXPS7MRZmgQ1qEFjAfFCkzUk5BpfL5UctZoHg4sYAcB1UjxaXMNAAaAG3r22XUAO8uIShBbCbhUEA5cooAFyXlH5Z3DZZtjQh2rzdAmV40EoKuEIbHVtC6k8EwQzj2nTr1q1zlvVPBjLuUG438nAFaIWzWC5uuFxaO2froEhrFZDhJbCUo1k2RXBjswAONeEhS9+wj/Hi4DKpZkVcgXVwF2XZhIRoPdzQydZDRVyeswaUvrv4tIWHS6wFUEb1abvl6Tg7y7Yl5uNfcvcPDgpdveATBr06xmK1MGQtrgDTk5bNTwZKuxo0RGtIi7wwDNwDo88ptIEFoQ19wehymrUubEgSXa7gFijNX9ADKBZPX3k8VtjGwJAVWMHtzem4lF0wuEM0buR+QzyAjUFeLgsLWxigrcdwurA4DDSt4FK5SycRLtMyrmxiJNE5i4fFPMFezbqAtUpwzhpS+sXpROY+SDSuaVeqRVzoVWhttbKCAS3H2xigr4Y155VejQq7s2xZYnCHcLsKaC0qDFrvrAiPWM4JHuDk4oSc9XCn09Z8JeNyt0aGHl6gWLjf8EB9WpPgZlY4Jb4Gkm5MeyPhmJ+5SVUqkE7gMiZ2pEFnXVx8xAqkdnSBB5zKbLodu5zoEK2RAZ+uQoC2ZDebc3q0QupW6wwDD/f2UqFNzA80kQxQbWgWdI01i7QOKEjroIoH0GyHTVzt03tJPUzLuEpooyeFAmVx0KKySItLwi8esJy348Tdb+inGJaeTXzcVHCjqy1IAL2GN97uoaZQqkMLzW6a/vTVK/qpgBOrkjxsLuGq1HRqElEWeONDNu4Bbr2DyrZftPTZM6LN7jpvHCJYIwM8XRYXDouS6GERcUMS4OgSCV4+o7zqf2A+QyJu6gorEgCtkCItYMITJmMLcEWCZy9f0z/9y07yyhDBNajIG7mMKXMWUIUWQE2sBNlLerPBy2cbtu1MMJp2GLkbmAX0HTvSeLi4L4gfaULWigT0NiTCXWckwGjaYeRuoNnwaiuBBQx79QetA+rhbjrycjTlxxuRAHE1r0pTC+ntEb1eQ6Or3IKKJDYLOs1YoF819eMOSBBqNw19XNfrF8XSd6zYdh6uR4q7rsr5/of0m7FAgiBuH3LXoS2bBbkHfKAJWOClSGtJhfbo7NHfGHb1FZAAwrTa3RLa6NE2uB5gsRoXeiUJFq/WL/L6fucMSoBhWi2DsMIuJnKm4V+5tYCKHuCeq7Jn3Zf3nFEgQSTaBZah0G35p0q4mUXa+AJW33QfnX3oC9PuAgni0bR9VKry5cs5gQGog/uLYv2LLju3RILX+j1e74+BBCW4xEsyWFq49o59DOrhuq0WyoViWYKl9GYswl1wCiT4dZiWZaB2cdDG14Tf23hTKrgvODrls36R1+Qt25M/Dbug2xUFOLEjjaMBbLhKlgTG7Tx98rt3THvsNEpQHi5XP2qOsBxZwkqPto6uYIGwVvaO+qpf5DUeJPgjXJUqBxeURVy53wiLgLPr9u6PGvZQVILyMC3jmnbLP60TWtxwSWBykQSHvn5l2o0swV/ipkoFL2PgIC6o3vwC0CJuu0UL9Hu8vu4iCf4qxGrc7QwiiAW61PiaAFPLlfZC/7H6RV6H97MEDcFN1W9/WifBy0NcwDofmTXiE9NqCRqDO0CpFM40MV6oFou1C1ibRatHjGDahVtJgkZE0w5QqXJoQVko1y3Wpc0lGPOBaceJBA1ql93NSfHyCD9Uil512j97HfnM7/Ea8Wn96UkNQpV2U6V0tUAaXW7jNwYswYxdL94y7VqSoKFhWiMDXnUBaHBwoQT9Prx4Szm3TyRodLupoMJHH5LyK+9es8+l/CKvDytukQQND8FSlFIOreGM0/omiATVapVo12xd0jhExKW5294RAc40RVoftY47cd2LKtMOFwkajzuAeVOlIhfJeKahLyiWJRhLr3Ai2BVzQYKG4lLYXfg8HCSI33a2nTH5OaVWmzYHJGhsdLmDuN2exAonBTzZIuzEUS+ec0ZMBQn+Ea5KlXNI4C/UAO/k6hKwBptJgn8fgmVckgFXML9YEEFLUKMvlqAp0eWyDEAL65dLqyWo6RekTZ2XNCsD6rgpTK/4p3WcrrPH1ghWJGhONC3JoGAkRHH1JKjpNEcCxOV2I8MWyiUJqNVajSVodgiWcVMVLVeSS1ATCZoc88qjVKlSc3kSLJ5c5V6rTZQAcVkGbBeuOkgCgq2CBM3MoFwGr1tvim2aMpZZqyBBc3N1UF2GX90j9SQJKCBB83OfYAcNVjFcSrvzo95WOShB83Ody5V24fqzO0nAUSzB/89Nph38VqmuOa3gticJOP9fApuHTDt4nFJ7AXdPC0lg8/gq8y5XapSrgpUgbQ0JpF5u97hS1fOC26nlJJA8Yd41Sg3fU4dtRQkKeXSN3jo4Qqm0397OmyZOGatoDrScBIWM3DFn5kXi1ZyqRSUoZtKOa1vWKArztqgEnhIHty4f9/btuEstKwGkxf+XuCT5CbTFnFRuxktuAAAAAElFTkSuQmCC`,KT,qT={zh:{TITLE:`眼镜模式`,HIT:`请将手机横屏放入 VR 眼镜中`},en:{TITLE:`GLASSES MODE`,HIT:`Please put the mobile phone horizontally into the VR glasses.`},ja:{TITLE:`メガネモード`,HIT:`携帯電話をVRメガネに水平に入れてください。`}},JT=typeof navigator<`u`?(KT=qT[navigator.language.split(`-`)[0]])==null?qT.zh:KT:qT.zh,YT=`
|
|
905
905
|
<style>
|
|
@@ -1162,4 +1162,4 @@ Z
|
|
|
1162
1162
|
</svg>
|
|
1163
1163
|
</div>
|
|
1164
1164
|
</div>
|
|
1165
|
-
`;function XT(e){let t=1,n=document.getElementsByTagName(`meta`);for(let e=0;e<n.length;e++){let r=n[e];if(r.getAttribute(`name`)===`viewport`){let e=(r.getAttribute(`content`)||``).match(/initial\-scale\=([\d|\.]+)/);e&&(t=Number(e[1])),isNaN(t)&&(t=1)}}let r=e=>Math.floor(e*t)+`px`;return YT.replace(/\n/g,` `).replace(/\ +/g,` `).replace(/\$id/g,e).replace(/(\d+)px/g,(e,t)=>r(Number(t)))}function ZT(){let e=`five_vr_helper_`+Ft(),t=XT(e),n=document.createElement(`div`);return n.className=e,n.innerHTML=t,n}var QT=new l.CircleGeometry(.12,16),$T=(0,f.vec2)(.5,.5),eE=(0,f.float)(.017);function tE(e,t){let n=(0,f.length)($T.sub(e));return(0,f.smoothstep)(t,t.add(eE),n)}function nE(e,t){let n=(0,f.length)($T.sub(e));return(0,f.float)(1).sub((0,f.smoothstep)(t.sub(eE),t,n))}function rE(){let e={opacity:(0,f.uniform)(0)},t=(0,f.uv)(),n=(0,f.length)($T.sub(t)),r=(0,f.float)(.01),i=(0,f.float)(.49),a=(0,f.float)(.29),o=(0,f.float)(1).sub((0,f.smoothstep)(i.sub(r),i,n)),s=(0,f.smoothstep)(a,a.add(r),n),c=(0,f.vec4)(.576,.635,1,.3),u=(0,f.vec4)(1,1,1,(0,f.abs)(n.sub(i.add(a).div(2))).div(i.sub(a)).mul(1.5).add(.1).clamp(0,1)),d=(0,f.mix)(c,u,u.w),p=new l.NodeMaterial;return p.fragmentNode=(0,f.vec4)(d.xyz,d.w.mul(e.opacity).mul(o).mul(s)),p.blending=l.CustomBlending,p.blendSrc=l.SrcAlphaFactor,p.blendDst=l.OneMinusSrcAlphaFactor,p.blendSrcAlpha=l.OneFactor,p.blendDstAlpha=l.OneMinusSrcAlphaFactor,p.depthWrite=!1,p.transparent=!0,{material:p,u:e}}function iE(){let e={circleScale:(0,f.uniform)(1),circleFade:(0,f.uniform)(0),circleOpacity:(0,f.uniform)(.5),loadingAngle:(0,f.uniform)(0),loadingOpacity:(0,f.uniform)(0),opacity:(0,f.uniform)(0),disable:(0,f.uniform)(0)},t=(0,f.uv)();(0,f.length)($T.sub(t));let n=(0,f.float)(.98).add((0,f.abs)((0,f.normalize)((0,f.vec2)(1,-1)).dot(t.sub($T))).mul(2)).clamp(0,1),r=(0,f.vec4)((0,f.mix)((0,f.vec4)(.576,.635,1,1).xyz,(0,f.vec4)(1,1,1,1).xyz,e.circleFade.mul(.5)),n.mul(e.circleOpacity).mul(nE(t,(0,f.float)(.3).mul(e.circleScale)))),i=(0,f.mod)(f.PI.sub((0,f.atan)($T.x.sub(t.x),$T.y.sub(t.y))).add(e.loadingAngle),f.PI2),a=(0,f.vec4)(1,1,1,(0,f.float)(1).sub((0,f.smoothstep)((0,f.float)(0),f.PI2,i)).mul(.9).add(.1).mul(e.loadingOpacity).mul(tE(t,(0,f.float)(.2).mul(e.circleScale))).mul(nE(t,(0,f.float)(.25).mul(e.circleScale)))),o=(0,f.vec4)(1,1,1,(0,f.float)(.5).mul(nE(t,(0,f.float)(.32).mul(e.circleScale)))),s=(0,f.vec4)(1,1,1,0);s=(0,f.mix)(s,r,r.w),s=(0,f.mix)(s,a,a.w),s=(0,f.mix)(s,o,e.disable);let c=(0,f.vec4)(s.xyz,s.w.mul(e.opacity)),u=new l.NodeMaterial;return u.fragmentNode=c,u.blending=l.CustomBlending,u.blendSrc=l.SrcAlphaFactor,u.blendDst=l.OneMinusSrcAlphaFactor,u.blendSrcAlpha=l.OneFactor,u.blendDstAlpha=l.OneMinusSrcAlphaFactor,u.depthWrite=!1,u.transparent=!0,{material:u,u:e}}var aE=class extends l.Object3D{constructor(){super(),this.progress=0,this.opacity=0,this.loading=!1,this.current=!1,this.disabled=!1,this.currentMotion=new J({ringScale:1.1,ringOpacity:0,circleFade:0,circleOpacity:.85,circleScale:1}),this.opacityMotion=new J({opacity:0}),this.loadingMotion=new J({opacity:0}),this.disableMotion=new J({opacity:0}),this.hitTestMesh=new l.Mesh(QT,new l.MeshBasicMaterial({blending:l.CustomBlending,blendSrc:l.SrcAlphaFactor,blendDst:l.OneMinusSrcAlphaFactor,blendSrcAlpha:l.OneFactor,blendDstAlpha:l.OneMinusSrcAlphaFactor,depthWrite:!1,transparent:!0,color:0,opacity:0})),this.hitTestMesh.scale.set(1.5,1.5,1.5);let{material:e,u:t}=rE();this.ringMesh=new l.Mesh(QT,e),this.ringU=t;let{material:n,u:r}=iE();this.panoMesh=new l.Mesh(QT,n),this.panoU=r,this.add(this.hitTestMesh),this.add(this.ringMesh),this.add(this.panoMesh),this.renderOrder=1e4,this.needsRender=!0}setProgress(e){this.progress=e,this.setLoading(e>0)}setOpacity(e){this.opacity!==e&&(this.opacity=e=H(e,0,1),this.opacityMotion.set({opacity:e},30).catch(K))}setCurrent(e){if(this.current!==e){if(e)this.currentMotion.setKeyframes([{progress:0,value:{ringScale:2,ringOpacity:0,circleFade:0,circleOpacity:.85,circleScale:1}},{progress:.05,value:{ringScale:1,ringOpacity:1,circleFade:0,circleOpacity:.85,circleScale:1}},{progress:.15,value:{ringScale:1.2,ringOpacity:1,circleFade:0,circleOpacity:.85,circleScale:1}},{progress:.25,value:{ringScale:1.1,ringOpacity:1,circleFade:0,circleOpacity:.85,circleScale:1}},{progress:.8,value:{ringScale:1.1,ringOpacity:1,circleFade:1,circleOpacity:.85,circleScale:1}},{progress:.9,value:{ringScale:1.1,ringOpacity:1,circleFade:1,circleOpacity:.65,circleScale:.8}},{progress:.92,value:{ringScale:1.1,ringOpacity:1,circleFade:1,circleOpacity:.65,circleScale:.8}},{progress:1,value:{ringScale:1.1,ringOpacity:1,circleFade:1,circleOpacity:.85,circleScale:1.1}}],1500).catch(K);else{let e=[{progress:0,value:Object.assign({},this.currentMotion.value)},{progress:1,value:{ringScale:1.1,ringOpacity:0,circleFade:0,circleOpacity:.85,circleScale:1}}];this.currentMotion.setKeyframes(e,200).catch(K)}this.current=e}}setLoading(e){this.loading!==e&&(e?this.loadingMotion.setKeyframes([{progress:0,value:{opacity:0}},{progress:.3,value:{opacity:0}},{progress:1,value:{opacity:.8}}],500).catch(K):this.loadingMotion.set({opacity:0},0).catch(K),this.loading=e,this.disabled===!0&&this.setDisabled(!1),this.needsRender=!0)}setDisabled(e){this.disabled!==e&&(this.disabled=e,this.loading===!0&&this.setLoading(!1),this.disableMotion.set({opacity:+!!e},300).catch(K),this.needsRender=!0)}tap(){return Promise.resolve()}updateTime(e,t){this.opacityMotion.update(e),this.currentMotion.update(e),this.loadingMotion.update(e);let n=this.opacityMotion.value.opacity;this.visible=n!==0;let{ringScale:r,ringOpacity:i,circleFade:a,circleOpacity:o,circleScale:s}=this.currentMotion.value;this.ringMesh.scale.set(r,1,r),this.ringU.opacity.value=i*n,this.panoU.opacity.value=n,this.panoU.circleOpacity.value=o,this.panoU.circleScale.value=s,this.panoU.circleFade.value=a,this.panoU.loadingOpacity.value=this.loadingMotion.value.opacity,this.panoU.disable.value=this.disableMotion.value.opacity,this.panoU.loadingAngle.value=e/120%(Math.PI*2),this.needsRender=!0}dispose(){this.hitTestMesh.material.dispose(),this.ringMesh.material.dispose(),this.panoMesh.material.dispose()}},oE=1500,sE=Object.assign({},gl(mT,[`maxLatitude`,`minLatitude`])),cE=class e extends hT{static parseArgs(t){if(t instanceof e)return t;let n=Object.assign(Object.assign({},t),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2});return super.parseArgs(n)}static initAnimationEndState(e){let t=this.parseArgs(e),n=super.initAnimationEndState(t);return Object.assign(Object.assign({},n),{mode:`VRPanorama`})}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`VRPanorama`,this.cardboard=new UT(this.renderer);let r=ZT();this.helperElement=r;let i=new VC(r);this.element.parentNode&&(this.element.parentNode.insertBefore(r,this.element),this.updateHelperElementSize(),i.on(`tap`,()=>this.emit(`vr.requestExit`,$(`vr.requestExit`,{})))),this.destroyHelper=()=>{i.destroy(),r.parentNode&&r.parentNode.removeChild(r),this.helperElement=void 0}}updateConfiguration(e){return super.updateConfiguration(Object.assign(Object.assign({},e),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2}))}destroy(){super.destroy(),this.cardboard.dispose(),this.destroyHelper()}isReady(){return!1}updateRenderSize(){this.needsRender=!0}updateCamera(e,t,n){return Promise.resolve()}updateCameraWithKeyframes(e,t,n){return Promise.resolve()}updateTime(e,t,...n){var r,i,a,o,s,c;if(this.destroyed)return;this.updateHelperElementSize(),this.userAction=!0,this.needsRender=!0;let u={},d={},f=this.locationMotion.keyframes[0],p=this.locationMotion.keyframes[this.locationMotion.keyframes.length-1],[m,h]=this.locationMotion.getKeyFrameSegment(e),g=this.panoResourceFromLocationMotionKeyframe(m),_=this.panoResourceFromLocationMotionKeyframe(h),v=this.panoResourceFromLocationMotionKeyframe(f),y=this.panoResourceFromLocationMotionKeyframe(p),b=!1;if(this.modelAlphaMotion.ended===!1&&(this.modelAlphaMotion.update(e),u.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.perspToOrthoMotion.ended===!1&&(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(H(this.perspToOrthoMotion.value.perspToOrtho,0,1))),this.locationMotion.ended===!1){this.locationMotion.update(e);let t=this.locationMotion.value.count-h.value.count+1,n=new l.Vector3().copy(g.position),a=new l.Vector3().copy(_.position);if(u.progress=t,t>=.01&&t<=.99&&(u.progress=H(_.effectEasing(t),.01,.99)),_.panoPicture&&(t<1?g.panoPicture&&(u.pano0=g.panoPicture):u.pano0=_.panoPicture,u.pano1=_.panoPicture),_.effect===`montage`?u.transition=`BLACK`:_.effect===`spread`?u.transition=`SPREAD`:u.transition=`FADE`,_.effect===`zoomin`||_.effect===`zoomout`?u.progress=Math.pow(t,3):_.effect===`model`&&this.camera.pose.distance<.01&&(u.modelAlpha=1-Math.pow(H(Math.abs(t-.5)*2,0,1),4)),t<1&&_.effect!==`fly`){if(u.pano0&&g.panoPicture){let e={panoId:u.pano0.panoId,map:u.pano0.map,mapHistogram:u.pano0.mapHistogram,mapSize:u.pano0.mapSize,zoom:u.pano0.zoom,matrix:g.panoPicture.matrix.clone().setPosition(_.position),gainmap:u.pano0.gainmap?{map:u.pano0.gainmap.map,cfg:Object.assign({},u.pano0.gainmap.cfg)}:void 0},t=this.panoPictureObserverMap.get(u.pano0);t&&this.panoPictureObserverMap.set(e,t),u.pano0=e}n.copy(a),b=!0}d.distance=this.locationMotion.value.distance,d.offset=new l.Vector3(n.x+(a.x-n.x)*t,n.y+(a.y-n.y)*t,n.z+(a.z-n.z)*t);let o=[],s=[];for(let e of this.locationMotion.keyframes){let{key:t,progress:n}=e;t!==void 0&&(o.push(t),n>this.locationMotion.progress&&s.push(t))}for(let e of Object.keys(this.panoResources)){if(s.indexOf(e)>=0)continue;let t=this.panoResources[e];if(t.panoPicture){let e=t.panoPicture.map;if(e){if(e===((r=u.pano0)==null?void 0:r.map)||e===((i=u.pano1)==null?void 0:i.map))continue;e.dispose(),t.panoPicture=null}}o.indexOf(e)>=0||delete this.panoResources[e]}this.currentPano=_b(_.panoId),this.emit(`pano.moving`,$(`pano.moving`,{userAction:this.userAction,prevPano:_b(v.panoId),state:Object.assign(Object.assign(Object.assign(Object.assign({},_b(y.panoId)),{mode:this.mode}),xC(this.camera.pose)),d),options:{},progress:this.locationMotion.progress,error:null}))}wC(u)===!1&&this.modelScene.parameter.set(u),d.offset&&this.camera.position.copy(d.offset);let x=this.camera.pose.longitude,S=this.camera.pose.latitude;this.camera.quaternion.fromArray(this.cardboard.sensor.getOrientation()),this.camera.computePose(),(x!==this.camera.pose.longitude||S!==this.camera.pose.latitude)&&(this.cameraMotion.set(hl(this.camera.pose,[`longitude`,`latitude`]),0).catch(K),this.emit(`camera.update`,$(`camera.update`,{userAction:!0,state:Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),xC(this.camera.pose))}))),this.works.getObserver(this.currentPano);let C=this.works.getObserver(g.panoId),w=this.works.getObserver(_.panoId),T=new Map;if(C)for(let e of C.accessibleNodes){let t=C.work.observers[e];if(t){let e=gb({panoIndex:t.panoIndex,workCode:t.work.workCode});T.set(e,t)}}if(w)for(let e of w.accessibleNodes){let t=w.work.observers[e];if(t){let e=gb({panoIndex:t.panoIndex,workCode:t.work.workCode});T.set(e,t)}}if(this.panoMeshes.forEach((e,t)=>{let n=T.get(t);n?(e.position.copy(n.position).applyMatrix4(n.work.transform),T.delete(t)):(this.helper.remove(e),e.dispose(),this.panoMeshes.delete(t))}),T.forEach((e,t)=>{let n=new aE;n.position.copy(e.position).applyMatrix4(e.work.transform),e.position.distanceTo(e.standingPosition)>this.aerialObserverMinHeight?n.scale.setScalar(15):n.scale.setScalar(1),this.panoMeshes.set(t,n),this.helper.add(n),T.delete(t)}),this.camera.pose.distance>.1||b?this.panoMeshes.forEach((n,r)=>{n.setOpacity(0),n.updateTime&&n.updateTime(e,t),n.visible=!1}):this.panoMeshes.forEach((e,t)=>{let n=_b(t),r=this.works.getObserver(n);if(!r)return;if(!r.loadable&&!r.active){e.setOpacity(0);return}let i=e.position.clone().setY(this.camera.position.y).distanceTo(this.camera.position);i<.05?e.setOpacity(0):e.setOpacity(H(1.5/i,0,1)),vb(this.currentPano,n)&&e.setOpacity(0),e.lookAt(this.camera.position)}),this.locationMotion.ended){let n=this.intersect(e);this.panoMeshes.forEach((r,i)=>{r.setCurrent(r===n),r.updateTime&&r.updateTime(e,t)})}{let e=(a=this.modelScene.parameter.progress)==null?1:a,t=Math.round(e),n=this.modelScene.parameter.pano0,r=this.modelScene.parameter.pano1,i=t===0?n:r,s;if(i&&(s=this.works.getObserver(i.panoId),s||(s=this.panoPictureObserverMap.get(i))),this.tiling.appearDuration=this.tileAppearDuration,this.tiling.maxRequest=e<(cu()?.6:.99)?0:this.tileMaxRequest,this.tiling.imageOptions=this.imageOptions,!s||!i||this.tileLevelForFov===!1||this.camera.perspToOrtho.x>0){this.tiling.setObserver(null);let e={renderer:this.renderer,resolution:this.camera.resolution,pixelRatio:this.camera.pixelRatio,time:this.camera.time,cameraMatrix:this.camera.matrixWorld,cameraProjectionMatrix:this.camera.projectionMatrix,panoMap:null,panoGainmap:void 0,panoMatrix:new l.Matrix4,panoZoom:1,minLevel:0,level:0};this.tiling.update(e),this.modelScene.parameter.set(`refinedScreen`,null)}else{let e=$l(i.mapSize),a=e+1,c=new l.Vector2().copy(this.camera.resolution).multiplyScalar(this.camera.pixelRatio),u=Math.floor(this.tileLevelForFov(this.camera.fov,c)),d=u>e?u:0;this.tiling.setObserver(s);let f={renderer:this.renderer,resolution:this.camera.resolution,pixelRatio:this.camera.pixelRatio,time:this.camera.time,cameraMatrix:this.camera.matrixWorld,cameraProjectionMatrix:this.camera.projectionMatrix,panoMap:i.map,panoGainmap:i.gainmap,panoMatrix:i.matrix,panoZoom:i.zoom,minLevel:a,level:d,useHDR:this.modelScene.parameter.useHDR,maxDisplayBoost:this.modelScene.parameter.maxDisplayBoost},p=this.tiling.update(f),m={map:this.tiling.renderTarget.texture,matrixInverse:this.tiling.camera.matrixWorldInverse,projectionMatrix:this.tiling.camera.projectionMatrix,pano:t,opacity:(n==null?void 0:n.panoId)===(r==null?void 0:r.panoId)?1:Sh(Math.abs(((o=this.modelScene.parameter.progress)==null?0:o)-.5)*2)},h=this.modelScene.parameter.refinedScreen;(p||m.pano!==(h==null?void 0:h.pano)||m.opacity!==(h==null?void 0:h.opacity))&&this.modelScene.parameter.set(`refinedScreen`,m)}}this.panoVideo.object.position.copy(this.camera.position),this.panoVideo.updateTime(e);{let e=_.effect,{pano0:t,pano1:n}=this.modelScene.parameter;if(t&&n&&t!==n&&(e===`fly`||e===`model`)&&this.flyEffectUseDepthBuffer){if(((s=this.modelScene.parameter.pano0Depth)==null?void 0:s.panoId)!==t.panoId||((c=this.modelScene.parameter.pano1Depth)==null?void 0:c.panoId)!==n.panoId){this.pano0DepthCubeRenderTarget?this.pano0DepthCubeRenderTarget.width!==512&&this.pano0DepthCubeRenderTarget.setSize(512,512):this.pano0DepthCubeRenderTarget=new l.CubeRenderTarget(512,{minFilter:l.NearestFilter,magFilter:l.NearestFilter,generateMipmaps:!1}),this.pano1DepthCubeRenderTarget?this.pano1DepthCubeRenderTarget.width!==512&&this.pano1DepthCubeRenderTarget.setSize(512,512):this.pano1DepthCubeRenderTarget=new l.CubeRenderTarget(512,{minFilter:l.NearestFilter,magFilter:l.NearestFilter,generateMipmaps:!1});let e=new l.CubeCamera(this.camera.near,this.camera.far,this.pano0DepthCubeRenderTarget);e.matrix.copy(t.matrix),e.matrixWorld.copy(e.matrix),e.matrixAutoUpdate=!1,cT(this.renderer,this.modelScene,e,500);let r=new l.CubeCamera(this.camera.near,this.camera.far,this.pano1DepthCubeRenderTarget);r.matrix.copy(n.matrix),r.matrixWorld.copy(r.matrix),r.matrixAutoUpdate=!1,cT(this.renderer,this.modelScene,r,500),this.modelScene.parameter.set({pano0Depth:{panoId:t.panoId,map:this.pano0DepthCubeRenderTarget.texture,mapSize:this.pano0DepthCubeRenderTarget.width,maxDepth:500},pano1Depth:{panoId:n.panoId,map:this.pano1DepthCubeRenderTarget.texture,mapSize:this.pano1DepthCubeRenderTarget.width,maxDepth:500}})}}else this.modelScene.parameter.set({pano0Depth:null,pano1Depth:null}),this.flyEffectUseDepthBuffer||(this.pano0DepthCubeRenderTarget&&(this.pano0DepthCubeRenderTarget.dispose(),this.pano0DepthCubeRenderTarget=void 0),this.pano1DepthCubeRenderTarget&&(this.pano1DepthCubeRenderTarget.dispose(),this.pano1DepthCubeRenderTarget=void 0))}}render(){return this.renderer.setRenderTarget(null),this.renderer.setScissorTest(!1),this.cardboard.render(this.scene,this.camera),!0}setCamera(e={}){}destroyHelper(){}updateHelperElementSize(){if(!this.helperElement)return;let e=new l.Vector2(this.element.offsetWidth,this.element.offsetHeight),t=e.x*this.viewport.left,n=e.y*(1-this.viewport.bottom-this.viewport.height),r=e.x*this.viewport.width,i=e.y*this.viewport.height;this.helperElement.style.marginLeft!==t+`px`&&(this.helperElement.style.marginLeft=t+`px`),this.helperElement.style.marginTop!==n+`px`&&(this.helperElement.style.marginTop=n+`px`),this.helperElement.style.width!==r+`px`&&(this.helperElement.style.width=r+`px`),this.helperElement.style.height!==i+`px`&&(this.helperElement.style.height=i+`px`)}intersect(e){var t,n;if(this.locationMotion.ended===!1){this.intersectMesh.visible=!1,this.activePanoMesh=void 0,this.activeTime=void 0;return}if(this.activePanoMesh&&this.activeTime&&e-this.activeTime>oE){let e=this.activePanoMesh,t=null;return this.panoMeshes.forEach((n,r)=>{n===e&&(t=r)}),t!==null&&this.moveToPano(_b(t),{},!0),this.activePanoMesh=void 0,this.activeTime=void 0,e}let r=this.camera.getDirection(new l.Vector3),i=new l.Raycaster(this.camera.position,r);i.params.Points={threshold:.1},i.firstHitOnly=!0,i.floorIndex=-1;let a,o=[],s=this.works.getObserver(this.currentPano),c=s?s.accessibleNodes.map(e=>gb({panoIndex:e,workCode:s.work.workCode})):[];for(let e of c){let r=this.panoMeshes.get(e);if(r){let[e]=i.intersectObject((t=r.hitTestMesh)==null?r:t,!0);if(e){let t=(n=s==null?void 0:s.floorIndex)==null?0:n;o.push({panoMesh:r,intersection:Object.assign({floorIndex:t,floor:t},e)})}}}let[u]=o.sort((e,t)=>e.intersection.distance-t.intersection.distance);u?(a=u.intersection,this.activePanoMesh!==u.panoMesh&&(this.activePanoMesh=u.panoMesh,this.activeTime=e),this.intersectMesh.position.copy(u.panoMesh.position),this.intersectMesh.lookAt(this.camera.position)):(this.activePanoMesh=void 0,this.activeTime=void 0),a||(a=this.modelScene.intersectRaycaster(i)[0]);let d=$(`intersect.update`,{raycaster:i,intersection:a==null?null:a,object:this.intersectMesh});if(this.emit(`intersect.update`,d),d.defaultPrevented){this.hideIntersectMesh();return}if(a&&a.face){let e=a.face.normal,t=new l.Quaternion;t.setFromUnitVectors(new l.Vector3(0,0,1),e),this.intersectMesh.quaternion.copy(t);let n=a.point.clone();this.intersectMesh.position.copy(n),u?this.intersectMesh.visible=!1:this.intersectMesh.visible=!0}else this.intersectMesh.visible=!1;return u==null?void 0:u.panoMesh}onPanGesture(){}onTapGesture(){}onPinchGesture(){}onMouseMove(){}onMouseOut(){}},lE=.01,uE=`183`,dE={isXRRenderTarget:!0,_hasExternalTextures:!1,_autoAllocateDepthBuffer:!0,_isOpaqueFramebuffer:!0};function fE(e,t,n,r){let i=new l.RenderTarget(t,n,{format:l.RGBAFormat,type:l.UnsignedByteType,colorSpace:e.outputColorSpace,stencilBuffer:e.stencil===!0,resolveDepthBuffer:r,resolveStencilBuffer:r});return Object.assign(i,dE),i}var pE=class{constructor(e,t={}){var n;this.resources=null,this.warnedRevision=!1,this._outputBufferType=null,this.clearColorScratch=new l.Color,this.viewportScratch=new l.Vector4,this.renderer=e,this.atlasSamples=(n=t.atlasSamples)==null?0:n}get outputBufferType(){return this._outputBufferType}verify(){let e=this.renderer,t=[],n=e.backend;n?(n.isWebGLBackend!==!0&&t.push(`backend.isWebGLBackend`),typeof n.setXRTarget!=`function`&&t.push(`backend.setXRTarget`)):t.push(`renderer.backend`),typeof e.setOutputRenderTarget!=`function`&&t.push(`renderer.setOutputRenderTarget`),typeof e.getOutputRenderTarget!=`function`&&t.push(`renderer.getOutputRenderTarget`);let r=fE(this.renderer,1,1,!0);try{let e=r;for(let[n,r]of Object.entries(dE))e[n]!==r&&t.push(`xrRT.${n}(期望 ${String(r)},实际 ${String(e[n])})`);for(let n of[`multiview`,`resolveDepthBuffer`])e[n]===void 0&&t.push(`xrRT.${n}`)}finally{r.dispose()}if(t.length>0)throw Error(`[RenderTargetBridge] three 内部 API 校验失败(THREE.REVISION=${l.REVISION}),缺失或不符:${t.join(`、`)}`);l.REVISION!==uE&&!this.warnedRevision&&(this.warnedRevision=!0,console.warn(`[RenderTargetBridge] THREE.REVISION=${l.REVISION},XR 标志位语义仅在 r${uE} 复核过,继续运行`))}verifyCameras(e){let t=this.renderer.coordinateSystem,n=e.map((e,n)=>e.coordinateSystem===t?null:n).filter(e=>e!==null);if(n.length>0)throw Error(`[RenderTargetBridge] Eye_Camera[${n.join(`,`)}] 的 coordinateSystem 与 renderer(${t})不一致,three 会改写其投影矩阵(THREE.REVISION=${l.REVISION})`)}init(e){var t,n,r;this.build(e),this._outputBufferType=(r=(n=(t=this.renderer).getOutputBufferType)==null?void 0:n.call(t))==null?null:r}renderFrame(e,t,n){let r=this.renderer,i=r,a=i.backend,o={autoClear:r.autoClear,autoClearColor:r.autoClearColor,autoClearDepth:r.autoClearDepth,autoClearStencil:r.autoClearStencil,viewport:r.getViewport(this.viewportScratch).clone(),scissorTest:r.getScissorTest(),clearAlpha:r.getClearAlpha(),output:i.getOutputRenderTarget(),rt:r.getRenderTarget(),clearColor:i.getClearColor(this.clearColorScratch).clone()};try{let{atlas:s,xrRT:c,quad:u,width:d,height:f}=this.syncResources(e);r.setScissorTest(!1),r.setRenderTarget(s);let p=t.background;r.setClearColor(p instanceof l.Color?p:o.clearColor,1),r.clear(!0,!0,!1),r.autoClear=!1,r.autoClearColor=!1,r.autoClearDepth=!1,r.autoClearStencil=!1;for(let e of n){let n=e.viewport;s.viewport.set(n.x,f-n.height-n.y,n.width,n.height),r.render(t,e.camera)}r.setScissorTest(!1),a.setXRTarget(e.framebuffer),r.setRenderTarget(null),i.setOutputRenderTarget(c);let m=r.getPixelRatio();r.setViewport(0,0,(d+lE)/m,(f+lE)/m),u.render(r)}finally{i.setOutputRenderTarget(o.output),a.setXRTarget(null),r.setRenderTarget(o.rt),r.autoClear=o.autoClear,r.autoClearColor=o.autoClearColor,r.autoClearDepth=o.autoClearDepth,r.autoClearStencil=o.autoClearStencil,r.setScissorTest(o.scissorTest),r.setViewport(o.viewport),r.setClearColor(o.clearColor,o.clearAlpha)}}dispose(){var e,t,n;if(!this.resources)return;this.releaseResources();let r=this.renderer;(t=(e=r.backend)==null?void 0:e.setXRTarget)==null||t.call(e,null),(n=r.setOutputRenderTarget)==null||n.call(r,null),this._outputBufferType=null}syncResources(e){let t=this.resources;return t&&t.layer===e&&t.width===e.framebufferWidth&&t.height===e.framebufferHeight?t:this.build(e)}build(e){this.releaseResources();let t=e.framebufferWidth,n=e.framebufferHeight,r=new l.RenderTarget(t,n,{format:l.RGBAFormat,type:this.supportsHalfFloat()?l.HalfFloatType:l.UnsignedByteType,colorSpace:l.LinearSRGBColorSpace,depthBuffer:!0,stencilBuffer:!1,samples:this.atlasSamples,generateMipmaps:!1,minFilter:l.LinearFilter,magFilter:l.LinearFilter}),i=fE(this.renderer,t,n,e.ignoreDepthValues===!1),a=new l.NodeMaterial;a.fragmentNode=(0,f.vec4)((0,f.texture)(r.texture).rgb,1),a.depthTest=!1,a.depthWrite=!1;let o=new l.QuadMesh(a);return this.resources={layer:e,width:t,height:n,atlas:r,xrRT:i,quad:o},this.resources}releaseResources(){let e=this.resources;e&&(this.resources=null,e.atlas.dispose(),e.xrRT.dispose(),e.quad.material.dispose())}supportsHalfFloat(){var e;let t=(e=this.renderer.backend)==null?void 0:e.gl;return t?!!t.getExtension(`EXT_color_buffer_float`)||!!t.getExtension(`EXT_color_buffer_half_float`):!1}},mE=class{constructor(){this.root=new l.Group,this._entries=new Map,this._dir=new l.Vector3}add(e){for(let t of e){if(this._entries.has(t))continue;let e=new l.Object3D,n=new l.Object3D;e.visible=!1,n.visible=!1,this.root.add(e,n),this._entries.set(t,{source:t,targetRay:e,grip:n,rayFrame:-1})}}remove(e){let t=[];for(let n of e){let e=this._entries.get(n);e&&(this._entries.delete(n),this.root.remove(e.targetRay,e.grip),t.push(e))}return t}update(e,t,n,r){for(let i of this._entries.values()){let{source:a,targetRay:o,grip:s}=i,c=e.getPose(a.targetRaySpace,t),l=a.gripSpace?e.getPose(a.gripSpace,t):null;c?(this._applyPose(o,c,n),i.rayFrame=r):o.visible=!1,c&&l?this._applyPose(s,l,n):s.visible=!1}}hideAll(){for(let{targetRay:e,grip:t}of this._entries.values())e.visible=!1,t.visible=!1}fill(e,t,n){let r=this._entries.get(e);if(!r||r.rayFrame!==n||!r.targetRay.visible)return!1;let{matrixWorld:i}=r.targetRay;return t.ray.origin.setFromMatrixPosition(i),t.ray.direction.copy(this._dir.set(0,0,-1).transformDirection(i)),!0}clear(){for(let{targetRay:e,grip:t}of this._entries.values())this.root.remove(e,t);this._entries.clear()}entries(){return this._entries}_applyPose(e,t,n){let{position:r,orientation:i}=t.transform;e.position.set(n.x+r.x,n.y+r.y,n.z+r.z),e.quaternion.set(i.x,i.y,i.z,i.w),e.visible=!0,e.updateMatrixWorld(!0)}},hE=5e3;function gE(e){let t=[...new Set([e,`local`,`viewer`])];return t.slice(0,t.indexOf(`viewer`)+1)}function _E(){let e=Error(`会话在参考空间解析前已结束`);return e.aborted=!0,e}function vE(e){return e.map(e=>`${e.type}(${e.reason})`).join(`, `)}function yE(e,t){return Wr(this,arguments,void 0,function*(e,t,n={}){var r,i,a;let o=(r=n.timeoutMs)==null?hE:r,s=n.isAborted,c=(i=n.schedule)==null?((e,t)=>setTimeout(e,t)):i,l=(a=n.clear)==null?(e=>clearTimeout(e)):a,u=gE(t),d=[];for(let n of u){let r=yield bE(e,n,o,c,l);if(s!=null&&s())throw _E();if(r.ok)return n!==t&&console.warn(`[XR] 参考空间降级:期望 ${t},实际采用 ${n};失败:${vE(d)}`),{space:r.space,type:n,failures:d};d.push({type:n,reason:r.reason})}let f=Error(`所有参考空间均不可用(期望 ${t}):${vE(d)}`);throw f.attempts=d,f})}function bE(e,t,n,r,i){return Wr(this,void 0,void 0,function*(){let a,o=!1,s=new Promise(n=>{let r=e=>{o||n({ok:!0,space:e})},i=()=>{o||n({ok:!1,reason:`rejected`})};try{e.requestReferenceSpace(t).then(r,i)}catch(e){i()}}),c=new Promise(e=>{a=r(()=>e({ok:!1,reason:`timeout`}),n)});try{return yield Promise.race([s,c])}finally{o=!0,i(a)}})}var xE=5e3,SE=`会话在进入过程中已结束`,CE=class{static isBackendXRCapable(e){let t=e.backend;return(t==null?void 0:t.isWebGPUBackend)!==!0}static isBrowserXRCapable(){return typeof navigator<`u`&&`xr`in navigator}get isPresenting(){return this._isPresenting}get session(){return this._session}get frame(){return this._frame}get referenceSpaceType(){return this._referenceSpaceType}constructor(e,t,n){var r;this.inputs=new mE,this._isPresenting=!1,this._session=null,this._frame=null,this._referenceSpaceType=null,this.refSpace=null,this.layer=null,this.entering=!1,this.entered=!1,this.endedDuringEnter=!1,this.snapshot=null,this.listeners=[],this.firstFrameArrived=!1,this.firstFrameWaiter=null,this.frameNo=0,this.submittedNear=NaN,this.submittedFar=NaN,this.offset=new l.Vector3,this.info={time:0,hasPose:!1,headOrientation:new l.Quaternion,headLocal:new l.Vector3,views:[]},this.viewPool=[{eye:0,viewport:new l.Vector4},{eye:1,viewport:new l.Vector4}],this.frameViews=[],this.bridgeEyes=[],this.tmpViewport=new l.Vector4,this.tmpSize=new l.Vector2,this.onSessionEndEvent=()=>{var e;if(this._session){if(!this.entered){this.endedDuringEnter=!0,(e=this.firstFrameWaiter)==null||e.reject(Error(SE));return}this.teardown()}},this.onInputSourcesChangeEvent=e=>{var t,n;if(!this._session)return;let{added:r,removed:i}=e;this.inputs.add(r),this.inputs.remove(i),(n=(t=this.callbacks).onInputSourcesChange)==null||n.call(t,r,i)},this.onSelectEvent=e=>{var t,n;(n=(t=this.callbacks).onSelect)==null||n.call(t,e.inputSource)},this.onReferenceSpaceReset=()=>{},this.renderer=e,this.options=t==null?{}:t,this.callbacks=n,this.bridge=new pE(e,{atlasSamples:(r=this.options.atlasSamples)==null?0:r}),this.device=wS(),this.profile=OS(this.device,this.options.deviceProfile,e=>{console.warn(`[XR] Device_Profile 字段 ${e} 非法,已回落默认值`)});let i=()=>{let t=new l.PerspectiveCamera;return t.coordinateSystem=e.coordinateSystem,t};this.eyeCameras=[i(),i()],this.info.views=this.frameViews}enter(e){return Wr(this,void 0,void 0,function*(){var t,n;if(!(this.entering||this.entered)){this.entering=!0,this.endedDuringEnter=!1,this.firstFrameArrived=!1,this._session=e;try{this.snapshot=this.captureRendererState(),this.bridge.verify(),this.bridge.verifyCameras(this.eyeCameras);let r=(t=this.renderer.backend)==null?void 0:t.gl;if(!r)throw Error(`[XRManager] 取不到 WebGL2 上下文(renderer.backend.gl),无法创建 XRWebGLLayer`);this.listen(e,`end`,this.onSessionEndEvent),this.listen(e,`inputsourceschange`,this.onInputSourcesChangeEvent),this.listen(e,`select`,this.onSelectEvent),yield r.makeXRCompatible(),this.throwIfEnded();let i=r.getContextAttributes(),a=new XRWebGLLayer(e,r,{alpha:!1,framebufferScaleFactor:1,antialias:i==null?void 0:i.antialias,depth:i==null?void 0:i.depth,stencil:i==null?void 0:i.stencil});this.layer=a;let o=this.options.foveation;o!==void 0&&`fixedFoveation`in a&&(a.fixedFoveation=H(o,0,1)),e.updateRenderState({baseLayer:a}),this.submittedNear=e.renderState.depthNear,this.submittedFar=e.renderState.depthFar,this.bridge.init(a);let s=yield yE(e,(n=this.options.referenceSpaceType)==null?`local-floor`:n,{isAborted:()=>this.endedDuringEnter});this.throwIfEnded(),this.refSpace=s.space,this._referenceSpaceType=s.type,this.listen(s.space,`reset`,this.onReferenceSpaceReset),iu.shared.setContext(e),yield this.waitFirstFrame(),this.throwIfEnded(),this.syncExistingInputSources(e),this.entering=!1,this.entered=!0,this._isPresenting=!0;try{this.callbacks.onSessionStart(e,this.device)}catch(e){console.error(`[XR] onSessionStart 回调抛错`,e)}}catch(e){throw this.rollback(),this.endedDuringEnter?Error(SE):e}}})}exit(){return Wr(this,void 0,void 0,function*(){let e=this._session;if(!(!this.entered||!e))try{yield e.end()}catch(t){this._session===e&&this.teardown()}})}dispose(){var e;let t=this._session;if(this.entering){this.endedDuringEnter=!0,(e=this.firstFrameWaiter)==null||e.reject(Error(SE)),t&&this.endQuietly(t);return}this.entered&&t&&(this.teardown(),this.endQuietly(t))}beginFrame(e,t,n,r,i){let a=this.info;a.time=t;let o=this._session,s=this.refSpace,c=this.layer;if(!o||!s||!c)return this.markNoPose(),a;this._frame=e,this.frameNo++,this.notifyFirstFrame();let l=e.getViewerPose(s),u=l==null?void 0:l.views,d=u?u.length:0;if(!l||!u||d!==1&&d!==2||!this.collectViews(c,u))return this.markNoPose(),this.inputs.hideAll(),a;let f=0,p=0,m=0;for(let e=0;e<d;e++){let t=u[e].transform.position;f+=t.x,p+=t.y,m+=t.z}a.headLocal.set(f/d,p/d,m/d);let h=l.transform.orientation;a.headOrientation.set(h.x,h.y,h.z,h.w),a.hasPose=!0,this.offset.copy(n).sub(a.headLocal);for(let e=0;e<d;e++){let t=u[e],a=this.eyeCameras[this.frameViews[e].eye];a.projectionMatrix.fromArray(t.projectionMatrix),a.projectionMatrixInverse.copy(a.projectionMatrix).invert();let o=t.transform.orientation;a.position.copy(n),a.quaternion.set(o.x,o.y,o.z,o.w),a.near=r,a.far=i,a.updateMatrixWorld(!0)}return this.syncDepthRange(o,r,i),this.inputs.update(e,s,this.offset,this.frameNo),a}renderEyes(e){var t;let n=this.layer;if(!n||!this._session||!this.info.hasPose)return!1;let r=this.bridgeEyes,i=this.frameViews;r.length=i.length;for(let e=0;e<i.length;e++){let n=(t=r[e])==null?r[e]={camera:this.eyeCameras[0],viewport:i[e].viewport}:t;n.camera=this.eyeCameras[i[e].eye],n.viewport=i[e].viewport}return this.bridge.renderFrame(n,e,r),!0}fillRaycaster(e,t){return this.inputs.fill(e,t,this.frameNo)}markNoPose(){this.info.hasPose=!1,this.frameViews.length=0}collectViews(e,t){let n=0;this.frameViews.length=0;for(let r=0;r<t.length;r++){let i=+(t[r].eye===`right`);n&1<<i&&(i=+(i===0)),n|=1<<i;let a=e.getViewport(t[r]);if(!a)return this.frameViews.length=0,!1;let o=this.viewPool[r];o.eye=i,o.viewport.set(a.x,a.y,a.width,a.height),this.frameViews.push(o)}return!0}syncDepthRange(e,t,n){t===this.submittedNear&&n===this.submittedFar||Number.isFinite(t)&&Number.isFinite(n)&&t>0&&n>t&&(e.updateRenderState({depthNear:t,depthFar:n}),this.submittedNear=t,this.submittedFar=n)}notifyFirstFrame(){var e;this.firstFrameArrived||(this.firstFrameArrived=!0,(e=this.firstFrameWaiter)==null||e.resolve())}throwIfEnded(){if(this.endedDuringEnter)throw Error(SE)}waitFirstFrame(){var e;if(this.firstFrameArrived)return Promise.resolve();let t=(e=this.options.firstFrameTimeoutMs)==null?xE:e;return new Promise((e,n)=>{let r=setTimeout(()=>{this.firstFrameWaiter=null,n(Error(`等待首帧超时(${t}ms 内未收到首个 XRFrame)`))},t);this.firstFrameWaiter={resolve:()=>{clearTimeout(r),this.firstFrameWaiter=null,e()},reject:e=>{clearTimeout(r),this.firstFrameWaiter=null,n(e)}}})}syncExistingInputSources(e){var t,n,r;let i=this.inputs.entries(),a=Array.from((t=e.inputSources)==null?[]:t).filter(e=>!i.has(e));a.length!==0&&(this.inputs.add(a),(r=(n=this.callbacks).onInputSourcesChange)==null||r.call(n,a,[]))}listen(e,t,n){e.addEventListener(t,n),this.listeners.push({target:e,type:t,handler:n})}removeListeners(){for(let{target:e,type:t,handler:n}of this.listeners)e.removeEventListener(t,n);this.listeners.length=0}captureRendererState(){let e=this.renderer;return{viewport:e.getViewport(new l.Vector4).clone(),autoClear:e.autoClear,autoClearColor:e.autoClearColor,autoClearDepth:e.autoClearDepth,autoClearStencil:e.autoClearStencil,pixelRatio:e.getPixelRatio(),size:e.getSize(new l.Vector2).clone()}}restoreRendererState(){let e=this.snapshot;if(!e)return;this.snapshot=null;let t=this.renderer;t.autoClear=e.autoClear,t.autoClearColor=e.autoClearColor,t.autoClearDepth=e.autoClearDepth,t.autoClearStencil=e.autoClearStencil,t.getPixelRatio()!==e.pixelRatio&&t.setPixelRatio(e.pixelRatio),t.getSize(this.tmpSize).equals(e.size)||t.setSize(e.size.x,e.size.y),t.getViewport(this.tmpViewport).equals(e.viewport)||t.setViewport(e.viewport)}releaseFrameSource(e){let t=iu.shared;e&&t.getContext()===e&&t.setContext(null)}clearReferences(){this._session=null,this._frame=null,this.refSpace=null,this._referenceSpaceType=null,this.layer=null,this.markNoPose(),this.frameNo=0,this.firstFrameArrived=!1,this.submittedNear=NaN,this.submittedFar=NaN}rollback(){var e;let t=this._session;(e=this.firstFrameWaiter)==null||e.reject(Error(SE)),this.removeListeners(),this.inputs.clear(),this.bridge.dispose(),this.releaseFrameSource(t),this.restoreRendererState(),this.clearReferences(),this._isPresenting=!1,this.entering=!1,this.entered=!1}teardown(){var e,t;let n=this._session;if(n){this._isPresenting=!1,this.entered=!1;try{(t=(e=this.callbacks).onSessionEnding)==null||t.call(e)}catch(e){console.error(`[XR] onSessionEnding 回调抛错`,e)}this.inputs.clear(),this.bridge.dispose(),this.removeListeners(),this.releaseFrameSource(n),this.restoreRendererState(),this.clearReferences(),this.callbacks.onSessionEnd(this.device)}}endQuietly(e){try{Promise.resolve(e.end()).catch(()=>{})}catch(e){}}},wE={Handedness:Object.freeze({NONE:`none`,LEFT:`left`,RIGHT:`right`}),ComponentState:Object.freeze({DEFAULT:`default`,TOUCHED:`touched`,PRESSED:`pressed`}),ComponentProperty:Object.freeze({BUTTON:`button`,X_AXIS:`xAxis`,Y_AXIS:`yAxis`,STATE:`state`}),ComponentType:Object.freeze({TRIGGER:`trigger`,SQUEEZE:`squeeze`,TOUCHPAD:`touchpad`,THUMBSTICK:`thumbstick`,BUTTON:`button`}),ButtonTouchThreshold:.05,AxisTouchThreshold:.1,VisualResponseProperty:Object.freeze({TRANSFORM:`transform`,VISIBILITY:`visibility`})};function TE(e){return Wr(this,void 0,void 0,function*(){let t=yield fetch(e);if(t.ok)return t.json();throw Error(t.statusText)})}function EE(e){return Wr(this,void 0,void 0,function*(){if(!e)throw Error(`No basePath supplied`);return yield TE(`${e}/profilesList.json`)})}function DE(e,t){return Wr(this,arguments,void 0,function*(e,t,n=null,r=!0){if(!e)throw Error(`No xrInputSource supplied`);if(!t)throw Error(`No basePath supplied`);let i=yield EE(t),a;if(e.profiles.some(e=>{let n=i[e];return n&&(a={profileId:e,profilePath:`${t}/${n.path}`,deprecated:!!n.deprecated}),!!a}),!a){if(!n)throw Error(`No matching profile name found`);let e=i[n];if(!e)throw Error(`No matching profile name found and default profile "${n}" missing.`);a={profileId:n,profilePath:`${t}/${e.path}`,deprecated:!!e.deprecated}}let o=yield TE(a.profilePath),s;if(r){let t;if(t=o.layouts[e.handedness],!t)throw Error(`No matching handedness, ${e.handedness}, in profile ${a.profileId}`);t.assetPath&&(s=a.profilePath.replace(`profile.json`,t.assetPath))}return{profile:o,assetPath:s}})}var OE={xAxis:0,yAxis:0,button:0,state:wE.ComponentState.DEFAULT};function kE(e=0,t=0){let n=e,r=t;if(Math.sqrt(e*e+t*t)>1){let i=Math.atan2(t,e);n=Math.cos(i),r=Math.sin(i)}return{normalizedXAxis:n*.5+.5,normalizedYAxis:r*.5+.5}}var AE=class{constructor(e){this.componentProperty=e.componentProperty,this.states=e.states,this.valueNodeName=e.valueNodeName,this.valueNodeProperty=e.valueNodeProperty,this.valueNodeProperty===wE.VisualResponseProperty.TRANSFORM&&(this.minNodeName=e.minNodeName,this.maxNodeName=e.maxNodeName),this.value=0,this.updateFromComponent(OE)}updateFromComponent({xAxis:e,yAxis:t,button:n,state:r}){let{normalizedXAxis:i,normalizedYAxis:a}=kE(e,t);switch(this.componentProperty){case wE.ComponentProperty.X_AXIS:this.value=this.states.includes(r)?i:.5;break;case wE.ComponentProperty.Y_AXIS:this.value=this.states.includes(r)?a:.5;break;case wE.ComponentProperty.BUTTON:this.value=this.states.includes(r)?n:0;break;case wE.ComponentProperty.STATE:this.valueNodeProperty===wE.VisualResponseProperty.VISIBILITY?this.value=this.states.includes(r):this.value=+!!this.states.includes(r);break;default:throw Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`)}}},jE=class{constructor(e,t){if(!e||!t||!t.visualResponses||!t.gamepadIndices||Object.keys(t.gamepadIndices).length===0)throw Error(`Invalid arguments supplied`);this.id=e,this.type=t.type,this.rootNodeName=t.rootNodeName,this.touchPointNodeName=t.touchPointNodeName,this.visualResponses={},Object.keys(t.visualResponses).forEach(e=>{let n=new AE(t.visualResponses[e]);this.visualResponses[e]=n}),this.gamepadIndices=Object.assign({},t.gamepadIndices),this.values={state:wE.ComponentState.DEFAULT,button:this.gamepadIndices.button===void 0?void 0:0,xAxis:this.gamepadIndices.xAxis===void 0?void 0:0,yAxis:this.gamepadIndices.yAxis===void 0?void 0:0}}get data(){return Object.assign({id:this.id},this.values)}updateFromGamepad(e){if(this.values.state=wE.ComponentState.DEFAULT,this.gamepadIndices.button!==void 0&&e.buttons.length>this.gamepadIndices.button){let t=e.buttons[this.gamepadIndices.button];this.values.button=t.value,this.values.button=this.values.button<0?0:this.values.button,this.values.button=this.values.button>1?1:this.values.button,t.pressed||this.values.button===1?this.values.state=wE.ComponentState.PRESSED:(t.touched||this.values.button>wE.ButtonTouchThreshold)&&(this.values.state=wE.ComponentState.TOUCHED)}this.gamepadIndices.xAxis!==void 0&&e.axes.length>this.gamepadIndices.xAxis&&(this.values.xAxis=e.axes[this.gamepadIndices.xAxis],this.values.xAxis=this.values.xAxis<-1?-1:this.values.xAxis,this.values.xAxis=this.values.xAxis>1?1:this.values.xAxis,this.values.state===wE.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>wE.AxisTouchThreshold&&(this.values.state=wE.ComponentState.TOUCHED)),this.gamepadIndices.yAxis!==void 0&&e.axes.length>this.gamepadIndices.yAxis&&(this.values.yAxis=e.axes[this.gamepadIndices.yAxis],this.values.yAxis=this.values.yAxis<-1?-1:this.values.yAxis,this.values.yAxis=this.values.yAxis>1?1:this.values.yAxis,this.values.state===wE.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>wE.AxisTouchThreshold&&(this.values.state=wE.ComponentState.TOUCHED)),Object.values(this.visualResponses).forEach(e=>{e.updateFromComponent(this.values)})}},ME=class{constructor(e,t,n){if(!e)throw Error(`No xrInputSource supplied`);if(!t)throw Error(`No profile supplied`);this.xrInputSource=e,this.assetUrl=n,this.id=t.profileId,this.layoutDescription=t.layouts[e.handedness],this.components={},Object.keys(this.layoutDescription.components).forEach(e=>{let t=this.layoutDescription.components[e];this.components[e]=new jE(e,t)}),this.updateFromGamepad()}get gripSpace(){return this.xrInputSource.gripSpace}get targetRaySpace(){return this.xrInputSource.targetRaySpace}get data(){let e=[];return Object.values(this.components).forEach(t=>{e.push(t.data)}),e}updateFromGamepad(){Object.values(this.components).forEach(e=>{e.updateFromGamepad(this.xrInputSource.gamepad)})}},NE=`https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles`,PE=`generic-trigger`,FE=class extends l.Object3D{constructor(){super(),this.motionController=null,this.envMap=null}setEnvironmentMap(e){return this.envMap==e?this:(this.envMap=e,this.traverse(e=>{e instanceof l.Mesh&&e.isMesh&&(e.material.envMap=this.envMap,e.material.needsUpdate=!0)}),this)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.motionController&&(this.motionController.updateFromGamepad(),Object.values(this.motionController.components).forEach(e=>{Object.values(e.visualResponses).forEach(e=>{let{valueNode:t,minNode:n,maxNode:r,value:i,valueNodeProperty:a}=e;t&&(a===wE.VisualResponseProperty.VISIBILITY?t.visible=i:a===wE.VisualResponseProperty.TRANSFORM&&(t.quaternion.copy(n.quaternion).slerp(r.quaternion,i),t.position.lerpVectors(n.position,r.position,i)))})}))}};function IE(e,t){Object.values(e.components).forEach(e=>{let{type:n,touchPointNodeName:r,visualResponses:i}=e;if(n===wE.ComponentType.TOUCHPAD)if(e.touchPointNode=t.getObjectByName(r),e.touchPointNode){let t=new l.Mesh(new l.SphereGeometry(.001),new l.MeshBasicMaterial({color:255}));e.touchPointNode.add(t)}else console.warn(`Could not find touch dot, ${e.touchPointNodeName}, in touchpad component ${e.id}`);Object.values(i).forEach(e=>{let{valueNodeName:n,minNodeName:r,maxNodeName:i,valueNodeProperty:a}=e;if(a===wE.VisualResponseProperty.TRANSFORM){if(e.minNode=t.getObjectByName(r),e.maxNode=t.getObjectByName(i),!e.minNode){console.warn(`Could not find ${r} in the model`);return}if(!e.maxNode){console.warn(`Could not find ${i} in the model`);return}}e.valueNode=t.getObjectByName(n),e.valueNode||console.warn(`Could not find ${n} in the model`)})})}function LE(e,t){IE(e.motionController,t),e.envMap&&t.traverse(t=>{t instanceof l.Mesh&&t.isMesh&&(t.material.envMap=e.envMap,t.material.needsUpdate=!0)}),e.add(t)}var RE=class{constructor(e=null){this.gltfLoader=e,this.path=NE,this._assetCache={}}createControllerModel(e){let t=new FE,n=null;return e.addEventListener(`connected`,e=>{let r=e.data;r.targetRayMode!==`tracked-pointer`||!r.gamepad||DE(r,this.path,PE).then(({profile:e,assetPath:i})=>{t.motionController=new ME(r,e,i);let a=this._assetCache[t.motionController.assetUrl];if(a)n=a.scene.clone(),LE(t,n);else{if(!this.gltfLoader)throw Error(`GLTFLoader not set.`);this.gltfLoader.load(t.motionController.assetUrl,e=>{this._assetCache[t.motionController.assetUrl]=e,n=e.scene.clone(),LE(t,n)})}}).catch(e=>{console.warn(e)})}),e.addEventListener(`disconnected`,()=>{t.motionController=null,t.remove(n),n=null}),t}},zE=class{constructor(){this.states=new Map}sample(e,t,n,r){let i=this.states.get(e),a=i==null?void 0:i.get(t);if(!a){if(!n)return[];let a=i;return a||(a=new Map,this.states.set(e,a)),a.set(t,{downAt:r,pressFired:!1}),[{type:`buttonDown`,name:t,source:e,time:r,duration:0}]}let o=r-a.downAt,s=o>=300;if(n)return s&&!a.pressFired?(a.pressFired=!0,[{type:`press`,name:t,source:e,time:r,duration:o}]):[];this.deleteState(e,t);let c=[];return a.pressFired?c.push({type:`buttonUp`,name:t,source:e,time:r,duration:o}):s?(c.push({type:`press`,name:t,source:e,time:r,duration:o}),c.push({type:`buttonUp`,name:t,source:e,time:r,duration:o})):(c.push({type:`buttonUp`,name:t,source:e,time:r,duration:o}),c.push({type:`tap`,name:t,source:e,time:r,duration:o})),c}removeSource(e,t){let n=this.states.get(e);if(!n)return[];let r=[];for(let[i,a]of n)r.push({type:`buttonUp`,name:i,source:e,time:t,duration:t-a.downAt});return this.states.delete(e),r}reset(e){let t=[];for(let[n,r]of this.states)for(let[i,a]of r)t.push({type:`buttonUp`,name:i,source:n,time:e,duration:e-a.downAt});return this.states.clear(),t}deleteState(e,t){let n=this.states.get(e);n&&(n.delete(t),n.size===0&&this.states.delete(e))}},BE=Object.assign(Object.assign({},gl(mT,[`maxLatitude`,`minLatitude`])),{referenceSpaceType:`local-floor`,foveation:1,showControllerModel:!0,showPointerRay:!0,deviceProfile:{}}),VE=5,HE=1e-4,UE=1500;function WE(){return{load(e,t){ml.ajax(e,{responseType:`arraybuffer`}).then(t=>{var n;return Sp(t.body,{resourcePath:e.slice(0,e.lastIndexOf(`/`)+1),search:(n=e.split(`?`)[1])==null?``:n,fetcher:ml})}).then(e=>t(e)).catch(t=>{console.warn(`[XRPanorama] 手柄模型 glTF 加载失败,跳过模型挂载:`,e,t)})}}}var GE=class e extends hT{static parseArgs(t){if(t instanceof e)return t;let n=Object.assign(Object.assign({},t),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2});return super.parseArgs(n)}static initAnimationEndState(e){let t=this.parseArgs(e),n=super.initAnimationEndState(t);return Object.assign(Object.assign({},n),{mode:`XRPanorama`})}constructor(t){var n,r,i,a,o;let s=e.parseArgs(t);super(s),this.controllerRayFilled={left:!1,right:!1},this.controllerModelFactory=null,this.buttonStateMachine=new zE,this.inputVisuals=new Map,this.inputsDirty=!1,this.walkedThisFrame=!1,this.lastFrameTime=0,this.walkSources={left:null,right:null},this.gazeRayPool=null,this.mode=`XRPanorama`;let c=BE,l=(n=t.referenceSpaceType)==null?c.referenceSpaceType:n,u=(r=t.foveation)==null?c.foveation:r;this.showControllerModel=(i=t.showControllerModel)==null?c.showControllerModel:i,this.showPointerRay=(a=t.showPointerRay)==null?c.showPointerRay:a,this.controllerRaycasters={left:this.createPickingRaycaster(),right:this.createPickingRaycaster()},this.gazeRaycaster=null,this.xrManager=new CE(this.renderer,{referenceSpaceType:l,foveation:u,deviceProfile:(o=t.deviceProfile)==null?c.deviceProfile:o},{onSessionStart:(e,t)=>{this.emit(`xr.session.start`,$(`xr.session.start`,{session:e,machineType:kS(t)}))},onSessionEnd:e=>{this.emit(`xr.session.end`,$(`xr.session.end`,{session:null,machineType:kS(e)}))},onSessionEnding:()=>{this.resetButtonStates(),this.clearInputVisuals()},onSelect:e=>this.onXRSelect(e),onInputSourcesChange:(e,t)=>{for(let e of t){this.removeInputVisual(e);for(let t of this.buttonStateMachine.removeSource(e,this.lastFrameTime))this.dispatchButtonEvent(t)}for(let t of e)this.syncInputVisual(t)}}),this.buttonMaps={left:this.createButtonMap(`left`),right:this.createButtonMap(`right`)},this.scene.add(this.xrManager.inputs.root);let d=iu.shared.getContext();(d?this.xrManager.enter(d):Promise.reject(Error(`[XR] 缺少 XRSession:请经 Five.changeMode 进入 XRPanorama`))).catch(e=>{console.error(`[XR] 进入失败`,e),this.emit(`error`,e instanceof Error?e:Error(String(e)))})}updateConfiguration(e){let t=super.updateConfiguration(Object.assign(Object.assign({},e),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2}));return e.showControllerModel!==void 0&&e.showControllerModel!==this.showControllerModel&&(this.showControllerModel=e.showControllerModel,this.inputsDirty=!0),e.showPointerRay!==void 0&&e.showPointerRay!==this.showPointerRay&&(this.showPointerRay=e.showPointerRay,this.inputsDirty=!0),t}updateTime(e,t,...n){var r,i;if(this.destroyed)return;this.walkedThisFrame=!1,this.lastFrameTime=e;let a=n[1];if(this.userAction=!0,this.needsRender=!0,!a){this.controllerRayFilled.left=!1,this.controllerRayFilled.right=!1,this.gazeRaycaster=null,super.updateTime(e,t),this.intersect(e);return}super.updateTime(e,t);let o=this.xrManager.beginFrame(a,e,this.camera.position,this.camera.near,this.camera.far);if(o.hasPose&&this.syncCameraFromXR(o.headOrientation),this.inputsDirty){this.inputsDirty=!1;for(let e of this.xrManager.inputs.entries().keys())this.syncInputVisual(e)}this.updateControllerHelper((i=(r=this.xrManager.session)==null?void 0:r.inputSources)==null?[]:i,e,t),this.updateGazeRay(),this.intersect(e)}syncCameraFromXR(e){this.camera.quaternion.copy(e),this.camera.matrix.compose(this.camera.position,this.camera.quaternion,this.camera.scale),this.camera.computePose(this.camera.pose.distance)}render(){return this.xrManager.isPresenting?(this.xrManager.renderEyes(this.scene),!0):!1}updateCamera(e,t,n){return Promise.resolve()}updateCameraWithKeyframes(e,t,n){return Promise.resolve()}setCamera(e={}){e.offset&&this.camera.position.copy(e.offset),this.camera.matrix.compose(this.camera.position,this.camera.quaternion,this.camera.scale),this.camera.computePose(this.camera.pose.distance)}updateRenderSize(){this.needsRender=!0}isReady(){return!1}createPickingRaycaster(){let e=new l.Raycaster;return e.params.Points={threshold:.1},e.firstHitOnly=!0,e.floorIndex=-1,e}updateControllerHelper(e,t,n){var r,i,a;if(this.controllerRayFilled.left=!1,this.controllerRayFilled.right=!1,this.walkSources.left=null,this.walkSources.right=null,!e||e.length===0)return;let o={up:0,down:0,left:0,right:0},s={up:0,down:0,left:0,right:0},c={X:!1,Y:!1,LeftTrigger:!1,LeftPinch:!1,A:!1,B:!1,RightTrigger:!1,RightPinch:!1};for(let n=0;n<e.length;n++){let l=e[n];if(!l)continue;let u=l.handedness===`left`?`left`:`right`;this.xrManager.fillRaycaster(l,this.controllerRaycasters[u])&&(this.controllerRayFilled[u]=!0),this.readAxes(l.gamepad,u===`left`?o:s);let d=(r=l.gamepad)==null?void 0:r.buttons;for(let{name:e,index:n}of this.buttonMaps[u]){let r=(a=(i=d==null?void 0:d[n])==null?void 0:i.pressed)==null?!1:a;r&&(c[e]=!0);for(let n of this.buttonStateMachine.sample(l,e,r,t))this.dispatchButtonEvent(n)}}this.emit(`xr.controller.update`,$(`xr.controller.update`,{left:{axes:o,raycaster:this.controllerRaycasters.left,deltaTime:n},right:{axes:s,raycaster:this.controllerRaycasters.right,deltaTime:n},buttons:c})),this.walkByTap()}createButtonMap(e){let t=this.xrManager.profile.buttons,n=e===`left`,r=[[n?`LeftTrigger`:`RightTrigger`,t.trigger],[n?`X`:`A`,t.primary],[n?`Y`:`B`,t.secondary],[n?`LeftPinch`:`RightPinch`,t.pinch]],i=[];for(let[e,t]of r)t!==null&&i.push({name:e,index:t});return i}dispatchButtonEvent(e){let{type:t,name:n,source:r}=e,i=this.emitGesture(`xr.gesture.${t}`,n,t===`buttonDown`||t===`tap`,t===`buttonUp`||t===`tap`);t===`tap`&&!i.defaultPrevented&&(n===`RightTrigger`?this.walkSources.right=r:n===`LeftTrigger`&&(this.walkSources.left=r))}walkByTap(){this.tryWalk(this.walkSources.right,`right`),this.tryWalk(this.walkSources.left,`left`)}tryWalk(e,t){if(!e||this.walkedThisFrame)return;let n=this.controllerRaycasters[t];this.xrManager.fillRaycaster(e,n)&&(this.walkedThisFrame=!0,this.activePanoMesh=void 0,this.activeTime=void 0,this.checkSelectedPano(n))}resetButtonStates(){for(let e of this.buttonStateMachine.reset(this.lastFrameTime))this.dispatchButtonEvent(e)}readAxes(e,t){var n,r;if(!e)return;let{x:i,y:a}=this.xrManager.profile.axes,o=(n=i===null?0:e.axes[i])==null?0:n,s=(r=a===null?0:e.axes[a])==null?0:r;t.right=o>0?o:0,t.left=o<0?-o:0,t.down=s>0?s:0,t.up=s<0?-s:0}getControllerModelFactory(){if(!this.controllerModelFactory){let e=new RE;e.gltfLoader=WE(),this.controllerModelFactory=e}return this.controllerModelFactory}syncInputVisual(e){let t=this.xrManager.inputs.entries().get(e);if(!t)return;let n=this.inputVisuals.get(e);n||(n={},this.inputVisuals.set(e,n));let r=e.targetRayMode===`tracked-pointer`,i=r&&!!e.gamepad&&!!e.gripSpace&&this.showControllerModel&&this.xrManager.profile.model!==`none`;if(i&&!n.model){let r=new l.Object3D,i=this.getControllerModelFactory().createControllerModel(r);r.dispatchEvent({type:`connected`,data:e}),t.grip.add(i),n.model=i}else!i&&n.model&&(n.model.removeFromParent(),n.model=void 0);let a=r&&this.showPointerRay;if(a&&!n.ray){let e=new l.BufferGeometry;e.setAttribute(`position`,new l.Float32BufferAttribute([0,0,0,0,0,-5],3));let r=new l.LineBasicMaterial({color:16777215,depthTest:!1,depthWrite:!1,transparent:!0}),i=new l.LineSegments(e,r);i.renderOrder=999,i.frustumCulled=!1,t.targetRay.add(i),n.ray=i,n.rayLength=VE}else!a&&n.ray&&(this.disposeRay(n.ray),n.ray=void 0)}updatePointerRayLength(e,t){for(let[n,r]of this.inputVisuals){let i=r.ray;if(!i)continue;let a=n.handedness===`left`?`left`:`right`,o=VE;if(e&&t&&e===this.controllerRaycasters[a]&&(o=Math.min(e.ray.origin.distanceTo(t),VE)),r.rayLength!==void 0&&Math.abs(r.rayLength-o)<HE)continue;let s=i.geometry.getAttribute(`position`);s.setZ(1,-o),s.needsUpdate=!0,r.rayLength=o}}removeInputVisual(e){var t;let n=this.inputVisuals.get(e);n&&((t=n.model)==null||t.removeFromParent(),n.ray&&this.disposeRay(n.ray),this.inputVisuals.delete(e))}clearInputVisuals(){for(let e of Array.from(this.inputVisuals.keys()))this.removeInputVisual(e)}disposeRay(e){e.removeFromParent(),e.geometry.dispose(),e.material.dispose()}emitGesture(e,t,n,r){let i=$(e,{session:this.xrManager.session,buttons:t,machineType:kS(this.xrManager.device),isFirst:n,isFinal:r,controllers:{raycaster:{leftRay:this.controllerRaycasters.left,rightRay:this.controllerRaycasters.right}}});return this.emit(e,i),i}updateGazeRay(){var e,t;let n=(e=this.xrManager.session)==null?void 0:e.inputSources;if(!n||n.length===0){this.gazeRaycaster=null;return}let r=null;for(let e=0;e<n.length;e++){let t=n[e];if(!t)continue;let i=t.targetRayMode;if(i===`transient-pointer`||i===`gaze`||t.hand!=null){r=t;break}}if(!r){this.gazeRaycaster=null;return}let i=(t=this.gazeRayPool)==null?this.gazeRayPool=this.createPickingRaycaster():t;this.gazeRaycaster=this.xrManager.fillRaycaster(r,i)?i:null}onXRSelect(e){var t;if(e.targetRayMode!==`gaze`&&e.targetRayMode!==`transient-pointer`)return;let n=(t=this.gazeRayPool)==null?this.gazeRayPool=this.createPickingRaycaster():t;this.xrManager.fillRaycaster(e,n)&&this.checkSelectedPano(n)}pickPickingRaycaster(){return this.gazeRaycaster?this.gazeRaycaster:this.controllerRayFilled.right?this.controllerRaycasters.right:this.controllerRayFilled.left?this.controllerRaycasters.left:null}intersect(e){var t,n;if(this.locationMotion.ended===!1){this.intersectMesh.visible=!1,this.activePanoMesh=void 0,this.activeTime=void 0,this.updatePointerRayLength(null,null);return}if(this.activePanoMesh&&this.activeTime&&e-this.activeTime>UE){let e=this.activePanoMesh,t=null;return this.panoMeshes.forEach((n,r)=>{n===e&&(t=r)}),t!==null&&(this.moveToPano(_b(t),{},!0),this.walkedThisFrame=!0),this.activePanoMesh=void 0,this.activeTime=void 0,this.updatePointerRayLength(null,null),e}let r=this.pickPickingRaycaster();if(!r){this.intersectMesh.visible=!1,this.activePanoMesh=void 0,this.activeTime=void 0,this.updatePointerRayLength(null,null);return}let i,a=[],o=this.works.getObserver(this.currentPano),s=o?o.accessibleNodes.map(e=>gb({panoIndex:e,workCode:o.work.workCode})):[];for(let e of s){let i=this.panoMeshes.get(e);if(i){let[e]=r.intersectObject((t=i.hitTestMesh)==null?i:t,!0);if(e){let t=(n=o==null?void 0:o.floorIndex)==null?0:n;a.push({panoMesh:i,intersection:Object.assign({floorIndex:t,floor:t},e)})}}}let[c]=a.sort((e,t)=>e.intersection.distance-t.intersection.distance);c?(i=c.intersection,this.activePanoMesh!==c.panoMesh&&(this.activePanoMesh=c.panoMesh,this.activeTime=e),this.intersectMesh.position.copy(c.panoMesh.position),this.intersectMesh.lookAt(this.camera.position)):(this.activePanoMesh=void 0,this.activeTime=void 0),i||(i=this.modelScene.intersectRaycaster(r)[0]),this.updatePointerRayLength(r,i?i.point:null);let u=$(`intersect.update`,{raycaster:r,intersection:i==null?null:i,object:this.intersectMesh});if(this.emit(`intersect.update`,u),u.defaultPrevented){this.hideIntersectMesh();return}if(i&&i.face){let e=i.face.normal,t=new l.Quaternion;t.setFromUnitVectors(new l.Vector3(0,0,1),e),this.intersectMesh.quaternion.copy(t);let n=i.point.clone();this.intersectMesh.position.copy(n),c?this.intersectMesh.visible=!1:this.intersectMesh.visible=!0}else this.intersectMesh.visible=!1;return c==null?void 0:c.panoMesh}checkSelectedPano(e){var t;this.stopMomentumMovement();let n=this.works.getObserver(this.currentPano);if(!n)return;let r=n.work.observers,i=n.accessibleNodes.filter(e=>{if(e===this.currentPano.panoIndex&&n.work.workCode===this.currentPano.workCode)return!1;let t=r[e];return!t||t.position.clone().applyMatrix4(t.work.transform).distanceTo(this.camera.position)>this.maxAccessibleDistance?!1:t.loadable||t.active}),a=null,[o]=this.modelScene.intersectRaycaster(e);if(o){let[e,n]=nm(i,e=>{let t=r[e];return t?t.standingPosition.clone().applyMatrix4(t.work.transform).distanceTo(o.point):1/0},!0);typeof e==`number`&&n<this.panoTapTriggerRadius&&(a=(t=r[e])==null?null:t)}if(a||(a=this.getForwardObserverOrNot(this.xrManager.eyeCameras[0],e)),a&&a.panoId===gb(this.currentPano)&&(a=null),a&&!this.locationMotion.ended){for(let e of this.locationMotion.keyframes)if(this.panoResourceFromLocationMotionKeyframe(e).panoId===a.panoId){a=null;break}}if(!a){this.locationMotion.ended===!0&&this.cameraBounce();return}let s={workCode:a.work.workCode,panoIndex:a.panoIndex,mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,distance:0,offset:a.position.clone()};if(this.emit(`pano.select`,$(`pano.select`,{prevPano:this.currentPano,state:s,userAction:!0,options:{},progress:0,error:null})),!a.active){let e=this.panoMeshes.get(a.panoId);e&&(e.setDisabled(!1),e.setLoading(!0));return}this.emit(`pano.request`,$(`pano.request`,{userAction:!0,prevPano:this.currentPano,state:s,options:{},progress:0,error:null}))}destroy(){super.destroy(),this.xrManager.dispose(),this.clearInputVisuals(),this.scene.remove(this.xrManager.inputs.root)}onPanGesture(){}onTapGesture(){}onPinchGesture(){}onMouseMove(){}onMouseOut(){}},KE=new l.Vector3(0,1.6,0),qE=new l.Box3,JE=new l.Vector3,YE=Object.assign({},uw),XE=class e extends dw{static parseArgs(t){return t instanceof e?t:super.parseArgs(t)}static initAnimationEndState(e){var t,n,r,i,a,o;let s=this.parseArgs(e),c=s.works,{state:u,currentState:d}=e.initial,f=typeof u.panoIndex==`number`?{workCode:(r=(t=u.workCode)==null?(n=s.works[0])==null?void 0:n.workCode:t)==null?``:r,panoIndex:u.panoIndex}:{workCode:d.workCode,panoIndex:d.panoIndex},p=c.getObserver(f),m=H((i=u.fov)==null?!p||CC(d.mode)?d.fov:s.defaultFov:i,s.minFov,s.maxFov),h=(a=u.longitude)==null?d.longitude:a,g=H(typeof s.minLatitude==`function`?s.minLatitude(m):s.minLatitude,-Math.PI/2,Math.PI/2),_=H(typeof s.maxLatitude==`function`?s.maxLatitude(m):s.maxLatitude,-Math.PI/2,Math.PI/2),v=H((o=u.latitude)==null?!p||CC(d.mode)?d.latitude:s.defaultLatitude:o,g,_),y=new l.Vector3;if(s.initial.state.offset)y.copy(s.initial.state.offset);else if(p)y.copy(p.position).applyMatrix4(p.work.transform);else{let e=_a(d).setLength(d.distance);y.copy(s.initial.currentState.offset).sub(e)}return{workCode:f.workCode,panoIndex:f.panoIndex,mode:`Model`,longitude:h,latitude:v,fov:m,offset:y,distance:0}}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`Model`,this.locationMotion=new J({x:this.camera.pose.offset.x,y:this.camera.pose.offset.y,z:this.camera.pose.offset.z,distance:this.camera.pose.distance}),this.modelAlphaMotion=new J({modelAlpha:this.modelScene.parameter.resolveValue().modelAlpha}),this.perspToOrthoMotion=new J({perspToOrtho:this.camera.perspToOrtho.x})}updateConfiguration(e){return super.updateConfiguration(e)}destroy(){super.destroy(),this.locationMotion.dispose()}isReady(){return this.locationMotion.ended===!1?!1:super.isReady()}updateWork(t,n,r,i){this.works=t;let a=e.initAnimationEndState(Object.assign(Object.assign({},this),{initial:{currentState:Object.assign(Object.assign({},this.currentPano),this.camera.pose),duration:r.duration,effect:r.effect,state:n,userAction:i}}));return(a.workCode!==this.currentPano.workCode||a.panoIndex!==this.currentPano.panoIndex||a.longitude!==this.cameraMotion.value.longitude||a.latitude!==this.cameraMotion.value.latitude||a.fov!==this.cameraMotion.value.fov)&&this.moveToPosition(a.offset,{duration:0,longitude:a.longitude,latitude:a.latitude,fov:a.fov},i),!0}updateCamera(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r={},i={};return r.distance=0,e.offset!==void 0&&(r.x=e.offset.x,r.y=e.offset.y,r.z=e.offset.z),e.longitude!==void 0&&(i.longitude=e.longitude),e.latitude!==void 0&&(i.latitude=e.latitude),e.fov!==void 0&&(i.fov=e.fov),this.locationMotion.set(r,t).catch(K),this.cameraMotion.set(i,t).catch(K)})}updateCameraWithKeyframes(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r=[],i=[];for(let t of e)r.push({key:t.key,progress:t.progress,value:{distance:0,x:t.value.offset.x,y:t.value.offset.x,z:t.value.offset.x}}),i.push({key:t.key,progress:t.progress,value:{longitude:t.value.longitude,latitude:t.value.latitude,fov:t.value.fov}});return this.locationMotion.setKeyframes(r,t).catch(K),this.cameraMotion.setKeyframes(e,t)})}updateTime(e,t,...n){if(this.destroyed)return;let r={},i={};if(this.modelAlphaMotion.ended||(this.modelAlphaMotion.update(e),r.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.modelScene.parameter.modelAlpha===0&&this.modelScene.parameter.progress!==1){let{pano0:e,pano1:t}=this.modelScene.parameter;e&&e.map!==(t==null?void 0:t.map)&&e.map.dispose(),r.progress=1,r.pano0=r.pano1=t}if(this.perspToOrthoMotion.ended||(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(H(this.perspToOrthoMotion.value.perspToOrtho,0,1))),!this.locationMotion.ended){this.locationMotion.update(e),i.distance=this.locationMotion.value.distance,i.offset=new l.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z);let t=new l.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),n=[];for(let e of this.works){let r=this.modelScene.models.find(t=>t.work===e);if(!(!r||r.visible===!1)&&!(e.observers.length<=0)&&(qE.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform),qE.containsPoint(t)))for(let t of e.observers)n.push(t)}let r=nm(n,e=>JE.copy(e.position).applyMatrix4(e.work.transform).distanceTo(t));this.currentPano=r?{workCode:r.work.workCode,panoIndex:r.panoIndex}:{workCode:``,panoIndex:0}}this.cameraMotion.ended||(this.cameraMotion.update(e),i.longitude=this.cameraMotion.value.longitude,i.latitude=this.cameraMotion.value.latitude,i.fov=this.cameraMotion.value.fov),wC(r)||this.modelScene.parameter.set(r),wC(i)||this.setCamera(i);let a=this.works.getObserver(this.currentPano);if(this.intersectMesh&&this.intersectMesh.parent&&a&&a.position.y-a.standingPosition.y>10){let e=H(this.camera.position.distanceTo(this.intersectMesh.position)*(2*Math.tan(.5*this.camera.fov/180*Math.PI))/5,.5);this.intersectMesh.scale.setScalar(e)}else this.intersectMesh.scale.setScalar(1)}initAnimation(){return this.destroyed?Promise.resolve():new Promise(t=>{let{state:n,currentState:r,duration:i,userAction:a}=this.initial;this.userAction=a;let o=e.initAnimationEndState(this),s={modelAlpha:1},c={perspToOrtho:0},l={longitude:o.longitude,latitude:o.latitude,fov:o.fov,duration:i,moveStartCallback:e=>{this.perspToOrthoMotion.set(c,i).catch(K),this.modelAlphaMotion.set(s,i).catch(K),this.emit(`initAnimation.start`,$(`initAnimation.start`,{state:e,userAction:this.userAction}))},moveEndCallback:e=>{this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:e,userAction:this.userAction})),t()},moveCancelCallback:()=>{let e=this.currentPano,n=Object.assign(Object.assign({},e),{mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance});this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:n,userAction:this.userAction})),t()}};this.moveToPosition(o.offset,l,a)})}getTargetState(){let e=this.cameraMotion.getKeyFrameSegment(G())[1],t=this.locationMotion.getKeyFrameSegment(G())[1];return Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:e.value.longitude,latitude:e.value.latitude,fov:e.value.fov,offset:new l.Vector3(t.value.x,t.value.y,t.value.z),distance:t.value.distance})}moveToPano(e,t={},n){let r=this.works.getObserver(e);if(r){let e=new l.Vector3().copy(r.position).applyMatrix4(r.work.transform);this.moveToPosition(e,t,n)}}moveToPosition(e,t={},n){var r,i,a;this.userAction=n,this.stopMomentumMovement();let o=G(),s=new l.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),c=s.distanceTo(e),u=this.locationMotion.getProgressVelocity(o),d=0;for(let e=1;e<this.locationMotion.keyframes.length;e++){let{x:t,y:n,z:r}=this.locationMotion.keyframes[e-1].value,{x:i,y:a,z:o}=this.locationMotion.keyframes[e].value;d+=Math.sqrt(Math.pow(i-t,2)+Math.pow(a-n,2)+Math.pow(o-r,2))}let f=c===0?0:u*d/c,p=this.calculateMovingDuration(t.duration,c),m={x:e.x,y:e.y,z:e.z,distance:0},h={longitude:t.longitude,latitude:t.latitude,fov:t.fov},g=[];for(let e of this.works){let t=this.modelScene.models.find(t=>t.work===e);if(!(!t||t.visible===!1)&&!(e.observers.length<=0)&&(qE.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform),qE.containsPoint(s)))for(let t of e.observers)g.push(t)}let _=nm(g,e=>JE.copy(e.position).applyMatrix4(e.work.transform).distanceTo(s)),v=_?{workCode:_.work.workCode,panoIndex:_.panoIndex}:{workCode:``,panoIndex:0},y=Object.assign(Object.assign({},v),{mode:this.mode,longitude:(r=h.longitude)==null?this.camera.pose.longitude:r,latitude:(i=h.latitude)==null?this.camera.pose.latitude:i,fov:(a=h.fov)==null?this.camera.pose.fov:a,offset:e.clone(),distance:0}),b=this.currentPano;this.emit(`pano.moveTo`,$(`pano.moveTo`,{options:t,prevPano:b,progress:0,state:y,userAction:this.userAction,error:null})),t.moveStartCallback&&t.moveStartCallback(y),this.cameraMotion.set(h,p).catch(K),this.locationMotion.set(m,p,f).then(()=>{for(let e of this.modelScene.children)e instanceof Ly&&e.show();let e=Object.assign(Object.assign(Object.assign({},v),{mode:this.mode}),xC(this.camera.pose));this.emit(`pano.arrived`,$(`pano.arrived`,{options:t,prevPano:b,progress:0,state:e,userAction:this.userAction,error:null})),t.moveEndCallback&&t.moveEndCallback(e)},()=>{t.moveCancelCallback&&t.moveCancelCallback(),this.emit(`pano.cancel`,$(`pano.cancel`,{options:t,prevPano:b,progress:0,state:y,userAction:this.userAction,error:null}))})}onTapGesture(e){let t=e.center.raycaster;this.stopMomentumMovement();let[n]=this.modelScene.intersectRaycaster(t);if(n&&n.face){let e=n.face.normal,t=n.point;if(new l.Vector3(0,1,0).angleTo(e)>Math.PI/3){let r=new l.Raycaster;r.firstHitOnly=!0;let i=e.clone().setLength(.3).add(t);r.set(i,new l.Vector3(0,-1,0)),n=this.modelScene.intersectRaycaster(r)[0]}}if(n){let t=new l.Vector3().copy(n.point).add(KE),r=[];for(let e of this.works){let n=this.modelScene.models.find(t=>t.work===e);if(!(!n||n.visible===!1)&&!(e.observers.length<=0)&&(qE.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform),qE.containsPoint(t)))for(let t of e.observers)r.push(t)}let[i,a]=nm(r,e=>JE.copy(e.position).applyMatrix4(e.work.transform).distanceTo(t),!0);i&&a<5&&(t.y=JE.copy(i.position).applyMatrix4(i.work.transform).y),e.state.offset.copy(t),e.state.distance=0,this.emit(`gesture.tap`,e),e.defaultPrevented||this.moveToPosition(t,{},!0)}else this.emit(`gesture.tap`,e),e.defaultPrevented||this.cameraBounce()}},ZE=new l.Box3,QE=new l.Vector3,$E=.5,eD=Math.PI/7,tD={defaultLongitude:Math.PI/4,defaultLatitude:Math.PI/4,defaultDistance:150,maxLatitude:Math.PI/2,minLatitude:0,cameraType:`auto`,cameraFence:null,intersectMeshCreator:()=>new rw},nD={Floorplan:sw,Topview:lw,Panorama:hT,VRPanorama:cE,XRPanorama:GE,Model:XE,Mapview:class e extends UC{static parseArgs(t){var n,r,i,a,o,s,c,l;if(t instanceof e)return t;let u=super.parseArgs(t);return Object.assign(Object.assign({},u),{defaultLongitude:(n=t.defaultLongitude)==null?tD.defaultLongitude:n,defaultLatitude:(r=t.defaultLatitude)==null?tD.defaultLatitude:r,defaultDistance:(i=t.defaultDistance)==null?tD.defaultDistance:i,maxLatitude:(a=t.maxLatitude)==null?tD.maxLatitude:a,minLatitude:(o=t.minLatitude)==null?tD.minLatitude:o,cameraType:(s=t.cameraType)==null?tD.cameraType:s,cameraFence:(c=t.cameraFence)==null?tD.cameraFence:c,intersectMeshCreator:(l=t.intersectMeshCreator)==null?tD.intersectMeshCreator:l})}static distanceFromModel(e,t,n){let r=e.boundingBox,i=r.isEmpty()?10:Math.pow(Math.pow(r.max.x-r.min.x+1,2)+Math.pow(r.max.y-r.min.y+1,2)+Math.pow(r.max.z-r.min.z+1,2),1/2);i=isNaN(i)||!isFinite(i)?1:i;let a=i/2/Math.tan(Math.PI*t/360);return n<1&&(a/=n),isNaN(a)||!isFinite(a)?i:a}static initAnimationEndState(t){var n,r,i,a,o,s,c;let u=this.parseArgs(t),d=u.works,f=u.modelScene,{state:p,currentState:m}=t.initial,h=typeof p.panoIndex==`number`?{workCode:(i=(n=p.workCode)==null?(r=u.works[0])==null?void 0:r.workCode:n)==null?``:i,panoIndex:p.panoIndex}:{workCode:m.workCode,panoIndex:m.panoIndex},g=(a=p.fov)==null?60:a,_=H(typeof u.minLatitude==`function`?u.minLatitude(g):u.minLatitude,-Math.PI/2,Math.PI/2),v=H(typeof u.maxLatitude==`function`?u.maxLatitude(g):u.maxLatitude,-Math.PI/2,Math.PI/2),y=H((o=p.latitude)==null?SC(m.mode)?m.latitude:u.defaultLatitude:o,_,v),b=e.distanceFromModel(u.modelScene,g,u.camera.aspect),x=new l.Vector3,S=(s=p.distance)==null?Math.min(u.defaultDistance,b):s,C=(c=p.longitude)==null?SC(m.mode)?m.longitude:u.defaultLongitude:c;if(p.offset)x.copy(p.offset);else{let e=d.getObserver(h);u.defaultDistance<b&&e?(x.copy(e.position).applyMatrix4(e.work.transform),p.longitude===void 0&&(C=m.longitude)):(f.boundingBox.getCenter(x),S=b)}return Object.assign(Object.assign({},h),{mode:`Mapview`,longitude:C,latitude:y,fov:g,offset:x,distance:S})}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`Mapview`,this.defaultLongitude=n.defaultLongitude,this.defaultLatitude=n.defaultLatitude,this.defaultDistance=n.defaultDistance,this.maxLatitude=n.maxLatitude,this.minLatitude=n.minLatitude,this.cameraType=n.cameraType,this.cameraFence=n.cameraFence,this.locationMotion=new J({x:this.camera.pose.offset.x,y:this.camera.pose.offset.y,z:this.camera.pose.offset.z,distance:this.camera.pose.distance}),this.modelAlphaMotion=new J({modelAlpha:this.modelScene.parameter.resolveValue().modelAlpha}),this.perspToOrthoMotion=new J({perspToOrtho:this.camera.perspToOrtho.x}),this.pendingTextureId=null,this.textureLoader=new gu,this.intersectMeshCreator=n.intersectMeshCreator,this.intersectMesh=this.intersectMeshCreator(),this.intersectMesh.name=`intersect`,this.intersectMesh.visible=!1,this.helper.add(this.intersectMesh)}updateConfiguration(e){if(super.updateConfiguration(e)===!1)return!1;if(e.defaultLongitude!==void 0&&this.defaultLongitude!==e.defaultLongitude&&(this.defaultLongitude=e.defaultLongitude),e.defaultLatitude!==void 0&&this.defaultLatitude!==e.defaultLatitude&&(this.defaultLatitude=e.defaultLatitude),e.defaultDistance!==void 0&&this.defaultDistance!==e.defaultDistance&&(this.defaultDistance=e.defaultDistance),e.maxLatitude!==void 0&&this.maxLatitude!==e.maxLatitude&&(this.maxLatitude=e.maxLatitude),e.minLatitude!==void 0&&this.minLatitude!==e.minLatitude&&(this.minLatitude=e.minLatitude),e.cameraType!==void 0&&this.cameraType!==e.cameraType&&(this.cameraType=e.cameraType),this.cameraFence instanceof l.Box3&&e.cameraFence instanceof l.Box3||this.cameraFence instanceof l.Sphere&&e.cameraFence instanceof l.Sphere?this.cameraFence.equals(e.cameraFence)||(this.cameraFence=e.cameraFence):e.cameraFence!==void 0&&(this.cameraFence=e.cameraFence),e.intersectMeshCreator!==void 0&&this.intersectMeshCreator!==e.intersectMeshCreator){this.intersectMeshCreator=e.intersectMeshCreator;let t=this.intersectMesh;this.intersectMesh=this.intersectMeshCreator(),this.intersectMesh.name=t.name,this.intersectMesh.visible=t.visible;let n=this.intersectMesh.parent;n&&n.add(this.intersectMesh),t.dispose()}return!0}destroy(){super.destroy(),this.pendingTextureId=null,this.locationMotion.dispose(),this.panState=void 0,this.intersectMesh.dispose(),this.helper.remove(this.intersectMesh)}isReady(){return this.locationMotion.ended===!1?!1:super.isReady()}updateWork(t,n,r,i){this.userAction=i,this.works=t;let a=e.initAnimationEndState(Object.assign(Object.assign({},this),{initial:{currentState:Object.assign(Object.assign({},this.currentPano),this.camera.pose),duration:r.duration,effect:r.effect,state:n,userAction:i}}));this.currentPano={workCode:a.workCode,panoIndex:a.panoIndex};let o={longitude:a.longitude,latitude:a.latitude,fov:a.fov},s={x:a.offset.x,y:a.offset.y,z:a.offset.z,distance:a.distance};return(o.longitude!==this.cameraMotion.value.longitude||o.latitude!==this.cameraMotion.value.latitude||o.fov!==this.cameraMotion.value.fov)&&this.cameraMotion.set(o,r.duration).catch(K),(s.x!==this.locationMotion.value.x||s.y!==this.locationMotion.value.y||s.z!==this.locationMotion.value.z||s.distance!==this.locationMotion.value.distance)&&this.locationMotion.set(s,r.duration).catch(K),!0}updateModel(e){super.updateModel(e),this.hideIntersectMesh()}updateCamera(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r={},i={};return e.distance!==void 0&&(r.distance=e.distance),e.offset!==void 0&&(r.x=e.offset.x,r.y=e.offset.y,r.z=e.offset.z),e.longitude!==void 0&&(i.longitude=e.longitude),e.latitude!==void 0&&(i.latitude=e.latitude),e.fov!==void 0&&(i.fov=e.fov),this.locationMotion.set(r,t).catch(K),this.cameraMotion.set(i,t).catch(K)})}updateCameraWithKeyframes(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r=[],i=[];for(let t of e)r.push({key:t.key,progress:t.progress,value:{distance:t.value.distance,x:t.value.offset.x,y:t.value.offset.x,z:t.value.offset.x}}),i.push({key:t.key,progress:t.progress,value:{longitude:t.value.longitude,latitude:t.value.latitude,fov:t.value.fov}});return this.locationMotion.setKeyframes(r,t).catch(K),this.cameraMotion.setKeyframes(e,t)})}updateTime(e,t){if(this.destroyed)return;let n={},r={};if(this.locationMotion.ended||(this.locationMotion.update(e),r.distance=this.locationMotion.value.distance,r.offset=new l.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z)),this.cameraMotion.ended||(this.cameraMotion.update(e),r.longitude=this.cameraMotion.value.longitude,r.latitude=this.cameraMotion.value.latitude,r.fov=this.cameraMotion.value.fov),this.modelAlphaMotion.ended||(this.modelAlphaMotion.update(e),n.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.modelScene.parameter.modelAlpha===0&&this.modelScene.parameter.progress!==1){let{pano0:e,pano1:t}=this.modelScene.parameter;e&&e.map!==(t==null?void 0:t.map)&&e.map.dispose(),n.progress=1,n.pano0=n.pano1=t}let i=0;if(this.cameraType===`auto`?i=+(Math.abs(Math.PI/2-this.cameraMotion.value.latitude)<.02||Math.abs(-Math.PI/2-this.cameraMotion.value.latitude)<.02):this.cameraType===`perspective`?i=0:this.cameraType===`orthographic`&&(i=1),this.perspToOrthoMotion.getTargetKeyframe().value.perspToOrtho!==i&&this.perspToOrthoMotion.set({perspToOrtho:i},500).catch(K),this.perspToOrthoMotion.ended||(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(H(this.perspToOrthoMotion.value.perspToOrtho,0,1))),wC(n)||this.modelScene.parameter.set(n),wC(r)||this.setCamera(r),this.cameraFence&&!this.panState&&!this.pinchState&&!this.mouseWheelState&&!this.inMomentumMovement&&this.locationMotion.ended&&this.perspToOrthoMotion.ended&&this.cameraMotion.ended){let e=_a(this.camera.pose,new l.Vector3),t=new l.Vector3().copy(this.camera.pose.offset).sub(e.clone().multiplyScalar(this.camera.pose.distance));if(this.cameraFence.distanceToPoint(t)>.01){let e=this.cameraFence.clampPoint(t,new l.Vector3),n=this.camera.pose.offset.clone().add(e).sub(t),r=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:n,distance:this.camera.pose.distance});this.fixFinalState(r),this.locationMotion.set({x:r.offset.x,y:r.offset.y,z:r.offset.z,distance:r.distance},300).catch(K)}}if(this.intersectMesh&&this.intersectMesh.parent){let e=H(this.camera.position.distanceTo(this.intersectMesh.position)*(2*Math.tan(.5*this.camera.fov/180*Math.PI))/5,.5);this.intersectMesh.scale.setScalar(e)}else this.intersectMesh.scale.setScalar(1)}getTargetState(){let e=this.cameraMotion.getKeyFrameSegment(G())[1],t=this.locationMotion.getKeyFrameSegment(G())[1];return Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:e.value.longitude,latitude:e.value.latitude,fov:e.value.fov,distance:t.value.distance,offset:new l.Vector3(t.value.x,t.value.y,t.value.z)})}initAnimation(){return this.destroyed?Promise.resolve():new Promise(t=>{let{state:n,currentState:r,duration:i,userAction:a}=this.initial;this.userAction=a;let o=e.initAnimationEndState(this),s={longitude:o.longitude,latitude:o.latitude,fov:o.fov},c={x:o.offset.x,y:o.offset.y,z:o.offset.z,distance:o.distance};this.emit(`initAnimation.start`,$(`initAnimation.start`,{state:o,userAction:this.userAction})),this.perspToOrthoMotion.set({perspToOrtho:0},i).catch(K),this.modelAlphaMotion.set({modelAlpha:1},i/3).catch(K),this.cameraMotion.set(s,i).catch(K),this.locationMotion.set(c,i).then(()=>{this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:o,userAction:this.userAction}))},e=>{let t=Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),xC(this.camera.pose));this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:t,userAction:this.userAction}))}).then(()=>{t()})})}getForwardObserverOrNot(e){let[t]=this.modelScene.intersectRaycaster(e);if(!t)return null;let n=[];for(let t of this.works){let r=this.modelScene.models.find(e=>e.work===t);if(!(!r||r.visible===!1)&&!(t.observers.length<=0)&&(ZE.copy(t.observerBox).expandByScalar(10).applyMatrix4(t.transform),ZE.containsPoint(e.ray.origin)||e.ray.intersectsBox(ZE)))for(let e of t.observers)n.push(e)}let[r,i]=nm(n,e=>QE.copy(e.standingPosition).applyMatrix4(e.work.transform).distanceTo(t.point),!0);return r&&i<Math.max(r.standingPosition.distanceTo(this.camera.position)/5,10)?r:null}coordinatesForOffset(e){let t=this.renderer.getSize(new l.Vector2);return{longitude:-2*e.x/(t.x*this.viewport.width),latitude:2*e.y/(t.y*this.viewport.height)}}requestMomentumMovement(e,t,n,r){if(this.inMomentumMovement===null)return;r=Math.max(r,1);let i=Object.assign({},n),a={longitude:0,latitude:0,x:0,y:0,z:0};for(let e=0;e<r;e++)i.longitude*=.996,i.latitude*=.996*.998,i.x*=.99,i.y*=.99,i.z*=.99,a.longitude+=i.longitude,a.latitude+=i.latitude,a.x+=i.x,a.y+=i.y,a.z+=i.z;let o=this.cameraMotion.value.fov,s=ga(this.cameraMotion.value.longitude+a.longitude),c=H(typeof this.minLatitude==`function`?this.minLatitude(o):this.minLatitude,-Math.PI/2,Math.PI/2),u=H(typeof this.maxLatitude==`function`?this.maxLatitude(o):this.maxLatitude,-Math.PI/2,Math.PI/2),d=H(this.cameraMotion.value.latitude+a.latitude,c,u),f=new l.Vector3(this.locationMotion.value.x+a.x,this.locationMotion.value.y+a.y,this.locationMotion.value.z+a.z),p=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:s,latitude:d,offset:f,fov:o,distance:this.locationMotion.value.distance}),m=e.state.offset.clone().sub(_a(e.state).setLength(p.distance)),h=!(Math.abs(i.longitude)>1e-4||Math.abs(i.latitude)>1e-4||Math.abs(i.x)>1e-4||Math.abs(i.y)>1e-4||Math.abs(i.z)>1e-4);(this.cameraFence?this.cameraFence.containsPoint(m):!0)===!1&&(h=!0);let g=$(`gesture.momentum`,Object.assign(Object.assign({},e),{isFirst:t,isFinal:h,state:p}));if(this.emit(`gesture.fire`,g),this.inMomentumMovement.event=g,this.emit(`gesture.momentum`,g),e.defaultPrevented){this.inMomentumMovement=null;return}this.inMomentumMovement&&(this.cameraMotion.set({longitude:s,latitude:d},0).catch(K),this.locationMotion.set({x:p.offset.x,y:p.offset.y,z:p.offset.z,distance:p.distance},0).catch(K),h?this.inMomentumMovement=null:iu.shared.add((t,n)=>{this.requestMomentumMovement(e,!1,i,n)},!0))}fixFinalState(e){if(this.perspToOrthoMotion.getTargetKeyframe().value.perspToOrtho===1)return;let t=_a(e,new l.Vector3),n=new l.Vector3().copy(e.offset).sub(t.clone().setLength(e.distance)),r=new l.Raycaster(n,t);r.params.Points={threshold:.1},r.firstHitOnly=!0,r.hitFilter=e=>e.distance>$E+r.near,r.near=this.camera.near,r.far=this.camera.far;let i;if(i=this.modelScene.intersectRaycaster(r)[0],i&&i.distance<this.camera.near&&(i=void 0),!i){let e=new l.Plane(new l.Vector3(0,1,0),-this.modelScene.boundingBox.min.y),t=r.ray.intersectPlane(e,new l.Vector3);if(t){let e=t.distanceTo(r.ray.origin);e<1e3&&e>=r.near&&(i={distance:e,floorIndex:0,floor:0,point:t,object:this.scene,face:null})}}if(!i){let r=Math.max(e.distance,3);i={distance:r,floorIndex:0,floor:0,point:n.clone().add(t.clone().setLength(r)),object:this.scene,face:null}}i.distance>=this.camera.near&&dC(e.distance,i.distance)&&(e.distance=i.distance,e.offset=i.point)}onPanGesture(e){this.userAction=e.userAction,this.stopMomentumMovement(),this.hideIntersectMesh();let t=e.pointers.length,n=this.panState,r=0,i=!1;e.pointerType===`mouse`&&(r=e.center.buttons,i=e.center.shiftKey),n&&r===0&&n.buttons!==0&&(r=n.buttons);let a=n==null?void 0:n.target;if(!a){let t=this.relativeClientPosition(e.center),n=this.createRaycasterFromCamera(t,this.camera);a=new l.Vector3().copy(n.ray.direction).multiplyScalar(3).add(n.ray.origin);let[r]=this.modelScene.intersectRaycaster(n);if(!r&&n.ray.direction.y<-.3){let e=new l.Plane(new l.Vector3(0,1,0),0),t=n.ray.intersectPlane(e,new l.Vector3);if(t){let e=t.distanceTo(n.ray.origin);e<1e4&&e>=n.near&&(r={distance:e,floorIndex:0,floor:0,point:t,object:this.scene})}}if(r)a.copy(r.point);else{let e=new l.Vector3().copy(this.camera.pose.offset).sub(this.camera.position).normalize(),t=new l.Plane().setFromNormalAndCoplanarPoint(e,this.camera.pose.offset);n.ray.intersectPlane(t,a)}}if(e.isFinal?this.panState=void 0:this.panState={target:a,buttons:r,pointerLength:t,x:e.center.x,y:e.center.y},!(n===void 0||n.pointerLength!==t))if(t>1||r===2||i){let t={x:e.center.x-n.x,y:e.center.y-n.y},r=new l.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),i=_a(this.cameraMotion.value).setLength(this.locationMotion.value.distance).add(r),a=new l.Vector3().copy(i).sub(n.target).length();a*=Math.tan(this.camera.pose.fov/2*Math.PI/180);let o=this.renderer.getSize(new l.Vector2),s=2*t.x*a/o.y,c=2*t.y*a/o.y,u=new l.Vector3;u.setFromMatrixColumn(this.camera.matrix,0),u.multiplyScalar(-s),r.add(u),this.camera.pose.latitude<eD?u.setFromMatrixColumn(this.camera.matrix,1):(u.setFromMatrixColumn(this.camera.matrix,0),u.crossVectors(this.camera.up,u)),u.multiplyScalar(c),r.add(u);let d=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:r,distance:this.camera.pose.distance});if(e.state=d,this.emit(`gesture.pan`,e),e.defaultPrevented)return;if(this.locationMotion.set({x:d.offset.x,y:d.offset.y,z:d.offset.z},0).catch(K),e.isFinal&&(this.fixFinalState(d),Object.assign(e,{__fixFinalState:!0}),this.locationMotion.set({distance:d.distance,x:d.offset.x,y:d.offset.y,z:d.offset.z},0).catch(K)),e.isFinal){let t=this.renderer.getSize(new l.Vector2),n=2*e.velocityX*a/t.y,r=2*e.velocityY*a/t.y,i=new l.Vector3,o=new l.Vector3;i.setFromMatrixColumn(this.camera.matrix,0),i.multiplyScalar(-n),o.add(i),this.camera.pose.latitude<eD?i.setFromMatrixColumn(this.camera.matrix,1):(i.setFromMatrixColumn(this.camera.matrix,0),i.crossVectors(this.camera.up,i)),i.multiplyScalar(r),o.add(i),this.inMomentumMovement={uuid:Ft()},this.requestMomentumMovement(e,!0,{longitude:0,latitude:0,x:o.x,y:o.y,z:o.z},0)}}else{let t={x:e.center.x-n.x,y:e.center.y-n.y},r=this.coordinatesForOffset(t),i=ga(this.cameraMotion.value.longitude+r.longitude),a=this.camera.pose.fov,o=H(typeof this.minLatitude==`function`?this.minLatitude(a):this.minLatitude,-Math.PI/2,Math.PI/2),s=H(typeof this.maxLatitude==`function`?this.maxLatitude(a):this.maxLatitude,-Math.PI/2,Math.PI/2),c=H(this.cameraMotion.value.latitude+r.latitude,o,s);this.camera.aspect<1&&Math.abs(e.overallVelocityX)>.2&&Math.atan2(Math.abs(e.overallVelocityY),Math.abs(e.overallVelocityX))<Math.PI/6.923&&(c=this.cameraMotion.value.latitude);let l=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:i,latitude:c,fov:a,offset:this.camera.pose.offset,distance:this.camera.pose.distance});if(e.isFinal&&Object.assign(e,{__fixFinalState:!0}),e.state=l,this.emit(`gesture.pan`,e),e.defaultPrevented)return;if(e.isFinal?this.locationMotion.set({distance:l.distance,x:l.offset.x,y:l.offset.y,z:l.offset.z},0).catch(K):this.cameraMotion.set({longitude:l.longitude,latitude:l.latitude},0).catch(K),e.isFinal){let t=e.velocityX,n=e.velocityY;this.inMomentumMovement={uuid:Ft()},this.requestMomentumMovement(e,!0,Object.assign(Object.assign({},this.coordinatesForOffset({x:t,y:n})),{x:0,y:0,z:0}),0)}}}onPinchGesture(t){var n;if(!this.initAnimationIsReady)return;this.userAction=t.userAction,this.stopMomentumMovement(),this.hideIntersectMesh();let r=(n=this.pinchState)==null?void 0:n.distance;if(t.isFirst){this.pinchState={x:t.center.x,y:t.center.y,scale:1,distance:this.locationMotion.value.distance};return}if(r===void 0)return;let i=this.modelScene.boundingBox.getCenter(new l.Vector3),a=e.distanceFromModel(this.modelScene,this.cameraMotion.value.fov,this.camera.aspect),o=H(r/t.scale,$E,1/0),s=t.state.offset.clone().sub(_a(t.state).setLength(o)),c=this.modelScene.boundingBox.containsPoint(s),u;if(!c&&this.pinchState&&this.pinchState.scale>t.scale&&i.distanceTo(s)>a?u=t.state.distance:(u=o,this.pinchState&&(this.pinchState.scale=t.scale)),t.state.distance=u,this.emit(`gesture.pinch`,t),!t.defaultPrevented&&(this.locationMotion.set({distance:t.state.distance},0).catch(K),t.pointerType!==`mouse`&&(t.type=`gesture.pan`,this.onPanGesture(t)),t.isFinal)){if(!(`__fixFinalState`in t)){let e=t.state;this.fixFinalState(t.state);let n={x:e.offset.x,y:e.offset.y,z:e.offset.z,distance:e.distance};this.locationMotion.set(n,0).catch(K)}this.panState=void 0,this.pinchState=void 0}}onMouseMove(e){var t,n;if(!this.intersectMesh.parent||this.panState||this.pinchState||this.mouseWheelState||(this.emit(`gesture.mousemove`,e),e.defaultPrevented))return;let r=e.center.raycaster;if(e.isFinal&&this.intersectMesh.parent&&this.intersectMesh.visible===!0){this.hideIntersectMesh();return}let[i]=this.modelScene.intersectRaycaster(r),a=$(`intersect.update`,{raycaster:r,intersection:i==null?null:i,object:this.intersectMesh});if(this.emit(`intersect.update`,a),a.defaultPrevented){this.hideIntersectMesh();return}if(i){let e=(n=(t=i.face)==null?void 0:t.normal)==null?new l.Vector3().copy(r.ray.direction).multiplyScalar(-1):n,a=e.clone(),o=i.point.clone();this.intersectMesh.position.copy(o);let s=o.clone().add(a);if(this.intersectMesh.lookAt(s),Math.abs(e.y)>.99){let e=this.camera.position.clone().sub(o);this.intersectMesh.rotation.z=-Math.atan2(e.z,e.x)}this.intersectMesh.visible=!0,this.needsRender=!0}else this.hideIntersectMesh()}onMouseWheel(t){if(this.initAnimationIsReady)if(this.userAction=t.userAction,this.stopMomentumMovement(),this.hideIntersectMesh(),t.isFinal){let e=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:this.cameraMotion.value.longitude,latitude:this.cameraMotion.value.latitude,fov:this.cameraMotion.value.fov,offset:new l.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),distance:this.locationMotion.value.distance});if(this.fixFinalState(e),this.emit(`gesture.mousewheel`,t),t.defaultPrevented)return;let n={x:e.offset.x,y:e.offset.y,z:e.offset.z,distance:e.distance};this.locationMotion.set(n,0).catch(K)}else{let n=e.distanceFromModel(this.modelScene,this.cameraMotion.value.fov,this.camera.aspect),r=new l.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),i=_a(this.cameraMotion.value,new l.Vector3).negate(),a=new l.Ray(r,i).intersectBox(this.modelScene.boundingBox,new l.Vector3);a&&(n+=a.distanceTo(r));let o=Math.max(this.locationMotion.value.distance-this.camera.near,0),s=t.center.delta/10*Math.max(o/5,.1);if(o<=n||s>0)if(this.locationMotion.value.distance-s>=$E){let e=this.locationMotion.value.distance-s;t.state.distance=e}else{let e=_a(this.cameraMotion.value);e.setLength(s),t.state.offset.add(e)}if(this.emit(`gesture.mousewheel`,t),t.defaultPrevented)return;this.locationMotion.set({distance:t.state.distance,x:t.state.offset.x,y:t.state.offset.y,z:t.state.offset.z},0).catch(K)}}onTapGesture(e){var t;this.userAction=e.userAction,this.stopMomentumMovement();let n=e.center.raycaster,r=this.getForwardObserverOrNot(n);if(!r)this.emit(`gesture.tap`,e);else{let n={longitude:this.camera.pose.longitude,latitude:0},i=Object.assign(Object.assign({},e.state),{mode:`Panorama`,workCode:r.work.workCode,panoIndex:r.panoIndex,longitude:n.longitude,latitude:n.latitude,offset:r?r.position.clone():new l.Vector3,distance:0});if(e.state=i,this.emit(`gesture.tap`,e),!e.defaultPrevented&&(this.emit(`pano.select`,$(`pano.select`,{prevPano:this.currentPano,state:i,userAction:e.userAction,options:n,progress:0,error:null})),r&&r.active)){let e=this.pendingTextureId=Ft(),a=gb({panoIndex:r.panoIndex,workCode:r.work.workCode}),o=this.imageOptions.transform,s=Object.assign({key:`pano.${a}`},hl(this.imageOptions,[`format`,`size`,`quality`,`sharpen`,`forceUseExifOrientation`,`mappings`])),c={right:r.images.work.getURL(r.images.right),left:r.images.work.getURL(r.images.left),up:r.images.work.getURL(r.images.up),down:r.images.work.getURL(r.images.down),front:r.images.work.getURL(r.images.front),back:r.images.work.getURL(r.images.back)},u,d,f=this.enableHDR?r.images.gainmap:void 0;f&&(u={right:r.images.work.getURL(f.right),left:r.images.work.getURL(f.left),up:r.images.work.getURL(f.up),down:r.images.work.getURL(f.down),front:r.images.work.getURL(f.front),back:r.images.work.getURL(f.back)},d=r.images.work.getURL(f.cfg));let p=`pano:`+mb([c,u,s]),m=this.modelScene.parameter,h;if(m.pano0&&m.pano0.map.name===p?h=m.pano0:m.pano1&&m.pano1.map.name===p&&(h=m.pano1),h)m.pano0&&m.pano0.map!==h.map&&m.pano0.map.dispose(),m.pano1&&m.pano1.map!==h.map&&m.pano1.map!==((t=m.pano0)==null?void 0:t.map)&&m.pano1.map.dispose(),m.set({pano0:h,pano1:h}),this.emit(`pano.request`,$(`pano.request`,{userAction:!0,prevPano:this.currentPano,progress:0,state:i,options:n,error:null}));else{let t=this.textureLoader.loadCubeTexture(c,{imageURL:{transform:o,options:s},format:l.RGBAFormat,viaAjax:!0,fetcher:vy(this.fiveId,r.work)},void 0,void 0,void 0,this.renderer),f=d&&u?Promise.all([vy(this.fiveId,r.work).ajax(d,{responseType:`text`}).then(e=>Wt(JSON.parse(e.body))),this.textureLoader.loadCubeTexture(u,{imageURL:{transform:o,options:s},format:l.RGBAFormat,colorSpace:l.NoColorSpace,viaAjax:!0,fetcher:vy(this.fiveId,r.work)},void 0,void 0,void 0,this.renderer)]).then(([e,t])=>({config:e,map:t.body})):Promise.resolve(void 0);Promise.all([t,f]).then(t=>Wr(this,[t],void 0,function*([t,o]){var s,c;let{body:u}=t;if(this.destroyed||this.pendingTextureId!==e){u.dispose();return}this.pendingTextureId=null,u.name=p;let d=Array.isArray(u.image)?u.image[0]:u.image,f=(s=d==null?void 0:d.width)==null?2048:s,h=yield BC(this.renderer,u,!0,Dx),g=new jx().formPixels(h.data),_={panoId:a,map:u,mapSize:f,mapHistogram:new l.Vector4().fromArray(g.toArray()),matrix:r.matrix.clone().premultiply(r.work.transform),zoom:1,gainmap:o?{map:o.map,cfg:o.config}:void 0};m.pano0&&m.pano0.map.dispose(),m.pano1&&m.pano1.map!==((c=m.pano0)==null?void 0:c.map)&&m.pano1.map.dispose(),m.set({pano0:_,pano1:_}),this.emit(`pano.request`,$(`pano.request`,{userAction:!0,prevPano:this.currentPano,progress:0,state:i,options:n,error:null}))})).catch(t=>{this.destroyed||this.pendingTextureId!==e||(this.pendingTextureId=null)})}}}}onDblTapGesture(e){if(!this.initAnimationIsReady)return;this.userAction=e.userAction,this.stopMomentumMovement(),this.hideIntersectMesh();let t=e.state,n=e.center.raycaster,r=n.ray.origin.clone().add(n.ray.direction.clone().setLength(3)),i=1,[a]=this.modelScene.intersectRaycaster(n);if(a&&(r=a.point.clone(),i=a.distance>4/2?1:3),e.state.distance=i,e.state.offset=r,this.emit(`gesture.dbltap`,e),e.defaultPrevented)return;let o={x:t.offset.x,y:t.offset.y,z:t.offset.z,distance:t.distance};this.locationMotion.set(o,360).catch(K),this.hideIntersectMesh()}hideIntersectMesh(){this.intersectMesh.visible===!0&&(this.intersectMesh.visible=!1,this.needsRender=!0)}}},rD={Floorplan:ow,Topview:cw,Panorama:mT,VRPanorama:sE,XRPanorama:BE,Model:YE,Mapview:tD},iD=`gesture.pan,gesture.tap,gesture.dbltap,gesture.press,gesture.pinch,gesture.mousewheel,gesture.mousemove,gesture.momentum,gesture.fire,initAnimation.start,initAnimation.end,camera.update,intersect.update,pano.select,pano.moveTo,pano.moving,pano.arrived,pano.cancel,pano.error,pano.prepare,pano.texture.load,pano.texture.progress,pano.texture.success,pano.texture.error,pano.texture.abort,xr.session.start,xr.session.end,xr.gesture.tap,xr.gesture.press,xr.gesture.buttonUp,xr.gesture.buttonDown,xr.controller.update`.split(`,`);function aD(e){e.on(`initAnimation.start`,t=>{e.emit(`initAnimationWillStart`,t.state.panoIndex,t.state,t.userAction)}),e.on(`initAnimation.end`,t=>{e.emit(`initAnimationEnded`,t.state.panoIndex,t.state,t.userAction)}),e.on(`gesture.pan`,t=>{let n=!1;n=e.emit(`wantsGesture`,`pan`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsPanGesture`,t.state,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`pan`,t.pointers,t.isFinal),e.emit(`panGesture`,t.state,t.isFinal))}),e.on(`gesture.tap`,t=>{let n=!1;n=e.emit(`wantsGesture`,`tap`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsTapGesture`,t.center.raycaster,t.center.coords,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`tap`,t.pointers,t.isFinal),e.emit(`tapGesture`,t.center.raycaster,t.center.coords,t.isFinal))}),e.on(`gesture.dbltap`,t=>{let n=!1;n=e.emit(`wantsGesture`,`dbltap`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsDblTapGesture`,t.center.raycaster,t.center.coords,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`dbltap`,t.pointers,t.isFinal),e.emit(`dblTapGesture`,t.center.raycaster,t.center.coords,t.isFinal))}),e.on(`gesture.press`,t=>{let n=!1;n=e.emit(`wantsGesture`,`press`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsPressGesture`,t.center.raycaster,t.center.coords,t.center.delta,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`press`,t.pointers,t.isFinal),e.emit(`pressGesture`,t.center.raycaster,t.center.coords,t.center.delta,t.isFinal))}),e.on(`gesture.pinch`,t=>{let n=!1;n=e.emit(`wantsGesture`,`pinch`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsPinchGesture`,t.scale,t.state.fov,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`pinch`,t.pointers,t.isFinal),e.emit(`pinchGesture`,t.scale,t.state.fov,t.isFinal))}),e.on(`gesture.mousewheel`,t=>{let n=!1;n=e.emit(`wantsGesture`,`mouseWheel`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsMouseWheel`,t.center.delta,t.state.fov,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`mouseWheel`,t.pointers,t.isFinal),e.emit(`mouseWheel`,t.center.delta,t.state.fov,t.isFinal))}),e.on(`gesture.mousemove`,t=>{let n=!1;n=e.emit(`wantsGesture`,`mouseMove`,t.pointers,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`mouseMove`,t.pointers,t.isFinal),n=e.emit(`wantsChangeCameraFov`,t.state.fov),n&&t.preventDefault())}),e.on(`gesture.momentum`,t=>{let n=!1;n=e.emit(`wantsInteriaPan`,t.state),n&&t.preventDefault(),t.defaultPrevented||e.emit(`interiaPan`,t.state,t.isFinal)}),e.on(`camera.update`,t=>{e.emit(`cameraFovUpdate`,t.state.fov,t.userAction),e.emit(`cameraDirectionUpdate`,t.state,t.userAction);let n=_a(t.state);n.setLength(t.state.distance);let r=t.state.offset.clone().sub(n);e.emit(`cameraPositionUpdate`,r,t.userAction),e.emit(`cameraUpdate`,t.state,t.userAction)}),e.on(`intersect.update`,t=>{if(t.intersection){let n=!1;n=e.emit(`wantsShowIntersectionOnModel`,t.raycaster),n&&t.preventDefault(),t.defaultPrevented||e.emit(`intersectionOnModelUpdate`,t.intersection,t.object)}else e.emit(`intersectionHidden`)}),e.on(`pano.request`,t=>{let n=e.emit(`wantsMoveToPano`,t.state.panoIndex,t.options,t.userAction);n||(n=e.emit(`wantsToMoveToPano`,t.state.panoIndex,t.options,t.userAction)),n&&t.preventDefault(),t.defaultPrevented||e.emit(`panoWillLoad`,t.state.panoIndex)}),e.on(`pano.select`,t=>{e.emit(`panoSelected`,t.state.panoIndex)}),e.on(`pano.moveTo`,t=>{e.emit(`panoLoaded`,t.state.panoIndex),e.emit(`moveToPano`,t.state.panoIndex,t.userAction),e.emit(`panoWillArrive`,t.state.panoIndex,t.state,t.userAction)}),e.on(`pano.moving`,t=>{e.emit(`movingToPano`,t.state.panoIndex,t.prevPano.panoIndex,t.progress)}),e.on(`pano.arrived`,t=>{e.emit(`panoArrived`,t.state.panoIndex,t.state,t.userAction)}),e.on(`pano.cancel`,t=>{e.emit(`moveToPanoCanceled`,t.state.panoIndex)}),e.on(`pano.error`,t=>{e.emit(`panoLoadError`,t.error,t.state.panoIndex)}),e.on(`pano.texture.load`,t=>{e.emit(`textureStartLoad`,t.pano.panoIndex)}),e.on(`pano.texture.success`,t=>{e.emit(`textureLoaded`,t.pano.panoIndex,t.meta)}),e.on(`pano.texture.error`,t=>{e.emit(`textureError`,t.error,t.pano.panoIndex)}),e.on(`pano.texture.abort`,t=>{e.emit(`textureAbort`,t.pano.panoIndex)}),e.on(`pano.texture.progress`,t=>{e.emit(`textureLoading`,t.progress,t.pano.panoIndex)}),e.on(`xr.session.start`,t=>{e.emit(`webXRSessionStart`)}),e.on(`xr.session.end`,t=>{e.emit(`webXRSessionEnd`)}),e.on(`xr.gesture.tap`,t=>{e.emit(`webXRControllerEvent`,`tap`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.gesture.press`,t=>{e.emit(`webXRControllerEvent`,`press`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.gesture.buttonUp`,t=>{e.emit(`webXRControllerEvent`,`buttonUp`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.gesture.buttonDown`,t=>{e.emit(`webXRControllerEvent`,`buttonDown`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.controller.update`,t=>{e.emit(`webXRControllerRayUpdate`,{leftRay:t.left?t.left.raycaster:void 0,rightRay:t.right?t.right.raycaster:void 0}),t.left&&e.emit(`webXRAxesUpdate`,`left`,{raycaster:{leftRay:t.left?t.left.raycaster:void 0,rightRay:t.right?t.right.raycaster:void 0},axesState:{up:t.left.axes.up,down:t.left.axes.down,left:t.left.axes.left,right:t.left.axes.right},deltaTime:t.left.deltaTime}),t.right&&e.emit(`webXRAxesUpdate`,`right`,{raycaster:{leftRay:t.left?t.left.raycaster:void 0,rightRay:t.right?t.right.raycaster:void 0},axesState:{up:t.right.axes.up,down:t.right.axes.down,left:t.right.axes.left,right:t.right.axes.right},deltaTime:t.right.deltaTime})}),e.on(`works.request`,t=>{e.emit(`willLoad`,t.input,t.works[0],e.getCurrentState())}),e.on(`works.load`,t=>{e.emit(`load`,t.input,t.works[0],e.getCurrentState())}),e.on(`works.ready`,t=>{e.emit(`loaded`,t.input,t.works[0])}),e.on(`state.change`,t=>{e.emit(`stateChange`,t.state,t.userAction)}),e.on(`currentState.change`,t=>{e.emit(`currentStateChange`,t.state,t.userAction)}),e.on(`state.set`,t=>{e.emit(`setState`,t.state)}),e.on(`state.synced`,t=>{e.emit(`stateSynced`,t.state)}),e.on(`model.request`,t=>{e.emit(`modelWillLoad`,t.work.model)}),e.on(`model.error`,t=>{e.emit(`modelLoadError`,t.error,t.model)}),e.on(`model.load`,t=>{e.emit(`modelLoaded`,t.model)}),e.on(`model.changeShownFloor`,t=>{e.emit(`modelShownFloorChange`,t.model.shownFloor,t.model.floorLength)}),e.on(`render`,t=>{e.emit(`renderFrame`,t.needsRender)}),e.on(`mode.change.request`,t=>{e.emit(`wantsChangeMode`,t.mode,t.prevMode)}),e.on(`mode.change`,t=>{e.emit(`modeChange`,t.mode,t.prevMode,t.state.panoIndex,t.state,t.userAction)}),e.on(`helpers.visible`,t=>{e.emit(`helpersVisibleChange`,t.object.visible)}),e.on(`network.resource`,t=>{e.emit(`network`,t.source,t.requestType,t.requestState,t.detail)})}function oD(){if(typeof window<`u`){let e=document.createElement(`video`);e.loop=!0,e.autoplay=!0,e.playsInline=!0,e.muted=!0,e.crossOrigin=``;let t=()=>{document.removeEventListener(`touchstart`,t,!1),document.removeEventListener(`mousedown`,t,!1),e.muted=!1};return document.addEventListener(`touchstart`,t,!1),document.addEventListener(`mousedown`,t,!1),e}else return{}}function sD(){let e=new l.Group;e.name=`internalLights`;{let t=new l.DirectionalLight(16777215,.1);t.name=`direction0`,t.position.copy(new l.Vector3(0,1,0)),e.add(t)}{let t=new l.DirectionalLight(16777215,.1);t.name=`direction1`,t.position.copy(new l.Vector3(-1,-1,-1)),e.add(t)}{let t=new l.DirectionalLight(16777215,.3);t.name=`direction2`,t.position.copy(new l.Vector3(1,1,1)),e.add(t)}{let t=new l.AmbientLight(16777215,.6);t.name=`ambient0`,e.add(t)}return e}function cD(e){var t,n;let r={},i=e.split(/(\;|\,)/);for(let e of i){let i=e.split(`=`),a=(t=i[0])==null?void 0:t.trim(),o=(n=i[1])==null?void 0:n.trim();a&&o&&(r[a]=o)}return r}function lD(){var e;if(typeof document<`u`){let t=document.getElementsByTagName(`meta`);for(let n=0;n<t.length;n++){let r=t[n];if(r.getAttribute(`name`)===`viewport`){let t=cD((e=r.getAttribute(`content`))==null?``:e),n=Number(t[`initial-scale`]);if(!isNaN(n))return n}}}return 1}function uD(){return typeof location>`u`||location.protocol!==`https:`?Promise.reject(Error(`Request DeviceOrientation Permission denied.`)):typeof DeviceOrientationEvent<`u`&&typeof DeviceOrientationEvent.requestPermission==`function`?DeviceOrientationEvent.requestPermission().then(e=>{if(e==`granted`)return Promise.resolve();{let e=Error(`Request DeviceOrientation Permission denied.`);return Promise.reject(e)}}):Promise.resolve()}function dD(){if(`xr`in navigator)return navigator.xr.isSessionSupported(`immersive-vr`).then(e=>e?Promise.resolve():Promise.reject()).then(()=>navigator.xr.requestSession(`immersive-vr`,{optionalFeatures:[`local-floor`]}).then(e=>Promise.resolve(e)));{let e=Error(`Request XR Permission denied.`);return Promise.reject(e)}}var fD=800,pD=90,mD=e=>e.replace(`//vrlab-public.ljcdn.com/`,`//vr-public.realsee-cdn.cn/`).replace(`//vrlab-image4.ljcdn.com/`,`//vr-image-4.realsee-cdn.cn/`).replace(`//vrlab-image3.ljcdn.com/`,`//vr-image-3.realsee-cdn.cn/`).replace(`//vrlab-image2.ljcdn.com/`,`//vr-image-2.realsee-cdn.cn/`).replace(`//vrlab-image1.ljcdn.com/`,`//vr-image-1.realsee-cdn.cn/`),hD=new l.Sphere,gD=new l.Box3,_D=new l.Vector4,vD=new l.Vector4,yD=new l.Color,bD=new l.Vector2,xD=new WeakMap,SD=sx([ix(null)]),CD={},wD=class e extends Bt{static get version(){return`1.0.0-alpha.7`}static get dracoPath(){return of.decoderPath}static set dracoPath(e){of.setDecoderPath(e)}static get ktx2Path(){return mf.transcoderPath}static set ktx2Path(e){mf.setTranscoderPath(e)}static get useNativeImageBitmap(){return cu()}static set useNativeImageBitmap(e){su(e)}constructor(e={}){var t,n,r,i,a,o,s,c,u,d,f,p;if(super(),this.pbmGaussianSplattingRenderMesh=null,this.fiveId=Ft(),CD[this.fiveId]=this,this.currentUpdateArgs={time:G(),args:[]},this.currentMode=`Panorama`,this.pano={workCode:``,panoIndex:0},this.needsRender=!0,this.onlyRenderIfNeeds=(t=e.onlyRenderIfNeeds)==null?!0:t,this.imageOptions=Object.assign({},(n=e.imageOptions)==null?{}:n),this.textureOptions=Object.assign({},(r=e.textureOptions)==null?{}:r),this.poweredByRealsee=(i=e.poweredByRealsee)==null?!0:i,this.backgroundColor=new l.Color((a=e.backgroundColor)==null?1579548:a),this.backgroundAlpha=(o=e.backgroundAlpha)==null?1:o,this.extraElements=[],this.controllerInits={Panorama:Object.assign({},e.panorama),Model:Object.assign({},e.model),Floorplan:Object.assign({},e.floorplan),Topview:Object.assign({},e.topview),Mapview:Object.assign({},e.mapview),VRPanorama:Object.assign({},e.vrPanorama),XRPanorama:Object.assign({},e.xrPanorama)},this.fps={testCount:0,testTime:G()},this.modeChangeDuration=(s=e.modeChangeDuration)==null?fD:s,this.enableWheel=(c=e.enableWheel)==null?!0:c,this.enableHDR=!!e.enableHDR&&gS&&!e.forceWebGL,typeof window<`u`)if(`renderer`in e)e.renderer instanceof NS&&this.throwError(Error(`cannot render a internal renderer`)),this.renderer=e.renderer;else try{this.renderer=new NS({outputType:this.enableHDR?l.HalfFloatType:void 0,logarithmicDepthBuffer:e.logarithmicDepthBuffer,forceWebGL:(u=e.forceWebGL)==null?!1:u});let t=lD();this.renderer.setPixelRatio(t===1?window.devicePixelRatio:1),this.renderer.setSize(512,512),this.renderer.setClearColor(this.backgroundColor,this.backgroundAlpha)}catch(e){let t=e instanceof Error?e:Error(String(e));this.throwError(t)}this.getPixelsRenderTarget=new l.RenderTarget(1,1,{colorSpace:(f=(d=this.renderer)==null?void 0:d.outputColorSpace)==null?l.SRGBColorSpace:f,generateMipmaps:!1}),this.renderer&&Xc(this.renderer),this.viewport=Object.assign({left:0,bottom:0,width:1,height:1},e.viewport),this.camera=new Aa(pD),this.scene=new zS,this.scene.background=this.backgroundColor,this.xrCustomObjectsScene=new l.Scene,this.scene.add(this.xrCustomObjectsScene),this.scene.matrixAutoUpdate=!1,this.requestProxy=(p=e.requestProxy)==null?mD:p,this.networkSubscribe=new cl,this.networkSubscribe.on(`network`,(e,t,n,r)=>{var i;this.emit(`network.resource`,$(`network.resource`,{source:e,requestType:t,requestState:n,detail:r})),(i=this.analysis)==null||i.network(this.works,e,t,n,r)}),this.readyCallbacks=[],this.syncingState=!1,this.helperGroup=new l.Group,this.helperGroup.name=`helper`,this.helperGroup.matrixAutoUpdate=!1,this.scene.add(this.helperGroup),xD.set(this,SD),this.modelScene=new Jy({fiveId:this.fiveId}),this.modelScene.addEventListener(`model.create`,e=>{this.bindModel(e.model)}),this.scene.add(this.modelScene);let[m]=this.modelScene.setModels(SD,{forceReplaceImmediately:!0});Z(m,`loaded`,{get(){return!1},set(e){}}),this.videoTexture=new l.VideoTexture(e.videoInstance||oD());let h=sD();this.scene.add(h),this.state={mode:this.currentMode,workCode:this.pano.workCode,panoIndex:this.pano.panoIndex,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance},this.stateSynced=!1,this.destroyed=!1,this.paused=!0,typeof window<`u`&&(e.play!==!1&&this.play(),this.stopAnimationLoop=iu.shared.add((e,t,...n)=>{this.updateTime(e,t,...n)},!1,0,10));let g=()=>{typeof document<`u`&&document.fullscreenElement===null&&this.currentMode===`VRPanorama`&&this.controller.emit(`vr.requestExit`,$(`vr.requestExit`,{}))},_=()=>{this.needsRender=!0},v=()=>{this.renderer instanceof NS&&this.renderer.reconfigureContext(),this.needsRender=!0},y=()=>{typeof document<`u`&&document.visibilityState===`visible`&&v()},b=()=>{v()};if(this.renderer instanceof NS&&(this.renderer.onDeviceLostCallback=()=>{v()}),typeof document<`u`&&(document.addEventListener(`visibilitychange`,y,!1),document.addEventListener(`fullscreenchange`,g,!1)),typeof window<`u`&&window.addEventListener(`pageshow`,b,!1),this.renderer&&this.renderer.domElement.addEventListener(`webglcontextrestored`,_,!1),this.removeEventListeners=()=>{typeof document<`u`&&(document.removeEventListener(`visibilitychange`,y,!1),document.removeEventListener(`fullscreenchange`,g,!1)),typeof window<`u`&&window.removeEventListener(`pageshow`,b,!1),this.renderer instanceof NS&&(this.renderer.onDeviceLostCallback=void 0),this.renderer&&this.renderer.domElement.removeEventListener(`webglcontextrestored`,_,!1)},this.loadWorkTask=this.prepare(),this.plugins={},e.plugins&&e.plugins.length){for(let t of e.plugins)if(typeof t==`function`)t(this);else if(Array.isArray(t)){let[e,n,r]=t;if(typeof e==`function`){let t=e(this,r);typeof n==`string`&&(this.plugins[n]?this.throwError(Error(`plugin name ${n} is exists.`)):this.plugins[n]=t)}}}aD(this),this.fiveRenderer=new pS({outputType:this.enableHDR?l.HalfFloatType:void 0}),this.adaptiveLuminancePass=new qx,this.adaptiveLuminancePass.enabled=!1,this.fiveRenderer.composer.addPass(this.adaptiveLuminancePass),this.eyeDomeLightingPass=new Yx(this.camera),this.eyeDomeLightingPass.enabled=!1,this.fiveRenderer.composer.addPass(this.eyeDomeLightingPass),this.pbmGaussianSplattingRenderMesh=new Oi,this.scene.add(this.pbmGaussianSplattingRenderMesh)}get ident(){return this.fiveId}get panoIndex(){return this.pano.panoIndex}prepare(){return Promise.all([Al().catch(K)]).then(K)}dispose(){var e;if(this.destroyed===!0)return;delete CD[this.fiveId],this.emit(`dispose`),this.destroyed=!0,this.pause(),this.stopAnimationLoop&&(this.stopAnimationLoop(),this.stopAnimationLoop=void 0),this.off(),this.networkSubscribe.off(),this.controller&&(this.controller.destroy(),this.controller=void 0);let t=this.getElement();t&&t.parentNode&&t.parentNode.removeChild(t);let n=this.modelScene.parameter;n.pano0&&n.pano0.map.dispose(),n.pano1&&n.pano1.map!==((e=n.pano0)==null?void 0:e.map)&&n.pano1.map.dispose(),n.reset(`pano0`,`pano1`),this.modelScene.dispose(),xD.set(this,SD),this.renderer&&(!(this.renderer instanceof NS)||this.renderer.isInitialized)&&this.renderer.render(new l.Scene,new l.PerspectiveCamera),this.fiveRenderer.dispose(),this.renderer instanceof NS&&this.renderer.dispose()}setViewport(e){Object.assign(this.viewport,e),this.needsRender=!0}get boundingMesh(){return this.modelScene.boundingMesh}get helperVisible(){return this.helperGroup.visible}set helperVisible(e){this.helperGroup.visible!==e&&(this.helperGroup.visible=e,this.emit(`helpers.visible`,$(`helpers.visible`,{object:this.helperGroup})),this.needsRender=!0)}updateConfiguration(e,t=!0){let n=!1,r=!1;e.panorama&&(Object.assign(this.controllerInits.Panorama,_l(e.panorama)),this.currentMode===`Panorama`&&(n=!0)),e.model&&(Object.assign(this.controllerInits.Model,_l(e.model)),this.currentMode===`Model`&&(n=!0)),e.floorplan&&(Object.assign(this.controllerInits.Floorplan,_l(e.floorplan)),this.currentMode===`Floorplan`&&(n=!0)),e.topview&&(Object.assign(this.controllerInits.Topview,_l(e.topview)),this.currentMode===`Topview`&&(n=!0)),e.mapview&&(Object.assign(this.controllerInits.Mapview,_l(e.mapview)),this.currentMode===`Mapview`&&(n=!0)),e.vrPanorama&&(Object.assign(this.controllerInits.VRPanorama,_l(e.vrPanorama)),this.currentMode===`VRPanorama`&&(n=!0)),e.xrPanorama&&(Object.assign(this.controllerInits.XRPanorama,_l(e.xrPanorama)),this.currentMode===`XRPanorama`&&(n=!0)),e.imageOptions&&(Object.assign(this.imageOptions,e.imageOptions),(this.currentMode===`Panorama`||this.currentMode===`VRPanorama`||this.currentMode===`XRPanorama`)&&(r=!0,n=!0)),e.textureOptions&&Object.assign(this.textureOptions,e.textureOptions),t&&n&&this.controller&&this.currentMode&&(!this.controller.updateConfiguration(this.controllerInits[this.currentMode])||r)&&this.changeMode(this.currentMode,this.getCurrentState(),0,!1,!0)}appendTo(e,t={}){if(!this.renderer)return;if(!(this.renderer instanceof NS)){this.throwError(Error(`cannot call appendTo method when render a external renderer`));return}let n=this.getElement();if(!n)return;e.appendChild(n),this.refresh(t);let r=window.getComputedStyle(e).position;r!==`relative`&&r!==`absolute`&&r!==`fixed`&&r!==`sticky`&&(e.style.position=`relative`)}refresh(e={},t){var n,r,i,a,o,s;if(!this.renderer)return;let c=this.renderer.domElement.parentNode,{width:l=(n=c==null?void 0:c.offsetWidth)==null?512:n,height:u=(r=c==null?void 0:c.offsetHeight)==null?512:r}=e;if(l=Math.max(1,l),u=Math.max(1,u),!t){let e=lD(),n=typeof window<`u`?window.devicePixelRatio:1;if(t=(i=e===1?n:1)==null?1:i,t>1){let e=Math.max(l,u)*t,n=Math.min((s=(o=(a=this.renderer.backend.device)==null?void 0:a.limits)==null?void 0:o.maxTextureDimension2D)==null?8192:s,4096);e>n&&(t=Math.max(t/e*n,1),t=Math.floor(t*100)/100)}}this.renderer.setPixelRatio(t),this.renderer.setSize(l,u),this.needsRender=!0;let d=G(),f=d-this.currentUpdateArgs.time,p=this.currentUpdateArgs.args;this.updateTime(d,f,...p)}addExtraElement(e){return this.extraElements.indexOf(e)===-1&&(this.extraElements.push(e),this.controller&&this.controller.bindExtraElement(e)),()=>this.removeExtraElement(e)}removeExtraElement(e){let t=this.extraElements.indexOf(e);t!==-1&&(this.extraElements.splice(t,1),this.controller&&this.controller.unbindExtraElement(e))}getSize(e){if(!this.renderer)throw Error(`renderer is not initialized`);return this.renderer.getSize(e),e.x*=this.viewport.width,e.y*=this.viewport.height,e}getDrawingBufferSize(e){if(!this.renderer)throw Error(`renderer is not initialized`);return this.renderer.getDrawingBufferSize(e),e.x*=this.viewport.width,e.y*=this.viewport.height,e}updateCamera(e,t,n=!0){if(!this.controller)throw Error(`controller is not initialized.`);return this.controller.updateCamera(e,t,n)}updateCameraWithKeyframes(e,t,n=!0){if(!this.controller)throw Error(`controller is not initialized.`);return this.controller.updateCameraWithKeyframes(e,t,n)}get works(){return xD.get(this)||SD}get work(){return this.works[0]}get observers(){return this.work.observers}get models(){return this.modelScene.models}get model(){return this.modelScene.models[0]}load(e,t,n,r=!0){if(!this.renderer)throw Error(`renderer is not initialized`);let i=this.loadWorkTask.then(()=>mC(e)?e.then(e=>this.load_(e,t,n,r)):this.load_(e,t,n,r));return this.loadWorkTask=i.catch(e=>{this.throwError(e)}),i}load_(t,n,r,i=!0){var a,o,s,c,u,d,f,p,m,h;let g={};typeof r==`number`?g.duration=r:typeof r==`object`&&Object.assign(g,r),this.works===SD&&(g.duration===void 0&&(g.duration=0),g.effect===void 0&&(g.effect=`instant`));let _={};Object.assign(_,g.model),!_[`3d-tiles`]&&g[`3d-tiles`]&&(_[`3d-tiles`]=g[`3d-tiles`]),!_.textureOptions&&g.textureOptions&&(_.textureOptions=g.textureOptions),!_.textureOptions&&this.textureOptions&&(_.textureOptions=this.textureOptions);let v=[];if(Array.isArray(t))for(let e of t)e instanceof rx?v.push(e):typeof e!=`string`&&`work`in e?v.push(ix(e.work,e)):v.push(ix(e));else t instanceof rx?v.push(t):v.push(ix(t));g.mode===`add`&&(v=[].concat(this.works,v));let y;try{y=sx(v)}catch(e){return this.throwError(e),Promise.reject(e)}for(let e of y)this.bindWorkFetcher(e);n===void 0&&(n=`inherit`),n===`inherit`&&this.works===SD&&(n=`initial`);let b=this.currentMode,x=y.initial,S=x.work.observers[0],C=S?{workCode:S.work.workCode,panoIndex:S.panoIndex}:{workCode:x.work.workCode,panoIndex:0},w=(a=x.mode)==null?S?`Panorama`:`Mapview`:a,T={};if(n===`inherit`){let e=this.getCurrentState(),[t]=y.filter(t=>t.workCode===e.workCode);if(t)C={workCode:e.workCode,panoIndex:e.panoIndex},w=e.mode,T={longitude:e.latitude,latitude:e.latitude,fov:e.fov,distance:e.distance,offset:e.offset.clone()};else{n={mode:b};let e=(s=(o=y[0])==null?void 0:o.observers)==null?void 0:s[this.panoIndex];e?(n.workCode=e.work.workCode,n.panoIndex=e.panoIndex):typeof y.initial.panoIndex==`number`?(n.workCode=y.initial.work.workCode,n.panoIndex=y.initial.panoIndex):(n.mode===`Panorama`||n.mode===`VRPanorama`||n.mode===`XRPanorama`)&&(n.mode=`Mapview`),n.mode===b&&(n.longitude=this.camera.pose.longitude,n.latitude=this.camera.pose.latitude,n.fov=this.camera.pose.fov)}}if(n===`initial`&&(typeof x.panoIndex==`number`&&(C={workCode:x.work.workCode,panoIndex:x.panoIndex}),x.mode&&(w=x.mode),T={longitude:x.longitude,latitude:x.latitude,fov:x.fov,distance:x.distance,offset:(c=x.offset)==null?void 0:c.clone()}),typeof n==`object`){if(w=(u=n.mode)==null?b:u,typeof n.panoIndex==`number`){let e=y.getObserver({workCode:(f=(d=n.workCode)==null?x.work.workCode:d)==null?``:f,panoIndex:n.panoIndex});e&&(C={workCode:e.work.workCode,panoIndex:e.panoIndex})}T={longitude:n.longitude,latitude:n.latitude,fov:n.fov,distance:n.distance,offset:n.offset?new l.Vector3().copy(n.offset):void 0}}let E=(p=g.duration)==null?this.modeChangeDuration:p;(w===`Floorplan`||w===`Topview`||w===`Mapview`)&&b===w&&(E=0);let D=`fly`;(w===`Panorama`||w===`VRPanorama`||w===`XRPanorama`)&&b===w&&(D=(m=g.effect)==null?`fade`:m),this.emit(`works.request`,$(`works.request`,{input:t,works:y,userAction:i}));let O=(e,t,r)=>{let a=this.getCurrentState(),o=Object.assign(Object.assign({mode:e},t),r);n===`inherit`&&(o=this.getCurrentState()),this.pano=t;let s=Object.assign(Object.assign({initial:{state:o,currentState:a,duration:E,effect:D,userAction:i}},this.commonParams()),this.controllerInits[e]),c=nD[o.mode].initAnimationEndState(s);if(this.controller&&b===e)this.controller.updateWork(y,c,{effect:D,duration:E},i)===!1&&(this.controller.destroy(),this.controller=this.applyController(e,s));else{if(this.controller)this.controller.destroy();else{let t=nD[e].initAnimationEndState(s);this.camera.setFromPose(t),this.emit(`camera.update`,$(`camera.update`,{state:this.getCurrentState(),userAction:i}))}this.controller=this.applyController(e,s);let t=$(`mode.change`,{prevMode:b,mode:e,state:c,userAction:i});try{this.emit(`mode.change`,t)}catch(e){console.error(e)}}this.state.workCode=this.pano.workCode,this.state.panoIndex=this.pano.panoIndex,this.updateTime(this.currentUpdateArgs.time,0,...this.currentUpdateArgs.args)};xD.set(this,y);let k=Promise.resolve();if(w===e.Mode.Floorplan||w===e.Mode.Topview||w===e.Mode.Mapview||w===e.Mode.Model){this.modelScene.loaded===!1&&(this.camera.setFromPose(T),bC(this.state,this.camera.pose));let e=this.modelScene.setModels(y,_);k=Promise.all(e.map(e=>e.loadedReady)).then(()=>{this.needsRender=!0,O(w,C,T),this.emit(`camera.update`,$(`camera.update`,{state:this.getCurrentState(),userAction:i}))})}else{O(w,C,T);let e=this.controller,t=!1;this.modelScene.autoRefine=!1;let n=()=>{this.works===y&&t===!1&&(this.needsRender=!0,this.emit(`camera.update`,$(`camera.update`,{state:this.getCurrentState(),userAction:i})),t=!0,this.modelScene.autoRefine=!0),e.off(`pano.arrived`,n),e.off(`pano.cancel`,n)},r=this.modelScene.setModels(y,_);k=Promise.all(r.map(e=>e.initReady)).then(K),e.once(`pano.arrived`,n),e.once(`pano.cancel`,n),setTimeout(n,((h=g.duration)==null?this.modeChangeDuration:h)+1e3)}return this.emit(`works.load`,$(`works.load`,{input:t,userAction:i,works:y})),k.then(()=>this.ready()).then(()=>{var e;this.emit(`works.ready`,$(`works.ready`,{input:t,userAction:i,works:y})),(e=this.analysis)==null||e.work(y)})}reset(){let e=this.loadWorkTask.then(()=>this.reset_());return this.loadWorkTask=e.catch(e=>{this.throwError(e)}),e}reset_(){return new Promise(e=>{var t;this.controller&&(this.controller.destroy(),this.controller=void 0);let n=this.modelScene.parameter;n.pano0&&n.pano0.map.dispose(),n.pano1&&n.pano1.map!==((t=n.pano0)==null?void 0:t.map)&&n.pano1.map.dispose(),n.set({pano0:null,pano1:null,modelAlpha:1}),xD.set(this,SD),this.modelScene.setModels(SD,{forceReplaceImmediately:!0}),this.renderer&&this.modelScene.update(this.renderer,this.camera),this.needsRender=!0,this.currentMode=`Panorama`,this.pano={workCode:``,panoIndex:0},this.camera.setFromPose({distance:0,fov:pD,longitude:0,latitude:0,offset:new l.Vector3(0,0,0)}),this.state={mode:this.currentMode,workCode:this.pano.workCode,panoIndex:this.pano.panoIndex,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance},this.camera.needsRender=!1,this.needsRender=!1,e()})}changeMode(t,n={},r,i=!0,a=!1){return new Promise((o,s)=>{var c,l,u,d;if(!this.renderer)throw Error(`renderer is not initialized.`);n=Object.assign({},n);let f=0;this.controller&&(f=typeof r==`number`?r:(c=r==null?void 0:r.duration)==null?this.modeChangeDuration:c);let p=`fly`;this.controller&&typeof r==`object`&&r.effect&&(p=r.effect);let m=typeof n.panoIndex==`number`?{workCode:(d=(l=n.workCode)==null?(u=this.work)==null?void 0:u.workCode:l)==null?``:d,panoIndex:n.panoIndex}:this.pano;if(!e.Mode.hasOwnProperty(t)){let e=Error(`mode "${t}" is not existed`);this.throwError(e),s(e);return}if((t===e.Mode.Panorama||t===e.Mode.VRPanorama||t===e.Mode.XRPanorama)&&!this.works.getObserver(m)){let e=Error(`PanoId ${gb(m)} not existed.`);this.throwError(e),s(e);return}(t===e.Mode.Floorplan||t===e.Mode.Topview||t===e.Mode.Mapview||t===e.Mode.Model)&&this.modelScene.empty&&(f=0);let h=this.controller,g=this.currentMode,_=()=>{if(this.controller&&this.controller.stopMomentumMovement(),this.controller&&a===!1&&g===t)t===e.Mode.Panorama||t===e.Mode.Model||t===e.Mode.VRPanorama||t===e.Mode.XRPanorama?!vb(this.pano,m)&&`moveToPano`in this.controller&&typeof this.controller.moveToPano==`function`?this.controller.moveToPano(m,Object.assign({duration:f},n),i):this.controller.updateCamera(n,f,i).catch(K):(vb(this.pano,m)||(this.pano=m),this.controller.updateCamera(n,f,i).catch(K));else{let e=Object.assign(Object.assign({},n),m),r=Object.assign(Object.assign({initial:{state:e,currentState:this.getCurrentState(),duration:f,effect:p,userAction:i}},this.commonParams()),this.controllerInits[t]),a=nD[t].initAnimationEndState(r),o=$(`mode.change.request`,{prevMode:this.currentMode,mode:t,state:a,userAction:i});if(this.emit(`mode.change.request`,o),!o.defaultPrevented){h&&h.destroy(),this.controller=this.applyController(t,r);let e=$(`mode.change`,{prevMode:this.currentMode,mode:t,state:a,userAction:i});this.emit(`mode.change`,e)}}o()},v=iu.shared.getContext();if(v&&(typeof XRSession<`u`&&v instanceof XRSession&&v.end(),iu.shared.setContext(null)),t===e.Mode.VRPanorama)this.requestFullscreen(),uD().then(()=>_()).catch(e=>{let t=e instanceof Error?e:Error(String(e));this.exitFullscreen(),this.throwError(t),s(t)});else if(t===e.Mode.XRPanorama){if(!CE.isBackendXRCapable(this.renderer)){let e=Error(`XRPanorama 需要 WebGL2 回落后端。请在 new Five() 时传入 { forceWebGL: true }。后端在运行时无法切换,设备检测必须发生在 new Five() 之前。`);this.throwError(e),s(e);return}if(!CE.isBrowserXRCapable()){let e=Error(`当前浏览器不支持 WebXR(navigator.xr 不存在)。`);this.throwError(e),s(e);return}dD().then(e=>{iu.shared.setContext(e),a=!0;try{_()}catch(t){console.error(`[XR] changeMode 建立 XRPanorama controller 失败,结束 session: ${t instanceof Error?t.message:String(t)}`),Promise.resolve(e.end()).catch(()=>{}),iu.shared.setContext(null);let n=t instanceof Error?t:Error(String(t));this.throwError(n),s(n)}}).catch(e=>{let t=e instanceof Error?e:Error(String(e));this.throwError(t),s(t)})}else _()})}getPixels(e,t,n,r,i,a,o){return Wr(this,void 0,void 0,function*(){if(!this.renderer)throw Error(`renderer is not initialized.`);let s=G(),c=this.renderer.getPixelRatio(),u=this.renderer.getRenderTarget(),d=this.getSize(new l.Vector2),f=0,p=0,m=1,h=1,g,_,v,y,b;typeof e==`number`?(f=e,typeof t==`number`&&(p=t),typeof n==`number`&&(m=n),typeof r==`number`&&(h=r),g=i,_=a,b=o):(f=e.x,p=e.y,m=e.width,h=e.height,g=e.pixelRatio,_=e.flipY,v=e.helperVisible,y=e.skipPanorama,b=e.buffer),f=Math.floor(f),p=Math.floor(p),m=Math.floor(m),h=Math.floor(h),g=Math.floor(g==null?c:g),_=_==null?!1:_;let x=this.helperVisible,S=this.modelScene.parameter.modelAlpha;this.helperVisible=v==null?this.helperVisible:v,y&&(this.controller instanceof nD.Panorama||this.controller instanceof nD.VRPanorama||this.controller instanceof nD.XRPanorama)&&y===!0&&this.modelScene.parameter.set(`modelAlpha`,1),this.modelScene.update(this.renderer,this.camera);let C=this.getPixelsRenderTarget;C.setSize(m*g,h*g),this.renderer.setRenderTarget(C),this.camera.pixelRatio=g,this.camera.resolution.set(m,h),this.camera.setViewOffset(d.width,d.height,f,d.height-p-h,m,h),this.camera.aspect=d.width/d.height,this.camera.updateTime(s),this.scene.update(this.renderer,this.camera);let w=this.renderer.autoClear,T=this.renderer.autoClearColor,E=this.renderer.autoClearDepth,D=this.renderer.autoClearStencil,O=this.renderer.getClearColor(yD),k=this.renderer.getClearAlpha(),A=this.renderer.getScissorTest();this.renderer.autoClear=!0,this.renderer.autoClearColor=!0,this.renderer.autoClearDepth=!0,this.renderer.autoClearStencil=!0,this.renderer.setScissorTest(!1);let j=this.scene.background;this.scene.background=this.camera.isOrthographicCamera||this.backgroundAlpha<1?null:j,this.renderer.render(this.scene,this.camera),this.scene.background=j,this.renderer.autoClear=w,this.renderer.autoClearColor=T,this.renderer.autoClearDepth=E,this.renderer.autoClearStencil=D,this.renderer.setClearColor(O,k),this.renderer.setScissorTest(A),this.helperVisible=x,S===void 0?this.modelScene.parameter.reset(`modelAlpha`):this.modelScene.parameter.set(`modelAlpha`,S),this.renderer.setRenderTarget(u),this.camera.clearViewOffset(),this.camera.pixelRatio=c,this.camera.resolution.copy(d),this.camera.aspect=this.camera.resolution.width/this.camera.resolution.height,this.camera.updateTime(s),this.modelScene.update(this.renderer,this.camera),this.scene.update(this.renderer,this.camera);let M=m*g,N=h*g,ee=M*N,P=ee*4;if(b){if(b.length!==P)throw Error(`buffer length is not equals pixels ${P}`)}else b=new Uint8Array(P);let te=yield this.renderer.readRenderTargetPixelsAsync(C,0,0,M,N),ne=M*4;if(te.length===P)b.set(te);else{let e=Math.ceil(ne/256)*256;for(let t=0;t<N;t++){let n=t*e;b.set(te.subarray(n,n+ne),t*ne)}}if(!_){let e=ee/2;for(let t=0,n=0,r=0,i=0;n<e;n++)for(i=(N-Math.floor(n/M)-1)*M+n%M,r=0;r<4;r++)t=b[n*4+r],b[n*4+r]=b[i*4+r],b[i*4+r]=t}return b})}getElement(){var e;return(e=this.renderer)==null?void 0:e.domElement}render(e){let t=this.renderer;if(!t)return;let n=t.getRenderTarget();t.setRenderTarget(null);let r=t.autoClear,i=t.autoClearColor,a=t.autoClearDepth,o=t.autoClearStencil,s=t.getClearColor(yD),c=t.getClearAlpha(),l=t.getViewport(_D),u=t.getScissor(vD),d=t.getScissorTest();t.autoClear=!0,t.autoClearColor=!0,t.autoClearDepth=!0,t.autoClearStencil=!0;let f=t.getSize(bD),p=Math.floor(f.x*this.viewport.left),m=Math.floor(f.y*this.viewport.bottom),h=Math.floor(f.x*this.viewport.width),g=Math.floor(f.y*this.viewport.height);t.setClearColor(this.backgroundColor,this.backgroundAlpha),t.setViewport(p,m,h,g),t.setScissor(p,m,h,g);let _=this.viewport.bottom!==0||this.viewport.left!==0||this.viewport.width!==1||this.viewport.height!==1;t.setScissorTest(_);let v=this.scene.background;this.scene.background=this.camera.isOrthographicCamera||this.backgroundAlpha<1?null:v;let y=!0;this.controller&&this.controller.render()&&(y=!1),y&&this.fiveRenderer.render(t,this.scene,this.modelScene,this.camera,this.needsRender),this.scene.background=v,t.autoClear=r,t.autoClearColor=i,t.autoClearDepth=a,t.autoClearStencil=o,t.setClearColor(s,c),t.setViewport(l),t.setScissor(u),t.setScissorTest(d),t.setRenderTarget(n),e&&iu.shared.add(e,!0)}updateTime(e,t,...n){if(this.currentUpdateArgs={time:e,args:n},this.destroyed)return;if(this.renderer&&mf.detectSupport(this.renderer),this.syncingState=this.syncState(e,t),this.controller&&this.controller.updateTime(e,t,...n),this.renderer&&(this.camera.pixelRatio=this.renderer.getPixelRatio(),this.getSize(this.camera.resolution),this.camera.aspect=this.camera.resolution.width/this.camera.resolution.height),this.camera.controllerMode=this.currentMode,this.camera.updateTime(e),this.renderer){let e=this.modelScene.loaded,t=this.modelScene.refined;this.modelScene.update(this.renderer,this.camera),e===!1&&this.modelScene.loaded===!0&&(this.controller&&this.controller.updateModel(this.modelScene),iu.shared.add(()=>{this.emit(`models.load`,$(`models.load`,{modelScene:this.modelScene}))},!0,0,10)),t===!1&&this.modelScene.refined===!0&&iu.shared.add(()=>{this.emit(`models.refined`,$(`models.refined`,{modelScene:this.modelScene}))},!0,0,10)}if(this.camera.autoNearFar){gD.makeEmpty(),gD.expandByObject(this.modelScene.boundingMesh);let t=gD.getBoundingSphere(hD),n=t.radius*2;t.containsPoint(this.camera.position)||(n=this.camera.position.distanceTo(t.center)+t.radius);let r=H(n/500,.001,.1),i=H(n,800);this.camera.near!==r&&(this.camera.near=r),this.camera.far!==i&&(this.camera.far=i),this.camera.updateTime(e)}if(this.renderer){let e=this.modelScene.visible;this.modelScene.visible=!1,this.scene.update(this.renderer,this.camera),this.modelScene.visible=e}if(this.syncingState=!1,this.controller&&this.controller.needsRender===!0&&(this.controller.needsRender=!1,this.needsRender=!0),this.camera.needsRender===!0&&(this.camera.needsRender=!1,this.needsRender=!0),this.modelScene.needsRender===!0&&(this.modelScene.needsRender=!1,this.needsRender=!0),this.scene.needsRender===!0&&(this.scene.needsRender=!1,this.needsRender=!0),this.pbmGaussianSplattingRenderMesh&&this.pbmGaussianSplattingRenderMesh.needsRender===!0&&(this.pbmGaussianSplattingRenderMesh.needsRender=!1,this.needsRender=!0),this.onlyRenderIfNeeds!==!0&&(this.needsRender=!0),this.paused===!0||this.renderer instanceof NS&&!this.renderer.isInitialized)return;let r=$(`render.prepare`,{needsRender:this.needsRender});this.emit(`render.prepare`,r),r.defaultPrevented&&(this.needsRender=!1);let i=this.needsRender;this.render(),this.needsRender=!1,this.emit(`render`,$(`render`,{needsRender:i})),this.hasListener(`fps`)&&(this.fps.testTime&&e-this.fps.testTime<1e3?this.fps.testCount++:(this.emit(`fps`,this.fps.testCount),this.fps.testTime=e,this.fps.testCount=0))}pause(){this.paused=!0,this.renderer&&this.renderer instanceof NS&&this.renderer.clear(!0,!0,!0)}play(){this.needsRender=!0,this.paused=!1}moveToPano(t,n={},r=!0){let{controller:i,renderer:a}=this;if(!i)return this.throwError(Error(`controller is not initialized.`)),Promise.resolve();if(!a)return this.throwError(Error(`renderer is not initialized.`)),Promise.resolve();typeof t==`number`&&this.pano.workCode&&(t={workCode:this.pano.workCode,panoIndex:t});let o=this.works.getObserver(t);if(!o)return this.throwError(Error(`pano ${JSON.stringify(t)} not existed.`)),Promise.resolve();let s={workCode:o.work.workCode,panoIndex:o.panoIndex};return`moveToPano`in i&&typeof i.moveToPano==`function`?i.moveToPano(s,n,r):o&&(this.pano=s,this.once(`initAnimation.start`,e=>{n.moveStartCallback&&n.moveStartCallback(e.state)}),this.once(`initAnimation.end`,e=>{n.moveEndCallback&&n.moveEndCallback(e.state)}),this.changeMode(e.Mode.Panorama,n,{effect:n.effect},r)),this.ready()}preloadPano(e,t=K){let n=this.works.getObserver(e);if(!n)return Promise.reject(Error(`Pano ${JSON.stringify(e)} never found`));let r=[`right`,`left`,`up`,`down`,`front`,`back`],i=G();return Promise.all(r.map(e=>{let t=gb({panoIndex:n.panoIndex,workCode:n.work.workCode}),r=Object.assign({key:`pano.${t}.${e}`},hl(this.imageOptions,[`size`,`format`,`quality`,`forceUseExifOrientation`,`mappings`])),i=n.work.getURL(n.images[e]),a=this.imageOptions.transform?this.imageOptions.transform(i,r):ql(i,r);return vy(this.fiveId,n.work).preload(a)})).then(()=>{let e=G()-i;return t(e),e})}project2d(e,t=!1){if(!this.renderer)return null;if(t){let t=this.camera.position,n=e.clone().sub(t),r=new l.Raycaster(t,n.clone().normalize());r.params.Points={threshold:.1};let[i]=this.modelScene.intersectRaycaster(r);if(i&&i.distance+.01<n.length())return null}let n=e.clone().project(this.camera);if(Math.abs(n.z)>1)return null;let r=this.renderer.getSize(new l.Vector2),i=r.x*this.viewport.width,a=r.y*this.viewport.height,o=r.x*this.viewport.left+(n.x+1)/2*i,s=r.y*(1-this.viewport.bottom-this.viewport.height)+(-n.y+1)/2*a;return new l.Vector2(o,s)}getCurrentState(){return Object.assign(Object.assign({},this.camera.copyPose()),{mode:this.currentMode,workCode:this.pano.workCode,panoIndex:this.pano.panoIndex})}setState(e,t=!1,n=!0){var r,i,a,o,s,c,u,d,f,p;e=hl(e,[`mode`,`workCode`,`panoIndex`,`longitude`,`latitude`,`fov`,`offset`,`distance`]),e.offset&&!(e instanceof l.Vector3)&&(e.offset=new l.Vector3(e.offset.x,e.offset.y,e.offset.z));let m;if(typeof e.panoIndex==`number`)if(e.workCode)m={workCode:e.workCode,panoIndex:e.panoIndex};else{let t=(i=(r=this.work)==null?void 0:r.workCode)==null?``:i,n=this.state.workCode;this.works.filter(e=>e.workCode===n).length>0&&(t=n),m={workCode:t,panoIndex:e.panoIndex}}let h=(a=e.mode)==null?this.state.mode:a,g,_,v,y,b;if(this.controller&&this.controller.stopMomentumMovement(),this.state.mode!==h){if(h===`VRPanorama`){this.changeMode(`VRPanorama`,void 0,void 0,!0);return}if(h===`XRPanorama`){this.changeMode(`XRPanorama`,void 0,void 0,!0);return}let t={workCode:m==null?void 0:m.workCode,panoIndex:m==null?void 0:m.panoIndex};typeof e.longitude==`number`&&(t.longitude=e.longitude),typeof e.latitude==`number`&&(t.latitude=e.latitude),typeof e.fov==`number`&&(t.fov=e.fov),typeof e.distance==`number`&&(t.distance=e.distance),e.offset instanceof l.Vector3&&(t.offset=e.offset);let n=Object.assign(Object.assign({initial:{state:t,currentState:this.getCurrentState(),duration:this.modeChangeDuration,effect:`fly`,userAction:!1}},this.commonParams()),this.controllerInits[h]),r=nD[h].initAnimationEndState(n);g=r.longitude,_=r.latitude,v=r.fov,y=r.offset,b=r.distance}else g=(o=e.longitude)==null?this.state.longitude:o,_=(s=e.latitude)==null?this.state.latitude:s,v=(c=e.fov)==null?this.state.fov:c,y=(u=e.offset)==null?this.state.offset:u,b=(d=e.distance)==null?this.state.distance:d;let x={workCode:(m==null?this.pano:m).workCode,panoIndex:(m==null?this.pano:m).panoIndex,mode:h,longitude:g,latitude:_,fov:v,offset:y,distance:b};this.emit(`state.set`,$(`state.set`,{userAction:n,state:x})),yC(this.state,x)||(this.controller&&x.mode===`VRPanorama`&&x.mode!==this.state.mode?(vC(this.state,x),this.changeMode(`VRPanorama`)):this.controller&&x.mode===`XRPanorama`&&x.mode!==this.state.mode?(vC(this.state,x),this.changeMode(`XRPanorama`)):(vC(this.state,x),this.controller&&n&&(this.controller.userAction=!1),t&&this.state.mode===x.mode&&(this.syncingState=this.syncState(G(),0,t),this.syncingState&&((f=this.controller)==null||f.updateTime(G(),0),this.syncingState=!1)),this.emit(`state.change`,$(`state.change`,{userAction:n,state:this.state})),(p=this.analysis)==null||p.state(this.works,this.state)))}syncState(t,n,r=!1){let i=this.stateSynced;if(this.stateSynced=!1,!this.controller)return!1;if(this.state.mode!==this.currentMode){let e={mode:this.state.mode,workCode:this.state.workCode,panoIndex:this.state.panoIndex,longitude:this.state.longitude,latitude:this.state.latitude,fov:this.state.fov,offset:this.state.offset,distance:this.state.distance};return this.changeMode(this.state.mode,e,this.modeChangeDuration,this.controller.userAction),!0}if(!this.controller.isReady())return!1;if(this.controller instanceof nD.Model){if(pC(this.camera.pose.offset,this.state.offset)){let e={longitude:this.state.longitude,latitude:this.state.latitude,fov:this.state.fov,offset:this.state.offset};return this.controller.moveToPosition(this.state.offset,Object.assign(Object.assign({},e),{duration:r?0:void 0}),!1),!0}}else{let e={workCode:this.state.workCode,panoIndex:this.state.panoIndex};if(!vb(e,this.pano)&&`moveToPano`in this.controller&&typeof this.controller.moveToPano==`function`){let t={longitude:this.state.longitude,latitude:this.state.latitude,fov:this.state.fov,offset:this.state.offset,distance:this.state.distance};return this.controller.moveToPano(e,t,!1),!0}}if(this.controller instanceof nD.Floorplan||this.controller instanceof nD.Topview||this.controller instanceof nD.Mapview){let e=.2,t=Math.PI/45,n=r?this.state.fov:Px(this.camera.pose.fov,this.state.fov,1),i=Math.abs(this.camera.pose.distance-this.state.distance),a=i>e*15?i/15:.2,o=r?this.state.distance:Px(this.camera.pose.distance,this.state.distance,a),s=this.camera.pose.offset.distanceTo(this.state.offset),c=s>e*15?s/15:e,u=r?new l.Vector3().copy(this.state.offset):Fx(this.camera.pose.offset,this.state.offset,c),{longitude:d,latitude:f}=r?{longitude:this.state.longitude,latitude:this.state.latitude}:Ix({longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude},{longitude:this.state.longitude,latitude:this.state.latitude},t);if(dC(n,this.camera.pose.fov)||pC(u,this.camera.pose.offset)||dC(o,this.camera.pose.distance)||dC(d,this.camera.pose.longitude,Math.PI*2)||dC(f,this.camera.pose.latitude)){let e={x:u.x,y:u.y,z:u.z},t={fov:n};return Object.assign(e,{distance:o}),Object.assign(t,{longitude:d,latitude:f}),this.controller.stopMomentumMovement(),this.controller.cameraMotion.set(t,0).catch(K),this.controller.locationMotion.set(e,0).catch(K),!0}}else{let e=Math.PI/45,t=r?this.state.fov:Px(this.camera.pose.fov,this.state.fov,1),{longitude:n,latitude:i}=r?{longitude:this.state.longitude,latitude:this.state.latitude}:Ix({longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude},{longitude:this.state.longitude,latitude:this.state.latitude},e),a=this.state.distance,o=new l.Vector3().copy(this.state.offset);if(dC(a,this.camera.pose.distance)&&(this.state.distance=this.camera.pose.distance),pC(o,this.camera.pose.offset)&&(this.state.offset=this.camera.pose.offset.clone()),dC(n,this.camera.pose.longitude,Math.PI*2)||dC(i,this.camera.pose.latitude)||dC(t,this.camera.pose.fov))return this.controller.stopMomentumMovement(),this.controller.cameraMotion.set({longitude:n,latitude:i,fov:t},0).catch(K),!0}if(this.stateSynced=!0,i===!1&&this.emit(`state.synced`,$(`state.synced`,{userAction:!1,state:this.state})),this.readyCallbacks.length&&this.stateSynced){let t=this.currentMode;if(!(t===e.Mode.Floorplan||t===e.Mode.Topview||t===e.Mode.Mapview||t===e.Mode.Model)||this.modelScene.loaded){let e=this.readyCallbacks.slice();this.readyCallbacks.length=0;for(let t of e)this.controller instanceof nD.Panorama&&t.tile===!0?this.readyCallbacks.push(t):t()}}return!1}ready(e={}){return new Promise(t=>{var n;this.readyCallbacks.push(Object.assign(t,{tile:(n=e.tile)==null?!1:n}))}).then(()=>this.model.initReady).then(K)}requestFullscreen(){var e;if(!_S)return;let t=(e=this.getElement())==null?void 0:e.parentNode;t&&`requestFullscreen`in t&&typeof document<`u`&&document.fullscreenElement===null&&t.requestFullscreen()}exitFullscreen(){typeof document<`u`&&document.fullscreenElement&&`exitFullscreen`in document&&document.exitFullscreen()}throwError(e){this.hasListener(`error`)?this.emit(`error`,e):console.error(e)}bindModel(e){let t=()=>{iu.shared.add(()=>{this.emit(`model.load`,$(`model.load`,{work:e.work,model:e,error:null}))},!0)},n=t=>{let{error:n}=t;this.emit(`model.error`,$(`model.error`,{work:e.work,model:e,error:n})),this.throwError(n)},r=()=>{this.emit(`model.changeShownFloor`,$(`model.changeShownFloor`,{work:e.work,model:e,error:null}))},i=t=>{this.emit(`models.tileLoad`,$(`models.tileLoad`,{work:e.work,model:e,tile:t.tile}))},a=t=>{this.emit(`models.tileUnload`,$(`models.tileUnload`,{work:e.work,model:e,tile:t.tile}))},o=()=>{e.removeEventListener(`load`,t),e.removeEventListener(`error`,n),e.removeEventListener(`changeShownFloor`,r),e.removeEventListener(`tileLoad`,i),e.removeEventListener(`tileUnload`,a),e.removeEventListener(`dispose`,o)};e.addEventListener(`load`,t),e.addEventListener(`error`,n),e.addEventListener(`changeShownFloor`,r),e.addEventListener(`tileLoad`,i),e.addEventListener(`tileUnload`,a),e.addEventListener(`dispose`,o),this.emit(`model.request`,$(`model.request`,{work:e.work,model:e,error:null}))}bindWorkFetcher(e){let t=this,n=e.workCode,r=e.allowHosts,i=new pl({get networkSubscribe(){return t.networkSubscribe},requestProxy(e){return Promise.resolve(e).then(e=>t.requestProxy(e,n)).then(e=>{let t=Vb(e,r);return t instanceof Error?Promise.reject(t):t})}});yy(this.fiveId,e,i)}commonParams(){return{fiveId:this.fiveId,scene:this.scene,xrCustomObjectsScene:this.xrCustomObjectsScene,helper:this.helperGroup,camera:this.camera,renderer:this.renderer,viewport:this.viewport,element:this.getElement(),works:this.works,imageOptions:this.imageOptions,enableWheel:this.enableWheel,enableHDR:this.enableHDR,extraElements:this.extraElements,videoTexture:this.videoTexture,modelScene:this.modelScene}}applyController(t,n){if(!this.renderer)throw Error(`renderer is not initialized.`);let r=nD[t];this.currentMode=t;let i=new r(n);for(let e of iD)i.on(e,(...t)=>{if(this.emit(e,...t))return!1});{let e=nD[t].initAnimationEndState(n),r=n.initial.userAction;yC(this.state,e)||(vC(this.state,e),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state}))),this.emit(`currentState.change`,$(`currentState.change`,{userAction:r,state:this.getCurrentState()}))}return i.on(`camera.update`,e=>{var t;if(this.controller){let n=this.controller.getTargetState();e.userAction&&this.syncingState===!1&&this.state.mode===n.mode&&!yC(this.state,n)&&(vC(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:e.userAction,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}this.emit(`currentState.change`,$(`currentState.change`,{userAction:e.userAction,state:this.getCurrentState()}))}),i.on(`initAnimation.start`,e=>{var t;let{state:n,userAction:r}=e;r&&this.state.mode===n.mode&&!yC(this.state,n)&&(vC(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`initAnimation.end`,e=>{var t;let{state:n,userAction:r}=e;this.pano={workCode:n.workCode,panoIndex:n.panoIndex},r&&this.state.mode===n.mode&&!yC(this.state,n)&&(vC(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.moveTo`,e=>{var t;let{state:n,userAction:r}=e;this.pano={workCode:n.workCode,panoIndex:n.panoIndex},r&&this.state.mode===n.mode&&!yC(this.state,n)&&(vC(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.arrived`,e=>{var t;let{state:n,userAction:r}=e;this.pano={workCode:n.workCode,panoIndex:n.panoIndex},r&&this.state.mode===n.mode&&!yC(this.state,n)&&(vC(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.cancel`,e=>{var t;let{state:n,userAction:r}=e;r&&this.state.mode===n.mode&&!yC(this.state,n)&&(vC(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.moveTo`,e=>{let{userAction:t}=e;this.emit(`currentState.change`,$(`currentState.change`,{userAction:t,state:this.getCurrentState()}))}),i.on(`pano.request`,e=>{this.emit(`pano.request`,e),e.defaultPrevented||this.moveToPano(e.state,e.options,e.userAction)}),i.on(`vr.requestExit`,()=>{this.currentMode===e.Mode.VRPanorama&&(this.exitFullscreen(),this.changeMode(e.Mode.Panorama))}),i.on(`error`,e=>this.throwError(e)),i}removeEventListeners(){}get internalLightsEnabled(){let e=this.scene.children.find(e=>e.name===`internalLights`);return e?e.visible:!1}set internalLightsEnabled(e){let t=this.scene.children.find(e=>e.name===`internalLights`);t&&(t.visible=e),t=this.modelScene.children.find(e=>e.name===`internalLights`),t&&(t.visible=e)}get scissor(){return this.viewport}setScissor(e){return this.setViewport(e)}getPose(){let{longitude:e,latitude:t,fov:n,offset:r,distance:i}=this.camera.copyPose();return{longitude:e,latitude:t,fov:n,offset:r.clone(),distance:i}}getLongitudeAndLatitude(){let{longitude:e,latitude:t}=this.getPose();return{longitude:e,latitude:t}}getOffset(){return this.getPose().offset}getCameraLocal(){if(this.pano.workCode&&this.controller&&this.works){let e=this.works.getObserver(this.pano);if(e){let t=new l.Object3D;t.matrix.copy(e.matrix).premultiply(e.work.transform),t.matrix.decompose(t.position,t.quaternion,t.scale),t.matrixAutoUpdate=!1;let n=new l.Vector3(0,0,-1);n.applyQuaternion(this.camera.quaternion);let r=t.quaternion.clone().invert();return n.applyQuaternion(r),{theta:Math.atan2(n.x,-n.z),phi:-Math.asin(n.y),lookAtVector:n}}}return null}addPass(e){this.fiveRenderer.composer.addPass(e)}removePass(e){let t=this.fiveRenderer.composer.passes.indexOf(e);t!==-1&&this.fiveRenderer.composer.passes.splice(t,1)}insertPass(e,t){this.fiveRenderer.composer.insertPass(e,t)}get renderMode(){return this.fiveRenderer.renderMode}set renderMode(e){this.fiveRenderer.renderMode=e}get enableEDL(){return this.eyeDomeLightingPass.enabled}set enableEDL(e){this.eyeDomeLightingPass.enabled=e,this.needsRender=!0}get enableAdaptiveLuminance(){return this.adaptiveLuminancePass.enabled}set enableAdaptiveLuminance(e){this.adaptiveLuminancePass.enabled=e,this.needsRender=!0}};wD.Mode={Panorama:`Panorama`,Model:`Model`,Floorplan:`Floorplan`,Topview:`Topview`,Mapview:`Mapview`,VRPanorama:`VRPanorama`,XRPanorama:`XRPanorama`},typeof window<`u`&&Object.assign(window,{__FIVE_DEBUG__:{THREE:l,constructor:wD,instances:CD}});var TD=class{static createButton(e){let t=document.createElement(`button`),n=`ENTER VR`,r=`calc(50% - 50px)`,i=`100px`,a;function o(){t.style.display=``,t.style.cursor=`pointer`,t.style.left=r,t.style.width=i,t.textContent=n,t.onmouseenter=function(){t.style.opacity=`1.0`},t.onmouseleave=function(){t.style.opacity=`0.5`},t.onclick=function(){if(!e)return;let t;try{t=e()}catch(e){s(e);return}t&&typeof t.then==`function`&&t.then(void 0,s)}}function s(e){let o=e instanceof Error?e.message:String(e);/forceWebGL/.test(o)&&(a&&clearTimeout(a),t.textContent=`需降级到 WebGL2`,t.style.left=`calc(50% - 75px)`,t.style.width=`150px`,a=setTimeout(function(){a=void 0,t.textContent=n,t.style.left=r,t.style.width=i},3e3))}function c(){t.style.display=``,t.style.cursor=`auto`,t.style.left=`calc(50% - 75px)`,t.style.width=`150px`,t.onmouseenter=null,t.onmouseleave=null,t.onclick=null}function l(){c(),t.textContent=`VR NOT SUPPORTED`}function u(e){e.style.position=`absolute`,e.style.bottom=`20px`,e.style.padding=`12px 6px`,e.style.border=`1px solid #fff`,e.style.borderRadius=`4px`,e.style.background=`rgba(0,0,0,0.1)`,e.style.color=`#fff`,e.style.font=`normal 13px sans-serif`,e.style.textAlign=`center`,e.style.opacity=`0.5`,e.style.outline=`none`,e.style.zIndex=`999`}if(`xr`in navigator)return t.id=`VRButton`,t.style.display=`none`,u(t),navigator.xr.isSessionSupported(`immersive-vr`).then(function(e){e?o():l()}),t;{let e=document.createElement(`a`);return window.isSecureContext===!1?(e.href=document.location.href.replace(/^http:/,`https:`),e.innerHTML=`WEBXR NEEDS HTTPS`):(e.href=`https://immersiveweb.dev/`,e.innerHTML=`WEBXR NOT AVAILABLE`),e.style.left=`calc(50% - 90px)`,e.style.width=`180px`,e.style.textDecoration=`none`,u(e),e}}};exports.AdaptiveLuminancePass=qx,exports.AnimationFrameLoop=iu,exports.BoundingMesh=Ky,exports.Camera=Aa,exports.EffectComposer=lx,exports.EyeDomeLightingPass=Yx,exports.Fetcher=pl,exports.Five=wD,exports.FivePass=dx,exports.FiveRenderer=pS,exports.FlowingFireworks3DPass=aS,exports.FlowingLight2DPass=$x,exports.FlowingLight3DPass=Zx,exports.FullScreenQuad=ux,exports.GSPLAT_PIPELINE_AUTO=bi,exports.GSPLAT_PIPELINE_RASTER_CPU_SORT=xi,exports.GSPLAT_PIPELINE_RASTER_GPU_SORT=Si,exports.GaussianBlurPass=Xx,exports.Histogram=jx,exports.InternalWebGPURenderer=NS,exports.Model=Ly,exports.ModelScene=Jy,exports.Motion=J,exports.NetworkSubscribe=cl,exports.PBMCustomNode=qt,exports.PBMGSObject=Mt,exports.PBMGaussianSplattingObject=Mt,exports.PBMGaussianSplattingNodeMaterial=gr,exports.PBMGaussianSplattingRenderMesh=Oi,exports.PBMGroup=wt,exports.PBMMesh=kt,exports.PBMMeshBasicMaterial=ki,exports.PBMMeshBasicNodeMaterial=Vc,exports.PBMMeshPanoOnlyMaterial=Ai,exports.PBMMeshPanoOnlyNodeMaterial=qc,exports.PBMMeshPhongMaterial=ji,exports.PBMMeshPhongNodeMaterial=Uc,exports.PBMMeshPhysicalMaterial=Mi,exports.PBMMeshPhysicalNodeMaterial=Gc,exports.PBMPanoFilter=Yt,exports.PBMPointCloud=pn,exports.PBMPointCloudMaterial=sn,exports.PBMSkinnedMesh=At,exports.PBMUpdateable=Kt,exports.PBMVertexMarkFlag=Gt,exports.PROXY_CONTROLLER_EVENT_NAMES=iD,exports.PanoCircleMesh=qS,exports.PanoCircleMeshCustom=lC,exports.PanoCircleMeshSolid=tC,exports.Parameter=X,exports.Scene=zS,exports.Subscribe=Bt,exports.TextureLoader=gu,exports.Tile=em,exports.Tile3D=gy,exports.Tile3DModel=gy,exports.TileCache=Rh,exports.TileNode=Dh,exports.TileRequestScheduler=Fh,exports.Tileset=Wh,exports.Trajectory=jh,exports.TrajectoryNode=Mh,exports.Work=rx,exports.WorkResolvedObserver=ox,exports.XRButton=TD,exports.controllersDefaultInitArgs=rD,exports.coordinatesToVector=_a,exports.createDebugBoundingMesh=Yp,exports.createWorks=sx,exports.customNodesCacheKey=Jt,exports.defaultImageURLTransform=ql,exports.draco=of,exports.getViewportScale=lD,exports.headingToLongitude=ba,exports.imageSupport=Al,exports.isBoundingVolume=Wp,exports.isPanoId=yb,exports.loadAt3d=rd,exports.loadDome=sd,exports.loadDomez=md,exports.loadGltf=Cp,exports.loadPbm=Fu,exports.loadPly=vd,exports.longitudeToHeading=ya,exports.makeBoundingVolume=Gp,exports.panoEqual=vb,exports.panoParse=_b,exports.panoStringify=gb,exports.parseWork=ix,exports.registerPBMMaterials=Xc,exports.vectorToCoordinates=va,exports.workToJson=$y;
|
|
1165
|
+
`;function XT(e){let t=1,n=document.getElementsByTagName(`meta`);for(let e=0;e<n.length;e++){let r=n[e];if(r.getAttribute(`name`)===`viewport`){let e=(r.getAttribute(`content`)||``).match(/initial\-scale\=([\d|\.]+)/);e&&(t=Number(e[1])),isNaN(t)&&(t=1)}}let r=e=>Math.floor(e*t)+`px`;return YT.replace(/\n/g,` `).replace(/\ +/g,` `).replace(/\$id/g,e).replace(/(\d+)px/g,(e,t)=>r(Number(t)))}function ZT(){let e=`five_vr_helper_`+Ft(),t=XT(e),n=document.createElement(`div`);return n.className=e,n.innerHTML=t,n}var QT=new l.CircleGeometry(.12,16),$T=(0,f.vec2)(.5,.5),eE=(0,f.float)(.017);function tE(e,t){let n=(0,f.length)($T.sub(e));return(0,f.smoothstep)(t,t.add(eE),n)}function nE(e,t){let n=(0,f.length)($T.sub(e));return(0,f.float)(1).sub((0,f.smoothstep)(t.sub(eE),t,n))}function rE(){let e={opacity:(0,f.uniform)(0)},t=(0,f.uv)(),n=(0,f.length)($T.sub(t)),r=(0,f.float)(.01),i=(0,f.float)(.49),a=(0,f.float)(.29),o=(0,f.float)(1).sub((0,f.smoothstep)(i.sub(r),i,n)),s=(0,f.smoothstep)(a,a.add(r),n),c=(0,f.vec4)(.576,.635,1,.3),u=(0,f.vec4)(1,1,1,(0,f.abs)(n.sub(i.add(a).div(2))).div(i.sub(a)).mul(1.5).add(.1).clamp(0,1)),d=(0,f.mix)(c,u,u.w),p=new l.NodeMaterial;return p.fragmentNode=(0,f.vec4)(d.xyz,d.w.mul(e.opacity).mul(o).mul(s)),p.blending=l.CustomBlending,p.blendSrc=l.SrcAlphaFactor,p.blendDst=l.OneMinusSrcAlphaFactor,p.blendSrcAlpha=l.OneFactor,p.blendDstAlpha=l.OneMinusSrcAlphaFactor,p.depthWrite=!1,p.transparent=!0,{material:p,u:e}}function iE(){let e={circleScale:(0,f.uniform)(1),circleFade:(0,f.uniform)(0),circleOpacity:(0,f.uniform)(.5),loadingAngle:(0,f.uniform)(0),loadingOpacity:(0,f.uniform)(0),opacity:(0,f.uniform)(0),disable:(0,f.uniform)(0)},t=(0,f.uv)();(0,f.length)($T.sub(t));let n=(0,f.float)(.98).add((0,f.abs)((0,f.normalize)((0,f.vec2)(1,-1)).dot(t.sub($T))).mul(2)).clamp(0,1),r=(0,f.vec4)((0,f.mix)((0,f.vec4)(.576,.635,1,1).xyz,(0,f.vec4)(1,1,1,1).xyz,e.circleFade.mul(.5)),n.mul(e.circleOpacity).mul(nE(t,(0,f.float)(.3).mul(e.circleScale)))),i=(0,f.mod)(f.PI.sub((0,f.atan)($T.x.sub(t.x),$T.y.sub(t.y))).add(e.loadingAngle),f.PI2),a=(0,f.vec4)(1,1,1,(0,f.float)(1).sub((0,f.smoothstep)((0,f.float)(0),f.PI2,i)).mul(.9).add(.1).mul(e.loadingOpacity).mul(tE(t,(0,f.float)(.2).mul(e.circleScale))).mul(nE(t,(0,f.float)(.25).mul(e.circleScale)))),o=(0,f.vec4)(1,1,1,(0,f.float)(.5).mul(nE(t,(0,f.float)(.32).mul(e.circleScale)))),s=(0,f.vec4)(1,1,1,0);s=(0,f.mix)(s,r,r.w),s=(0,f.mix)(s,a,a.w),s=(0,f.mix)(s,o,e.disable);let c=(0,f.vec4)(s.xyz,s.w.mul(e.opacity)),u=new l.NodeMaterial;return u.fragmentNode=c,u.blending=l.CustomBlending,u.blendSrc=l.SrcAlphaFactor,u.blendDst=l.OneMinusSrcAlphaFactor,u.blendSrcAlpha=l.OneFactor,u.blendDstAlpha=l.OneMinusSrcAlphaFactor,u.depthWrite=!1,u.transparent=!0,{material:u,u:e}}var aE=class extends l.Object3D{constructor(){super(),this.progress=0,this.opacity=0,this.loading=!1,this.current=!1,this.disabled=!1,this.currentMotion=new J({ringScale:1.1,ringOpacity:0,circleFade:0,circleOpacity:.85,circleScale:1}),this.opacityMotion=new J({opacity:0}),this.loadingMotion=new J({opacity:0}),this.disableMotion=new J({opacity:0}),this.hitTestMesh=new l.Mesh(QT,new l.MeshBasicMaterial({blending:l.CustomBlending,blendSrc:l.SrcAlphaFactor,blendDst:l.OneMinusSrcAlphaFactor,blendSrcAlpha:l.OneFactor,blendDstAlpha:l.OneMinusSrcAlphaFactor,depthWrite:!1,transparent:!0,color:0,opacity:0})),this.hitTestMesh.scale.set(1.5,1.5,1.5);let{material:e,u:t}=rE();this.ringMesh=new l.Mesh(QT,e),this.ringU=t;let{material:n,u:r}=iE();this.panoMesh=new l.Mesh(QT,n),this.panoU=r,this.add(this.hitTestMesh),this.add(this.ringMesh),this.add(this.panoMesh),this.renderOrder=1e4,this.needsRender=!0}setProgress(e){this.progress=e,this.setLoading(e>0)}setOpacity(e){this.opacity!==e&&(this.opacity=e=H(e,0,1),this.opacityMotion.set({opacity:e},30).catch(K))}setCurrent(e){if(this.current!==e){if(e)this.currentMotion.setKeyframes([{progress:0,value:{ringScale:2,ringOpacity:0,circleFade:0,circleOpacity:.85,circleScale:1}},{progress:.05,value:{ringScale:1,ringOpacity:1,circleFade:0,circleOpacity:.85,circleScale:1}},{progress:.15,value:{ringScale:1.2,ringOpacity:1,circleFade:0,circleOpacity:.85,circleScale:1}},{progress:.25,value:{ringScale:1.1,ringOpacity:1,circleFade:0,circleOpacity:.85,circleScale:1}},{progress:.8,value:{ringScale:1.1,ringOpacity:1,circleFade:1,circleOpacity:.85,circleScale:1}},{progress:.9,value:{ringScale:1.1,ringOpacity:1,circleFade:1,circleOpacity:.65,circleScale:.8}},{progress:.92,value:{ringScale:1.1,ringOpacity:1,circleFade:1,circleOpacity:.65,circleScale:.8}},{progress:1,value:{ringScale:1.1,ringOpacity:1,circleFade:1,circleOpacity:.85,circleScale:1.1}}],1500).catch(K);else{let e=[{progress:0,value:Object.assign({},this.currentMotion.value)},{progress:1,value:{ringScale:1.1,ringOpacity:0,circleFade:0,circleOpacity:.85,circleScale:1}}];this.currentMotion.setKeyframes(e,200).catch(K)}this.current=e}}setLoading(e){this.loading!==e&&(e?this.loadingMotion.setKeyframes([{progress:0,value:{opacity:0}},{progress:.3,value:{opacity:0}},{progress:1,value:{opacity:.8}}],500).catch(K):this.loadingMotion.set({opacity:0},0).catch(K),this.loading=e,this.disabled===!0&&this.setDisabled(!1),this.needsRender=!0)}setDisabled(e){this.disabled!==e&&(this.disabled=e,this.loading===!0&&this.setLoading(!1),this.disableMotion.set({opacity:+!!e},300).catch(K),this.needsRender=!0)}tap(){return Promise.resolve()}updateTime(e,t){this.opacityMotion.update(e),this.currentMotion.update(e),this.loadingMotion.update(e);let n=this.opacityMotion.value.opacity;this.visible=n!==0;let{ringScale:r,ringOpacity:i,circleFade:a,circleOpacity:o,circleScale:s}=this.currentMotion.value;this.ringMesh.scale.set(r,1,r),this.ringU.opacity.value=i*n,this.panoU.opacity.value=n,this.panoU.circleOpacity.value=o,this.panoU.circleScale.value=s,this.panoU.circleFade.value=a,this.panoU.loadingOpacity.value=this.loadingMotion.value.opacity,this.panoU.disable.value=this.disableMotion.value.opacity,this.panoU.loadingAngle.value=e/120%(Math.PI*2),this.needsRender=!0}dispose(){this.hitTestMesh.material.dispose(),this.ringMesh.material.dispose(),this.panoMesh.material.dispose()}},oE=1500,sE=Object.assign({},gl(mT,[`maxLatitude`,`minLatitude`])),cE=class e extends hT{static parseArgs(t){if(t instanceof e)return t;let n=Object.assign(Object.assign({},t),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2});return super.parseArgs(n)}static initAnimationEndState(e){let t=this.parseArgs(e),n=super.initAnimationEndState(t);return Object.assign(Object.assign({},n),{mode:`VRPanorama`})}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`VRPanorama`,this.cardboard=new UT(this.renderer);let r=ZT();this.helperElement=r;let i=new VC(r);this.element.parentNode&&(this.element.parentNode.insertBefore(r,this.element),this.updateHelperElementSize(),i.on(`tap`,()=>this.emit(`vr.requestExit`,$(`vr.requestExit`,{})))),this.destroyHelper=()=>{i.destroy(),r.parentNode&&r.parentNode.removeChild(r),this.helperElement=void 0}}updateConfiguration(e){return super.updateConfiguration(Object.assign(Object.assign({},e),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2}))}destroy(){super.destroy(),this.cardboard.dispose(),this.destroyHelper()}isReady(){return!1}updateRenderSize(){this.needsRender=!0}updateCamera(e,t,n){return Promise.resolve()}updateCameraWithKeyframes(e,t,n){return Promise.resolve()}updateTime(e,t,...n){var r,i,a,o,s,c;if(this.destroyed)return;this.updateHelperElementSize(),this.userAction=!0,this.needsRender=!0;let u={},d={},f=this.locationMotion.keyframes[0],p=this.locationMotion.keyframes[this.locationMotion.keyframes.length-1],[m,h]=this.locationMotion.getKeyFrameSegment(e),g=this.panoResourceFromLocationMotionKeyframe(m),_=this.panoResourceFromLocationMotionKeyframe(h),v=this.panoResourceFromLocationMotionKeyframe(f),y=this.panoResourceFromLocationMotionKeyframe(p),b=!1;if(this.modelAlphaMotion.ended===!1&&(this.modelAlphaMotion.update(e),u.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.perspToOrthoMotion.ended===!1&&(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(H(this.perspToOrthoMotion.value.perspToOrtho,0,1))),this.locationMotion.ended===!1){this.locationMotion.update(e);let t=this.locationMotion.value.count-h.value.count+1,n=new l.Vector3().copy(g.position),a=new l.Vector3().copy(_.position);if(u.progress=t,t>=.01&&t<=.99&&(u.progress=H(_.effectEasing(t),.01,.99)),_.panoPicture&&(t<1?g.panoPicture&&(u.pano0=g.panoPicture):u.pano0=_.panoPicture,u.pano1=_.panoPicture),_.effect===`montage`?u.transition=`BLACK`:_.effect===`spread`?u.transition=`SPREAD`:u.transition=`FADE`,_.effect===`zoomin`||_.effect===`zoomout`?u.progress=Math.pow(t,3):_.effect===`model`&&this.camera.pose.distance<.01&&(u.modelAlpha=1-Math.pow(H(Math.abs(t-.5)*2,0,1),4)),t<1&&_.effect!==`fly`){if(u.pano0&&g.panoPicture){let e={panoId:u.pano0.panoId,map:u.pano0.map,mapHistogram:u.pano0.mapHistogram,mapSize:u.pano0.mapSize,zoom:u.pano0.zoom,matrix:g.panoPicture.matrix.clone().setPosition(_.position),gainmap:u.pano0.gainmap?{map:u.pano0.gainmap.map,cfg:Object.assign({},u.pano0.gainmap.cfg)}:void 0},t=this.panoPictureObserverMap.get(u.pano0);t&&this.panoPictureObserverMap.set(e,t),u.pano0=e}n.copy(a),b=!0}d.distance=this.locationMotion.value.distance,d.offset=new l.Vector3(n.x+(a.x-n.x)*t,n.y+(a.y-n.y)*t,n.z+(a.z-n.z)*t);let o=[],s=[];for(let e of this.locationMotion.keyframes){let{key:t,progress:n}=e;t!==void 0&&(o.push(t),n>this.locationMotion.progress&&s.push(t))}for(let e of Object.keys(this.panoResources)){if(s.indexOf(e)>=0)continue;let t=this.panoResources[e];if(t.panoPicture){let e=t.panoPicture.map;if(e){if(e===((r=u.pano0)==null?void 0:r.map)||e===((i=u.pano1)==null?void 0:i.map))continue;e.dispose(),t.panoPicture=null}}o.indexOf(e)>=0||delete this.panoResources[e]}this.currentPano=_b(_.panoId),this.emit(`pano.moving`,$(`pano.moving`,{userAction:this.userAction,prevPano:_b(v.panoId),state:Object.assign(Object.assign(Object.assign(Object.assign({},_b(y.panoId)),{mode:this.mode}),xC(this.camera.pose)),d),options:{},progress:this.locationMotion.progress,error:null}))}wC(u)===!1&&this.modelScene.parameter.set(u),d.offset&&this.camera.position.copy(d.offset);let x=this.camera.pose.longitude,S=this.camera.pose.latitude;this.camera.quaternion.fromArray(this.cardboard.sensor.getOrientation()),this.camera.computePose(),(x!==this.camera.pose.longitude||S!==this.camera.pose.latitude)&&(this.cameraMotion.set(hl(this.camera.pose,[`longitude`,`latitude`]),0).catch(K),this.emit(`camera.update`,$(`camera.update`,{userAction:!0,state:Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),xC(this.camera.pose))}))),this.works.getObserver(this.currentPano);let C=this.works.getObserver(g.panoId),w=this.works.getObserver(_.panoId),T=new Map;if(C)for(let e of C.accessibleNodes){let t=C.work.observers[e];if(t){let e=gb({panoIndex:t.panoIndex,workCode:t.work.workCode});T.set(e,t)}}if(w)for(let e of w.accessibleNodes){let t=w.work.observers[e];if(t){let e=gb({panoIndex:t.panoIndex,workCode:t.work.workCode});T.set(e,t)}}if(this.panoMeshes.forEach((e,t)=>{let n=T.get(t);n?(e.position.copy(n.position).applyMatrix4(n.work.transform),T.delete(t)):(this.helper.remove(e),e.dispose(),this.panoMeshes.delete(t))}),T.forEach((e,t)=>{let n=new aE;n.position.copy(e.position).applyMatrix4(e.work.transform),e.position.distanceTo(e.standingPosition)>this.aerialObserverMinHeight?n.scale.setScalar(15):n.scale.setScalar(1),this.panoMeshes.set(t,n),this.helper.add(n),T.delete(t)}),this.camera.pose.distance>.1||b?this.panoMeshes.forEach((n,r)=>{n.setOpacity(0),n.updateTime&&n.updateTime(e,t),n.visible=!1}):this.panoMeshes.forEach((e,t)=>{let n=_b(t),r=this.works.getObserver(n);if(!r)return;if(!r.loadable&&!r.active){e.setOpacity(0);return}let i=e.position.clone().setY(this.camera.position.y).distanceTo(this.camera.position);i<.05?e.setOpacity(0):e.setOpacity(H(1.5/i,0,1)),vb(this.currentPano,n)&&e.setOpacity(0),e.lookAt(this.camera.position)}),this.locationMotion.ended){let n=this.intersect(e);this.panoMeshes.forEach((r,i)=>{r.setCurrent(r===n),r.updateTime&&r.updateTime(e,t)})}{let e=(a=this.modelScene.parameter.progress)==null?1:a,t=Math.round(e),n=this.modelScene.parameter.pano0,r=this.modelScene.parameter.pano1,i=t===0?n:r,s;if(i&&(s=this.works.getObserver(i.panoId),s||(s=this.panoPictureObserverMap.get(i))),this.tiling.appearDuration=this.tileAppearDuration,this.tiling.maxRequest=e<(cu()?.6:.99)?0:this.tileMaxRequest,this.tiling.imageOptions=this.imageOptions,!s||!i||this.tileLevelForFov===!1||this.camera.perspToOrtho.x>0){this.tiling.setObserver(null);let e={renderer:this.renderer,resolution:this.camera.resolution,pixelRatio:this.camera.pixelRatio,time:this.camera.time,cameraMatrix:this.camera.matrixWorld,cameraProjectionMatrix:this.camera.projectionMatrix,panoMap:null,panoGainmap:void 0,panoMatrix:new l.Matrix4,panoZoom:1,minLevel:0,level:0};this.tiling.update(e),this.modelScene.parameter.set(`refinedScreen`,null)}else{let e=$l(i.mapSize),a=e+1,c=new l.Vector2().copy(this.camera.resolution).multiplyScalar(this.camera.pixelRatio),u=Math.floor(this.tileLevelForFov(this.camera.fov,c)),d=u>e?u:0;this.tiling.setObserver(s);let f={renderer:this.renderer,resolution:this.camera.resolution,pixelRatio:this.camera.pixelRatio,time:this.camera.time,cameraMatrix:this.camera.matrixWorld,cameraProjectionMatrix:this.camera.projectionMatrix,panoMap:i.map,panoGainmap:i.gainmap,panoMatrix:i.matrix,panoZoom:i.zoom,minLevel:a,level:d,useHDR:this.modelScene.parameter.useHDR,maxDisplayBoost:this.modelScene.parameter.maxDisplayBoost},p=this.tiling.update(f),m={map:this.tiling.renderTarget.texture,matrixInverse:this.tiling.camera.matrixWorldInverse,projectionMatrix:this.tiling.camera.projectionMatrix,pano:t,opacity:(n==null?void 0:n.panoId)===(r==null?void 0:r.panoId)?1:Sh(Math.abs(((o=this.modelScene.parameter.progress)==null?0:o)-.5)*2)},h=this.modelScene.parameter.refinedScreen;(p||m.pano!==(h==null?void 0:h.pano)||m.opacity!==(h==null?void 0:h.opacity))&&this.modelScene.parameter.set(`refinedScreen`,m)}}this.panoVideo.object.position.copy(this.camera.position),this.panoVideo.updateTime(e);{let e=_.effect,{pano0:t,pano1:n}=this.modelScene.parameter;if(t&&n&&t!==n&&(e===`fly`||e===`model`)&&this.flyEffectUseDepthBuffer){if(((s=this.modelScene.parameter.pano0Depth)==null?void 0:s.panoId)!==t.panoId||((c=this.modelScene.parameter.pano1Depth)==null?void 0:c.panoId)!==n.panoId){this.pano0DepthCubeRenderTarget?this.pano0DepthCubeRenderTarget.width!==512&&this.pano0DepthCubeRenderTarget.setSize(512,512):this.pano0DepthCubeRenderTarget=new l.CubeRenderTarget(512,{minFilter:l.NearestFilter,magFilter:l.NearestFilter,generateMipmaps:!1}),this.pano1DepthCubeRenderTarget?this.pano1DepthCubeRenderTarget.width!==512&&this.pano1DepthCubeRenderTarget.setSize(512,512):this.pano1DepthCubeRenderTarget=new l.CubeRenderTarget(512,{minFilter:l.NearestFilter,magFilter:l.NearestFilter,generateMipmaps:!1});let e=new l.CubeCamera(this.camera.near,this.camera.far,this.pano0DepthCubeRenderTarget);e.matrix.copy(t.matrix),e.matrixWorld.copy(e.matrix),e.matrixAutoUpdate=!1,cT(this.renderer,this.modelScene,e,500);let r=new l.CubeCamera(this.camera.near,this.camera.far,this.pano1DepthCubeRenderTarget);r.matrix.copy(n.matrix),r.matrixWorld.copy(r.matrix),r.matrixAutoUpdate=!1,cT(this.renderer,this.modelScene,r,500),this.modelScene.parameter.set({pano0Depth:{panoId:t.panoId,map:this.pano0DepthCubeRenderTarget.texture,mapSize:this.pano0DepthCubeRenderTarget.width,maxDepth:500},pano1Depth:{panoId:n.panoId,map:this.pano1DepthCubeRenderTarget.texture,mapSize:this.pano1DepthCubeRenderTarget.width,maxDepth:500}})}}else this.modelScene.parameter.set({pano0Depth:null,pano1Depth:null}),this.flyEffectUseDepthBuffer||(this.pano0DepthCubeRenderTarget&&(this.pano0DepthCubeRenderTarget.dispose(),this.pano0DepthCubeRenderTarget=void 0),this.pano1DepthCubeRenderTarget&&(this.pano1DepthCubeRenderTarget.dispose(),this.pano1DepthCubeRenderTarget=void 0))}}render(){return this.renderer.setRenderTarget(null),this.renderer.setScissorTest(!1),this.cardboard.render(this.scene,this.camera),!0}setCamera(e={}){}destroyHelper(){}updateHelperElementSize(){if(!this.helperElement)return;let e=new l.Vector2(this.element.offsetWidth,this.element.offsetHeight),t=e.x*this.viewport.left,n=e.y*(1-this.viewport.bottom-this.viewport.height),r=e.x*this.viewport.width,i=e.y*this.viewport.height;this.helperElement.style.marginLeft!==t+`px`&&(this.helperElement.style.marginLeft=t+`px`),this.helperElement.style.marginTop!==n+`px`&&(this.helperElement.style.marginTop=n+`px`),this.helperElement.style.width!==r+`px`&&(this.helperElement.style.width=r+`px`),this.helperElement.style.height!==i+`px`&&(this.helperElement.style.height=i+`px`)}intersect(e){var t,n;if(this.locationMotion.ended===!1){this.intersectMesh.visible=!1,this.activePanoMesh=void 0,this.activeTime=void 0;return}if(this.activePanoMesh&&this.activeTime&&e-this.activeTime>oE){let e=this.activePanoMesh,t=null;return this.panoMeshes.forEach((n,r)=>{n===e&&(t=r)}),t!==null&&this.moveToPano(_b(t),{},!0),this.activePanoMesh=void 0,this.activeTime=void 0,e}let r=this.camera.getDirection(new l.Vector3),i=new l.Raycaster(this.camera.position,r);i.params.Points={threshold:.1},i.firstHitOnly=!0,i.floorIndex=-1;let a,o=[],s=this.works.getObserver(this.currentPano),c=s?s.accessibleNodes.map(e=>gb({panoIndex:e,workCode:s.work.workCode})):[];for(let e of c){let r=this.panoMeshes.get(e);if(r){let[e]=i.intersectObject((t=r.hitTestMesh)==null?r:t,!0);if(e){let t=(n=s==null?void 0:s.floorIndex)==null?0:n;o.push({panoMesh:r,intersection:Object.assign({floorIndex:t,floor:t},e)})}}}let[u]=o.sort((e,t)=>e.intersection.distance-t.intersection.distance);u?(a=u.intersection,this.activePanoMesh!==u.panoMesh&&(this.activePanoMesh=u.panoMesh,this.activeTime=e),this.intersectMesh.position.copy(u.panoMesh.position),this.intersectMesh.lookAt(this.camera.position)):(this.activePanoMesh=void 0,this.activeTime=void 0),a||(a=this.modelScene.intersectRaycaster(i)[0]);let d=$(`intersect.update`,{raycaster:i,intersection:a==null?null:a,object:this.intersectMesh});if(this.emit(`intersect.update`,d),d.defaultPrevented){this.hideIntersectMesh();return}if(a&&a.face){let e=a.face.normal,t=new l.Quaternion;t.setFromUnitVectors(new l.Vector3(0,0,1),e),this.intersectMesh.quaternion.copy(t);let n=a.point.clone();this.intersectMesh.position.copy(n),u?this.intersectMesh.visible=!1:this.intersectMesh.visible=!0}else this.intersectMesh.visible=!1;return u==null?void 0:u.panoMesh}onPanGesture(){}onTapGesture(){}onPinchGesture(){}onMouseMove(){}onMouseOut(){}},lE=.01,uE=`183`,dE={isXRRenderTarget:!0,_hasExternalTextures:!1,_autoAllocateDepthBuffer:!0,_isOpaqueFramebuffer:!0};function fE(e,t,n,r){let i=new l.RenderTarget(t,n,{format:l.RGBAFormat,type:l.UnsignedByteType,colorSpace:e.outputColorSpace,stencilBuffer:e.stencil===!0,resolveDepthBuffer:r,resolveStencilBuffer:r});return Object.assign(i,dE),i}var pE=class{constructor(e,t={}){var n;this.resources=null,this.warnedRevision=!1,this._outputBufferType=null,this.clearColorScratch=new l.Color,this.viewportScratch=new l.Vector4,this.renderer=e,this.atlasSamples=(n=t.atlasSamples)==null?0:n}get outputBufferType(){return this._outputBufferType}verify(){let e=this.renderer,t=[],n=e.backend;n?(n.isWebGLBackend!==!0&&t.push(`backend.isWebGLBackend`),typeof n.setXRTarget!=`function`&&t.push(`backend.setXRTarget`)):t.push(`renderer.backend`),typeof e.setOutputRenderTarget!=`function`&&t.push(`renderer.setOutputRenderTarget`),typeof e.getOutputRenderTarget!=`function`&&t.push(`renderer.getOutputRenderTarget`);let r=fE(this.renderer,1,1,!0);try{let e=r;for(let[n,r]of Object.entries(dE))e[n]!==r&&t.push(`xrRT.${n}(期望 ${String(r)},实际 ${String(e[n])})`);for(let n of[`multiview`,`resolveDepthBuffer`])e[n]===void 0&&t.push(`xrRT.${n}`)}finally{r.dispose()}if(t.length>0)throw Error(`[RenderTargetBridge] three 内部 API 校验失败(THREE.REVISION=${l.REVISION}),缺失或不符:${t.join(`、`)}`);l.REVISION!==uE&&!this.warnedRevision&&(this.warnedRevision=!0,console.warn(`[RenderTargetBridge] THREE.REVISION=${l.REVISION},XR 标志位语义仅在 r${uE} 复核过,继续运行`))}verifyCameras(e){let t=this.renderer.coordinateSystem,n=e.map((e,n)=>e.coordinateSystem===t?null:n).filter(e=>e!==null);if(n.length>0)throw Error(`[RenderTargetBridge] Eye_Camera[${n.join(`,`)}] 的 coordinateSystem 与 renderer(${t})不一致,three 会改写其投影矩阵(THREE.REVISION=${l.REVISION})`)}init(e){var t,n,r;this.build(e),this._outputBufferType=(r=(n=(t=this.renderer).getOutputBufferType)==null?void 0:n.call(t))==null?null:r}renderFrame(e,t,n){let r=this.renderer,i=r,a=i.backend,o={autoClear:r.autoClear,autoClearColor:r.autoClearColor,autoClearDepth:r.autoClearDepth,autoClearStencil:r.autoClearStencil,viewport:r.getViewport(this.viewportScratch).clone(),scissorTest:r.getScissorTest(),clearAlpha:r.getClearAlpha(),output:i.getOutputRenderTarget(),rt:r.getRenderTarget(),clearColor:i.getClearColor(this.clearColorScratch).clone()};try{let{atlas:s,xrRT:c,quad:u,width:d,height:f}=this.syncResources(e);r.setScissorTest(!1),r.setRenderTarget(s);let p=t.background;r.setClearColor(p instanceof l.Color?p:o.clearColor,1),r.clear(!0,!0,!1),r.autoClear=!1,r.autoClearColor=!1,r.autoClearDepth=!1,r.autoClearStencil=!1;for(let e of n){let n=e.viewport;s.viewport.set(n.x,f-n.height-n.y,n.width,n.height),r.render(t,e.camera)}r.setScissorTest(!1),a.setXRTarget(e.framebuffer),r.setRenderTarget(null),i.setOutputRenderTarget(c);let m=r.getPixelRatio();r.setViewport(0,0,(d+lE)/m,(f+lE)/m),u.render(r)}finally{i.setOutputRenderTarget(o.output),a.setXRTarget(null),r.setRenderTarget(o.rt),r.autoClear=o.autoClear,r.autoClearColor=o.autoClearColor,r.autoClearDepth=o.autoClearDepth,r.autoClearStencil=o.autoClearStencil,r.setScissorTest(o.scissorTest),r.setViewport(o.viewport),r.setClearColor(o.clearColor,o.clearAlpha)}}dispose(){var e,t,n;if(!this.resources)return;this.releaseResources();let r=this.renderer;(t=(e=r.backend)==null?void 0:e.setXRTarget)==null||t.call(e,null),(n=r.setOutputRenderTarget)==null||n.call(r,null),this._outputBufferType=null}syncResources(e){let t=this.resources;return t&&t.layer===e&&t.width===e.framebufferWidth&&t.height===e.framebufferHeight?t:this.build(e)}build(e){this.releaseResources();let t=e.framebufferWidth,n=e.framebufferHeight,r=new l.RenderTarget(t,n,{format:l.RGBAFormat,type:this.supportsHalfFloat()?l.HalfFloatType:l.UnsignedByteType,colorSpace:l.LinearSRGBColorSpace,depthBuffer:!0,stencilBuffer:!1,samples:this.atlasSamples,generateMipmaps:!1,minFilter:l.LinearFilter,magFilter:l.LinearFilter}),i=fE(this.renderer,t,n,e.ignoreDepthValues===!1),a=new l.NodeMaterial;a.fragmentNode=(0,f.vec4)((0,f.texture)(r.texture).rgb,1),a.depthTest=!1,a.depthWrite=!1;let o=new l.QuadMesh(a);return this.resources={layer:e,width:t,height:n,atlas:r,xrRT:i,quad:o},this.resources}releaseResources(){let e=this.resources;e&&(this.resources=null,e.atlas.dispose(),e.xrRT.dispose(),e.quad.material.dispose())}supportsHalfFloat(){var e;let t=(e=this.renderer.backend)==null?void 0:e.gl;return t?!!t.getExtension(`EXT_color_buffer_float`)||!!t.getExtension(`EXT_color_buffer_half_float`):!1}},mE=class{constructor(){this.root=new l.Group,this._entries=new Map,this._dir=new l.Vector3}add(e){for(let t of e){if(this._entries.has(t))continue;let e=new l.Object3D,n=new l.Object3D;e.visible=!1,n.visible=!1,this.root.add(e,n),this._entries.set(t,{source:t,targetRay:e,grip:n,rayFrame:-1})}}remove(e){let t=[];for(let n of e){let e=this._entries.get(n);e&&(this._entries.delete(n),this.root.remove(e.targetRay,e.grip),t.push(e))}return t}update(e,t,n,r){for(let i of this._entries.values()){let{source:a,targetRay:o,grip:s}=i,c=e.getPose(a.targetRaySpace,t),l=a.gripSpace?e.getPose(a.gripSpace,t):null;c?(this._applyPose(o,c,n),i.rayFrame=r):o.visible=!1,c&&l?this._applyPose(s,l,n):s.visible=!1}}hideAll(){for(let{targetRay:e,grip:t}of this._entries.values())e.visible=!1,t.visible=!1}fill(e,t,n){let r=this._entries.get(e);if(!r||r.rayFrame!==n||!r.targetRay.visible)return!1;let{matrixWorld:i}=r.targetRay;return t.ray.origin.setFromMatrixPosition(i),t.ray.direction.copy(this._dir.set(0,0,-1).transformDirection(i)),!0}clear(){for(let{targetRay:e,grip:t}of this._entries.values())this.root.remove(e,t);this._entries.clear()}entries(){return this._entries}_applyPose(e,t,n){let{position:r,orientation:i}=t.transform;e.position.set(n.x+r.x,n.y+r.y,n.z+r.z),e.quaternion.set(i.x,i.y,i.z,i.w),e.visible=!0,e.updateMatrixWorld(!0)}},hE=5e3;function gE(e){let t=[...new Set([e,`local`,`viewer`])];return t.slice(0,t.indexOf(`viewer`)+1)}function _E(){let e=Error(`会话在参考空间解析前已结束`);return e.aborted=!0,e}function vE(e){return e.map(e=>`${e.type}(${e.reason})`).join(`, `)}function yE(e,t){return Wr(this,arguments,void 0,function*(e,t,n={}){var r,i,a;let o=(r=n.timeoutMs)==null?hE:r,s=n.isAborted,c=(i=n.schedule)==null?((e,t)=>setTimeout(e,t)):i,l=(a=n.clear)==null?(e=>clearTimeout(e)):a,u=gE(t),d=[];for(let n of u){let r=yield bE(e,n,o,c,l);if(s!=null&&s())throw _E();if(r.ok)return n!==t&&console.warn(`[XR] 参考空间降级:期望 ${t},实际采用 ${n};失败:${vE(d)}`),{space:r.space,type:n,failures:d};d.push({type:n,reason:r.reason})}let f=Error(`所有参考空间均不可用(期望 ${t}):${vE(d)}`);throw f.attempts=d,f})}function bE(e,t,n,r,i){return Wr(this,void 0,void 0,function*(){let a,o=!1,s=new Promise(n=>{let r=e=>{o||n({ok:!0,space:e})},i=()=>{o||n({ok:!1,reason:`rejected`})};try{e.requestReferenceSpace(t).then(r,i)}catch(e){i()}}),c=new Promise(e=>{a=r(()=>e({ok:!1,reason:`timeout`}),n)});try{return yield Promise.race([s,c])}finally{o=!0,i(a)}})}var xE=5e3,SE=`会话在进入过程中已结束`,CE=class{static isBackendXRCapable(e){let t=e.backend;return(t==null?void 0:t.isWebGPUBackend)!==!0}static isBrowserXRCapable(){return typeof navigator<`u`&&`xr`in navigator}get isPresenting(){return this._isPresenting}get session(){return this._session}get frame(){return this._frame}get referenceSpaceType(){return this._referenceSpaceType}constructor(e,t,n){var r;this.inputs=new mE,this._isPresenting=!1,this._session=null,this._frame=null,this._referenceSpaceType=null,this.refSpace=null,this.layer=null,this.entering=!1,this.entered=!1,this.endedDuringEnter=!1,this.snapshot=null,this.listeners=[],this.firstFrameArrived=!1,this.firstFrameWaiter=null,this.frameNo=0,this.submittedNear=NaN,this.submittedFar=NaN,this.offset=new l.Vector3,this.info={time:0,hasPose:!1,headOrientation:new l.Quaternion,headLocal:new l.Vector3,views:[]},this.viewPool=[{eye:0,viewport:new l.Vector4},{eye:1,viewport:new l.Vector4}],this.frameViews=[],this.bridgeEyes=[],this.tmpViewport=new l.Vector4,this.tmpSize=new l.Vector2,this.onSessionEndEvent=()=>{var e;if(this._session){if(!this.entered){this.endedDuringEnter=!0,(e=this.firstFrameWaiter)==null||e.reject(Error(SE));return}this.teardown()}},this.onInputSourcesChangeEvent=e=>{var t,n;if(!this._session)return;let{added:r,removed:i}=e;this.inputs.add(r),this.inputs.remove(i),(n=(t=this.callbacks).onInputSourcesChange)==null||n.call(t,r,i)},this.onSelectEvent=e=>{var t,n;(n=(t=this.callbacks).onSelect)==null||n.call(t,e.inputSource)},this.onReferenceSpaceReset=()=>{},this.renderer=e,this.options=t==null?{}:t,this.callbacks=n,this.bridge=new pE(e,{atlasSamples:(r=this.options.atlasSamples)==null?0:r}),this.device=wS(),this.profile=OS(this.device,this.options.deviceProfile,e=>{console.warn(`[XR] Device_Profile 字段 ${e} 非法,已回落默认值`)});let i=()=>{let t=new l.PerspectiveCamera;return t.coordinateSystem=e.coordinateSystem,t};this.eyeCameras=[i(),i()],this.info.views=this.frameViews}enter(e){return Wr(this,void 0,void 0,function*(){var t,n;if(!(this.entering||this.entered)){this.entering=!0,this.endedDuringEnter=!1,this.firstFrameArrived=!1,this._session=e;try{this.snapshot=this.captureRendererState(),this.bridge.verify(),this.bridge.verifyCameras(this.eyeCameras);let r=(t=this.renderer.backend)==null?void 0:t.gl;if(!r)throw Error(`[XRManager] 取不到 WebGL2 上下文(renderer.backend.gl),无法创建 XRWebGLLayer`);this.listen(e,`end`,this.onSessionEndEvent),this.listen(e,`inputsourceschange`,this.onInputSourcesChangeEvent),this.listen(e,`select`,this.onSelectEvent),yield r.makeXRCompatible(),this.throwIfEnded();let i=r.getContextAttributes(),a=new XRWebGLLayer(e,r,{alpha:!1,framebufferScaleFactor:1,antialias:i==null?void 0:i.antialias,depth:i==null?void 0:i.depth,stencil:i==null?void 0:i.stencil});this.layer=a;let o=this.options.foveation;o!==void 0&&`fixedFoveation`in a&&(a.fixedFoveation=H(o,0,1)),e.updateRenderState({baseLayer:a}),this.submittedNear=e.renderState.depthNear,this.submittedFar=e.renderState.depthFar,this.bridge.init(a);let s=yield yE(e,(n=this.options.referenceSpaceType)==null?`local-floor`:n,{isAborted:()=>this.endedDuringEnter});this.throwIfEnded(),this.refSpace=s.space,this._referenceSpaceType=s.type,this.listen(s.space,`reset`,this.onReferenceSpaceReset),iu.shared.setContext(e),yield this.waitFirstFrame(),this.throwIfEnded(),this.syncExistingInputSources(e),this.entering=!1,this.entered=!0,this._isPresenting=!0;try{this.callbacks.onSessionStart(e,this.device)}catch(e){console.error(`[XR] onSessionStart 回调抛错`,e)}}catch(e){throw this.rollback(),this.endedDuringEnter?Error(SE):e}}})}exit(){return Wr(this,void 0,void 0,function*(){let e=this._session;if(!(!this.entered||!e))try{yield e.end()}catch(t){this._session===e&&this.teardown()}})}dispose(){var e;let t=this._session;if(this.entering){this.endedDuringEnter=!0,(e=this.firstFrameWaiter)==null||e.reject(Error(SE)),t&&this.endQuietly(t);return}this.entered&&t&&(this.teardown(),this.endQuietly(t))}beginFrame(e,t,n,r,i){let a=this.info;a.time=t;let o=this._session,s=this.refSpace,c=this.layer;if(!o||!s||!c)return this.markNoPose(),a;this._frame=e,this.frameNo++,this.notifyFirstFrame();let l=e.getViewerPose(s),u=l==null?void 0:l.views,d=u?u.length:0;if(!l||!u||d!==1&&d!==2||!this.collectViews(c,u))return this.markNoPose(),this.inputs.hideAll(),a;let f=0,p=0,m=0;for(let e=0;e<d;e++){let t=u[e].transform.position;f+=t.x,p+=t.y,m+=t.z}a.headLocal.set(f/d,p/d,m/d);let h=l.transform.orientation;a.headOrientation.set(h.x,h.y,h.z,h.w),a.hasPose=!0,this.offset.copy(n).sub(a.headLocal);for(let e=0;e<d;e++){let t=u[e],a=this.eyeCameras[this.frameViews[e].eye];a.projectionMatrix.fromArray(t.projectionMatrix),a.projectionMatrixInverse.copy(a.projectionMatrix).invert();let o=t.transform.orientation;a.position.copy(n),a.quaternion.set(o.x,o.y,o.z,o.w),a.near=r,a.far=i,a.updateMatrixWorld(!0)}return this.syncDepthRange(o,r,i),this.inputs.update(e,s,this.offset,this.frameNo),a}renderEyes(e){var t;let n=this.layer;if(!n||!this._session||!this.info.hasPose)return!1;let r=this.bridgeEyes,i=this.frameViews;r.length=i.length;for(let e=0;e<i.length;e++){let n=(t=r[e])==null?r[e]={camera:this.eyeCameras[0],viewport:i[e].viewport}:t;n.camera=this.eyeCameras[i[e].eye],n.viewport=i[e].viewport}return this.bridge.renderFrame(n,e,r),!0}fillRaycaster(e,t){return this.inputs.fill(e,t,this.frameNo)}markNoPose(){this.info.hasPose=!1,this.frameViews.length=0}collectViews(e,t){let n=0;this.frameViews.length=0;for(let r=0;r<t.length;r++){let i=+(t[r].eye===`right`);n&1<<i&&(i=+(i===0)),n|=1<<i;let a=e.getViewport(t[r]);if(!a)return this.frameViews.length=0,!1;let o=this.viewPool[r];o.eye=i,o.viewport.set(a.x,a.y,a.width,a.height),this.frameViews.push(o)}return!0}syncDepthRange(e,t,n){t===this.submittedNear&&n===this.submittedFar||Number.isFinite(t)&&Number.isFinite(n)&&t>0&&n>t&&(e.updateRenderState({depthNear:t,depthFar:n}),this.submittedNear=t,this.submittedFar=n)}notifyFirstFrame(){var e;this.firstFrameArrived||(this.firstFrameArrived=!0,(e=this.firstFrameWaiter)==null||e.resolve())}throwIfEnded(){if(this.endedDuringEnter)throw Error(SE)}waitFirstFrame(){var e;if(this.firstFrameArrived)return Promise.resolve();let t=(e=this.options.firstFrameTimeoutMs)==null?xE:e;return new Promise((e,n)=>{let r=setTimeout(()=>{this.firstFrameWaiter=null,n(Error(`等待首帧超时(${t}ms 内未收到首个 XRFrame)`))},t);this.firstFrameWaiter={resolve:()=>{clearTimeout(r),this.firstFrameWaiter=null,e()},reject:e=>{clearTimeout(r),this.firstFrameWaiter=null,n(e)}}})}syncExistingInputSources(e){var t,n,r;let i=this.inputs.entries(),a=Array.from((t=e.inputSources)==null?[]:t).filter(e=>!i.has(e));a.length!==0&&(this.inputs.add(a),(r=(n=this.callbacks).onInputSourcesChange)==null||r.call(n,a,[]))}listen(e,t,n){e.addEventListener(t,n),this.listeners.push({target:e,type:t,handler:n})}removeListeners(){for(let{target:e,type:t,handler:n}of this.listeners)e.removeEventListener(t,n);this.listeners.length=0}captureRendererState(){let e=this.renderer;return{viewport:e.getViewport(new l.Vector4).clone(),autoClear:e.autoClear,autoClearColor:e.autoClearColor,autoClearDepth:e.autoClearDepth,autoClearStencil:e.autoClearStencil,pixelRatio:e.getPixelRatio(),size:e.getSize(new l.Vector2).clone()}}restoreRendererState(){let e=this.snapshot;if(!e)return;this.snapshot=null;let t=this.renderer;t.autoClear=e.autoClear,t.autoClearColor=e.autoClearColor,t.autoClearDepth=e.autoClearDepth,t.autoClearStencil=e.autoClearStencil,t.getPixelRatio()!==e.pixelRatio&&t.setPixelRatio(e.pixelRatio),t.getSize(this.tmpSize).equals(e.size)||t.setSize(e.size.x,e.size.y),t.getViewport(this.tmpViewport).equals(e.viewport)||t.setViewport(e.viewport)}releaseFrameSource(e){let t=iu.shared;e&&t.getContext()===e&&t.setContext(null)}clearReferences(){this._session=null,this._frame=null,this.refSpace=null,this._referenceSpaceType=null,this.layer=null,this.markNoPose(),this.frameNo=0,this.firstFrameArrived=!1,this.submittedNear=NaN,this.submittedFar=NaN}rollback(){var e;let t=this._session;(e=this.firstFrameWaiter)==null||e.reject(Error(SE)),this.removeListeners(),this.inputs.clear(),this.bridge.dispose(),this.releaseFrameSource(t),this.restoreRendererState(),this.clearReferences(),this._isPresenting=!1,this.entering=!1,this.entered=!1}teardown(){var e,t;let n=this._session;if(n){this._isPresenting=!1,this.entered=!1;try{(t=(e=this.callbacks).onSessionEnding)==null||t.call(e)}catch(e){console.error(`[XR] onSessionEnding 回调抛错`,e)}this.inputs.clear(),this.bridge.dispose(),this.removeListeners(),this.releaseFrameSource(n),this.restoreRendererState(),this.clearReferences(),this.callbacks.onSessionEnd(this.device)}}endQuietly(e){try{Promise.resolve(e.end()).catch(()=>{})}catch(e){}}},wE={Handedness:Object.freeze({NONE:`none`,LEFT:`left`,RIGHT:`right`}),ComponentState:Object.freeze({DEFAULT:`default`,TOUCHED:`touched`,PRESSED:`pressed`}),ComponentProperty:Object.freeze({BUTTON:`button`,X_AXIS:`xAxis`,Y_AXIS:`yAxis`,STATE:`state`}),ComponentType:Object.freeze({TRIGGER:`trigger`,SQUEEZE:`squeeze`,TOUCHPAD:`touchpad`,THUMBSTICK:`thumbstick`,BUTTON:`button`}),ButtonTouchThreshold:.05,AxisTouchThreshold:.1,VisualResponseProperty:Object.freeze({TRANSFORM:`transform`,VISIBILITY:`visibility`})};function TE(e){return Wr(this,void 0,void 0,function*(){let t=yield fetch(e);if(t.ok)return t.json();throw Error(t.statusText)})}function EE(e){return Wr(this,void 0,void 0,function*(){if(!e)throw Error(`No basePath supplied`);return yield TE(`${e}/profilesList.json`)})}function DE(e,t){return Wr(this,arguments,void 0,function*(e,t,n=null,r=!0){if(!e)throw Error(`No xrInputSource supplied`);if(!t)throw Error(`No basePath supplied`);let i=yield EE(t),a;if(e.profiles.some(e=>{let n=i[e];return n&&(a={profileId:e,profilePath:`${t}/${n.path}`,deprecated:!!n.deprecated}),!!a}),!a){if(!n)throw Error(`No matching profile name found`);let e=i[n];if(!e)throw Error(`No matching profile name found and default profile "${n}" missing.`);a={profileId:n,profilePath:`${t}/${e.path}`,deprecated:!!e.deprecated}}let o=yield TE(a.profilePath),s;if(r){let t;if(t=o.layouts[e.handedness],!t)throw Error(`No matching handedness, ${e.handedness}, in profile ${a.profileId}`);t.assetPath&&(s=a.profilePath.replace(`profile.json`,t.assetPath))}return{profile:o,assetPath:s}})}var OE={xAxis:0,yAxis:0,button:0,state:wE.ComponentState.DEFAULT};function kE(e=0,t=0){let n=e,r=t;if(Math.sqrt(e*e+t*t)>1){let i=Math.atan2(t,e);n=Math.cos(i),r=Math.sin(i)}return{normalizedXAxis:n*.5+.5,normalizedYAxis:r*.5+.5}}var AE=class{constructor(e){this.componentProperty=e.componentProperty,this.states=e.states,this.valueNodeName=e.valueNodeName,this.valueNodeProperty=e.valueNodeProperty,this.valueNodeProperty===wE.VisualResponseProperty.TRANSFORM&&(this.minNodeName=e.minNodeName,this.maxNodeName=e.maxNodeName),this.value=0,this.updateFromComponent(OE)}updateFromComponent({xAxis:e,yAxis:t,button:n,state:r}){let{normalizedXAxis:i,normalizedYAxis:a}=kE(e,t);switch(this.componentProperty){case wE.ComponentProperty.X_AXIS:this.value=this.states.includes(r)?i:.5;break;case wE.ComponentProperty.Y_AXIS:this.value=this.states.includes(r)?a:.5;break;case wE.ComponentProperty.BUTTON:this.value=this.states.includes(r)?n:0;break;case wE.ComponentProperty.STATE:this.valueNodeProperty===wE.VisualResponseProperty.VISIBILITY?this.value=this.states.includes(r):this.value=+!!this.states.includes(r);break;default:throw Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`)}}},jE=class{constructor(e,t){if(!e||!t||!t.visualResponses||!t.gamepadIndices||Object.keys(t.gamepadIndices).length===0)throw Error(`Invalid arguments supplied`);this.id=e,this.type=t.type,this.rootNodeName=t.rootNodeName,this.touchPointNodeName=t.touchPointNodeName,this.visualResponses={},Object.keys(t.visualResponses).forEach(e=>{let n=new AE(t.visualResponses[e]);this.visualResponses[e]=n}),this.gamepadIndices=Object.assign({},t.gamepadIndices),this.values={state:wE.ComponentState.DEFAULT,button:this.gamepadIndices.button===void 0?void 0:0,xAxis:this.gamepadIndices.xAxis===void 0?void 0:0,yAxis:this.gamepadIndices.yAxis===void 0?void 0:0}}get data(){return Object.assign({id:this.id},this.values)}updateFromGamepad(e){if(this.values.state=wE.ComponentState.DEFAULT,this.gamepadIndices.button!==void 0&&e.buttons.length>this.gamepadIndices.button){let t=e.buttons[this.gamepadIndices.button];this.values.button=t.value,this.values.button=this.values.button<0?0:this.values.button,this.values.button=this.values.button>1?1:this.values.button,t.pressed||this.values.button===1?this.values.state=wE.ComponentState.PRESSED:(t.touched||this.values.button>wE.ButtonTouchThreshold)&&(this.values.state=wE.ComponentState.TOUCHED)}this.gamepadIndices.xAxis!==void 0&&e.axes.length>this.gamepadIndices.xAxis&&(this.values.xAxis=e.axes[this.gamepadIndices.xAxis],this.values.xAxis=this.values.xAxis<-1?-1:this.values.xAxis,this.values.xAxis=this.values.xAxis>1?1:this.values.xAxis,this.values.state===wE.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>wE.AxisTouchThreshold&&(this.values.state=wE.ComponentState.TOUCHED)),this.gamepadIndices.yAxis!==void 0&&e.axes.length>this.gamepadIndices.yAxis&&(this.values.yAxis=e.axes[this.gamepadIndices.yAxis],this.values.yAxis=this.values.yAxis<-1?-1:this.values.yAxis,this.values.yAxis=this.values.yAxis>1?1:this.values.yAxis,this.values.state===wE.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>wE.AxisTouchThreshold&&(this.values.state=wE.ComponentState.TOUCHED)),Object.values(this.visualResponses).forEach(e=>{e.updateFromComponent(this.values)})}},ME=class{constructor(e,t,n){if(!e)throw Error(`No xrInputSource supplied`);if(!t)throw Error(`No profile supplied`);this.xrInputSource=e,this.assetUrl=n,this.id=t.profileId,this.layoutDescription=t.layouts[e.handedness],this.components={},Object.keys(this.layoutDescription.components).forEach(e=>{let t=this.layoutDescription.components[e];this.components[e]=new jE(e,t)}),this.updateFromGamepad()}get gripSpace(){return this.xrInputSource.gripSpace}get targetRaySpace(){return this.xrInputSource.targetRaySpace}get data(){let e=[];return Object.values(this.components).forEach(t=>{e.push(t.data)}),e}updateFromGamepad(){Object.values(this.components).forEach(e=>{e.updateFromGamepad(this.xrInputSource.gamepad)})}},NE=`https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles`,PE=`generic-trigger`,FE=class extends l.Object3D{constructor(){super(),this.motionController=null,this.envMap=null}setEnvironmentMap(e){return this.envMap==e?this:(this.envMap=e,this.traverse(e=>{e instanceof l.Mesh&&e.isMesh&&(e.material.envMap=this.envMap,e.material.needsUpdate=!0)}),this)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.motionController&&(this.motionController.updateFromGamepad(),Object.values(this.motionController.components).forEach(e=>{Object.values(e.visualResponses).forEach(e=>{let{valueNode:t,minNode:n,maxNode:r,value:i,valueNodeProperty:a}=e;t&&(a===wE.VisualResponseProperty.VISIBILITY?t.visible=i:a===wE.VisualResponseProperty.TRANSFORM&&(t.quaternion.copy(n.quaternion).slerp(r.quaternion,i),t.position.lerpVectors(n.position,r.position,i)))})}))}};function IE(e,t){Object.values(e.components).forEach(e=>{let{type:n,touchPointNodeName:r,visualResponses:i}=e;if(n===wE.ComponentType.TOUCHPAD)if(e.touchPointNode=t.getObjectByName(r),e.touchPointNode){let t=new l.Mesh(new l.SphereGeometry(.001),new l.MeshBasicMaterial({color:255}));e.touchPointNode.add(t)}else console.warn(`Could not find touch dot, ${e.touchPointNodeName}, in touchpad component ${e.id}`);Object.values(i).forEach(e=>{let{valueNodeName:n,minNodeName:r,maxNodeName:i,valueNodeProperty:a}=e;if(a===wE.VisualResponseProperty.TRANSFORM){if(e.minNode=t.getObjectByName(r),e.maxNode=t.getObjectByName(i),!e.minNode){console.warn(`Could not find ${r} in the model`);return}if(!e.maxNode){console.warn(`Could not find ${i} in the model`);return}}e.valueNode=t.getObjectByName(n),e.valueNode||console.warn(`Could not find ${n} in the model`)})})}function LE(e,t){IE(e.motionController,t),e.envMap&&t.traverse(t=>{t instanceof l.Mesh&&t.isMesh&&(t.material.envMap=e.envMap,t.material.needsUpdate=!0)}),e.add(t)}var RE=class{constructor(e=null){this.gltfLoader=e,this.path=NE,this._assetCache={}}createControllerModel(e){let t=new FE,n=null;return e.addEventListener(`connected`,e=>{let r=e.data;r.targetRayMode!==`tracked-pointer`||!r.gamepad||DE(r,this.path,PE).then(({profile:e,assetPath:i})=>{t.motionController=new ME(r,e,i);let a=this._assetCache[t.motionController.assetUrl];if(a)n=a.scene.clone(),LE(t,n);else{if(!this.gltfLoader)throw Error(`GLTFLoader not set.`);this.gltfLoader.load(t.motionController.assetUrl,e=>{this._assetCache[t.motionController.assetUrl]=e,n=e.scene.clone(),LE(t,n)})}}).catch(e=>{console.warn(e)})}),e.addEventListener(`disconnected`,()=>{t.motionController=null,t.remove(n),n=null}),t}},zE=class{constructor(){this.states=new Map}sample(e,t,n,r){let i=this.states.get(e),a=i==null?void 0:i.get(t);if(!a){if(!n)return[];let a=i;return a||(a=new Map,this.states.set(e,a)),a.set(t,{downAt:r,pressFired:!1}),[{type:`buttonDown`,name:t,source:e,time:r,duration:0}]}let o=r-a.downAt,s=o>=300;if(n)return s&&!a.pressFired?(a.pressFired=!0,[{type:`press`,name:t,source:e,time:r,duration:o}]):[];this.deleteState(e,t);let c=[];return a.pressFired?c.push({type:`buttonUp`,name:t,source:e,time:r,duration:o}):s?(c.push({type:`press`,name:t,source:e,time:r,duration:o}),c.push({type:`buttonUp`,name:t,source:e,time:r,duration:o})):(c.push({type:`buttonUp`,name:t,source:e,time:r,duration:o}),c.push({type:`tap`,name:t,source:e,time:r,duration:o})),c}removeSource(e,t){let n=this.states.get(e);if(!n)return[];let r=[];for(let[i,a]of n)r.push({type:`buttonUp`,name:i,source:e,time:t,duration:t-a.downAt});return this.states.delete(e),r}reset(e){let t=[];for(let[n,r]of this.states)for(let[i,a]of r)t.push({type:`buttonUp`,name:i,source:n,time:e,duration:e-a.downAt});return this.states.clear(),t}deleteState(e,t){let n=this.states.get(e);n&&(n.delete(t),n.size===0&&this.states.delete(e))}},BE=Object.assign(Object.assign({},gl(mT,[`maxLatitude`,`minLatitude`])),{referenceSpaceType:`local-floor`,foveation:1,showControllerModel:!0,showPointerRay:!0,deviceProfile:{}}),VE=5,HE=1e-4,UE=1500;function WE(){return{load(e,t){ml.ajax(e,{responseType:`arraybuffer`}).then(t=>{var n;return Sp(t.body,{resourcePath:e.slice(0,e.lastIndexOf(`/`)+1),search:(n=e.split(`?`)[1])==null?``:n,fetcher:ml})}).then(e=>t(e)).catch(t=>{console.warn(`[XRPanorama] 手柄模型 glTF 加载失败,跳过模型挂载:`,e,t)})}}}var GE=class e extends hT{static parseArgs(t){if(t instanceof e)return t;let n=Object.assign(Object.assign({},t),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2});return super.parseArgs(n)}static initAnimationEndState(e){let t=this.parseArgs(e),n=super.initAnimationEndState(t);return Object.assign(Object.assign({},n),{mode:`XRPanorama`})}constructor(t){var n,r,i,a,o;let s=e.parseArgs(t);super(s),this.controllerRayFilled={left:!1,right:!1},this.controllerModelFactory=null,this.buttonStateMachine=new zE,this.inputVisuals=new Map,this.inputsDirty=!1,this.walkedThisFrame=!1,this.lastFrameTime=0,this.walkSources={left:null,right:null},this.gazeRayPool=null,this.mode=`XRPanorama`;let c=BE,l=(n=t.referenceSpaceType)==null?c.referenceSpaceType:n,u=(r=t.foveation)==null?c.foveation:r;this.showControllerModel=(i=t.showControllerModel)==null?c.showControllerModel:i,this.showPointerRay=(a=t.showPointerRay)==null?c.showPointerRay:a,this.controllerRaycasters={left:this.createPickingRaycaster(),right:this.createPickingRaycaster()},this.gazeRaycaster=null,this.xrManager=new CE(this.renderer,{referenceSpaceType:l,foveation:u,deviceProfile:(o=t.deviceProfile)==null?c.deviceProfile:o},{onSessionStart:(e,t)=>{this.emit(`xr.session.start`,$(`xr.session.start`,{session:e,machineType:kS(t)}))},onSessionEnd:e=>{this.emit(`xr.session.end`,$(`xr.session.end`,{session:null,machineType:kS(e)}))},onSessionEnding:()=>{this.resetButtonStates(),this.clearInputVisuals()},onSelect:e=>this.onXRSelect(e),onInputSourcesChange:(e,t)=>{for(let e of t){this.removeInputVisual(e);for(let t of this.buttonStateMachine.removeSource(e,this.lastFrameTime))this.dispatchButtonEvent(t)}for(let t of e)this.syncInputVisual(t)}}),this.buttonMaps={left:this.createButtonMap(`left`),right:this.createButtonMap(`right`)},this.scene.add(this.xrManager.inputs.root);let d=iu.shared.getContext();(d?this.xrManager.enter(d):Promise.reject(Error(`[XR] 缺少 XRSession:请经 Five.changeMode 进入 XRPanorama`))).catch(e=>{console.error(`[XR] 进入失败`,e),this.emit(`error`,e instanceof Error?e:Error(String(e)))})}updateConfiguration(e){let t=super.updateConfiguration(Object.assign(Object.assign({},e),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2}));return e.showControllerModel!==void 0&&e.showControllerModel!==this.showControllerModel&&(this.showControllerModel=e.showControllerModel,this.inputsDirty=!0),e.showPointerRay!==void 0&&e.showPointerRay!==this.showPointerRay&&(this.showPointerRay=e.showPointerRay,this.inputsDirty=!0),t}updateTime(e,t,...n){var r,i;if(this.destroyed)return;this.walkedThisFrame=!1,this.lastFrameTime=e;let a=n[1];if(this.userAction=!0,this.needsRender=!0,!a){this.controllerRayFilled.left=!1,this.controllerRayFilled.right=!1,this.gazeRaycaster=null,super.updateTime(e,t),this.intersect(e);return}super.updateTime(e,t);let o=this.xrManager.beginFrame(a,e,this.camera.position,this.camera.near,this.camera.far);if(o.hasPose&&this.syncCameraFromXR(o.headOrientation),this.inputsDirty){this.inputsDirty=!1;for(let e of this.xrManager.inputs.entries().keys())this.syncInputVisual(e)}this.updateControllerHelper((i=(r=this.xrManager.session)==null?void 0:r.inputSources)==null?[]:i,e,t),this.updateGazeRay(),this.intersect(e)}syncCameraFromXR(e){this.camera.quaternion.copy(e),this.camera.matrix.compose(this.camera.position,this.camera.quaternion,this.camera.scale),this.camera.computePose(this.camera.pose.distance)}render(){return this.xrManager.isPresenting?(this.xrManager.renderEyes(this.scene),!0):!1}updateCamera(e,t,n){return Promise.resolve()}updateCameraWithKeyframes(e,t,n){return Promise.resolve()}setCamera(e={}){e.offset&&this.camera.position.copy(e.offset),this.camera.matrix.compose(this.camera.position,this.camera.quaternion,this.camera.scale),this.camera.computePose(this.camera.pose.distance)}updateRenderSize(){this.needsRender=!0}isReady(){return!1}createPickingRaycaster(){let e=new l.Raycaster;return e.params.Points={threshold:.1},e.firstHitOnly=!0,e.floorIndex=-1,e}updateControllerHelper(e,t,n){var r,i,a;if(this.controllerRayFilled.left=!1,this.controllerRayFilled.right=!1,this.walkSources.left=null,this.walkSources.right=null,!e||e.length===0)return;let o={up:0,down:0,left:0,right:0},s={up:0,down:0,left:0,right:0},c={X:!1,Y:!1,LeftTrigger:!1,LeftPinch:!1,A:!1,B:!1,RightTrigger:!1,RightPinch:!1};for(let n=0;n<e.length;n++){let l=e[n];if(!l)continue;let u=l.handedness===`left`?`left`:`right`;this.xrManager.fillRaycaster(l,this.controllerRaycasters[u])&&(this.controllerRayFilled[u]=!0),this.readAxes(l.gamepad,u===`left`?o:s);let d=(r=l.gamepad)==null?void 0:r.buttons;for(let{name:e,index:n}of this.buttonMaps[u]){let r=(a=(i=d==null?void 0:d[n])==null?void 0:i.pressed)==null?!1:a;r&&(c[e]=!0);for(let n of this.buttonStateMachine.sample(l,e,r,t))this.dispatchButtonEvent(n)}}this.emit(`xr.controller.update`,$(`xr.controller.update`,{left:{axes:o,raycaster:this.controllerRaycasters.left,deltaTime:n},right:{axes:s,raycaster:this.controllerRaycasters.right,deltaTime:n},buttons:c})),this.walkByTap()}createButtonMap(e){let t=this.xrManager.profile.buttons,n=e===`left`,r=[[n?`LeftTrigger`:`RightTrigger`,t.trigger],[n?`X`:`A`,t.primary],[n?`Y`:`B`,t.secondary],[n?`LeftPinch`:`RightPinch`,t.pinch]],i=[];for(let[e,t]of r)t!==null&&i.push({name:e,index:t});return i}dispatchButtonEvent(e){let{type:t,name:n,source:r}=e,i=this.emitGesture(`xr.gesture.${t}`,n,t===`buttonDown`||t===`tap`,t===`buttonUp`||t===`tap`);t===`tap`&&!i.defaultPrevented&&(n===`RightTrigger`?this.walkSources.right=r:n===`LeftTrigger`&&(this.walkSources.left=r))}walkByTap(){this.tryWalk(this.walkSources.right,`right`),this.tryWalk(this.walkSources.left,`left`)}tryWalk(e,t){if(!e||this.walkedThisFrame)return;let n=this.controllerRaycasters[t];this.xrManager.fillRaycaster(e,n)&&(this.walkedThisFrame=!0,this.activePanoMesh=void 0,this.activeTime=void 0,this.checkSelectedPano(n))}resetButtonStates(){for(let e of this.buttonStateMachine.reset(this.lastFrameTime))this.dispatchButtonEvent(e)}readAxes(e,t){var n,r;if(!e)return;let{x:i,y:a}=this.xrManager.profile.axes,o=(n=i===null?0:e.axes[i])==null?0:n,s=(r=a===null?0:e.axes[a])==null?0:r;t.right=o>0?o:0,t.left=o<0?-o:0,t.down=s>0?s:0,t.up=s<0?-s:0}getControllerModelFactory(){if(!this.controllerModelFactory){let e=new RE;e.gltfLoader=WE(),this.controllerModelFactory=e}return this.controllerModelFactory}syncInputVisual(e){let t=this.xrManager.inputs.entries().get(e);if(!t)return;let n=this.inputVisuals.get(e);n||(n={},this.inputVisuals.set(e,n));let r=e.targetRayMode===`tracked-pointer`,i=r&&!!e.gamepad&&!!e.gripSpace&&this.showControllerModel&&this.xrManager.profile.model!==`none`;if(i&&!n.model){let r=new l.Object3D,i=this.getControllerModelFactory().createControllerModel(r);r.dispatchEvent({type:`connected`,data:e}),t.grip.add(i),n.model=i}else!i&&n.model&&(n.model.removeFromParent(),n.model=void 0);let a=r&&this.showPointerRay;if(a&&!n.ray){let e=new l.BufferGeometry;e.setAttribute(`position`,new l.Float32BufferAttribute([0,0,0,0,0,-5],3));let r=new l.LineBasicMaterial({color:16777215,depthTest:!1,depthWrite:!1,transparent:!0}),i=new l.LineSegments(e,r);i.renderOrder=999,i.frustumCulled=!1,t.targetRay.add(i),n.ray=i,n.rayLength=VE}else!a&&n.ray&&(this.disposeRay(n.ray),n.ray=void 0)}updatePointerRayLength(e,t){for(let[n,r]of this.inputVisuals){let i=r.ray;if(!i)continue;let a=n.handedness===`left`?`left`:`right`,o=VE;if(e&&t&&e===this.controllerRaycasters[a]&&(o=Math.min(e.ray.origin.distanceTo(t),VE)),r.rayLength!==void 0&&Math.abs(r.rayLength-o)<HE)continue;let s=i.geometry.getAttribute(`position`);s.setZ(1,-o),s.needsUpdate=!0,r.rayLength=o}}removeInputVisual(e){var t;let n=this.inputVisuals.get(e);n&&((t=n.model)==null||t.removeFromParent(),n.ray&&this.disposeRay(n.ray),this.inputVisuals.delete(e))}clearInputVisuals(){for(let e of Array.from(this.inputVisuals.keys()))this.removeInputVisual(e)}disposeRay(e){e.removeFromParent(),e.geometry.dispose(),e.material.dispose()}emitGesture(e,t,n,r){let i=$(e,{session:this.xrManager.session,buttons:t,machineType:kS(this.xrManager.device),isFirst:n,isFinal:r,controllers:{raycaster:{leftRay:this.controllerRaycasters.left,rightRay:this.controllerRaycasters.right}}});return this.emit(e,i),i}updateGazeRay(){var e,t;let n=(e=this.xrManager.session)==null?void 0:e.inputSources;if(!n||n.length===0){this.gazeRaycaster=null;return}let r=null;for(let e=0;e<n.length;e++){let t=n[e];if(!t)continue;let i=t.targetRayMode;if(i===`transient-pointer`||i===`gaze`||t.hand!=null){r=t;break}}if(!r){this.gazeRaycaster=null;return}let i=(t=this.gazeRayPool)==null?this.gazeRayPool=this.createPickingRaycaster():t;this.gazeRaycaster=this.xrManager.fillRaycaster(r,i)?i:null}onXRSelect(e){var t;if(e.targetRayMode!==`gaze`&&e.targetRayMode!==`transient-pointer`)return;let n=(t=this.gazeRayPool)==null?this.gazeRayPool=this.createPickingRaycaster():t;this.xrManager.fillRaycaster(e,n)&&this.checkSelectedPano(n)}pickPickingRaycaster(){return this.gazeRaycaster?this.gazeRaycaster:this.controllerRayFilled.right?this.controllerRaycasters.right:this.controllerRayFilled.left?this.controllerRaycasters.left:null}intersect(e){var t,n;if(this.locationMotion.ended===!1){this.intersectMesh.visible=!1,this.activePanoMesh=void 0,this.activeTime=void 0,this.updatePointerRayLength(null,null);return}if(this.activePanoMesh&&this.activeTime&&e-this.activeTime>UE){let e=this.activePanoMesh,t=null;return this.panoMeshes.forEach((n,r)=>{n===e&&(t=r)}),t!==null&&(this.moveToPano(_b(t),{},!0),this.walkedThisFrame=!0),this.activePanoMesh=void 0,this.activeTime=void 0,this.updatePointerRayLength(null,null),e}let r=this.pickPickingRaycaster();if(!r){this.intersectMesh.visible=!1,this.activePanoMesh=void 0,this.activeTime=void 0,this.updatePointerRayLength(null,null);return}let i,a=[],o=this.works.getObserver(this.currentPano),s=o?o.accessibleNodes.map(e=>gb({panoIndex:e,workCode:o.work.workCode})):[];for(let e of s){let i=this.panoMeshes.get(e);if(i){let[e]=r.intersectObject((t=i.hitTestMesh)==null?i:t,!0);if(e){let t=(n=o==null?void 0:o.floorIndex)==null?0:n;a.push({panoMesh:i,intersection:Object.assign({floorIndex:t,floor:t},e)})}}}let[c]=a.sort((e,t)=>e.intersection.distance-t.intersection.distance);c?(i=c.intersection,this.activePanoMesh!==c.panoMesh&&(this.activePanoMesh=c.panoMesh,this.activeTime=e),this.intersectMesh.position.copy(c.panoMesh.position),this.intersectMesh.lookAt(this.camera.position)):(this.activePanoMesh=void 0,this.activeTime=void 0),i||(i=this.modelScene.intersectRaycaster(r)[0]),this.updatePointerRayLength(r,i?i.point:null);let u=$(`intersect.update`,{raycaster:r,intersection:i==null?null:i,object:this.intersectMesh});if(this.emit(`intersect.update`,u),u.defaultPrevented){this.hideIntersectMesh();return}if(i&&i.face){let e=i.face.normal,t=new l.Quaternion;t.setFromUnitVectors(new l.Vector3(0,0,1),e),this.intersectMesh.quaternion.copy(t);let n=i.point.clone();this.intersectMesh.position.copy(n),c?this.intersectMesh.visible=!1:this.intersectMesh.visible=!0}else this.intersectMesh.visible=!1;return c==null?void 0:c.panoMesh}checkSelectedPano(e){var t;this.stopMomentumMovement();let n=this.works.getObserver(this.currentPano);if(!n)return;let r=n.work.observers,i=n.accessibleNodes.filter(e=>{if(e===this.currentPano.panoIndex&&n.work.workCode===this.currentPano.workCode)return!1;let t=r[e];return!t||t.position.clone().applyMatrix4(t.work.transform).distanceTo(this.camera.position)>this.maxAccessibleDistance?!1:t.loadable||t.active}),a=null,[o]=this.modelScene.intersectRaycaster(e);if(o){let[e,n]=nm(i,e=>{let t=r[e];return t?t.standingPosition.clone().applyMatrix4(t.work.transform).distanceTo(o.point):1/0},!0);typeof e==`number`&&n<this.panoTapTriggerRadius&&(a=(t=r[e])==null?null:t)}if(a||(a=this.getForwardObserverOrNot(this.xrManager.eyeCameras[0],e)),a&&a.panoId===gb(this.currentPano)&&(a=null),a&&!this.locationMotion.ended){for(let e of this.locationMotion.keyframes)if(this.panoResourceFromLocationMotionKeyframe(e).panoId===a.panoId){a=null;break}}if(!a){this.locationMotion.ended===!0&&this.cameraBounce();return}let s={workCode:a.work.workCode,panoIndex:a.panoIndex,mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,distance:0,offset:a.position.clone()};if(this.emit(`pano.select`,$(`pano.select`,{prevPano:this.currentPano,state:s,userAction:!0,options:{},progress:0,error:null})),!a.active){let e=this.panoMeshes.get(a.panoId);e&&(e.setDisabled(!1),e.setLoading(!0));return}this.emit(`pano.request`,$(`pano.request`,{userAction:!0,prevPano:this.currentPano,state:s,options:{},progress:0,error:null}))}destroy(){super.destroy(),this.xrManager.dispose(),this.clearInputVisuals(),this.scene.remove(this.xrManager.inputs.root)}onPanGesture(){}onTapGesture(){}onPinchGesture(){}onMouseMove(){}onMouseOut(){}},KE=new l.Vector3(0,1.6,0),qE=new l.Box3,JE=new l.Vector3,YE=Object.assign({},uw),XE=class e extends dw{static parseArgs(t){return t instanceof e?t:super.parseArgs(t)}static initAnimationEndState(e){var t,n,r,i,a,o;let s=this.parseArgs(e),c=s.works,{state:u,currentState:d}=e.initial,f=typeof u.panoIndex==`number`?{workCode:(r=(t=u.workCode)==null?(n=s.works[0])==null?void 0:n.workCode:t)==null?``:r,panoIndex:u.panoIndex}:{workCode:d.workCode,panoIndex:d.panoIndex},p=c.getObserver(f),m=H((i=u.fov)==null?!p||CC(d.mode)?d.fov:s.defaultFov:i,s.minFov,s.maxFov),h=(a=u.longitude)==null?d.longitude:a,g=H(typeof s.minLatitude==`function`?s.minLatitude(m):s.minLatitude,-Math.PI/2,Math.PI/2),_=H(typeof s.maxLatitude==`function`?s.maxLatitude(m):s.maxLatitude,-Math.PI/2,Math.PI/2),v=H((o=u.latitude)==null?!p||CC(d.mode)?d.latitude:s.defaultLatitude:o,g,_),y=new l.Vector3;if(s.initial.state.offset)y.copy(s.initial.state.offset);else if(p)y.copy(p.position).applyMatrix4(p.work.transform);else{let e=_a(d).setLength(d.distance);y.copy(s.initial.currentState.offset).sub(e)}return{workCode:f.workCode,panoIndex:f.panoIndex,mode:`Model`,longitude:h,latitude:v,fov:m,offset:y,distance:0}}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`Model`,this.locationMotion=new J({x:this.camera.pose.offset.x,y:this.camera.pose.offset.y,z:this.camera.pose.offset.z,distance:this.camera.pose.distance}),this.modelAlphaMotion=new J({modelAlpha:this.modelScene.parameter.resolveValue().modelAlpha}),this.perspToOrthoMotion=new J({perspToOrtho:this.camera.perspToOrtho.x})}updateConfiguration(e){return super.updateConfiguration(e)}destroy(){super.destroy(),this.locationMotion.dispose()}isReady(){return this.locationMotion.ended===!1?!1:super.isReady()}updateWork(t,n,r,i){this.works=t;let a=e.initAnimationEndState(Object.assign(Object.assign({},this),{initial:{currentState:Object.assign(Object.assign({},this.currentPano),this.camera.pose),duration:r.duration,effect:r.effect,state:n,userAction:i}}));return(a.workCode!==this.currentPano.workCode||a.panoIndex!==this.currentPano.panoIndex||a.longitude!==this.cameraMotion.value.longitude||a.latitude!==this.cameraMotion.value.latitude||a.fov!==this.cameraMotion.value.fov)&&this.moveToPosition(a.offset,{duration:0,longitude:a.longitude,latitude:a.latitude,fov:a.fov},i),!0}updateCamera(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r={},i={};return r.distance=0,e.offset!==void 0&&(r.x=e.offset.x,r.y=e.offset.y,r.z=e.offset.z),e.longitude!==void 0&&(i.longitude=e.longitude),e.latitude!==void 0&&(i.latitude=e.latitude),e.fov!==void 0&&(i.fov=e.fov),this.locationMotion.set(r,t).catch(K),this.cameraMotion.set(i,t).catch(K)})}updateCameraWithKeyframes(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r=[],i=[];for(let t of e)r.push({key:t.key,progress:t.progress,value:{distance:0,x:t.value.offset.x,y:t.value.offset.x,z:t.value.offset.x}}),i.push({key:t.key,progress:t.progress,value:{longitude:t.value.longitude,latitude:t.value.latitude,fov:t.value.fov}});return this.locationMotion.setKeyframes(r,t).catch(K),this.cameraMotion.setKeyframes(e,t)})}updateTime(e,t,...n){if(this.destroyed)return;let r={},i={};if(this.modelAlphaMotion.ended||(this.modelAlphaMotion.update(e),r.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.modelScene.parameter.modelAlpha===0&&this.modelScene.parameter.progress!==1){let{pano0:e,pano1:t}=this.modelScene.parameter;e&&e.map!==(t==null?void 0:t.map)&&e.map.dispose(),r.progress=1,r.pano0=r.pano1=t}if(this.perspToOrthoMotion.ended||(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(H(this.perspToOrthoMotion.value.perspToOrtho,0,1))),!this.locationMotion.ended){this.locationMotion.update(e),i.distance=this.locationMotion.value.distance,i.offset=new l.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z);let t=new l.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),n=[];for(let e of this.works){let r=this.modelScene.models.find(t=>t.work===e);if(!(!r||r.visible===!1)&&!(e.observers.length<=0)&&(qE.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform),qE.containsPoint(t)))for(let t of e.observers)n.push(t)}let r=nm(n,e=>JE.copy(e.position).applyMatrix4(e.work.transform).distanceTo(t));this.currentPano=r?{workCode:r.work.workCode,panoIndex:r.panoIndex}:{workCode:``,panoIndex:0}}this.cameraMotion.ended||(this.cameraMotion.update(e),i.longitude=this.cameraMotion.value.longitude,i.latitude=this.cameraMotion.value.latitude,i.fov=this.cameraMotion.value.fov),wC(r)||this.modelScene.parameter.set(r),wC(i)||this.setCamera(i);let a=this.works.getObserver(this.currentPano);if(this.intersectMesh&&this.intersectMesh.parent&&a&&a.position.y-a.standingPosition.y>10){let e=H(this.camera.position.distanceTo(this.intersectMesh.position)*(2*Math.tan(.5*this.camera.fov/180*Math.PI))/5,.5);this.intersectMesh.scale.setScalar(e)}else this.intersectMesh.scale.setScalar(1)}initAnimation(){return this.destroyed?Promise.resolve():new Promise(t=>{let{state:n,currentState:r,duration:i,userAction:a}=this.initial;this.userAction=a;let o=e.initAnimationEndState(this),s={modelAlpha:1},c={perspToOrtho:0},l={longitude:o.longitude,latitude:o.latitude,fov:o.fov,duration:i,moveStartCallback:e=>{this.perspToOrthoMotion.set(c,i).catch(K),this.modelAlphaMotion.set(s,i).catch(K),this.emit(`initAnimation.start`,$(`initAnimation.start`,{state:e,userAction:this.userAction}))},moveEndCallback:e=>{this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:e,userAction:this.userAction})),t()},moveCancelCallback:()=>{let e=this.currentPano,n=Object.assign(Object.assign({},e),{mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance});this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:n,userAction:this.userAction})),t()}};this.moveToPosition(o.offset,l,a)})}getTargetState(){let e=this.cameraMotion.getKeyFrameSegment(G())[1],t=this.locationMotion.getKeyFrameSegment(G())[1];return Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:e.value.longitude,latitude:e.value.latitude,fov:e.value.fov,offset:new l.Vector3(t.value.x,t.value.y,t.value.z),distance:t.value.distance})}moveToPano(e,t={},n){let r=this.works.getObserver(e);if(r){let e=new l.Vector3().copy(r.position).applyMatrix4(r.work.transform);this.moveToPosition(e,t,n)}}moveToPosition(e,t={},n){var r,i,a;this.userAction=n,this.stopMomentumMovement();let o=G(),s=new l.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),c=s.distanceTo(e),u=this.locationMotion.getProgressVelocity(o),d=0;for(let e=1;e<this.locationMotion.keyframes.length;e++){let{x:t,y:n,z:r}=this.locationMotion.keyframes[e-1].value,{x:i,y:a,z:o}=this.locationMotion.keyframes[e].value;d+=Math.sqrt(Math.pow(i-t,2)+Math.pow(a-n,2)+Math.pow(o-r,2))}let f=c===0?0:u*d/c,p=this.calculateMovingDuration(t.duration,c),m={x:e.x,y:e.y,z:e.z,distance:0},h={longitude:t.longitude,latitude:t.latitude,fov:t.fov},g=[];for(let e of this.works){let t=this.modelScene.models.find(t=>t.work===e);if(!(!t||t.visible===!1)&&!(e.observers.length<=0)&&(qE.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform),qE.containsPoint(s)))for(let t of e.observers)g.push(t)}let _=nm(g,e=>JE.copy(e.position).applyMatrix4(e.work.transform).distanceTo(s)),v=_?{workCode:_.work.workCode,panoIndex:_.panoIndex}:{workCode:``,panoIndex:0},y=Object.assign(Object.assign({},v),{mode:this.mode,longitude:(r=h.longitude)==null?this.camera.pose.longitude:r,latitude:(i=h.latitude)==null?this.camera.pose.latitude:i,fov:(a=h.fov)==null?this.camera.pose.fov:a,offset:e.clone(),distance:0}),b=this.currentPano;this.emit(`pano.moveTo`,$(`pano.moveTo`,{options:t,prevPano:b,progress:0,state:y,userAction:this.userAction,error:null})),t.moveStartCallback&&t.moveStartCallback(y),this.cameraMotion.set(h,p).catch(K),this.locationMotion.set(m,p,f).then(()=>{for(let e of this.modelScene.children)e instanceof Ly&&e.show();let e=Object.assign(Object.assign(Object.assign({},v),{mode:this.mode}),xC(this.camera.pose));this.emit(`pano.arrived`,$(`pano.arrived`,{options:t,prevPano:b,progress:0,state:e,userAction:this.userAction,error:null})),t.moveEndCallback&&t.moveEndCallback(e)},()=>{t.moveCancelCallback&&t.moveCancelCallback(),this.emit(`pano.cancel`,$(`pano.cancel`,{options:t,prevPano:b,progress:0,state:y,userAction:this.userAction,error:null}))})}onTapGesture(e){let t=e.center.raycaster;this.stopMomentumMovement();let[n]=this.modelScene.intersectRaycaster(t);if(n&&n.face){let e=n.face.normal,t=n.point;if(new l.Vector3(0,1,0).angleTo(e)>Math.PI/3){let r=new l.Raycaster;r.firstHitOnly=!0;let i=e.clone().setLength(.3).add(t);r.set(i,new l.Vector3(0,-1,0)),n=this.modelScene.intersectRaycaster(r)[0]}}if(n){let t=new l.Vector3().copy(n.point).add(KE),r=[];for(let e of this.works){let n=this.modelScene.models.find(t=>t.work===e);if(!(!n||n.visible===!1)&&!(e.observers.length<=0)&&(qE.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform),qE.containsPoint(t)))for(let t of e.observers)r.push(t)}let[i,a]=nm(r,e=>JE.copy(e.position).applyMatrix4(e.work.transform).distanceTo(t),!0);i&&a<5&&(t.y=JE.copy(i.position).applyMatrix4(i.work.transform).y),e.state.offset.copy(t),e.state.distance=0,this.emit(`gesture.tap`,e),e.defaultPrevented||this.moveToPosition(t,{},!0)}else this.emit(`gesture.tap`,e),e.defaultPrevented||this.cameraBounce()}},ZE=new l.Box3,QE=new l.Vector3,$E=.5,eD=Math.PI/7,tD={defaultLongitude:Math.PI/4,defaultLatitude:Math.PI/4,defaultDistance:150,maxLatitude:Math.PI/2,minLatitude:0,cameraType:`auto`,cameraFence:null,intersectMeshCreator:()=>new rw},nD={Floorplan:sw,Topview:lw,Panorama:hT,VRPanorama:cE,XRPanorama:GE,Model:XE,Mapview:class e extends UC{static parseArgs(t){var n,r,i,a,o,s,c,l;if(t instanceof e)return t;let u=super.parseArgs(t);return Object.assign(Object.assign({},u),{defaultLongitude:(n=t.defaultLongitude)==null?tD.defaultLongitude:n,defaultLatitude:(r=t.defaultLatitude)==null?tD.defaultLatitude:r,defaultDistance:(i=t.defaultDistance)==null?tD.defaultDistance:i,maxLatitude:(a=t.maxLatitude)==null?tD.maxLatitude:a,minLatitude:(o=t.minLatitude)==null?tD.minLatitude:o,cameraType:(s=t.cameraType)==null?tD.cameraType:s,cameraFence:(c=t.cameraFence)==null?tD.cameraFence:c,intersectMeshCreator:(l=t.intersectMeshCreator)==null?tD.intersectMeshCreator:l})}static distanceFromModel(e,t,n){let r=e.boundingBox,i=r.isEmpty()?10:Math.pow(Math.pow(r.max.x-r.min.x+1,2)+Math.pow(r.max.y-r.min.y+1,2)+Math.pow(r.max.z-r.min.z+1,2),1/2);i=isNaN(i)||!isFinite(i)?1:i;let a=i/2/Math.tan(Math.PI*t/360);return n<1&&(a/=n),isNaN(a)||!isFinite(a)?i:a}static initAnimationEndState(t){var n,r,i,a,o,s,c;let u=this.parseArgs(t),d=u.works,f=u.modelScene,{state:p,currentState:m}=t.initial,h=typeof p.panoIndex==`number`?{workCode:(i=(n=p.workCode)==null?(r=u.works[0])==null?void 0:r.workCode:n)==null?``:i,panoIndex:p.panoIndex}:{workCode:m.workCode,panoIndex:m.panoIndex},g=(a=p.fov)==null?60:a,_=H(typeof u.minLatitude==`function`?u.minLatitude(g):u.minLatitude,-Math.PI/2,Math.PI/2),v=H(typeof u.maxLatitude==`function`?u.maxLatitude(g):u.maxLatitude,-Math.PI/2,Math.PI/2),y=H((o=p.latitude)==null?SC(m.mode)?m.latitude:u.defaultLatitude:o,_,v),b=e.distanceFromModel(u.modelScene,g,u.camera.aspect),x=new l.Vector3,S=(s=p.distance)==null?Math.min(u.defaultDistance,b):s,C=(c=p.longitude)==null?SC(m.mode)?m.longitude:u.defaultLongitude:c;if(p.offset)x.copy(p.offset);else{let e=d.getObserver(h);u.defaultDistance<b&&e?(x.copy(e.position).applyMatrix4(e.work.transform),p.longitude===void 0&&(C=m.longitude)):(f.boundingBox.getCenter(x),S=b)}return Object.assign(Object.assign({},h),{mode:`Mapview`,longitude:C,latitude:y,fov:g,offset:x,distance:S})}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`Mapview`,this.defaultLongitude=n.defaultLongitude,this.defaultLatitude=n.defaultLatitude,this.defaultDistance=n.defaultDistance,this.maxLatitude=n.maxLatitude,this.minLatitude=n.minLatitude,this.cameraType=n.cameraType,this.cameraFence=n.cameraFence,this.locationMotion=new J({x:this.camera.pose.offset.x,y:this.camera.pose.offset.y,z:this.camera.pose.offset.z,distance:this.camera.pose.distance}),this.modelAlphaMotion=new J({modelAlpha:this.modelScene.parameter.resolveValue().modelAlpha}),this.perspToOrthoMotion=new J({perspToOrtho:this.camera.perspToOrtho.x}),this.pendingTextureId=null,this.textureLoader=new gu,this.intersectMeshCreator=n.intersectMeshCreator,this.intersectMesh=this.intersectMeshCreator(),this.intersectMesh.name=`intersect`,this.intersectMesh.visible=!1,this.helper.add(this.intersectMesh)}updateConfiguration(e){if(super.updateConfiguration(e)===!1)return!1;if(e.defaultLongitude!==void 0&&this.defaultLongitude!==e.defaultLongitude&&(this.defaultLongitude=e.defaultLongitude),e.defaultLatitude!==void 0&&this.defaultLatitude!==e.defaultLatitude&&(this.defaultLatitude=e.defaultLatitude),e.defaultDistance!==void 0&&this.defaultDistance!==e.defaultDistance&&(this.defaultDistance=e.defaultDistance),e.maxLatitude!==void 0&&this.maxLatitude!==e.maxLatitude&&(this.maxLatitude=e.maxLatitude),e.minLatitude!==void 0&&this.minLatitude!==e.minLatitude&&(this.minLatitude=e.minLatitude),e.cameraType!==void 0&&this.cameraType!==e.cameraType&&(this.cameraType=e.cameraType),this.cameraFence instanceof l.Box3&&e.cameraFence instanceof l.Box3||this.cameraFence instanceof l.Sphere&&e.cameraFence instanceof l.Sphere?this.cameraFence.equals(e.cameraFence)||(this.cameraFence=e.cameraFence):e.cameraFence!==void 0&&(this.cameraFence=e.cameraFence),e.intersectMeshCreator!==void 0&&this.intersectMeshCreator!==e.intersectMeshCreator){this.intersectMeshCreator=e.intersectMeshCreator;let t=this.intersectMesh;this.intersectMesh=this.intersectMeshCreator(),this.intersectMesh.name=t.name,this.intersectMesh.visible=t.visible;let n=this.intersectMesh.parent;n&&n.add(this.intersectMesh),t.dispose()}return!0}destroy(){super.destroy(),this.pendingTextureId=null,this.locationMotion.dispose(),this.panState=void 0,this.intersectMesh.dispose(),this.helper.remove(this.intersectMesh)}isReady(){return this.locationMotion.ended===!1?!1:super.isReady()}updateWork(t,n,r,i){this.userAction=i,this.works=t;let a=e.initAnimationEndState(Object.assign(Object.assign({},this),{initial:{currentState:Object.assign(Object.assign({},this.currentPano),this.camera.pose),duration:r.duration,effect:r.effect,state:n,userAction:i}}));this.currentPano={workCode:a.workCode,panoIndex:a.panoIndex};let o={longitude:a.longitude,latitude:a.latitude,fov:a.fov},s={x:a.offset.x,y:a.offset.y,z:a.offset.z,distance:a.distance};return(o.longitude!==this.cameraMotion.value.longitude||o.latitude!==this.cameraMotion.value.latitude||o.fov!==this.cameraMotion.value.fov)&&this.cameraMotion.set(o,r.duration).catch(K),(s.x!==this.locationMotion.value.x||s.y!==this.locationMotion.value.y||s.z!==this.locationMotion.value.z||s.distance!==this.locationMotion.value.distance)&&this.locationMotion.set(s,r.duration).catch(K),!0}updateModel(e){super.updateModel(e),this.hideIntersectMesh()}updateCamera(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r={},i={};return e.distance!==void 0&&(r.distance=e.distance),e.offset!==void 0&&(r.x=e.offset.x,r.y=e.offset.y,r.z=e.offset.z),e.longitude!==void 0&&(i.longitude=e.longitude),e.latitude!==void 0&&(i.latitude=e.latitude),e.fov!==void 0&&(i.fov=e.fov),this.locationMotion.set(r,t).catch(K),this.cameraMotion.set(i,t).catch(K)})}updateCameraWithKeyframes(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r=[],i=[];for(let t of e)r.push({key:t.key,progress:t.progress,value:{distance:t.value.distance,x:t.value.offset.x,y:t.value.offset.x,z:t.value.offset.x}}),i.push({key:t.key,progress:t.progress,value:{longitude:t.value.longitude,latitude:t.value.latitude,fov:t.value.fov}});return this.locationMotion.setKeyframes(r,t).catch(K),this.cameraMotion.setKeyframes(e,t)})}updateTime(e,t){if(this.destroyed)return;let n={},r={};if(this.locationMotion.ended||(this.locationMotion.update(e),r.distance=this.locationMotion.value.distance,r.offset=new l.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z)),this.cameraMotion.ended||(this.cameraMotion.update(e),r.longitude=this.cameraMotion.value.longitude,r.latitude=this.cameraMotion.value.latitude,r.fov=this.cameraMotion.value.fov),this.modelAlphaMotion.ended||(this.modelAlphaMotion.update(e),n.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.modelScene.parameter.modelAlpha===0&&this.modelScene.parameter.progress!==1){let{pano0:e,pano1:t}=this.modelScene.parameter;e&&e.map!==(t==null?void 0:t.map)&&e.map.dispose(),n.progress=1,n.pano0=n.pano1=t}let i=0;if(this.cameraType===`auto`?i=+(Math.abs(Math.PI/2-this.cameraMotion.value.latitude)<.02||Math.abs(-Math.PI/2-this.cameraMotion.value.latitude)<.02):this.cameraType===`perspective`?i=0:this.cameraType===`orthographic`&&(i=1),this.perspToOrthoMotion.getTargetKeyframe().value.perspToOrtho!==i&&this.perspToOrthoMotion.set({perspToOrtho:i},500).catch(K),this.perspToOrthoMotion.ended||(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(H(this.perspToOrthoMotion.value.perspToOrtho,0,1))),wC(n)||this.modelScene.parameter.set(n),wC(r)||this.setCamera(r),this.cameraFence&&!this.panState&&!this.pinchState&&!this.mouseWheelState&&!this.inMomentumMovement&&this.locationMotion.ended&&this.perspToOrthoMotion.ended&&this.cameraMotion.ended){let e=_a(this.camera.pose,new l.Vector3),t=new l.Vector3().copy(this.camera.pose.offset).sub(e.clone().multiplyScalar(this.camera.pose.distance));if(this.cameraFence.distanceToPoint(t)>.01){let e=this.cameraFence.clampPoint(t,new l.Vector3),n=this.camera.pose.offset.clone().add(e).sub(t),r=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:n,distance:this.camera.pose.distance});this.fixFinalState(r),this.locationMotion.set({x:r.offset.x,y:r.offset.y,z:r.offset.z,distance:r.distance},300).catch(K)}}if(this.intersectMesh&&this.intersectMesh.parent){let e=H(this.camera.position.distanceTo(this.intersectMesh.position)*(2*Math.tan(.5*this.camera.fov/180*Math.PI))/5,.5);this.intersectMesh.scale.setScalar(e)}else this.intersectMesh.scale.setScalar(1)}getTargetState(){let e=this.cameraMotion.getKeyFrameSegment(G())[1],t=this.locationMotion.getKeyFrameSegment(G())[1];return Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:e.value.longitude,latitude:e.value.latitude,fov:e.value.fov,distance:t.value.distance,offset:new l.Vector3(t.value.x,t.value.y,t.value.z)})}initAnimation(){return this.destroyed?Promise.resolve():new Promise(t=>{let{state:n,currentState:r,duration:i,userAction:a}=this.initial;this.userAction=a;let o=e.initAnimationEndState(this),s={longitude:o.longitude,latitude:o.latitude,fov:o.fov},c={x:o.offset.x,y:o.offset.y,z:o.offset.z,distance:o.distance};this.emit(`initAnimation.start`,$(`initAnimation.start`,{state:o,userAction:this.userAction})),this.perspToOrthoMotion.set({perspToOrtho:0},i).catch(K),this.modelAlphaMotion.set({modelAlpha:1},i/3).catch(K),this.cameraMotion.set(s,i).catch(K),this.locationMotion.set(c,i).then(()=>{this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:o,userAction:this.userAction}))},e=>{let t=Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),xC(this.camera.pose));this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:t,userAction:this.userAction}))}).then(()=>{t()})})}getForwardObserverOrNot(e){let[t]=this.modelScene.intersectRaycaster(e);if(!t)return null;let n=[];for(let t of this.works){let r=this.modelScene.models.find(e=>e.work===t);if(!(!r||r.visible===!1)&&!(t.observers.length<=0)&&(ZE.copy(t.observerBox).expandByScalar(10).applyMatrix4(t.transform),ZE.containsPoint(e.ray.origin)||e.ray.intersectsBox(ZE)))for(let e of t.observers)n.push(e)}let[r,i]=nm(n,e=>QE.copy(e.standingPosition).applyMatrix4(e.work.transform).distanceTo(t.point),!0);return r&&i<Math.max(r.standingPosition.distanceTo(this.camera.position)/5,10)?r:null}coordinatesForOffset(e){let t=this.renderer.getSize(new l.Vector2);return{longitude:-2*e.x/(t.x*this.viewport.width),latitude:2*e.y/(t.y*this.viewport.height)}}requestMomentumMovement(e,t,n,r){if(this.inMomentumMovement===null)return;r=Math.max(r,1);let i=Object.assign({},n),a={longitude:0,latitude:0,x:0,y:0,z:0};for(let e=0;e<r;e++)i.longitude*=.996,i.latitude*=.996*.998,i.x*=.99,i.y*=.99,i.z*=.99,a.longitude+=i.longitude,a.latitude+=i.latitude,a.x+=i.x,a.y+=i.y,a.z+=i.z;let o=this.cameraMotion.value.fov,s=ga(this.cameraMotion.value.longitude+a.longitude),c=H(typeof this.minLatitude==`function`?this.minLatitude(o):this.minLatitude,-Math.PI/2,Math.PI/2),u=H(typeof this.maxLatitude==`function`?this.maxLatitude(o):this.maxLatitude,-Math.PI/2,Math.PI/2),d=H(this.cameraMotion.value.latitude+a.latitude,c,u),f=new l.Vector3(this.locationMotion.value.x+a.x,this.locationMotion.value.y+a.y,this.locationMotion.value.z+a.z),p=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:s,latitude:d,offset:f,fov:o,distance:this.locationMotion.value.distance}),m=e.state.offset.clone().sub(_a(e.state).setLength(p.distance)),h=!(Math.abs(i.longitude)>1e-4||Math.abs(i.latitude)>1e-4||Math.abs(i.x)>1e-4||Math.abs(i.y)>1e-4||Math.abs(i.z)>1e-4);(this.cameraFence?this.cameraFence.containsPoint(m):!0)===!1&&(h=!0);let g=$(`gesture.momentum`,Object.assign(Object.assign({},e),{isFirst:t,isFinal:h,state:p}));if(this.emit(`gesture.fire`,g),this.inMomentumMovement.event=g,this.emit(`gesture.momentum`,g),e.defaultPrevented){this.inMomentumMovement=null;return}this.inMomentumMovement&&(this.cameraMotion.set({longitude:s,latitude:d},0).catch(K),this.locationMotion.set({x:p.offset.x,y:p.offset.y,z:p.offset.z,distance:p.distance},0).catch(K),h?this.inMomentumMovement=null:iu.shared.add((t,n)=>{this.requestMomentumMovement(e,!1,i,n)},!0))}fixFinalState(e){if(this.perspToOrthoMotion.getTargetKeyframe().value.perspToOrtho===1)return;let t=_a(e,new l.Vector3),n=new l.Vector3().copy(e.offset).sub(t.clone().setLength(e.distance)),r=new l.Raycaster(n,t);r.params.Points={threshold:.1},r.firstHitOnly=!0,r.hitFilter=e=>e.distance>$E+r.near,r.near=this.camera.near,r.far=this.camera.far;let i;if(i=this.modelScene.intersectRaycaster(r)[0],i&&i.distance<this.camera.near&&(i=void 0),!i){let e=new l.Plane(new l.Vector3(0,1,0),-this.modelScene.boundingBox.min.y),t=r.ray.intersectPlane(e,new l.Vector3);if(t){let e=t.distanceTo(r.ray.origin);e<1e3&&e>=r.near&&(i={distance:e,floorIndex:0,floor:0,point:t,object:this.scene,face:null})}}if(!i){let r=Math.max(e.distance,3);i={distance:r,floorIndex:0,floor:0,point:n.clone().add(t.clone().setLength(r)),object:this.scene,face:null}}i.distance>=this.camera.near&&dC(e.distance,i.distance)&&(e.distance=i.distance,e.offset=i.point)}onPanGesture(e){this.userAction=e.userAction,this.stopMomentumMovement(),this.hideIntersectMesh();let t=e.pointers.length,n=this.panState,r=0,i=!1;e.pointerType===`mouse`&&(r=e.center.buttons,i=e.center.shiftKey),n&&r===0&&n.buttons!==0&&(r=n.buttons);let a=n==null?void 0:n.target;if(!a){let t=this.relativeClientPosition(e.center),n=this.createRaycasterFromCamera(t,this.camera);a=new l.Vector3().copy(n.ray.direction).multiplyScalar(3).add(n.ray.origin);let[r]=this.modelScene.intersectRaycaster(n);if(!r&&n.ray.direction.y<-.3){let e=new l.Plane(new l.Vector3(0,1,0),0),t=n.ray.intersectPlane(e,new l.Vector3);if(t){let e=t.distanceTo(n.ray.origin);e<1e4&&e>=n.near&&(r={distance:e,floorIndex:0,floor:0,point:t,object:this.scene})}}if(r)a.copy(r.point);else{let e=new l.Vector3().copy(this.camera.pose.offset).sub(this.camera.position).normalize(),t=new l.Plane().setFromNormalAndCoplanarPoint(e,this.camera.pose.offset);n.ray.intersectPlane(t,a)}}if(e.isFinal?this.panState=void 0:this.panState={target:a,buttons:r,pointerLength:t,x:e.center.x,y:e.center.y},!(n===void 0||n.pointerLength!==t))if(t>1||r===2||i){let t={x:e.center.x-n.x,y:e.center.y-n.y},r=new l.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),i=_a(this.cameraMotion.value).setLength(this.locationMotion.value.distance).add(r),a=new l.Vector3().copy(i).sub(n.target).length();a*=Math.tan(this.camera.pose.fov/2*Math.PI/180);let o=this.renderer.getSize(new l.Vector2),s=2*t.x*a/o.y,c=2*t.y*a/o.y,u=new l.Vector3;u.setFromMatrixColumn(this.camera.matrix,0),u.multiplyScalar(-s),r.add(u),this.camera.pose.latitude<eD?u.setFromMatrixColumn(this.camera.matrix,1):(u.setFromMatrixColumn(this.camera.matrix,0),u.crossVectors(this.camera.up,u)),u.multiplyScalar(c),r.add(u);let d=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:r,distance:this.camera.pose.distance});if(e.state=d,this.emit(`gesture.pan`,e),e.defaultPrevented)return;if(this.locationMotion.set({x:d.offset.x,y:d.offset.y,z:d.offset.z},0).catch(K),e.isFinal&&(this.fixFinalState(d),Object.assign(e,{__fixFinalState:!0}),this.locationMotion.set({distance:d.distance,x:d.offset.x,y:d.offset.y,z:d.offset.z},0).catch(K)),e.isFinal){let t=this.renderer.getSize(new l.Vector2),n=2*e.velocityX*a/t.y,r=2*e.velocityY*a/t.y,i=new l.Vector3,o=new l.Vector3;i.setFromMatrixColumn(this.camera.matrix,0),i.multiplyScalar(-n),o.add(i),this.camera.pose.latitude<eD?i.setFromMatrixColumn(this.camera.matrix,1):(i.setFromMatrixColumn(this.camera.matrix,0),i.crossVectors(this.camera.up,i)),i.multiplyScalar(r),o.add(i),this.inMomentumMovement={uuid:Ft()},this.requestMomentumMovement(e,!0,{longitude:0,latitude:0,x:o.x,y:o.y,z:o.z},0)}}else{let t={x:e.center.x-n.x,y:e.center.y-n.y},r=this.coordinatesForOffset(t),i=ga(this.cameraMotion.value.longitude+r.longitude),a=this.camera.pose.fov,o=H(typeof this.minLatitude==`function`?this.minLatitude(a):this.minLatitude,-Math.PI/2,Math.PI/2),s=H(typeof this.maxLatitude==`function`?this.maxLatitude(a):this.maxLatitude,-Math.PI/2,Math.PI/2),c=H(this.cameraMotion.value.latitude+r.latitude,o,s);this.camera.aspect<1&&Math.abs(e.overallVelocityX)>.2&&Math.atan2(Math.abs(e.overallVelocityY),Math.abs(e.overallVelocityX))<Math.PI/6.923&&(c=this.cameraMotion.value.latitude);let l=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:i,latitude:c,fov:a,offset:this.camera.pose.offset,distance:this.camera.pose.distance});if(e.isFinal&&Object.assign(e,{__fixFinalState:!0}),e.state=l,this.emit(`gesture.pan`,e),e.defaultPrevented)return;if(e.isFinal?this.locationMotion.set({distance:l.distance,x:l.offset.x,y:l.offset.y,z:l.offset.z},0).catch(K):this.cameraMotion.set({longitude:l.longitude,latitude:l.latitude},0).catch(K),e.isFinal){let t=e.velocityX,n=e.velocityY;this.inMomentumMovement={uuid:Ft()},this.requestMomentumMovement(e,!0,Object.assign(Object.assign({},this.coordinatesForOffset({x:t,y:n})),{x:0,y:0,z:0}),0)}}}onPinchGesture(t){var n;if(!this.initAnimationIsReady)return;this.userAction=t.userAction,this.stopMomentumMovement(),this.hideIntersectMesh();let r=(n=this.pinchState)==null?void 0:n.distance;if(t.isFirst){this.pinchState={x:t.center.x,y:t.center.y,scale:1,distance:this.locationMotion.value.distance};return}if(r===void 0)return;let i=this.modelScene.boundingBox.getCenter(new l.Vector3),a=e.distanceFromModel(this.modelScene,this.cameraMotion.value.fov,this.camera.aspect),o=H(r/t.scale,$E,1/0),s=t.state.offset.clone().sub(_a(t.state).setLength(o)),c=this.modelScene.boundingBox.containsPoint(s),u;if(!c&&this.pinchState&&this.pinchState.scale>t.scale&&i.distanceTo(s)>a?u=t.state.distance:(u=o,this.pinchState&&(this.pinchState.scale=t.scale)),t.state.distance=u,this.emit(`gesture.pinch`,t),!t.defaultPrevented&&(this.locationMotion.set({distance:t.state.distance},0).catch(K),t.pointerType!==`mouse`&&(t.type=`gesture.pan`,this.onPanGesture(t)),t.isFinal)){if(!(`__fixFinalState`in t)){let e=t.state;this.fixFinalState(t.state);let n={x:e.offset.x,y:e.offset.y,z:e.offset.z,distance:e.distance};this.locationMotion.set(n,0).catch(K)}this.panState=void 0,this.pinchState=void 0}}onMouseMove(e){var t,n;if(!this.intersectMesh.parent||this.panState||this.pinchState||this.mouseWheelState||(this.emit(`gesture.mousemove`,e),e.defaultPrevented))return;let r=e.center.raycaster;if(e.isFinal&&this.intersectMesh.parent&&this.intersectMesh.visible===!0){this.hideIntersectMesh();return}let[i]=this.modelScene.intersectRaycaster(r),a=$(`intersect.update`,{raycaster:r,intersection:i==null?null:i,object:this.intersectMesh});if(this.emit(`intersect.update`,a),a.defaultPrevented){this.hideIntersectMesh();return}if(i){let e=(n=(t=i.face)==null?void 0:t.normal)==null?new l.Vector3().copy(r.ray.direction).multiplyScalar(-1):n,a=e.clone(),o=i.point.clone();this.intersectMesh.position.copy(o);let s=o.clone().add(a);if(this.intersectMesh.lookAt(s),Math.abs(e.y)>.99){let e=this.camera.position.clone().sub(o);this.intersectMesh.rotation.z=-Math.atan2(e.z,e.x)}this.intersectMesh.visible=!0,this.needsRender=!0}else this.hideIntersectMesh()}onMouseWheel(t){if(this.initAnimationIsReady)if(this.userAction=t.userAction,this.stopMomentumMovement(),this.hideIntersectMesh(),t.isFinal){let e=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:this.cameraMotion.value.longitude,latitude:this.cameraMotion.value.latitude,fov:this.cameraMotion.value.fov,offset:new l.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),distance:this.locationMotion.value.distance});if(this.fixFinalState(e),this.emit(`gesture.mousewheel`,t),t.defaultPrevented)return;let n={x:e.offset.x,y:e.offset.y,z:e.offset.z,distance:e.distance};this.locationMotion.set(n,0).catch(K)}else{let n=e.distanceFromModel(this.modelScene,this.cameraMotion.value.fov,this.camera.aspect),r=new l.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),i=_a(this.cameraMotion.value,new l.Vector3).negate(),a=new l.Ray(r,i).intersectBox(this.modelScene.boundingBox,new l.Vector3);a&&(n+=a.distanceTo(r));let o=Math.max(this.locationMotion.value.distance-this.camera.near,0),s=t.center.delta/10*Math.max(o/5,.1);if(o<=n||s>0)if(this.locationMotion.value.distance-s>=$E){let e=this.locationMotion.value.distance-s;t.state.distance=e}else{let e=_a(this.cameraMotion.value);e.setLength(s),t.state.offset.add(e)}if(this.emit(`gesture.mousewheel`,t),t.defaultPrevented)return;this.locationMotion.set({distance:t.state.distance,x:t.state.offset.x,y:t.state.offset.y,z:t.state.offset.z},0).catch(K)}}onTapGesture(e){var t;this.userAction=e.userAction,this.stopMomentumMovement();let n=e.center.raycaster,r=this.getForwardObserverOrNot(n);if(!r)this.emit(`gesture.tap`,e);else{let n={longitude:this.camera.pose.longitude,latitude:0},i=Object.assign(Object.assign({},e.state),{mode:`Panorama`,workCode:r.work.workCode,panoIndex:r.panoIndex,longitude:n.longitude,latitude:n.latitude,offset:r?r.position.clone():new l.Vector3,distance:0});if(e.state=i,this.emit(`gesture.tap`,e),!e.defaultPrevented&&(this.emit(`pano.select`,$(`pano.select`,{prevPano:this.currentPano,state:i,userAction:e.userAction,options:n,progress:0,error:null})),r&&r.active)){let e=this.pendingTextureId=Ft(),a=gb({panoIndex:r.panoIndex,workCode:r.work.workCode}),o=this.imageOptions.transform,s=Object.assign({key:`pano.${a}`},hl(this.imageOptions,[`format`,`size`,`quality`,`sharpen`,`forceUseExifOrientation`,`mappings`])),c={right:r.images.work.getURL(r.images.right),left:r.images.work.getURL(r.images.left),up:r.images.work.getURL(r.images.up),down:r.images.work.getURL(r.images.down),front:r.images.work.getURL(r.images.front),back:r.images.work.getURL(r.images.back)},u,d,f=this.enableHDR?r.images.gainmap:void 0;f&&(u={right:r.images.work.getURL(f.right),left:r.images.work.getURL(f.left),up:r.images.work.getURL(f.up),down:r.images.work.getURL(f.down),front:r.images.work.getURL(f.front),back:r.images.work.getURL(f.back)},d=r.images.work.getURL(f.cfg));let p=`pano:`+mb([c,u,s]),m=this.modelScene.parameter,h;if(m.pano0&&m.pano0.map.name===p?h=m.pano0:m.pano1&&m.pano1.map.name===p&&(h=m.pano1),h)m.pano0&&m.pano0.map!==h.map&&m.pano0.map.dispose(),m.pano1&&m.pano1.map!==h.map&&m.pano1.map!==((t=m.pano0)==null?void 0:t.map)&&m.pano1.map.dispose(),m.set({pano0:h,pano1:h}),this.emit(`pano.request`,$(`pano.request`,{userAction:!0,prevPano:this.currentPano,progress:0,state:i,options:n,error:null}));else{let t=this.textureLoader.loadCubeTexture(c,{imageURL:{transform:o,options:s},format:l.RGBAFormat,viaAjax:!0,fetcher:vy(this.fiveId,r.work)},void 0,void 0,void 0,this.renderer),f=d&&u?Promise.all([vy(this.fiveId,r.work).ajax(d,{responseType:`text`}).then(e=>Wt(JSON.parse(e.body))),this.textureLoader.loadCubeTexture(u,{imageURL:{transform:o,options:s},format:l.RGBAFormat,colorSpace:l.NoColorSpace,viaAjax:!0,fetcher:vy(this.fiveId,r.work)},void 0,void 0,void 0,this.renderer)]).then(([e,t])=>({config:e,map:t.body})):Promise.resolve(void 0);Promise.all([t,f]).then(t=>Wr(this,[t],void 0,function*([t,o]){var s,c;let{body:u}=t;if(this.destroyed||this.pendingTextureId!==e){u.dispose();return}this.pendingTextureId=null,u.name=p;let d=Array.isArray(u.image)?u.image[0]:u.image,f=(s=d==null?void 0:d.width)==null?2048:s,h=yield BC(this.renderer,u,!0,Dx),g=new jx().formPixels(h.data),_={panoId:a,map:u,mapSize:f,mapHistogram:new l.Vector4().fromArray(g.toArray()),matrix:r.matrix.clone().premultiply(r.work.transform),zoom:1,gainmap:o?{map:o.map,cfg:o.config}:void 0};m.pano0&&m.pano0.map.dispose(),m.pano1&&m.pano1.map!==((c=m.pano0)==null?void 0:c.map)&&m.pano1.map.dispose(),m.set({pano0:_,pano1:_}),this.emit(`pano.request`,$(`pano.request`,{userAction:!0,prevPano:this.currentPano,progress:0,state:i,options:n,error:null}))})).catch(t=>{this.destroyed||this.pendingTextureId!==e||(this.pendingTextureId=null)})}}}}onDblTapGesture(e){if(!this.initAnimationIsReady)return;this.userAction=e.userAction,this.stopMomentumMovement(),this.hideIntersectMesh();let t=e.state,n=e.center.raycaster,r=n.ray.origin.clone().add(n.ray.direction.clone().setLength(3)),i=1,[a]=this.modelScene.intersectRaycaster(n);if(a&&(r=a.point.clone(),i=a.distance>4/2?1:3),e.state.distance=i,e.state.offset=r,this.emit(`gesture.dbltap`,e),e.defaultPrevented)return;let o={x:t.offset.x,y:t.offset.y,z:t.offset.z,distance:t.distance};this.locationMotion.set(o,360).catch(K),this.hideIntersectMesh()}hideIntersectMesh(){this.intersectMesh.visible===!0&&(this.intersectMesh.visible=!1,this.needsRender=!0)}}},rD={Floorplan:ow,Topview:cw,Panorama:mT,VRPanorama:sE,XRPanorama:BE,Model:YE,Mapview:tD},iD=`gesture.pan,gesture.tap,gesture.dbltap,gesture.press,gesture.pinch,gesture.mousewheel,gesture.mousemove,gesture.momentum,gesture.fire,initAnimation.start,initAnimation.end,camera.update,intersect.update,pano.select,pano.moveTo,pano.moving,pano.arrived,pano.cancel,pano.error,pano.prepare,pano.texture.load,pano.texture.progress,pano.texture.success,pano.texture.error,pano.texture.abort,xr.session.start,xr.session.end,xr.gesture.tap,xr.gesture.press,xr.gesture.buttonUp,xr.gesture.buttonDown,xr.controller.update`.split(`,`);function aD(e){e.on(`initAnimation.start`,t=>{e.emit(`initAnimationWillStart`,t.state.panoIndex,t.state,t.userAction)}),e.on(`initAnimation.end`,t=>{e.emit(`initAnimationEnded`,t.state.panoIndex,t.state,t.userAction)}),e.on(`gesture.pan`,t=>{let n=!1;n=e.emit(`wantsGesture`,`pan`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsPanGesture`,t.state,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`pan`,t.pointers,t.isFinal),e.emit(`panGesture`,t.state,t.isFinal))}),e.on(`gesture.tap`,t=>{let n=!1;n=e.emit(`wantsGesture`,`tap`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsTapGesture`,t.center.raycaster,t.center.coords,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`tap`,t.pointers,t.isFinal),e.emit(`tapGesture`,t.center.raycaster,t.center.coords,t.isFinal))}),e.on(`gesture.dbltap`,t=>{let n=!1;n=e.emit(`wantsGesture`,`dbltap`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsDblTapGesture`,t.center.raycaster,t.center.coords,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`dbltap`,t.pointers,t.isFinal),e.emit(`dblTapGesture`,t.center.raycaster,t.center.coords,t.isFinal))}),e.on(`gesture.press`,t=>{let n=!1;n=e.emit(`wantsGesture`,`press`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsPressGesture`,t.center.raycaster,t.center.coords,t.center.delta,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`press`,t.pointers,t.isFinal),e.emit(`pressGesture`,t.center.raycaster,t.center.coords,t.center.delta,t.isFinal))}),e.on(`gesture.pinch`,t=>{let n=!1;n=e.emit(`wantsGesture`,`pinch`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsPinchGesture`,t.scale,t.state.fov,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`pinch`,t.pointers,t.isFinal),e.emit(`pinchGesture`,t.scale,t.state.fov,t.isFinal))}),e.on(`gesture.mousewheel`,t=>{let n=!1;n=e.emit(`wantsGesture`,`mouseWheel`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsMouseWheel`,t.center.delta,t.state.fov,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`mouseWheel`,t.pointers,t.isFinal),e.emit(`mouseWheel`,t.center.delta,t.state.fov,t.isFinal))}),e.on(`gesture.mousemove`,t=>{let n=!1;n=e.emit(`wantsGesture`,`mouseMove`,t.pointers,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`mouseMove`,t.pointers,t.isFinal),n=e.emit(`wantsChangeCameraFov`,t.state.fov),n&&t.preventDefault())}),e.on(`gesture.momentum`,t=>{let n=!1;n=e.emit(`wantsInteriaPan`,t.state),n&&t.preventDefault(),t.defaultPrevented||e.emit(`interiaPan`,t.state,t.isFinal)}),e.on(`camera.update`,t=>{e.emit(`cameraFovUpdate`,t.state.fov,t.userAction),e.emit(`cameraDirectionUpdate`,t.state,t.userAction);let n=_a(t.state);n.setLength(t.state.distance);let r=t.state.offset.clone().sub(n);e.emit(`cameraPositionUpdate`,r,t.userAction),e.emit(`cameraUpdate`,t.state,t.userAction)}),e.on(`intersect.update`,t=>{if(t.intersection){let n=!1;n=e.emit(`wantsShowIntersectionOnModel`,t.raycaster),n&&t.preventDefault(),t.defaultPrevented||e.emit(`intersectionOnModelUpdate`,t.intersection,t.object)}else e.emit(`intersectionHidden`)}),e.on(`pano.request`,t=>{let n=e.emit(`wantsMoveToPano`,t.state.panoIndex,t.options,t.userAction);n||(n=e.emit(`wantsToMoveToPano`,t.state.panoIndex,t.options,t.userAction)),n&&t.preventDefault(),t.defaultPrevented||e.emit(`panoWillLoad`,t.state.panoIndex)}),e.on(`pano.select`,t=>{e.emit(`panoSelected`,t.state.panoIndex)}),e.on(`pano.moveTo`,t=>{e.emit(`panoLoaded`,t.state.panoIndex),e.emit(`moveToPano`,t.state.panoIndex,t.userAction),e.emit(`panoWillArrive`,t.state.panoIndex,t.state,t.userAction)}),e.on(`pano.moving`,t=>{e.emit(`movingToPano`,t.state.panoIndex,t.prevPano.panoIndex,t.progress)}),e.on(`pano.arrived`,t=>{e.emit(`panoArrived`,t.state.panoIndex,t.state,t.userAction)}),e.on(`pano.cancel`,t=>{e.emit(`moveToPanoCanceled`,t.state.panoIndex)}),e.on(`pano.error`,t=>{e.emit(`panoLoadError`,t.error,t.state.panoIndex)}),e.on(`pano.texture.load`,t=>{e.emit(`textureStartLoad`,t.pano.panoIndex)}),e.on(`pano.texture.success`,t=>{e.emit(`textureLoaded`,t.pano.panoIndex,t.meta)}),e.on(`pano.texture.error`,t=>{e.emit(`textureError`,t.error,t.pano.panoIndex)}),e.on(`pano.texture.abort`,t=>{e.emit(`textureAbort`,t.pano.panoIndex)}),e.on(`pano.texture.progress`,t=>{e.emit(`textureLoading`,t.progress,t.pano.panoIndex)}),e.on(`xr.session.start`,t=>{e.emit(`webXRSessionStart`)}),e.on(`xr.session.end`,t=>{e.emit(`webXRSessionEnd`)}),e.on(`xr.gesture.tap`,t=>{e.emit(`webXRControllerEvent`,`tap`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.gesture.press`,t=>{e.emit(`webXRControllerEvent`,`press`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.gesture.buttonUp`,t=>{e.emit(`webXRControllerEvent`,`buttonUp`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.gesture.buttonDown`,t=>{e.emit(`webXRControllerEvent`,`buttonDown`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.controller.update`,t=>{e.emit(`webXRControllerRayUpdate`,{leftRay:t.left?t.left.raycaster:void 0,rightRay:t.right?t.right.raycaster:void 0}),t.left&&e.emit(`webXRAxesUpdate`,`left`,{raycaster:{leftRay:t.left?t.left.raycaster:void 0,rightRay:t.right?t.right.raycaster:void 0},axesState:{up:t.left.axes.up,down:t.left.axes.down,left:t.left.axes.left,right:t.left.axes.right},deltaTime:t.left.deltaTime}),t.right&&e.emit(`webXRAxesUpdate`,`right`,{raycaster:{leftRay:t.left?t.left.raycaster:void 0,rightRay:t.right?t.right.raycaster:void 0},axesState:{up:t.right.axes.up,down:t.right.axes.down,left:t.right.axes.left,right:t.right.axes.right},deltaTime:t.right.deltaTime})}),e.on(`works.request`,t=>{e.emit(`willLoad`,t.input,t.works[0],e.getCurrentState())}),e.on(`works.load`,t=>{e.emit(`load`,t.input,t.works[0],e.getCurrentState())}),e.on(`works.ready`,t=>{e.emit(`loaded`,t.input,t.works[0])}),e.on(`state.change`,t=>{e.emit(`stateChange`,t.state,t.userAction)}),e.on(`currentState.change`,t=>{e.emit(`currentStateChange`,t.state,t.userAction)}),e.on(`state.set`,t=>{e.emit(`setState`,t.state)}),e.on(`state.synced`,t=>{e.emit(`stateSynced`,t.state)}),e.on(`model.request`,t=>{e.emit(`modelWillLoad`,t.work.model)}),e.on(`model.error`,t=>{e.emit(`modelLoadError`,t.error,t.model)}),e.on(`model.load`,t=>{e.emit(`modelLoaded`,t.model)}),e.on(`model.changeShownFloor`,t=>{e.emit(`modelShownFloorChange`,t.model.shownFloor,t.model.floorLength)}),e.on(`render`,t=>{e.emit(`renderFrame`,t.needsRender)}),e.on(`mode.change.request`,t=>{e.emit(`wantsChangeMode`,t.mode,t.prevMode)}),e.on(`mode.change`,t=>{e.emit(`modeChange`,t.mode,t.prevMode,t.state.panoIndex,t.state,t.userAction)}),e.on(`helpers.visible`,t=>{e.emit(`helpersVisibleChange`,t.object.visible)}),e.on(`network.resource`,t=>{e.emit(`network`,t.source,t.requestType,t.requestState,t.detail)})}function oD(){if(typeof window<`u`){let e=document.createElement(`video`);e.loop=!0,e.autoplay=!0,e.playsInline=!0,e.muted=!0,e.crossOrigin=``;let t=()=>{document.removeEventListener(`touchstart`,t,!1),document.removeEventListener(`mousedown`,t,!1),e.muted=!1};return document.addEventListener(`touchstart`,t,!1),document.addEventListener(`mousedown`,t,!1),e}else return{}}function sD(){let e=new l.Group;e.name=`internalLights`;{let t=new l.DirectionalLight(16777215,.1);t.name=`direction0`,t.position.copy(new l.Vector3(0,1,0)),e.add(t)}{let t=new l.DirectionalLight(16777215,.1);t.name=`direction1`,t.position.copy(new l.Vector3(-1,-1,-1)),e.add(t)}{let t=new l.DirectionalLight(16777215,.3);t.name=`direction2`,t.position.copy(new l.Vector3(1,1,1)),e.add(t)}{let t=new l.AmbientLight(16777215,.6);t.name=`ambient0`,e.add(t)}return e}function cD(e){var t,n;let r={},i=e.split(/(\;|\,)/);for(let e of i){let i=e.split(`=`),a=(t=i[0])==null?void 0:t.trim(),o=(n=i[1])==null?void 0:n.trim();a&&o&&(r[a]=o)}return r}function lD(){var e;if(typeof document<`u`){let t=document.getElementsByTagName(`meta`);for(let n=0;n<t.length;n++){let r=t[n];if(r.getAttribute(`name`)===`viewport`){let t=cD((e=r.getAttribute(`content`))==null?``:e),n=Number(t[`initial-scale`]);if(!isNaN(n))return n}}}return 1}function uD(){return typeof location>`u`||location.protocol!==`https:`?Promise.reject(Error(`Request DeviceOrientation Permission denied.`)):typeof DeviceOrientationEvent<`u`&&typeof DeviceOrientationEvent.requestPermission==`function`?DeviceOrientationEvent.requestPermission().then(e=>{if(e==`granted`)return Promise.resolve();{let e=Error(`Request DeviceOrientation Permission denied.`);return Promise.reject(e)}}):Promise.resolve()}function dD(){if(`xr`in navigator)return navigator.xr.isSessionSupported(`immersive-vr`).then(e=>e?Promise.resolve():Promise.reject()).then(()=>navigator.xr.requestSession(`immersive-vr`,{optionalFeatures:[`local-floor`]}).then(e=>Promise.resolve(e)));{let e=Error(`Request XR Permission denied.`);return Promise.reject(e)}}var fD=800,pD=90,mD=e=>e.replace(`//vrlab-public.ljcdn.com/`,`//vr-public.realsee-cdn.cn/`).replace(`//vrlab-image4.ljcdn.com/`,`//vr-image-4.realsee-cdn.cn/`).replace(`//vrlab-image3.ljcdn.com/`,`//vr-image-3.realsee-cdn.cn/`).replace(`//vrlab-image2.ljcdn.com/`,`//vr-image-2.realsee-cdn.cn/`).replace(`//vrlab-image1.ljcdn.com/`,`//vr-image-1.realsee-cdn.cn/`),hD=new l.Sphere,gD=new l.Box3,_D=new l.Vector4,vD=new l.Vector4,yD=new l.Color,bD=new l.Vector2,xD=new WeakMap,SD=sx([ix(null)]),CD={},wD=class e extends Bt{static get version(){return`1.0.0-alpha.8`}static get dracoPath(){return of.decoderPath}static set dracoPath(e){of.setDecoderPath(e)}static get ktx2Path(){return mf.transcoderPath}static set ktx2Path(e){mf.setTranscoderPath(e)}static get useNativeImageBitmap(){return cu()}static set useNativeImageBitmap(e){su(e)}constructor(e={}){var t,n,r,i,a,o,s,c,u,d,f,p;if(super(),this.pbmGaussianSplattingRenderMesh=null,this.fiveId=Ft(),CD[this.fiveId]=this,this.currentUpdateArgs={time:G(),args:[]},this.currentMode=`Panorama`,this.pano={workCode:``,panoIndex:0},this.needsRender=!0,this.onlyRenderIfNeeds=(t=e.onlyRenderIfNeeds)==null?!0:t,this.imageOptions=Object.assign({},(n=e.imageOptions)==null?{}:n),this.textureOptions=Object.assign({},(r=e.textureOptions)==null?{}:r),this.poweredByRealsee=(i=e.poweredByRealsee)==null?!0:i,this.backgroundColor=new l.Color((a=e.backgroundColor)==null?1579548:a),this.backgroundAlpha=(o=e.backgroundAlpha)==null?1:o,this.extraElements=[],this.controllerInits={Panorama:Object.assign({},e.panorama),Model:Object.assign({},e.model),Floorplan:Object.assign({},e.floorplan),Topview:Object.assign({},e.topview),Mapview:Object.assign({},e.mapview),VRPanorama:Object.assign({},e.vrPanorama),XRPanorama:Object.assign({},e.xrPanorama)},this.fps={testCount:0,testTime:G()},this.modeChangeDuration=(s=e.modeChangeDuration)==null?fD:s,this.enableWheel=(c=e.enableWheel)==null?!0:c,this.enableHDR=!!e.enableHDR&&gS&&!e.forceWebGL,typeof window<`u`)if(`renderer`in e)e.renderer instanceof NS&&this.throwError(Error(`cannot render a internal renderer`)),this.renderer=e.renderer;else try{this.renderer=new NS({outputType:this.enableHDR?l.HalfFloatType:void 0,logarithmicDepthBuffer:e.logarithmicDepthBuffer,forceWebGL:(u=e.forceWebGL)==null?!1:u});let t=lD();this.renderer.setPixelRatio(t===1?window.devicePixelRatio:1),this.renderer.setSize(512,512),this.renderer.setClearColor(this.backgroundColor,this.backgroundAlpha)}catch(e){let t=e instanceof Error?e:Error(String(e));this.throwError(t)}this.getPixelsRenderTarget=new l.RenderTarget(1,1,{colorSpace:(f=(d=this.renderer)==null?void 0:d.outputColorSpace)==null?l.SRGBColorSpace:f,generateMipmaps:!1}),this.renderer&&Xc(this.renderer),this.viewport=Object.assign({left:0,bottom:0,width:1,height:1},e.viewport),this.camera=new Aa(pD),this.scene=new zS,this.scene.background=this.backgroundColor,this.xrCustomObjectsScene=new l.Scene,this.scene.add(this.xrCustomObjectsScene),this.scene.matrixAutoUpdate=!1,this.requestProxy=(p=e.requestProxy)==null?mD:p,this.networkSubscribe=new cl,this.networkSubscribe.on(`network`,(e,t,n,r)=>{var i;this.emit(`network.resource`,$(`network.resource`,{source:e,requestType:t,requestState:n,detail:r})),(i=this.analysis)==null||i.network(this.works,e,t,n,r)}),this.readyCallbacks=[],this.syncingState=!1,this.helperGroup=new l.Group,this.helperGroup.name=`helper`,this.helperGroup.matrixAutoUpdate=!1,this.scene.add(this.helperGroup),xD.set(this,SD),this.modelScene=new Jy({fiveId:this.fiveId}),this.modelScene.addEventListener(`model.create`,e=>{this.bindModel(e.model)}),this.scene.add(this.modelScene);let[m]=this.modelScene.setModels(SD,{forceReplaceImmediately:!0});Z(m,`loaded`,{get(){return!1},set(e){}}),this.videoTexture=new l.VideoTexture(e.videoInstance||oD());let h=sD();this.scene.add(h),this.state={mode:this.currentMode,workCode:this.pano.workCode,panoIndex:this.pano.panoIndex,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance},this.stateSynced=!1,this.destroyed=!1,this.paused=!0,typeof window<`u`&&(e.play!==!1&&this.play(),this.stopAnimationLoop=iu.shared.add((e,t,...n)=>{this.updateTime(e,t,...n)},!1,0,10));let g=()=>{typeof document<`u`&&document.fullscreenElement===null&&this.currentMode===`VRPanorama`&&this.controller.emit(`vr.requestExit`,$(`vr.requestExit`,{}))},_=()=>{this.needsRender=!0},v=()=>{this.renderer instanceof NS&&this.renderer.reconfigureContext(),this.needsRender=!0},y=()=>{typeof document<`u`&&document.visibilityState===`visible`&&v()},b=()=>{v()};if(this.renderer instanceof NS&&(this.renderer.onDeviceLostCallback=()=>{v()}),typeof document<`u`&&(document.addEventListener(`visibilitychange`,y,!1),document.addEventListener(`fullscreenchange`,g,!1)),typeof window<`u`&&window.addEventListener(`pageshow`,b,!1),this.renderer&&this.renderer.domElement.addEventListener(`webglcontextrestored`,_,!1),this.removeEventListeners=()=>{typeof document<`u`&&(document.removeEventListener(`visibilitychange`,y,!1),document.removeEventListener(`fullscreenchange`,g,!1)),typeof window<`u`&&window.removeEventListener(`pageshow`,b,!1),this.renderer instanceof NS&&(this.renderer.onDeviceLostCallback=void 0),this.renderer&&this.renderer.domElement.removeEventListener(`webglcontextrestored`,_,!1)},this.loadWorkTask=this.prepare(),this.plugins={},e.plugins&&e.plugins.length){for(let t of e.plugins)if(typeof t==`function`)t(this);else if(Array.isArray(t)){let[e,n,r]=t;if(typeof e==`function`){let t=e(this,r);typeof n==`string`&&(this.plugins[n]?this.throwError(Error(`plugin name ${n} is exists.`)):this.plugins[n]=t)}}}aD(this),this.fiveRenderer=new pS({outputType:this.enableHDR?l.HalfFloatType:void 0}),this.adaptiveLuminancePass=new qx,this.adaptiveLuminancePass.enabled=!1,this.fiveRenderer.composer.addPass(this.adaptiveLuminancePass),this.eyeDomeLightingPass=new Yx(this.camera),this.eyeDomeLightingPass.enabled=!1,this.fiveRenderer.composer.addPass(this.eyeDomeLightingPass),this.pbmGaussianSplattingRenderMesh=new Oi,this.scene.add(this.pbmGaussianSplattingRenderMesh)}get ident(){return this.fiveId}get panoIndex(){return this.pano.panoIndex}prepare(){return Promise.all([Al().catch(K)]).then(K)}dispose(){var e;if(this.destroyed===!0)return;delete CD[this.fiveId],this.emit(`dispose`),this.destroyed=!0,this.pause(),this.stopAnimationLoop&&(this.stopAnimationLoop(),this.stopAnimationLoop=void 0),this.off(),this.networkSubscribe.off(),this.controller&&(this.controller.destroy(),this.controller=void 0);let t=this.getElement();t&&t.parentNode&&t.parentNode.removeChild(t);let n=this.modelScene.parameter;n.pano0&&n.pano0.map.dispose(),n.pano1&&n.pano1.map!==((e=n.pano0)==null?void 0:e.map)&&n.pano1.map.dispose(),n.reset(`pano0`,`pano1`),this.modelScene.dispose(),xD.set(this,SD),this.renderer&&(!(this.renderer instanceof NS)||this.renderer.isInitialized)&&this.renderer.render(new l.Scene,new l.PerspectiveCamera),this.fiveRenderer.dispose(),this.renderer instanceof NS&&this.renderer.dispose()}setViewport(e){Object.assign(this.viewport,e),this.needsRender=!0}get boundingMesh(){return this.modelScene.boundingMesh}get helperVisible(){return this.helperGroup.visible}set helperVisible(e){this.helperGroup.visible!==e&&(this.helperGroup.visible=e,this.emit(`helpers.visible`,$(`helpers.visible`,{object:this.helperGroup})),this.needsRender=!0)}updateConfiguration(e,t=!0){let n=!1,r=!1;e.panorama&&(Object.assign(this.controllerInits.Panorama,_l(e.panorama)),this.currentMode===`Panorama`&&(n=!0)),e.model&&(Object.assign(this.controllerInits.Model,_l(e.model)),this.currentMode===`Model`&&(n=!0)),e.floorplan&&(Object.assign(this.controllerInits.Floorplan,_l(e.floorplan)),this.currentMode===`Floorplan`&&(n=!0)),e.topview&&(Object.assign(this.controllerInits.Topview,_l(e.topview)),this.currentMode===`Topview`&&(n=!0)),e.mapview&&(Object.assign(this.controllerInits.Mapview,_l(e.mapview)),this.currentMode===`Mapview`&&(n=!0)),e.vrPanorama&&(Object.assign(this.controllerInits.VRPanorama,_l(e.vrPanorama)),this.currentMode===`VRPanorama`&&(n=!0)),e.xrPanorama&&(Object.assign(this.controllerInits.XRPanorama,_l(e.xrPanorama)),this.currentMode===`XRPanorama`&&(n=!0)),e.imageOptions&&(Object.assign(this.imageOptions,e.imageOptions),(this.currentMode===`Panorama`||this.currentMode===`VRPanorama`||this.currentMode===`XRPanorama`)&&(r=!0,n=!0)),e.textureOptions&&Object.assign(this.textureOptions,e.textureOptions),t&&n&&this.controller&&this.currentMode&&(!this.controller.updateConfiguration(this.controllerInits[this.currentMode])||r)&&this.changeMode(this.currentMode,this.getCurrentState(),0,!1,!0)}appendTo(e,t={}){if(!this.renderer)return;if(!(this.renderer instanceof NS)){this.throwError(Error(`cannot call appendTo method when render a external renderer`));return}let n=this.getElement();if(!n)return;e.appendChild(n),this.refresh(t);let r=window.getComputedStyle(e).position;r!==`relative`&&r!==`absolute`&&r!==`fixed`&&r!==`sticky`&&(e.style.position=`relative`)}refresh(e={},t){var n,r,i,a,o,s;if(!this.renderer)return;let c=this.renderer.domElement.parentNode,{width:l=(n=c==null?void 0:c.offsetWidth)==null?512:n,height:u=(r=c==null?void 0:c.offsetHeight)==null?512:r}=e;if(l=Math.max(1,l),u=Math.max(1,u),!t){let e=lD(),n=typeof window<`u`?window.devicePixelRatio:1;if(t=(i=e===1?n:1)==null?1:i,t>1){let e=Math.max(l,u)*t,n=Math.min((s=(o=(a=this.renderer.backend.device)==null?void 0:a.limits)==null?void 0:o.maxTextureDimension2D)==null?8192:s,4096);e>n&&(t=Math.max(t/e*n,1),t=Math.floor(t*100)/100)}}this.renderer.setPixelRatio(t),this.renderer.setSize(l,u),this.needsRender=!0;let d=G(),f=d-this.currentUpdateArgs.time,p=this.currentUpdateArgs.args;this.updateTime(d,f,...p)}addExtraElement(e){return this.extraElements.indexOf(e)===-1&&(this.extraElements.push(e),this.controller&&this.controller.bindExtraElement(e)),()=>this.removeExtraElement(e)}removeExtraElement(e){let t=this.extraElements.indexOf(e);t!==-1&&(this.extraElements.splice(t,1),this.controller&&this.controller.unbindExtraElement(e))}getSize(e){if(!this.renderer)throw Error(`renderer is not initialized`);return this.renderer.getSize(e),e.x*=this.viewport.width,e.y*=this.viewport.height,e}getDrawingBufferSize(e){if(!this.renderer)throw Error(`renderer is not initialized`);return this.renderer.getDrawingBufferSize(e),e.x*=this.viewport.width,e.y*=this.viewport.height,e}updateCamera(e,t,n=!0){if(!this.controller)throw Error(`controller is not initialized.`);return this.controller.updateCamera(e,t,n)}updateCameraWithKeyframes(e,t,n=!0){if(!this.controller)throw Error(`controller is not initialized.`);return this.controller.updateCameraWithKeyframes(e,t,n)}get works(){return xD.get(this)||SD}get work(){return this.works[0]}get observers(){return this.work.observers}get models(){return this.modelScene.models}get model(){return this.modelScene.models[0]}load(e,t,n,r=!0){if(!this.renderer)throw Error(`renderer is not initialized`);let i=this.loadWorkTask.then(()=>mC(e)?e.then(e=>this.load_(e,t,n,r)):this.load_(e,t,n,r));return this.loadWorkTask=i.catch(e=>{this.throwError(e)}),i}load_(t,n,r,i=!0){var a,o,s,c,u,d,f,p,m,h;let g={};typeof r==`number`?g.duration=r:typeof r==`object`&&Object.assign(g,r),this.works===SD&&(g.duration===void 0&&(g.duration=0),g.effect===void 0&&(g.effect=`instant`));let _={};Object.assign(_,g.model),!_[`3d-tiles`]&&g[`3d-tiles`]&&(_[`3d-tiles`]=g[`3d-tiles`]),!_.textureOptions&&g.textureOptions&&(_.textureOptions=g.textureOptions),!_.textureOptions&&this.textureOptions&&(_.textureOptions=this.textureOptions);let v=[];if(Array.isArray(t))for(let e of t)e instanceof rx?v.push(e):typeof e!=`string`&&`work`in e?v.push(ix(e.work,e)):v.push(ix(e));else t instanceof rx?v.push(t):v.push(ix(t));g.mode===`add`&&(v=[].concat(this.works,v));let y;try{y=sx(v)}catch(e){return this.throwError(e),Promise.reject(e)}for(let e of y)this.bindWorkFetcher(e);n===void 0&&(n=`inherit`),n===`inherit`&&this.works===SD&&(n=`initial`);let b=this.currentMode,x=y.initial,S=x.work.observers[0],C=S?{workCode:S.work.workCode,panoIndex:S.panoIndex}:{workCode:x.work.workCode,panoIndex:0},w=(a=x.mode)==null?S?`Panorama`:`Mapview`:a,T={};if(n===`inherit`){let e=this.getCurrentState(),[t]=y.filter(t=>t.workCode===e.workCode);if(t)C={workCode:e.workCode,panoIndex:e.panoIndex},w=e.mode,T={longitude:e.latitude,latitude:e.latitude,fov:e.fov,distance:e.distance,offset:e.offset.clone()};else{n={mode:b};let e=(s=(o=y[0])==null?void 0:o.observers)==null?void 0:s[this.panoIndex];e?(n.workCode=e.work.workCode,n.panoIndex=e.panoIndex):typeof y.initial.panoIndex==`number`?(n.workCode=y.initial.work.workCode,n.panoIndex=y.initial.panoIndex):(n.mode===`Panorama`||n.mode===`VRPanorama`||n.mode===`XRPanorama`)&&(n.mode=`Mapview`),n.mode===b&&(n.longitude=this.camera.pose.longitude,n.latitude=this.camera.pose.latitude,n.fov=this.camera.pose.fov)}}if(n===`initial`&&(typeof x.panoIndex==`number`&&(C={workCode:x.work.workCode,panoIndex:x.panoIndex}),x.mode&&(w=x.mode),T={longitude:x.longitude,latitude:x.latitude,fov:x.fov,distance:x.distance,offset:(c=x.offset)==null?void 0:c.clone()}),typeof n==`object`){if(w=(u=n.mode)==null?b:u,typeof n.panoIndex==`number`){let e=y.getObserver({workCode:(f=(d=n.workCode)==null?x.work.workCode:d)==null?``:f,panoIndex:n.panoIndex});e&&(C={workCode:e.work.workCode,panoIndex:e.panoIndex})}T={longitude:n.longitude,latitude:n.latitude,fov:n.fov,distance:n.distance,offset:n.offset?new l.Vector3().copy(n.offset):void 0}}let E=(p=g.duration)==null?this.modeChangeDuration:p;(w===`Floorplan`||w===`Topview`||w===`Mapview`)&&b===w&&(E=0);let D=`fly`;(w===`Panorama`||w===`VRPanorama`||w===`XRPanorama`)&&b===w&&(D=(m=g.effect)==null?`fade`:m),this.emit(`works.request`,$(`works.request`,{input:t,works:y,userAction:i}));let O=(e,t,r)=>{let a=this.getCurrentState(),o=Object.assign(Object.assign({mode:e},t),r);n===`inherit`&&(o=this.getCurrentState()),this.pano=t;let s=Object.assign(Object.assign({initial:{state:o,currentState:a,duration:E,effect:D,userAction:i}},this.commonParams()),this.controllerInits[e]),c=nD[o.mode].initAnimationEndState(s);if(this.controller&&b===e)this.controller.updateWork(y,c,{effect:D,duration:E},i)===!1&&(this.controller.destroy(),this.controller=this.applyController(e,s));else{if(this.controller)this.controller.destroy();else{let t=nD[e].initAnimationEndState(s);this.camera.setFromPose(t),this.emit(`camera.update`,$(`camera.update`,{state:this.getCurrentState(),userAction:i}))}this.controller=this.applyController(e,s);let t=$(`mode.change`,{prevMode:b,mode:e,state:c,userAction:i});try{this.emit(`mode.change`,t)}catch(e){console.error(e)}}this.state.workCode=this.pano.workCode,this.state.panoIndex=this.pano.panoIndex,this.updateTime(this.currentUpdateArgs.time,0,...this.currentUpdateArgs.args)};xD.set(this,y);let k=Promise.resolve();if(w===e.Mode.Floorplan||w===e.Mode.Topview||w===e.Mode.Mapview||w===e.Mode.Model){this.modelScene.loaded===!1&&(this.camera.setFromPose(T),bC(this.state,this.camera.pose));let e=this.modelScene.setModels(y,_);k=Promise.all(e.map(e=>e.loadedReady)).then(()=>{this.needsRender=!0,O(w,C,T),this.emit(`camera.update`,$(`camera.update`,{state:this.getCurrentState(),userAction:i}))})}else{O(w,C,T);let e=this.controller,t=!1;this.modelScene.autoRefine=!1;let n=()=>{this.works===y&&t===!1&&(this.needsRender=!0,this.emit(`camera.update`,$(`camera.update`,{state:this.getCurrentState(),userAction:i})),t=!0,this.modelScene.autoRefine=!0),e.off(`pano.arrived`,n),e.off(`pano.cancel`,n)},r=this.modelScene.setModels(y,_);k=Promise.all(r.map(e=>e.initReady)).then(K),e.once(`pano.arrived`,n),e.once(`pano.cancel`,n),setTimeout(n,((h=g.duration)==null?this.modeChangeDuration:h)+1e3)}return this.emit(`works.load`,$(`works.load`,{input:t,userAction:i,works:y})),k.then(()=>this.ready()).then(()=>{var e;this.emit(`works.ready`,$(`works.ready`,{input:t,userAction:i,works:y})),(e=this.analysis)==null||e.work(y)})}reset(){let e=this.loadWorkTask.then(()=>this.reset_());return this.loadWorkTask=e.catch(e=>{this.throwError(e)}),e}reset_(){return new Promise(e=>{var t;this.controller&&(this.controller.destroy(),this.controller=void 0);let n=this.modelScene.parameter;n.pano0&&n.pano0.map.dispose(),n.pano1&&n.pano1.map!==((t=n.pano0)==null?void 0:t.map)&&n.pano1.map.dispose(),n.set({pano0:null,pano1:null,modelAlpha:1}),xD.set(this,SD),this.modelScene.setModels(SD,{forceReplaceImmediately:!0}),this.renderer&&this.modelScene.update(this.renderer,this.camera),this.needsRender=!0,this.currentMode=`Panorama`,this.pano={workCode:``,panoIndex:0},this.camera.setFromPose({distance:0,fov:pD,longitude:0,latitude:0,offset:new l.Vector3(0,0,0)}),this.state={mode:this.currentMode,workCode:this.pano.workCode,panoIndex:this.pano.panoIndex,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance},this.camera.needsRender=!1,this.needsRender=!1,e()})}changeMode(t,n={},r,i=!0,a=!1){return new Promise((o,s)=>{var c,l,u,d;if(!this.renderer)throw Error(`renderer is not initialized.`);n=Object.assign({},n);let f=0;this.controller&&(f=typeof r==`number`?r:(c=r==null?void 0:r.duration)==null?this.modeChangeDuration:c);let p=`fly`;this.controller&&typeof r==`object`&&r.effect&&(p=r.effect);let m=typeof n.panoIndex==`number`?{workCode:(d=(l=n.workCode)==null?(u=this.work)==null?void 0:u.workCode:l)==null?``:d,panoIndex:n.panoIndex}:this.pano;if(!e.Mode.hasOwnProperty(t)){let e=Error(`mode "${t}" is not existed`);this.throwError(e),s(e);return}if((t===e.Mode.Panorama||t===e.Mode.VRPanorama||t===e.Mode.XRPanorama)&&!this.works.getObserver(m)){let e=Error(`PanoId ${gb(m)} not existed.`);this.throwError(e),s(e);return}(t===e.Mode.Floorplan||t===e.Mode.Topview||t===e.Mode.Mapview||t===e.Mode.Model)&&this.modelScene.empty&&(f=0);let h=this.controller,g=this.currentMode,_=()=>{if(this.controller&&this.controller.stopMomentumMovement(),this.controller&&a===!1&&g===t)t===e.Mode.Panorama||t===e.Mode.Model||t===e.Mode.VRPanorama||t===e.Mode.XRPanorama?!vb(this.pano,m)&&`moveToPano`in this.controller&&typeof this.controller.moveToPano==`function`?this.controller.moveToPano(m,Object.assign({duration:f},n),i):this.controller.updateCamera(n,f,i).catch(K):(vb(this.pano,m)||(this.pano=m),this.controller.updateCamera(n,f,i).catch(K));else{let e=Object.assign(Object.assign({},n),m),r=Object.assign(Object.assign({initial:{state:e,currentState:this.getCurrentState(),duration:f,effect:p,userAction:i}},this.commonParams()),this.controllerInits[t]),a=nD[t].initAnimationEndState(r),o=$(`mode.change.request`,{prevMode:this.currentMode,mode:t,state:a,userAction:i});if(this.emit(`mode.change.request`,o),!o.defaultPrevented){h&&h.destroy(),this.controller=this.applyController(t,r);let e=$(`mode.change`,{prevMode:this.currentMode,mode:t,state:a,userAction:i});this.emit(`mode.change`,e)}}o()},v=iu.shared.getContext();if(v&&(typeof XRSession<`u`&&v instanceof XRSession&&v.end(),iu.shared.setContext(null)),t===e.Mode.VRPanorama)this.requestFullscreen(),uD().then(()=>_()).catch(e=>{let t=e instanceof Error?e:Error(String(e));this.exitFullscreen(),this.throwError(t),s(t)});else if(t===e.Mode.XRPanorama){if(!CE.isBackendXRCapable(this.renderer)){let e=Error(`XRPanorama 需要 WebGL2 回落后端。请在 new Five() 时传入 { forceWebGL: true }。后端在运行时无法切换,设备检测必须发生在 new Five() 之前。`);this.throwError(e),s(e);return}if(!CE.isBrowserXRCapable()){let e=Error(`当前浏览器不支持 WebXR(navigator.xr 不存在)。`);this.throwError(e),s(e);return}dD().then(e=>{iu.shared.setContext(e),a=!0;try{_()}catch(t){console.error(`[XR] changeMode 建立 XRPanorama controller 失败,结束 session: ${t instanceof Error?t.message:String(t)}`),Promise.resolve(e.end()).catch(()=>{}),iu.shared.setContext(null);let n=t instanceof Error?t:Error(String(t));this.throwError(n),s(n)}}).catch(e=>{let t=e instanceof Error?e:Error(String(e));this.throwError(t),s(t)})}else _()})}getPixels(e,t,n,r,i,a,o){return Wr(this,void 0,void 0,function*(){if(!this.renderer)throw Error(`renderer is not initialized.`);let s=G(),c=this.renderer.getPixelRatio(),u=this.renderer.getRenderTarget(),d=this.getSize(new l.Vector2),f=0,p=0,m=1,h=1,g,_,v,y,b;typeof e==`number`?(f=e,typeof t==`number`&&(p=t),typeof n==`number`&&(m=n),typeof r==`number`&&(h=r),g=i,_=a,b=o):(f=e.x,p=e.y,m=e.width,h=e.height,g=e.pixelRatio,_=e.flipY,v=e.helperVisible,y=e.skipPanorama,b=e.buffer),f=Math.floor(f),p=Math.floor(p),m=Math.floor(m),h=Math.floor(h),g=Math.floor(g==null?c:g),_=_==null?!1:_;let x=this.helperVisible,S=this.modelScene.parameter.modelAlpha;this.helperVisible=v==null?this.helperVisible:v,y&&(this.controller instanceof nD.Panorama||this.controller instanceof nD.VRPanorama||this.controller instanceof nD.XRPanorama)&&y===!0&&this.modelScene.parameter.set(`modelAlpha`,1),this.modelScene.update(this.renderer,this.camera);let C=this.getPixelsRenderTarget;C.setSize(m*g,h*g),this.renderer.setRenderTarget(C),this.camera.pixelRatio=g,this.camera.resolution.set(m,h),this.camera.setViewOffset(d.width,d.height,f,d.height-p-h,m,h),this.camera.aspect=d.width/d.height,this.camera.updateTime(s),this.scene.update(this.renderer,this.camera);let w=this.renderer.autoClear,T=this.renderer.autoClearColor,E=this.renderer.autoClearDepth,D=this.renderer.autoClearStencil,O=this.renderer.getClearColor(yD),k=this.renderer.getClearAlpha(),A=this.renderer.getScissorTest();this.renderer.autoClear=!0,this.renderer.autoClearColor=!0,this.renderer.autoClearDepth=!0,this.renderer.autoClearStencil=!0,this.renderer.setScissorTest(!1);let j=this.scene.background;this.scene.background=this.camera.isOrthographicCamera||this.backgroundAlpha<1?null:j,this.renderer.render(this.scene,this.camera),this.scene.background=j,this.renderer.autoClear=w,this.renderer.autoClearColor=T,this.renderer.autoClearDepth=E,this.renderer.autoClearStencil=D,this.renderer.setClearColor(O,k),this.renderer.setScissorTest(A),this.helperVisible=x,S===void 0?this.modelScene.parameter.reset(`modelAlpha`):this.modelScene.parameter.set(`modelAlpha`,S),this.renderer.setRenderTarget(u),this.camera.clearViewOffset(),this.camera.pixelRatio=c,this.camera.resolution.copy(d),this.camera.aspect=this.camera.resolution.width/this.camera.resolution.height,this.camera.updateTime(s),this.modelScene.update(this.renderer,this.camera),this.scene.update(this.renderer,this.camera);let M=m*g,N=h*g,ee=M*N,P=ee*4;if(b){if(b.length!==P)throw Error(`buffer length is not equals pixels ${P}`)}else b=new Uint8Array(P);let te=yield this.renderer.readRenderTargetPixelsAsync(C,0,0,M,N),ne=M*4;if(te.length===P)b.set(te);else{let e=Math.ceil(ne/256)*256;for(let t=0;t<N;t++){let n=t*e;b.set(te.subarray(n,n+ne),t*ne)}}if(!_){let e=ee/2;for(let t=0,n=0,r=0,i=0;n<e;n++)for(i=(N-Math.floor(n/M)-1)*M+n%M,r=0;r<4;r++)t=b[n*4+r],b[n*4+r]=b[i*4+r],b[i*4+r]=t}return b})}getElement(){var e;return(e=this.renderer)==null?void 0:e.domElement}render(e){let t=this.renderer;if(!t)return;let n=t.getRenderTarget();t.setRenderTarget(null);let r=t.autoClear,i=t.autoClearColor,a=t.autoClearDepth,o=t.autoClearStencil,s=t.getClearColor(yD),c=t.getClearAlpha(),l=t.getViewport(_D),u=t.getScissor(vD),d=t.getScissorTest();t.autoClear=!0,t.autoClearColor=!0,t.autoClearDepth=!0,t.autoClearStencil=!0;let f=t.getSize(bD),p=Math.floor(f.x*this.viewport.left),m=Math.floor(f.y*this.viewport.bottom),h=Math.floor(f.x*this.viewport.width),g=Math.floor(f.y*this.viewport.height);t.setClearColor(this.backgroundColor,this.backgroundAlpha),t.setViewport(p,m,h,g),t.setScissor(p,m,h,g);let _=this.viewport.bottom!==0||this.viewport.left!==0||this.viewport.width!==1||this.viewport.height!==1;t.setScissorTest(_);let v=this.scene.background;this.scene.background=this.camera.isOrthographicCamera||this.backgroundAlpha<1?null:v;let y=!0;this.controller&&this.controller.render()&&(y=!1),y&&this.fiveRenderer.render(t,this.scene,this.modelScene,this.camera,this.needsRender),this.scene.background=v,t.autoClear=r,t.autoClearColor=i,t.autoClearDepth=a,t.autoClearStencil=o,t.setClearColor(s,c),t.setViewport(l),t.setScissor(u),t.setScissorTest(d),t.setRenderTarget(n),e&&iu.shared.add(e,!0)}updateTime(e,t,...n){if(this.currentUpdateArgs={time:e,args:n},this.destroyed)return;if(this.renderer&&mf.detectSupport(this.renderer),this.syncingState=this.syncState(e,t),this.controller&&this.controller.updateTime(e,t,...n),this.renderer&&(this.camera.pixelRatio=this.renderer.getPixelRatio(),this.getSize(this.camera.resolution),this.camera.aspect=this.camera.resolution.width/this.camera.resolution.height),this.camera.controllerMode=this.currentMode,this.camera.updateTime(e),this.renderer){let e=this.modelScene.loaded,t=this.modelScene.refined;this.modelScene.update(this.renderer,this.camera),e===!1&&this.modelScene.loaded===!0&&(this.controller&&this.controller.updateModel(this.modelScene),iu.shared.add(()=>{this.emit(`models.load`,$(`models.load`,{modelScene:this.modelScene}))},!0,0,10)),t===!1&&this.modelScene.refined===!0&&iu.shared.add(()=>{this.emit(`models.refined`,$(`models.refined`,{modelScene:this.modelScene}))},!0,0,10)}if(this.camera.autoNearFar){gD.makeEmpty(),gD.expandByObject(this.modelScene.boundingMesh);let t=gD.getBoundingSphere(hD),n=t.radius*2;t.containsPoint(this.camera.position)||(n=this.camera.position.distanceTo(t.center)+t.radius);let r=H(n/500,.001,.1),i=H(n,800);this.camera.near!==r&&(this.camera.near=r),this.camera.far!==i&&(this.camera.far=i),this.camera.updateTime(e)}if(this.renderer){let e=this.modelScene.visible;this.modelScene.visible=!1,this.scene.update(this.renderer,this.camera),this.modelScene.visible=e}if(this.syncingState=!1,this.controller&&this.controller.needsRender===!0&&(this.controller.needsRender=!1,this.needsRender=!0),this.camera.needsRender===!0&&(this.camera.needsRender=!1,this.needsRender=!0),this.modelScene.needsRender===!0&&(this.modelScene.needsRender=!1,this.needsRender=!0),this.scene.needsRender===!0&&(this.scene.needsRender=!1,this.needsRender=!0),this.pbmGaussianSplattingRenderMesh&&this.pbmGaussianSplattingRenderMesh.needsRender===!0&&(this.pbmGaussianSplattingRenderMesh.needsRender=!1,this.needsRender=!0),this.onlyRenderIfNeeds!==!0&&(this.needsRender=!0),this.paused===!0||this.renderer instanceof NS&&!this.renderer.isInitialized)return;let r=$(`render.prepare`,{needsRender:this.needsRender});this.emit(`render.prepare`,r),r.defaultPrevented&&(this.needsRender=!1);let i=this.needsRender;this.render(),this.needsRender=!1,this.emit(`render`,$(`render`,{needsRender:i})),this.hasListener(`fps`)&&(this.fps.testTime&&e-this.fps.testTime<1e3?this.fps.testCount++:(this.emit(`fps`,this.fps.testCount),this.fps.testTime=e,this.fps.testCount=0))}pause(){this.paused=!0,this.renderer&&this.renderer instanceof NS&&this.renderer.clear(!0,!0,!0)}play(){this.needsRender=!0,this.paused=!1}moveToPano(t,n={},r=!0){let{controller:i,renderer:a}=this;if(!i)return this.throwError(Error(`controller is not initialized.`)),Promise.resolve();if(!a)return this.throwError(Error(`renderer is not initialized.`)),Promise.resolve();typeof t==`number`&&this.pano.workCode&&(t={workCode:this.pano.workCode,panoIndex:t});let o=this.works.getObserver(t);if(!o)return this.throwError(Error(`pano ${JSON.stringify(t)} not existed.`)),Promise.resolve();let s={workCode:o.work.workCode,panoIndex:o.panoIndex};return`moveToPano`in i&&typeof i.moveToPano==`function`?i.moveToPano(s,n,r):o&&(this.pano=s,this.once(`initAnimation.start`,e=>{n.moveStartCallback&&n.moveStartCallback(e.state)}),this.once(`initAnimation.end`,e=>{n.moveEndCallback&&n.moveEndCallback(e.state)}),this.changeMode(e.Mode.Panorama,n,{effect:n.effect},r)),this.ready()}preloadPano(e,t=K){let n=this.works.getObserver(e);if(!n)return Promise.reject(Error(`Pano ${JSON.stringify(e)} never found`));let r=[`right`,`left`,`up`,`down`,`front`,`back`],i=G();return Promise.all(r.map(e=>{let t=gb({panoIndex:n.panoIndex,workCode:n.work.workCode}),r=Object.assign({key:`pano.${t}.${e}`},hl(this.imageOptions,[`size`,`format`,`quality`,`forceUseExifOrientation`,`mappings`])),i=n.work.getURL(n.images[e]),a=this.imageOptions.transform?this.imageOptions.transform(i,r):ql(i,r);return vy(this.fiveId,n.work).preload(a)})).then(()=>{let e=G()-i;return t(e),e})}project2d(e,t=!1){if(!this.renderer)return null;if(t){let t=this.camera.position,n=e.clone().sub(t),r=new l.Raycaster(t,n.clone().normalize());r.params.Points={threshold:.1};let[i]=this.modelScene.intersectRaycaster(r);if(i&&i.distance+.01<n.length())return null}let n=e.clone().project(this.camera);if(Math.abs(n.z)>1)return null;let r=this.renderer.getSize(new l.Vector2),i=r.x*this.viewport.width,a=r.y*this.viewport.height,o=r.x*this.viewport.left+(n.x+1)/2*i,s=r.y*(1-this.viewport.bottom-this.viewport.height)+(-n.y+1)/2*a;return new l.Vector2(o,s)}getCurrentState(){return Object.assign(Object.assign({},this.camera.copyPose()),{mode:this.currentMode,workCode:this.pano.workCode,panoIndex:this.pano.panoIndex})}setState(e,t=!1,n=!0){var r,i,a,o,s,c,u,d,f,p;e=hl(e,[`mode`,`workCode`,`panoIndex`,`longitude`,`latitude`,`fov`,`offset`,`distance`]),e.offset&&!(e instanceof l.Vector3)&&(e.offset=new l.Vector3(e.offset.x,e.offset.y,e.offset.z));let m;if(typeof e.panoIndex==`number`)if(e.workCode)m={workCode:e.workCode,panoIndex:e.panoIndex};else{let t=(i=(r=this.work)==null?void 0:r.workCode)==null?``:i,n=this.state.workCode;this.works.filter(e=>e.workCode===n).length>0&&(t=n),m={workCode:t,panoIndex:e.panoIndex}}let h=(a=e.mode)==null?this.state.mode:a,g,_,v,y,b;if(this.controller&&this.controller.stopMomentumMovement(),this.state.mode!==h){if(h===`VRPanorama`){this.changeMode(`VRPanorama`,void 0,void 0,!0);return}if(h===`XRPanorama`){this.changeMode(`XRPanorama`,void 0,void 0,!0);return}let t={workCode:m==null?void 0:m.workCode,panoIndex:m==null?void 0:m.panoIndex};typeof e.longitude==`number`&&(t.longitude=e.longitude),typeof e.latitude==`number`&&(t.latitude=e.latitude),typeof e.fov==`number`&&(t.fov=e.fov),typeof e.distance==`number`&&(t.distance=e.distance),e.offset instanceof l.Vector3&&(t.offset=e.offset);let n=Object.assign(Object.assign({initial:{state:t,currentState:this.getCurrentState(),duration:this.modeChangeDuration,effect:`fly`,userAction:!1}},this.commonParams()),this.controllerInits[h]),r=nD[h].initAnimationEndState(n);g=r.longitude,_=r.latitude,v=r.fov,y=r.offset,b=r.distance}else g=(o=e.longitude)==null?this.state.longitude:o,_=(s=e.latitude)==null?this.state.latitude:s,v=(c=e.fov)==null?this.state.fov:c,y=(u=e.offset)==null?this.state.offset:u,b=(d=e.distance)==null?this.state.distance:d;let x={workCode:(m==null?this.pano:m).workCode,panoIndex:(m==null?this.pano:m).panoIndex,mode:h,longitude:g,latitude:_,fov:v,offset:y,distance:b};this.emit(`state.set`,$(`state.set`,{userAction:n,state:x})),yC(this.state,x)||(this.controller&&x.mode===`VRPanorama`&&x.mode!==this.state.mode?(vC(this.state,x),this.changeMode(`VRPanorama`)):this.controller&&x.mode===`XRPanorama`&&x.mode!==this.state.mode?(vC(this.state,x),this.changeMode(`XRPanorama`)):(vC(this.state,x),this.controller&&n&&(this.controller.userAction=!1),t&&this.state.mode===x.mode&&(this.syncingState=this.syncState(G(),0,t),this.syncingState&&((f=this.controller)==null||f.updateTime(G(),0),this.syncingState=!1)),this.emit(`state.change`,$(`state.change`,{userAction:n,state:this.state})),(p=this.analysis)==null||p.state(this.works,this.state)))}syncState(t,n,r=!1){let i=this.stateSynced;if(this.stateSynced=!1,!this.controller)return!1;if(this.state.mode!==this.currentMode){let e={mode:this.state.mode,workCode:this.state.workCode,panoIndex:this.state.panoIndex,longitude:this.state.longitude,latitude:this.state.latitude,fov:this.state.fov,offset:this.state.offset,distance:this.state.distance};return this.changeMode(this.state.mode,e,this.modeChangeDuration,this.controller.userAction),!0}if(!this.controller.isReady())return!1;if(this.controller instanceof nD.Model){if(pC(this.camera.pose.offset,this.state.offset)){let e={longitude:this.state.longitude,latitude:this.state.latitude,fov:this.state.fov,offset:this.state.offset};return this.controller.moveToPosition(this.state.offset,Object.assign(Object.assign({},e),{duration:r?0:void 0}),!1),!0}}else{let e={workCode:this.state.workCode,panoIndex:this.state.panoIndex};if(!vb(e,this.pano)&&`moveToPano`in this.controller&&typeof this.controller.moveToPano==`function`){let t={longitude:this.state.longitude,latitude:this.state.latitude,fov:this.state.fov,offset:this.state.offset,distance:this.state.distance};return this.controller.moveToPano(e,t,!1),!0}}if(this.controller instanceof nD.Floorplan||this.controller instanceof nD.Topview||this.controller instanceof nD.Mapview){let e=.2,t=Math.PI/45,n=r?this.state.fov:Px(this.camera.pose.fov,this.state.fov,1),i=Math.abs(this.camera.pose.distance-this.state.distance),a=i>e*15?i/15:.2,o=r?this.state.distance:Px(this.camera.pose.distance,this.state.distance,a),s=this.camera.pose.offset.distanceTo(this.state.offset),c=s>e*15?s/15:e,u=r?new l.Vector3().copy(this.state.offset):Fx(this.camera.pose.offset,this.state.offset,c),{longitude:d,latitude:f}=r?{longitude:this.state.longitude,latitude:this.state.latitude}:Ix({longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude},{longitude:this.state.longitude,latitude:this.state.latitude},t);if(dC(n,this.camera.pose.fov)||pC(u,this.camera.pose.offset)||dC(o,this.camera.pose.distance)||dC(d,this.camera.pose.longitude,Math.PI*2)||dC(f,this.camera.pose.latitude)){let e={x:u.x,y:u.y,z:u.z},t={fov:n};return Object.assign(e,{distance:o}),Object.assign(t,{longitude:d,latitude:f}),this.controller.stopMomentumMovement(),this.controller.cameraMotion.set(t,0).catch(K),this.controller.locationMotion.set(e,0).catch(K),!0}}else{let e=Math.PI/45,t=r?this.state.fov:Px(this.camera.pose.fov,this.state.fov,1),{longitude:n,latitude:i}=r?{longitude:this.state.longitude,latitude:this.state.latitude}:Ix({longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude},{longitude:this.state.longitude,latitude:this.state.latitude},e),a=this.state.distance,o=new l.Vector3().copy(this.state.offset);if(dC(a,this.camera.pose.distance)&&(this.state.distance=this.camera.pose.distance),pC(o,this.camera.pose.offset)&&(this.state.offset=this.camera.pose.offset.clone()),dC(n,this.camera.pose.longitude,Math.PI*2)||dC(i,this.camera.pose.latitude)||dC(t,this.camera.pose.fov))return this.controller.stopMomentumMovement(),this.controller.cameraMotion.set({longitude:n,latitude:i,fov:t},0).catch(K),!0}if(this.stateSynced=!0,i===!1&&this.emit(`state.synced`,$(`state.synced`,{userAction:!1,state:this.state})),this.readyCallbacks.length&&this.stateSynced){let t=this.currentMode;if(!(t===e.Mode.Floorplan||t===e.Mode.Topview||t===e.Mode.Mapview||t===e.Mode.Model)||this.modelScene.loaded){let e=this.readyCallbacks.slice();this.readyCallbacks.length=0;for(let t of e)this.controller instanceof nD.Panorama&&t.tile===!0?this.readyCallbacks.push(t):t()}}return!1}ready(e={}){return new Promise(t=>{var n;this.readyCallbacks.push(Object.assign(t,{tile:(n=e.tile)==null?!1:n}))}).then(()=>this.model.initReady).then(K)}requestFullscreen(){var e;if(!_S)return;let t=(e=this.getElement())==null?void 0:e.parentNode;t&&`requestFullscreen`in t&&typeof document<`u`&&document.fullscreenElement===null&&t.requestFullscreen()}exitFullscreen(){typeof document<`u`&&document.fullscreenElement&&`exitFullscreen`in document&&document.exitFullscreen()}throwError(e){this.hasListener(`error`)?this.emit(`error`,e):console.error(e)}bindModel(e){let t=()=>{iu.shared.add(()=>{this.emit(`model.load`,$(`model.load`,{work:e.work,model:e,error:null}))},!0)},n=t=>{let{error:n}=t;this.emit(`model.error`,$(`model.error`,{work:e.work,model:e,error:n})),this.throwError(n)},r=()=>{this.emit(`model.changeShownFloor`,$(`model.changeShownFloor`,{work:e.work,model:e,error:null}))},i=t=>{this.emit(`models.tileLoad`,$(`models.tileLoad`,{work:e.work,model:e,tile:t.tile}))},a=t=>{this.emit(`models.tileUnload`,$(`models.tileUnload`,{work:e.work,model:e,tile:t.tile}))},o=()=>{e.removeEventListener(`load`,t),e.removeEventListener(`error`,n),e.removeEventListener(`changeShownFloor`,r),e.removeEventListener(`tileLoad`,i),e.removeEventListener(`tileUnload`,a),e.removeEventListener(`dispose`,o)};e.addEventListener(`load`,t),e.addEventListener(`error`,n),e.addEventListener(`changeShownFloor`,r),e.addEventListener(`tileLoad`,i),e.addEventListener(`tileUnload`,a),e.addEventListener(`dispose`,o),this.emit(`model.request`,$(`model.request`,{work:e.work,model:e,error:null}))}bindWorkFetcher(e){let t=this,n=e.workCode,r=e.allowHosts,i=new pl({get networkSubscribe(){return t.networkSubscribe},requestProxy(e){return Promise.resolve(e).then(e=>t.requestProxy(e,n)).then(e=>{let t=Vb(e,r);return t instanceof Error?Promise.reject(t):t})}});yy(this.fiveId,e,i)}commonParams(){return{fiveId:this.fiveId,scene:this.scene,xrCustomObjectsScene:this.xrCustomObjectsScene,helper:this.helperGroup,camera:this.camera,renderer:this.renderer,viewport:this.viewport,element:this.getElement(),works:this.works,imageOptions:this.imageOptions,enableWheel:this.enableWheel,enableHDR:this.enableHDR,extraElements:this.extraElements,videoTexture:this.videoTexture,modelScene:this.modelScene}}applyController(t,n){if(!this.renderer)throw Error(`renderer is not initialized.`);let r=nD[t];this.currentMode=t;let i=new r(n);for(let e of iD)i.on(e,(...t)=>{if(this.emit(e,...t))return!1});{let e=nD[t].initAnimationEndState(n),r=n.initial.userAction;yC(this.state,e)||(vC(this.state,e),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state}))),this.emit(`currentState.change`,$(`currentState.change`,{userAction:r,state:this.getCurrentState()}))}return i.on(`camera.update`,e=>{var t;if(this.controller){let n=this.controller.getTargetState();e.userAction&&this.syncingState===!1&&this.state.mode===n.mode&&!yC(this.state,n)&&(vC(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:e.userAction,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}this.emit(`currentState.change`,$(`currentState.change`,{userAction:e.userAction,state:this.getCurrentState()}))}),i.on(`initAnimation.start`,e=>{var t;let{state:n,userAction:r}=e;r&&this.state.mode===n.mode&&!yC(this.state,n)&&(vC(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`initAnimation.end`,e=>{var t;let{state:n,userAction:r}=e;this.pano={workCode:n.workCode,panoIndex:n.panoIndex},r&&this.state.mode===n.mode&&!yC(this.state,n)&&(vC(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.moveTo`,e=>{var t;let{state:n,userAction:r}=e;this.pano={workCode:n.workCode,panoIndex:n.panoIndex},r&&this.state.mode===n.mode&&!yC(this.state,n)&&(vC(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.arrived`,e=>{var t;let{state:n,userAction:r}=e;this.pano={workCode:n.workCode,panoIndex:n.panoIndex},r&&this.state.mode===n.mode&&!yC(this.state,n)&&(vC(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.cancel`,e=>{var t;let{state:n,userAction:r}=e;r&&this.state.mode===n.mode&&!yC(this.state,n)&&(vC(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.moveTo`,e=>{let{userAction:t}=e;this.emit(`currentState.change`,$(`currentState.change`,{userAction:t,state:this.getCurrentState()}))}),i.on(`pano.request`,e=>{this.emit(`pano.request`,e),e.defaultPrevented||this.moveToPano(e.state,e.options,e.userAction)}),i.on(`vr.requestExit`,()=>{this.currentMode===e.Mode.VRPanorama&&(this.exitFullscreen(),this.changeMode(e.Mode.Panorama))}),i.on(`error`,e=>this.throwError(e)),i}removeEventListeners(){}get internalLightsEnabled(){let e=this.scene.children.find(e=>e.name===`internalLights`);return e?e.visible:!1}set internalLightsEnabled(e){let t=this.scene.children.find(e=>e.name===`internalLights`);t&&(t.visible=e),t=this.modelScene.children.find(e=>e.name===`internalLights`),t&&(t.visible=e)}get scissor(){return this.viewport}setScissor(e){return this.setViewport(e)}getPose(){let{longitude:e,latitude:t,fov:n,offset:r,distance:i}=this.camera.copyPose();return{longitude:e,latitude:t,fov:n,offset:r.clone(),distance:i}}getLongitudeAndLatitude(){let{longitude:e,latitude:t}=this.getPose();return{longitude:e,latitude:t}}getOffset(){return this.getPose().offset}getCameraLocal(){if(this.pano.workCode&&this.controller&&this.works){let e=this.works.getObserver(this.pano);if(e){let t=new l.Object3D;t.matrix.copy(e.matrix).premultiply(e.work.transform),t.matrix.decompose(t.position,t.quaternion,t.scale),t.matrixAutoUpdate=!1;let n=new l.Vector3(0,0,-1);n.applyQuaternion(this.camera.quaternion);let r=t.quaternion.clone().invert();return n.applyQuaternion(r),{theta:Math.atan2(n.x,-n.z),phi:-Math.asin(n.y),lookAtVector:n}}}return null}addPass(e){this.fiveRenderer.composer.addPass(e)}removePass(e){let t=this.fiveRenderer.composer.passes.indexOf(e);t!==-1&&this.fiveRenderer.composer.passes.splice(t,1)}insertPass(e,t){this.fiveRenderer.composer.insertPass(e,t)}get renderMode(){return this.fiveRenderer.renderMode}set renderMode(e){this.fiveRenderer.renderMode=e}get enableEDL(){return this.eyeDomeLightingPass.enabled}set enableEDL(e){this.eyeDomeLightingPass.enabled=e,this.needsRender=!0}get enableAdaptiveLuminance(){return this.adaptiveLuminancePass.enabled}set enableAdaptiveLuminance(e){this.adaptiveLuminancePass.enabled=e,this.needsRender=!0}};wD.Mode={Panorama:`Panorama`,Model:`Model`,Floorplan:`Floorplan`,Topview:`Topview`,Mapview:`Mapview`,VRPanorama:`VRPanorama`,XRPanorama:`XRPanorama`},typeof window<`u`&&Object.assign(window,{__FIVE_DEBUG__:{THREE:l,constructor:wD,instances:CD}});var TD=class{static createButton(e){let t=document.createElement(`button`),n=`ENTER VR`,r=`calc(50% - 50px)`,i=`100px`,a;function o(){t.style.display=``,t.style.cursor=`pointer`,t.style.left=r,t.style.width=i,t.textContent=n,t.onmouseenter=function(){t.style.opacity=`1.0`},t.onmouseleave=function(){t.style.opacity=`0.5`},t.onclick=function(){if(!e)return;let t;try{t=e()}catch(e){s(e);return}t&&typeof t.then==`function`&&t.then(void 0,s)}}function s(e){let o=e instanceof Error?e.message:String(e);/forceWebGL/.test(o)&&(a&&clearTimeout(a),t.textContent=`需降级到 WebGL2`,t.style.left=`calc(50% - 75px)`,t.style.width=`150px`,a=setTimeout(function(){a=void 0,t.textContent=n,t.style.left=r,t.style.width=i},3e3))}function c(){t.style.display=``,t.style.cursor=`auto`,t.style.left=`calc(50% - 75px)`,t.style.width=`150px`,t.onmouseenter=null,t.onmouseleave=null,t.onclick=null}function l(){c(),t.textContent=`VR NOT SUPPORTED`}function u(e){e.style.position=`absolute`,e.style.bottom=`20px`,e.style.padding=`12px 6px`,e.style.border=`1px solid #fff`,e.style.borderRadius=`4px`,e.style.background=`rgba(0,0,0,0.1)`,e.style.color=`#fff`,e.style.font=`normal 13px sans-serif`,e.style.textAlign=`center`,e.style.opacity=`0.5`,e.style.outline=`none`,e.style.zIndex=`999`}if(`xr`in navigator)return t.id=`VRButton`,t.style.display=`none`,u(t),navigator.xr.isSessionSupported(`immersive-vr`).then(function(e){e?o():l()}),t;{let e=document.createElement(`a`);return window.isSecureContext===!1?(e.href=document.location.href.replace(/^http:/,`https:`),e.innerHTML=`WEBXR NEEDS HTTPS`):(e.href=`https://immersiveweb.dev/`,e.innerHTML=`WEBXR NOT AVAILABLE`),e.style.left=`calc(50% - 90px)`,e.style.width=`180px`,e.style.textDecoration=`none`,u(e),e}}};exports.AdaptiveLuminancePass=qx,exports.AnimationFrameLoop=iu,exports.BoundingMesh=Ky,exports.Camera=Aa,exports.EffectComposer=lx,exports.EyeDomeLightingPass=Yx,exports.Fetcher=pl,exports.Five=wD,exports.FivePass=dx,exports.FiveRenderer=pS,exports.FlowingFireworks3DPass=aS,exports.FlowingLight2DPass=$x,exports.FlowingLight3DPass=Zx,exports.FullScreenQuad=ux,exports.GSPLAT_PIPELINE_AUTO=bi,exports.GSPLAT_PIPELINE_RASTER_CPU_SORT=xi,exports.GSPLAT_PIPELINE_RASTER_GPU_SORT=Si,exports.GaussianBlurPass=Xx,exports.Histogram=jx,exports.InternalWebGPURenderer=NS,exports.Model=Ly,exports.ModelScene=Jy,exports.Motion=J,exports.NetworkSubscribe=cl,exports.PBMCustomNode=qt,exports.PBMGSObject=Mt,exports.PBMGaussianSplattingObject=Mt,exports.PBMGaussianSplattingNodeMaterial=gr,exports.PBMGaussianSplattingRenderMesh=Oi,exports.PBMGroup=wt,exports.PBMMesh=kt,exports.PBMMeshBasicMaterial=ki,exports.PBMMeshBasicNodeMaterial=Vc,exports.PBMMeshPanoOnlyMaterial=Ai,exports.PBMMeshPanoOnlyNodeMaterial=qc,exports.PBMMeshPhongMaterial=ji,exports.PBMMeshPhongNodeMaterial=Uc,exports.PBMMeshPhysicalMaterial=Mi,exports.PBMMeshPhysicalNodeMaterial=Gc,exports.PBMPanoFilter=Yt,exports.PBMPointCloud=pn,exports.PBMPointCloudMaterial=sn,exports.PBMSkinnedMesh=At,exports.PBMUpdateable=Kt,exports.PBMVertexMarkFlag=Gt,exports.PROXY_CONTROLLER_EVENT_NAMES=iD,exports.PanoCircleMesh=qS,exports.PanoCircleMeshCustom=lC,exports.PanoCircleMeshSolid=tC,exports.Parameter=X,exports.Scene=zS,exports.Subscribe=Bt,exports.TextureLoader=gu,exports.Tile=em,exports.Tile3D=gy,exports.Tile3DModel=gy,exports.TileCache=Rh,exports.TileNode=Dh,exports.TileRequestScheduler=Fh,exports.Tileset=Wh,exports.Trajectory=jh,exports.TrajectoryNode=Mh,exports.Work=rx,exports.WorkResolvedObserver=ox,exports.XRButton=TD,exports.controllersDefaultInitArgs=rD,exports.coordinatesToVector=_a,exports.createDebugBoundingMesh=Yp,exports.createWorks=sx,exports.customNodesCacheKey=Jt,exports.defaultImageURLTransform=ql,exports.draco=of,exports.getViewportScale=lD,exports.headingToLongitude=ba,exports.imageSupport=Al,exports.isBoundingVolume=Wp,exports.isPanoId=yb,exports.loadAt3d=rd,exports.loadDome=sd,exports.loadDomez=md,exports.loadGltf=Cp,exports.loadPbm=Fu,exports.loadPly=vd,exports.longitudeToHeading=ya,exports.makeBoundingVolume=Gp,exports.panoEqual=vb,exports.panoParse=_b,exports.panoStringify=gb,exports.parseWork=ix,exports.registerPBMMaterials=Xc,exports.vectorToCoordinates=va,exports.workToJson=$y;
|