@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/umd/five.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
|
|
@@ -1299,7 +1299,7 @@ Error work input:
|
|
|
1299
1299
|
--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\\}-
|
|
1300
1300
|
--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\\}-
|
|
1301
1301
|
--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-
|
|
1302
|
-
----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`),V8=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 H8(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}q();function U8(e){return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}var W8=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 j,this.tmpVec3b=new j,this.tmpVec3c=new j,this.tmpVec3d=new j,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:z8}),o=t.createShaderModule({code:V8}),s=t.createShaderModule({code:B8});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=U8(n[t]/255),i=U8(n[t+1]/255),a=U8(n[t+2]/255);this.packedColorScratch[e]=H8(r,i,a)}else for(let e=0;e<r;e++){let t=e*3;this.packedColorScratch[e]=H8(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(oV(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 oV(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}};W8.FRAME_UNIFORM_SIZE=512,W8.TILE_UNIFORM_SIZE=256,W8.OFFSET_VIEW_PROJ=0,W8.OFFSET_SCREEN_WIDTH=64,W8.OFFSET_SCREEN_HEIGHT=68,W8.OFFSET_POINT_SIZE_MODE=76,W8.OFFSET_POINT_ATTEN_PACK=80,W8.OFFSET_VIEW_Z_ROW=96,W8.OFFSET_POINT_SCALE=112,W8.OFFSET_POINT_MIN_PIXEL=116,W8.OFFSET_POINT_MAX_PIXEL=120,W8.OFFSET_PIXEL_RATIO=124,W8.OFFSET_RESOLUTION_Y=128,W8.OFFSET_POINT_PIXEL_HARD_MAX=132,W8.OFFSET_POINT_SHAPE=136,W8.OFFSET_CAMERA_WORLD=144,W8.OFFSET_CAMERA_FORWARD=160,W8.OFFSET_CONSTANT_COLOR=176,W8.OFFSET_COLOR_GAIN=192,W8.OFFSET_STYLE_PACK=208,W8.OFFSET_FLOOR_PACK=224,W8.OFFSET_CLIP0_INV=240,W8.OFFSET_CLIP0_META=304,W8.OFFSET_CLIP1_INV=320,W8.OFFSET_CLIP1_META=384,W8.OFFSET_TILE_MODEL=0,W8.OFFSET_TILE_BBOX_MIN=64,W8.OFFSET_TILE_BBOX_MAX=80,W8.OFFSET_TILE_PACK=96,q();var G8=new M,K8=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?ri:t,this.composer=new V6(e),this.composerVersion=``,this.renderMode=`default`,this.sceneRenders={default:new R8}}render(e,t,n,r,i){var a,o;let s=e.domElement,c=s.width,l=s.height;if(c<=0||l<=0)return!1;this.composer.updateStatus();let{endabledPassNumber:u,needsColorGBuffer:d,needsDepthGBuffer:f,version:p}=this.composer.status,m=u>0,h=e.getRenderTarget();if((c!==this.lastWidth||l!==this.lastHeight)&&(this.lastWidth=c,this.lastHeight=l,(a=this.compositeRenderTarget)==null||a.dispose(),this.compositeRenderTarget=new To(c,l,{type:this.outputType}),this.compositeRenderTarget.depthTexture=new Eu(c,l),(o=this.computeRenderer)==null||o.resize(c,l),i=!0),!this.compositeRenderTarget)return e.setRenderTarget(h),!1;!i&&m&&p!==this.composerVersion&&(i=!0),this.composerVersion=p,i&&this.renderSceneToComposite(e,t,n,r);let g=!1;return m?(this.composer.setSize(c,l),this.composer.gbuffer.clear(),d&&this.composer.gbuffer.set(`color`,this.compositeRenderTarget.texture),f&&this.compositeRenderTarget.depthTexture&&this.composer.gbuffer.set(`depth`,this.compositeRenderTarget.depthTexture),e.setRenderTarget(this.composer.readBuffer),n8(e,this.compositeRenderTarget.texture),g=this.composer.render(e)):i&&(e.setRenderTarget(null),n8(e,this.compositeRenderTarget.texture),g=!0),e.setRenderTarget(h),g}renderSceneToComposite(e,t,n,r){if(!this.compositeRenderTarget)return;r.updateMatrixWorld(!0),t.updateMatrixWorld(!0);let i=[];if(t.traverse(e=>{e instanceof lV&&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 W8(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,G8);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}}},q8,J8=typeof navigator<`u`?((q8=navigator==null?void 0:navigator.userAgent)==null?``:q8).toLowerCase():`node`;(()=>{try{let e=document.createElement(`canvas`);return!!(window.WebGLRenderingContext&&(e.getContext(`webgl`)||e.getContext(`experimental-webgl`)))}catch(e){return!1}})();var Y8=typeof navigator<`u`&&navigator.gpu!==void 0;typeof window<`u`&&Y8?navigator.gpu.requestAdapter().then(e=>(e||(Y8=!1),Y8)).catch(()=>(Y8=!1,Y8)):Promise.resolve(Y8),typeof history<`u`&&`pushState`in history&&`replaceState`in history&&`state`in history;var X8=/android/i.test(J8)||/webos/i.test(J8)||/ipad|iphone|ipod/i.test(J8)||/iemobile/i.test(J8)||/opera mini/i.test(J8)||/blackberry/i.test(J8)||/windows phone/i.test(J8),Z8=[`trigger`,`grip`,`primary`,`secondary`,`pinch`],Q8=[`x`,`y`];function $8(e){for(let t of Object.keys(e)){let n=e[t];typeof n==`object`&&n&&!Object.isFrozen(n)&&$8(n)}return Object.freeze(e)}function e5(){return{buttons:{trigger:0,grip:1,primary:4,secondary:5,pinch:null},axes:{x:2,y:3},model:`auto`}}function t5(){return{buttons:{trigger:null,grip:null,primary:null,secondary:null,pinch:null},axes:{x:null,y:null},model:`none`}}var n5=$8({Pico:e5(),Oculus:e5(),Default:e5(),VP:t5()});function r5(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 i5(e){return e===null||typeof e==`number`&&Number.isInteger(e)&&e>=0}function a5(e){return typeof e==`object`&&!!e}function o5(e,t){if(e)try{e(t)}catch(e){}}function s5(e,t,n){var r;let i=(r=n5[e])==null?n5.Default:r,a={buttons:Object.assign({},i.buttons),axes:Object.assign({},i.axes),model:i.model};if(!a5(t))return a;let o=t.buttons;if(o!==void 0)if(a5(o))for(let e of Z8){let t=o[e];t!==void 0&&(i5(t)?a.buttons[e]=t:o5(n,`buttons.${e}`))}else o5(n,`buttons`);let s=t.axes;if(s!==void 0)if(a5(s))for(let e of Q8){let t=s[e];t!==void 0&&(i5(t)?a.axes[e]=t:o5(n,`axes.${e}`))}else o5(n,`axes`);let c=t.model;return c!==void 0&&(c===`auto`||c===`none`?a.model=c:o5(n,`model`)),a}function c5(e){return e===`Default`?`Pico`:e}function l5(){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 u5(e){if(r5()===`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=l5,!0)}q();var d5=1579548,f5=class extends pB{constructor({antialias:e=!1,logarithmicDepthBuffer:t,outputType:n=ri,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&&Y8===!1&&console.warn(`设备不支持开启 WEBGPU`),this.outputColorSpace=Ta,this.setClearColor(d5,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(()=>{u5(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)}}};q();var p5=new M,m5=new Fl,h5=new A,g5=new WeakMap;function _5(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 v5=class extends ps{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 iW?(r=t.time,h5.copy(t.resolution)):(r=eW(),e.getSize(h5)),p5.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),m5.setFromProjectionMatrix(p5),this.traverseVisible(e=>{if(e.setResolution&&e.setResolution(h5.x,h5.y),e.setTime&&e.setTime(r),e.mixer instanceof Ip){let t=e.mixer,n=g5.get(t);n||(n=new B6,g5.set(t,n)),n.update(r),t.update(n.getDelta())}(e instanceof rl||e instanceof su||e instanceof _u)&&(!e.frustumCulled||m5.intersectsObject(e))&&(_5(e)&&(n=!0),e.traverseAncestors(e=>{_5(e)&&(n=!0)}))}),this.needsRender=n,n}};q();var y5=e=>e*(2-e),b5=(()=>{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 pc;return r.setAttribute(`position`,new P(e,3)),r.setAttribute(`uv`,new P(t,2)),r.setIndex(new P(n,1)),r})(),x5=G2(.5,.5),S5=X(.017);function C5(e,t){let n=E2(x5.sub(e));return B2(t,t.add(S5),n)}function w5(e,t){let n=E2(x5.sub(e));return X(1).sub(B2(t.sub(S5),t,n))}function T5(e){let t={baseColor:Z(new N(e)),circleScale:Z(1),ringScale:Z(1),ringOpacity:Z(1),loadingAngle:Z(0),loadingOpacity:Z(0),progress:Z(0),progressOpacity:Z(0),expand0:Z(0),expand1:Z(0),expandOpacity:Z(0),opacity:Z(0),tapScale:Z(1),tapOpacity:Z(1),disable:Z(0)},n=U2(),r=q2(1,1,1,X(.8).add(m2(N2(G2(1,-1)).dot(n.sub(x5))).mul(1.5)).clamp(0,1).mul(t.tapOpacity).mul(C5(n,X(.15).mul(t.circleScale).mul(t.tapScale))).mul(w5(n,X(.234).mul(t.circleScale).mul(t.tapScale)))),i=q2(1,1,1,X(.5).add(m2(N2(G2(1,1)).dot(n.sub(x5)))).clamp(0,1).mul(t.tapOpacity).mul(t.ringOpacity).mul(C5(n,X(.27).mul(t.ringScale).mul(t.tapScale))).mul(w5(n,X(.32).mul(t.ringScale).mul(t.tapScale)))),a=j2(f2.sub(h2(x5.x.sub(n.x),x5.y.sub(n.y))).add(t.loadingAngle),p2),o=q2(1,1,1,X(1).sub(B2(X(0),p2,a)).mul(.4).add(.1).mul(t.tapOpacity).mul(t.loadingOpacity).mul(C5(n,X(.208).mul(t.circleScale).mul(t.tapScale))).mul(w5(n,X(.3).mul(t.circleScale).mul(t.tapScale)))),s=f2.add(h2(x5.x.sub(n.x),x5.y.sub(n.y))),c=q2(1,1,1,X(1).sub(V2(t.progress.mul(p2),s)).mul(.5).mul(t.tapOpacity).mul(t.progressOpacity).mul(C5(n,X(.208).mul(t.circleScale).mul(t.tapScale))).mul(w5(n,X(.3).mul(t.circleScale).mul(t.tapScale)))),l=X(.2).add(X(.23).mul(t.expand0)),u=E2(x5.sub(n)),d=q2(1,1,1,X(1).sub(l.sub(u).div(.2).clamp(0,1)).mul(.8).mul(X(1).sub(m2(t.expand0.sub(.5)).mul(2)).mul(1.2).clamp(0,1)).mul(t.expandOpacity).mul(w5(n,l))),f=X(.2).add(X(.23).mul(t.expand1)),p=E2(x5.sub(n)),m=q2(1,1,1,X(1).sub(f.sub(p).div(.2).clamp(0,1)).mul(.8).mul(X(1).sub(m2(t.expand1.sub(.5)).mul(2)).mul(1.2).clamp(0,1)).mul(t.expandOpacity).mul(w5(n,f))),h=q2(1,1,1,X(.5).mul(w5(n,X(.32).mul(t.circleScale).mul(t.tapScale)))),g=q2(1,1,1,0);g=A2(g,m,m.w),g=A2(g,d,d.w),g=A2(g,c,c.w),g=A2(g,o,o.w),g=A2(g,r,r.w),g=A2(g,i,i.w),g=A2(g,h,t.disable);let _=q2(g.xyz.mul(t.baseColor),g.w.mul(t.opacity).mul(t.opacity)),v=new UE;return v.fragmentNode=_,v.blending=5,v.blendSrc=204,v.blendDst=205,v.blendSrcAlpha=201,v.blendDstAlpha=205,v.depthWrite=!1,v.transparent=!0,{material:v,u:t}}var E5=class extends rs{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 c$({progress:0}),this.ringMotion=new c$({scale:1,opacity:1}),this.tapMotion=new c$({scale:1,opacity:1}),this.loadingOpacityMotion=new c$({opacity:0}),this.progressMotion=new c$({progress:0}),this.progressOpacityMotion=new c$({opacity:0}),this.opacityMotion=new c$({opacity:0}),this.disableMotion=new c$({progress:0});let{material:a,u:o}=T5(r);this.panoU=o,this.panoMesh=new rl(b5,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=eW(),this.needsRender=!0}setProgress(e){this.setDisabled(!1),this.setLoading(!1),this.progress!==e&&(e=J(e,0,1),this.tapMotion.ended&&(this.progress===0&&this.progressOpacityMotion.set({opacity:1},500).catch(Y),e===0?this.progressOpacityMotion.set({opacity:0},500).catch(Y).then(()=>{this.progressMotion.set({progress:0},0).catch(Y)}):this.progressMotion.set({progress:J(e*1.2,0,1)},100).catch(Y)),this.progress=e)}setOpacity(e){this.opacity!==e&&(this.opacity=e=J(e,0,1),this.opacityMotion.set({opacity:e},200).catch(Y))}setCurrent(e){this.current!==e&&(this.currentMotion.set({progress:+!!e},2e3).catch(Y),this.current=e,this.current===!0&&(this.currentStartTime=eW()))}setLoading(e){this.loading!==e&&(this.loading=e,this.disabled===!0&&this.setDisabled(!1),this.loadingOpacityMotion.set({opacity:+!!e},500).catch(Y))}setDisabled(e){this.disabled!==e&&(this.disabled=e,this.loading===!0&&this.setLoading(!1),this.disableMotion.set({progress:+!!e},500).catch(Y))}tap(){return this.tapMotion.ended?(this.progressOpacityMotion.set({opacity:0},0).catch(Y),this.progressMotion.set({progress:0},0).catch(Y),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(Y),this.progressMotion.set({progress:this.progress},120).catch(Y)}).catch(Y)):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=y5(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=y5(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(Y):this.ringMotion.getTargetKeyframe().value.scale!==1&&this.ringMotion.set({scale:1,opacity:1},600).catch(Y),!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()}};q();var D5=e=>e*(2-e),O5=(()=>{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 pc;return r.setAttribute(`position`,new P(e,3)),r.setAttribute(`uv`,new P(t,2)),r.setIndex(new P(n,1)),r})(),k5=G2(.5,.5),A5=X(.017);function j5(e,t){let n=E2(k5.sub(e));return B2(t,t.add(A5),n)}function M5(e,t){let n=E2(k5.sub(e));return X(1).sub(B2(t.sub(A5),t,n))}function N5(e){let t={baseColor:Z(new N(e)),circleScale:Z(1),circleOpacity:Z(1),loadingAngle:Z(0),loadingOpacity:Z(0),progress:Z(0),progressOpacity:Z(0),expand0:Z(0),expand1:Z(0),expandOpacity:Z(0),opacity:Z(0),tapScale:Z(1),tapOpacity:Z(1),disable:Z(0)},n=U2(),r=q2(1,1,1,X(.8).add(m2(N2(G2(1,-1)).dot(n.sub(k5))).mul(1.5)).clamp(0,1).mul(V2(t.progress,X(0))).mul(t.tapOpacity).mul(j5(n,X(.2).mul(t.circleScale).mul(t.tapScale))).mul(M5(n,X(.3).mul(t.circleScale).mul(t.tapScale)))),i=j2(f2.sub(h2(k5.x.sub(n.x),k5.y.sub(n.y))).add(t.loadingAngle),p2),a=q2(1,1,1,X(1).sub(B2(X(0),p2,i)).mul(.9).add(.1).mul(t.tapOpacity).mul(t.loadingOpacity).mul(j5(n,X(.2).mul(t.circleScale).mul(t.tapScale))).mul(M5(n,X(.3).mul(t.circleScale).mul(t.tapScale)))),o=f2.add(h2(k5.x.sub(n.x),k5.y.sub(n.y))),s=X(1).sub(V2(t.progress.mul(p2),o)),c=X(.04),l=t.progress.mul(p2),u=V2(E2(G2(k5.x.add(X(0).sin().mul(.25)),k5.y.add(X(0).cos().mul(.25))).sub(n)),c),d=V2(E2(G2(k5.x.add(l.sin().mul(.25)),k5.y.add(l.cos().mul(.25))).sub(n)),c),f=q2(1,1,1,s.add(u).add(d).clamp(0,1).mul(.9).mul(t.tapOpacity).mul(t.progressOpacity).mul(j5(n,X(.2).mul(t.circleScale).mul(t.tapScale))).mul(M5(n,X(.3).mul(t.circleScale).mul(t.tapScale)))),p=X(.25).add(X(.25).mul(t.expand0)),m=E2(k5.sub(n)),h=q2(1,1,1,X(1).sub(p.sub(m).div(.2).clamp(0,1)).mul(.8).mul(X(1).sub(m2(t.expand0.sub(.5)).mul(2)).mul(1.2).clamp(0,1)).mul(t.expandOpacity).mul(M5(n,p))),g=X(.25).add(X(.23).mul(t.expand1)),_=E2(k5.sub(n)),v=q2(1,1,1,X(1).sub(g.sub(_).div(.2).clamp(0,1)).mul(.8).mul(X(1).sub(m2(t.expand1.sub(.5)).mul(2)).mul(1.2).clamp(0,1)).mul(t.expandOpacity).mul(M5(n,g))),y=q2(1,1,1,X(.5).mul(t.tapOpacity).mul(M5(n,X(.32).mul(t.circleScale).mul(t.tapScale)))),b=q2(1,1,1,0);b=A2(b,v,v.w),b=A2(b,h,h.w),b=A2(b,r,r.w),b=A2(b,f,f.w),b=A2(b,a,a.w),b=A2(b,y,t.disable);let x=q2(b.xyz.mul(t.baseColor),b.w.mul(t.opacity).mul(t.opacity)),S=new UE;return S.fragmentNode=x,S.blending=5,S.blendSrc=204,S.blendDst=205,S.blendSrcAlpha=201,S.blendDstAlpha=205,S.depthWrite=!1,S.transparent=!0,{material:S,u:t}}var P5=class extends rs{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 c$({progress:0}),this.tapMotion=new c$({scale:1,opacity:1}),this.loadingOpacityMotion=new c$({opacity:0}),this.progressMotion=new c$({progress:0}),this.progressOpacityMotion=new c$({opacity:0}),this.opacityMotion=new c$({opacity:0}),this.disableMotion=new c$({progress:0});let{material:a,u:o}=N5(r);this.panoU=o,this.panoMesh=new rl(O5,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=eW(),this.needsRender=!0}setProgress(e){this.setDisabled(!1),this.setLoading(!1),this.progress!==e&&(e=J(e,0,1),this.tapMotion.ended&&(this.progress===0&&this.progressOpacityMotion.set({opacity:1},500).catch(Y),e===0?this.progressOpacityMotion.set({opacity:0},500).catch(Y).then(()=>{this.progressMotion.set({progress:0},0).catch(Y)}):this.progressMotion.set({progress:J(e*1.2,0,1)},100).catch(Y)),this.progress=e)}setOpacity(e){this.opacity!==e&&(this.opacity=e=J(e,0,1),this.opacityMotion.set({opacity:e},200).catch(Y))}setCurrent(e){this.current!==e&&(this.currentMotion.set({progress:+!!e},2e3).catch(Y),this.current=e,this.current===!0&&(this.currentStartTime=eW()))}setLoading(e){this.loading!==e&&(this.loading=e,this.disabled===!0&&this.setDisabled(!1),this.loadingOpacityMotion.set({opacity:+!!e},500).catch(Y))}setDisabled(e){this.disabled!==e&&(this.disabled=e,this.loading===!0&&this.setLoading(!1),this.disableMotion.set({progress:+!!e},500).catch(Y))}tap(){return this.tapMotion.ended?(this.progressOpacityMotion.set({opacity:0},0).catch(Y),this.progressMotion.set({progress:0},0).catch(Y),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(Y),this.progressMotion.set({progress:this.progress},120).catch(Y)}).catch(Y)):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=D5(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=D5(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()}};q();var F5=e=>e*(2-e),I5=(()=>{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 pc;return r.setAttribute(`position`,new P(e,3)),r.setAttribute(`uv`,new P(t,2)),r.setIndex(new P(n,1)),r})(),L5=G2(.5,.5),R5=X(.017);function z5(e,t){let n=E2(L5.sub(e));return B2(t,t.add(R5),n)}function B5(e,t){let n=E2(L5.sub(e));return X(1).sub(B2(t.sub(R5),t,n))}function V5(e){let t=e.map,n=e.borderWidth>0,r={baseColor:Z(new N(e.color)),circleScale:Z(1),circleOpacity:Z(1),loadingAngle:Z(0),loadingOpacity:Z(0),progress:Z(0),progressOpacity:Z(0),expand0:Z(0),expand1:Z(0),expandOpacity:Z(0),opacity:Z(0),tapScale:Z(1),tapOpacity:Z(1),disable:Z(0)},i=Z(e.mapAlpha),a=Z(e.borderWidth),o=Z(new N(e.borderColor)),s=U2(),c=X(.3).mul(r.circleScale).mul(r.tapScale),l=n?z5(s,c.sub(a.clamp(0,1).mul(c))):z5(s,c.sub(X(.2).mul(c))),u;if(t){let n=c.div(.5);u=H2(t,s.sub(L5).div(n).add(L5)),u=q2(u.rgb,u.a.mul(i)),e.mapUseColor&&(u=q2(r.baseColor,X(1)).mul(u))}else u=q2(r.baseColor,X(1));let d;if(e.mapUseReverse)d=q2(r.baseColor,X(1).sub(u.a));else if(n){let e=z5(s,c.sub(a.clamp(0,1).mul(c))),t=a.mul(2).add(m2(N2(G2(1,-1)).dot(s.sub(L5)))).clamp(0,1);d=A2(q2(o,e.mul(t)),u,u.a)}else d=u;let f=q2(d.rgb,d.a.mul(r.circleOpacity).mul(r.tapOpacity).mul(B5(s,c))),p=q2(r.baseColor,X(.5).mul(r.tapOpacity).mul(B5(s,X(.32).mul(r.circleScale).mul(r.tapScale)))),m=j2(f2.sub(h2(L5.x.sub(s.x),L5.y.sub(s.y))).add(r.loadingAngle),p2),h=X(1).sub(B2(X(0),p2,m)).mul(.9).add(.1),g=q2(r.baseColor,h.mul(r.tapOpacity).mul(r.loadingOpacity).mul(l).mul(B5(s,c))),_=f2.add(h2(L5.x.sub(s.x),L5.y.sub(s.y))),v=X(1).sub(V2(r.progress.mul(p2),_)).mul(.7),y=q2(r.baseColor,v.mul(r.tapOpacity).mul(r.progressOpacity).mul(l).mul(B5(s,c))),b=X(.25).add(X(.25).mul(r.expand0)),x=E2(L5.sub(s)),S=X(1).sub(b.sub(x).div(.2).clamp(0,1)).mul(.8).mul(X(1).sub(m2(r.expand0.sub(.5)).mul(2)).mul(1.2).clamp(0,1)),C=q2(r.baseColor,S.mul(r.expandOpacity).mul(B5(s,b))),w=X(.25).add(X(.23).mul(r.expand1)),T=E2(L5.sub(s)),E=X(1).sub(w.sub(T).div(.2).clamp(0,1)).mul(.8).mul(X(1).sub(m2(r.expand1.sub(.5)).mul(2)).mul(1.2).clamp(0,1)),D=q2(r.baseColor,E.mul(r.expandOpacity).mul(B5(s,w))),ee=q2(r.baseColor,X(0));ee=A2(ee,D,D.w),ee=A2(ee,C,C.w),ee=A2(ee,f,f.w),ee=A2(ee,y,y.w),ee=A2(ee,g,g.w),ee=A2(ee,p,r.disable);let te=q2(ee.rgb,ee.a.mul(r.opacity)),ne=new UE;return ne.fragmentNode=te,ne.blending=5,ne.blendSrc=204,ne.blendDst=205,ne.blendSrcAlpha=201,ne.blendDstAlpha=205,ne.depthWrite=!1,ne.transparent=!0,{material:ne,u:r}}var H5=class extends rs{constructor(e={}){var t,n,r,i,a,o,s;super();let c=(t=e.color)==null?16777215:t,l=(n=e.scale)==null?1:n;this.progress=0,this.opacity=0,this.loading=!1,this.current=!1,this.disabled=!1,this.currentMotion=new c$({progress:0}),this.tapMotion=new c$({scale:1,opacity:1}),this.loadingOpacityMotion=new c$({opacity:0}),this.progressMotion=new c$({progress:0}),this.progressOpacityMotion=new c$({opacity:0}),this.opacityMotion=new c$({opacity:0}),this.disableMotion=new c$({progress:0});let{material:u,u:d}=V5({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=d,this.panoMesh=new rl(I5,u),this.renderOrder=-2,this.panoMesh.renderOrder=-2,this.panoMesh.position.y=.004,this.panoMesh.scale.set(l,1,l),this.add(this.panoMesh),this.currentStartTime=eW(),this.needsRender=!0}setProgress(e){this.setDisabled(!1),this.setLoading(!1),this.progress!==e&&(e=J(e,0,1),this.tapMotion.ended&&(this.progress===0&&this.progressOpacityMotion.set({opacity:1},500).catch(Y),e===0?this.progressOpacityMotion.set({opacity:0},500).catch(Y).then(()=>{this.progressMotion.set({progress:0},0).catch(Y)}):this.progressMotion.set({progress:J(e*1.2,0,1)},100).catch(Y)),this.progress=e)}setOpacity(e){this.opacity!==e&&(this.opacity=e=J(e,0,1),this.opacityMotion.set({opacity:e},200).catch(Y))}setCurrent(e){this.current!==e&&(this.currentMotion.set({progress:+!!e},2e3).catch(Y),this.current=e,this.current===!0&&(this.currentStartTime=eW()))}setLoading(e){this.loading!==e&&(this.loading=e,this.disabled===!0&&this.setDisabled(!1),this.loadingOpacityMotion.set({opacity:+!!e},500).catch(Y))}setDisabled(e){this.disabled!==e&&(this.disabled=e,this.loading===!0&&this.setLoading(!1),this.disableMotion.set({progress:+!!e},500).catch(Y))}tap(){return this.tapMotion.ended?(this.progressOpacityMotion.set({opacity:0},0).catch(Y),this.progressMotion.set({progress:0},0).catch(Y),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(Y),this.progressMotion.set({progress:this.progress},120).catch(Y)}).catch(Y)):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=F5(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=F5(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 U5(e,t,n){let r=Math.abs(e-t);return r<.001||n!==void 0&&Math.abs(n-r)<.001}function W5(e,t,n){return!U5(e,t,n)}function G5(e,t){return e.distanceTo(t)<.001}function K5(e,t){return!G5(e,t)}function q5(e){return!!e&&(typeof e==`object`||typeof e==`function`)&&typeof e.then==`function`}function $(e,t){let n=!1,r={type:e,timeStamp:eW(),get defaultPrevented(){return n},preventDefault(){n=!0}};for(let e of Object.keys(t))e in r||(r[e]=t[e]);return r}var J5=new WeakMap;function Y5(e,t){let n=$(e,Object.assign(Object.assign({},t),{waitUntil(e){let t=J5.get(n);t&&t.push(e)}}));return J5.set(n,[]),n}function X5(e){var t;return Promise.all((t=J5.get(e))==null?[]:t).then(Y)}function Z5(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 Q5(e,t){return e.workCode===t.workCode&&e.mode===t.mode&&e.panoIndex===t.panoIndex&&U5(e.longitude,t.longitude,Math.PI*2)&&U5(e.latitude,t.latitude)&&U5(e.fov,t.fov)&&G5(e.offset,t.offset)&&U5(e.distance,t.distance)}function sne(e,t){e.longitude=t.longitude,e.latitude=t.latitude,e.fov=t.fov,e.distance=t.distance,e.offset.copy(t.offset)}function $5(e){return{longitude:e.longitude,latitude:e.latitude,fov:e.fov,offset:e.offset.clone(),distance:e.distance}}function e7(e){switch(e){case`Floorplan`:return!0;case`Mapview`:return!0;default:return!1}}function t7(e){switch(e){case`Panorama`:return!0;case`VRPanorama`:return!0;case`XRPanorama`:return!0;case`Model`:return!0;default:return!1}}function n7(e){for(let t in e)return!1;return!0}q();var r7=Z(1),i7=U2(),cne=X(6.2831852),lne=X(3.1415926),a7=cne.mul(i7.x),o7=lne.mul(i7.y.sub(.5)),s7=o7.cos().abs(),une=N2(K2(a7.sin().negate().mul(s7),o7.sin().mul(r7),a7.cos().negate().mul(s7))),c7=b2(new wu,une),l7=new UE;l7.fragmentNode=c7,l7.transparent=!0,l7.depthTest=!1,l7.depthWrite=!1;var dne=new H6(l7);function fne(e,t,n){c7.value=t,r7.value=n?-1:1,dne.render(e),c7.value=null}q();var u7=new N,pne=0,mne=1;function d7(e,t,n,r){return TH(this,void 0,void 0,function*(){let i=new To(r.width,r.height,{depthBuffer:!1,stencilBuffer:!1,generateMipmaps:!1,magFilter:Qr,minFilter:Qr}),a=e.getRenderTarget();e.getClearColor(u7);let o=e.getClearAlpha(),s=e.autoClear,c=e.autoClearColor,l=e.autoClearDepth,u=e.autoClearStencil;e.autoClear=!0,e.autoClearColor=!0,e.autoClearDepth=!0,e.autoClearStencil=!0,e.setRenderTarget(i),e.setClearColor(pne,mne),fne(e,t,n),e.setRenderTarget(a),e.setClearColor(u7,o),e.autoClear=s,e.autoClearColor=c,e.autoClearDepth=l,e.autoClearStencil=u;let d=yield e.readRenderTargetPixelsAsync(i,0,0,r.width,r.height);return r.data.set(d),i.dispose(),r})}var f7=(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+`
|
|
1302
|
+
----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`),V8=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 H8(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}q();function U8(e){return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}var W8=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 j,this.tmpVec3b=new j,this.tmpVec3c=new j,this.tmpVec3d=new j,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:z8}),o=t.createShaderModule({code:V8}),s=t.createShaderModule({code:B8});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=U8(n[t]/255),i=U8(n[t+1]/255),a=U8(n[t+2]/255);this.packedColorScratch[e]=H8(r,i,a)}else for(let e=0;e<r;e++){let t=e*3;this.packedColorScratch[e]=H8(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(oV(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 oV(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}};W8.FRAME_UNIFORM_SIZE=512,W8.TILE_UNIFORM_SIZE=256,W8.OFFSET_VIEW_PROJ=0,W8.OFFSET_SCREEN_WIDTH=64,W8.OFFSET_SCREEN_HEIGHT=68,W8.OFFSET_POINT_SIZE_MODE=76,W8.OFFSET_POINT_ATTEN_PACK=80,W8.OFFSET_VIEW_Z_ROW=96,W8.OFFSET_POINT_SCALE=112,W8.OFFSET_POINT_MIN_PIXEL=116,W8.OFFSET_POINT_MAX_PIXEL=120,W8.OFFSET_PIXEL_RATIO=124,W8.OFFSET_RESOLUTION_Y=128,W8.OFFSET_POINT_PIXEL_HARD_MAX=132,W8.OFFSET_POINT_SHAPE=136,W8.OFFSET_CAMERA_WORLD=144,W8.OFFSET_CAMERA_FORWARD=160,W8.OFFSET_CONSTANT_COLOR=176,W8.OFFSET_COLOR_GAIN=192,W8.OFFSET_STYLE_PACK=208,W8.OFFSET_FLOOR_PACK=224,W8.OFFSET_CLIP0_INV=240,W8.OFFSET_CLIP0_META=304,W8.OFFSET_CLIP1_INV=320,W8.OFFSET_CLIP1_META=384,W8.OFFSET_TILE_MODEL=0,W8.OFFSET_TILE_BBOX_MIN=64,W8.OFFSET_TILE_BBOX_MAX=80,W8.OFFSET_TILE_PACK=96,q();var G8=new M,K8=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?ri:t,this.composer=new V6(e),this.composerVersion=``,this.renderMode=`default`,this.sceneRenders={default:new R8}}render(e,t,n,r,i){var a,o;let s=e.domElement,c=s.width,l=s.height;if(c<=0||l<=0)return!1;this.composer.updateStatus();let{endabledPassNumber:u,needsColorGBuffer:d,needsDepthGBuffer:f,version:p}=this.composer.status,m=u>0,h=e.getRenderTarget();if((c!==this.lastWidth||l!==this.lastHeight)&&(this.lastWidth=c,this.lastHeight=l,(a=this.compositeRenderTarget)==null||a.dispose(),this.compositeRenderTarget=new To(c,l,{type:this.outputType}),this.compositeRenderTarget.depthTexture=new Eu(c,l),(o=this.computeRenderer)==null||o.resize(c,l),i=!0),!this.compositeRenderTarget)return e.setRenderTarget(h),!1;!i&&m&&p!==this.composerVersion&&(i=!0),this.composerVersion=p,i&&this.renderSceneToComposite(e,t,n,r);let g=!1;return m?(this.composer.setSize(c,l),this.composer.gbuffer.clear(),d&&this.composer.gbuffer.set(`color`,this.compositeRenderTarget.texture),f&&this.compositeRenderTarget.depthTexture&&this.composer.gbuffer.set(`depth`,this.compositeRenderTarget.depthTexture),e.setRenderTarget(this.composer.readBuffer),n8(e,this.compositeRenderTarget.texture),g=this.composer.render(e)):i&&(e.setRenderTarget(null),n8(e,this.compositeRenderTarget.texture),g=!0),e.setRenderTarget(h),g}renderSceneToComposite(e,t,n,r){if(!this.compositeRenderTarget)return;r.updateMatrixWorld(!0),t.updateMatrixWorld(!0);let i=[];if(t.traverse(e=>{e instanceof lV&&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 W8(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,G8);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}}},q8,J8=typeof navigator<`u`?((q8=navigator==null?void 0:navigator.userAgent)==null?``:q8).toLowerCase():`node`;(()=>{try{let e=document.createElement(`canvas`);return!!(window.WebGLRenderingContext&&(e.getContext(`webgl`)||e.getContext(`experimental-webgl`)))}catch(e){return!1}})();var Y8=typeof navigator<`u`&&navigator.gpu!==void 0;typeof window<`u`&&Y8?navigator.gpu.requestAdapter().then(e=>(e||(Y8=!1),Y8)).catch(()=>(Y8=!1,Y8)):Promise.resolve(Y8),typeof history<`u`&&`pushState`in history&&`replaceState`in history&&`state`in history;var X8=/android/i.test(J8)||/webos/i.test(J8)||/ipad|iphone|ipod/i.test(J8)||/iemobile/i.test(J8)||/opera mini/i.test(J8)||/blackberry/i.test(J8)||/windows phone/i.test(J8),Z8=[`trigger`,`grip`,`primary`,`secondary`,`pinch`],Q8=[`x`,`y`];function $8(e){for(let t of Object.keys(e)){let n=e[t];typeof n==`object`&&n&&!Object.isFrozen(n)&&$8(n)}return Object.freeze(e)}function e5(){return{buttons:{trigger:0,grip:1,primary:4,secondary:5,pinch:null},axes:{x:2,y:3},model:`auto`}}function t5(){return{buttons:{trigger:null,grip:null,primary:null,secondary:null,pinch:null},axes:{x:null,y:null},model:`none`}}var n5=$8({Pico:e5(),Oculus:e5(),Default:e5(),VP:t5()});function r5(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 i5(e){return e===null||typeof e==`number`&&Number.isInteger(e)&&e>=0}function a5(e){return typeof e==`object`&&!!e}function o5(e,t){if(e)try{e(t)}catch(e){}}function s5(e,t,n){var r;let i=(r=n5[e])==null?n5.Default:r,a={buttons:Object.assign({},i.buttons),axes:Object.assign({},i.axes),model:i.model};if(!a5(t))return a;let o=t.buttons;if(o!==void 0)if(a5(o))for(let e of Z8){let t=o[e];t!==void 0&&(i5(t)?a.buttons[e]=t:o5(n,`buttons.${e}`))}else o5(n,`buttons`);let s=t.axes;if(s!==void 0)if(a5(s))for(let e of Q8){let t=s[e];t!==void 0&&(i5(t)?a.axes[e]=t:o5(n,`axes.${e}`))}else o5(n,`axes`);let c=t.model;return c!==void 0&&(c===`auto`||c===`none`?a.model=c:o5(n,`model`)),a}function c5(e){return e===`Default`?`Pico`:e}function l5(){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 u5(e){if(r5()===`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=l5,!0)}q();var d5=1579548,f5=class extends pB{constructor({antialias:e=!1,logarithmicDepthBuffer:t,outputType:n=ri,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&&Y8===!1&&console.warn(`设备不支持开启 WEBGPU`),this.outputColorSpace=Ta,this.setClearColor(d5,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(()=>{u5(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)}}};q();var p5=new M,m5=new Fl,h5=new A,g5=new WeakMap;function _5(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 v5=class extends ps{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 iW?(r=t.time,h5.copy(t.resolution)):(r=eW(),e.getSize(h5)),p5.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),m5.setFromProjectionMatrix(p5),this.traverseVisible(e=>{if(e.setResolution&&e.setResolution(h5.x,h5.y),e.setTime&&e.setTime(r),e.mixer instanceof Ip){let t=e.mixer,n=g5.get(t);n||(n=new B6,g5.set(t,n)),n.update(r),t.update(n.getDelta())}(e instanceof rl||e instanceof su||e instanceof _u)&&(!e.frustumCulled||m5.intersectsObject(e))&&(_5(e)&&(n=!0),e.traverseAncestors(e=>{_5(e)&&(n=!0)}))}),this.needsRender=n,n}};q();var y5=e=>e*(2-e),b5=(()=>{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 pc;return r.setAttribute(`position`,new P(e,3)),r.setAttribute(`uv`,new P(t,2)),r.setIndex(new P(n,1)),r})(),x5=G2(.5,.5),S5=X(.017);function C5(e,t){let n=E2(x5.sub(e));return B2(t,t.add(S5),n)}function w5(e,t){let n=E2(x5.sub(e));return X(1).sub(B2(t.sub(S5),t,n))}function T5(e){let t={baseColor:Z(new N(e)),circleScale:Z(1),ringScale:Z(1),ringOpacity:Z(1),loadingAngle:Z(0),loadingOpacity:Z(0),progress:Z(0),progressOpacity:Z(0),expand0:Z(0),expand1:Z(0),expandOpacity:Z(0),opacity:Z(0),tapScale:Z(1),tapOpacity:Z(1),disable:Z(0)},n=U2(),r=q2(1,1,1,X(.8).add(m2(N2(G2(1,-1)).dot(n.sub(x5))).mul(1.5)).clamp(0,1).mul(t.tapOpacity).mul(C5(n,X(.15).mul(t.circleScale).mul(t.tapScale))).mul(w5(n,X(.234).mul(t.circleScale).mul(t.tapScale)))),i=q2(1,1,1,X(.5).add(m2(N2(G2(1,1)).dot(n.sub(x5)))).clamp(0,1).mul(t.tapOpacity).mul(t.ringOpacity).mul(C5(n,X(.27).mul(t.ringScale).mul(t.tapScale))).mul(w5(n,X(.32).mul(t.ringScale).mul(t.tapScale)))),a=j2(f2.sub(h2(x5.x.sub(n.x),x5.y.sub(n.y))).add(t.loadingAngle),p2),o=q2(1,1,1,X(1).sub(B2(X(0),p2,a)).mul(.4).add(.1).mul(t.tapOpacity).mul(t.loadingOpacity).mul(C5(n,X(.208).mul(t.circleScale).mul(t.tapScale))).mul(w5(n,X(.3).mul(t.circleScale).mul(t.tapScale)))),s=f2.add(h2(x5.x.sub(n.x),x5.y.sub(n.y))),c=q2(1,1,1,X(1).sub(V2(t.progress.mul(p2),s)).mul(.5).mul(t.tapOpacity).mul(t.progressOpacity).mul(C5(n,X(.208).mul(t.circleScale).mul(t.tapScale))).mul(w5(n,X(.3).mul(t.circleScale).mul(t.tapScale)))),l=X(.2).add(X(.23).mul(t.expand0)),u=E2(x5.sub(n)),d=q2(1,1,1,X(1).sub(l.sub(u).div(.2).clamp(0,1)).mul(.8).mul(X(1).sub(m2(t.expand0.sub(.5)).mul(2)).mul(1.2).clamp(0,1)).mul(t.expandOpacity).mul(w5(n,l))),f=X(.2).add(X(.23).mul(t.expand1)),p=E2(x5.sub(n)),m=q2(1,1,1,X(1).sub(f.sub(p).div(.2).clamp(0,1)).mul(.8).mul(X(1).sub(m2(t.expand1.sub(.5)).mul(2)).mul(1.2).clamp(0,1)).mul(t.expandOpacity).mul(w5(n,f))),h=q2(1,1,1,X(.5).mul(w5(n,X(.32).mul(t.circleScale).mul(t.tapScale)))),g=q2(1,1,1,0);g=A2(g,m,m.w),g=A2(g,d,d.w),g=A2(g,c,c.w),g=A2(g,o,o.w),g=A2(g,r,r.w),g=A2(g,i,i.w),g=A2(g,h,t.disable);let _=q2(g.xyz.mul(t.baseColor),g.w.mul(t.opacity).mul(t.opacity)),v=new UE;return v.fragmentNode=_,v.blending=5,v.blendSrc=204,v.blendDst=205,v.blendSrcAlpha=201,v.blendDstAlpha=205,v.depthWrite=!1,v.transparent=!0,{material:v,u:t}}var E5=class extends rs{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 c$({progress:0}),this.ringMotion=new c$({scale:1,opacity:1}),this.tapMotion=new c$({scale:1,opacity:1}),this.loadingOpacityMotion=new c$({opacity:0}),this.progressMotion=new c$({progress:0}),this.progressOpacityMotion=new c$({opacity:0}),this.opacityMotion=new c$({opacity:0}),this.disableMotion=new c$({progress:0});let{material:a,u:o}=T5(r);this.panoU=o,this.panoMesh=new rl(b5,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=eW(),this.needsRender=!0}setProgress(e){this.setDisabled(!1),this.setLoading(!1),this.progress!==e&&(e=J(e,0,1),this.tapMotion.ended&&(this.progress===0&&this.progressOpacityMotion.set({opacity:1},500).catch(Y),e===0?this.progressOpacityMotion.set({opacity:0},500).catch(Y).then(()=>{this.progressMotion.set({progress:0},0).catch(Y)}):this.progressMotion.set({progress:J(e*1.2,0,1)},100).catch(Y)),this.progress=e)}setOpacity(e){this.opacity!==e&&(this.opacity=e=J(e,0,1),this.opacityMotion.set({opacity:e},200).catch(Y))}setCurrent(e){this.current!==e&&(this.currentMotion.set({progress:+!!e},2e3).catch(Y),this.current=e,this.current===!0&&(this.currentStartTime=eW()))}setLoading(e){this.loading!==e&&(this.loading=e,this.disabled===!0&&this.setDisabled(!1),this.loadingOpacityMotion.set({opacity:+!!e},500).catch(Y))}setDisabled(e){this.disabled!==e&&(this.disabled=e,this.loading===!0&&this.setLoading(!1),this.disableMotion.set({progress:+!!e},500).catch(Y))}tap(){return this.tapMotion.ended?(this.progressOpacityMotion.set({opacity:0},0).catch(Y),this.progressMotion.set({progress:0},0).catch(Y),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(Y),this.progressMotion.set({progress:this.progress},120).catch(Y)}).catch(Y)):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=y5(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=y5(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(Y):this.ringMotion.getTargetKeyframe().value.scale!==1&&this.ringMotion.set({scale:1,opacity:1},600).catch(Y),!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()}};q();var D5=e=>e*(2-e),O5=(()=>{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 pc;return r.setAttribute(`position`,new P(e,3)),r.setAttribute(`uv`,new P(t,2)),r.setIndex(new P(n,1)),r})(),k5=G2(.5,.5),A5=X(.017);function j5(e,t){let n=E2(k5.sub(e));return B2(t,t.add(A5),n)}function M5(e,t){let n=E2(k5.sub(e));return X(1).sub(B2(t.sub(A5),t,n))}function N5(e){let t={baseColor:Z(new N(e)),circleScale:Z(1),circleOpacity:Z(1),loadingAngle:Z(0),loadingOpacity:Z(0),progress:Z(0),progressOpacity:Z(0),expand0:Z(0),expand1:Z(0),expandOpacity:Z(0),opacity:Z(0),tapScale:Z(1),tapOpacity:Z(1),disable:Z(0)},n=U2(),r=q2(1,1,1,X(.8).add(m2(N2(G2(1,-1)).dot(n.sub(k5))).mul(1.5)).clamp(0,1).mul(V2(t.progress,X(0))).mul(t.tapOpacity).mul(j5(n,X(.2).mul(t.circleScale).mul(t.tapScale))).mul(M5(n,X(.3).mul(t.circleScale).mul(t.tapScale)))),i=j2(f2.sub(h2(k5.x.sub(n.x),k5.y.sub(n.y))).add(t.loadingAngle),p2),a=q2(1,1,1,X(1).sub(B2(X(0),p2,i)).mul(.9).add(.1).mul(t.tapOpacity).mul(t.loadingOpacity).mul(j5(n,X(.2).mul(t.circleScale).mul(t.tapScale))).mul(M5(n,X(.3).mul(t.circleScale).mul(t.tapScale)))),o=f2.add(h2(k5.x.sub(n.x),k5.y.sub(n.y))),s=X(1).sub(V2(t.progress.mul(p2),o)),c=X(.04),l=t.progress.mul(p2),u=V2(E2(G2(k5.x.add(X(0).sin().mul(.25)),k5.y.add(X(0).cos().mul(.25))).sub(n)),c),d=V2(E2(G2(k5.x.add(l.sin().mul(.25)),k5.y.add(l.cos().mul(.25))).sub(n)),c),f=q2(1,1,1,s.add(u).add(d).clamp(0,1).mul(.9).mul(t.tapOpacity).mul(t.progressOpacity).mul(j5(n,X(.2).mul(t.circleScale).mul(t.tapScale))).mul(M5(n,X(.3).mul(t.circleScale).mul(t.tapScale)))),p=X(.25).add(X(.25).mul(t.expand0)),m=E2(k5.sub(n)),h=q2(1,1,1,X(1).sub(p.sub(m).div(.2).clamp(0,1)).mul(.8).mul(X(1).sub(m2(t.expand0.sub(.5)).mul(2)).mul(1.2).clamp(0,1)).mul(t.expandOpacity).mul(M5(n,p))),g=X(.25).add(X(.23).mul(t.expand1)),_=E2(k5.sub(n)),v=q2(1,1,1,X(1).sub(g.sub(_).div(.2).clamp(0,1)).mul(.8).mul(X(1).sub(m2(t.expand1.sub(.5)).mul(2)).mul(1.2).clamp(0,1)).mul(t.expandOpacity).mul(M5(n,g))),y=q2(1,1,1,X(.5).mul(t.tapOpacity).mul(M5(n,X(.32).mul(t.circleScale).mul(t.tapScale)))),b=q2(1,1,1,0);b=A2(b,v,v.w),b=A2(b,h,h.w),b=A2(b,r,r.w),b=A2(b,f,f.w),b=A2(b,a,a.w),b=A2(b,y,t.disable);let x=q2(b.xyz.mul(t.baseColor),b.w.mul(t.opacity).mul(t.opacity)),S=new UE;return S.fragmentNode=x,S.blending=5,S.blendSrc=204,S.blendDst=205,S.blendSrcAlpha=201,S.blendDstAlpha=205,S.depthWrite=!1,S.transparent=!0,{material:S,u:t}}var P5=class extends rs{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 c$({progress:0}),this.tapMotion=new c$({scale:1,opacity:1}),this.loadingOpacityMotion=new c$({opacity:0}),this.progressMotion=new c$({progress:0}),this.progressOpacityMotion=new c$({opacity:0}),this.opacityMotion=new c$({opacity:0}),this.disableMotion=new c$({progress:0});let{material:a,u:o}=N5(r);this.panoU=o,this.panoMesh=new rl(O5,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=eW(),this.needsRender=!0}setProgress(e){this.setDisabled(!1),this.setLoading(!1),this.progress!==e&&(e=J(e,0,1),this.tapMotion.ended&&(this.progress===0&&this.progressOpacityMotion.set({opacity:1},500).catch(Y),e===0?this.progressOpacityMotion.set({opacity:0},500).catch(Y).then(()=>{this.progressMotion.set({progress:0},0).catch(Y)}):this.progressMotion.set({progress:J(e*1.2,0,1)},100).catch(Y)),this.progress=e)}setOpacity(e){this.opacity!==e&&(this.opacity=e=J(e,0,1),this.opacityMotion.set({opacity:e},200).catch(Y))}setCurrent(e){this.current!==e&&(this.currentMotion.set({progress:+!!e},2e3).catch(Y),this.current=e,this.current===!0&&(this.currentStartTime=eW()))}setLoading(e){this.loading!==e&&(this.loading=e,this.disabled===!0&&this.setDisabled(!1),this.loadingOpacityMotion.set({opacity:+!!e},500).catch(Y))}setDisabled(e){this.disabled!==e&&(this.disabled=e,this.loading===!0&&this.setLoading(!1),this.disableMotion.set({progress:+!!e},500).catch(Y))}tap(){return this.tapMotion.ended?(this.progressOpacityMotion.set({opacity:0},0).catch(Y),this.progressMotion.set({progress:0},0).catch(Y),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(Y),this.progressMotion.set({progress:this.progress},120).catch(Y)}).catch(Y)):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=D5(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=D5(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()}};q();var F5=e=>e*(2-e),I5=(()=>{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 pc;return r.setAttribute(`position`,new P(e,3)),r.setAttribute(`uv`,new P(t,2)),r.setIndex(new P(n,1)),r})(),L5=G2(.5,.5),R5=X(.017);function z5(e,t){let n=E2(L5.sub(e));return B2(t,t.add(R5),n)}function B5(e,t){let n=E2(L5.sub(e));return X(1).sub(B2(t.sub(R5),t,n))}function V5(e){let t=e.map,n=e.borderWidth>0,r={baseColor:Z(new N(e.color)),circleScale:Z(1),circleOpacity:Z(1),loadingAngle:Z(0),loadingOpacity:Z(0),progress:Z(0),progressOpacity:Z(0),expand0:Z(0),expand1:Z(0),expandOpacity:Z(0),opacity:Z(0),tapScale:Z(1),tapOpacity:Z(1),disable:Z(0)},i=Z(e.mapAlpha),a=Z(e.borderWidth),o=Z(new N(e.borderColor)),s=U2(),c=X(.3).mul(r.circleScale).mul(r.tapScale),l=n?z5(s,c.sub(a.clamp(0,1).mul(c))):z5(s,c.sub(X(.2).mul(c))),u;if(t){let n=c.div(.5);u=H2(t,s.sub(L5).div(n).add(L5)),u=q2(u.rgb,u.a.mul(i)),e.mapUseColor&&(u=q2(r.baseColor,X(1)).mul(u))}else u=q2(r.baseColor,X(1));let d;if(e.mapUseReverse)d=q2(r.baseColor,X(1).sub(u.a));else if(n){let e=z5(s,c.sub(a.clamp(0,1).mul(c))),t=a.mul(2).add(m2(N2(G2(1,-1)).dot(s.sub(L5)))).clamp(0,1);d=A2(q2(o,e.mul(t)),u,u.a)}else d=u;let f=q2(d.rgb,d.a.mul(r.circleOpacity).mul(r.tapOpacity).mul(B5(s,c))),p=q2(r.baseColor,X(.5).mul(r.tapOpacity).mul(B5(s,X(.32).mul(r.circleScale).mul(r.tapScale)))),m=j2(f2.sub(h2(L5.x.sub(s.x),L5.y.sub(s.y))).add(r.loadingAngle),p2),h=X(1).sub(B2(X(0),p2,m)).mul(.9).add(.1),g=q2(r.baseColor,h.mul(r.tapOpacity).mul(r.loadingOpacity).mul(l).mul(B5(s,c))),_=f2.add(h2(L5.x.sub(s.x),L5.y.sub(s.y))),v=X(1).sub(V2(r.progress.mul(p2),_)).mul(.7),y=q2(r.baseColor,v.mul(r.tapOpacity).mul(r.progressOpacity).mul(l).mul(B5(s,c))),b=X(.25).add(X(.25).mul(r.expand0)),x=E2(L5.sub(s)),S=X(1).sub(b.sub(x).div(.2).clamp(0,1)).mul(.8).mul(X(1).sub(m2(r.expand0.sub(.5)).mul(2)).mul(1.2).clamp(0,1)),C=q2(r.baseColor,S.mul(r.expandOpacity).mul(B5(s,b))),w=X(.25).add(X(.23).mul(r.expand1)),T=E2(L5.sub(s)),E=X(1).sub(w.sub(T).div(.2).clamp(0,1)).mul(.8).mul(X(1).sub(m2(r.expand1.sub(.5)).mul(2)).mul(1.2).clamp(0,1)),D=q2(r.baseColor,E.mul(r.expandOpacity).mul(B5(s,w))),ee=q2(r.baseColor,X(0));ee=A2(ee,D,D.w),ee=A2(ee,C,C.w),ee=A2(ee,f,f.w),ee=A2(ee,y,y.w),ee=A2(ee,g,g.w),ee=A2(ee,p,r.disable);let te=q2(ee.rgb,ee.a.mul(r.opacity)),ne=new UE;return ne.fragmentNode=te,ne.blending=5,ne.blendSrc=204,ne.blendDst=205,ne.blendSrcAlpha=201,ne.blendDstAlpha=205,ne.depthWrite=!1,ne.transparent=!0,{material:ne,u:r}}var H5=class extends rs{constructor(e={}){var t,n,r,i,a,o,s;super();let c=(t=e.color)==null?16777215:t,l=(n=e.scale)==null?1:n;this.progress=0,this.opacity=0,this.loading=!1,this.current=!1,this.disabled=!1,this.currentMotion=new c$({progress:0}),this.tapMotion=new c$({scale:1,opacity:1}),this.loadingOpacityMotion=new c$({opacity:0}),this.progressMotion=new c$({progress:0}),this.progressOpacityMotion=new c$({opacity:0}),this.opacityMotion=new c$({opacity:0}),this.disableMotion=new c$({progress:0});let{material:u,u:d}=V5({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=d,this.panoMesh=new rl(I5,u),this.renderOrder=-2,this.panoMesh.renderOrder=-2,this.panoMesh.position.y=.004,this.panoMesh.scale.set(l,1,l),this.add(this.panoMesh),this.currentStartTime=eW(),this.needsRender=!0}setProgress(e){this.setDisabled(!1),this.setLoading(!1),this.progress!==e&&(e=J(e,0,1),this.tapMotion.ended&&(this.progress===0&&this.progressOpacityMotion.set({opacity:1},500).catch(Y),e===0?this.progressOpacityMotion.set({opacity:0},500).catch(Y).then(()=>{this.progressMotion.set({progress:0},0).catch(Y)}):this.progressMotion.set({progress:J(e*1.2,0,1)},100).catch(Y)),this.progress=e)}setOpacity(e){this.opacity!==e&&(this.opacity=e=J(e,0,1),this.opacityMotion.set({opacity:e},200).catch(Y))}setCurrent(e){this.current!==e&&(this.currentMotion.set({progress:+!!e},2e3).catch(Y),this.current=e,this.current===!0&&(this.currentStartTime=eW()))}setLoading(e){this.loading!==e&&(this.loading=e,this.disabled===!0&&this.setDisabled(!1),this.loadingOpacityMotion.set({opacity:+!!e},500).catch(Y))}setDisabled(e){this.disabled!==e&&(this.disabled=e,this.loading===!0&&this.setLoading(!1),this.disableMotion.set({progress:+!!e},500).catch(Y))}tap(){return this.tapMotion.ended?(this.progressOpacityMotion.set({opacity:0},0).catch(Y),this.progressMotion.set({progress:0},0).catch(Y),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(Y),this.progressMotion.set({progress:this.progress},120).catch(Y)}).catch(Y)):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=F5(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=F5(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 U5(e,t,n){let r=Math.abs(e-t);return r<.001||n!==void 0&&Math.abs(n-r)<.001}function W5(e,t,n){return!U5(e,t,n)}function G5(e,t){return e.distanceTo(t)<.001}function K5(e,t){return!G5(e,t)}function q5(e){return!!e&&(typeof e==`object`||typeof e==`function`)&&typeof e.then==`function`}function $(e,t){let n=!1,r={type:e,timeStamp:eW(),get defaultPrevented(){return n},preventDefault(){n=!0}};for(let e of Object.keys(t))e in r||(r[e]=t[e]);return r}var J5=new WeakMap;function Y5(e,t){let n=$(e,Object.assign(Object.assign({},t),{waitUntil(e){let t=J5.get(n);t&&t.push(e)}}));return J5.set(n,[]),n}function X5(e){var t;return Promise.all((t=J5.get(e))==null?[]:t).then(Y)}function Z5(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 Q5(e,t){return e.workCode===t.workCode&&e.mode===t.mode&&e.panoIndex===t.panoIndex&&U5(e.longitude,t.longitude,Math.PI*2)&&U5(e.latitude,t.latitude)&&U5(e.fov,t.fov)&&G5(e.offset,t.offset)&&U5(e.distance,t.distance)}function sne(e,t){e.longitude=t.longitude,e.latitude=t.latitude,e.fov=t.fov,e.distance=t.distance,e.offset.copy(t.offset)}function $5(e){return{longitude:e.longitude,latitude:e.latitude,fov:e.fov,offset:e.offset.clone(),distance:e.distance}}function e7(e){switch(e){case`Floorplan`:return!0;case`Mapview`:return!0;default:return!1}}function t7(e){switch(e){case`Panorama`:return!0;case`VRPanorama`:return!0;case`XRPanorama`:return!0;case`Model`:return!0;default:return!1}}function n7(e){for(let t in e)return!1;return!0}q();var r7=Z(1),i7=U2(),cne=X(6.2831852),lne=X(3.1415926),a7=cne.mul(i7.x),o7=lne.mul(i7.y.sub(.5)),s7=o7.cos().abs(),une=N2(K2(a7.sin().negate().mul(s7),o7.sin().mul(r7),a7.cos().negate().mul(s7))),c7=b2(new wu,une),l7=new UE;l7.fragmentNode=c7,l7.transparent=!0,l7.depthTest=!1,l7.depthWrite=!1;var dne=new H6(l7);function fne(e,t,n){c7.value=t,r7.value=n?-1:1,dne.render(e),c7.value=null}q();var u7=new N,pne=0,mne=1;function d7(e,t,n,r){return TH(this,void 0,void 0,function*(){let i=new To(r.width,r.height,{depthBuffer:!1,stencilBuffer:!1,generateMipmaps:!1,magFilter:Qr,minFilter:Qr}),a=e.getRenderTarget();e.getClearColor(u7);let o=e.getClearAlpha(),s=e.autoClear,c=e.autoClearColor,l=e.autoClearDepth,u=e.autoClearStencil;e.autoClear=!0,e.autoClearColor=!0,e.autoClearDepth=!0,e.autoClearStencil=!0,e.setRenderTarget(i),e.setClearColor(pne,mne),fne(e,t,n),e.setRenderTarget(a),e.setClearColor(u7,o),e.autoClear=s,e.autoClearColor=c,e.autoClearDepth=l,e.autoClearStencil=u;let d=yield e.readRenderTargetPixelsAsync(i,0,0,r.width,r.height);return r.data.set(d),i.dispose(),r})}var f7=(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+`
|
|
1303
1303
|
`+r+` AT
|
|
1304
1304
|
`;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 ee(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 te(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 ne=1;function re(){return ne++}function ie(t){var n=t.ownerDocument||t;return n.defaultView||n.parentWindow||e}var ae=/mobile|tablet|ip(ad|hone|od)|android/i,oe=`ontouchstart`in e,se=te(e,`PointerEvent`)!==r,ce=oe&&ae.test(navigator.userAgent),le=`touch`,ue=`pen`,de=`mouse`,fe=`kinect`,pe=25,me=1,he=2,ge=4,_e=8,ve=1,ye=2,be=4,xe=8,Se=16,Ce=ye|be,we=xe|Se,Te=Ce|we,Ee=[`x`,`y`],De=[`clientX`,`clientY`];function Oe(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()}Oe.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(ie(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(ie(this.element),this.evWin,this.domHandler)}};function ke(e){var t;return t=e.options.inputClass||(se?Xe:ce?it:oe?ct:Ge),new t(e,Ae)}function Ae(e,t,n){var r=n.pointers.length,i=n.changedPointers.length,a=t&me&&r-i===0,o=t&(ge|_e)&&r-i===0;n.isFirst=!!a,n.isFinal=!!o,a&&(e.session={}),n.eventType=t,je(e,n),e.emit(`hammer.input`,n),e.recognize(n),e.session.prevInput=n}function je(e,t){var n=e.session,r=t.pointers,i=r.length;n.firstInput||(n.firstInput=Pe(t)),i>1&&!n.firstMultiple?n.firstMultiple=Pe(t):i===1&&(n.firstMultiple=!1);var a=n.firstInput,o=n.firstMultiple,s=o?o.center:a.center,u=t.center=Fe(r);t.timeStamp=l(),t.deltaTime=t.timeStamp-a.timeStamp,t.angle=ze(s,u),t.distance=Re(s,u),Me(n,t),t.offsetDirection=Le(t.deltaX,t.deltaY);var d=Ie(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?Ve(o.pointers,r):1,t.rotation=o?Be(o.pointers,r):0,t.maxPointers=n.prevInput?t.pointers.length>n.prevInput.maxPointers?t.pointers.length:n.prevInput.maxPointers:t.pointers.length,Ne(n,t);var f=e.element;C(t.srcEvent.target,f)&&(f=t.srcEvent.target),t.target=f}function Me(e,t){var n=t.center,r=e.offsetDelta||{},i=e.prevDelta||{},a=e.prevInput||{};(t.eventType===me||a.eventType===ge)&&(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 Ne(e,t){var n=e.lastInterval||t,i=t.timeStamp-n.timeStamp,a,o,s,l;if(t.eventType!=_e&&(i>pe||n.velocity===r)){var u=t.deltaX-n.deltaX,d=t.deltaY-n.deltaY,f=Ie(i,u,d);o=f.x,s=f.y,a=c(f.x)>c(f.y)?f.x:f.y,l=Le(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 Pe(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:Fe(t),deltaX:e.deltaX,deltaY:e.deltaY}}function Fe(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 Ie(e,t,n){return{x:t/e||0,y:n/e||0}}function Le(e,t){return e===t?ve:c(e)>=c(t)?e<0?ye:be:t<0?xe:Se}function Re(e,t,n){n||(n=Ee);var r=t[n[0]]-e[n[0]],i=t[n[1]]-e[n[1]];return Math.sqrt(r*r+i*i)}function ze(e,t,n){n||(n=Ee);var r=t[n[0]]-e[n[0]],i=t[n[1]]-e[n[1]];return Math.atan2(i,r)*180/Math.PI}function Be(e,t){return ze(t[1],t[0],De)+ze(e[1],e[0],De)}function Ve(e,t){return Re(t[0],t[1],De)/Re(e[0],e[1],De)}var He={mousedown:me,mousemove:he,mouseup:ge},Ue=`mousedown`,We=`mousemove mouseup`;function Ge(){this.evEl=Ue,this.evWin=We,this.pressed=!1,Oe.apply(this,arguments)}_(Ge,Oe,{handler:function(e){var t=He[e.type];t&me&&(e.button===0||e.button===2)&&(this.pressed=!0),t&he&&e.which!==1&&(t=ge),this.pressed&&(t&ge&&(this.pressed=!1),this.callback(this.manager,t,{pointers:[e],changedPointers:[e],pointerType:de,srcEvent:e}))}});var Ke={pointerdown:me,pointermove:he,pointerup:ge,pointercancel:_e,pointerout:_e},qe={2:le,3:ue,4:de,5:fe},Je=`pointerdown`,Ye=`pointermove pointerup pointercancel`;e.MSPointerEvent&&!e.PointerEvent&&(Je=`MSPointerDown`,Ye=`MSPointerMove MSPointerUp MSPointerCancel`);function Xe(){this.evEl=Je,this.evWin=Ye,Oe.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}_(Xe,Oe,{handler:function(e){var t=this.store,n=!1,r=!1,i=Ke[e.type.toLowerCase().replace(`ms`,``)],a=qe[e.pointerType]||e.pointerType,o=a==le,s=E(t,e.pointerId,`pointerId`);i&me&&(e.button===0||e.button===2||o)?s<0&&(t.push(e),s=t.length-1):i&(ge|_e)?n=!0:!o&&e.buttons===0&&(n=!0,r=!0,i=Ke.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:me,touchmove:he,touchend:ge,touchcancel:_e},Qe=`touchstart`,$e=`touchstart touchmove touchend touchcancel`;function et(){this.evTarget=Qe,this.evWin=$e,this.started=!1,Oe.apply(this,arguments)}_(et,Oe,{handler:function(e){var t=Ze[e.type];if(t===me&&(this.started=!0),this.started){var n=tt.call(this,e,t);t&(ge|_e)&&n[0].length-n[1].length===0&&(this.started=!1),this.callback(this.manager,t,{pointers:n[0],changedPointers:n[1],pointerType:le,srcEvent:e})}}});function tt(e,t){var n=D(e.touches),r=D(e.changedTouches);return t&(ge|_e)&&(n=ee(n.concat(r),`identifier`,!0)),[n,r]}var nt={touchstart:me,touchmove:he,touchend:ge,touchcancel:_e},rt=`touchstart touchmove touchend touchcancel`;function it(){this.evTarget=rt,this.targetIds={},Oe.apply(this,arguments)}_(it,Oe,{handler:function(e){var t=nt[e.type],n=at.call(this,e,t);n&&this.callback(this.manager,t,{pointers:n[0],changedPointers:n[1],pointerType:le,srcEvent:e})}});function at(e,t){var n=D(e.touches),r=this.targetIds;if(t&(me|he)&&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===me)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&(ge|_e)&&delete r[o[i].identifier],i++;if(s.length)return[ee(a.concat(s),`identifier`,!0),s]}var ot=2500,st=25;function ct(){Oe.apply(this,arguments);var e=v(this.handler,this);this.touch=new it(this.manager,e),this.mouse=new Ge(this.manager,e),this.primaryTouch=null,this.lastTouches=[]}_(ct,Oe,{handler:function(e,t,n){var r=n.pointerType==le,i=n.pointerType==de;if(!(i&&n.sourceCapabilities&&n.sourceCapabilities.firesTouchEvents)){if(r)lt.call(this,t,n);else if(i&&dt.call(this,n))return;this.callback(e,t,n)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});function lt(e,t){e&me?(this.primaryTouch=t.changedPointers[0].identifier,ut.call(this,t)):e&(ge|_e)&&ut.call(this,t)}function ut(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)},ot)}}function dt(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<=st&&o<=st)return!0}return!1}var ft=a?te(a.style,`touchAction`):r,pt=ft!==r,mt=`compute`,ht=`auto`,gt=`manipulation`,_t=`none`,vt=`pan-x`,yt=`pan-y`,bt=Ct();function xt(e,t){this.manager=e,this.set(t)}xt.prototype={set:function(e){e==mt&&(e=this.compute()),pt&&this.manager.element.style&&bt[e]&&(this.manager.element.style[ft]=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()))}),St(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,_t)&&!bt[_t],a=w(r,yt)&&!bt[yt],o=w(r,vt)&&!bt[vt];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&Ce||o&&n&we))return this.preventSrc(t)},preventSrc:function(e){this.manager.session.prevented=!0,e.preventDefault()}};function St(e){if(w(e,_t))return _t;var t=w(e,vt),n=w(e,yt);return t&&n?_t:t||n?t?vt:yt:w(e,gt)?gt:ht}function Ct(){if(!pt)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 wt=1,Tt=2,Et=4,Dt=8,Ot=Dt,kt=16,At=32;function jt(e){this.options=m({},this.defaults,e||{}),this.id=re(),this.manager=null,this.options.enable=b(this.options.enable,!0),this.state=wt,this.simultaneous={},this.requireFail=[]}jt.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=Pt(e,this),t[e.id]||(t[e.id]=e,e.recognizeWith(this)),this},dropRecognizeWith:function(e){return d(e,`dropRecognizeWith`,this)?this:(e=Pt(e,this),delete this.simultaneous[e.id],this)},requireFailure:function(e){if(d(e,`requireFailure`,this))return this;var t=this.requireFail;return e=Pt(e,this),E(t,e)===-1&&(t.push(e),e.requireFailure(this)),this},dropRequireFailure:function(e){if(d(e,`dropRequireFailure`,this))return this;e=Pt(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<Dt&&r(t.options.event+Mt(n)),r(t.options.event),e.additionalEvent&&r(e.additionalEvent),n>=Dt&&r(t.options.event+Mt(n))},tryEmit:function(e){if(this.canEmit())return this.emit(e);this.state=At},canEmit:function(){for(var e=0;e<this.requireFail.length;){if(!(this.requireFail[e].state&(At|wt)))return!1;e++}return!0},recognize:function(e){var t=m({},e);if(!y(this.options.enable,[this,t])){this.reset(),this.state=At;return}this.state&(Ot|kt|At)&&(this.state=wt),this.state=this.process(t),this.state&(Tt|Et|Dt|kt)&&this.tryEmit(t)},process:function(e){},getTouchAction:function(){},reset:function(){}};function Mt(e){return e&kt?`cancel`:e&Dt?`end`:e&Et?`move`:e&Tt?`start`:``}function Nt(e){return e==Se?`down`:e==xe?`up`:e==ye?`left`:e==be?`right`:``}function Pt(e,t){var n=t.manager;return n?n.get(e):e}function Ft(){jt.apply(this,arguments)}_(Ft,jt,{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&(Tt|Et),i=this.attrTest(e);return r&&(n&_e||!i)?t|kt:r||i?n&ge?t|Dt:t&Tt?t|Et:Tt:At}});function It(){Ft.apply(this,arguments),this.pX=null,this.pY=null}_(It,Ft,{defaults:{event:`pan`,threshold:10,pointers:1,direction:Te},getTouchAction:function(){var e=this.options.direction,t=[];return e&Ce&&t.push(yt),e&we&&t.push(vt),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&Ce?(i=a===0?ve:a<0?ye:be,n=a!=this.pX,r=Math.abs(e.deltaX)):(i=o===0?ve:o<0?xe:Se,n=o!=this.pY,r=Math.abs(e.deltaY))),e.direction=i,n&&r>t.threshold&&i&t.direction},attrTest:function(e){return Ft.prototype.attrTest.call(this,e)&&(this.state&Tt||!(this.state&Tt)&&this.directionTest(e))},emit:function(e){this.pX=e.deltaX,this.pY=e.deltaY;var t=Nt(e.direction);t&&(e.additionalEvent=this.options.event+t),this._super.emit.call(this,e)}});function Lt(){Ft.apply(this,arguments)}_(Lt,Ft,{defaults:{event:`pinch`,threshold:0,pointers:2},getTouchAction:function(){return[_t]},attrTest:function(e){return this._super.attrTest.call(this,e)&&(Math.abs(e.scale-1)>this.options.threshold||this.state&Tt)},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 Rt(){jt.apply(this,arguments),this._timer=null,this._input=null}_(Rt,jt,{defaults:{event:`press`,pointers:1,time:251,threshold:9},getTouchAction:function(){return[ht]},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&(ge|_e)&&!i)this.reset();else if(e.eventType&me)this.reset(),this._timer=u(function(){this.state=Ot,this.tryEmit()},t.time,this);else if(e.eventType&ge)return Ot;return At},reset:function(){clearTimeout(this._timer)},emit:function(e){this.state===Ot&&(e&&e.eventType&ge?this.manager.emit(this.options.event+`up`,e):(this._input.timeStamp=l(),this.manager.emit(this.options.event,this._input)))}});function zt(){Ft.apply(this,arguments)}_(zt,Ft,{defaults:{event:`rotate`,threshold:0,pointers:2},getTouchAction:function(){return[_t]},attrTest:function(e){return this._super.attrTest.call(this,e)&&(Math.abs(e.rotation)>this.options.threshold||this.state&Tt)}});function Bt(){Ft.apply(this,arguments)}_(Bt,Ft,{defaults:{event:`swipe`,threshold:10,velocity:.3,direction:Ce|we,pointers:1},getTouchAction:function(){return It.prototype.getTouchAction.call(this)},attrTest:function(e){var t=this.options.direction,n;return t&(Ce|we)?n=e.overallVelocity:t&Ce?n=e.overallVelocityX:t&we&&(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&ge},emit:function(e){var t=Nt(e.offsetDirection);t&&this.manager.emit(this.options.event+t,e),this.manager.emit(this.options.event,e)}});function Vt(){jt.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}_(Vt,jt,{defaults:{event:`tap`,pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[gt]},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&me&&this.count===0)return this.failTimeout();if(r&&i&&n){if(e.eventType!=ge)return this.failTimeout();var a=this.pTime?e.timeStamp-this.pTime<t.interval:!0,o=!this.pCenter||Re(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=Ot,this.tryEmit()},t.interval,this),Tt):Ot}return At},failTimeout:function(){return this._timer=u(function(){this.state=At},this.options.interval,this),At},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==Ot&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}});function Ht(e,t){return t=t||{},t.recognizers=b(t.recognizers,Ht.defaults.preset),new Gt(e,t)}Ht.VERSION=`2.0.7`,Ht.defaults={domEvents:!1,touchAction:mt,enable:!0,inputTarget:null,inputClass:null,preset:[[zt,{enable:!1}],[Lt,{enable:!1},[`rotate`]],[Bt,{direction:Ce}],[It,{direction:Ce},[`swipe`]],[Vt],[Vt,{event:`doubletap`,taps:2},[`tap`]],[Rt]],cssProps:{userSelect:`none`,touchSelect:`none`,touchCallout:`none`,contentZooming:`none`,userDrag:`none`,tapHighlightColor:`rgba(0,0,0,0)`}};var Ut=1,Wt=2;function Gt(e,t){this.options=m({},Ht.defaults,t||{}),this.options.inputTarget=this.options.inputTarget||e,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=e,this.input=ke(this),this.touchAction=new xt(this,this.options.touchAction),Kt(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)}Gt.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?Wt:Ut},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&Ot)&&(i=t.curRecognizer=null);for(var a=0;a<r.length;)n=r[a],t.stopped!==Wt&&(!i||n==i||n.canRecognizeWith(i))?n.recognize(e):n.reset(),!i&&n.state&(Tt|Et|Dt)&&(i=t.curRecognizer=n),a++}},get:function(e){if(e instanceof jt)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&&qt(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&&Kt(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}};function Kt(e,t){var n=e.element;if(n.style){var r;f(e.options.cssProps,function(i,a){r=te(n.style,a),t?(e.oldCssProps[r]=n.style[r],n.style[r]=i):n.style[r]=e.oldCssProps[r]||``}),t||(e.oldCssProps={})}}function qt(e,n){var r=t.createEvent(`Event`);r.initEvent(e,!0,!0),r.gesture=n,n.target.dispatchEvent(r)}return m(Ht,{INPUT_START:me,INPUT_MOVE:he,INPUT_END:ge,INPUT_CANCEL:_e,STATE_POSSIBLE:wt,STATE_BEGAN:Tt,STATE_CHANGED:Et,STATE_ENDED:Dt,STATE_RECOGNIZED:Ot,STATE_CANCELLED:kt,STATE_FAILED:At,DIRECTION_NONE:ve,DIRECTION_LEFT:ye,DIRECTION_RIGHT:be,DIRECTION_UP:xe,DIRECTION_DOWN:Se,DIRECTION_HORIZONTAL:Ce,DIRECTION_VERTICAL:we,DIRECTION_ALL:Te,Manager:Gt,Input:Oe,TouchAction:xt,TouchInput:it,MouseInput:Ge,PointerEventInput:Xe,TouchMouseInput:ct,SingleTouchInput:et,Recognizer:jt,AttrRecognizer:Ft,Tap:Vt,Pan:It,Swipe:Bt,Pinch:Lt,Rotate:zt,Press:Rt,on:x,off:S,each:f,merge:g,extend:h,assign:m,inherit:_,bindFn:v,prefixed:te}),Ht})(typeof window<`u`?window:{},typeof document<`u`?document:{},`Hammer`);q();function p7(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 m7=class e extends BB{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 c$({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=>{uJ.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),n7(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(Y)})}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(eW())[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=W5(o,this.camera.pose.longitude,Math.PI*2)||W5(s,this.camera.pose.latitude),f=W5(c,this.camera.pose.fov),p=W5(l,this.camera.pose.distance),m=K5(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 A((e.x-n)/r*2-1,-(e.y-t)/i*2+1)}createRaycasterFromCamera(e,t){let n=new Wp;return n.params.Points={threshold:.1},n.firstHitOnly=!0,n.near=t.near,n.far=t.far,p7(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 f7.Manager(e),i=e=>e.session.firstInput||null,a=new f7.Pan({threshold:10,pointers:0}),o=new f7.Tap({interval:410}),s=new f7.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),$5(this.camera.pose))});this.emit(`gesture.fire`,s),this.onPanGesture(s),_()}),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),$5(this.camera.pose))});this.emit(`gesture.fire`,s),this.onTapGesture(s),_()}),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 Wp;return r.params.Points={threshold:.1},p7(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),$5(this.camera.pose))});this.emit(`gesture.fire`,s),this.onPinchGesture(s),_()}),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),$5(this.camera.pose))});this.emit(`gesture.fire`,s),this.onDblTapGesture(s),_()});let c=null,l=null,u=(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:J(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),$5(this.camera.pose))})},d=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=u(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),l!==null&&window.clearTimeout(l),l=window.setTimeout(()=>{var t;l=null;let n=u(`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),$5(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),$5(this.camera.pose))});this.emit(`gesture.fire`,t),this.onMouseWheel(t)},100)}}_()}},f=e=>{if(X8)return;if(!t({x:e.clientX,y:e.clientY})){p();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),$5(this.camera.pose))});this.emit(`gesture.fire`,c),this.mouseMoveState={timeStamp:eW(),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&&_()},p=()=>{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)}_()},m=e=>{if(!t(e.center)){_();return}let n=!1;this.pressState||(n=!0,this.pressState={event:e,timeStamp:eW(),stop:Y});let r=eW()-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=uJ.shared.add(t=>{m(e)},!0,1))},h=e=>{if(_(),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),$5(this.camera.pose))});this.emit(`gesture.fire`,o),m(o)},g=e=>{_();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),$5(this.camera.pose))});this.emit(`gesture.fire`,o),m(o)},_=()=>{var e;if(this.pressState){let t=eW()-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}},v=null,y=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),$5(this.camera.pose))})},b=e=>{if(e.preventDefault(),X8)return;let n=y(e);this.emit(`gesture.fire`,n),v={firstEvent:n};let r=v.firstEvent;r&&!t(r.center)||this.onPinchGesture(n)},x=e=>{if(e.preventDefault(),X8||!v)return;let n=v.firstEvent;if(n&&!t(n.center))return;let r=y(e);this.emit(`gesture.fire`,r),this.onPinchGesture(r)},S=e=>{if(e.preventDefault(),X8||!v)return;let n=v.firstEvent;if(v=null,n&&!t(n.center))return;let r=y(e);this.emit(`gesture.fire`,r),this.onPinchGesture(r)},C=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`,d,{passive:!1}),e.addEventListener(`mousemove`,f,!1),e.addEventListener(`mouseout`,p,!1),e.addEventListener(`touchstart`,h,{passive:!0}),e.addEventListener(`touchend`,_,!1),e.addEventListener(`touchcancel`,_,!1),e.addEventListener(`mousedown`,g,!1),e.addEventListener(`mouseup`,_,!1),e.addEventListener(`gesturestart`,b,{passive:!1}),e.addEventListener(`gesturechange`,x,{passive:!1}),e.addEventListener(`gestureend`,S,{passive:!1}),e.addEventListener(`touchstart`,C,{passive:!1}),e.addEventListener(`contextmenu`,C,!1),Object.assign(()=>{r.destroy(),e.removeEventListener(`wheel`,d,!1),e.removeEventListener(`mousemove`,f,!1),e.removeEventListener(`mouseout`,p,!1),e.removeEventListener(`touchstart`,h,!1),e.removeEventListener(`touchend`,_,!1),e.removeEventListener(`touchcancel`,_,!1),e.removeEventListener(`mousedown`,g,!1),e.removeEventListener(`mouseup`,_,!1),e.removeEventListener(`gesturestart`,b,!1),e.removeEventListener(`gesturechange`,x,!1),e.removeEventListener(`gestureend`,S,!1),e.removeEventListener(`touchstart`,C,!1),e.removeEventListener(`contextmenu`,C,!1)},{element:e})}};q();var hne=new ju(.1,16),gne=U2(),h7=G2(.5,.5).sub(gne).length(),g7=X(.01),_7=X(.49),v7=X(.29),_ne=X(1).sub(B2(_7.sub(g7),_7,h7)),vne=B2(v7,v7.add(g7),h7),yne=q2(.576,.635,1,.3),y7=q2(1,1,1,m2(h7.sub(_7.add(v7).div(2))).div(_7.sub(v7)).mul(1.5).add(.1).clamp(0,1)),b7=A2(yne,y7,y7.w),bne=q2(b7.xyz,b7.w.mul(_ne).mul(vne)),x7=new UE;x7.fragmentNode=bne,x7.side=2,x7.blending=5,x7.blendSrc=204,x7.blendDst=205,x7.blendSrcAlpha=201,x7.blendDstAlpha=205,x7.depthWrite=!1,x7.transparent=!0;var S7=class extends rs{constructor(){super(),this.ringMesh=new rl(hne,x7),this.ringMesh.position.z=.01,this.ringMesh.renderOrder=9999999999,this.add(this.ringMesh)}dispose(){this.remove(this.ringMesh)}};q();var C7=new Os,xne=new j,w7={defaultLongitude:Math.PI/4,defaultLatitude:Math.PI/4,defaultFov:80,maxFov:120,minFov:20,maxLatitude:Math.PI/2,minLatitude:-Math.PI/2,intersectMeshCreator:()=>new S7},T7=class e extends m7{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?w7.defaultLongitude:n,defaultLatitude:(r=t.defaultLatitude)==null?w7.defaultLatitude:r,defaultFov:(i=t.defaultFov)==null?w7.defaultFov:i,maxFov:(a=t.maxFov)==null?w7.maxFov:a,minFov:(o=t.minFov)==null?w7.minFov:o,maxLatitude:(s=t.maxLatitude)==null?w7.maxLatitude:s,minLatitude:(c=t.minLatitude)==null?w7.minLatitude:c,intersectMeshCreator:(l=t.intersectMeshCreator)==null?w7.intersectMeshCreator:l})}static initAnimationEndState(t){var n,r,i,a,o,s,c;let l=this.parseArgs(t),{state:u,currentState:d}=t.initial,f=typeof u.panoIndex==`number`?{workCode:(i=(n=u.workCode)==null?(r=l.works[0])==null?void 0:r.workCode:n)==null?``:i,panoIndex:u.panoIndex}:{workCode:d.workCode,panoIndex:d.panoIndex},p=(a=u.fov)==null?l.defaultFov:a,m=(o=u.longitude)==null?e7(d.mode)?d.longitude:l.defaultLongitude:o,h=J(typeof l.minLatitude==`function`?l.minLatitude(p):l.minLatitude,-Math.PI/2,Math.PI/2),g=J(typeof l.maxLatitude==`function`?l.maxLatitude(p):l.maxLatitude,-Math.PI/2,Math.PI/2),_=J((s=u.latitude)==null?d.mode===`Floorplan`?d.latitude:l.defaultLatitude:s,h,g),v=u.offset?u.offset.clone():t.modelScene.boundingBox.getCenter(new j),y=(c=u.distance)==null?e.distanceFromModel(l.modelScene,l.defaultFov,l.camera.aspect):c;return Object.assign(Object.assign({},f),{mode:`Floorplan`,longitude:m,latitude:_,fov:p,offset:v,distance:y})}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 c$({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 c$({modelAlpha:this.modelScene.parameter.resolveValue().modelAlpha}),this.perspToOrthoMotion=new c$({perspToOrtho:this.camera.perspToOrtho.x}),this.pendingTextureId=null,this.textureLoader=new SJ,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 j),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(Y),this.cameraMotion.set(i,t).catch(Y)})}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(Y),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(J(this.perspToOrthoMotion.value.perspToOrtho,0,1))),this.locationMotion.ended||(this.locationMotion.update(e),i.distance=this.locationMotion.value.distance,i.offset=new j(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),n7(r)||this.modelScene.parameter.set(r),n7(i)||this.setCamera(i),this.intersectMesh&&this.intersectMesh.parent){let e=J(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(eW())[1],t=this.locationMotion.getKeyFrameSegment(eW())[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 j(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=xq(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(Y),this.perspToOrthoMotion.set({perspToOrtho:0},i).catch(Y),this.cameraMotion.set(s,i).catch(Y),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}),$5(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)&&(C7.copy(t.observerBox).expandByScalar(10).applyMatrix4(t.transform),C7.containsPoint(e.ray.origin)||e.ray.intersectsBox(C7)))for(let e of t.observers)n.push(e)}let[r,i]=vQ(n,e=>xne.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 A);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=XU(this.cameraMotion.value.longitude+a.longitude),s=this.cameraMotion.value.fov,c=J(typeof this.minLatitude==`function`?this.minLatitude(s):this.minLatitude,-Math.PI/2,Math.PI/2),l=J(typeof this.maxLatitude==`function`?this.maxLatitude(s):this.maxLatitude,-Math.PI/2,Math.PI/2),u=J(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(Y),f?this.inMomentumMovement=null:uJ.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=XU(this.cameraMotion.value.longitude+s.longitude),l=this.camera.pose.fov,u=J(typeof this.minLatitude==`function`?this.minLatitude(l):this.minLatitude,-Math.PI/2,Math.PI/2),d=J(typeof this.maxLatitude==`function`?this.maxLatitude(l):this.maxLatitude,-Math.PI/2,Math.PI/2),f=J(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(Y),e.isFinal)){let t=e.velocityX*a,n=e.velocityY;this.inMomentumMovement={uuid:LB()},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=J(n/e.scale,this.minFov,this.maxFov),i=J(typeof this.minLatitude==`function`?this.minLatitude(r):this.minLatitude,-Math.PI/2,Math.PI/2),a=J(typeof this.maxLatitude==`function`?this.maxLatitude(r):this.maxLatitude,-Math.PI/2,Math.PI/2),o=J(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(Y),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 j().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=J(this.camera.fov-e.center.delta,t,n),i=J(typeof this.minLatitude==`function`?this.minLatitude(r):this.minLatitude,-Math.PI/2,Math.PI/2),a=J(typeof this.maxLatitude==`function`?this.maxLatitude(r):this.maxLatitude,-Math.PI/2,Math.PI/2),o=J(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(Y)}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 j,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=LB(),a=J3({panoIndex:r.panoIndex,workCode:r.work.workCode}),o=this.imageOptions.transform,s=Object.assign({key:`pano.${a}`},xq(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)},l,u,d=this.enableHDR?r.images.gainmap:void 0;d&&(l={right:r.images.work.getURL(d.right),left:r.images.work.getURL(d.left),up:r.images.work.getURL(d.up),down:r.images.work.getURL(d.down),front:r.images.work.getURL(d.front),back:r.images.work.getURL(d.back)},u=r.images.work.getURL(d.cfg));let f=`pano:`+K3([c,l,s]),p=this.modelScene.parameter,m;if(p.pano0&&p.pano0.map.name===f?m=p.pano0:p.pano1&&p.pano1.map.name===f&&(m=p.pano1),m)p.pano0&&p.pano0.map!==m.map&&p.pano0.map.dispose(),p.pano1&&p.pano1.map!==m.map&&p.pano1.map!==((t=p.pano0)==null?void 0:t.map)&&p.pano1.map.dispose(),p.set({pano0:m,pano1:m}),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:vi,viaAjax:!0,fetcher:X4(this.fiveId,r.work)},void 0,void 0,void 0,this.renderer),d=u&&l?Promise.all([X4(this.fiveId,r.work).ajax(u,{responseType:`text`}).then(e=>UB(JSON.parse(e.body))),this.textureLoader.loadCubeTexture(l,{imageURL:{transform:o,options:s},format:vi,colorSpace:``,viaAjax:!0,fetcher:X4(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,d]).then(t=>TH(this,[t],void 0,function*([t,o]){var s,c;let{body:l}=t;if(this.destroyed||this.pendingTextureId!==e){l.dispose();return}this.pendingTextureId=null,l.name=f;let u=Array.isArray(l.image)?l.image[0]:l.image,d=(s=u==null?void 0:u.width)==null?2048:s,m=yield d7(this.renderer,l,!0,a8),h=new l8().formPixels(m.data),g={panoId:a,map:l,mapSize:d,mapHistogram:new wo().fromArray(h.toArray()),matrix:r.matrix.clone().premultiply(r.work.transform),zoom:1,gainmap:o?{map:o.map,cfg:o.config}:void 0};p.pano0&&p.pano0.map.dispose(),p.pano1&&p.pano1.map!==((c=p.pano0)==null?void 0:c.map)&&p.pano1.map.dispose(),p.set({pano0:g,pano1:g}),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(Y),this.hideIntersectMesh())}hideIntersectMesh(){this.intersectMesh.visible=!1,this.needsRender=!0}};q();var E7=Object.assign(Object.assign({},Sq(w7,[`defaultLongitude`,`defaultLatitude`,`maxLatitude`,`minLatitude`])),{defaultLongitude:0,defaultLatitude:Math.PI/2}),Sne=class e extends T7{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?E7.defaultLongitude:n,defaultLatitude:(r=t.defaultLatitude)==null?E7.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 j);this.locationMotion.set({x:t.x,y:t.y,z:t.z,distance:T7.distanceFromModel(this.modelScene,this.defaultFov,this.camera.aspect)},0).catch(Y),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(Y),this.cameraMotion.set(i,t).catch(Y)})}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(Y),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(Y),this.perspToOrthoMotion.set({perspToOrtho:1},i).catch(Y),this.cameraMotion.set(s,i).catch(Y),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}),$5(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 j(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 A),s=2*r.x*a/o.y,c=2*r.y*a/o.y,l=new j;l.setFromMatrixColumn(this.camera.matrix,0),l.multiplyScalar(-s),i.add(l),l.setFromMatrixColumn(this.camera.matrix,1),l.multiplyScalar(c),i.add(l);let u=this.modelScene.boundingBox.getCenter(new j),d=this.modelScene.boundingBox.getSize(new j),f=Math.max(d.x,d.y,d.z)/2;i.clamp(u.clone().sub(new j().setScalar(f)),u.clone().add(new j().setScalar(f))),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(Y)}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=J(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(Y),e.type=`gesture.pan`,this.onPanGesture(e))}onMouseWheel(e){if(!this.initAnimationIsReady)return;this.userAction=e.userAction,this.stopMomentumMovement();let t=J(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(Y)}};q();var D7={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 S7,aerialObserverMinHeight:5},O7=class e extends m7{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?D7.defaultLatitude:n,defaultFov:(r=t.defaultFov)==null?D7.defaultFov:r,maxFov:(i=t.maxFov)==null?D7.maxFov:i,minFov:(a=t.minFov)==null?D7.minFov:a,maxLatitude:(o=t.maxLatitude)==null?D7.maxLatitude:o,minLatitude:(s=t.minLatitude)==null?D7.minLatitude:s,moveSpeed:(c=t.moveSpeed)==null?D7.moveSpeed:c,intersectMeshCreator:(l=t.intersectMeshCreator)==null?D7.intersectMeshCreator:l,aerialObserverMinHeight:(u=t.aerialObserverMinHeight)==null?D7.aerialObserverMinHeight:u})}static initAnimationEndState(e){var t,n,r,i,a,o;let s=this.parseArgs(e),c=s.works,{state:l,currentState:u}=e.initial,d=typeof l.panoIndex==`number`?{workCode:(r=(t=l.workCode)==null?(n=s.works[0])==null?void 0:n.workCode:t)==null?``:r,panoIndex:l.panoIndex}:{workCode:u.workCode,panoIndex:u.panoIndex},f=c.getObserver(d),p=J((i=l.fov)==null?t7(u.mode)?u.fov:s.defaultFov:i,s.minFov,s.maxFov),m=(a=l.longitude)==null?u.longitude:a,h=J(typeof s.minLatitude==`function`?s.minLatitude(p):s.minLatitude,-Math.PI/2,Math.PI/2),g=J(typeof s.maxLatitude==`function`?s.maxLatitude(p):s.maxLatitude,-Math.PI/2,Math.PI/2),_=J((o=l.latitude)==null?t7(u.mode)?u.latitude:s.defaultLatitude:o,h,g),v=new j;return f&&v.copy(f.position).applyMatrix4(f.work.transform),{workCode:d.workCode,panoIndex:d.panoIndex,mode:`PanoramaLike`,longitude:m,latitude:_,fov:p,offset:v,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 J(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 A);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(Y)}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=XU(this.cameraMotion.value.longitude+a.longitude),c=J(typeof this.minLatitude==`function`?this.minLatitude(o):this.minLatitude,-Math.PI/2,Math.PI/2),l=J(typeof this.maxLatitude==`function`?this.maxLatitude(o):this.maxLatitude,-Math.PI/2,Math.PI/2),u=J(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(Y),f?this.inMomentumMovement=null:uJ.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=XU(this.cameraMotion.value.longitude+i.longitude),o=this.cameraMotion.value.fov,s=J(typeof this.minLatitude==`function`?this.minLatitude(o):this.minLatitude,-Math.PI/2,Math.PI/2),c=J(typeof this.maxLatitude==`function`?this.maxLatitude(o):this.maxLatitude,-Math.PI/2,Math.PI/2),l=J(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(Y),e.isFinal){let t=e.velocityX,n=e.velocityY*.6;Math.abs(n)>.5&&Math.abs(t)<.5&&(t=0),this.inMomentumMovement={uuid:LB()},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=J(n/r,this.minFov,this.maxFov),a=J(typeof this.minLatitude==`function`?this.minLatitude(i):this.minLatitude,-Math.PI/2,Math.PI/2),o=J(typeof this.maxLatitude==`function`?this.maxLatitude(i):this.maxLatitude,-Math.PI/2,Math.PI/2),s=J(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(Y),e.type=`gesture.pan`,this.onPanGesture(e))}onMouseWheel(e){this.userAction=e.userAction,this.stopMomentumMovement();let t=J(this.cameraMotion.value.fov-e.center.delta,this.minFov,this.maxFov),n=J(typeof this.minLatitude==`function`?this.minLatitude(t):this.minLatitude,-Math.PI/2,Math.PI/2),r=J(typeof this.maxLatitude==`function`?this.maxLatitude(t):this.maxLatitude,-Math.PI/2,Math.PI/2),i=J(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(Y),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 j().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(Y),this.hideIntersectMesh())}},Cne=`data:video/mp4;base64,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`,k7;function wne(){return k7||(k7=new Promise(e=>{let t,n=document.createElement(`video`);n.muted=!0,n.src=Cne,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)}))}q();var Tne=[`right`,`left`,`up`,`down`,`front`,`back`];function A7(e,t,n,r){let i=new Os;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 M().makeRotationY(Math.PI))}var j7=(e,t)=>{if(e.level>=t)return;let n=e.level+1,r=e.size/2,i=[new A(e.position.x,e.position.y),new A(e.position.x+r,e.position.y),new A(e.position.x,e.position.y+r),new A(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:A7(e.face,a.x,a.y,r),parent:e,children:[]};e.children.push(i),j7(i,t)}};function Ene(e,t){let n={level:0,face:e,position:new A(0,0),size:1,box:A7(e,0,0,1),parent:null,children:[]};return j7(n,t),n}function M7(e){return{children:Tne.map(t=>Ene(t,e)),maxLevel:e}}function N7(e,t){for(let n of e.children)t(n)!==!1&&N7(n,t)}q();var P7,F7=new j,Dne=new co,One=new M,kne=new M,I7=new M,L7=new M,R7=new M,z7=new co,B7=new M,Ane=0,jne=new N,V7=(P7=Math.SQRT1_2)==null?Math.sqrt(2):P7,Mne={up:new co(V7,0,0,V7),down:new co(-V7,0,0,V7),left:new co(0,V7,0,V7),right:new co(0,-V7,0,V7),front:new co(0,0,0,1),back:new co(0,1,0,0)},Nne=(()=>{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 pc;return r.setAttribute(`position`,new P(e,3)),r.setAttribute(`uv`,new P(t,2)),r.setIndex(new P(n,1)),r.computeBoundingBox(),r})(),H7=null;function U7(){return H7||(H7=new hl(new Uint8Array([255,255,255,255]),1,1),H7.needsUpdate=!0),H7}function Pne(){return{enabled:Z(0),maxDisplayBoost:Z(1),gamma:Z(VB.gamma),minContentBoost:Z(VB.minContentBoost),maxContentBoost:Z(VB.maxContentBoost),hdrCapacityMin:Z(VB.hdrCapacityMin),hdrCapacityMax:Z(VB.hdrCapacityMax),offsetSdr:Z(VB.offsetSdr),offsetHdr:Z(VB.offsetHdr)}}function W7(e,t){let n=K2(v2(e.r,X(0),X(1)),v2(e.g,X(0),X(1)),v2(e.b,X(0),X(1))),r=X(1).div(k2(t.gamma,X(1e-6))),i=K2(L2(n.r,r),L2(n.g,r),L2(n.b,r)),a=D2(k2(t.maxDisplayBoost,X(1))),o=D2(k2(t.hdrCapacityMin,X(1e-6))),s=D2(k2(t.hdrCapacityMax,X(1e-6))).sub(o),c=v2(a.sub(o).div(k2(s,X(1e-6))),X(0),X(1)).mul(V2(X(1e-6),s)),l=D2(k2(t.minContentBoost,X(1e-6))),u=D2(k2(t.maxContentBoost,X(1e-6))),d=K2(l).add(i.mul(K2(u.sub(l)))).mul(c);return K2(w2(d.x),w2(d.y),w2(d.z))}function G7(e,t,n){return K2(e).add(n.offsetSdr).mul(t).sub(n.offsetHdr)}var Fne=class extends UE{constructor(e){super(),this.map=null,this.flipY=!0,this.level=-1,this._hdr=e,this._mapNode=H2(U7()),this._gainNode=H2(U7()),this.depthTest=!0,this.depthWrite=!1,this.transparent=!0,this.setupNode()}setupNode(){let e=U2(),t=K2(e.x,e.y,0),n=O2(`opacity`,`float`),r=this._mapNode.sample(t.xy),i=W7(this._gainNode.sample(t.xy).rgb,this._hdr),a=G7(r.rgb,i,this._hdr),o=q2(A2(r.rgb,a,this._hdr.enabled),r.a.mul(n));this.outputNode=o}setMap(e){this.map=e,this._mapNode.value=e==null?U7():e}setGain(e){this._gainNode.value=e==null?U7():e}},Ine=class extends rl{constructor(e,t,n,r,i){super(Nne,n),this.disposed=!1,this.releaseMaterial=r,this.releaseTexture=i,e.box.getCenter(this.position),this.quaternion.multiplyQuaternions(new co().setFromAxisAngle(new j(0,1,0),-Math.PI),Mne[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 c$({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(Y))}).catch(Y)}updateTime(e){let t=!1;if(this.disposed)return t;this.appearMotion.ended===!1&&this.appearMotion.update(e),this.activeTime=e;let n=d$(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)}},K7=i3(20,20,20);K7.applyMatrix4(new M().makeScale(-1,1,1));var Lne=class extends UE{constructor(e){super();let t=N2(F2),n=K2(t.x,t.y,t.z);this._mapNode=b2(new wu,n),this._gainNode=b2(new wu,n);let r=W7(this._gainNode.rgb,e),i=G7(this._mapNode.rgb,r,e);this.fragmentNode=q2(A2(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}},Rne=class extends rl{constructor(e){super(K7,new Lne(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()}},zne=64,Bne=32,Vne=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>=zne){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>=Bne){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=Pne(),this.boundingMesh=new Rne(this.hdrUniforms),this.boundingMesh.frustumCulled=!1,this.textureLoader=new SJ,this.observer=null,this.tileTree=M7(0),this.tileMeshes=new Map,this.frustum=new Fl,this.scene=new ps,this.camera=new Df(90,1,.1,100),this.scene.add(this.boundingMesh),this.renderTarget=new To(1,1,{depthBuffer:!0,stencilBuffer:!1,generateMipmaps:!1,magFilter:Qr,minFilter:Qr,wrapS:Gr,wrapT:Gr,type:e.enableHDR?ui:ri}),this.renderTarget.texture.colorSpace=e.enableHDR?Ea:Ta}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 Fne(this.hdrUniforms)}acquireTileTexture(e,t,n){let r=this.tileTexturePool.get(`${e}x${t}:${n}`);return r&&r.pop()||new Co}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=M7(a)}update(e){var t,n,r,i,a,o,s,c,l,u;let d=this.forceRenderWhenNextUpdate;if(this.disposed)return d;let{time:f,resolution:p,pixelRatio:m,renderer:h,cameraMatrix:g,cameraProjectionMatrix:_,panoMap:v,panoGainmap:y,panoMatrix:b,panoZoom:x,minLevel:S,level:C,useHDR:w,maxDisplayBoost:T}=e,E=y==null?void 0:y.cfg;this.boundingMesh.update(f,v,y==null?void 0:y.map),this.hdrUniforms.enabled.value=+!!w,this.hdrUniforms.maxDisplayBoost.value=T==null?1:T,this.hdrUniforms.gamma.value=(t=E==null?void 0:E.gamma)==null?VB.gamma:t,this.hdrUniforms.minContentBoost.value=(n=E==null?void 0:E.minContentBoost)==null?VB.minContentBoost:n,this.hdrUniforms.maxContentBoost.value=(r=E==null?void 0:E.maxContentBoost)==null?VB.maxContentBoost:r,this.hdrUniforms.hdrCapacityMin.value=(i=E==null?void 0:E.hdrCapacityMin)==null?VB.hdrCapacityMin:i,this.hdrUniforms.hdrCapacityMax.value=(a=E==null?void 0:E.hdrCapacityMax)==null?VB.hdrCapacityMax:a,this.hdrUniforms.offsetSdr.value=(o=E==null?void 0:E.offsetSdr)==null?VB.offsetSdr:o,this.hdrUniforms.offsetHdr.value=(s=E==null?void 0:E.offsetHdr)==null?VB.offsetHdr:s;let D=[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(D!==this.prevHDRKey&&(this.prevHDRKey=D,d=!0),this.observer===null)return(this.renderTarget.width!==1||this.renderTarget.height!==1)&&(this.renderTarget.setSize(1,1),d=!0),!1;this.level=J(C,0,this.tileTree.maxLevel);let ee=Math.floor(p.width*m),te=Math.floor(p.height*m),ne=Math.max(ee,te),re=(u=(l=(c=h.backend.device)==null?void 0:c.limits)==null?void 0:l.maxTextureDimension2D)==null?8192:u;ne>re&&(ee=Math.floor(ee/ne*re),te=Math.floor(te/ne*re)),(this.renderTarget.width!==ee||this.renderTarget.height!==te)&&this.renderTarget.setSize(ee,te),this.scene.matrix.equals(b)||(this.scene.matrix.copy(b),this.scene.matrixWorld.copy(this.scene.matrix),this.scene.matrix.decompose(this.scene.position,this.scene.quaternion,this.scene.scale),this.scene.matrixAutoUpdate=!1,d=!0);let ie=Dne.setFromRotationMatrix(g),ae=One.compose(this.scene.position,ie,this.scene.scale);this.camera.matrix.equals(ae)||(this.camera.matrix.copy(ae),this.camera.matrixWorld.copy(this.camera.matrix),this.camera.position.copy(this.scene.position),this.camera.quaternion.copy(ie),this.camera.scale.copy(this.scene.scale),d=!0);let oe=kne.copy(_);oe.elements[0]*=x,oe.elements[5]*=x,this.camera.projectionMatrix.equals(oe)||(this.camera.projectionMatrix.copy(oe),this.camera.projectionMatrixInverse.copy(this.camera.projectionMatrix).invert(),d=!0),z7.copy(this.scene.quaternion).invert(),B7.makeRotationFromQuaternion(z7),I7.copy(this.camera.matrix),I7.setPosition(0,0,0),I7.premultiply(B7),L7.copy(I7).invert(),R7.multiplyMatrices(this.camera.projectionMatrix,L7),this.frustum.setFromProjectionMatrix(R7);let se=this.frustum.planes[5].normal,ce=[];C>=S&&N7(this.tileTree,e=>{if(!(e.level<S)){if(e.level>C||!this.frustum.intersectsBox(e.box))return!1;ce.push(e)}});let le=new WeakMap;ce.sort((e,t)=>{if(e.level!==t.level)return e.level-t.level;let n=le.get(e);n===void 0&&(n=e.box.getCenter(F7).angleTo(se),le.set(e,n));let r=le.get(t);return r===void 0&&(r=t.box.getCenter(F7).angleTo(se),le.set(t,r)),n-r});let ue=new WeakSet,de=this.observer.images.tiles;if(de)for(let e of ce){let t=de.find(t=>t.level===e.level);if(!t)continue;ue.add(e);let n=this.tileMeshes.get(e);if(n){n.appearDuration=this.appearDuration,n.updateTime(f)&&(d=!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=`${J3({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,l=this.imageOptions.transform,u=Object.assign(Object.assign({},xq(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&&(u.format===`jpg`||/\.jpg$/.test(o))&&(u.size=void 0,u.quality||(u.quality=70)),e.size===1&&console.warn(`tile: ${u.key} should not appear.`),this.pedding++;let p=Promise.all([this.textureLoader.loadTexture(o,{imageURL:{transform:l,options:u},colorSpace:Ta,minFilter:Qr,magFilter:Qr,generateMipmaps:!1,fetcher:X4(this.fiveId,this.observer.work)}).then(e=>this.adoptTileTexture(e.body)),s?this.textureLoader.loadTexture(s,{imageURL:{transform:l,options:u},colorSpace:``,minFilter:Qr,magFilter:Qr,generateMipmaps:!1,fetcher:X4(this.fiveId,this.observer.work)}).then(e=>this.adoptTileTexture(e.body)):Promise.resolve(void 0)]);p.then(([e,t])=>Promise.all([e?V$(e,h):Promise.resolve(),t?V$(t,h):Promise.resolve()])).then(e=>(this.pedding--,e),e=>(this.pedding--,Promise.reject(e))),n=new Ine(e,p,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(f),d=!0}let fe=[],pe=[];this.tileMeshes.forEach((e,t)=>{ue.has(t)?fe.push(e):pe.push(e);let n=t.level>=S&&t.level<=C;e.visible!==n&&(e.visible=n,d=!0)});let me=pe.sort((e,t)=>t.activeTime-e.activeTime).slice(Math.max(0,this.maxCacheTile-fe.length));for(let e of me)this.tileMeshes.delete(e.node),this.scene.remove(e),e.dispose(),d=!0;if(d){let e=h.getRenderTarget(),t=h.getClearColor(jne),n=h.getClearAlpha(),r=h.autoClear,i=h.autoClearColor,a=h.autoClearDepth,o=h.autoClearStencil;h.autoClear=!0,h.autoClearColor=!0,h.autoClearDepth=!0,h.autoClearStencil=!0,h.setRenderTarget(this.renderTarget),h.setClearColor(new N(0,0,0),Ane),h.render(this.scene,this.camera),h.setRenderTarget(e),h.setClearColor(t,n),h.autoClear=r,h.autoClearColor=i,h.autoClearDepth=a,h.autoClearStencil=o}return this.forceRenderWhenNextUpdate=!1,d}};q();var Hne=new M().makeRotationAxis(new j(0,1,0),Math.PI),Une=new M,Wne=X(-1),Gne=G2(.5,.5),q7=i3(2,2,2);q7.applyMatrix4(new M().makeScale(-1,1,1));function Kne(){let e={size:Z(new A),mapMatrix:Z(new M),panoMatrix:Z(new M),alpha:Z(1),map:H2(new Co)},t=I2.sub(_2).normalize().toVar(`cameraToVertex`),n=e.panoMatrix.toMat3().transpose().mul(t).toVar(`panoDirection`),r=K2(n.x.mul(Wne),n.y,n.z),i=e.mapMatrix.mul(q2(r,1)).toVar(`mapCoods`),a=G2(X(.5).add(i.x.div(i.z).div(e.size.x)),X(.5).sub(i.y.div(i.z).div(e.size.y))).toVar(`videoUv`),o=H2(e.map,a),s=X(1).sub(V2(X(0),i.z)).mul(X(1).sub(V2(X(.5),m2(a.x.sub(.5))))).mul(X(1).sub(V2(X(.5),m2(a.y.sub(.5))))),c=X(5).mul(X(1).sub(x2(a,Gne).div(.55).clamp(0,1))).clamp(0,1),l=new UE;return l.fragmentNode=q2(o.rgb,s.mul(c).mul(e.alpha)),l.depthTest=!1,l.depthWrite=!1,l.fog=!1,l.blending=5,l.blendSrc=204,l.blendDst=205,l.blendSrcAlpha=201,l.blendDstAlpha=205,{material:l,u:e}}var qne=class{constructor(){let{material:e,u:t}=Kne();this.material=e,this.u=t,this.object=new rl(q7,this.material),this.object.visible=!1,this.object.renderOrder=-1,this.object.frustumCulled=!1,this.object.name=`pano-video`,this.alphaMotion=new c$({alpha:0}),this.active=!1}setMaterial(e){e?(this.u.size.value.copy(e.size),this.u.mapMatrix.value.copy(Une.multiplyMatrices(Hne,e.matrix).transpose()),this.u.panoMatrix.value.copy(e.panoMatrix),e.map.colorSpace=Ta,this.u.map.value=e.map,this.alphaMotion.set({alpha:e.alpha},500).catch(Y)):(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(Y));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()}};q();var Jne=new N(0,0,0),J7=new N;function Yne(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 q2(t,n,r,e.sub(r.mul(1/256))).mul(256/255)}var Y7=Z(0),Xne=Yne(v2(E2(I2.sub(_2)).div(Y7),0,1)),X7=new UE;X7.fragmentNode=Xne,X7.fog=!1;function Z7(e,t,n,r=1e3){Y7.value=r,e.getClearColor(J7);let i=e.getClearAlpha(),a=t.overrideMaterial;t.overrideMaterial=X7,e.setClearColor(Jne,0),n.update(e,t),e.setClearColor(J7,i),t.overrideMaterial=a}function Q7(e){if(e instanceof Error)return e;let t=typeof e;return Error(t&&t===`object`?JSON.stringify(e):e)}q();var $7=u$,e9=new Wp,t9=new j,Zne=[new j(0,0,0).multiplyScalar(.1),new j(1,0,0).multiplyScalar(.1),new j(-.5,0,-Math.sqrt(3)/2).multiplyScalar(.1),new j(-.5,0,Math.sqrt(3)/2).multiplyScalar(.1)],n9=Object.assign(Object.assign({},D7),{maxAccessibleDistance:5,panoTapTriggerRadius:.5,panoCircleMeshCreator:(e,t)=>e.position.distanceTo(e.standingPosition)>t.aerialObserverMinHeight?new P5:new E5,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}),r9=class e extends O7{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?n9.maxAccessibleDistance:n,panoTapTriggerRadius:(r=t.panoTapTriggerRadius)==null?n9.panoTapTriggerRadius:r,panoCircleMeshCreator:(i=t.panoCircleMeshCreator)==null?n9.panoCircleMeshCreator:i,adjustPanoCircleMeshPositionBasedOnModel:(a=t.adjustPanoCircleMeshPositionBasedOnModel)==null?n9.adjustPanoCircleMeshPositionBasedOnModel:a,tileLevelForFov:(o=t.tileLevelForFov)==null?n9.tileLevelForFov:o,tileAppearDuration:(s=t.tileAppearDuration)==null?n9.tileAppearDuration:s,tileMaxRequest:(c=t.tileMaxRequest)==null?n9.tileMaxRequest:c,flyEffectUseDepthBuffer:(l=t.flyEffectUseDepthBuffer)==null?n9.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 c$({count:0,distance:this.camera.pose.distance}),this.modelAlphaMotion=new c$({modelAlpha:this.modelScene.parameter.resolveValue().modelAlpha}),this.perspToOrthoMotion=new c$({perspToOrtho:this.camera.perspToOrtho.x}),this.panoResources={},this.panoResources[this.locationMotion.keyframes[0].key=this.locationMotion.keyframes[1].key=LB()]={panoId:J3(this.currentPano),panoPicture:this.modelScene.parameter.resolveValue().pano1,position:this.camera.pose.offset.clone(),effect:`fly`,effectEasing:$7,fixCameraTransform:new M},this.panoPictureObserverMap=new WeakMap,this.textureLoader=new SJ,this.tiling=new Vne({fiveId:this.fiveId,enableHDR:this.enableHDR}),this.panoVideo=new qne,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=Y,e.ontimeupdate=Y,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 l={},u={},d=this.camera.getDirection(new j),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.cameraMotion.ended===!1&&(this.cameraMotion.update(e),u.longitude=this.cameraMotion.value.longitude,u.latitude=this.cameraMotion.value.latitude,u.fov=this.cameraMotion.value.fov),this.modelAlphaMotion.ended===!1&&(this.modelAlphaMotion.update(e),l.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.perspToOrthoMotion.ended===!1&&(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(J(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 j().copy(g.position),a=new j().copy(_.position);if(l.progress=_.effectEasing(t),t>=.01&&t<=.99&&(l.progress=J(_.effectEasing(t),.01,.99)),_.panoPicture&&(t<1?g.panoPicture&&(l.pano0=g.panoPicture):l.pano0=_.panoPicture,l.pano1=_.panoPicture),_.effect===`montage`?l.transition=`BLACK`:_.effect===`spread`?l.transition=`SPREAD`:l.transition=`FADE`,_.effect===`zoomin`||_.effect===`zoomout`?l.progress=Math.pow(t,3):_.effect===`model`&&this.camera.pose.distance<.01&&(l.modelAlpha=1-Math.pow(J(Math.abs(t-.5)*2,0,1),4)),t<1&&_.effect!==`fly`&&_.effect!==`model`){if(l.pano0&&g.panoPicture){let e={panoId:l.pano0.panoId,map:l.pano0.map,mapHistogram:l.pano0.mapHistogram,mapSize:l.pano0.mapSize,zoom:l.pano0.zoom,matrix:g.panoPicture.matrix.clone().premultiply(g.fixCameraTransform).setPosition(_.position),gainmap:l.pano0.gainmap?{map:l.pano0.gainmap.map,cfg:Object.assign({},l.pano0.gainmap.cfg)}:void 0},t=this.panoPictureObserverMap.get(l.pano0);t&&this.panoPictureObserverMap.set(e,t),l.pano0=e}n.copy(a),b=!0}u.distance=this.locationMotion.value.distance,u.offset=new j(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=l.pano0)==null?void 0:r.map)||e===((i=l.pano1)==null?void 0:i.map))continue;e.dispose(),t.panoPicture=null}}o.indexOf(e)>=0||delete this.panoResources[e]}let c=Y3(_.panoId);c!==this.currentPano&&(this.currentPano=c,this.accessibleObserverFloorCheckCount=0),this.emit(`pano.moving`,$(`pano.moving`,{userAction:this.userAction,prevPano:Y3(v.panoId),state:Object.assign(Object.assign(Object.assign(Object.assign({},Y3(y.panoId)),{mode:this.mode}),$5(this.camera.pose)),u),options:{},progress:this.locationMotion.progress,error:null}))}n7(l)===!1&&this.modelScene.parameter.set(l),!this.modelScene.parameter.pano0&&this.modelScene.parameter.pano1&&this.modelScene.parameter.set(`pano0`,this.modelScene.parameter.pano1),n7(u)===!1&&this.setCamera(u);let x=this.works.getObserver(this.currentPano),S=this.locationMotion.ended?this.getForwardObserverOrNot(this.camera):null,C=this.works.getObserver(g.panoId),w=this.works.getObserver(_.panoId);if(this.adjustPanoCircleMeshPositionBasedOnModel&&this.helper.visible&&x){let e=[],t=x.work.observers;for(let n of x.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(x.standingPosition),n.set(e,r));let i=n.get(e);return i===void 0&&(i=t.standingPosition.distanceTo(x.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=J3({panoIndex:t.panoIndex,workCode:t.work.workCode}),o=Zne.map(t=>{e9.ray.origin.copy(i),e9.ray.origin.add(t9.copy(t).setY(e)),e9.ray.direction.set(0,-1,0),e9.firstHitOnly=!0,e9.floorIndex=-1;let[a]=n.intersectRaycaster(e9);return a&&a.distance-r<=e?new j().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 wo(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 T=new Map;if(C)for(let e of C.accessibleNodes){let t=C.work.observers[e];if(t){let e=J3({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=J3({panoIndex:t.panoIndex,workCode:t.work.workCode});T.set(e,t)}}if(this.panoMeshes.forEach((e,t)=>{T.get(t)?T.delete(t):(this.helper.remove(e),e.dispose(),this.panoMeshes.delete(t))}),T.forEach((e,t)=>{let n=this.panoCircleMeshCreator(e,{aerialObserverMinHeight:this.aerialObserverMinHeight});this.panoMeshes.set(t,n),this.helper.add(n),T.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&&(t9.set(t.x,t.y,t.z),t9.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 j().copy(e.position).sub(i).normalize();if(t===J3(this.currentPano)){let t=J((.5-i.distanceTo(e.position))/.5,0,1);a.multiplyScalar(1-t).add(d.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 Bo(t,n,0,`YXZ`))}}else e.visible=!1}),this.camera.pose.distance>.1||b)this.panoMeshes.forEach(n=>{n.setOpacity(0),n.setCurrent(!1),n.updateTime&&n.updateTime(e,t),n.visible=!1});else if(x){let n=x.work.observers,[,r]=vQ(x.accessibleNodes,e=>{let t=n[e];return!t||!t.active?1/0:x.standingPosition.distanceTo(t.standingPosition)},!0);r=J(r,3,1/0);let i=x.accessibleNodes.concat(x.panoIndex).map(e=>J3({panoIndex:e,workCode:x.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&&S!==null&&J3({panoIndex:S.panoIndex,workCode:S.work.workCode})===a;let t=n.position.clone().setY(this.camera.position.y).distanceTo(this.camera.position);c=t<.01?0:J(r/t,.1,.85)}o&&o===w&&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<(mJ()?.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 M,panoZoom:1,minLevel:0,level:0};this.tiling.update(e),this.modelScene.parameter.set(`refinedScreen`,null)}else{let e=aJ(i.mapSize),a=e+1,c=new A().copy(this.camera.resolution).multiplyScalar(this.camera.pixelRatio),l=Math.floor(this.tileLevelForFov(this.camera.fov,c)),u=l>e?l:0;this.tiling.setObserver(s);let d={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:u,useHDR:this.modelScene.parameter.useHDR,maxDisplayBoost:this.modelScene.parameter.maxDisplayBoost},f=this.tiling.update(d),p={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:f$(Math.abs(((o=this.modelScene.parameter.progress)==null?0:o)-.5)*2)},m=this.modelScene.parameter.refinedScreen;(f||p.pano!==(m==null?void 0:m.pano)||p.opacity!==(m==null?void 0:m.opacity))&&this.modelScene.parameter.set(`refinedScreen`,p)}}if(this.panoVideo.object.position.copy(this.camera.position),this.panoVideo.updateTime(e),x&&x.images.video&&(this.needsRender=!0),this.intersectMesh&&this.intersectMesh.parent&&x&&x.position.y-x.standingPosition.y>10){let e=J(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=_.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 $E(512,{minFilter:qr,magFilter:qr,generateMipmaps:!1}),this.pano1DepthCubeRenderTarget?this.pano1DepthCubeRenderTarget.width!==512&&this.pano1DepthCubeRenderTarget.setSize(512,512):this.pano1DepthCubeRenderTarget=new $E(512,{minFilter:qr,magFilter:qr,generateMipmaps:!1});let e=new ip(this.camera.near,this.camera.far,this.pano0DepthCubeRenderTarget);e.matrix.copy(t.matrix),e.matrixWorld.copy(e.matrix),e.matrixAutoUpdate=!1,Z7(this.renderer,this.modelScene,e,500);let r=new ip(this.camera.near,this.camera.far,this.pano1DepthCubeRenderTarget);r.matrix.copy(n.matrix),r.matrixWorld.copy(r.matrix),r.matrixAutoUpdate=!1,Z7(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(eW())[1],t=this.locationMotion.getKeyFrameSegment(eW())[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=J3(e),s=this.works.getObserver(e);if(!s)throw Error(`Invalid PanoId ${JSON.stringify(e)}`);let c=nJ(s.images.up),l=this.imageOptions.size;l===void 0&&s&&c&&(l=Number(c)),l===void 0&&(l=2048);let u=this.imageOptions.transform,d=Object.assign({key:`pano.${o}`},xq(this.imageOptions,[`format`,`size`,`quality`,`sharpen`,`forceUseExifOrientation`,`mappings`])),f={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)},p,m,h=this.enableHDR?s.images.gainmap:void 0;h&&(p={right:s.images.work.getURL(h.right),left:s.images.work.getURL(h.left),up:s.images.work.getURL(h.up),down:s.images.work.getURL(h.down),front:s.images.work.getURL(h.front),back:s.images.work.getURL(h.back)},m=s.images.work.getURL(h.cfg));let g=`pano:`+K3([f,p,d]);if(this.pendingTextureTask){if(this.pendingTextureTask.hash===g)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 _=`move-to-pano-`+o;this.pending.add(_);let v=Y5(`pano.prepare`,{options:t,prevMode:this.mode,prevPano:this.currentPano,pano:e});if(this.emit(`pano.prepare`,v),v.defaultPrevented){this.pending.delete(_);return}v.options!==t&&Object.assign(t,v.options);let y=(i=t.effect)==null?`fly`:i,b=this.modelScene.parameter,x;if(b.pano0&&b.pano0.map.name===g?x=b.pano0:b.pano1&&b.pano1.map.name===g&&(x=b.pano1),x){let n={panoId:o,effect:y,effectEasing:(a=t.effectEasing)==null?$7:a,panoPicture:{panoId:x.panoId,map:x.map,mapHistogram:x.mapHistogram,mapSize:x.mapSize,matrix:s.matrix.clone().premultiply(s.work.transform),zoom:1,gainmap:x.gainmap?{map:x.gainmap.map,cfg:Object.assign({},x.gainmap.cfg)}:void 0},position:s.position.clone().applyMatrix4(s.work.transform),fixCameraTransform:new M};n.panoPicture&&this.panoPictureObserverMap.set(n.panoPicture,s),this.pendingTextureTask=void 0,Promise.resolve().then(()=>X5(v)).then(()=>{uJ.shared.add(()=>{this.pending.delete(_),this.doMoveToPano(e,n,t)},!0,1)}).catch(n=>{var r;let i=Q7(n),a=Object.assign(Object.assign(Object.assign({},e),{mode:this.mode}),$5(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(_),this.pendingTextureTask=void 0,(r=this.panoMeshes.get(o))==null||r.setProgress(0)});return}this.pendingTextureTask={panoId:o,hash:g,onLoad:(n,r)=>TH(this,void 0,void 0,function*(){var i,a;let c=n.body;if(this.destroyed)c.dispose();else{c.name=g;let n=Array.isArray(c.image)?c.image[0]:c.image,l=(i=n==null?void 0:n.width)==null?2048:i,{data:u}=yield d7(this.renderer,c,!0,a8),d=new l8().formPixels(u),f={panoId:o,effect:y,effectEasing:(a=t.effectEasing)==null?$7:a,panoPicture:{panoId:o,map:c,mapSize:l,mapHistogram:new wo().fromArray(d.toArray()),matrix:s.matrix.clone().premultiply(s.work.transform),zoom:1,gainmap:r},position:s.position.clone().applyMatrix4(s.work.transform),fixCameraTransform:new M};f.panoPicture&&this.panoPictureObserverMap.set(f.panoPicture,s),this.doMoveToPano(e,f,t)}}),onError:n=>{let r=Object.assign(Object.assign(Object.assign({},e),{mode:this.mode}),$5(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 S=this.panoMeshes.get(o);S&&S.tap&&S.tap();let C=this.textureLoader.loadCubeTexture(f,{imageURL:{transform:u,options:d},format:vi,viaAjax:!0,fetcher:X4(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)===g&&((r=this.panoMeshes.get(o))==null||r.setProgress(t))},this.renderer),w=m&&p?Promise.all([X4(this.fiveId,s.work).ajax(m,{responseType:`text`}).then(e=>UB(JSON.parse(e.body))),this.textureLoader.loadCubeTexture(p,{imageURL:{transform:u,options:d},format:vi,colorSpace:``,viaAjax:!0,fetcher:X4(this.fiveId,s.work)},void 0,void 0,void 0,this.renderer)]).then(([e,t])=>({config:e,map:t.body})):Promise.resolve(void 0),T=Promise.resolve().then(()=>X5(v)).then(()=>null).catch(e=>Q7(e));Promise.all([C,w,T]).then(([t,n,r])=>{var i,a,s,c;if(this.pending.delete(_),r){t.body.dispose(),((i=this.pendingTextureTask)==null?void 0:i.hash)===g&&(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)===g?(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(_),((n=this.pendingTextureTask)==null?void 0:n.hash)===g&&(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(Y),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(Y),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}),$5(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,l,u,d,f,p;let m=eW(),h=LB();this.panoResources[h]=t;let g,_,v;if(this.locationMotion.ended){let[e,n]=this.locationMotion.getKeyFrameSegment(m),i=this.locationMotion.value,a=((r=this.panoResourceFromLocationMotionKeyframe(n))==null?this.camera:r).position,o=t.position;g=Math.max(a.distanceTo(o),1),_=[{key:n.key,progress:0,value:Object.assign(Object.assign({},i),{count:0})},{key:h,progress:1,value:{distance:0,count:1}}],v=0}else{let[e,n]=this.locationMotion.getKeyFrameSegment(m),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;g=c+Math.max(a.distanceTo(o),1),_=[{key:e.key,progress:0,value:Object.assign({},r)},{key:n.key,progress:c/g,value:n.value},{key:h,progress:1,value:{count:n.value.count+1,distance:0}}];let l=this.locationMotionKeyframesLength(this.locationMotion.keyframes),u=this.locationMotionKeyframesLength(_);v=l===0||l===0?0:this.locationMotion.getProgressVelocity(m)*l/u}let y=t.effect===`instant`?0:this.calculateMovingDuration(n.duration,t.effect===`fly`||t.effect===`model`?g:0),b={longitude:n.longitude,latitude:n.latitude,fov:n.fov},x=Object.assign(Object.assign({},e),{mode:this.mode,longitude:(i=b.longitude)==null?this.camera.pose.longitude:i,latitude:(a=b.latitude)==null?this.camera.pose.latitude:a,fov:(o=b.fov)==null?this.camera.pose.fov:o,offset:t.position.clone(),distance:this.camera.pose.distance}),S=this.currentPano;if(this.emit(`pano.moveTo`,$(`pano.moveTo`,{options:n,prevPano:S,progress:0,state:x,userAction:this.userAction,error:null})),n.moveStartCallback&&n.moveStartCallback(x),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=Y,this.videoTexture.needsUpdate=!0),this.panoVideo.setMaterial(null),t.effect===`fly`||t.effect===`model`)this.cameraMotion.set(b,y).catch(Y);else{let e=ZU({longitude:this.cameraMotion.value.longitude,latitude:this.cameraMotion.value.latitude}),n=ZU({longitude:(s=b.longitude)==null?this.cameraMotion.value.longitude:s,latitude:(c=b.latitude)==null?this.cameraMotion.value.latitude:c}),r=new rs;r.lookAt(e);let i=new M().makeRotationFromQuaternion(r.quaternion);r.lookAt(n);let a=new M().makeRotationFromQuaternion(r.quaternion),o=i.clone().invert().premultiply(a),m=this.cameraMotion.value.fov,h=(l=b.fov)==null?this.cameraMotion.value.fov:l,g=1;t.effect===`zoomin`?g=1.5:t.effect===`zoomout`&&(g=.4);let v=J(h*g,1,170);for(let e=0;e<_.length-1;e++){let t=_[e].key;if(t){let e=this.panoResources[t];e&&(e.fixCameraTransform.copy(o),e.panoPicture&&(e.panoPicture.zoom=Math.tan(v/2/180*Math.PI)/Math.tan(m/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:(u=b.longitude)==null?this.cameraMotion.value.longitude:u,latitude:(d=b.latitude)==null?this.cameraMotion.value.latitude:d,fov:v}},{progress:1,value:{longitude:(f=b.longitude)==null?this.cameraMotion.value.longitude:f,latitude:(p=b.latitude)==null?this.cameraMotion.value.latitude:p,fov:h}}],y).catch(Y)}this.locationMotion.setKeyframes(_,y,v).then(()=>{for(let e of this.modelScene.children)e instanceof h3&&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:S,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=LB(),n=this.videoTexture.image;n.setAttribute(`uuid`,t),n.oncanplay=Y,n.ontimeupdate=Y,wne().then(i=>{i&&r.images.video&&n.getAttribute(`uuid`)===t&&(n.oncanplay=()=>{n.oncanplay=Y,n.play()},n.ontimeupdate=()=>{n.currentTime>.5&&(n.ontimeupdate=Y,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=Y,e.ontimeupdate=Y}},()=>{this.emit(`pano.cancel`,$(`pano.cancel`,{options:n,prevPano:S,progress:0,state:x,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 Wp(e.position.clone(),e.getWorldDirection(new j)):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 Wp(r.ray.origin,new j(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 j(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}),l=new Map,u=c.slice().sort((e,t)=>{let n=s[e],r=l.get(n);r===void 0&&(r=t9.copy(n.standingPosition).applyMatrix4(n.work.transform).distanceTo(i),l.set(n,r));let a=s[t],o=l.get(a);return o===void 0&&(o=t9.copy(a.standingPosition).applyMatrix4(a.work.transform).distanceTo(i),l.set(a,o)),r-o});l.clear();for(let e of[Math.PI/8,Math.PI/6,Math.PI/4,Math.PI/3])for(let t of u){let n=s[t];if(n){let t=t9.copy(n.standingPosition).applyMatrix4(n.work.transform).sub(i);if(t&&t.length()!==0&&o.angleTo(t)<e)return n}}let d=null;if(t){let n=t.ray.intersectBox(this.modelScene.boundingBox,t9);n&&(n.project(e),Math.abs(n.z)<=1&&(d=n.clone()))}else d=new j(0,0,0);if(d){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=t9.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=t9.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=t9.copy(n.position).applyMatrix4(n.work.transform);if(t.project(e),Math.abs(t.z)>1)continue;if(Math.pow(d.x-t.x,2)+Math.pow(d.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 j).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||t9.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]=vQ(s,e=>{let t=o[e];return t?t9.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===J3(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=J(0,J(typeof this.minLatitude==`function`?this.minLatitude(n):this.minLatitude,-Math.PI/2,Math.PI/2),J(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=J3({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}))}}}};q();var i9=Math.PI/180,a9=180/Math.PI,o9=.001,s9=1,c9=(()=>{let e=typeof navigator<`u`&&/iPad|iPhone|iPod/.test(navigator.platform);return()=>e})(),Qne=(()=>{let e=typeof navigator<`u`&&/^((?!chrome|android).)*safari/i.test(navigator.userAgent);return()=>e})(),$ne=(()=>{let e=typeof navigator<`u`&&navigator.userAgent.indexOf(`Firefox`)!==-1&&navigator.userAgent.indexOf(`Android`)!==-1;return()=>e})(),l9=(()=>{let e=typeof navigator<`u`?navigator.userAgent.match(/.*Chrome\/([0-9]+)/):null,t=e?parseInt(e[1],10):null;return()=>t})(),ere=(()=>{let e=!1;if(l9()===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})(),tre=(()=>{let e=c9()&&Qne()&&typeof navigator<`u`&&navigator.userAgent.indexOf(`13_4`)!==-1;return()=>e})(),u9=(()=>{let e=typeof navigator<`u`&&navigator.userAgent.indexOf(`R7 Build`)!==-1;return()=>e})();function d9(){let e=typeof window<`u`&&(window.orientation==90||window.orientation==-90);return u9()?!e:e}function nre(e){return!(isNaN(e)||e<=o9||e>s9)}function rre(e){return e.w>1?0:2*Math.acos(e.w)}var f9=(()=>{let e={};return(t,n)=>{e[t]===void 0&&(console.warn(`cardboard: `+n),e[t]=!0)}})();function p9(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 ire(){if(typeof window>`u`||typeof document>`u`)return!1;let e=window.self!==window.top,t=p9(document.referrer),n=p9(window.location.href);return e&&t!==n}var m9=(()=>{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,ee=d*_-p*h,te=f*_-p*g,ne=v*te-y*ee+b*D+x*E-S*T+C*w;return ne?(ne=1/ne,e[0]=(s*te-c*ee+l*D)*ne,e[1]=(i*ee-r*te-a*D)*ne,e[2]=(h*C-g*S+_*x)*ne,e[3]=(f*S-d*C-p*x)*ne,e[4]=(c*E-o*te-l*T)*ne,e[5]=(n*te-i*E+a*T)*ne,e[6]=(g*b-m*C-_*y)*ne,e[7]=(u*C-f*b+p*y)*ne,e[8]=(o*ee-s*E+l*w)*ne,e[9]=(r*E-n*ee-a*w)*ne,e[10]=(m*S-h*b+_*v)*ne,e[11]=(d*b-u*S-p*v)*ne,e[12]=(s*T-o*D-c*w)*ne,e[13]=(n*D-r*T+i*w)*ne,e[14]=(h*y-m*x-g*v)*ne,e[15]=(u*x-d*y+f*v)*ne,e):null}return(r,i,a)=>{e(r,i),a&&t(r,r,a),n(r,r)}})(),h9=class{constructor(e=new j,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)}},are=class{constructor(e,t){this.kFilter=e,this.isDebug=t,this.currentAccelMeasurement=new h9,this.currentGyroMeasurement=new h9,this.previousGyroMeasurement=new h9,c9()?this.filterQ=new co(-1,0,0,1):this.filterQ=new co(1,0,0,1),this.previousFilterQ=new co,this.previousFilterQ.copy(this.filterQ),this.accelQ=new co,this.isOrientationInitialized=!1,this.estimatedGravity=new j,this.measuredGravity=new j,this.gyroIntegralQ=new co}addAccelMeasurement(e,t){this.currentAccelMeasurement.set(e,t)}addGyroMeasurement(e,t){this.currentGyroMeasurement.set(e,t),nre(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 co;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 co;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)`,a9*rre(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 co;i.copy(this.filterQ),i.multiply(r),this.filterQ.slerp(i,1-this.kFilter),this.previousFilterQ.copy(this.filterQ)}accelToQuaternion_(e){let t=new j;t.copy(e),t.normalize();let n=new co;return n.setFromUnitVectors(new j(0,0,-1),t),n.invert(),n}gyroToQuaternionDelta_(e,t){let n=new co,r=new j;return r.copy(e),r.normalize(),n.setFromAxisAngle(r,e.length()*t),n}},ore=class{constructor(e,t){this.predictionTimeS=e,this.isDebug=t,this.previousQ=new co,this.previousTimestampS=null,this.deltaQ=new co,this.outQ=new co}getPrediction(e,t,n){if(!this.previousTimestampS)return this.previousQ.copy(e),this.previousTimestampS=n,e;let r=new j;r.copy(t),r.normalize();let i=t.length();if(i<i9*20)return this.isDebug&&console.log(`Moving slowly, at %s deg/s: no prediction`,(a9*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}},sre=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}},cre=class{constructor(){this.angularAcceleration=null,this.angularVelocity=null,this.linearAcceleration=null,this.linearVelocity=null,this.orientation=null,this.position=null}},g9=class{constructor(){this.leftDegrees=0,this.rightDegrees=0,this.upDegrees=0,this.downDegrees=0}},lre=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 j,this.gyroscope=new j,this.filter=new are(e,r),this.posePredictor=new ore(t,r),this.isFirefoxAndroid=$ne(),this.isIOS=c9();let i=l9();this.isDeviceMotionInRadians=!this.isIOS&&i!==null&&i<66,this.isWithoutDeviceMotion=ere()||tre(),this.filterToWorldQ=new co,c9()?this.filterToWorldQ.setFromAxisAngle(new j(1,0,0),Math.PI/2):this.filterToWorldQ.setFromAxisAngle(new j(1,0,0),-Math.PI/2),this.inverseWorldToScreenQ=new co,this.worldToScreenQ=new co,this.originalPoseAdjustQ=new co;let a=typeof window<`u`?-window.orientation*Math.PI/180:0;this.originalPoseAdjustQ.setFromAxisAngle(new j(0,0,1),a),this.setScreenTransform_(),d9()&&this.filterToWorldQ.multiply(this.inverseWorldToScreenQ),this.resetQ=new co,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 co().setFromAxisAngle(new j(0,0,-1),0),t=new co;return typeof window<`u`&&window.orientation===-90?t.setFromAxisAngle(new j(0,1,0),Math.PI/-2):t.setFromAxisAngle(new j(0,1,0),Math.PI/2),e.multiply(t)})(),this.deviceOrientationFilterToWorldQ=this.deviceOrientationFilterToWorldQ||(function(){let e=new co;return e.setFromAxisAngle(new j(1,0,0),-Math.PI/2),e})(),e=this._deviceOrientationQ;let t=new co;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 co;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 cre;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(),d9()&&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),m9(e.leftViewMatrix,t,n.left),m9(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 c9()&&ire()&&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*i9,a=e.left.downDegrees*i9,o=e.left.leftDegrees*i9,s=e.left.rightDegrees*i9,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*i9,a=e.right.downDegrees*i9,o=e.right.leftDegrees*i9,s=e.right.rightDegrees*i9,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 sre(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=a9*Math.atan(n.distort(i/r)),l=a9*Math.atan(n.distort(a/r)),u=a9*Math.atan(n.distort(o/r)),d=a9*Math.atan(n.distort(s/r)),f=new g9,p=new g9;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 co;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 Bo(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){f9(`fusion-pose-sensor:invalid:non-monotonic`,`Invalid timestamps detected: non-monotonic timestamp from devicemotion`),this.previousTimestampS=r;return}else if(i<=o9||i>s9){f9(`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&&(u9()?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 j(0,0,1),-Math.PI/2);break;case-90:this.worldToScreenQ.setFromAxisAngle(new j(0,0,1),Math.PI/2);break;case 180:break}this.inverseWorldToScreenQ.copy(this.worldToScreenQ),this.inverseWorldToScreenQ.invert()}};q();var _9=[0,0,.5,1],v9=[.5,0,.5,1],ure=class{constructor(e){this.renderer=e,this.sensor=new lre(.98,.04,!1,!1),this.scale=1,this.cameraL=new Df,this.cameraR=new Df;let t=this.sensor.start();this.dispose=()=>{let e=this.renderer.getSize(new A);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 A);if(n.width>n.height){var r=e.matrixWorldAutoUpdate;r&&(e.updateMatrixWorld(),e.matrixWorldAutoUpdate=!1);let i={x:Math.round(n.width*_9[0]),y:Math.round(n.height*_9[1]),width:Math.round(n.width*_9[2]),height:Math.round(n.height*_9[3])},a={x:Math.round(n.width*v9[0]),y:Math.round(n.height*v9[1]),width:Math.round(n.width*v9[2]),height:Math.round(n.height*v9[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 j().fromArray(o.left),this.scale),this.cameraR.translateOnAxis(new j().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(){}},dre=`data:image/png;base64,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`,fre=`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`,y9,b9={zh:{TITLE:`眼镜模式`,HIT:`请将手机横屏放入 VR 眼镜中`},en:{TITLE:`GLASSES MODE`,HIT:`Please put the mobile phone horizontally into the VR glasses.`},ja:{TITLE:`メガネモード`,HIT:`携帯電話をVRメガネに水平に入れてください。`}},x9=typeof navigator<`u`?(y9=b9[navigator.language.split(`-`)[0]])==null?b9.zh:y9:b9.zh,pre=`
|
|
1305
1305
|
<style>
|
|
@@ -1562,4 +1562,4 @@ Z
|
|
|
1562
1562
|
</svg>
|
|
1563
1563
|
</div>
|
|
1564
1564
|
</div>
|
|
1565
|
-
`;function mre(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 pre.replace(/\n/g,` `).replace(/\ +/g,` `).replace(/\$id/g,e).replace(/(\d+)px/g,(e,t)=>r(Number(t)))}function hre(){let e=`five_vr_helper_`+LB(),t=mre(e),n=document.createElement(`div`);return n.className=e,n.innerHTML=t,n}q();var S9=new ju(.12,16),C9=G2(.5,.5),w9=X(.017);function gre(e,t){let n=E2(C9.sub(e));return B2(t,t.add(w9),n)}function T9(e,t){let n=E2(C9.sub(e));return X(1).sub(B2(t.sub(w9),t,n))}function _re(){let e={opacity:Z(0)},t=U2(),n=E2(C9.sub(t)),r=X(.01),i=X(.49),a=X(.29),o=X(1).sub(B2(i.sub(r),i,n)),s=B2(a,a.add(r),n),c=q2(.576,.635,1,.3),l=q2(1,1,1,m2(n.sub(i.add(a).div(2))).div(i.sub(a)).mul(1.5).add(.1).clamp(0,1)),u=A2(c,l,l.w),d=new UE;return d.fragmentNode=q2(u.xyz,u.w.mul(e.opacity).mul(o).mul(s)),d.blending=5,d.blendSrc=204,d.blendDst=205,d.blendSrcAlpha=201,d.blendDstAlpha=205,d.depthWrite=!1,d.transparent=!0,{material:d,u:e}}function vre(){let e={circleScale:Z(1),circleFade:Z(0),circleOpacity:Z(.5),loadingAngle:Z(0),loadingOpacity:Z(0),opacity:Z(0),disable:Z(0)},t=U2();E2(C9.sub(t));let n=X(.98).add(m2(N2(G2(1,-1)).dot(t.sub(C9))).mul(2)).clamp(0,1),r=q2(A2(q2(.576,.635,1,1).xyz,q2(1,1,1,1).xyz,e.circleFade.mul(.5)),n.mul(e.circleOpacity).mul(T9(t,X(.3).mul(e.circleScale)))),i=j2(f2.sub(h2(C9.x.sub(t.x),C9.y.sub(t.y))).add(e.loadingAngle),p2),a=q2(1,1,1,X(1).sub(B2(X(0),p2,i)).mul(.9).add(.1).mul(e.loadingOpacity).mul(gre(t,X(.2).mul(e.circleScale))).mul(T9(t,X(.25).mul(e.circleScale)))),o=q2(1,1,1,X(.5).mul(T9(t,X(.32).mul(e.circleScale)))),s=q2(1,1,1,0);s=A2(s,r,r.w),s=A2(s,a,a.w),s=A2(s,o,e.disable);let c=q2(s.xyz,s.w.mul(e.opacity)),l=new UE;return l.fragmentNode=c,l.blending=5,l.blendSrc=204,l.blendDst=205,l.blendSrcAlpha=201,l.blendDstAlpha=205,l.depthWrite=!1,l.transparent=!0,{material:l,u:e}}var yre=class extends rs{constructor(){super(),this.progress=0,this.opacity=0,this.loading=!1,this.current=!1,this.disabled=!1,this.currentMotion=new c$({ringScale:1.1,ringOpacity:0,circleFade:0,circleOpacity:.85,circleScale:1}),this.opacityMotion=new c$({opacity:0}),this.loadingMotion=new c$({opacity:0}),this.disableMotion=new c$({opacity:0}),this.hitTestMesh=new rl(S9,new Gc({blending:5,blendSrc:204,blendDst:205,blendSrcAlpha:201,blendDstAlpha:205,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 rl(S9,e),this.ringU=t;let{material:n,u:r}=vre();this.panoMesh=new rl(S9,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=J(e,0,1),this.opacityMotion.set({opacity:e},30).catch(Y))}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(Y);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(Y)}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(Y):this.loadingMotion.set({opacity:0},0).catch(Y),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(Y),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()}};q();var bre=1500,xre=Object.assign({},Sq(n9,[`maxLatitude`,`minLatitude`])),Sre=class e extends r9{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 ure(this.renderer);let r=hre();this.helperElement=r;let i=new f7(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 l={},u={},d=this.locationMotion.keyframes[0],f=this.locationMotion.keyframes[this.locationMotion.keyframes.length-1],[p,m]=this.locationMotion.getKeyFrameSegment(e),h=this.panoResourceFromLocationMotionKeyframe(p),g=this.panoResourceFromLocationMotionKeyframe(m),_=this.panoResourceFromLocationMotionKeyframe(d),v=this.panoResourceFromLocationMotionKeyframe(f),y=!1;if(this.modelAlphaMotion.ended===!1&&(this.modelAlphaMotion.update(e),l.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.perspToOrthoMotion.ended===!1&&(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(J(this.perspToOrthoMotion.value.perspToOrtho,0,1))),this.locationMotion.ended===!1){this.locationMotion.update(e);let t=this.locationMotion.value.count-m.value.count+1,n=new j().copy(h.position),a=new j().copy(g.position);if(l.progress=t,t>=.01&&t<=.99&&(l.progress=J(g.effectEasing(t),.01,.99)),g.panoPicture&&(t<1?h.panoPicture&&(l.pano0=h.panoPicture):l.pano0=g.panoPicture,l.pano1=g.panoPicture),g.effect===`montage`?l.transition=`BLACK`:g.effect===`spread`?l.transition=`SPREAD`:l.transition=`FADE`,g.effect===`zoomin`||g.effect===`zoomout`?l.progress=Math.pow(t,3):g.effect===`model`&&this.camera.pose.distance<.01&&(l.modelAlpha=1-Math.pow(J(Math.abs(t-.5)*2,0,1),4)),t<1&&g.effect!==`fly`){if(l.pano0&&h.panoPicture){let e={panoId:l.pano0.panoId,map:l.pano0.map,mapHistogram:l.pano0.mapHistogram,mapSize:l.pano0.mapSize,zoom:l.pano0.zoom,matrix:h.panoPicture.matrix.clone().setPosition(g.position),gainmap:l.pano0.gainmap?{map:l.pano0.gainmap.map,cfg:Object.assign({},l.pano0.gainmap.cfg)}:void 0},t=this.panoPictureObserverMap.get(l.pano0);t&&this.panoPictureObserverMap.set(e,t),l.pano0=e}n.copy(a),y=!0}u.distance=this.locationMotion.value.distance,u.offset=new j(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=l.pano0)==null?void 0:r.map)||e===((i=l.pano1)==null?void 0:i.map))continue;e.dispose(),t.panoPicture=null}}o.indexOf(e)>=0||delete this.panoResources[e]}this.currentPano=Y3(g.panoId),this.emit(`pano.moving`,$(`pano.moving`,{userAction:this.userAction,prevPano:Y3(_.panoId),state:Object.assign(Object.assign(Object.assign(Object.assign({},Y3(v.panoId)),{mode:this.mode}),$5(this.camera.pose)),u),options:{},progress:this.locationMotion.progress,error:null}))}n7(l)===!1&&this.modelScene.parameter.set(l),u.offset&&this.camera.position.copy(u.offset);let b=this.camera.pose.longitude,x=this.camera.pose.latitude;this.camera.quaternion.fromArray(this.cardboard.sensor.getOrientation()),this.camera.computePose(),(b!==this.camera.pose.longitude||x!==this.camera.pose.latitude)&&(this.cameraMotion.set(xq(this.camera.pose,[`longitude`,`latitude`]),0).catch(Y),this.emit(`camera.update`,$(`camera.update`,{userAction:!0,state:Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),$5(this.camera.pose))}))),this.works.getObserver(this.currentPano);let S=this.works.getObserver(h.panoId),C=this.works.getObserver(g.panoId),w=new Map;if(S)for(let e of S.accessibleNodes){let t=S.work.observers[e];if(t){let e=J3({panoIndex:t.panoIndex,workCode:t.work.workCode});w.set(e,t)}}if(C)for(let e of C.accessibleNodes){let t=C.work.observers[e];if(t){let e=J3({panoIndex:t.panoIndex,workCode:t.work.workCode});w.set(e,t)}}if(this.panoMeshes.forEach((e,t)=>{let n=w.get(t);n?(e.position.copy(n.position).applyMatrix4(n.work.transform),w.delete(t)):(this.helper.remove(e),e.dispose(),this.panoMeshes.delete(t))}),w.forEach((e,t)=>{let n=new yre;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),w.delete(t)}),this.camera.pose.distance>.1||y?this.panoMeshes.forEach((n,r)=>{n.setOpacity(0),n.updateTime&&n.updateTime(e,t),n.visible=!1}):this.panoMeshes.forEach((e,t)=>{let n=Y3(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(J(1.5/i,0,1)),X3(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<(mJ()?.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 M,panoZoom:1,minLevel:0,level:0};this.tiling.update(e),this.modelScene.parameter.set(`refinedScreen`,null)}else{let e=aJ(i.mapSize),a=e+1,c=new A().copy(this.camera.resolution).multiplyScalar(this.camera.pixelRatio),l=Math.floor(this.tileLevelForFov(this.camera.fov,c)),u=l>e?l:0;this.tiling.setObserver(s);let d={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:u,useHDR:this.modelScene.parameter.useHDR,maxDisplayBoost:this.modelScene.parameter.maxDisplayBoost},f=this.tiling.update(d),p={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:f$(Math.abs(((o=this.modelScene.parameter.progress)==null?0:o)-.5)*2)},m=this.modelScene.parameter.refinedScreen;(f||p.pano!==(m==null?void 0:m.pano)||p.opacity!==(m==null?void 0:m.opacity))&&this.modelScene.parameter.set(`refinedScreen`,p)}}this.panoVideo.object.position.copy(this.camera.position),this.panoVideo.updateTime(e);{let e=g.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 $E(512,{minFilter:qr,magFilter:qr,generateMipmaps:!1}),this.pano1DepthCubeRenderTarget?this.pano1DepthCubeRenderTarget.width!==512&&this.pano1DepthCubeRenderTarget.setSize(512,512):this.pano1DepthCubeRenderTarget=new $E(512,{minFilter:qr,magFilter:qr,generateMipmaps:!1});let e=new ip(this.camera.near,this.camera.far,this.pano0DepthCubeRenderTarget);e.matrix.copy(t.matrix),e.matrixWorld.copy(e.matrix),e.matrixAutoUpdate=!1,Z7(this.renderer,this.modelScene,e,500);let r=new ip(this.camera.near,this.camera.far,this.pano1DepthCubeRenderTarget);r.matrix.copy(n.matrix),r.matrixWorld.copy(r.matrix),r.matrixAutoUpdate=!1,Z7(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 A(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>bre){let e=this.activePanoMesh,t=null;return this.panoMeshes.forEach((n,r)=>{n===e&&(t=r)}),t!==null&&this.moveToPano(Y3(t),{},!0),this.activePanoMesh=void 0,this.activeTime=void 0,e}let r=this.camera.getDirection(new j),i=new Wp(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=>J3({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[l]=o.sort((e,t)=>e.intersection.distance-t.intersection.distance);l?(a=l.intersection,this.activePanoMesh!==l.panoMesh&&(this.activePanoMesh=l.panoMesh,this.activeTime=e),this.intersectMesh.position.copy(l.panoMesh.position),this.intersectMesh.lookAt(this.camera.position)):(this.activePanoMesh=void 0,this.activeTime=void 0),a||(a=this.modelScene.intersectRaycaster(i)[0]);let u=$(`intersect.update`,{raycaster:i,intersection:a==null?null:a,object:this.intersectMesh});if(this.emit(`intersect.update`,u),u.defaultPrevented){this.hideIntersectMesh();return}if(a&&a.face){let e=a.face.normal,t=new co;t.setFromUnitVectors(new j(0,0,1),e),this.intersectMesh.quaternion.copy(t);let n=a.point.clone();this.intersectMesh.position.copy(n),l?this.intersectMesh.visible=!1:this.intersectMesh.visible=!0}else this.intersectMesh.visible=!1;return l==null?void 0:l.panoMesh}onPanGesture(){}onTapGesture(){}onPinchGesture(){}onMouseMove(){}onMouseOut(){}};q();var E9=.01,D9=`183`,O9={isXRRenderTarget:!0,_hasExternalTextures:!1,_autoAllocateDepthBuffer:!0,_isOpaqueFramebuffer:!0};function k9(e,t,n,r){let i=new To(t,n,{format:vi,type:ri,colorSpace:e.outputColorSpace,stencilBuffer:e.stencil===!0,resolveDepthBuffer:r,resolveStencilBuffer:r});return Object.assign(i,O9),i}var Cre=class{constructor(e,t={}){var n;this.resources=null,this.warnedRevision=!1,this._outputBufferType=null,this.clearColorScratch=new N,this.viewportScratch=new wo,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=k9(this.renderer,1,1,!0);try{let e=r;for(let[n,r]of Object.entries(O9))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=183),缺失或不符:${t.join(`、`)}`);D9!==`183`&&!this.warnedRevision&&(this.warnedRevision=!0,console.warn(`[RenderTargetBridge] THREE.REVISION=183,XR 标志位语义仅在 r${D9} 复核过,继续运行`))}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=183)`)}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:l,width:u,height:d}=this.syncResources(e);r.setScissorTest(!1),r.setRenderTarget(s);let f=t.background;r.setClearColor(f instanceof N?f: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,d-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 p=r.getPixelRatio();r.setViewport(0,0,(u+E9)/p,(d+E9)/p),l.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 To(t,n,{format:vi,type:this.supportsHalfFloat()?ui:ri,colorSpace:Ea,depthBuffer:!0,stencilBuffer:!1,samples:this.atlasSamples,generateMipmaps:!1,minFilter:Qr,magFilter:Qr}),i=k9(this.renderer,t,n,e.ignoreDepthValues===!1),a=new UE;a.fragmentNode=q2(H2(r.texture).rgb,1),a.depthTest=!1,a.depthWrite=!1;let o=new Lj(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}};q();var wre=class{constructor(){this.root=new is,this._entries=new Map,this._dir=new j}add(e){for(let t of e){if(this._entries.has(t))continue;let e=new rs,n=new rs;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)}},Tre=5e3;function Ere(e){let t=[...new Set([e,`local`,`viewer`])];return t.slice(0,t.indexOf(`viewer`)+1)}function Dre(){let e=Error(`会话在参考空间解析前已结束`);return e.aborted=!0,e}function A9(e){return e.map(e=>`${e.type}(${e.reason})`).join(`, `)}function Ore(e,t){return TH(this,arguments,void 0,function*(e,t,n={}){var r,i,a;let o=(r=n.timeoutMs)==null?Tre: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=Ere(t),d=[];for(let n of u){let r=yield kre(e,n,o,c,l);if(s!=null&&s())throw Dre();if(r.ok)return n!==t&&console.warn(`[XR] 参考空间降级:期望 ${t},实际采用 ${n};失败:${A9(d)}`),{space:r.space,type:n,failures:d};d.push({type:n,reason:r.reason})}let f=Error(`所有参考空间均不可用(期望 ${t}):${A9(d)}`);throw f.attempts=d,f})}function kre(e,t,n,r,i){return TH(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)}})}q();var Are=5e3,j9=`会话在进入过程中已结束`,M9=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 wre,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 j,this.info={time:0,hasPose:!1,headOrientation:new co,headLocal:new j,views:[]},this.viewPool=[{eye:0,viewport:new wo},{eye:1,viewport:new wo}],this.frameViews=[],this.bridgeEyes=[],this.tmpViewport=new wo,this.tmpSize=new A,this.onSessionEndEvent=()=>{var e;if(this._session){if(!this.entered){this.endedDuringEnter=!0,(e=this.firstFrameWaiter)==null||e.reject(Error(j9));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 Cre(e,{atlasSamples:(r=this.options.atlasSamples)==null?0:r}),this.device=r5(),this.profile=s5(this.device,this.options.deviceProfile,e=>{console.warn(`[XR] Device_Profile 字段 ${e} 非法,已回落默认值`)});let i=()=>{let t=new Df;return t.coordinateSystem=e.coordinateSystem,t};this.eyeCameras=[i(),i()],this.info.views=this.frameViews}enter(e){return TH(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=J(o,0,1)),e.updateRenderState({baseLayer:a}),this.submittedNear=e.renderState.depthNear,this.submittedFar=e.renderState.depthFar,this.bridge.init(a);let s=yield Ore(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),uJ.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(j9):e}}})}exit(){return TH(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(j9)),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(j9)}waitFirstFrame(){var e;if(this.firstFrameArrived)return Promise.resolve();let t=(e=this.options.firstFrameTimeoutMs)==null?Are: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 wo).clone(),autoClear:e.autoClear,autoClearColor:e.autoClearColor,autoClearDepth:e.autoClearDepth,autoClearStencil:e.autoClearStencil,pixelRatio:e.getPixelRatio(),size:e.getSize(new A).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=uJ.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(j9)),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){}}};q();var N9={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 P9(e){return TH(this,void 0,void 0,function*(){let t=yield fetch(e);if(t.ok)return t.json();throw Error(t.statusText)})}function jre(e){return TH(this,void 0,void 0,function*(){if(!e)throw Error(`No basePath supplied`);return yield P9(`${e}/profilesList.json`)})}function Mre(e,t){return TH(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 jre(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 P9(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 Nre={xAxis:0,yAxis:0,button:0,state:N9.ComponentState.DEFAULT};function Pre(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 Fre=class{constructor(e){this.componentProperty=e.componentProperty,this.states=e.states,this.valueNodeName=e.valueNodeName,this.valueNodeProperty=e.valueNodeProperty,this.valueNodeProperty===N9.VisualResponseProperty.TRANSFORM&&(this.minNodeName=e.minNodeName,this.maxNodeName=e.maxNodeName),this.value=0,this.updateFromComponent(Nre)}updateFromComponent({xAxis:e,yAxis:t,button:n,state:r}){let{normalizedXAxis:i,normalizedYAxis:a}=Pre(e,t);switch(this.componentProperty){case N9.ComponentProperty.X_AXIS:this.value=this.states.includes(r)?i:.5;break;case N9.ComponentProperty.Y_AXIS:this.value=this.states.includes(r)?a:.5;break;case N9.ComponentProperty.BUTTON:this.value=this.states.includes(r)?n:0;break;case N9.ComponentProperty.STATE:this.valueNodeProperty===N9.VisualResponseProperty.VISIBILITY?this.value=this.states.includes(r):this.value=+!!this.states.includes(r);break;default:throw Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`)}}},Ire=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 Fre(t.visualResponses[e]);this.visualResponses[e]=n}),this.gamepadIndices=Object.assign({},t.gamepadIndices),this.values={state:N9.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=N9.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=N9.ComponentState.PRESSED:(t.touched||this.values.button>N9.ButtonTouchThreshold)&&(this.values.state=N9.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===N9.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>N9.AxisTouchThreshold&&(this.values.state=N9.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===N9.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>N9.AxisTouchThreshold&&(this.values.state=N9.ComponentState.TOUCHED)),Object.values(this.visualResponses).forEach(e=>{e.updateFromComponent(this.values)})}},Lre=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 Ire(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)})}},Rre=`https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles`,zre=`generic-trigger`,Bre=class extends rs{constructor(){super(),this.motionController=null,this.envMap=null}setEnvironmentMap(e){return this.envMap==e?this:(this.envMap=e,this.traverse(e=>{e instanceof rl&&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===N9.VisualResponseProperty.VISIBILITY?t.visible=i:a===N9.VisualResponseProperty.TRANSFORM&&(t.quaternion.copy(n.quaternion).slerp(r.quaternion,i),t.position.lerpVectors(n.position,r.position,i)))})}))}};function Vre(e,t){Object.values(e.components).forEach(e=>{let{type:n,touchPointNodeName:r,visualResponses:i}=e;if(n===N9.ComponentType.TOUCHPAD)if(e.touchPointNode=t.getObjectByName(r),e.touchPointNode){let t=new rl(new gd(.001),new Gc({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===N9.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 F9(e,t){Vre(e.motionController,t),e.envMap&&t.traverse(t=>{t instanceof rl&&t.isMesh&&(t.material.envMap=e.envMap,t.material.needsUpdate=!0)}),e.add(t)}var Hre=class{constructor(e=null){this.gltfLoader=e,this.path=Rre,this._assetCache={}}createControllerModel(e){let t=new Bre,n=null;return e.addEventListener(`connected`,e=>{let r=e.data;r.targetRayMode!==`tracked-pointer`||!r.gamepad||Mre(r,this.path,zre).then(({profile:e,assetPath:i})=>{t.motionController=new Lre(r,e,i);let a=this._assetCache[t.motionController.assetUrl];if(a)n=a.scene.clone(),F9(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(),F9(t,n)})}}).catch(e=>{console.warn(e)})}),e.addEventListener(`disconnected`,()=>{t.motionController=null,t.remove(n),n=null}),t}},Ure=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))}};q();var I9=Object.assign(Object.assign({},Sq(n9,[`maxLatitude`,`minLatitude`])),{referenceSpaceType:`local-floor`,foveation:1,showControllerModel:!0,showPointerRay:!0,deviceProfile:{}}),L9=5,Wre=1e-4,Gre=1500;function Kre(){return{load(e,t){bq.ajax(e,{responseType:`arraybuffer`}).then(t=>{var n;return UZ(t.body,{resourcePath:e.slice(0,e.lastIndexOf(`/`)+1),search:(n=e.split(`?`)[1])==null?``:n,fetcher:bq})}).then(e=>t(e)).catch(t=>{console.warn(`[XRPanorama] 手柄模型 glTF 加载失败,跳过模型挂载:`,e,t)})}}}var qre=class e extends r9{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 Ure,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=I9,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 M9(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:c5(t)}))},onSessionEnd:e=>{this.emit(`xr.session.end`,$(`xr.session.end`,{session:null,machineType:c5(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=uJ.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 Wp;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 Hre;e.gltfLoader=Kre(),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 rs,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 pc;e.setAttribute(`position`,new tc([0,0,0,0,0,-5],3));let r=new $l({color:16777215,depthTest:!1,depthWrite:!1,transparent:!0}),i=new uu(e,r);i.renderOrder=999,i.frustumCulled=!1,t.targetRay.add(i),n.ray=i,n.rayLength=L9}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=L9;if(e&&t&&e===this.controllerRaycasters[a]&&(o=Math.min(e.ray.origin.distanceTo(t),L9)),r.rayLength!==void 0&&Math.abs(r.rayLength-o)<Wre)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:c5(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>Gre){let e=this.activePanoMesh,t=null;return this.panoMeshes.forEach((n,r)=>{n===e&&(t=r)}),t!==null&&(this.moveToPano(Y3(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=>J3({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 l=$(`intersect.update`,{raycaster:r,intersection:i==null?null:i,object:this.intersectMesh});if(this.emit(`intersect.update`,l),l.defaultPrevented){this.hideIntersectMesh();return}if(i&&i.face){let e=i.face.normal,t=new co;t.setFromUnitVectors(new j(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]=vQ(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===J3(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(){}};q();var Jre=new j(0,1.6,0),R9=new Os,z9=new j,Yre=Object.assign({},D7),Xre=class e extends O7{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:l,currentState:u}=e.initial,d=typeof l.panoIndex==`number`?{workCode:(r=(t=l.workCode)==null?(n=s.works[0])==null?void 0:n.workCode:t)==null?``:r,panoIndex:l.panoIndex}:{workCode:u.workCode,panoIndex:u.panoIndex},f=c.getObserver(d),p=J((i=l.fov)==null?!f||t7(u.mode)?u.fov:s.defaultFov:i,s.minFov,s.maxFov),m=(a=l.longitude)==null?u.longitude:a,h=J(typeof s.minLatitude==`function`?s.minLatitude(p):s.minLatitude,-Math.PI/2,Math.PI/2),g=J(typeof s.maxLatitude==`function`?s.maxLatitude(p):s.maxLatitude,-Math.PI/2,Math.PI/2),_=J((o=l.latitude)==null?!f||t7(u.mode)?u.latitude:s.defaultLatitude:o,h,g),v=new j;if(s.initial.state.offset)v.copy(s.initial.state.offset);else if(f)v.copy(f.position).applyMatrix4(f.work.transform);else{let e=ZU(u).setLength(u.distance);v.copy(s.initial.currentState.offset).sub(e)}return{workCode:d.workCode,panoIndex:d.panoIndex,mode:`Model`,longitude:m,latitude:_,fov:p,offset:v,distance:0}}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`Model`,this.locationMotion=new c$({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 c$({modelAlpha:this.modelScene.parameter.resolveValue().modelAlpha}),this.perspToOrthoMotion=new c$({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(Y),this.cameraMotion.set(i,t).catch(Y)})}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(Y),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(J(this.perspToOrthoMotion.value.perspToOrtho,0,1))),!this.locationMotion.ended){this.locationMotion.update(e),i.distance=this.locationMotion.value.distance,i.offset=new j(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z);let t=new j(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)&&(R9.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform),R9.containsPoint(t)))for(let t of e.observers)n.push(t)}let r=vQ(n,e=>z9.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),n7(r)||this.modelScene.parameter.set(r),n7(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=J(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(Y),this.modelAlphaMotion.set(s,i).catch(Y),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(eW())[1],t=this.locationMotion.getKeyFrameSegment(eW())[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 j(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 j().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=eW(),s=new j(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),c=s.distanceTo(e),l=this.locationMotion.getProgressVelocity(o),u=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;u+=Math.sqrt(Math.pow(i-t,2)+Math.pow(a-n,2)+Math.pow(o-r,2))}let d=c===0?0:l*u/c,f=this.calculateMovingDuration(t.duration,c),p={x:e.x,y:e.y,z:e.z,distance:0},m={longitude:t.longitude,latitude:t.latitude,fov:t.fov},h=[];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)&&(R9.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform),R9.containsPoint(s)))for(let t of e.observers)h.push(t)}let g=vQ(h,e=>z9.copy(e.position).applyMatrix4(e.work.transform).distanceTo(s)),_=g?{workCode:g.work.workCode,panoIndex:g.panoIndex}:{workCode:``,panoIndex:0},v=Object.assign(Object.assign({},_),{mode:this.mode,longitude:(r=m.longitude)==null?this.camera.pose.longitude:r,latitude:(i=m.latitude)==null?this.camera.pose.latitude:i,fov:(a=m.fov)==null?this.camera.pose.fov:a,offset:e.clone(),distance:0}),y=this.currentPano;this.emit(`pano.moveTo`,$(`pano.moveTo`,{options:t,prevPano:y,progress:0,state:v,userAction:this.userAction,error:null})),t.moveStartCallback&&t.moveStartCallback(v),this.cameraMotion.set(m,f).catch(Y),this.locationMotion.set(p,f,d).then(()=>{for(let e of this.modelScene.children)e instanceof h3&&e.show();let e=Object.assign(Object.assign(Object.assign({},_),{mode:this.mode}),$5(this.camera.pose));this.emit(`pano.arrived`,$(`pano.arrived`,{options:t,prevPano:y,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:y,progress:0,state:v,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 j(0,1,0).angleTo(e)>Math.PI/3){let r=new Wp;r.firstHitOnly=!0;let i=e.clone().setLength(.3).add(t);r.set(i,new j(0,-1,0)),n=this.modelScene.intersectRaycaster(r)[0]}}if(n){let t=new j().copy(n.point).add(Jre),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)&&(R9.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform),R9.containsPoint(t)))for(let t of e.observers)r.push(t)}let[i,a]=vQ(r,e=>z9.copy(e.position).applyMatrix4(e.work.transform).distanceTo(t),!0);i&&a<5&&(t.y=z9.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()}};q();var B9=new Os,Zre=new j,V9=.5,H9=Math.PI/7,U9={defaultLongitude:Math.PI/4,defaultLatitude:Math.PI/4,defaultDistance:150,maxLatitude:Math.PI/2,minLatitude:0,cameraType:`auto`,cameraFence:null,intersectMeshCreator:()=>new S7},W9={Floorplan:T7,Topview:Sne,Panorama:r9,VRPanorama:Sre,XRPanorama:qre,Model:Xre,Mapview:class e extends m7{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?U9.defaultLongitude:n,defaultLatitude:(r=t.defaultLatitude)==null?U9.defaultLatitude:r,defaultDistance:(i=t.defaultDistance)==null?U9.defaultDistance:i,maxLatitude:(a=t.maxLatitude)==null?U9.maxLatitude:a,minLatitude:(o=t.minLatitude)==null?U9.minLatitude:o,cameraType:(s=t.cameraType)==null?U9.cameraType:s,cameraFence:(c=t.cameraFence)==null?U9.cameraFence:c,intersectMeshCreator:(l=t.intersectMeshCreator)==null?U9.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 l=this.parseArgs(t),u=l.works,d=l.modelScene,{state:f,currentState:p}=t.initial,m=typeof f.panoIndex==`number`?{workCode:(i=(n=f.workCode)==null?(r=l.works[0])==null?void 0:r.workCode:n)==null?``:i,panoIndex:f.panoIndex}:{workCode:p.workCode,panoIndex:p.panoIndex},h=(a=f.fov)==null?60:a,g=J(typeof l.minLatitude==`function`?l.minLatitude(h):l.minLatitude,-Math.PI/2,Math.PI/2),_=J(typeof l.maxLatitude==`function`?l.maxLatitude(h):l.maxLatitude,-Math.PI/2,Math.PI/2),v=J((o=f.latitude)==null?e7(p.mode)?p.latitude:l.defaultLatitude:o,g,_),y=e.distanceFromModel(l.modelScene,h,l.camera.aspect),b=new j,x=(s=f.distance)==null?Math.min(l.defaultDistance,y):s,S=(c=f.longitude)==null?e7(p.mode)?p.longitude:l.defaultLongitude:c;if(f.offset)b.copy(f.offset);else{let e=u.getObserver(m);l.defaultDistance<y&&e?(b.copy(e.position).applyMatrix4(e.work.transform),f.longitude===void 0&&(S=p.longitude)):(d.boundingBox.getCenter(b),x=y)}return Object.assign(Object.assign({},m),{mode:`Mapview`,longitude:S,latitude:v,fov:h,offset:b,distance:x})}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 c$({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 c$({modelAlpha:this.modelScene.parameter.resolveValue().modelAlpha}),this.perspToOrthoMotion=new c$({perspToOrtho:this.camera.perspToOrtho.x}),this.pendingTextureId=null,this.textureLoader=new SJ,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 Os&&e.cameraFence instanceof Os||this.cameraFence instanceof ac&&e.cameraFence instanceof ac?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(Y),(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(Y),!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(Y),this.cameraMotion.set(i,t).catch(Y)})}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(Y),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 j(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(Y),this.perspToOrthoMotion.ended||(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(J(this.perspToOrthoMotion.value.perspToOrtho,0,1))),n7(n)||this.modelScene.parameter.set(n),n7(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=ZU(this.camera.pose,new j),t=new j().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 j),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(Y)}}if(this.intersectMesh&&this.intersectMesh.parent){let e=J(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(eW())[1],t=this.locationMotion.getKeyFrameSegment(eW())[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 j(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(Y),this.modelAlphaMotion.set({modelAlpha:1},i/3).catch(Y),this.cameraMotion.set(s,i).catch(Y),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}),$5(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)&&(B9.copy(t.observerBox).expandByScalar(10).applyMatrix4(t.transform),B9.containsPoint(e.ray.origin)||e.ray.intersectsBox(B9)))for(let e of t.observers)n.push(e)}let[r,i]=vQ(n,e=>Zre.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 A);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=XU(this.cameraMotion.value.longitude+a.longitude),c=J(typeof this.minLatitude==`function`?this.minLatitude(o):this.minLatitude,-Math.PI/2,Math.PI/2),l=J(typeof this.maxLatitude==`function`?this.maxLatitude(o):this.maxLatitude,-Math.PI/2,Math.PI/2),u=J(this.cameraMotion.value.latitude+a.latitude,c,l),d=new j(this.locationMotion.value.x+a.x,this.locationMotion.value.y+a.y,this.locationMotion.value.z+a.z),f=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:s,latitude:u,offset:d,fov:o,distance:this.locationMotion.value.distance}),p=e.state.offset.clone().sub(ZU(e.state).setLength(f.distance)),m=!(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(p):!0)===!1&&(m=!0);let h=$(`gesture.momentum`,Object.assign(Object.assign({},e),{isFirst:t,isFinal:m,state:f}));if(this.emit(`gesture.fire`,h),this.inMomentumMovement.event=h,this.emit(`gesture.momentum`,h),e.defaultPrevented){this.inMomentumMovement=null;return}this.inMomentumMovement&&(this.cameraMotion.set({longitude:s,latitude:u},0).catch(Y),this.locationMotion.set({x:f.offset.x,y:f.offset.y,z:f.offset.z,distance:f.distance},0).catch(Y),m?this.inMomentumMovement=null:uJ.shared.add((t,n)=>{this.requestMomentumMovement(e,!1,i,n)},!0))}fixFinalState(e){if(this.perspToOrthoMotion.getTargetKeyframe().value.perspToOrtho===1)return;let t=ZU(e,new j),n=new j().copy(e.offset).sub(t.clone().setLength(e.distance)),r=new Wp(n,t);r.params.Points={threshold:.1},r.firstHitOnly=!0,r.hitFilter=e=>e.distance>V9+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 jl(new j(0,1,0),-this.modelScene.boundingBox.min.y),t=r.ray.intersectPlane(e,new j);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&&W5(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 j().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 jl(new j(0,1,0),0),t=n.ray.intersectPlane(e,new j);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 j().copy(this.camera.pose.offset).sub(this.camera.position).normalize(),t=new jl().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 j(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),i=ZU(this.cameraMotion.value).setLength(this.locationMotion.value.distance).add(r),a=new j().copy(i).sub(n.target).length();a*=Math.tan(this.camera.pose.fov/2*Math.PI/180);let o=this.renderer.getSize(new A),s=2*t.x*a/o.y,c=2*t.y*a/o.y,l=new j;l.setFromMatrixColumn(this.camera.matrix,0),l.multiplyScalar(-s),r.add(l),this.camera.pose.latitude<H9?l.setFromMatrixColumn(this.camera.matrix,1):(l.setFromMatrixColumn(this.camera.matrix,0),l.crossVectors(this.camera.up,l)),l.multiplyScalar(c),r.add(l);let u=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=u,this.emit(`gesture.pan`,e),e.defaultPrevented)return;if(this.locationMotion.set({x:u.offset.x,y:u.offset.y,z:u.offset.z},0).catch(Y),e.isFinal&&(this.fixFinalState(u),Object.assign(e,{__fixFinalState:!0}),this.locationMotion.set({distance:u.distance,x:u.offset.x,y:u.offset.y,z:u.offset.z},0).catch(Y)),e.isFinal){let t=this.renderer.getSize(new A),n=2*e.velocityX*a/t.y,r=2*e.velocityY*a/t.y,i=new j,o=new j;i.setFromMatrixColumn(this.camera.matrix,0),i.multiplyScalar(-n),o.add(i),this.camera.pose.latitude<H9?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:LB()},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=XU(this.cameraMotion.value.longitude+r.longitude),a=this.camera.pose.fov,o=J(typeof this.minLatitude==`function`?this.minLatitude(a):this.minLatitude,-Math.PI/2,Math.PI/2),s=J(typeof this.maxLatitude==`function`?this.maxLatitude(a):this.maxLatitude,-Math.PI/2,Math.PI/2),c=J(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(Y):this.cameraMotion.set({longitude:l.longitude,latitude:l.latitude},0).catch(Y),e.isFinal){let t=e.velocityX,n=e.velocityY;this.inMomentumMovement={uuid:LB()},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 j),a=e.distanceFromModel(this.modelScene,this.cameraMotion.value.fov,this.camera.aspect),o=J(r/t.scale,V9,1/0),s=t.state.offset.clone().sub(ZU(t.state).setLength(o)),c=this.modelScene.boundingBox.containsPoint(s),l;if(!c&&this.pinchState&&this.pinchState.scale>t.scale&&i.distanceTo(s)>a?l=t.state.distance:(l=o,this.pinchState&&(this.pinchState.scale=t.scale)),t.state.distance=l,this.emit(`gesture.pinch`,t),!t.defaultPrevented&&(this.locationMotion.set({distance:t.state.distance},0).catch(Y),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(Y)}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 j().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 j(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(Y)}else{let n=e.distanceFromModel(this.modelScene,this.cameraMotion.value.fov,this.camera.aspect),r=new j(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),i=ZU(this.cameraMotion.value,new j).negate(),a=new Wc(r,i).intersectBox(this.modelScene.boundingBox,new j);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>=V9){let e=this.locationMotion.value.distance-s;t.state.distance=e}else{let e=ZU(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(Y)}}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 j,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=LB(),a=J3({panoIndex:r.panoIndex,workCode:r.work.workCode}),o=this.imageOptions.transform,s=Object.assign({key:`pano.${a}`},xq(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)},l,u,d=this.enableHDR?r.images.gainmap:void 0;d&&(l={right:r.images.work.getURL(d.right),left:r.images.work.getURL(d.left),up:r.images.work.getURL(d.up),down:r.images.work.getURL(d.down),front:r.images.work.getURL(d.front),back:r.images.work.getURL(d.back)},u=r.images.work.getURL(d.cfg));let f=`pano:`+K3([c,l,s]),p=this.modelScene.parameter,m;if(p.pano0&&p.pano0.map.name===f?m=p.pano0:p.pano1&&p.pano1.map.name===f&&(m=p.pano1),m)p.pano0&&p.pano0.map!==m.map&&p.pano0.map.dispose(),p.pano1&&p.pano1.map!==m.map&&p.pano1.map!==((t=p.pano0)==null?void 0:t.map)&&p.pano1.map.dispose(),p.set({pano0:m,pano1:m}),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:vi,viaAjax:!0,fetcher:X4(this.fiveId,r.work)},void 0,void 0,void 0,this.renderer),d=u&&l?Promise.all([X4(this.fiveId,r.work).ajax(u,{responseType:`text`}).then(e=>UB(JSON.parse(e.body))),this.textureLoader.loadCubeTexture(l,{imageURL:{transform:o,options:s},format:vi,colorSpace:``,viaAjax:!0,fetcher:X4(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,d]).then(t=>TH(this,[t],void 0,function*([t,o]){var s,c;let{body:l}=t;if(this.destroyed||this.pendingTextureId!==e){l.dispose();return}this.pendingTextureId=null,l.name=f;let u=Array.isArray(l.image)?l.image[0]:l.image,d=(s=u==null?void 0:u.width)==null?2048:s,m=yield d7(this.renderer,l,!0,a8),h=new l8().formPixels(m.data),g={panoId:a,map:l,mapSize:d,mapHistogram:new wo().fromArray(h.toArray()),matrix:r.matrix.clone().premultiply(r.work.transform),zoom:1,gainmap:o?{map:o.map,cfg:o.config}:void 0};p.pano0&&p.pano0.map.dispose(),p.pano1&&p.pano1.map!==((c=p.pano0)==null?void 0:c.map)&&p.pano1.map.dispose(),p.set({pano0:g,pano1:g}),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(Y),this.hideIntersectMesh()}hideIntersectMesh(){this.intersectMesh.visible===!0&&(this.intersectMesh.visible=!1,this.needsRender=!0)}}},Qre={Floorplan:w7,Topview:E7,Panorama:n9,VRPanorama:xre,XRPanorama:I9,Model:Yre,Mapview:U9},G9=`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 $re(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=ZU(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 eie(){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{}}q();function tie(){let e=new is;e.name=`internalLights`;{let t=new Pf(16777215,.1);t.name=`direction0`,t.position.copy(new j(0,1,0)),e.add(t)}{let t=new Pf(16777215,.1);t.name=`direction1`,t.position.copy(new j(-1,-1,-1)),e.add(t)}{let t=new Pf(16777215,.3);t.name=`direction2`,t.position.copy(new j(1,1,1)),e.add(t)}{let t=new Ff(16777215,.6);t.name=`ambient0`,e.add(t)}return e}function nie(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 K9(){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=nie((e=r.getAttribute(`content`))==null?``:e),n=Number(t[`initial-scale`]);if(!isNaN(n))return n}}}return 1}function rie(){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 iie(){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)}}q();var aie=800,q9=90,oie=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/`),sie=new ac,J9=new Os,cie=new wo,lie=new wo,Y9=new N,uie=new A,X9=new WeakMap,Z9=z6([I6(null)]),Q9={},$9=class e extends BB{static get version(){return`1.0.0-alpha.7`}static get dracoPath(){return AX.decoderPath}static set dracoPath(e){AX.setDecoderPath(e)}static get ktx2Path(){return RX.transcoderPath}static set ktx2Path(e){RX.setTranscoderPath(e)}static get useNativeImageBitmap(){return mJ()}static set useNativeImageBitmap(e){pJ(e)}constructor(e={}){var t,n,r,i,a,o,s,c,l,u,d,f;if(super(),this.pbmGaussianSplattingRenderMesh=null,this.fiveId=LB(),Q9[this.fiveId]=this,this.currentUpdateArgs={time:eW(),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 N((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:eW()},this.modeChangeDuration=(s=e.modeChangeDuration)==null?aie:s,this.enableWheel=(c=e.enableWheel)==null?!0:c,this.enableHDR=!!e.enableHDR&&Y8&&!e.forceWebGL,typeof window<`u`)if(`renderer`in e)e.renderer instanceof f5&&this.throwError(Error(`cannot render a internal renderer`)),this.renderer=e.renderer;else try{this.renderer=new f5({outputType:this.enableHDR?ui:void 0,logarithmicDepthBuffer:e.logarithmicDepthBuffer,forceWebGL:(l=e.forceWebGL)==null?!1:l});let t=K9();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 To(1,1,{colorSpace:(d=(u=this.renderer)==null?void 0:u.outputColorSpace)==null?Ta:d,generateMipmaps:!1}),this.renderer&&rq(this.renderer),this.viewport=Object.assign({left:0,bottom:0,width:1,height:1},e.viewport),this.camera=new iW(q9),this.scene=new v5,this.scene.background=this.backgroundColor,this.xrCustomObjectsScene=new ps,this.scene.add(this.xrCustomObjectsScene),this.scene.matrixAutoUpdate=!1,this.requestProxy=(f=e.requestProxy)==null?oie:f,this.networkSubscribe=new mq,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 is,this.helperGroup.name=`helper`,this.helperGroup.matrixAutoUpdate=!1,this.scene.add(this.helperGroup),X9.set(this,Z9),this.modelScene=new E3({fiveId:this.fiveId}),this.modelScene.addEventListener(`model.create`,e=>{this.bindModel(e.model)}),this.scene.add(this.modelScene);let[p]=this.modelScene.setModels(Z9,{forceReplaceImmediately:!0});Q(p,`loaded`,{get(){return!1},set(e){}}),this.videoTexture=new vu(e.videoInstance||eie());let m=tie();this.scene.add(m),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=uJ.shared.add((e,t,...n)=>{this.updateTime(e,t,...n)},!1,0,10));let h=()=>{typeof document<`u`&&document.fullscreenElement===null&&this.currentMode===`VRPanorama`&&this.controller.emit(`vr.requestExit`,$(`vr.requestExit`,{}))},g=()=>{this.needsRender=!0},_=()=>{this.renderer instanceof f5&&this.renderer.reconfigureContext(),this.needsRender=!0},v=()=>{typeof document<`u`&&document.visibilityState===`visible`&&_()},y=()=>{_()};if(this.renderer instanceof f5&&(this.renderer.onDeviceLostCallback=()=>{_()}),typeof document<`u`&&(document.addEventListener(`visibilitychange`,v,!1),document.addEventListener(`fullscreenchange`,h,!1)),typeof window<`u`&&window.addEventListener(`pageshow`,y,!1),this.renderer&&this.renderer.domElement.addEventListener(`webglcontextrestored`,g,!1),this.removeEventListeners=()=>{typeof document<`u`&&(document.removeEventListener(`visibilitychange`,v,!1),document.removeEventListener(`fullscreenchange`,h,!1)),typeof window<`u`&&window.removeEventListener(`pageshow`,y,!1),this.renderer instanceof f5&&(this.renderer.onDeviceLostCallback=void 0),this.renderer&&this.renderer.domElement.removeEventListener(`webglcontextrestored`,g,!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)}}}$re(this),this.fiveRenderer=new K8({outputType:this.enableHDR?ui:void 0}),this.adaptiveLuminancePass=new T8,this.adaptiveLuminancePass.enabled=!1,this.fiveRenderer.composer.addPass(this.adaptiveLuminancePass),this.eyeDomeLightingPass=new D8(this.camera),this.eyeDomeLightingPass.enabled=!1,this.fiveRenderer.composer.addPass(this.eyeDomeLightingPass),this.pbmGaussianSplattingRenderMesh=new lU,this.scene.add(this.pbmGaussianSplattingRenderMesh)}get ident(){return this.fiveId}get panoIndex(){return this.pano.panoIndex}prepare(){return Promise.all([Iq().catch(Y)]).then(Y)}dispose(){var e;if(this.destroyed===!0)return;delete Q9[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(),X9.set(this,Z9),this.renderer&&(!(this.renderer instanceof f5)||this.renderer.isInitialized)&&this.renderer.render(new ps,new Df),this.fiveRenderer.dispose(),this.renderer instanceof f5&&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,Cq(e.panorama)),this.currentMode===`Panorama`&&(n=!0)),e.model&&(Object.assign(this.controllerInits.Model,Cq(e.model)),this.currentMode===`Model`&&(n=!0)),e.floorplan&&(Object.assign(this.controllerInits.Floorplan,Cq(e.floorplan)),this.currentMode===`Floorplan`&&(n=!0)),e.topview&&(Object.assign(this.controllerInits.Topview,Cq(e.topview)),this.currentMode===`Topview`&&(n=!0)),e.mapview&&(Object.assign(this.controllerInits.Mapview,Cq(e.mapview)),this.currentMode===`Mapview`&&(n=!0)),e.vrPanorama&&(Object.assign(this.controllerInits.VRPanorama,Cq(e.vrPanorama)),this.currentMode===`VRPanorama`&&(n=!0)),e.xrPanorama&&(Object.assign(this.controllerInits.XRPanorama,Cq(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 f5)){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=K9(),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=eW(),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 X9.get(this)||Z9}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(()=>q5(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,l,u,d,f,p,m;let h={};typeof r==`number`?h.duration=r:typeof r==`object`&&Object.assign(h,r),this.works===Z9&&(h.duration===void 0&&(h.duration=0),h.effect===void 0&&(h.effect=`instant`));let g={};Object.assign(g,h.model),!g[`3d-tiles`]&&h[`3d-tiles`]&&(g[`3d-tiles`]=h[`3d-tiles`]),!g.textureOptions&&h.textureOptions&&(g.textureOptions=h.textureOptions),!g.textureOptions&&this.textureOptions&&(g.textureOptions=this.textureOptions);let _=[];if(Array.isArray(t))for(let e of t)e instanceof F6?_.push(e):typeof e!=`string`&&`work`in e?_.push(I6(e.work,e)):_.push(I6(e));else t instanceof F6?_.push(t):_.push(I6(t));h.mode===`add`&&(_=[].concat(this.works,_));let v;try{v=z6(_)}catch(e){return this.throwError(e),Promise.reject(e)}for(let e of v)this.bindWorkFetcher(e);n===void 0&&(n=`inherit`),n===`inherit`&&this.works===Z9&&(n=`initial`);let y=this.currentMode,b=v.initial,x=b.work.observers[0],S=x?{workCode:x.work.workCode,panoIndex:x.panoIndex}:{workCode:b.work.workCode,panoIndex:0},C=(a=b.mode)==null?x?`Panorama`:`Mapview`:a,w={};if(n===`inherit`){let e=this.getCurrentState(),[t]=v.filter(t=>t.workCode===e.workCode);if(t)S={workCode:e.workCode,panoIndex:e.panoIndex},C=e.mode,w={longitude:e.latitude,latitude:e.latitude,fov:e.fov,distance:e.distance,offset:e.offset.clone()};else{n={mode:y};let e=(s=(o=v[0])==null?void 0:o.observers)==null?void 0:s[this.panoIndex];e?(n.workCode=e.work.workCode,n.panoIndex=e.panoIndex):typeof v.initial.panoIndex==`number`?(n.workCode=v.initial.work.workCode,n.panoIndex=v.initial.panoIndex):(n.mode===`Panorama`||n.mode===`VRPanorama`||n.mode===`XRPanorama`)&&(n.mode=`Mapview`),n.mode===y&&(n.longitude=this.camera.pose.longitude,n.latitude=this.camera.pose.latitude,n.fov=this.camera.pose.fov)}}if(n===`initial`&&(typeof b.panoIndex==`number`&&(S={workCode:b.work.workCode,panoIndex:b.panoIndex}),b.mode&&(C=b.mode),w={longitude:b.longitude,latitude:b.latitude,fov:b.fov,distance:b.distance,offset:(c=b.offset)==null?void 0:c.clone()}),typeof n==`object`){if(C=(l=n.mode)==null?y:l,typeof n.panoIndex==`number`){let e=v.getObserver({workCode:(d=(u=n.workCode)==null?b.work.workCode:u)==null?``:d,panoIndex:n.panoIndex});e&&(S={workCode:e.work.workCode,panoIndex:e.panoIndex})}w={longitude:n.longitude,latitude:n.latitude,fov:n.fov,distance:n.distance,offset:n.offset?new j().copy(n.offset):void 0}}let T=(f=h.duration)==null?this.modeChangeDuration:f;(C===`Floorplan`||C===`Topview`||C===`Mapview`)&&y===C&&(T=0);let E=`fly`;(C===`Panorama`||C===`VRPanorama`||C===`XRPanorama`)&&y===C&&(E=(p=h.effect)==null?`fade`:p),this.emit(`works.request`,$(`works.request`,{input:t,works:v,userAction:i}));let D=(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:T,effect:E,userAction:i}},this.commonParams()),this.controllerInits[e]),c=W9[o.mode].initAnimationEndState(s);if(this.controller&&y===e)this.controller.updateWork(v,c,{effect:E,duration:T},i)===!1&&(this.controller.destroy(),this.controller=this.applyController(e,s));else{if(this.controller)this.controller.destroy();else{let t=W9[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:y,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)};X9.set(this,v);let ee=Promise.resolve();if(C===e.Mode.Floorplan||C===e.Mode.Topview||C===e.Mode.Mapview||C===e.Mode.Model){this.modelScene.loaded===!1&&(this.camera.setFromPose(w),sne(this.state,this.camera.pose));let e=this.modelScene.setModels(v,g);ee=Promise.all(e.map(e=>e.loadedReady)).then(()=>{this.needsRender=!0,D(C,S,w),this.emit(`camera.update`,$(`camera.update`,{state:this.getCurrentState(),userAction:i}))})}else{D(C,S,w);let e=this.controller,t=!1;this.modelScene.autoRefine=!1;let n=()=>{this.works===v&&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(v,g);ee=Promise.all(r.map(e=>e.initReady)).then(Y),e.once(`pano.arrived`,n),e.once(`pano.cancel`,n),setTimeout(n,((m=h.duration)==null?this.modeChangeDuration:m)+1e3)}return this.emit(`works.load`,$(`works.load`,{input:t,userAction:i,works:v})),ee.then(()=>this.ready()).then(()=>{var e;this.emit(`works.ready`,$(`works.ready`,{input:t,userAction:i,works:v})),(e=this.analysis)==null||e.work(v)})}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}),X9.set(this,Z9),this.modelScene.setModels(Z9,{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:q9,longitude:0,latitude:0,offset:new j(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 ${J3(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?!X3(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(Y):(X3(this.pano,m)||(this.pano=m),this.controller.updateCamera(n,f,i).catch(Y));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=W9[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=uJ.shared.getContext();if(v&&(typeof XRSession<`u`&&v instanceof XRSession&&v.end(),uJ.shared.setContext(null)),t===e.Mode.VRPanorama)this.requestFullscreen(),rie().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(!M9.isBackendXRCapable(this.renderer)){let e=Error(`XRPanorama 需要 WebGL2 回落后端。请在 new Five() 时传入 { forceWebGL: true }。后端在运行时无法切换,设备检测必须发生在 new Five() 之前。`);this.throwError(e),s(e);return}if(!M9.isBrowserXRCapable()){let e=Error(`当前浏览器不支持 WebXR(navigator.xr 不存在)。`);this.throwError(e),s(e);return}iie().then(e=>{uJ.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(()=>{}),uJ.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 TH(this,void 0,void 0,function*(){if(!this.renderer)throw Error(`renderer is not initialized.`);let s=eW(),c=this.renderer.getPixelRatio(),l=this.renderer.getRenderTarget(),u=this.getSize(new A),d=0,f=0,p=1,m=1,h,g,_,v,y;typeof e==`number`?(d=e,typeof t==`number`&&(f=t),typeof n==`number`&&(p=n),typeof r==`number`&&(m=r),h=i,g=a,y=o):(d=e.x,f=e.y,p=e.width,m=e.height,h=e.pixelRatio,g=e.flipY,_=e.helperVisible,v=e.skipPanorama,y=e.buffer),d=Math.floor(d),f=Math.floor(f),p=Math.floor(p),m=Math.floor(m),h=Math.floor(h==null?c:h),g=g==null?!1:g;let b=this.helperVisible,x=this.modelScene.parameter.modelAlpha;this.helperVisible=_==null?this.helperVisible:_,v&&(this.controller instanceof W9.Panorama||this.controller instanceof W9.VRPanorama||this.controller instanceof W9.XRPanorama)&&v===!0&&this.modelScene.parameter.set(`modelAlpha`,1),this.modelScene.update(this.renderer,this.camera);let S=this.getPixelsRenderTarget;S.setSize(p*h,m*h),this.renderer.setRenderTarget(S),this.camera.pixelRatio=h,this.camera.resolution.set(p,m),this.camera.setViewOffset(u.width,u.height,d,u.height-f-m,p,m),this.camera.aspect=u.width/u.height,this.camera.updateTime(s),this.scene.update(this.renderer,this.camera);let C=this.renderer.autoClear,w=this.renderer.autoClearColor,T=this.renderer.autoClearDepth,E=this.renderer.autoClearStencil,D=this.renderer.getClearColor(Y9),ee=this.renderer.getClearAlpha(),te=this.renderer.getScissorTest();this.renderer.autoClear=!0,this.renderer.autoClearColor=!0,this.renderer.autoClearDepth=!0,this.renderer.autoClearStencil=!0,this.renderer.setScissorTest(!1);let ne=this.scene.background;this.scene.background=this.camera.isOrthographicCamera||this.backgroundAlpha<1?null:ne,this.renderer.render(this.scene,this.camera),this.scene.background=ne,this.renderer.autoClear=C,this.renderer.autoClearColor=w,this.renderer.autoClearDepth=T,this.renderer.autoClearStencil=E,this.renderer.setClearColor(D,ee),this.renderer.setScissorTest(te),this.helperVisible=b,x===void 0?this.modelScene.parameter.reset(`modelAlpha`):this.modelScene.parameter.set(`modelAlpha`,x),this.renderer.setRenderTarget(l),this.camera.clearViewOffset(),this.camera.pixelRatio=c,this.camera.resolution.copy(u),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 re=p*h,ie=m*h,ae=re*ie,oe=ae*4;if(y){if(y.length!==oe)throw Error(`buffer length is not equals pixels ${oe}`)}else y=new Uint8Array(oe);let se=yield this.renderer.readRenderTargetPixelsAsync(S,0,0,re,ie),ce=re*4;if(se.length===oe)y.set(se);else{let e=Math.ceil(ce/256)*256;for(let t=0;t<ie;t++){let n=t*e;y.set(se.subarray(n,n+ce),t*ce)}}if(!g){let e=ae/2;for(let t=0,n=0,r=0,i=0;n<e;n++)for(i=(ie-Math.floor(n/re)-1)*re+n%re,r=0;r<4;r++)t=y[n*4+r],y[n*4+r]=y[i*4+r],y[i*4+r]=t}return y})}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(Y9),c=t.getClearAlpha(),l=t.getViewport(cie),u=t.getScissor(lie),d=t.getScissorTest();t.autoClear=!0,t.autoClearColor=!0,t.autoClearDepth=!0,t.autoClearStencil=!0;let f=t.getSize(uie),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&&uJ.shared.add(e,!0)}updateTime(e,t,...n){if(this.currentUpdateArgs={time:e,args:n},this.destroyed)return;if(this.renderer&&RX.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),uJ.shared.add(()=>{this.emit(`models.load`,$(`models.load`,{modelScene:this.modelScene}))},!0,0,10)),t===!1&&this.modelScene.refined===!0&&uJ.shared.add(()=>{this.emit(`models.refined`,$(`models.refined`,{modelScene:this.modelScene}))},!0,0,10)}if(this.camera.autoNearFar){J9.makeEmpty(),J9.expandByObject(this.modelScene.boundingMesh);let t=J9.getBoundingSphere(sie),n=t.radius*2;t.containsPoint(this.camera.position)||(n=this.camera.position.distanceTo(t.center)+t.radius);let r=J(n/500,.001,.1),i=J(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 f5&&!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 f5&&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=Y){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=eW();return Promise.all(r.map(e=>{let t=J3({panoIndex:n.panoIndex,workCode:n.work.workCode}),r=Object.assign({key:`pano.${t}.${e}`},xq(this.imageOptions,[`size`,`format`,`quality`,`forceUseExifOrientation`,`mappings`])),i=n.work.getURL(n.images[e]),a=this.imageOptions.transform?this.imageOptions.transform(i,r):$q(i,r);return X4(this.fiveId,n.work).preload(a)})).then(()=>{let e=eW()-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 Wp(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 A),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 A(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,l,u,d,f;e=xq(e,[`mode`,`workCode`,`panoIndex`,`longitude`,`latitude`,`fov`,`offset`,`distance`]),e.offset&&!(e instanceof j)&&(e.offset=new j(e.offset.x,e.offset.y,e.offset.z));let p;if(typeof e.panoIndex==`number`)if(e.workCode)p={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),p={workCode:t,panoIndex:e.panoIndex}}let m=(a=e.mode)==null?this.state.mode:a,h,g,_,v,y;if(this.controller&&this.controller.stopMomentumMovement(),this.state.mode!==m){if(m===`VRPanorama`){this.changeMode(`VRPanorama`,void 0,void 0,!0);return}if(m===`XRPanorama`){this.changeMode(`XRPanorama`,void 0,void 0,!0);return}let t={workCode:p==null?void 0:p.workCode,panoIndex:p==null?void 0:p.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 j&&(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[m]),r=W9[m].initAnimationEndState(n);h=r.longitude,g=r.latitude,_=r.fov,v=r.offset,y=r.distance}else h=(o=e.longitude)==null?this.state.longitude:o,g=(s=e.latitude)==null?this.state.latitude:s,_=(c=e.fov)==null?this.state.fov:c,v=(l=e.offset)==null?this.state.offset:l,y=(u=e.distance)==null?this.state.distance:u;let b={workCode:(p==null?this.pano:p).workCode,panoIndex:(p==null?this.pano:p).panoIndex,mode:m,longitude:h,latitude:g,fov:_,offset:v,distance:y};this.emit(`state.set`,$(`state.set`,{userAction:n,state:b})),Q5(this.state,b)||(this.controller&&b.mode===`VRPanorama`&&b.mode!==this.state.mode?(Z5(this.state,b),this.changeMode(`VRPanorama`)):this.controller&&b.mode===`XRPanorama`&&b.mode!==this.state.mode?(Z5(this.state,b),this.changeMode(`XRPanorama`)):(Z5(this.state,b),this.controller&&n&&(this.controller.userAction=!1),t&&this.state.mode===b.mode&&(this.syncingState=this.syncState(eW(),0,t),this.syncingState&&((d=this.controller)==null||d.updateTime(eW(),0),this.syncingState=!1)),this.emit(`state.change`,$(`state.change`,{userAction:n,state:this.state})),(f=this.analysis)==null||f.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 W9.Model){if(K5(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(!X3(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 W9.Floorplan||this.controller instanceof W9.Topview||this.controller instanceof W9.Mapview){let e=.2,t=Math.PI/45,n=r?this.state.fov:f8(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:f8(this.camera.pose.distance,this.state.distance,a),s=this.camera.pose.offset.distanceTo(this.state.offset),c=s>e*15?s/15:e,l=r?new j().copy(this.state.offset):p8(this.camera.pose.offset,this.state.offset,c),{longitude:u,latitude:d}=r?{longitude:this.state.longitude,latitude:this.state.latitude}:m8({longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude},{longitude:this.state.longitude,latitude:this.state.latitude},t);if(W5(n,this.camera.pose.fov)||K5(l,this.camera.pose.offset)||W5(o,this.camera.pose.distance)||W5(u,this.camera.pose.longitude,Math.PI*2)||W5(d,this.camera.pose.latitude)){let e={x:l.x,y:l.y,z:l.z},t={fov:n};return Object.assign(e,{distance:o}),Object.assign(t,{longitude:u,latitude:d}),this.controller.stopMomentumMovement(),this.controller.cameraMotion.set(t,0).catch(Y),this.controller.locationMotion.set(e,0).catch(Y),!0}}else{let e=Math.PI/45,t=r?this.state.fov:f8(this.camera.pose.fov,this.state.fov,1),{longitude:n,latitude:i}=r?{longitude:this.state.longitude,latitude:this.state.latitude}:m8({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 j().copy(this.state.offset);if(W5(a,this.camera.pose.distance)&&(this.state.distance=this.camera.pose.distance),K5(o,this.camera.pose.offset)&&(this.state.offset=this.camera.pose.offset.clone()),W5(n,this.camera.pose.longitude,Math.PI*2)||W5(i,this.camera.pose.latitude)||W5(t,this.camera.pose.fov))return this.controller.stopMomentumMovement(),this.controller.cameraMotion.set({longitude:n,latitude:i,fov:t},0).catch(Y),!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 W9.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(Y)}requestFullscreen(){var e;if(!X8)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=()=>{uJ.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 yq({get networkSubscribe(){return t.networkSubscribe},requestProxy(e){return Promise.resolve(e).then(e=>t.requestProxy(e,n)).then(e=>{let t=y6(e,r);return t instanceof Error?Promise.reject(t):t})}});Z4(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=W9[t];this.currentMode=t;let i=new r(n);for(let e of G9)i.on(e,(...t)=>{if(this.emit(e,...t))return!1});{let e=W9[t].initAnimationEndState(n),r=n.initial.userAction;Q5(this.state,e)||(Z5(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&&!Q5(this.state,n)&&(Z5(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&&!Q5(this.state,n)&&(Z5(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&&!Q5(this.state,n)&&(Z5(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&&!Q5(this.state,n)&&(Z5(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&&!Q5(this.state,n)&&(Z5(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&&!Q5(this.state,n)&&(Z5(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 rs;t.matrix.copy(e.matrix).premultiply(e.work.transform),t.matrix.decompose(t.position,t.quaternion,t.scale),t.matrixAutoUpdate=!1;let n=new j(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}};$9.Mode={Panorama:`Panorama`,Model:`Model`,Floorplan:`Floorplan`,Topview:`Topview`,Mapview:`Mapview`,VRPanorama:`VRPanorama`,XRPanorama:`XRPanorama`},typeof window<`u`&&Object.assign(window,{__FIVE_DEBUG__:{THREE:Lm,constructor:$9,instances:Q9}});var die=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}}};e.AdaptiveLuminancePass=T8,e.AnimationFrameLoop=uJ,e.BoundingMesh=w3,e.Camera=iW,e.EffectComposer=V6,e.EyeDomeLightingPass=D8,e.Fetcher=yq,e.Five=$9,e.FivePass=U6,e.FiveRenderer=K8,e.FlowingFireworks3DPass=L8,e.FlowingLight2DPass=j8,e.FlowingLight3DPass=k8,e.FullScreenQuad=H6,e.GSPLAT_PIPELINE_AUTO=tU,e.GSPLAT_PIPELINE_RASTER_CPU_SORT=nU,e.GSPLAT_PIPELINE_RASTER_GPU_SORT=rU,e.GaussianBlurPass=O8,e.Histogram=l8,e.InternalWebGPURenderer=f5,e.Model=h3,e.ModelScene=E3,e.Motion=c$,e.NetworkSubscribe=mq,e.PBMCustomNode=KB,e.PBMGSObject=PB,e.PBMGaussianSplattingObject=PB,e.PBMGaussianSplattingNodeMaterial=tH,e.PBMGaussianSplattingRenderMesh=lU,e.PBMGroup=TB,e.PBMMesh=AB,e.PBMMeshBasicMaterial=uU,e.PBMMeshBasicNodeMaterial=$K,e.PBMMeshPanoOnlyMaterial=dU,e.PBMMeshPanoOnlyNodeMaterial=nq,e.PBMMeshPhongMaterial=fU,e.PBMMeshPhongNodeMaterial=eq,e.PBMMeshPhysicalMaterial=pU,e.PBMMeshPhysicalNodeMaterial=tq,e.PBMPanoFilter=JB,e.PBMPointCloud=lV,e.PBMPointCloudMaterial=aV,e.PBMSkinnedMesh=jB,e.PBMUpdateable=GB,e.PBMVertexMarkFlag=WB,e.PROXY_CONTROLLER_EVENT_NAMES=G9,e.PanoCircleMesh=E5,e.PanoCircleMeshCustom=H5,e.PanoCircleMeshSolid=P5,e.Parameter=F4,e.Scene=v5,e.Subscribe=BB,e.TextureLoader=SJ,e.Tile=_Q,e.Tile3D=J4,e.Tile3DModel=J4,e.TileCache=O$,e.TileNode=_$,e.TileRequestScheduler=T$,e.Tileset=P$,e.Trajectory=x$,e.TrajectoryNode=S$,e.Work=F6,e.WorkResolvedObserver=R6,e.XRButton=die,e.controllersDefaultInitArgs=Qre,e.coordinatesToVector=ZU,e.createDebugBoundingMesh=jte,e.createWorks=z6,e.customNodesCacheKey=qB,e.defaultImageURLTransform=$q,e.draco=AX,e.getViewportScale=K9,e.headingToLongitude=QU,e.imageSupport=Iq,e.isBoundingVolume=dQ,e.isPanoId=Z3,e.loadAt3d=DY,e.loadDome=MY,e.loadDomez=zY,e.loadGltf=WZ,e.loadPbm=aY,e.loadPly=UY,e.longitudeToHeading=tte,e.makeBoundingVolume=fQ,e.panoEqual=X3,e.panoParse=Y3,e.panoStringify=J3,e.parseWork=I6,e.registerPBMMaterials=rq,e.vectorToCoordinates=ete,e.workToJson=j3});
|
|
1565
|
+
`;function mre(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 pre.replace(/\n/g,` `).replace(/\ +/g,` `).replace(/\$id/g,e).replace(/(\d+)px/g,(e,t)=>r(Number(t)))}function hre(){let e=`five_vr_helper_`+LB(),t=mre(e),n=document.createElement(`div`);return n.className=e,n.innerHTML=t,n}q();var S9=new ju(.12,16),C9=G2(.5,.5),w9=X(.017);function gre(e,t){let n=E2(C9.sub(e));return B2(t,t.add(w9),n)}function T9(e,t){let n=E2(C9.sub(e));return X(1).sub(B2(t.sub(w9),t,n))}function _re(){let e={opacity:Z(0)},t=U2(),n=E2(C9.sub(t)),r=X(.01),i=X(.49),a=X(.29),o=X(1).sub(B2(i.sub(r),i,n)),s=B2(a,a.add(r),n),c=q2(.576,.635,1,.3),l=q2(1,1,1,m2(n.sub(i.add(a).div(2))).div(i.sub(a)).mul(1.5).add(.1).clamp(0,1)),u=A2(c,l,l.w),d=new UE;return d.fragmentNode=q2(u.xyz,u.w.mul(e.opacity).mul(o).mul(s)),d.blending=5,d.blendSrc=204,d.blendDst=205,d.blendSrcAlpha=201,d.blendDstAlpha=205,d.depthWrite=!1,d.transparent=!0,{material:d,u:e}}function vre(){let e={circleScale:Z(1),circleFade:Z(0),circleOpacity:Z(.5),loadingAngle:Z(0),loadingOpacity:Z(0),opacity:Z(0),disable:Z(0)},t=U2();E2(C9.sub(t));let n=X(.98).add(m2(N2(G2(1,-1)).dot(t.sub(C9))).mul(2)).clamp(0,1),r=q2(A2(q2(.576,.635,1,1).xyz,q2(1,1,1,1).xyz,e.circleFade.mul(.5)),n.mul(e.circleOpacity).mul(T9(t,X(.3).mul(e.circleScale)))),i=j2(f2.sub(h2(C9.x.sub(t.x),C9.y.sub(t.y))).add(e.loadingAngle),p2),a=q2(1,1,1,X(1).sub(B2(X(0),p2,i)).mul(.9).add(.1).mul(e.loadingOpacity).mul(gre(t,X(.2).mul(e.circleScale))).mul(T9(t,X(.25).mul(e.circleScale)))),o=q2(1,1,1,X(.5).mul(T9(t,X(.32).mul(e.circleScale)))),s=q2(1,1,1,0);s=A2(s,r,r.w),s=A2(s,a,a.w),s=A2(s,o,e.disable);let c=q2(s.xyz,s.w.mul(e.opacity)),l=new UE;return l.fragmentNode=c,l.blending=5,l.blendSrc=204,l.blendDst=205,l.blendSrcAlpha=201,l.blendDstAlpha=205,l.depthWrite=!1,l.transparent=!0,{material:l,u:e}}var yre=class extends rs{constructor(){super(),this.progress=0,this.opacity=0,this.loading=!1,this.current=!1,this.disabled=!1,this.currentMotion=new c$({ringScale:1.1,ringOpacity:0,circleFade:0,circleOpacity:.85,circleScale:1}),this.opacityMotion=new c$({opacity:0}),this.loadingMotion=new c$({opacity:0}),this.disableMotion=new c$({opacity:0}),this.hitTestMesh=new rl(S9,new Gc({blending:5,blendSrc:204,blendDst:205,blendSrcAlpha:201,blendDstAlpha:205,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 rl(S9,e),this.ringU=t;let{material:n,u:r}=vre();this.panoMesh=new rl(S9,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=J(e,0,1),this.opacityMotion.set({opacity:e},30).catch(Y))}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(Y);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(Y)}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(Y):this.loadingMotion.set({opacity:0},0).catch(Y),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(Y),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()}};q();var bre=1500,xre=Object.assign({},Sq(n9,[`maxLatitude`,`minLatitude`])),Sre=class e extends r9{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 ure(this.renderer);let r=hre();this.helperElement=r;let i=new f7(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 l={},u={},d=this.locationMotion.keyframes[0],f=this.locationMotion.keyframes[this.locationMotion.keyframes.length-1],[p,m]=this.locationMotion.getKeyFrameSegment(e),h=this.panoResourceFromLocationMotionKeyframe(p),g=this.panoResourceFromLocationMotionKeyframe(m),_=this.panoResourceFromLocationMotionKeyframe(d),v=this.panoResourceFromLocationMotionKeyframe(f),y=!1;if(this.modelAlphaMotion.ended===!1&&(this.modelAlphaMotion.update(e),l.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.perspToOrthoMotion.ended===!1&&(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(J(this.perspToOrthoMotion.value.perspToOrtho,0,1))),this.locationMotion.ended===!1){this.locationMotion.update(e);let t=this.locationMotion.value.count-m.value.count+1,n=new j().copy(h.position),a=new j().copy(g.position);if(l.progress=t,t>=.01&&t<=.99&&(l.progress=J(g.effectEasing(t),.01,.99)),g.panoPicture&&(t<1?h.panoPicture&&(l.pano0=h.panoPicture):l.pano0=g.panoPicture,l.pano1=g.panoPicture),g.effect===`montage`?l.transition=`BLACK`:g.effect===`spread`?l.transition=`SPREAD`:l.transition=`FADE`,g.effect===`zoomin`||g.effect===`zoomout`?l.progress=Math.pow(t,3):g.effect===`model`&&this.camera.pose.distance<.01&&(l.modelAlpha=1-Math.pow(J(Math.abs(t-.5)*2,0,1),4)),t<1&&g.effect!==`fly`){if(l.pano0&&h.panoPicture){let e={panoId:l.pano0.panoId,map:l.pano0.map,mapHistogram:l.pano0.mapHistogram,mapSize:l.pano0.mapSize,zoom:l.pano0.zoom,matrix:h.panoPicture.matrix.clone().setPosition(g.position),gainmap:l.pano0.gainmap?{map:l.pano0.gainmap.map,cfg:Object.assign({},l.pano0.gainmap.cfg)}:void 0},t=this.panoPictureObserverMap.get(l.pano0);t&&this.panoPictureObserverMap.set(e,t),l.pano0=e}n.copy(a),y=!0}u.distance=this.locationMotion.value.distance,u.offset=new j(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=l.pano0)==null?void 0:r.map)||e===((i=l.pano1)==null?void 0:i.map))continue;e.dispose(),t.panoPicture=null}}o.indexOf(e)>=0||delete this.panoResources[e]}this.currentPano=Y3(g.panoId),this.emit(`pano.moving`,$(`pano.moving`,{userAction:this.userAction,prevPano:Y3(_.panoId),state:Object.assign(Object.assign(Object.assign(Object.assign({},Y3(v.panoId)),{mode:this.mode}),$5(this.camera.pose)),u),options:{},progress:this.locationMotion.progress,error:null}))}n7(l)===!1&&this.modelScene.parameter.set(l),u.offset&&this.camera.position.copy(u.offset);let b=this.camera.pose.longitude,x=this.camera.pose.latitude;this.camera.quaternion.fromArray(this.cardboard.sensor.getOrientation()),this.camera.computePose(),(b!==this.camera.pose.longitude||x!==this.camera.pose.latitude)&&(this.cameraMotion.set(xq(this.camera.pose,[`longitude`,`latitude`]),0).catch(Y),this.emit(`camera.update`,$(`camera.update`,{userAction:!0,state:Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),$5(this.camera.pose))}))),this.works.getObserver(this.currentPano);let S=this.works.getObserver(h.panoId),C=this.works.getObserver(g.panoId),w=new Map;if(S)for(let e of S.accessibleNodes){let t=S.work.observers[e];if(t){let e=J3({panoIndex:t.panoIndex,workCode:t.work.workCode});w.set(e,t)}}if(C)for(let e of C.accessibleNodes){let t=C.work.observers[e];if(t){let e=J3({panoIndex:t.panoIndex,workCode:t.work.workCode});w.set(e,t)}}if(this.panoMeshes.forEach((e,t)=>{let n=w.get(t);n?(e.position.copy(n.position).applyMatrix4(n.work.transform),w.delete(t)):(this.helper.remove(e),e.dispose(),this.panoMeshes.delete(t))}),w.forEach((e,t)=>{let n=new yre;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),w.delete(t)}),this.camera.pose.distance>.1||y?this.panoMeshes.forEach((n,r)=>{n.setOpacity(0),n.updateTime&&n.updateTime(e,t),n.visible=!1}):this.panoMeshes.forEach((e,t)=>{let n=Y3(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(J(1.5/i,0,1)),X3(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<(mJ()?.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 M,panoZoom:1,minLevel:0,level:0};this.tiling.update(e),this.modelScene.parameter.set(`refinedScreen`,null)}else{let e=aJ(i.mapSize),a=e+1,c=new A().copy(this.camera.resolution).multiplyScalar(this.camera.pixelRatio),l=Math.floor(this.tileLevelForFov(this.camera.fov,c)),u=l>e?l:0;this.tiling.setObserver(s);let d={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:u,useHDR:this.modelScene.parameter.useHDR,maxDisplayBoost:this.modelScene.parameter.maxDisplayBoost},f=this.tiling.update(d),p={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:f$(Math.abs(((o=this.modelScene.parameter.progress)==null?0:o)-.5)*2)},m=this.modelScene.parameter.refinedScreen;(f||p.pano!==(m==null?void 0:m.pano)||p.opacity!==(m==null?void 0:m.opacity))&&this.modelScene.parameter.set(`refinedScreen`,p)}}this.panoVideo.object.position.copy(this.camera.position),this.panoVideo.updateTime(e);{let e=g.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 $E(512,{minFilter:qr,magFilter:qr,generateMipmaps:!1}),this.pano1DepthCubeRenderTarget?this.pano1DepthCubeRenderTarget.width!==512&&this.pano1DepthCubeRenderTarget.setSize(512,512):this.pano1DepthCubeRenderTarget=new $E(512,{minFilter:qr,magFilter:qr,generateMipmaps:!1});let e=new ip(this.camera.near,this.camera.far,this.pano0DepthCubeRenderTarget);e.matrix.copy(t.matrix),e.matrixWorld.copy(e.matrix),e.matrixAutoUpdate=!1,Z7(this.renderer,this.modelScene,e,500);let r=new ip(this.camera.near,this.camera.far,this.pano1DepthCubeRenderTarget);r.matrix.copy(n.matrix),r.matrixWorld.copy(r.matrix),r.matrixAutoUpdate=!1,Z7(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 A(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>bre){let e=this.activePanoMesh,t=null;return this.panoMeshes.forEach((n,r)=>{n===e&&(t=r)}),t!==null&&this.moveToPano(Y3(t),{},!0),this.activePanoMesh=void 0,this.activeTime=void 0,e}let r=this.camera.getDirection(new j),i=new Wp(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=>J3({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[l]=o.sort((e,t)=>e.intersection.distance-t.intersection.distance);l?(a=l.intersection,this.activePanoMesh!==l.panoMesh&&(this.activePanoMesh=l.panoMesh,this.activeTime=e),this.intersectMesh.position.copy(l.panoMesh.position),this.intersectMesh.lookAt(this.camera.position)):(this.activePanoMesh=void 0,this.activeTime=void 0),a||(a=this.modelScene.intersectRaycaster(i)[0]);let u=$(`intersect.update`,{raycaster:i,intersection:a==null?null:a,object:this.intersectMesh});if(this.emit(`intersect.update`,u),u.defaultPrevented){this.hideIntersectMesh();return}if(a&&a.face){let e=a.face.normal,t=new co;t.setFromUnitVectors(new j(0,0,1),e),this.intersectMesh.quaternion.copy(t);let n=a.point.clone();this.intersectMesh.position.copy(n),l?this.intersectMesh.visible=!1:this.intersectMesh.visible=!0}else this.intersectMesh.visible=!1;return l==null?void 0:l.panoMesh}onPanGesture(){}onTapGesture(){}onPinchGesture(){}onMouseMove(){}onMouseOut(){}};q();var E9=.01,D9=`183`,O9={isXRRenderTarget:!0,_hasExternalTextures:!1,_autoAllocateDepthBuffer:!0,_isOpaqueFramebuffer:!0};function k9(e,t,n,r){let i=new To(t,n,{format:vi,type:ri,colorSpace:e.outputColorSpace,stencilBuffer:e.stencil===!0,resolveDepthBuffer:r,resolveStencilBuffer:r});return Object.assign(i,O9),i}var Cre=class{constructor(e,t={}){var n;this.resources=null,this.warnedRevision=!1,this._outputBufferType=null,this.clearColorScratch=new N,this.viewportScratch=new wo,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=k9(this.renderer,1,1,!0);try{let e=r;for(let[n,r]of Object.entries(O9))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=183),缺失或不符:${t.join(`、`)}`);D9!==`183`&&!this.warnedRevision&&(this.warnedRevision=!0,console.warn(`[RenderTargetBridge] THREE.REVISION=183,XR 标志位语义仅在 r${D9} 复核过,继续运行`))}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=183)`)}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:l,width:u,height:d}=this.syncResources(e);r.setScissorTest(!1),r.setRenderTarget(s);let f=t.background;r.setClearColor(f instanceof N?f: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,d-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 p=r.getPixelRatio();r.setViewport(0,0,(u+E9)/p,(d+E9)/p),l.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 To(t,n,{format:vi,type:this.supportsHalfFloat()?ui:ri,colorSpace:Ea,depthBuffer:!0,stencilBuffer:!1,samples:this.atlasSamples,generateMipmaps:!1,minFilter:Qr,magFilter:Qr}),i=k9(this.renderer,t,n,e.ignoreDepthValues===!1),a=new UE;a.fragmentNode=q2(H2(r.texture).rgb,1),a.depthTest=!1,a.depthWrite=!1;let o=new Lj(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}};q();var wre=class{constructor(){this.root=new is,this._entries=new Map,this._dir=new j}add(e){for(let t of e){if(this._entries.has(t))continue;let e=new rs,n=new rs;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)}},Tre=5e3;function Ere(e){let t=[...new Set([e,`local`,`viewer`])];return t.slice(0,t.indexOf(`viewer`)+1)}function Dre(){let e=Error(`会话在参考空间解析前已结束`);return e.aborted=!0,e}function A9(e){return e.map(e=>`${e.type}(${e.reason})`).join(`, `)}function Ore(e,t){return TH(this,arguments,void 0,function*(e,t,n={}){var r,i,a;let o=(r=n.timeoutMs)==null?Tre: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=Ere(t),d=[];for(let n of u){let r=yield kre(e,n,o,c,l);if(s!=null&&s())throw Dre();if(r.ok)return n!==t&&console.warn(`[XR] 参考空间降级:期望 ${t},实际采用 ${n};失败:${A9(d)}`),{space:r.space,type:n,failures:d};d.push({type:n,reason:r.reason})}let f=Error(`所有参考空间均不可用(期望 ${t}):${A9(d)}`);throw f.attempts=d,f})}function kre(e,t,n,r,i){return TH(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)}})}q();var Are=5e3,j9=`会话在进入过程中已结束`,M9=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 wre,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 j,this.info={time:0,hasPose:!1,headOrientation:new co,headLocal:new j,views:[]},this.viewPool=[{eye:0,viewport:new wo},{eye:1,viewport:new wo}],this.frameViews=[],this.bridgeEyes=[],this.tmpViewport=new wo,this.tmpSize=new A,this.onSessionEndEvent=()=>{var e;if(this._session){if(!this.entered){this.endedDuringEnter=!0,(e=this.firstFrameWaiter)==null||e.reject(Error(j9));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 Cre(e,{atlasSamples:(r=this.options.atlasSamples)==null?0:r}),this.device=r5(),this.profile=s5(this.device,this.options.deviceProfile,e=>{console.warn(`[XR] Device_Profile 字段 ${e} 非法,已回落默认值`)});let i=()=>{let t=new Df;return t.coordinateSystem=e.coordinateSystem,t};this.eyeCameras=[i(),i()],this.info.views=this.frameViews}enter(e){return TH(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=J(o,0,1)),e.updateRenderState({baseLayer:a}),this.submittedNear=e.renderState.depthNear,this.submittedFar=e.renderState.depthFar,this.bridge.init(a);let s=yield Ore(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),uJ.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(j9):e}}})}exit(){return TH(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(j9)),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(j9)}waitFirstFrame(){var e;if(this.firstFrameArrived)return Promise.resolve();let t=(e=this.options.firstFrameTimeoutMs)==null?Are: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 wo).clone(),autoClear:e.autoClear,autoClearColor:e.autoClearColor,autoClearDepth:e.autoClearDepth,autoClearStencil:e.autoClearStencil,pixelRatio:e.getPixelRatio(),size:e.getSize(new A).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=uJ.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(j9)),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){}}};q();var N9={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 P9(e){return TH(this,void 0,void 0,function*(){let t=yield fetch(e);if(t.ok)return t.json();throw Error(t.statusText)})}function jre(e){return TH(this,void 0,void 0,function*(){if(!e)throw Error(`No basePath supplied`);return yield P9(`${e}/profilesList.json`)})}function Mre(e,t){return TH(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 jre(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 P9(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 Nre={xAxis:0,yAxis:0,button:0,state:N9.ComponentState.DEFAULT};function Pre(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 Fre=class{constructor(e){this.componentProperty=e.componentProperty,this.states=e.states,this.valueNodeName=e.valueNodeName,this.valueNodeProperty=e.valueNodeProperty,this.valueNodeProperty===N9.VisualResponseProperty.TRANSFORM&&(this.minNodeName=e.minNodeName,this.maxNodeName=e.maxNodeName),this.value=0,this.updateFromComponent(Nre)}updateFromComponent({xAxis:e,yAxis:t,button:n,state:r}){let{normalizedXAxis:i,normalizedYAxis:a}=Pre(e,t);switch(this.componentProperty){case N9.ComponentProperty.X_AXIS:this.value=this.states.includes(r)?i:.5;break;case N9.ComponentProperty.Y_AXIS:this.value=this.states.includes(r)?a:.5;break;case N9.ComponentProperty.BUTTON:this.value=this.states.includes(r)?n:0;break;case N9.ComponentProperty.STATE:this.valueNodeProperty===N9.VisualResponseProperty.VISIBILITY?this.value=this.states.includes(r):this.value=+!!this.states.includes(r);break;default:throw Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`)}}},Ire=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 Fre(t.visualResponses[e]);this.visualResponses[e]=n}),this.gamepadIndices=Object.assign({},t.gamepadIndices),this.values={state:N9.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=N9.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=N9.ComponentState.PRESSED:(t.touched||this.values.button>N9.ButtonTouchThreshold)&&(this.values.state=N9.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===N9.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>N9.AxisTouchThreshold&&(this.values.state=N9.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===N9.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>N9.AxisTouchThreshold&&(this.values.state=N9.ComponentState.TOUCHED)),Object.values(this.visualResponses).forEach(e=>{e.updateFromComponent(this.values)})}},Lre=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 Ire(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)})}},Rre=`https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles`,zre=`generic-trigger`,Bre=class extends rs{constructor(){super(),this.motionController=null,this.envMap=null}setEnvironmentMap(e){return this.envMap==e?this:(this.envMap=e,this.traverse(e=>{e instanceof rl&&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===N9.VisualResponseProperty.VISIBILITY?t.visible=i:a===N9.VisualResponseProperty.TRANSFORM&&(t.quaternion.copy(n.quaternion).slerp(r.quaternion,i),t.position.lerpVectors(n.position,r.position,i)))})}))}};function Vre(e,t){Object.values(e.components).forEach(e=>{let{type:n,touchPointNodeName:r,visualResponses:i}=e;if(n===N9.ComponentType.TOUCHPAD)if(e.touchPointNode=t.getObjectByName(r),e.touchPointNode){let t=new rl(new gd(.001),new Gc({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===N9.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 F9(e,t){Vre(e.motionController,t),e.envMap&&t.traverse(t=>{t instanceof rl&&t.isMesh&&(t.material.envMap=e.envMap,t.material.needsUpdate=!0)}),e.add(t)}var Hre=class{constructor(e=null){this.gltfLoader=e,this.path=Rre,this._assetCache={}}createControllerModel(e){let t=new Bre,n=null;return e.addEventListener(`connected`,e=>{let r=e.data;r.targetRayMode!==`tracked-pointer`||!r.gamepad||Mre(r,this.path,zre).then(({profile:e,assetPath:i})=>{t.motionController=new Lre(r,e,i);let a=this._assetCache[t.motionController.assetUrl];if(a)n=a.scene.clone(),F9(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(),F9(t,n)})}}).catch(e=>{console.warn(e)})}),e.addEventListener(`disconnected`,()=>{t.motionController=null,t.remove(n),n=null}),t}},Ure=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))}};q();var I9=Object.assign(Object.assign({},Sq(n9,[`maxLatitude`,`minLatitude`])),{referenceSpaceType:`local-floor`,foveation:1,showControllerModel:!0,showPointerRay:!0,deviceProfile:{}}),L9=5,Wre=1e-4,Gre=1500;function Kre(){return{load(e,t){bq.ajax(e,{responseType:`arraybuffer`}).then(t=>{var n;return UZ(t.body,{resourcePath:e.slice(0,e.lastIndexOf(`/`)+1),search:(n=e.split(`?`)[1])==null?``:n,fetcher:bq})}).then(e=>t(e)).catch(t=>{console.warn(`[XRPanorama] 手柄模型 glTF 加载失败,跳过模型挂载:`,e,t)})}}}var qre=class e extends r9{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 Ure,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=I9,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 M9(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:c5(t)}))},onSessionEnd:e=>{this.emit(`xr.session.end`,$(`xr.session.end`,{session:null,machineType:c5(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=uJ.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 Wp;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 Hre;e.gltfLoader=Kre(),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 rs,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 pc;e.setAttribute(`position`,new tc([0,0,0,0,0,-5],3));let r=new $l({color:16777215,depthTest:!1,depthWrite:!1,transparent:!0}),i=new uu(e,r);i.renderOrder=999,i.frustumCulled=!1,t.targetRay.add(i),n.ray=i,n.rayLength=L9}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=L9;if(e&&t&&e===this.controllerRaycasters[a]&&(o=Math.min(e.ray.origin.distanceTo(t),L9)),r.rayLength!==void 0&&Math.abs(r.rayLength-o)<Wre)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:c5(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>Gre){let e=this.activePanoMesh,t=null;return this.panoMeshes.forEach((n,r)=>{n===e&&(t=r)}),t!==null&&(this.moveToPano(Y3(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=>J3({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 l=$(`intersect.update`,{raycaster:r,intersection:i==null?null:i,object:this.intersectMesh});if(this.emit(`intersect.update`,l),l.defaultPrevented){this.hideIntersectMesh();return}if(i&&i.face){let e=i.face.normal,t=new co;t.setFromUnitVectors(new j(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]=vQ(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===J3(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(){}};q();var Jre=new j(0,1.6,0),R9=new Os,z9=new j,Yre=Object.assign({},D7),Xre=class e extends O7{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:l,currentState:u}=e.initial,d=typeof l.panoIndex==`number`?{workCode:(r=(t=l.workCode)==null?(n=s.works[0])==null?void 0:n.workCode:t)==null?``:r,panoIndex:l.panoIndex}:{workCode:u.workCode,panoIndex:u.panoIndex},f=c.getObserver(d),p=J((i=l.fov)==null?!f||t7(u.mode)?u.fov:s.defaultFov:i,s.minFov,s.maxFov),m=(a=l.longitude)==null?u.longitude:a,h=J(typeof s.minLatitude==`function`?s.minLatitude(p):s.minLatitude,-Math.PI/2,Math.PI/2),g=J(typeof s.maxLatitude==`function`?s.maxLatitude(p):s.maxLatitude,-Math.PI/2,Math.PI/2),_=J((o=l.latitude)==null?!f||t7(u.mode)?u.latitude:s.defaultLatitude:o,h,g),v=new j;if(s.initial.state.offset)v.copy(s.initial.state.offset);else if(f)v.copy(f.position).applyMatrix4(f.work.transform);else{let e=ZU(u).setLength(u.distance);v.copy(s.initial.currentState.offset).sub(e)}return{workCode:d.workCode,panoIndex:d.panoIndex,mode:`Model`,longitude:m,latitude:_,fov:p,offset:v,distance:0}}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`Model`,this.locationMotion=new c$({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 c$({modelAlpha:this.modelScene.parameter.resolveValue().modelAlpha}),this.perspToOrthoMotion=new c$({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(Y),this.cameraMotion.set(i,t).catch(Y)})}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(Y),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(J(this.perspToOrthoMotion.value.perspToOrtho,0,1))),!this.locationMotion.ended){this.locationMotion.update(e),i.distance=this.locationMotion.value.distance,i.offset=new j(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z);let t=new j(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)&&(R9.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform),R9.containsPoint(t)))for(let t of e.observers)n.push(t)}let r=vQ(n,e=>z9.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),n7(r)||this.modelScene.parameter.set(r),n7(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=J(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(Y),this.modelAlphaMotion.set(s,i).catch(Y),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(eW())[1],t=this.locationMotion.getKeyFrameSegment(eW())[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 j(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 j().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=eW(),s=new j(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),c=s.distanceTo(e),l=this.locationMotion.getProgressVelocity(o),u=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;u+=Math.sqrt(Math.pow(i-t,2)+Math.pow(a-n,2)+Math.pow(o-r,2))}let d=c===0?0:l*u/c,f=this.calculateMovingDuration(t.duration,c),p={x:e.x,y:e.y,z:e.z,distance:0},m={longitude:t.longitude,latitude:t.latitude,fov:t.fov},h=[];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)&&(R9.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform),R9.containsPoint(s)))for(let t of e.observers)h.push(t)}let g=vQ(h,e=>z9.copy(e.position).applyMatrix4(e.work.transform).distanceTo(s)),_=g?{workCode:g.work.workCode,panoIndex:g.panoIndex}:{workCode:``,panoIndex:0},v=Object.assign(Object.assign({},_),{mode:this.mode,longitude:(r=m.longitude)==null?this.camera.pose.longitude:r,latitude:(i=m.latitude)==null?this.camera.pose.latitude:i,fov:(a=m.fov)==null?this.camera.pose.fov:a,offset:e.clone(),distance:0}),y=this.currentPano;this.emit(`pano.moveTo`,$(`pano.moveTo`,{options:t,prevPano:y,progress:0,state:v,userAction:this.userAction,error:null})),t.moveStartCallback&&t.moveStartCallback(v),this.cameraMotion.set(m,f).catch(Y),this.locationMotion.set(p,f,d).then(()=>{for(let e of this.modelScene.children)e instanceof h3&&e.show();let e=Object.assign(Object.assign(Object.assign({},_),{mode:this.mode}),$5(this.camera.pose));this.emit(`pano.arrived`,$(`pano.arrived`,{options:t,prevPano:y,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:y,progress:0,state:v,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 j(0,1,0).angleTo(e)>Math.PI/3){let r=new Wp;r.firstHitOnly=!0;let i=e.clone().setLength(.3).add(t);r.set(i,new j(0,-1,0)),n=this.modelScene.intersectRaycaster(r)[0]}}if(n){let t=new j().copy(n.point).add(Jre),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)&&(R9.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform),R9.containsPoint(t)))for(let t of e.observers)r.push(t)}let[i,a]=vQ(r,e=>z9.copy(e.position).applyMatrix4(e.work.transform).distanceTo(t),!0);i&&a<5&&(t.y=z9.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()}};q();var B9=new Os,Zre=new j,V9=.5,H9=Math.PI/7,U9={defaultLongitude:Math.PI/4,defaultLatitude:Math.PI/4,defaultDistance:150,maxLatitude:Math.PI/2,minLatitude:0,cameraType:`auto`,cameraFence:null,intersectMeshCreator:()=>new S7},W9={Floorplan:T7,Topview:Sne,Panorama:r9,VRPanorama:Sre,XRPanorama:qre,Model:Xre,Mapview:class e extends m7{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?U9.defaultLongitude:n,defaultLatitude:(r=t.defaultLatitude)==null?U9.defaultLatitude:r,defaultDistance:(i=t.defaultDistance)==null?U9.defaultDistance:i,maxLatitude:(a=t.maxLatitude)==null?U9.maxLatitude:a,minLatitude:(o=t.minLatitude)==null?U9.minLatitude:o,cameraType:(s=t.cameraType)==null?U9.cameraType:s,cameraFence:(c=t.cameraFence)==null?U9.cameraFence:c,intersectMeshCreator:(l=t.intersectMeshCreator)==null?U9.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 l=this.parseArgs(t),u=l.works,d=l.modelScene,{state:f,currentState:p}=t.initial,m=typeof f.panoIndex==`number`?{workCode:(i=(n=f.workCode)==null?(r=l.works[0])==null?void 0:r.workCode:n)==null?``:i,panoIndex:f.panoIndex}:{workCode:p.workCode,panoIndex:p.panoIndex},h=(a=f.fov)==null?60:a,g=J(typeof l.minLatitude==`function`?l.minLatitude(h):l.minLatitude,-Math.PI/2,Math.PI/2),_=J(typeof l.maxLatitude==`function`?l.maxLatitude(h):l.maxLatitude,-Math.PI/2,Math.PI/2),v=J((o=f.latitude)==null?e7(p.mode)?p.latitude:l.defaultLatitude:o,g,_),y=e.distanceFromModel(l.modelScene,h,l.camera.aspect),b=new j,x=(s=f.distance)==null?Math.min(l.defaultDistance,y):s,S=(c=f.longitude)==null?e7(p.mode)?p.longitude:l.defaultLongitude:c;if(f.offset)b.copy(f.offset);else{let e=u.getObserver(m);l.defaultDistance<y&&e?(b.copy(e.position).applyMatrix4(e.work.transform),f.longitude===void 0&&(S=p.longitude)):(d.boundingBox.getCenter(b),x=y)}return Object.assign(Object.assign({},m),{mode:`Mapview`,longitude:S,latitude:v,fov:h,offset:b,distance:x})}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 c$({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 c$({modelAlpha:this.modelScene.parameter.resolveValue().modelAlpha}),this.perspToOrthoMotion=new c$({perspToOrtho:this.camera.perspToOrtho.x}),this.pendingTextureId=null,this.textureLoader=new SJ,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 Os&&e.cameraFence instanceof Os||this.cameraFence instanceof ac&&e.cameraFence instanceof ac?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(Y),(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(Y),!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(Y),this.cameraMotion.set(i,t).catch(Y)})}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(Y),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 j(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(Y),this.perspToOrthoMotion.ended||(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(J(this.perspToOrthoMotion.value.perspToOrtho,0,1))),n7(n)||this.modelScene.parameter.set(n),n7(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=ZU(this.camera.pose,new j),t=new j().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 j),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(Y)}}if(this.intersectMesh&&this.intersectMesh.parent){let e=J(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(eW())[1],t=this.locationMotion.getKeyFrameSegment(eW())[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 j(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(Y),this.modelAlphaMotion.set({modelAlpha:1},i/3).catch(Y),this.cameraMotion.set(s,i).catch(Y),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}),$5(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)&&(B9.copy(t.observerBox).expandByScalar(10).applyMatrix4(t.transform),B9.containsPoint(e.ray.origin)||e.ray.intersectsBox(B9)))for(let e of t.observers)n.push(e)}let[r,i]=vQ(n,e=>Zre.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 A);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=XU(this.cameraMotion.value.longitude+a.longitude),c=J(typeof this.minLatitude==`function`?this.minLatitude(o):this.minLatitude,-Math.PI/2,Math.PI/2),l=J(typeof this.maxLatitude==`function`?this.maxLatitude(o):this.maxLatitude,-Math.PI/2,Math.PI/2),u=J(this.cameraMotion.value.latitude+a.latitude,c,l),d=new j(this.locationMotion.value.x+a.x,this.locationMotion.value.y+a.y,this.locationMotion.value.z+a.z),f=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:s,latitude:u,offset:d,fov:o,distance:this.locationMotion.value.distance}),p=e.state.offset.clone().sub(ZU(e.state).setLength(f.distance)),m=!(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(p):!0)===!1&&(m=!0);let h=$(`gesture.momentum`,Object.assign(Object.assign({},e),{isFirst:t,isFinal:m,state:f}));if(this.emit(`gesture.fire`,h),this.inMomentumMovement.event=h,this.emit(`gesture.momentum`,h),e.defaultPrevented){this.inMomentumMovement=null;return}this.inMomentumMovement&&(this.cameraMotion.set({longitude:s,latitude:u},0).catch(Y),this.locationMotion.set({x:f.offset.x,y:f.offset.y,z:f.offset.z,distance:f.distance},0).catch(Y),m?this.inMomentumMovement=null:uJ.shared.add((t,n)=>{this.requestMomentumMovement(e,!1,i,n)},!0))}fixFinalState(e){if(this.perspToOrthoMotion.getTargetKeyframe().value.perspToOrtho===1)return;let t=ZU(e,new j),n=new j().copy(e.offset).sub(t.clone().setLength(e.distance)),r=new Wp(n,t);r.params.Points={threshold:.1},r.firstHitOnly=!0,r.hitFilter=e=>e.distance>V9+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 jl(new j(0,1,0),-this.modelScene.boundingBox.min.y),t=r.ray.intersectPlane(e,new j);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&&W5(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 j().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 jl(new j(0,1,0),0),t=n.ray.intersectPlane(e,new j);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 j().copy(this.camera.pose.offset).sub(this.camera.position).normalize(),t=new jl().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 j(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),i=ZU(this.cameraMotion.value).setLength(this.locationMotion.value.distance).add(r),a=new j().copy(i).sub(n.target).length();a*=Math.tan(this.camera.pose.fov/2*Math.PI/180);let o=this.renderer.getSize(new A),s=2*t.x*a/o.y,c=2*t.y*a/o.y,l=new j;l.setFromMatrixColumn(this.camera.matrix,0),l.multiplyScalar(-s),r.add(l),this.camera.pose.latitude<H9?l.setFromMatrixColumn(this.camera.matrix,1):(l.setFromMatrixColumn(this.camera.matrix,0),l.crossVectors(this.camera.up,l)),l.multiplyScalar(c),r.add(l);let u=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=u,this.emit(`gesture.pan`,e),e.defaultPrevented)return;if(this.locationMotion.set({x:u.offset.x,y:u.offset.y,z:u.offset.z},0).catch(Y),e.isFinal&&(this.fixFinalState(u),Object.assign(e,{__fixFinalState:!0}),this.locationMotion.set({distance:u.distance,x:u.offset.x,y:u.offset.y,z:u.offset.z},0).catch(Y)),e.isFinal){let t=this.renderer.getSize(new A),n=2*e.velocityX*a/t.y,r=2*e.velocityY*a/t.y,i=new j,o=new j;i.setFromMatrixColumn(this.camera.matrix,0),i.multiplyScalar(-n),o.add(i),this.camera.pose.latitude<H9?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:LB()},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=XU(this.cameraMotion.value.longitude+r.longitude),a=this.camera.pose.fov,o=J(typeof this.minLatitude==`function`?this.minLatitude(a):this.minLatitude,-Math.PI/2,Math.PI/2),s=J(typeof this.maxLatitude==`function`?this.maxLatitude(a):this.maxLatitude,-Math.PI/2,Math.PI/2),c=J(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(Y):this.cameraMotion.set({longitude:l.longitude,latitude:l.latitude},0).catch(Y),e.isFinal){let t=e.velocityX,n=e.velocityY;this.inMomentumMovement={uuid:LB()},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 j),a=e.distanceFromModel(this.modelScene,this.cameraMotion.value.fov,this.camera.aspect),o=J(r/t.scale,V9,1/0),s=t.state.offset.clone().sub(ZU(t.state).setLength(o)),c=this.modelScene.boundingBox.containsPoint(s),l;if(!c&&this.pinchState&&this.pinchState.scale>t.scale&&i.distanceTo(s)>a?l=t.state.distance:(l=o,this.pinchState&&(this.pinchState.scale=t.scale)),t.state.distance=l,this.emit(`gesture.pinch`,t),!t.defaultPrevented&&(this.locationMotion.set({distance:t.state.distance},0).catch(Y),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(Y)}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 j().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 j(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(Y)}else{let n=e.distanceFromModel(this.modelScene,this.cameraMotion.value.fov,this.camera.aspect),r=new j(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),i=ZU(this.cameraMotion.value,new j).negate(),a=new Wc(r,i).intersectBox(this.modelScene.boundingBox,new j);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>=V9){let e=this.locationMotion.value.distance-s;t.state.distance=e}else{let e=ZU(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(Y)}}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 j,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=LB(),a=J3({panoIndex:r.panoIndex,workCode:r.work.workCode}),o=this.imageOptions.transform,s=Object.assign({key:`pano.${a}`},xq(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)},l,u,d=this.enableHDR?r.images.gainmap:void 0;d&&(l={right:r.images.work.getURL(d.right),left:r.images.work.getURL(d.left),up:r.images.work.getURL(d.up),down:r.images.work.getURL(d.down),front:r.images.work.getURL(d.front),back:r.images.work.getURL(d.back)},u=r.images.work.getURL(d.cfg));let f=`pano:`+K3([c,l,s]),p=this.modelScene.parameter,m;if(p.pano0&&p.pano0.map.name===f?m=p.pano0:p.pano1&&p.pano1.map.name===f&&(m=p.pano1),m)p.pano0&&p.pano0.map!==m.map&&p.pano0.map.dispose(),p.pano1&&p.pano1.map!==m.map&&p.pano1.map!==((t=p.pano0)==null?void 0:t.map)&&p.pano1.map.dispose(),p.set({pano0:m,pano1:m}),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:vi,viaAjax:!0,fetcher:X4(this.fiveId,r.work)},void 0,void 0,void 0,this.renderer),d=u&&l?Promise.all([X4(this.fiveId,r.work).ajax(u,{responseType:`text`}).then(e=>UB(JSON.parse(e.body))),this.textureLoader.loadCubeTexture(l,{imageURL:{transform:o,options:s},format:vi,colorSpace:``,viaAjax:!0,fetcher:X4(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,d]).then(t=>TH(this,[t],void 0,function*([t,o]){var s,c;let{body:l}=t;if(this.destroyed||this.pendingTextureId!==e){l.dispose();return}this.pendingTextureId=null,l.name=f;let u=Array.isArray(l.image)?l.image[0]:l.image,d=(s=u==null?void 0:u.width)==null?2048:s,m=yield d7(this.renderer,l,!0,a8),h=new l8().formPixels(m.data),g={panoId:a,map:l,mapSize:d,mapHistogram:new wo().fromArray(h.toArray()),matrix:r.matrix.clone().premultiply(r.work.transform),zoom:1,gainmap:o?{map:o.map,cfg:o.config}:void 0};p.pano0&&p.pano0.map.dispose(),p.pano1&&p.pano1.map!==((c=p.pano0)==null?void 0:c.map)&&p.pano1.map.dispose(),p.set({pano0:g,pano1:g}),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(Y),this.hideIntersectMesh()}hideIntersectMesh(){this.intersectMesh.visible===!0&&(this.intersectMesh.visible=!1,this.needsRender=!0)}}},Qre={Floorplan:w7,Topview:E7,Panorama:n9,VRPanorama:xre,XRPanorama:I9,Model:Yre,Mapview:U9},G9=`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 $re(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=ZU(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 eie(){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{}}q();function tie(){let e=new is;e.name=`internalLights`;{let t=new Pf(16777215,.1);t.name=`direction0`,t.position.copy(new j(0,1,0)),e.add(t)}{let t=new Pf(16777215,.1);t.name=`direction1`,t.position.copy(new j(-1,-1,-1)),e.add(t)}{let t=new Pf(16777215,.3);t.name=`direction2`,t.position.copy(new j(1,1,1)),e.add(t)}{let t=new Ff(16777215,.6);t.name=`ambient0`,e.add(t)}return e}function nie(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 K9(){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=nie((e=r.getAttribute(`content`))==null?``:e),n=Number(t[`initial-scale`]);if(!isNaN(n))return n}}}return 1}function rie(){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 iie(){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)}}q();var aie=800,q9=90,oie=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/`),sie=new ac,J9=new Os,cie=new wo,lie=new wo,Y9=new N,uie=new A,X9=new WeakMap,Z9=z6([I6(null)]),Q9={},$9=class e extends BB{static get version(){return`1.0.0-alpha.8`}static get dracoPath(){return AX.decoderPath}static set dracoPath(e){AX.setDecoderPath(e)}static get ktx2Path(){return RX.transcoderPath}static set ktx2Path(e){RX.setTranscoderPath(e)}static get useNativeImageBitmap(){return mJ()}static set useNativeImageBitmap(e){pJ(e)}constructor(e={}){var t,n,r,i,a,o,s,c,l,u,d,f;if(super(),this.pbmGaussianSplattingRenderMesh=null,this.fiveId=LB(),Q9[this.fiveId]=this,this.currentUpdateArgs={time:eW(),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 N((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:eW()},this.modeChangeDuration=(s=e.modeChangeDuration)==null?aie:s,this.enableWheel=(c=e.enableWheel)==null?!0:c,this.enableHDR=!!e.enableHDR&&Y8&&!e.forceWebGL,typeof window<`u`)if(`renderer`in e)e.renderer instanceof f5&&this.throwError(Error(`cannot render a internal renderer`)),this.renderer=e.renderer;else try{this.renderer=new f5({outputType:this.enableHDR?ui:void 0,logarithmicDepthBuffer:e.logarithmicDepthBuffer,forceWebGL:(l=e.forceWebGL)==null?!1:l});let t=K9();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 To(1,1,{colorSpace:(d=(u=this.renderer)==null?void 0:u.outputColorSpace)==null?Ta:d,generateMipmaps:!1}),this.renderer&&rq(this.renderer),this.viewport=Object.assign({left:0,bottom:0,width:1,height:1},e.viewport),this.camera=new iW(q9),this.scene=new v5,this.scene.background=this.backgroundColor,this.xrCustomObjectsScene=new ps,this.scene.add(this.xrCustomObjectsScene),this.scene.matrixAutoUpdate=!1,this.requestProxy=(f=e.requestProxy)==null?oie:f,this.networkSubscribe=new mq,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 is,this.helperGroup.name=`helper`,this.helperGroup.matrixAutoUpdate=!1,this.scene.add(this.helperGroup),X9.set(this,Z9),this.modelScene=new E3({fiveId:this.fiveId}),this.modelScene.addEventListener(`model.create`,e=>{this.bindModel(e.model)}),this.scene.add(this.modelScene);let[p]=this.modelScene.setModels(Z9,{forceReplaceImmediately:!0});Q(p,`loaded`,{get(){return!1},set(e){}}),this.videoTexture=new vu(e.videoInstance||eie());let m=tie();this.scene.add(m),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=uJ.shared.add((e,t,...n)=>{this.updateTime(e,t,...n)},!1,0,10));let h=()=>{typeof document<`u`&&document.fullscreenElement===null&&this.currentMode===`VRPanorama`&&this.controller.emit(`vr.requestExit`,$(`vr.requestExit`,{}))},g=()=>{this.needsRender=!0},_=()=>{this.renderer instanceof f5&&this.renderer.reconfigureContext(),this.needsRender=!0},v=()=>{typeof document<`u`&&document.visibilityState===`visible`&&_()},y=()=>{_()};if(this.renderer instanceof f5&&(this.renderer.onDeviceLostCallback=()=>{_()}),typeof document<`u`&&(document.addEventListener(`visibilitychange`,v,!1),document.addEventListener(`fullscreenchange`,h,!1)),typeof window<`u`&&window.addEventListener(`pageshow`,y,!1),this.renderer&&this.renderer.domElement.addEventListener(`webglcontextrestored`,g,!1),this.removeEventListeners=()=>{typeof document<`u`&&(document.removeEventListener(`visibilitychange`,v,!1),document.removeEventListener(`fullscreenchange`,h,!1)),typeof window<`u`&&window.removeEventListener(`pageshow`,y,!1),this.renderer instanceof f5&&(this.renderer.onDeviceLostCallback=void 0),this.renderer&&this.renderer.domElement.removeEventListener(`webglcontextrestored`,g,!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)}}}$re(this),this.fiveRenderer=new K8({outputType:this.enableHDR?ui:void 0}),this.adaptiveLuminancePass=new T8,this.adaptiveLuminancePass.enabled=!1,this.fiveRenderer.composer.addPass(this.adaptiveLuminancePass),this.eyeDomeLightingPass=new D8(this.camera),this.eyeDomeLightingPass.enabled=!1,this.fiveRenderer.composer.addPass(this.eyeDomeLightingPass),this.pbmGaussianSplattingRenderMesh=new lU,this.scene.add(this.pbmGaussianSplattingRenderMesh)}get ident(){return this.fiveId}get panoIndex(){return this.pano.panoIndex}prepare(){return Promise.all([Iq().catch(Y)]).then(Y)}dispose(){var e;if(this.destroyed===!0)return;delete Q9[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(),X9.set(this,Z9),this.renderer&&(!(this.renderer instanceof f5)||this.renderer.isInitialized)&&this.renderer.render(new ps,new Df),this.fiveRenderer.dispose(),this.renderer instanceof f5&&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,Cq(e.panorama)),this.currentMode===`Panorama`&&(n=!0)),e.model&&(Object.assign(this.controllerInits.Model,Cq(e.model)),this.currentMode===`Model`&&(n=!0)),e.floorplan&&(Object.assign(this.controllerInits.Floorplan,Cq(e.floorplan)),this.currentMode===`Floorplan`&&(n=!0)),e.topview&&(Object.assign(this.controllerInits.Topview,Cq(e.topview)),this.currentMode===`Topview`&&(n=!0)),e.mapview&&(Object.assign(this.controllerInits.Mapview,Cq(e.mapview)),this.currentMode===`Mapview`&&(n=!0)),e.vrPanorama&&(Object.assign(this.controllerInits.VRPanorama,Cq(e.vrPanorama)),this.currentMode===`VRPanorama`&&(n=!0)),e.xrPanorama&&(Object.assign(this.controllerInits.XRPanorama,Cq(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 f5)){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=K9(),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=eW(),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 X9.get(this)||Z9}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(()=>q5(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,l,u,d,f,p,m;let h={};typeof r==`number`?h.duration=r:typeof r==`object`&&Object.assign(h,r),this.works===Z9&&(h.duration===void 0&&(h.duration=0),h.effect===void 0&&(h.effect=`instant`));let g={};Object.assign(g,h.model),!g[`3d-tiles`]&&h[`3d-tiles`]&&(g[`3d-tiles`]=h[`3d-tiles`]),!g.textureOptions&&h.textureOptions&&(g.textureOptions=h.textureOptions),!g.textureOptions&&this.textureOptions&&(g.textureOptions=this.textureOptions);let _=[];if(Array.isArray(t))for(let e of t)e instanceof F6?_.push(e):typeof e!=`string`&&`work`in e?_.push(I6(e.work,e)):_.push(I6(e));else t instanceof F6?_.push(t):_.push(I6(t));h.mode===`add`&&(_=[].concat(this.works,_));let v;try{v=z6(_)}catch(e){return this.throwError(e),Promise.reject(e)}for(let e of v)this.bindWorkFetcher(e);n===void 0&&(n=`inherit`),n===`inherit`&&this.works===Z9&&(n=`initial`);let y=this.currentMode,b=v.initial,x=b.work.observers[0],S=x?{workCode:x.work.workCode,panoIndex:x.panoIndex}:{workCode:b.work.workCode,panoIndex:0},C=(a=b.mode)==null?x?`Panorama`:`Mapview`:a,w={};if(n===`inherit`){let e=this.getCurrentState(),[t]=v.filter(t=>t.workCode===e.workCode);if(t)S={workCode:e.workCode,panoIndex:e.panoIndex},C=e.mode,w={longitude:e.latitude,latitude:e.latitude,fov:e.fov,distance:e.distance,offset:e.offset.clone()};else{n={mode:y};let e=(s=(o=v[0])==null?void 0:o.observers)==null?void 0:s[this.panoIndex];e?(n.workCode=e.work.workCode,n.panoIndex=e.panoIndex):typeof v.initial.panoIndex==`number`?(n.workCode=v.initial.work.workCode,n.panoIndex=v.initial.panoIndex):(n.mode===`Panorama`||n.mode===`VRPanorama`||n.mode===`XRPanorama`)&&(n.mode=`Mapview`),n.mode===y&&(n.longitude=this.camera.pose.longitude,n.latitude=this.camera.pose.latitude,n.fov=this.camera.pose.fov)}}if(n===`initial`&&(typeof b.panoIndex==`number`&&(S={workCode:b.work.workCode,panoIndex:b.panoIndex}),b.mode&&(C=b.mode),w={longitude:b.longitude,latitude:b.latitude,fov:b.fov,distance:b.distance,offset:(c=b.offset)==null?void 0:c.clone()}),typeof n==`object`){if(C=(l=n.mode)==null?y:l,typeof n.panoIndex==`number`){let e=v.getObserver({workCode:(d=(u=n.workCode)==null?b.work.workCode:u)==null?``:d,panoIndex:n.panoIndex});e&&(S={workCode:e.work.workCode,panoIndex:e.panoIndex})}w={longitude:n.longitude,latitude:n.latitude,fov:n.fov,distance:n.distance,offset:n.offset?new j().copy(n.offset):void 0}}let T=(f=h.duration)==null?this.modeChangeDuration:f;(C===`Floorplan`||C===`Topview`||C===`Mapview`)&&y===C&&(T=0);let E=`fly`;(C===`Panorama`||C===`VRPanorama`||C===`XRPanorama`)&&y===C&&(E=(p=h.effect)==null?`fade`:p),this.emit(`works.request`,$(`works.request`,{input:t,works:v,userAction:i}));let D=(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:T,effect:E,userAction:i}},this.commonParams()),this.controllerInits[e]),c=W9[o.mode].initAnimationEndState(s);if(this.controller&&y===e)this.controller.updateWork(v,c,{effect:E,duration:T},i)===!1&&(this.controller.destroy(),this.controller=this.applyController(e,s));else{if(this.controller)this.controller.destroy();else{let t=W9[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:y,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)};X9.set(this,v);let ee=Promise.resolve();if(C===e.Mode.Floorplan||C===e.Mode.Topview||C===e.Mode.Mapview||C===e.Mode.Model){this.modelScene.loaded===!1&&(this.camera.setFromPose(w),sne(this.state,this.camera.pose));let e=this.modelScene.setModels(v,g);ee=Promise.all(e.map(e=>e.loadedReady)).then(()=>{this.needsRender=!0,D(C,S,w),this.emit(`camera.update`,$(`camera.update`,{state:this.getCurrentState(),userAction:i}))})}else{D(C,S,w);let e=this.controller,t=!1;this.modelScene.autoRefine=!1;let n=()=>{this.works===v&&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(v,g);ee=Promise.all(r.map(e=>e.initReady)).then(Y),e.once(`pano.arrived`,n),e.once(`pano.cancel`,n),setTimeout(n,((m=h.duration)==null?this.modeChangeDuration:m)+1e3)}return this.emit(`works.load`,$(`works.load`,{input:t,userAction:i,works:v})),ee.then(()=>this.ready()).then(()=>{var e;this.emit(`works.ready`,$(`works.ready`,{input:t,userAction:i,works:v})),(e=this.analysis)==null||e.work(v)})}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}),X9.set(this,Z9),this.modelScene.setModels(Z9,{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:q9,longitude:0,latitude:0,offset:new j(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 ${J3(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?!X3(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(Y):(X3(this.pano,m)||(this.pano=m),this.controller.updateCamera(n,f,i).catch(Y));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=W9[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=uJ.shared.getContext();if(v&&(typeof XRSession<`u`&&v instanceof XRSession&&v.end(),uJ.shared.setContext(null)),t===e.Mode.VRPanorama)this.requestFullscreen(),rie().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(!M9.isBackendXRCapable(this.renderer)){let e=Error(`XRPanorama 需要 WebGL2 回落后端。请在 new Five() 时传入 { forceWebGL: true }。后端在运行时无法切换,设备检测必须发生在 new Five() 之前。`);this.throwError(e),s(e);return}if(!M9.isBrowserXRCapable()){let e=Error(`当前浏览器不支持 WebXR(navigator.xr 不存在)。`);this.throwError(e),s(e);return}iie().then(e=>{uJ.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(()=>{}),uJ.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 TH(this,void 0,void 0,function*(){if(!this.renderer)throw Error(`renderer is not initialized.`);let s=eW(),c=this.renderer.getPixelRatio(),l=this.renderer.getRenderTarget(),u=this.getSize(new A),d=0,f=0,p=1,m=1,h,g,_,v,y;typeof e==`number`?(d=e,typeof t==`number`&&(f=t),typeof n==`number`&&(p=n),typeof r==`number`&&(m=r),h=i,g=a,y=o):(d=e.x,f=e.y,p=e.width,m=e.height,h=e.pixelRatio,g=e.flipY,_=e.helperVisible,v=e.skipPanorama,y=e.buffer),d=Math.floor(d),f=Math.floor(f),p=Math.floor(p),m=Math.floor(m),h=Math.floor(h==null?c:h),g=g==null?!1:g;let b=this.helperVisible,x=this.modelScene.parameter.modelAlpha;this.helperVisible=_==null?this.helperVisible:_,v&&(this.controller instanceof W9.Panorama||this.controller instanceof W9.VRPanorama||this.controller instanceof W9.XRPanorama)&&v===!0&&this.modelScene.parameter.set(`modelAlpha`,1),this.modelScene.update(this.renderer,this.camera);let S=this.getPixelsRenderTarget;S.setSize(p*h,m*h),this.renderer.setRenderTarget(S),this.camera.pixelRatio=h,this.camera.resolution.set(p,m),this.camera.setViewOffset(u.width,u.height,d,u.height-f-m,p,m),this.camera.aspect=u.width/u.height,this.camera.updateTime(s),this.scene.update(this.renderer,this.camera);let C=this.renderer.autoClear,w=this.renderer.autoClearColor,T=this.renderer.autoClearDepth,E=this.renderer.autoClearStencil,D=this.renderer.getClearColor(Y9),ee=this.renderer.getClearAlpha(),te=this.renderer.getScissorTest();this.renderer.autoClear=!0,this.renderer.autoClearColor=!0,this.renderer.autoClearDepth=!0,this.renderer.autoClearStencil=!0,this.renderer.setScissorTest(!1);let ne=this.scene.background;this.scene.background=this.camera.isOrthographicCamera||this.backgroundAlpha<1?null:ne,this.renderer.render(this.scene,this.camera),this.scene.background=ne,this.renderer.autoClear=C,this.renderer.autoClearColor=w,this.renderer.autoClearDepth=T,this.renderer.autoClearStencil=E,this.renderer.setClearColor(D,ee),this.renderer.setScissorTest(te),this.helperVisible=b,x===void 0?this.modelScene.parameter.reset(`modelAlpha`):this.modelScene.parameter.set(`modelAlpha`,x),this.renderer.setRenderTarget(l),this.camera.clearViewOffset(),this.camera.pixelRatio=c,this.camera.resolution.copy(u),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 re=p*h,ie=m*h,ae=re*ie,oe=ae*4;if(y){if(y.length!==oe)throw Error(`buffer length is not equals pixels ${oe}`)}else y=new Uint8Array(oe);let se=yield this.renderer.readRenderTargetPixelsAsync(S,0,0,re,ie),ce=re*4;if(se.length===oe)y.set(se);else{let e=Math.ceil(ce/256)*256;for(let t=0;t<ie;t++){let n=t*e;y.set(se.subarray(n,n+ce),t*ce)}}if(!g){let e=ae/2;for(let t=0,n=0,r=0,i=0;n<e;n++)for(i=(ie-Math.floor(n/re)-1)*re+n%re,r=0;r<4;r++)t=y[n*4+r],y[n*4+r]=y[i*4+r],y[i*4+r]=t}return y})}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(Y9),c=t.getClearAlpha(),l=t.getViewport(cie),u=t.getScissor(lie),d=t.getScissorTest();t.autoClear=!0,t.autoClearColor=!0,t.autoClearDepth=!0,t.autoClearStencil=!0;let f=t.getSize(uie),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&&uJ.shared.add(e,!0)}updateTime(e,t,...n){if(this.currentUpdateArgs={time:e,args:n},this.destroyed)return;if(this.renderer&&RX.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),uJ.shared.add(()=>{this.emit(`models.load`,$(`models.load`,{modelScene:this.modelScene}))},!0,0,10)),t===!1&&this.modelScene.refined===!0&&uJ.shared.add(()=>{this.emit(`models.refined`,$(`models.refined`,{modelScene:this.modelScene}))},!0,0,10)}if(this.camera.autoNearFar){J9.makeEmpty(),J9.expandByObject(this.modelScene.boundingMesh);let t=J9.getBoundingSphere(sie),n=t.radius*2;t.containsPoint(this.camera.position)||(n=this.camera.position.distanceTo(t.center)+t.radius);let r=J(n/500,.001,.1),i=J(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 f5&&!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 f5&&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=Y){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=eW();return Promise.all(r.map(e=>{let t=J3({panoIndex:n.panoIndex,workCode:n.work.workCode}),r=Object.assign({key:`pano.${t}.${e}`},xq(this.imageOptions,[`size`,`format`,`quality`,`forceUseExifOrientation`,`mappings`])),i=n.work.getURL(n.images[e]),a=this.imageOptions.transform?this.imageOptions.transform(i,r):$q(i,r);return X4(this.fiveId,n.work).preload(a)})).then(()=>{let e=eW()-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 Wp(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 A),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 A(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,l,u,d,f;e=xq(e,[`mode`,`workCode`,`panoIndex`,`longitude`,`latitude`,`fov`,`offset`,`distance`]),e.offset&&!(e instanceof j)&&(e.offset=new j(e.offset.x,e.offset.y,e.offset.z));let p;if(typeof e.panoIndex==`number`)if(e.workCode)p={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),p={workCode:t,panoIndex:e.panoIndex}}let m=(a=e.mode)==null?this.state.mode:a,h,g,_,v,y;if(this.controller&&this.controller.stopMomentumMovement(),this.state.mode!==m){if(m===`VRPanorama`){this.changeMode(`VRPanorama`,void 0,void 0,!0);return}if(m===`XRPanorama`){this.changeMode(`XRPanorama`,void 0,void 0,!0);return}let t={workCode:p==null?void 0:p.workCode,panoIndex:p==null?void 0:p.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 j&&(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[m]),r=W9[m].initAnimationEndState(n);h=r.longitude,g=r.latitude,_=r.fov,v=r.offset,y=r.distance}else h=(o=e.longitude)==null?this.state.longitude:o,g=(s=e.latitude)==null?this.state.latitude:s,_=(c=e.fov)==null?this.state.fov:c,v=(l=e.offset)==null?this.state.offset:l,y=(u=e.distance)==null?this.state.distance:u;let b={workCode:(p==null?this.pano:p).workCode,panoIndex:(p==null?this.pano:p).panoIndex,mode:m,longitude:h,latitude:g,fov:_,offset:v,distance:y};this.emit(`state.set`,$(`state.set`,{userAction:n,state:b})),Q5(this.state,b)||(this.controller&&b.mode===`VRPanorama`&&b.mode!==this.state.mode?(Z5(this.state,b),this.changeMode(`VRPanorama`)):this.controller&&b.mode===`XRPanorama`&&b.mode!==this.state.mode?(Z5(this.state,b),this.changeMode(`XRPanorama`)):(Z5(this.state,b),this.controller&&n&&(this.controller.userAction=!1),t&&this.state.mode===b.mode&&(this.syncingState=this.syncState(eW(),0,t),this.syncingState&&((d=this.controller)==null||d.updateTime(eW(),0),this.syncingState=!1)),this.emit(`state.change`,$(`state.change`,{userAction:n,state:this.state})),(f=this.analysis)==null||f.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 W9.Model){if(K5(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(!X3(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 W9.Floorplan||this.controller instanceof W9.Topview||this.controller instanceof W9.Mapview){let e=.2,t=Math.PI/45,n=r?this.state.fov:f8(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:f8(this.camera.pose.distance,this.state.distance,a),s=this.camera.pose.offset.distanceTo(this.state.offset),c=s>e*15?s/15:e,l=r?new j().copy(this.state.offset):p8(this.camera.pose.offset,this.state.offset,c),{longitude:u,latitude:d}=r?{longitude:this.state.longitude,latitude:this.state.latitude}:m8({longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude},{longitude:this.state.longitude,latitude:this.state.latitude},t);if(W5(n,this.camera.pose.fov)||K5(l,this.camera.pose.offset)||W5(o,this.camera.pose.distance)||W5(u,this.camera.pose.longitude,Math.PI*2)||W5(d,this.camera.pose.latitude)){let e={x:l.x,y:l.y,z:l.z},t={fov:n};return Object.assign(e,{distance:o}),Object.assign(t,{longitude:u,latitude:d}),this.controller.stopMomentumMovement(),this.controller.cameraMotion.set(t,0).catch(Y),this.controller.locationMotion.set(e,0).catch(Y),!0}}else{let e=Math.PI/45,t=r?this.state.fov:f8(this.camera.pose.fov,this.state.fov,1),{longitude:n,latitude:i}=r?{longitude:this.state.longitude,latitude:this.state.latitude}:m8({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 j().copy(this.state.offset);if(W5(a,this.camera.pose.distance)&&(this.state.distance=this.camera.pose.distance),K5(o,this.camera.pose.offset)&&(this.state.offset=this.camera.pose.offset.clone()),W5(n,this.camera.pose.longitude,Math.PI*2)||W5(i,this.camera.pose.latitude)||W5(t,this.camera.pose.fov))return this.controller.stopMomentumMovement(),this.controller.cameraMotion.set({longitude:n,latitude:i,fov:t},0).catch(Y),!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 W9.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(Y)}requestFullscreen(){var e;if(!X8)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=()=>{uJ.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 yq({get networkSubscribe(){return t.networkSubscribe},requestProxy(e){return Promise.resolve(e).then(e=>t.requestProxy(e,n)).then(e=>{let t=y6(e,r);return t instanceof Error?Promise.reject(t):t})}});Z4(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=W9[t];this.currentMode=t;let i=new r(n);for(let e of G9)i.on(e,(...t)=>{if(this.emit(e,...t))return!1});{let e=W9[t].initAnimationEndState(n),r=n.initial.userAction;Q5(this.state,e)||(Z5(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&&!Q5(this.state,n)&&(Z5(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&&!Q5(this.state,n)&&(Z5(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&&!Q5(this.state,n)&&(Z5(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&&!Q5(this.state,n)&&(Z5(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&&!Q5(this.state,n)&&(Z5(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&&!Q5(this.state,n)&&(Z5(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 rs;t.matrix.copy(e.matrix).premultiply(e.work.transform),t.matrix.decompose(t.position,t.quaternion,t.scale),t.matrixAutoUpdate=!1;let n=new j(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}};$9.Mode={Panorama:`Panorama`,Model:`Model`,Floorplan:`Floorplan`,Topview:`Topview`,Mapview:`Mapview`,VRPanorama:`VRPanorama`,XRPanorama:`XRPanorama`},typeof window<`u`&&Object.assign(window,{__FIVE_DEBUG__:{THREE:Lm,constructor:$9,instances:Q9}});var die=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}}};e.AdaptiveLuminancePass=T8,e.AnimationFrameLoop=uJ,e.BoundingMesh=w3,e.Camera=iW,e.EffectComposer=V6,e.EyeDomeLightingPass=D8,e.Fetcher=yq,e.Five=$9,e.FivePass=U6,e.FiveRenderer=K8,e.FlowingFireworks3DPass=L8,e.FlowingLight2DPass=j8,e.FlowingLight3DPass=k8,e.FullScreenQuad=H6,e.GSPLAT_PIPELINE_AUTO=tU,e.GSPLAT_PIPELINE_RASTER_CPU_SORT=nU,e.GSPLAT_PIPELINE_RASTER_GPU_SORT=rU,e.GaussianBlurPass=O8,e.Histogram=l8,e.InternalWebGPURenderer=f5,e.Model=h3,e.ModelScene=E3,e.Motion=c$,e.NetworkSubscribe=mq,e.PBMCustomNode=KB,e.PBMGSObject=PB,e.PBMGaussianSplattingObject=PB,e.PBMGaussianSplattingNodeMaterial=tH,e.PBMGaussianSplattingRenderMesh=lU,e.PBMGroup=TB,e.PBMMesh=AB,e.PBMMeshBasicMaterial=uU,e.PBMMeshBasicNodeMaterial=$K,e.PBMMeshPanoOnlyMaterial=dU,e.PBMMeshPanoOnlyNodeMaterial=nq,e.PBMMeshPhongMaterial=fU,e.PBMMeshPhongNodeMaterial=eq,e.PBMMeshPhysicalMaterial=pU,e.PBMMeshPhysicalNodeMaterial=tq,e.PBMPanoFilter=JB,e.PBMPointCloud=lV,e.PBMPointCloudMaterial=aV,e.PBMSkinnedMesh=jB,e.PBMUpdateable=GB,e.PBMVertexMarkFlag=WB,e.PROXY_CONTROLLER_EVENT_NAMES=G9,e.PanoCircleMesh=E5,e.PanoCircleMeshCustom=H5,e.PanoCircleMeshSolid=P5,e.Parameter=F4,e.Scene=v5,e.Subscribe=BB,e.TextureLoader=SJ,e.Tile=_Q,e.Tile3D=J4,e.Tile3DModel=J4,e.TileCache=O$,e.TileNode=_$,e.TileRequestScheduler=T$,e.Tileset=P$,e.Trajectory=x$,e.TrajectoryNode=S$,e.Work=F6,e.WorkResolvedObserver=R6,e.XRButton=die,e.controllersDefaultInitArgs=Qre,e.coordinatesToVector=ZU,e.createDebugBoundingMesh=jte,e.createWorks=z6,e.customNodesCacheKey=qB,e.defaultImageURLTransform=$q,e.draco=AX,e.getViewportScale=K9,e.headingToLongitude=QU,e.imageSupport=Iq,e.isBoundingVolume=dQ,e.isPanoId=Z3,e.loadAt3d=DY,e.loadDome=MY,e.loadDomez=zY,e.loadGltf=WZ,e.loadPbm=aY,e.loadPly=UY,e.longitudeToHeading=tte,e.makeBoundingVolume=fQ,e.panoEqual=X3,e.panoParse=Y3,e.panoStringify=J3,e.parseWork=I6,e.registerPBMMaterials=rq,e.vectorToCoordinates=ete,e.workToJson=j3});
|