@ericchen1990/pano-view 3.1.0 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -3
- package/README.zh-CN.md +25 -3
- package/dist/index.cjs +385 -382
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +6 -7
- package/dist/index.d.ts +6 -7
- package/dist/index.mjs +340 -337
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +0 -34
- package/package.json +12 -3
package/dist/index.mjs
CHANGED
|
@@ -40,7 +40,7 @@ var require_howler = __commonJS({
|
|
|
40
40
|
* @return {Howler}
|
|
41
41
|
*/
|
|
42
42
|
init: function() {
|
|
43
|
-
var self = this ||
|
|
43
|
+
var self = this || Howler4;
|
|
44
44
|
self._counter = 1e3;
|
|
45
45
|
self._html5AudioPool = [];
|
|
46
46
|
self.html5PoolSize = 10;
|
|
@@ -65,7 +65,7 @@ var require_howler = __commonJS({
|
|
|
65
65
|
* @return {Howler/Float} Returns self or current volume.
|
|
66
66
|
*/
|
|
67
67
|
volume: function(vol) {
|
|
68
|
-
var self = this ||
|
|
68
|
+
var self = this || Howler4;
|
|
69
69
|
vol = parseFloat(vol);
|
|
70
70
|
if (!self.ctx) {
|
|
71
71
|
setupAudioContext();
|
|
@@ -76,7 +76,7 @@ var require_howler = __commonJS({
|
|
|
76
76
|
return self;
|
|
77
77
|
}
|
|
78
78
|
if (self.usingWebAudio) {
|
|
79
|
-
self.masterGain.gain.setValueAtTime(vol,
|
|
79
|
+
self.masterGain.gain.setValueAtTime(vol, Howler4.ctx.currentTime);
|
|
80
80
|
}
|
|
81
81
|
for (var i = 0; i < self._howls.length; i++) {
|
|
82
82
|
if (!self._howls[i]._webAudio) {
|
|
@@ -98,13 +98,13 @@ var require_howler = __commonJS({
|
|
|
98
98
|
* @param {Boolean} muted Is muted or not.
|
|
99
99
|
*/
|
|
100
100
|
mute: function(muted) {
|
|
101
|
-
var self = this ||
|
|
101
|
+
var self = this || Howler4;
|
|
102
102
|
if (!self.ctx) {
|
|
103
103
|
setupAudioContext();
|
|
104
104
|
}
|
|
105
105
|
self._muted = muted;
|
|
106
106
|
if (self.usingWebAudio) {
|
|
107
|
-
self.masterGain.gain.setValueAtTime(muted ? 0 : self._volume,
|
|
107
|
+
self.masterGain.gain.setValueAtTime(muted ? 0 : self._volume, Howler4.ctx.currentTime);
|
|
108
108
|
}
|
|
109
109
|
for (var i = 0; i < self._howls.length; i++) {
|
|
110
110
|
if (!self._howls[i]._webAudio) {
|
|
@@ -123,7 +123,7 @@ var require_howler = __commonJS({
|
|
|
123
123
|
* Handle stopping all sounds globally.
|
|
124
124
|
*/
|
|
125
125
|
stop: function() {
|
|
126
|
-
var self = this ||
|
|
126
|
+
var self = this || Howler4;
|
|
127
127
|
for (var i = 0; i < self._howls.length; i++) {
|
|
128
128
|
self._howls[i].stop();
|
|
129
129
|
}
|
|
@@ -134,7 +134,7 @@ var require_howler = __commonJS({
|
|
|
134
134
|
* @return {Howler}
|
|
135
135
|
*/
|
|
136
136
|
unload: function() {
|
|
137
|
-
var self = this ||
|
|
137
|
+
var self = this || Howler4;
|
|
138
138
|
for (var i = self._howls.length - 1; i >= 0; i--) {
|
|
139
139
|
self._howls[i].unload();
|
|
140
140
|
}
|
|
@@ -151,14 +151,14 @@ var require_howler = __commonJS({
|
|
|
151
151
|
* @return {Boolean}
|
|
152
152
|
*/
|
|
153
153
|
codecs: function(ext) {
|
|
154
|
-
return (this ||
|
|
154
|
+
return (this || Howler4)._codecs[ext.replace(/^x-/, "")];
|
|
155
155
|
},
|
|
156
156
|
/**
|
|
157
157
|
* Setup various state values for global tracking.
|
|
158
158
|
* @return {Howler}
|
|
159
159
|
*/
|
|
160
160
|
_setup: function() {
|
|
161
|
-
var self = this ||
|
|
161
|
+
var self = this || Howler4;
|
|
162
162
|
self.state = self.ctx ? self.ctx.state || "suspended" : "suspended";
|
|
163
163
|
self._autoSuspend();
|
|
164
164
|
if (!self.usingWebAudio) {
|
|
@@ -192,7 +192,7 @@ var require_howler = __commonJS({
|
|
|
192
192
|
* @return {Howler}
|
|
193
193
|
*/
|
|
194
194
|
_setupCodecs: function() {
|
|
195
|
-
var self = this ||
|
|
195
|
+
var self = this || Howler4;
|
|
196
196
|
var audioTest = null;
|
|
197
197
|
try {
|
|
198
198
|
audioTest = typeof Audio !== "undefined" ? new Audio() : null;
|
|
@@ -235,7 +235,7 @@ var require_howler = __commonJS({
|
|
|
235
235
|
* @return {Howler}
|
|
236
236
|
*/
|
|
237
237
|
_unlockAudio: function() {
|
|
238
|
-
var self = this ||
|
|
238
|
+
var self = this || Howler4;
|
|
239
239
|
if (self._audioUnlocked || !self.ctx) {
|
|
240
240
|
return;
|
|
241
241
|
}
|
|
@@ -305,7 +305,7 @@ var require_howler = __commonJS({
|
|
|
305
305
|
* @return {Audio} HTML5 Audio object.
|
|
306
306
|
*/
|
|
307
307
|
_obtainHtml5Audio: function() {
|
|
308
|
-
var self = this ||
|
|
308
|
+
var self = this || Howler4;
|
|
309
309
|
if (self._html5AudioPool.length) {
|
|
310
310
|
return self._html5AudioPool.pop();
|
|
311
311
|
}
|
|
@@ -322,7 +322,7 @@ var require_howler = __commonJS({
|
|
|
322
322
|
* @return {Howler}
|
|
323
323
|
*/
|
|
324
324
|
_releaseHtml5Audio: function(audio) {
|
|
325
|
-
var self = this ||
|
|
325
|
+
var self = this || Howler4;
|
|
326
326
|
if (audio._unlocked) {
|
|
327
327
|
self._html5AudioPool.push(audio);
|
|
328
328
|
}
|
|
@@ -335,7 +335,7 @@ var require_howler = __commonJS({
|
|
|
335
335
|
*/
|
|
336
336
|
_autoSuspend: function() {
|
|
337
337
|
var self = this;
|
|
338
|
-
if (!self.autoSuspend || !self.ctx || typeof self.ctx.suspend === "undefined" || !
|
|
338
|
+
if (!self.autoSuspend || !self.ctx || typeof self.ctx.suspend === "undefined" || !Howler4.usingWebAudio) {
|
|
339
339
|
return;
|
|
340
340
|
}
|
|
341
341
|
for (var i = 0; i < self._howls.length; i++) {
|
|
@@ -373,7 +373,7 @@ var require_howler = __commonJS({
|
|
|
373
373
|
*/
|
|
374
374
|
_autoResume: function() {
|
|
375
375
|
var self = this;
|
|
376
|
-
if (!self.ctx || typeof self.ctx.resume === "undefined" || !
|
|
376
|
+
if (!self.ctx || typeof self.ctx.resume === "undefined" || !Howler4.usingWebAudio) {
|
|
377
377
|
return;
|
|
378
378
|
}
|
|
379
379
|
if (self.state === "running" && self.ctx.state !== "interrupted" && self._suspendTimer) {
|
|
@@ -396,7 +396,7 @@ var require_howler = __commonJS({
|
|
|
396
396
|
return self;
|
|
397
397
|
}
|
|
398
398
|
};
|
|
399
|
-
var
|
|
399
|
+
var Howler4 = new HowlerGlobal2();
|
|
400
400
|
var Howl3 = function(o) {
|
|
401
401
|
var self = this;
|
|
402
402
|
if (!o.src || o.src.length === 0) {
|
|
@@ -413,7 +413,7 @@ var require_howler = __commonJS({
|
|
|
413
413
|
*/
|
|
414
414
|
init: function(o) {
|
|
415
415
|
var self = this;
|
|
416
|
-
if (!
|
|
416
|
+
if (!Howler4.ctx) {
|
|
417
417
|
setupAudioContext();
|
|
418
418
|
}
|
|
419
419
|
self._autoplay = o.autoplay || false;
|
|
@@ -452,11 +452,11 @@ var require_howler = __commonJS({
|
|
|
452
452
|
self._onseek = o.onseek ? [{ fn: o.onseek }] : [];
|
|
453
453
|
self._onunlock = o.onunlock ? [{ fn: o.onunlock }] : [];
|
|
454
454
|
self._onresume = [];
|
|
455
|
-
self._webAudio =
|
|
456
|
-
if (typeof
|
|
457
|
-
|
|
455
|
+
self._webAudio = Howler4.usingWebAudio && !self._html5;
|
|
456
|
+
if (typeof Howler4.ctx !== "undefined" && Howler4.ctx && Howler4.autoUnlock) {
|
|
457
|
+
Howler4._unlockAudio();
|
|
458
458
|
}
|
|
459
|
-
|
|
459
|
+
Howler4._howls.push(self);
|
|
460
460
|
if (self._autoplay) {
|
|
461
461
|
self._queue.push({
|
|
462
462
|
event: "play",
|
|
@@ -477,7 +477,7 @@ var require_howler = __commonJS({
|
|
|
477
477
|
load: function() {
|
|
478
478
|
var self = this;
|
|
479
479
|
var url = null;
|
|
480
|
-
if (
|
|
480
|
+
if (Howler4.noAudio) {
|
|
481
481
|
self._emit("loaderror", null, "No audio support.");
|
|
482
482
|
return;
|
|
483
483
|
}
|
|
@@ -505,7 +505,7 @@ var require_howler = __commonJS({
|
|
|
505
505
|
if (!ext) {
|
|
506
506
|
console.warn('No file extension was found. Consider using the "format" property or specify an extension.');
|
|
507
507
|
}
|
|
508
|
-
if (ext &&
|
|
508
|
+
if (ext && Howler4.codecs(ext)) {
|
|
509
509
|
url = self._src[i];
|
|
510
510
|
break;
|
|
511
511
|
}
|
|
@@ -583,7 +583,7 @@ var require_howler = __commonJS({
|
|
|
583
583
|
return sound._id;
|
|
584
584
|
}
|
|
585
585
|
if (self._webAudio) {
|
|
586
|
-
|
|
586
|
+
Howler4._autoResume();
|
|
587
587
|
}
|
|
588
588
|
var seek = Math.max(0, sound._seek > 0 ? sound._seek : self._sprite[sprite][0] / 1e3);
|
|
589
589
|
var duration = Math.max(0, (self._sprite[sprite][0] + self._sprite[sprite][1]) / 1e3 - seek);
|
|
@@ -610,8 +610,8 @@ var require_howler = __commonJS({
|
|
|
610
610
|
setParams();
|
|
611
611
|
self._refreshBuffer(sound);
|
|
612
612
|
var vol = sound._muted || self._muted ? 0 : sound._volume;
|
|
613
|
-
node.gain.setValueAtTime(vol,
|
|
614
|
-
sound._playStart =
|
|
613
|
+
node.gain.setValueAtTime(vol, Howler4.ctx.currentTime);
|
|
614
|
+
sound._playStart = Howler4.ctx.currentTime;
|
|
615
615
|
if (typeof node.bufferSource.start === "undefined") {
|
|
616
616
|
sound._loop ? node.bufferSource.noteGrainOn(0, seek, 86400) : node.bufferSource.noteGrainOn(0, seek, duration);
|
|
617
617
|
} else {
|
|
@@ -627,7 +627,7 @@ var require_howler = __commonJS({
|
|
|
627
627
|
}, 0);
|
|
628
628
|
}
|
|
629
629
|
};
|
|
630
|
-
if (
|
|
630
|
+
if (Howler4.state === "running" && Howler4.ctx.state !== "interrupted") {
|
|
631
631
|
playWebAudio();
|
|
632
632
|
} else {
|
|
633
633
|
self._playLock = true;
|
|
@@ -637,8 +637,8 @@ var require_howler = __commonJS({
|
|
|
637
637
|
} else {
|
|
638
638
|
var playHtml5 = function() {
|
|
639
639
|
node.currentTime = seek;
|
|
640
|
-
node.muted = sound._muted || self._muted ||
|
|
641
|
-
node.volume = sound._volume *
|
|
640
|
+
node.muted = sound._muted || self._muted || Howler4._muted || node.muted;
|
|
641
|
+
node.volume = sound._volume * Howler4.volume();
|
|
642
642
|
node.playbackRate = sound._rate;
|
|
643
643
|
try {
|
|
644
644
|
var play = node.play();
|
|
@@ -686,7 +686,7 @@ var require_howler = __commonJS({
|
|
|
686
686
|
node.src = self._src;
|
|
687
687
|
node.load();
|
|
688
688
|
}
|
|
689
|
-
var loadedNoReadyState = window && window.ejecta || !node.readyState &&
|
|
689
|
+
var loadedNoReadyState = window && window.ejecta || !node.readyState && Howler4._navigator.isCocoonJS;
|
|
690
690
|
if (node.readyState >= 3 || loadedNoReadyState) {
|
|
691
691
|
playHtml5();
|
|
692
692
|
} else {
|
|
@@ -695,9 +695,9 @@ var require_howler = __commonJS({
|
|
|
695
695
|
var listener = function() {
|
|
696
696
|
self._state = "loaded";
|
|
697
697
|
playHtml5();
|
|
698
|
-
node.removeEventListener(
|
|
698
|
+
node.removeEventListener(Howler4._canPlayEvent, listener, false);
|
|
699
699
|
};
|
|
700
|
-
node.addEventListener(
|
|
700
|
+
node.addEventListener(Howler4._canPlayEvent, listener, false);
|
|
701
701
|
self._clearTimer(sound._id);
|
|
702
702
|
}
|
|
703
703
|
}
|
|
@@ -835,9 +835,9 @@ var require_howler = __commonJS({
|
|
|
835
835
|
self._stopFade(sound._id);
|
|
836
836
|
}
|
|
837
837
|
if (self._webAudio && sound._node) {
|
|
838
|
-
sound._node.gain.setValueAtTime(muted ? 0 : sound._volume,
|
|
838
|
+
sound._node.gain.setValueAtTime(muted ? 0 : sound._volume, Howler4.ctx.currentTime);
|
|
839
839
|
} else if (sound._node) {
|
|
840
|
-
sound._node.muted =
|
|
840
|
+
sound._node.muted = Howler4._muted ? true : muted;
|
|
841
841
|
}
|
|
842
842
|
self._emit("mute", sound._id);
|
|
843
843
|
}
|
|
@@ -893,9 +893,9 @@ var require_howler = __commonJS({
|
|
|
893
893
|
self._stopFade(id[i]);
|
|
894
894
|
}
|
|
895
895
|
if (self._webAudio && sound._node && !sound._muted) {
|
|
896
|
-
sound._node.gain.setValueAtTime(vol,
|
|
896
|
+
sound._node.gain.setValueAtTime(vol, Howler4.ctx.currentTime);
|
|
897
897
|
} else if (sound._node && !sound._muted) {
|
|
898
|
-
sound._node.volume = vol *
|
|
898
|
+
sound._node.volume = vol * Howler4.volume();
|
|
899
899
|
}
|
|
900
900
|
self._emit("volume", sound._id);
|
|
901
901
|
}
|
|
@@ -937,7 +937,7 @@ var require_howler = __commonJS({
|
|
|
937
937
|
self._stopFade(ids[i]);
|
|
938
938
|
}
|
|
939
939
|
if (self._webAudio && !sound._muted) {
|
|
940
|
-
var currentTime =
|
|
940
|
+
var currentTime = Howler4.ctx.currentTime;
|
|
941
941
|
var end = currentTime + len / 1e3;
|
|
942
942
|
sound._volume = from;
|
|
943
943
|
sound._node.gain.setValueAtTime(from, currentTime);
|
|
@@ -1003,7 +1003,7 @@ var require_howler = __commonJS({
|
|
|
1003
1003
|
var sound = self._soundById(id);
|
|
1004
1004
|
if (sound && sound._interval) {
|
|
1005
1005
|
if (self._webAudio) {
|
|
1006
|
-
sound._node.gain.cancelScheduledValues(
|
|
1006
|
+
sound._node.gain.cancelScheduledValues(Howler4.ctx.currentTime);
|
|
1007
1007
|
}
|
|
1008
1008
|
clearInterval(sound._interval);
|
|
1009
1009
|
sound._interval = null;
|
|
@@ -1105,11 +1105,11 @@ var require_howler = __commonJS({
|
|
|
1105
1105
|
if (sound) {
|
|
1106
1106
|
if (self.playing(id[i])) {
|
|
1107
1107
|
sound._rateSeek = self.seek(id[i]);
|
|
1108
|
-
sound._playStart = self._webAudio ?
|
|
1108
|
+
sound._playStart = self._webAudio ? Howler4.ctx.currentTime : sound._playStart;
|
|
1109
1109
|
}
|
|
1110
1110
|
sound._rate = rate;
|
|
1111
1111
|
if (self._webAudio && sound._node && sound._node.bufferSource) {
|
|
1112
|
-
sound._node.bufferSource.playbackRate.setValueAtTime(rate,
|
|
1112
|
+
sound._node.bufferSource.playbackRate.setValueAtTime(rate, Howler4.ctx.currentTime);
|
|
1113
1113
|
} else if (sound._node) {
|
|
1114
1114
|
sound._node.playbackRate = rate;
|
|
1115
1115
|
}
|
|
@@ -1203,7 +1203,7 @@ var require_howler = __commonJS({
|
|
|
1203
1203
|
}
|
|
1204
1204
|
} else {
|
|
1205
1205
|
if (self._webAudio) {
|
|
1206
|
-
var realTime = self.playing(id) ?
|
|
1206
|
+
var realTime = self.playing(id) ? Howler4.ctx.currentTime - sound._playStart : 0;
|
|
1207
1207
|
var rateSeek = sound._rateSeek ? sound._rateSeek - sound._seek : 0;
|
|
1208
1208
|
return sound._seek + (rateSeek + realTime * Math.abs(sound._rate));
|
|
1209
1209
|
} else {
|
|
@@ -1266,20 +1266,20 @@ var require_howler = __commonJS({
|
|
|
1266
1266
|
if (!self._webAudio) {
|
|
1267
1267
|
self._clearSound(sounds[i]._node);
|
|
1268
1268
|
sounds[i]._node.removeEventListener("error", sounds[i]._errorFn, false);
|
|
1269
|
-
sounds[i]._node.removeEventListener(
|
|
1269
|
+
sounds[i]._node.removeEventListener(Howler4._canPlayEvent, sounds[i]._loadFn, false);
|
|
1270
1270
|
sounds[i]._node.removeEventListener("ended", sounds[i]._endFn, false);
|
|
1271
|
-
|
|
1271
|
+
Howler4._releaseHtml5Audio(sounds[i]._node);
|
|
1272
1272
|
}
|
|
1273
1273
|
delete sounds[i]._node;
|
|
1274
1274
|
self._clearTimer(sounds[i]._id);
|
|
1275
1275
|
}
|
|
1276
|
-
var index =
|
|
1276
|
+
var index = Howler4._howls.indexOf(self);
|
|
1277
1277
|
if (index >= 0) {
|
|
1278
|
-
|
|
1278
|
+
Howler4._howls.splice(index, 1);
|
|
1279
1279
|
}
|
|
1280
1280
|
var remCache = true;
|
|
1281
|
-
for (i = 0; i <
|
|
1282
|
-
if (
|
|
1281
|
+
for (i = 0; i < Howler4._howls.length; i++) {
|
|
1282
|
+
if (Howler4._howls[i]._src === self._src || self._src.indexOf(Howler4._howls[i]._src) >= 0) {
|
|
1283
1283
|
remCache = false;
|
|
1284
1284
|
break;
|
|
1285
1285
|
}
|
|
@@ -1287,7 +1287,7 @@ var require_howler = __commonJS({
|
|
|
1287
1287
|
if (cache && remCache) {
|
|
1288
1288
|
delete cache[self._src];
|
|
1289
1289
|
}
|
|
1290
|
-
|
|
1290
|
+
Howler4.noAudio = false;
|
|
1291
1291
|
self._state = "unloaded";
|
|
1292
1292
|
self._sounds = [];
|
|
1293
1293
|
self = null;
|
|
@@ -1420,7 +1420,7 @@ var require_howler = __commonJS({
|
|
|
1420
1420
|
self._emit("play", sound._id);
|
|
1421
1421
|
sound._seek = sound._start || 0;
|
|
1422
1422
|
sound._rateSeek = 0;
|
|
1423
|
-
sound._playStart =
|
|
1423
|
+
sound._playStart = Howler4.ctx.currentTime;
|
|
1424
1424
|
var timeout = (sound._stop - sound._start) * 1e3 / Math.abs(sound._rate);
|
|
1425
1425
|
self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);
|
|
1426
1426
|
}
|
|
@@ -1431,7 +1431,7 @@ var require_howler = __commonJS({
|
|
|
1431
1431
|
sound._rateSeek = 0;
|
|
1432
1432
|
self._clearTimer(sound._id);
|
|
1433
1433
|
self._cleanBuffer(sound._node);
|
|
1434
|
-
|
|
1434
|
+
Howler4._autoSuspend();
|
|
1435
1435
|
}
|
|
1436
1436
|
if (!self._webAudio && !loop) {
|
|
1437
1437
|
self.stop(sound._id, true);
|
|
@@ -1539,7 +1539,7 @@ var require_howler = __commonJS({
|
|
|
1539
1539
|
*/
|
|
1540
1540
|
_refreshBuffer: function(sound) {
|
|
1541
1541
|
var self = this;
|
|
1542
|
-
sound._node.bufferSource =
|
|
1542
|
+
sound._node.bufferSource = Howler4.ctx.createBufferSource();
|
|
1543
1543
|
sound._node.bufferSource.buffer = cache[self._src];
|
|
1544
1544
|
if (sound._panner) {
|
|
1545
1545
|
sound._node.bufferSource.connect(sound._panner);
|
|
@@ -1551,7 +1551,7 @@ var require_howler = __commonJS({
|
|
|
1551
1551
|
sound._node.bufferSource.loopStart = sound._start || 0;
|
|
1552
1552
|
sound._node.bufferSource.loopEnd = sound._stop || 0;
|
|
1553
1553
|
}
|
|
1554
|
-
sound._node.bufferSource.playbackRate.setValueAtTime(sound._rate,
|
|
1554
|
+
sound._node.bufferSource.playbackRate.setValueAtTime(sound._rate, Howler4.ctx.currentTime);
|
|
1555
1555
|
return self;
|
|
1556
1556
|
},
|
|
1557
1557
|
/**
|
|
@@ -1561,16 +1561,16 @@ var require_howler = __commonJS({
|
|
|
1561
1561
|
*/
|
|
1562
1562
|
_cleanBuffer: function(node) {
|
|
1563
1563
|
var self = this;
|
|
1564
|
-
var isIOS =
|
|
1564
|
+
var isIOS = Howler4._navigator && Howler4._navigator.vendor.indexOf("Apple") >= 0;
|
|
1565
1565
|
if (!node.bufferSource) {
|
|
1566
1566
|
return self;
|
|
1567
1567
|
}
|
|
1568
|
-
if (
|
|
1568
|
+
if (Howler4._scratchBuffer && node.bufferSource) {
|
|
1569
1569
|
node.bufferSource.onended = null;
|
|
1570
1570
|
node.bufferSource.disconnect(0);
|
|
1571
1571
|
if (isIOS) {
|
|
1572
1572
|
try {
|
|
1573
|
-
node.bufferSource.buffer =
|
|
1573
|
+
node.bufferSource.buffer = Howler4._scratchBuffer;
|
|
1574
1574
|
} catch (e) {
|
|
1575
1575
|
}
|
|
1576
1576
|
}
|
|
@@ -1583,7 +1583,7 @@ var require_howler = __commonJS({
|
|
|
1583
1583
|
* @param {Object} node Audio node to clear.
|
|
1584
1584
|
*/
|
|
1585
1585
|
_clearSound: function(node) {
|
|
1586
|
-
var checkIE = /MSIE |Trident\//.test(
|
|
1586
|
+
var checkIE = /MSIE |Trident\//.test(Howler4._navigator && Howler4._navigator.userAgent);
|
|
1587
1587
|
if (!checkIE) {
|
|
1588
1588
|
node.src = "data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA";
|
|
1589
1589
|
}
|
|
@@ -1609,7 +1609,7 @@ var require_howler = __commonJS({
|
|
|
1609
1609
|
self._paused = true;
|
|
1610
1610
|
self._ended = true;
|
|
1611
1611
|
self._sprite = "__default";
|
|
1612
|
-
self._id = ++
|
|
1612
|
+
self._id = ++Howler4._counter;
|
|
1613
1613
|
parent._sounds.push(self);
|
|
1614
1614
|
self.create();
|
|
1615
1615
|
return self;
|
|
@@ -1621,23 +1621,23 @@ var require_howler = __commonJS({
|
|
|
1621
1621
|
create: function() {
|
|
1622
1622
|
var self = this;
|
|
1623
1623
|
var parent = self._parent;
|
|
1624
|
-
var volume =
|
|
1624
|
+
var volume = Howler4._muted || self._muted || self._parent._muted ? 0 : self._volume;
|
|
1625
1625
|
if (parent._webAudio) {
|
|
1626
|
-
self._node = typeof
|
|
1627
|
-
self._node.gain.setValueAtTime(volume,
|
|
1626
|
+
self._node = typeof Howler4.ctx.createGain === "undefined" ? Howler4.ctx.createGainNode() : Howler4.ctx.createGain();
|
|
1627
|
+
self._node.gain.setValueAtTime(volume, Howler4.ctx.currentTime);
|
|
1628
1628
|
self._node.paused = true;
|
|
1629
|
-
self._node.connect(
|
|
1630
|
-
} else if (!
|
|
1631
|
-
self._node =
|
|
1629
|
+
self._node.connect(Howler4.masterGain);
|
|
1630
|
+
} else if (!Howler4.noAudio) {
|
|
1631
|
+
self._node = Howler4._obtainHtml5Audio();
|
|
1632
1632
|
self._errorFn = self._errorListener.bind(self);
|
|
1633
1633
|
self._node.addEventListener("error", self._errorFn, false);
|
|
1634
1634
|
self._loadFn = self._loadListener.bind(self);
|
|
1635
|
-
self._node.addEventListener(
|
|
1635
|
+
self._node.addEventListener(Howler4._canPlayEvent, self._loadFn, false);
|
|
1636
1636
|
self._endFn = self._endListener.bind(self);
|
|
1637
1637
|
self._node.addEventListener("ended", self._endFn, false);
|
|
1638
1638
|
self._node.src = parent._src;
|
|
1639
1639
|
self._node.preload = parent._preload === true ? "auto" : parent._preload;
|
|
1640
|
-
self._node.volume = volume *
|
|
1640
|
+
self._node.volume = volume * Howler4.volume();
|
|
1641
1641
|
self._node.load();
|
|
1642
1642
|
}
|
|
1643
1643
|
return self;
|
|
@@ -1658,7 +1658,7 @@ var require_howler = __commonJS({
|
|
|
1658
1658
|
self._paused = true;
|
|
1659
1659
|
self._ended = true;
|
|
1660
1660
|
self._sprite = "__default";
|
|
1661
|
-
self._id = ++
|
|
1661
|
+
self._id = ++Howler4._counter;
|
|
1662
1662
|
return self;
|
|
1663
1663
|
},
|
|
1664
1664
|
/**
|
|
@@ -1684,7 +1684,7 @@ var require_howler = __commonJS({
|
|
|
1684
1684
|
parent._emit("load");
|
|
1685
1685
|
parent._loadQueue();
|
|
1686
1686
|
}
|
|
1687
|
-
self._node.removeEventListener(
|
|
1687
|
+
self._node.removeEventListener(Howler4._canPlayEvent, self._loadFn, false);
|
|
1688
1688
|
},
|
|
1689
1689
|
/**
|
|
1690
1690
|
* HTML5 Audio ended listener callback.
|
|
@@ -1766,10 +1766,10 @@ var require_howler = __commonJS({
|
|
|
1766
1766
|
error();
|
|
1767
1767
|
}
|
|
1768
1768
|
};
|
|
1769
|
-
if (typeof Promise !== "undefined" &&
|
|
1770
|
-
|
|
1769
|
+
if (typeof Promise !== "undefined" && Howler4.ctx.decodeAudioData.length === 1) {
|
|
1770
|
+
Howler4.ctx.decodeAudioData(arraybuffer).then(success).catch(error);
|
|
1771
1771
|
} else {
|
|
1772
|
-
|
|
1772
|
+
Howler4.ctx.decodeAudioData(arraybuffer, success, error);
|
|
1773
1773
|
}
|
|
1774
1774
|
};
|
|
1775
1775
|
var loadSound = function(self, buffer) {
|
|
@@ -1786,59 +1786,59 @@ var require_howler = __commonJS({
|
|
|
1786
1786
|
}
|
|
1787
1787
|
};
|
|
1788
1788
|
var setupAudioContext = function() {
|
|
1789
|
-
if (!
|
|
1789
|
+
if (!Howler4.usingWebAudio) {
|
|
1790
1790
|
return;
|
|
1791
1791
|
}
|
|
1792
1792
|
try {
|
|
1793
1793
|
if (typeof AudioContext !== "undefined") {
|
|
1794
|
-
|
|
1794
|
+
Howler4.ctx = new AudioContext();
|
|
1795
1795
|
} else if (typeof webkitAudioContext !== "undefined") {
|
|
1796
|
-
|
|
1796
|
+
Howler4.ctx = new webkitAudioContext();
|
|
1797
1797
|
} else {
|
|
1798
|
-
|
|
1798
|
+
Howler4.usingWebAudio = false;
|
|
1799
1799
|
}
|
|
1800
1800
|
} catch (e) {
|
|
1801
|
-
|
|
1801
|
+
Howler4.usingWebAudio = false;
|
|
1802
1802
|
}
|
|
1803
|
-
if (!
|
|
1804
|
-
|
|
1803
|
+
if (!Howler4.ctx) {
|
|
1804
|
+
Howler4.usingWebAudio = false;
|
|
1805
1805
|
}
|
|
1806
|
-
var iOS = /iP(hone|od|ad)/.test(
|
|
1807
|
-
var appVersion =
|
|
1806
|
+
var iOS = /iP(hone|od|ad)/.test(Howler4._navigator && Howler4._navigator.platform);
|
|
1807
|
+
var appVersion = Howler4._navigator && Howler4._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/);
|
|
1808
1808
|
var version = appVersion ? parseInt(appVersion[1], 10) : null;
|
|
1809
1809
|
if (iOS && version && version < 9) {
|
|
1810
|
-
var safari = /safari/.test(
|
|
1811
|
-
if (
|
|
1812
|
-
|
|
1810
|
+
var safari = /safari/.test(Howler4._navigator && Howler4._navigator.userAgent.toLowerCase());
|
|
1811
|
+
if (Howler4._navigator && !safari) {
|
|
1812
|
+
Howler4.usingWebAudio = false;
|
|
1813
1813
|
}
|
|
1814
1814
|
}
|
|
1815
|
-
if (
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1815
|
+
if (Howler4.usingWebAudio) {
|
|
1816
|
+
Howler4.masterGain = typeof Howler4.ctx.createGain === "undefined" ? Howler4.ctx.createGainNode() : Howler4.ctx.createGain();
|
|
1817
|
+
Howler4.masterGain.gain.setValueAtTime(Howler4._muted ? 0 : Howler4._volume, Howler4.ctx.currentTime);
|
|
1818
|
+
Howler4.masterGain.connect(Howler4.ctx.destination);
|
|
1819
1819
|
}
|
|
1820
|
-
|
|
1820
|
+
Howler4._setup();
|
|
1821
1821
|
};
|
|
1822
1822
|
if (typeof define === "function" && define.amd) {
|
|
1823
1823
|
define([], function() {
|
|
1824
1824
|
return {
|
|
1825
|
-
Howler:
|
|
1825
|
+
Howler: Howler4,
|
|
1826
1826
|
Howl: Howl3
|
|
1827
1827
|
};
|
|
1828
1828
|
});
|
|
1829
1829
|
}
|
|
1830
1830
|
if (typeof exports !== "undefined") {
|
|
1831
|
-
exports.Howler =
|
|
1831
|
+
exports.Howler = Howler4;
|
|
1832
1832
|
exports.Howl = Howl3;
|
|
1833
1833
|
}
|
|
1834
1834
|
if (typeof global !== "undefined") {
|
|
1835
1835
|
global.HowlerGlobal = HowlerGlobal2;
|
|
1836
|
-
global.Howler =
|
|
1836
|
+
global.Howler = Howler4;
|
|
1837
1837
|
global.Howl = Howl3;
|
|
1838
1838
|
global.Sound = Sound2;
|
|
1839
1839
|
} else if (typeof window !== "undefined") {
|
|
1840
1840
|
window.HowlerGlobal = HowlerGlobal2;
|
|
1841
|
-
window.Howler =
|
|
1841
|
+
window.Howler = Howler4;
|
|
1842
1842
|
window.Howl = Howl3;
|
|
1843
1843
|
window.Sound = Sound2;
|
|
1844
1844
|
}
|
|
@@ -3807,8 +3807,8 @@ function isProduction2() {
|
|
|
3807
3807
|
}
|
|
3808
3808
|
|
|
3809
3809
|
// src/media-activation.tsx
|
|
3810
|
+
var import_howler2 = __toESM(require_howler());
|
|
3810
3811
|
import { createContext as createContext8, useContext as useContext7, useEffect as useEffect6, useRef as useRef6 } from "react";
|
|
3811
|
-
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
3812
3812
|
var PanoMediaActivationHostContext = createContext8(null);
|
|
3813
3813
|
function createPanoMediaActivationHost() {
|
|
3814
3814
|
return { intents: /* @__PURE__ */ new Set(), listeners: /* @__PURE__ */ new Set(), revision: 0 };
|
|
@@ -3831,6 +3831,15 @@ function subscribePanoMediaActivation(host, listener) {
|
|
|
3831
3831
|
function hasPanoMediaActivationIntent(host) {
|
|
3832
3832
|
return host.intents.size > 0;
|
|
3833
3833
|
}
|
|
3834
|
+
function needsMediaGesture() {
|
|
3835
|
+
if (typeof navigator !== "undefined" && navigator.userActivation?.hasBeenActive) {
|
|
3836
|
+
return false;
|
|
3837
|
+
}
|
|
3838
|
+
if (import_howler2.Howler.ctx?.state === "running") {
|
|
3839
|
+
return false;
|
|
3840
|
+
}
|
|
3841
|
+
return true;
|
|
3842
|
+
}
|
|
3834
3843
|
function usePanoMediaActivationIntent(required) {
|
|
3835
3844
|
const host = useContext7(PanoMediaActivationHostContext);
|
|
3836
3845
|
const keyRef = useRef6(null);
|
|
@@ -3850,23 +3859,6 @@ function usePanoMediaActivationIntent(required) {
|
|
|
3850
3859
|
};
|
|
3851
3860
|
}, [host, required]);
|
|
3852
3861
|
}
|
|
3853
|
-
function PanoMediaActivationOverlay({
|
|
3854
|
-
ariaLabel = "Enable sound",
|
|
3855
|
-
className,
|
|
3856
|
-
message = "Tap to enable sound",
|
|
3857
|
-
onActivate
|
|
3858
|
-
}) {
|
|
3859
|
-
return /* @__PURE__ */ jsx2("div", { className: cn("pano-media-activation", className), children: /* @__PURE__ */ jsx2(
|
|
3860
|
-
"button",
|
|
3861
|
-
{
|
|
3862
|
-
"aria-label": ariaLabel,
|
|
3863
|
-
className: "pano-media-activation-button",
|
|
3864
|
-
onClick: onActivate,
|
|
3865
|
-
type: "button",
|
|
3866
|
-
children: message
|
|
3867
|
-
}
|
|
3868
|
-
) });
|
|
3869
|
-
}
|
|
3870
3862
|
|
|
3871
3863
|
// src/pano-context-menu.tsx
|
|
3872
3864
|
import {
|
|
@@ -3880,7 +3872,7 @@ import {
|
|
|
3880
3872
|
useRef as useRef7,
|
|
3881
3873
|
useState as useState2
|
|
3882
3874
|
} from "react";
|
|
3883
|
-
import { jsx as
|
|
3875
|
+
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
3884
3876
|
var DEFAULT_ICON_SIZE = 16;
|
|
3885
3877
|
var MENU_EDGE_PADDING = 8;
|
|
3886
3878
|
var MIN_PANO_CONTEXT_MENU_BACKGROUND_OPACITY = 0.4;
|
|
@@ -4054,7 +4046,7 @@ function DefaultContextMenuPanel({
|
|
|
4054
4046
|
style: panelStyle,
|
|
4055
4047
|
tabIndex: -1,
|
|
4056
4048
|
children: [
|
|
4057
|
-
/* @__PURE__ */
|
|
4049
|
+
/* @__PURE__ */ jsx2(
|
|
4058
4050
|
"div",
|
|
4059
4051
|
{
|
|
4060
4052
|
"aria-hidden": true,
|
|
@@ -4066,9 +4058,9 @@ function DefaultContextMenuPanel({
|
|
|
4066
4058
|
}
|
|
4067
4059
|
}
|
|
4068
4060
|
),
|
|
4069
|
-
/* @__PURE__ */
|
|
4061
|
+
/* @__PURE__ */ jsx2("div", { className: "pano-context-menu-items", children: visibleItems.map((item, index) => {
|
|
4070
4062
|
if (!isActionItem(item)) {
|
|
4071
|
-
return /* @__PURE__ */
|
|
4063
|
+
return /* @__PURE__ */ jsx2(
|
|
4072
4064
|
"div",
|
|
4073
4065
|
{
|
|
4074
4066
|
"aria-hidden": true,
|
|
@@ -4085,7 +4077,7 @@ function DefaultContextMenuPanel({
|
|
|
4085
4077
|
);
|
|
4086
4078
|
}
|
|
4087
4079
|
const disabled = item.disabled === true;
|
|
4088
|
-
const iconNode = item.icon ?? (item.image ? /* @__PURE__ */
|
|
4080
|
+
const iconNode = item.icon ?? (item.image ? /* @__PURE__ */ jsx2(
|
|
4089
4081
|
"img",
|
|
4090
4082
|
{
|
|
4091
4083
|
alt: item.imageAlt ?? "",
|
|
@@ -4135,7 +4127,7 @@ function DefaultContextMenuPanel({
|
|
|
4135
4127
|
tabIndex: disabled ? -1 : activeIndex === index ? 0 : -1,
|
|
4136
4128
|
type: "button",
|
|
4137
4129
|
children: [
|
|
4138
|
-
/* @__PURE__ */
|
|
4130
|
+
/* @__PURE__ */ jsx2(
|
|
4139
4131
|
"span",
|
|
4140
4132
|
{
|
|
4141
4133
|
"aria-hidden": true,
|
|
@@ -4147,7 +4139,7 @@ function DefaultContextMenuPanel({
|
|
|
4147
4139
|
children: iconNode
|
|
4148
4140
|
}
|
|
4149
4141
|
),
|
|
4150
|
-
/* @__PURE__ */
|
|
4142
|
+
/* @__PURE__ */ jsx2("span", { style: { flex: 1 }, children: item.label })
|
|
4151
4143
|
]
|
|
4152
4144
|
},
|
|
4153
4145
|
item.id
|
|
@@ -4200,7 +4192,7 @@ function PositionedMenuShell({
|
|
|
4200
4192
|
top: Math.min(Math.max(rawTop, MENU_EDGE_PADDING), maxTop)
|
|
4201
4193
|
});
|
|
4202
4194
|
}, [clientX, clientY, overlayElement, children, viewportRevision]);
|
|
4203
|
-
return /* @__PURE__ */
|
|
4195
|
+
return /* @__PURE__ */ jsx2(
|
|
4204
4196
|
"div",
|
|
4205
4197
|
{
|
|
4206
4198
|
className: "pano-context-menu-shell",
|
|
@@ -4259,7 +4251,7 @@ function usePanoContextMenuOverlay() {
|
|
|
4259
4251
|
document.removeEventListener("keydown", handleKeyDown);
|
|
4260
4252
|
};
|
|
4261
4253
|
}, [session2]);
|
|
4262
|
-
const overlay = /* @__PURE__ */
|
|
4254
|
+
const overlay = /* @__PURE__ */ jsx2(
|
|
4263
4255
|
"div",
|
|
4264
4256
|
{
|
|
4265
4257
|
ref: setOverlayNode,
|
|
@@ -4270,7 +4262,7 @@ function usePanoContextMenuOverlay() {
|
|
|
4270
4262
|
position: "absolute",
|
|
4271
4263
|
zIndex: 20
|
|
4272
4264
|
},
|
|
4273
|
-
children: session2 ? /* @__PURE__ */
|
|
4265
|
+
children: session2 ? /* @__PURE__ */ jsx2(
|
|
4274
4266
|
PositionedMenuShell,
|
|
4275
4267
|
{
|
|
4276
4268
|
clientX: session2.event.clientX,
|
|
@@ -4363,9 +4355,9 @@ function PanoContextMenu({
|
|
|
4363
4355
|
view,
|
|
4364
4356
|
render: () => {
|
|
4365
4357
|
if (hasCustomChildren && current.children) {
|
|
4366
|
-
return /* @__PURE__ */
|
|
4358
|
+
return /* @__PURE__ */ jsx2("div", { "data-pano-context-menu": true, style: { pointerEvents: "auto" }, children: current.children({ event, view, close }) });
|
|
4367
4359
|
}
|
|
4368
|
-
return /* @__PURE__ */
|
|
4360
|
+
return /* @__PURE__ */ jsx2(
|
|
4369
4361
|
DefaultContextMenuPanel,
|
|
4370
4362
|
{
|
|
4371
4363
|
appearance: current.appearance,
|
|
@@ -4416,14 +4408,14 @@ function ResetViewIcon() {
|
|
|
4416
4408
|
viewBox: "0 0 16 16",
|
|
4417
4409
|
width: "100%",
|
|
4418
4410
|
children: [
|
|
4419
|
-
/* @__PURE__ */
|
|
4420
|
-
/* @__PURE__ */
|
|
4411
|
+
/* @__PURE__ */ jsx2("path", { d: "M3.5 6.5A4.5 4.5 0 1 1 4 10" }),
|
|
4412
|
+
/* @__PURE__ */ jsx2("path", { d: "M3.5 3.5v3h3" })
|
|
4421
4413
|
]
|
|
4422
4414
|
}
|
|
4423
4415
|
);
|
|
4424
4416
|
}
|
|
4425
4417
|
function FullscreenIcon() {
|
|
4426
|
-
return /* @__PURE__ */
|
|
4418
|
+
return /* @__PURE__ */ jsx2(
|
|
4427
4419
|
"svg",
|
|
4428
4420
|
{
|
|
4429
4421
|
"aria-hidden": true,
|
|
@@ -4435,12 +4427,12 @@ function FullscreenIcon() {
|
|
|
4435
4427
|
strokeWidth: "1.75",
|
|
4436
4428
|
viewBox: "0 0 16 16",
|
|
4437
4429
|
width: "100%",
|
|
4438
|
-
children: /* @__PURE__ */
|
|
4430
|
+
children: /* @__PURE__ */ jsx2("path", { d: "M3 6V3h3M10 3h3v3M13 10v3h-3M6 13H3v-3" })
|
|
4439
4431
|
}
|
|
4440
4432
|
);
|
|
4441
4433
|
}
|
|
4442
4434
|
function ExitFullscreenIcon() {
|
|
4443
|
-
return /* @__PURE__ */
|
|
4435
|
+
return /* @__PURE__ */ jsx2(
|
|
4444
4436
|
"svg",
|
|
4445
4437
|
{
|
|
4446
4438
|
"aria-hidden": true,
|
|
@@ -4452,7 +4444,7 @@ function ExitFullscreenIcon() {
|
|
|
4452
4444
|
strokeWidth: "1.75",
|
|
4453
4445
|
viewBox: "0 0 16 16",
|
|
4454
4446
|
width: "100%",
|
|
4455
|
-
children: /* @__PURE__ */
|
|
4447
|
+
children: /* @__PURE__ */ jsx2("path", { d: "M6 3v3H3M10 3v3h3M3 10h3v3M10 10h3v3" })
|
|
4456
4448
|
}
|
|
4457
4449
|
);
|
|
4458
4450
|
}
|
|
@@ -4461,7 +4453,7 @@ function createPanoContextMenuPresets(actions) {
|
|
|
4461
4453
|
const resetView = {
|
|
4462
4454
|
id: "pano-reset-view",
|
|
4463
4455
|
label: "Reset view",
|
|
4464
|
-
icon: /* @__PURE__ */
|
|
4456
|
+
icon: /* @__PURE__ */ jsx2(ResetViewIcon, {}),
|
|
4465
4457
|
onSelect: () => {
|
|
4466
4458
|
actions.reset();
|
|
4467
4459
|
}
|
|
@@ -4469,7 +4461,7 @@ function createPanoContextMenuPresets(actions) {
|
|
|
4469
4461
|
const fullscreen = {
|
|
4470
4462
|
id: "pano-fullscreen",
|
|
4471
4463
|
label: isFullscreen ? "Exit fullscreen" : "Enter fullscreen",
|
|
4472
|
-
icon: isFullscreen ? /* @__PURE__ */
|
|
4464
|
+
icon: isFullscreen ? /* @__PURE__ */ jsx2(ExitFullscreenIcon, {}) : /* @__PURE__ */ jsx2(FullscreenIcon, {}),
|
|
4473
4465
|
onSelect: () => {
|
|
4474
4466
|
actions.toggleFullscreen();
|
|
4475
4467
|
}
|
|
@@ -4574,7 +4566,7 @@ import {
|
|
|
4574
4566
|
useMemo as useMemo4,
|
|
4575
4567
|
useRef as useRef8
|
|
4576
4568
|
} from "react";
|
|
4577
|
-
import { jsx as
|
|
4569
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
4578
4570
|
var DEFAULT_PANO_CURSORS = {
|
|
4579
4571
|
default: "grab",
|
|
4580
4572
|
dragging: "grabbing",
|
|
@@ -4716,7 +4708,7 @@ function PanoCursorController({
|
|
|
4716
4708
|
release(PANO_DRAG_CLAIM_ID);
|
|
4717
4709
|
};
|
|
4718
4710
|
}, [claim, eventBus, release]);
|
|
4719
|
-
return /* @__PURE__ */
|
|
4711
|
+
return /* @__PURE__ */ jsx3(PanoCursorContext.Provider, { value: api, children });
|
|
4720
4712
|
}
|
|
4721
4713
|
|
|
4722
4714
|
// src/pano-events.tsx
|
|
@@ -5077,7 +5069,7 @@ var DEFAULT_PANORAMA_CAMERA_NEAR = 0.1;
|
|
|
5077
5069
|
var DEFAULT_PANORAMA_CAMERA_FAR = DEFAULT_PANORAMA_RADIUS * 2;
|
|
5078
5070
|
|
|
5079
5071
|
// src/panorama-event-surface.tsx
|
|
5080
|
-
import { jsx as
|
|
5072
|
+
import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
5081
5073
|
var EVENT_SURFACE_RADIUS = DEFAULT_PANORAMA_RADIUS - 1;
|
|
5082
5074
|
function makePanoramaPointerEvent(event) {
|
|
5083
5075
|
const nativeEvent = event.nativeEvent;
|
|
@@ -5145,8 +5137,8 @@ function PanoramaEventSurface() {
|
|
|
5145
5137
|
onPointerUp: (event) => emit("pointerup", event),
|
|
5146
5138
|
onPointerMove: (event) => emit("pointermove", event),
|
|
5147
5139
|
children: [
|
|
5148
|
-
/* @__PURE__ */
|
|
5149
|
-
/* @__PURE__ */
|
|
5140
|
+
/* @__PURE__ */ jsx4("sphereGeometry", { args: [EVENT_SURFACE_RADIUS, 64, 32] }),
|
|
5141
|
+
/* @__PURE__ */ jsx4(
|
|
5150
5142
|
"meshBasicMaterial",
|
|
5151
5143
|
{
|
|
5152
5144
|
colorWrite: false,
|
|
@@ -5328,7 +5320,7 @@ function TouchControls({
|
|
|
5328
5320
|
|
|
5329
5321
|
// src/video/chrome-overlay.tsx
|
|
5330
5322
|
import { createContext as createContext12, useCallback as useCallback4, useMemo as useMemo5, useState as useState3 } from "react";
|
|
5331
|
-
import { jsx as
|
|
5323
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
5332
5324
|
var PanoChromeOverlayContext = createContext12(null);
|
|
5333
5325
|
function usePanoChromeOverlay() {
|
|
5334
5326
|
const [overlayElement, setOverlayElement] = useState3(
|
|
@@ -5341,7 +5333,7 @@ function usePanoChromeOverlay() {
|
|
|
5341
5333
|
() => ({ overlayElement }),
|
|
5342
5334
|
[overlayElement]
|
|
5343
5335
|
);
|
|
5344
|
-
const overlay = /* @__PURE__ */
|
|
5336
|
+
const overlay = /* @__PURE__ */ jsx5(
|
|
5345
5337
|
"div",
|
|
5346
5338
|
{
|
|
5347
5339
|
className: "pano-chrome-overlay",
|
|
@@ -5418,7 +5410,7 @@ import { useSyncExternalStore as useSyncExternalStore4 } from "react";
|
|
|
5418
5410
|
|
|
5419
5411
|
// src/video/pano-video-captions.tsx
|
|
5420
5412
|
import { useSyncExternalStore as useSyncExternalStore2 } from "react";
|
|
5421
|
-
import { jsx as
|
|
5413
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
5422
5414
|
var DEFAULT_PANO_VIDEO_CAPTION_APPEARANCE = {
|
|
5423
5415
|
color: "#ffffff",
|
|
5424
5416
|
background: "rgba(0, 0, 0, 0.55)",
|
|
@@ -5466,13 +5458,13 @@ function PanoVideoCaptionsOverlay({
|
|
|
5466
5458
|
textShadow: snapshot.captionAppearance.textShadow,
|
|
5467
5459
|
whiteSpace: "pre-wrap"
|
|
5468
5460
|
};
|
|
5469
|
-
return /* @__PURE__ */
|
|
5461
|
+
return /* @__PURE__ */ jsx6(
|
|
5470
5462
|
"div",
|
|
5471
5463
|
{
|
|
5472
5464
|
className: "pano-video-captions",
|
|
5473
5465
|
"data-pano-video-captions": "",
|
|
5474
5466
|
style: wrapperStyle,
|
|
5475
|
-
children: /* @__PURE__ */
|
|
5467
|
+
children: /* @__PURE__ */ jsx6("div", { style: textStyle, children: snapshot.captionText })
|
|
5476
5468
|
}
|
|
5477
5469
|
);
|
|
5478
5470
|
}
|
|
@@ -5624,7 +5616,7 @@ function cueText(cue) {
|
|
|
5624
5616
|
}
|
|
5625
5617
|
|
|
5626
5618
|
// src/video/pano-video-controls.tsx
|
|
5627
|
-
import { Fragment, jsx as
|
|
5619
|
+
import { Fragment, jsx as jsx7, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
5628
5620
|
var DEFAULT_PANO_VIDEO_CONTROLS_APPEARANCE = {
|
|
5629
5621
|
background: "rgba(16, 16, 16, 0.88)",
|
|
5630
5622
|
color: "#f4f4f4",
|
|
@@ -5685,7 +5677,7 @@ function volumeFromClientY(clientY, track) {
|
|
|
5685
5677
|
return Math.max(0, Math.min(1, (rect.bottom - clientY) / rect.height));
|
|
5686
5678
|
}
|
|
5687
5679
|
function Icon({ path }) {
|
|
5688
|
-
return /* @__PURE__ */
|
|
5680
|
+
return /* @__PURE__ */ jsx7(
|
|
5689
5681
|
"svg",
|
|
5690
5682
|
{
|
|
5691
5683
|
"aria-hidden": true,
|
|
@@ -5697,7 +5689,7 @@ function Icon({ path }) {
|
|
|
5697
5689
|
strokeWidth: "1.75",
|
|
5698
5690
|
viewBox: "0 0 16 16",
|
|
5699
5691
|
width: "16",
|
|
5700
|
-
children: /* @__PURE__ */
|
|
5692
|
+
children: /* @__PURE__ */ jsx7("path", { d: path })
|
|
5701
5693
|
}
|
|
5702
5694
|
);
|
|
5703
5695
|
}
|
|
@@ -5709,7 +5701,7 @@ function ChromeButton({
|
|
|
5709
5701
|
label,
|
|
5710
5702
|
onClick
|
|
5711
5703
|
}) {
|
|
5712
|
-
return /* @__PURE__ */
|
|
5704
|
+
return /* @__PURE__ */ jsx7(
|
|
5713
5705
|
"button",
|
|
5714
5706
|
{
|
|
5715
5707
|
"aria-label": label,
|
|
@@ -5735,14 +5727,14 @@ function ChromeMenu({
|
|
|
5735
5727
|
labelledBy,
|
|
5736
5728
|
items
|
|
5737
5729
|
}) {
|
|
5738
|
-
return /* @__PURE__ */
|
|
5730
|
+
return /* @__PURE__ */ jsx7(
|
|
5739
5731
|
ChromeMenuSurface,
|
|
5740
5732
|
{
|
|
5741
5733
|
appearance,
|
|
5742
5734
|
id,
|
|
5743
5735
|
labelledBy,
|
|
5744
5736
|
role: "menu",
|
|
5745
|
-
children: items.map((item) => /* @__PURE__ */
|
|
5737
|
+
children: items.map((item) => /* @__PURE__ */ jsx7(
|
|
5746
5738
|
ChromeMenuRadioItem,
|
|
5747
5739
|
{
|
|
5748
5740
|
active: item.active,
|
|
@@ -5762,7 +5754,7 @@ function ChromeMenuSurface({
|
|
|
5762
5754
|
labelledBy,
|
|
5763
5755
|
role
|
|
5764
5756
|
}) {
|
|
5765
|
-
return /* @__PURE__ */
|
|
5757
|
+
return /* @__PURE__ */ jsx7(
|
|
5766
5758
|
"div",
|
|
5767
5759
|
{
|
|
5768
5760
|
"aria-labelledby": labelledBy,
|
|
@@ -5786,7 +5778,7 @@ function ChromeMenuRadioItem({
|
|
|
5786
5778
|
label,
|
|
5787
5779
|
onClick
|
|
5788
5780
|
}) {
|
|
5789
|
-
return /* @__PURE__ */
|
|
5781
|
+
return /* @__PURE__ */ jsx7(
|
|
5790
5782
|
"button",
|
|
5791
5783
|
{
|
|
5792
5784
|
"aria-checked": active,
|
|
@@ -5826,7 +5818,7 @@ function ChromeMenuActionItem({
|
|
|
5826
5818
|
},
|
|
5827
5819
|
type: "button",
|
|
5828
5820
|
children: [
|
|
5829
|
-
/* @__PURE__ */
|
|
5821
|
+
/* @__PURE__ */ jsx7("span", { children: label }),
|
|
5830
5822
|
secondary
|
|
5831
5823
|
]
|
|
5832
5824
|
}
|
|
@@ -5835,10 +5827,10 @@ function ChromeMenuActionItem({
|
|
|
5835
5827
|
function ChromeMenuSectionLabel({
|
|
5836
5828
|
children
|
|
5837
5829
|
}) {
|
|
5838
|
-
return /* @__PURE__ */
|
|
5830
|
+
return /* @__PURE__ */ jsx7("div", { className: "pano-video-chrome-menu-label", children });
|
|
5839
5831
|
}
|
|
5840
5832
|
function ChromeMenuDivider() {
|
|
5841
|
-
return /* @__PURE__ */
|
|
5833
|
+
return /* @__PURE__ */ jsx7("div", { className: "pano-video-chrome-menu-divider" });
|
|
5842
5834
|
}
|
|
5843
5835
|
function CaptionsMenu({
|
|
5844
5836
|
appearance,
|
|
@@ -5851,7 +5843,7 @@ function CaptionsMenu({
|
|
|
5851
5843
|
panel,
|
|
5852
5844
|
snapshot
|
|
5853
5845
|
}) {
|
|
5854
|
-
return /* @__PURE__ */
|
|
5846
|
+
return /* @__PURE__ */ jsx7(
|
|
5855
5847
|
ChromeMenuSurface,
|
|
5856
5848
|
{
|
|
5857
5849
|
appearance,
|
|
@@ -5860,7 +5852,7 @@ function CaptionsMenu({
|
|
|
5860
5852
|
role: "menu",
|
|
5861
5853
|
children: panel === "tracks" ? /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
5862
5854
|
/* @__PURE__ */ jsxs3("div", { className: "pano-video-chrome-menu-list", children: [
|
|
5863
|
-
/* @__PURE__ */
|
|
5855
|
+
/* @__PURE__ */ jsx7(
|
|
5864
5856
|
ChromeMenuRadioItem,
|
|
5865
5857
|
{
|
|
5866
5858
|
active: snapshot.trackId === null,
|
|
@@ -5873,7 +5865,7 @@ function CaptionsMenu({
|
|
|
5873
5865
|
),
|
|
5874
5866
|
snapshot.tracks.map((track) => {
|
|
5875
5867
|
const trackItemId = panoVideoTrackId(track);
|
|
5876
|
-
return /* @__PURE__ */
|
|
5868
|
+
return /* @__PURE__ */ jsx7(
|
|
5877
5869
|
ChromeMenuRadioItem,
|
|
5878
5870
|
{
|
|
5879
5871
|
active: snapshot.trackId === trackItemId,
|
|
@@ -5887,29 +5879,29 @@ function CaptionsMenu({
|
|
|
5887
5879
|
);
|
|
5888
5880
|
})
|
|
5889
5881
|
] }),
|
|
5890
|
-
/* @__PURE__ */
|
|
5891
|
-
/* @__PURE__ */
|
|
5882
|
+
/* @__PURE__ */ jsx7(ChromeMenuDivider, {}),
|
|
5883
|
+
/* @__PURE__ */ jsx7(
|
|
5892
5884
|
ChromeMenuActionItem,
|
|
5893
5885
|
{
|
|
5894
5886
|
appearance,
|
|
5895
5887
|
label: "Settings",
|
|
5896
5888
|
onClick: onOpenSettings,
|
|
5897
|
-
secondary: /* @__PURE__ */
|
|
5889
|
+
secondary: /* @__PURE__ */ jsx7("span", { "aria-hidden": true, children: "\u203A" })
|
|
5898
5890
|
}
|
|
5899
5891
|
)
|
|
5900
5892
|
] }) : /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
5901
|
-
/* @__PURE__ */
|
|
5893
|
+
/* @__PURE__ */ jsx7(
|
|
5902
5894
|
ChromeMenuActionItem,
|
|
5903
5895
|
{
|
|
5904
5896
|
appearance,
|
|
5905
5897
|
label: "Back",
|
|
5906
5898
|
onClick: onShowTracks,
|
|
5907
|
-
secondary: /* @__PURE__ */
|
|
5899
|
+
secondary: /* @__PURE__ */ jsx7("span", { "aria-hidden": true, children: "\u2039" })
|
|
5908
5900
|
}
|
|
5909
5901
|
),
|
|
5910
|
-
/* @__PURE__ */
|
|
5911
|
-
/* @__PURE__ */
|
|
5912
|
-
CAPTION_SIZE_OPTIONS.map((option) => /* @__PURE__ */
|
|
5902
|
+
/* @__PURE__ */ jsx7(ChromeMenuDivider, {}),
|
|
5903
|
+
/* @__PURE__ */ jsx7(ChromeMenuSectionLabel, { children: "Font size" }),
|
|
5904
|
+
CAPTION_SIZE_OPTIONS.map((option) => /* @__PURE__ */ jsx7(
|
|
5913
5905
|
ChromeMenuRadioItem,
|
|
5914
5906
|
{
|
|
5915
5907
|
active: Number(snapshot.captionAppearance.fontSize) === option.value,
|
|
@@ -5921,9 +5913,9 @@ function CaptionsMenu({
|
|
|
5921
5913
|
},
|
|
5922
5914
|
option.id
|
|
5923
5915
|
)),
|
|
5924
|
-
/* @__PURE__ */
|
|
5925
|
-
/* @__PURE__ */
|
|
5926
|
-
CAPTION_BACKGROUND_OPTIONS.map((option) => /* @__PURE__ */
|
|
5916
|
+
/* @__PURE__ */ jsx7(ChromeMenuDivider, {}),
|
|
5917
|
+
/* @__PURE__ */ jsx7(ChromeMenuSectionLabel, { children: "Background" }),
|
|
5918
|
+
CAPTION_BACKGROUND_OPTIONS.map((option) => /* @__PURE__ */ jsx7(
|
|
5927
5919
|
ChromeMenuRadioItem,
|
|
5928
5920
|
{
|
|
5929
5921
|
active: snapshot.captionAppearance.background === option.value,
|
|
@@ -5978,7 +5970,7 @@ function VerticalVolumeSlider({
|
|
|
5978
5970
|
pointerEvents: "auto"
|
|
5979
5971
|
},
|
|
5980
5972
|
children: [
|
|
5981
|
-
/* @__PURE__ */
|
|
5973
|
+
/* @__PURE__ */ jsx7(
|
|
5982
5974
|
"span",
|
|
5983
5975
|
{
|
|
5984
5976
|
"aria-hidden": true,
|
|
@@ -5990,7 +5982,7 @@ function VerticalVolumeSlider({
|
|
|
5990
5982
|
children: percentLabel
|
|
5991
5983
|
}
|
|
5992
5984
|
),
|
|
5993
|
-
/* @__PURE__ */
|
|
5985
|
+
/* @__PURE__ */ jsx7(
|
|
5994
5986
|
"div",
|
|
5995
5987
|
{
|
|
5996
5988
|
style: {
|
|
@@ -6030,7 +6022,7 @@ function VerticalVolumeSlider({
|
|
|
6030
6022
|
},
|
|
6031
6023
|
tabIndex: 0,
|
|
6032
6024
|
children: [
|
|
6033
|
-
/* @__PURE__ */
|
|
6025
|
+
/* @__PURE__ */ jsx7(
|
|
6034
6026
|
"div",
|
|
6035
6027
|
{
|
|
6036
6028
|
style: {
|
|
@@ -6045,7 +6037,7 @@ function VerticalVolumeSlider({
|
|
|
6045
6037
|
}
|
|
6046
6038
|
}
|
|
6047
6039
|
),
|
|
6048
|
-
/* @__PURE__ */
|
|
6040
|
+
/* @__PURE__ */ jsx7(
|
|
6049
6041
|
"div",
|
|
6050
6042
|
{
|
|
6051
6043
|
style: {
|
|
@@ -6104,13 +6096,13 @@ function VolumeControl({
|
|
|
6104
6096
|
};
|
|
6105
6097
|
}, [open, volumeAdjustable]);
|
|
6106
6098
|
if (!volumeAdjustable) {
|
|
6107
|
-
return /* @__PURE__ */
|
|
6099
|
+
return /* @__PURE__ */ jsx7(
|
|
6108
6100
|
ChromeButton,
|
|
6109
6101
|
{
|
|
6110
6102
|
appearance,
|
|
6111
6103
|
label: mutedOrSilent ? "Unmute" : "Mute",
|
|
6112
6104
|
onClick: onToggleMuted,
|
|
6113
|
-
children: mutedOrSilent ? /* @__PURE__ */
|
|
6105
|
+
children: mutedOrSilent ? /* @__PURE__ */ jsx7(Icon, { path: "M3 6.5h2.2L8.5 4v8L5.2 9.5H3zM10.2 6.2l3.2 3.6M13.4 6.2l-3.2 3.6" }) : /* @__PURE__ */ jsx7(Icon, { path: "M3 6.5h2.2L8.5 4v8L5.2 9.5H3zM10.5 5.5a3 3 0 0 1 0 5" })
|
|
6114
6106
|
}
|
|
6115
6107
|
);
|
|
6116
6108
|
}
|
|
@@ -6142,7 +6134,7 @@ function VolumeControl({
|
|
|
6142
6134
|
},
|
|
6143
6135
|
ref: rootRef,
|
|
6144
6136
|
children: [
|
|
6145
|
-
open ? /* @__PURE__ */
|
|
6137
|
+
open ? /* @__PURE__ */ jsx7(
|
|
6146
6138
|
VerticalVolumeSlider,
|
|
6147
6139
|
{
|
|
6148
6140
|
appearance,
|
|
@@ -6150,7 +6142,7 @@ function VolumeControl({
|
|
|
6150
6142
|
volume: displayVolume
|
|
6151
6143
|
}
|
|
6152
6144
|
) : null,
|
|
6153
|
-
/* @__PURE__ */
|
|
6145
|
+
/* @__PURE__ */ jsx7(
|
|
6154
6146
|
ChromeButton,
|
|
6155
6147
|
{
|
|
6156
6148
|
appearance,
|
|
@@ -6161,7 +6153,7 @@ function VolumeControl({
|
|
|
6161
6153
|
}
|
|
6162
6154
|
onToggleMuted();
|
|
6163
6155
|
},
|
|
6164
|
-
children: mutedOrSilent ? /* @__PURE__ */
|
|
6156
|
+
children: mutedOrSilent ? /* @__PURE__ */ jsx7(Icon, { path: "M3 6.5h2.2L8.5 4v8L5.2 9.5H3zM10.2 6.2l3.2 3.6M13.4 6.2l-3.2 3.6" }) : /* @__PURE__ */ jsx7(Icon, { path: "M3 6.5h2.2L8.5 4v8L5.2 9.5H3zM10.5 5.5a3 3 0 0 1 0 5" })
|
|
6165
6157
|
}
|
|
6166
6158
|
)
|
|
6167
6159
|
]
|
|
@@ -6321,7 +6313,7 @@ function PanoVideoControlsHud({
|
|
|
6321
6313
|
let menuNode = null;
|
|
6322
6314
|
switch (menu) {
|
|
6323
6315
|
case "rate":
|
|
6324
|
-
menuNode = /* @__PURE__ */
|
|
6316
|
+
menuNode = /* @__PURE__ */ jsx7(
|
|
6325
6317
|
ChromeMenu,
|
|
6326
6318
|
{
|
|
6327
6319
|
appearance: resolved,
|
|
@@ -6340,7 +6332,7 @@ function PanoVideoControlsHud({
|
|
|
6340
6332
|
);
|
|
6341
6333
|
break;
|
|
6342
6334
|
case "variant":
|
|
6343
|
-
menuNode = /* @__PURE__ */
|
|
6335
|
+
menuNode = /* @__PURE__ */ jsx7(
|
|
6344
6336
|
ChromeMenu,
|
|
6345
6337
|
{
|
|
6346
6338
|
appearance: resolved,
|
|
@@ -6359,7 +6351,7 @@ function PanoVideoControlsHud({
|
|
|
6359
6351
|
);
|
|
6360
6352
|
break;
|
|
6361
6353
|
case "captions":
|
|
6362
|
-
menuNode = /* @__PURE__ */
|
|
6354
|
+
menuNode = /* @__PURE__ */ jsx7(
|
|
6363
6355
|
CaptionsMenu,
|
|
6364
6356
|
{
|
|
6365
6357
|
appearance: resolved,
|
|
@@ -6383,7 +6375,7 @@ function PanoVideoControlsHud({
|
|
|
6383
6375
|
);
|
|
6384
6376
|
break;
|
|
6385
6377
|
case "more":
|
|
6386
|
-
menuNode = /* @__PURE__ */
|
|
6378
|
+
menuNode = /* @__PURE__ */ jsx7(
|
|
6387
6379
|
ChromeMenu,
|
|
6388
6380
|
{
|
|
6389
6381
|
appearance: resolved,
|
|
@@ -6451,7 +6443,7 @@ function PanoVideoControlsHud({
|
|
|
6451
6443
|
};
|
|
6452
6444
|
const rateButton = /* @__PURE__ */ jsxs3("div", { className: "pano-video-menu", "data-pano-video-menu": "rate", children: [
|
|
6453
6445
|
!compact && menu === "rate" ? menuNode : null,
|
|
6454
|
-
/* @__PURE__ */
|
|
6446
|
+
/* @__PURE__ */ jsx7(
|
|
6455
6447
|
ChromeButton,
|
|
6456
6448
|
{
|
|
6457
6449
|
appearance: resolved,
|
|
@@ -6459,13 +6451,13 @@ function PanoVideoControlsHud({
|
|
|
6459
6451
|
onClick: () => {
|
|
6460
6452
|
toggleMenu("rate");
|
|
6461
6453
|
},
|
|
6462
|
-
children: /* @__PURE__ */
|
|
6454
|
+
children: /* @__PURE__ */ jsx7("span", { className: "pano-video-chrome-label", id: `${barId}-rate-btn`, children: snapshot.playbackRate === 1 ? "1x" : `${snapshot.playbackRate}x` })
|
|
6463
6455
|
}
|
|
6464
6456
|
)
|
|
6465
6457
|
] });
|
|
6466
6458
|
const variantButton = canSwitchVariant ? /* @__PURE__ */ jsxs3("div", { className: "pano-video-menu", "data-pano-video-menu": "variant", children: [
|
|
6467
6459
|
!compact && menu === "variant" ? menuNode : null,
|
|
6468
|
-
/* @__PURE__ */
|
|
6460
|
+
/* @__PURE__ */ jsx7(
|
|
6469
6461
|
ChromeButton,
|
|
6470
6462
|
{
|
|
6471
6463
|
appearance: resolved,
|
|
@@ -6473,13 +6465,13 @@ function PanoVideoControlsHud({
|
|
|
6473
6465
|
onClick: () => {
|
|
6474
6466
|
toggleMenu("variant");
|
|
6475
6467
|
},
|
|
6476
|
-
children: /* @__PURE__ */
|
|
6468
|
+
children: /* @__PURE__ */ jsx7("span", { className: "pano-video-chrome-label", id: `${barId}-variant-btn`, children: snapshot.variants.find((variant) => variant.id === snapshot.variantId)?.label ?? "Quality" })
|
|
6477
6469
|
}
|
|
6478
6470
|
)
|
|
6479
6471
|
] }) : null;
|
|
6480
6472
|
const captionsButton = showCaptionsMenu ? /* @__PURE__ */ jsxs3("div", { className: "pano-video-menu", "data-pano-video-menu": "captions", children: [
|
|
6481
6473
|
!compact && menu === "captions" ? menuNode : null,
|
|
6482
|
-
/* @__PURE__ */
|
|
6474
|
+
/* @__PURE__ */ jsx7(
|
|
6483
6475
|
ChromeButton,
|
|
6484
6476
|
{
|
|
6485
6477
|
appearance: resolved,
|
|
@@ -6487,7 +6479,7 @@ function PanoVideoControlsHud({
|
|
|
6487
6479
|
onClick: () => {
|
|
6488
6480
|
toggleMenu("captions");
|
|
6489
6481
|
},
|
|
6490
|
-
children: /* @__PURE__ */
|
|
6482
|
+
children: /* @__PURE__ */ jsx7("span", { id: `${barId}-captions-btn`, children: /* @__PURE__ */ jsx7(Icon, { path: "M2.5 4.5h11v7h-11zM5 7.2h2.4M5 9.2h5.5" }) })
|
|
6491
6483
|
}
|
|
6492
6484
|
)
|
|
6493
6485
|
] }) : null;
|
|
@@ -6498,7 +6490,7 @@ function PanoVideoControlsHud({
|
|
|
6498
6490
|
"data-pano-video-controls": "",
|
|
6499
6491
|
style: barStyle,
|
|
6500
6492
|
children: [
|
|
6501
|
-
/* @__PURE__ */
|
|
6493
|
+
/* @__PURE__ */ jsx7(
|
|
6502
6494
|
ChromeButton,
|
|
6503
6495
|
{
|
|
6504
6496
|
appearance: resolved,
|
|
@@ -6506,11 +6498,11 @@ function PanoVideoControlsHud({
|
|
|
6506
6498
|
onClick: () => {
|
|
6507
6499
|
controller.togglePlay();
|
|
6508
6500
|
},
|
|
6509
|
-
children: snapshot.playing ? /* @__PURE__ */
|
|
6501
|
+
children: snapshot.playing ? /* @__PURE__ */ jsx7(Icon, { path: "M5 3.5h2.2v9H5zM8.8 3.5H11v9H8.8z" }) : /* @__PURE__ */ jsx7(Icon, { path: "M5 3.2v9.6L13 8z" })
|
|
6510
6502
|
}
|
|
6511
6503
|
),
|
|
6512
|
-
hideTime ? null : /* @__PURE__ */
|
|
6513
|
-
/* @__PURE__ */
|
|
6504
|
+
hideTime ? null : /* @__PURE__ */ jsx7("span", { className: "pano-video-time", children: formatMediaTime(snapshot.currentTime) }),
|
|
6505
|
+
/* @__PURE__ */ jsx7(
|
|
6514
6506
|
"input",
|
|
6515
6507
|
{
|
|
6516
6508
|
"aria-label": "Seek",
|
|
@@ -6532,8 +6524,8 @@ function PanoVideoControlsHud({
|
|
|
6532
6524
|
value: duration > 0 ? snapshot.currentTime : 0
|
|
6533
6525
|
}
|
|
6534
6526
|
),
|
|
6535
|
-
hideTime ? null : /* @__PURE__ */
|
|
6536
|
-
/* @__PURE__ */
|
|
6527
|
+
hideTime ? null : /* @__PURE__ */ jsx7("span", { className: "pano-video-time", children: formatMediaTime(duration) }),
|
|
6528
|
+
/* @__PURE__ */ jsx7(
|
|
6537
6529
|
VolumeControl,
|
|
6538
6530
|
{
|
|
6539
6531
|
appearance: resolved,
|
|
@@ -6551,7 +6543,7 @@ function PanoVideoControlsHud({
|
|
|
6551
6543
|
),
|
|
6552
6544
|
compact ? /* @__PURE__ */ jsxs3("div", { className: "pano-video-menu", "data-pano-video-menu": "more", children: [
|
|
6553
6545
|
menu !== null ? menuNode : null,
|
|
6554
|
-
/* @__PURE__ */
|
|
6546
|
+
/* @__PURE__ */ jsx7(
|
|
6555
6547
|
ChromeButton,
|
|
6556
6548
|
{
|
|
6557
6549
|
appearance: resolved,
|
|
@@ -6560,7 +6552,7 @@ function PanoVideoControlsHud({
|
|
|
6560
6552
|
onClick: () => {
|
|
6561
6553
|
toggleMenu("more");
|
|
6562
6554
|
},
|
|
6563
|
-
children: /* @__PURE__ */
|
|
6555
|
+
children: /* @__PURE__ */ jsx7(Icon, { path: "M3 8a1 1 0 1 0 2 0 1 1 0 1 0-2 0M7 8a1 1 0 1 0 2 0 1 1 0 1 0-2 0M11 8a1 1 0 1 0 2 0 1 1 0 1 0-2 0" })
|
|
6564
6556
|
}
|
|
6565
6557
|
)
|
|
6566
6558
|
] }) : /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
@@ -6568,7 +6560,7 @@ function PanoVideoControlsHud({
|
|
|
6568
6560
|
variantButton,
|
|
6569
6561
|
captionsButton
|
|
6570
6562
|
] }),
|
|
6571
|
-
showFullscreen ? /* @__PURE__ */
|
|
6563
|
+
showFullscreen ? /* @__PURE__ */ jsx7(
|
|
6572
6564
|
ChromeButton,
|
|
6573
6565
|
{
|
|
6574
6566
|
appearance: resolved,
|
|
@@ -6576,7 +6568,7 @@ function PanoVideoControlsHud({
|
|
|
6576
6568
|
onClick: () => {
|
|
6577
6569
|
fullscreen?.toggleFullscreen();
|
|
6578
6570
|
},
|
|
6579
|
-
children: fullscreen?.isFullscreen ? /* @__PURE__ */
|
|
6571
|
+
children: fullscreen?.isFullscreen ? /* @__PURE__ */ jsx7(Icon, { path: "M6 3.5H3.5V6M10 3.5h2.5V6M6 12.5H3.5V10M10 12.5h2.5V10" }) : /* @__PURE__ */ jsx7(Icon, { path: "M3.5 6V3.5H6M10 3.5h2.5V6M3.5 10v2.5H6M10 12.5h2.5V10" })
|
|
6580
6572
|
}
|
|
6581
6573
|
) : null
|
|
6582
6574
|
]
|
|
@@ -6593,7 +6585,7 @@ function PanoVideoControls({ appearance }) {
|
|
|
6593
6585
|
}
|
|
6594
6586
|
|
|
6595
6587
|
// src/video/pano-video-chrome-bridge.tsx
|
|
6596
|
-
import { Fragment as Fragment2, jsx as
|
|
6588
|
+
import { Fragment as Fragment2, jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
6597
6589
|
function PanoVideoChromeBridge({
|
|
6598
6590
|
fullscreen,
|
|
6599
6591
|
host,
|
|
@@ -6609,7 +6601,7 @@ function PanoVideoChromeBridge({
|
|
|
6609
6601
|
}
|
|
6610
6602
|
const showDefaultControls = host.controller !== null && host.controls !== false && host.controlClaims === 0;
|
|
6611
6603
|
return /* @__PURE__ */ jsxs4(Fragment2, { children: [
|
|
6612
|
-
showDefaultControls ? /* @__PURE__ */
|
|
6604
|
+
showDefaultControls ? /* @__PURE__ */ jsx8(
|
|
6613
6605
|
PanoVideoControlsHud,
|
|
6614
6606
|
{
|
|
6615
6607
|
appearance: typeof host.controls === "object" ? host.controls : void 0,
|
|
@@ -6618,7 +6610,7 @@ function PanoVideoChromeBridge({
|
|
|
6618
6610
|
overlayElement
|
|
6619
6611
|
}
|
|
6620
6612
|
) : null,
|
|
6621
|
-
host.captions !== false && host.controller ? /* @__PURE__ */
|
|
6613
|
+
host.captions !== false && host.controller ? /* @__PURE__ */ jsx8(PanoVideoCaptionsOverlay, { controller: host.controller }) : null
|
|
6622
6614
|
] });
|
|
6623
6615
|
}
|
|
6624
6616
|
|
|
@@ -6771,7 +6763,7 @@ function clamp2(value, min, max) {
|
|
|
6771
6763
|
}
|
|
6772
6764
|
|
|
6773
6765
|
// src/webvr/chrome.tsx
|
|
6774
|
-
import { Fragment as Fragment3, jsx as
|
|
6766
|
+
import { Fragment as Fragment3, jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
6775
6767
|
function resolveAppearance(value) {
|
|
6776
6768
|
return {
|
|
6777
6769
|
...DEFAULT_WEBVR_CHROME_APPEARANCE,
|
|
@@ -6783,7 +6775,7 @@ function ChromeButton2({
|
|
|
6783
6775
|
children,
|
|
6784
6776
|
onClick
|
|
6785
6777
|
}) {
|
|
6786
|
-
return /* @__PURE__ */
|
|
6778
|
+
return /* @__PURE__ */ jsx9(
|
|
6787
6779
|
"button",
|
|
6788
6780
|
{
|
|
6789
6781
|
className: "pano-webvr-button",
|
|
@@ -6828,11 +6820,11 @@ function SetupPanel({
|
|
|
6828
6820
|
role: "dialog",
|
|
6829
6821
|
style: panelStyle,
|
|
6830
6822
|
children: [
|
|
6831
|
-
/* @__PURE__ */
|
|
6823
|
+
/* @__PURE__ */ jsx9("h2", { className: "pano-webvr-setup-title", children: appearance.setupTitle ?? "MobileVR Setup" }),
|
|
6832
6824
|
/* @__PURE__ */ jsxs5("label", { className: "pano-webvr-setup-field", children: [
|
|
6833
6825
|
"Screen size (inch)",
|
|
6834
6826
|
/* @__PURE__ */ jsxs5("div", { className: "pano-webvr-setup-row", children: [
|
|
6835
|
-
/* @__PURE__ */
|
|
6827
|
+
/* @__PURE__ */ jsx9(
|
|
6836
6828
|
"button",
|
|
6837
6829
|
{
|
|
6838
6830
|
"aria-label": "Decrease screen size",
|
|
@@ -6844,8 +6836,8 @@ function SetupPanel({
|
|
|
6844
6836
|
children: "\u2039"
|
|
6845
6837
|
}
|
|
6846
6838
|
),
|
|
6847
|
-
/* @__PURE__ */
|
|
6848
|
-
/* @__PURE__ */
|
|
6839
|
+
/* @__PURE__ */ jsx9("strong", { className: "pano-webvr-setup-value", children: settings.screensize === "auto" ? "Auto" : settings.screensize.toFixed(1) }),
|
|
6840
|
+
/* @__PURE__ */ jsx9(
|
|
6849
6841
|
"button",
|
|
6850
6842
|
{
|
|
6851
6843
|
"aria-label": "Increase screen size",
|
|
@@ -6860,9 +6852,9 @@ function SetupPanel({
|
|
|
6860
6852
|
] })
|
|
6861
6853
|
] }),
|
|
6862
6854
|
/* @__PURE__ */ jsxs5("fieldset", { className: "pano-webvr-setup-fieldset", children: [
|
|
6863
|
-
/* @__PURE__ */
|
|
6855
|
+
/* @__PURE__ */ jsx9("legend", { className: "pano-webvr-setup-legend", children: "VR headset preset" }),
|
|
6864
6856
|
/* @__PURE__ */ jsxs5("div", { className: "pano-webvr-setup-row", children: [
|
|
6865
|
-
/* @__PURE__ */
|
|
6857
|
+
/* @__PURE__ */ jsx9(
|
|
6866
6858
|
"button",
|
|
6867
6859
|
{
|
|
6868
6860
|
"aria-label": "Previous headset preset",
|
|
@@ -6872,8 +6864,8 @@ function SetupPanel({
|
|
|
6872
6864
|
children: "\u2039"
|
|
6873
6865
|
}
|
|
6874
6866
|
),
|
|
6875
|
-
/* @__PURE__ */
|
|
6876
|
-
/* @__PURE__ */
|
|
6867
|
+
/* @__PURE__ */ jsx9("strong", { className: "pano-webvr-setup-value-wide", children: WEBVR_PROFILES[settings.profileId].label }),
|
|
6868
|
+
/* @__PURE__ */ jsx9(
|
|
6877
6869
|
"button",
|
|
6878
6870
|
{
|
|
6879
6871
|
"aria-label": "Next headset preset",
|
|
@@ -6885,7 +6877,7 @@ function SetupPanel({
|
|
|
6885
6877
|
)
|
|
6886
6878
|
] })
|
|
6887
6879
|
] }),
|
|
6888
|
-
/* @__PURE__ */
|
|
6880
|
+
/* @__PURE__ */ jsx9(
|
|
6889
6881
|
ChromeButton2,
|
|
6890
6882
|
{
|
|
6891
6883
|
appearance,
|
|
@@ -6909,8 +6901,8 @@ function WebVRChromeBridge({ host }) {
|
|
|
6909
6901
|
}
|
|
6910
6902
|
const appearance = resolveAppearance(chrome);
|
|
6911
6903
|
return /* @__PURE__ */ jsxs5(Fragment3, { children: [
|
|
6912
|
-
/* @__PURE__ */
|
|
6913
|
-
mode !== "webxr" ? /* @__PURE__ */
|
|
6904
|
+
/* @__PURE__ */ jsx9("div", { className: "pano-webvr-toolbar", children: mode ? /* @__PURE__ */ jsxs5("div", { className: "pano-webvr-toolbar-actions", children: [
|
|
6905
|
+
mode !== "webxr" ? /* @__PURE__ */ jsx9(
|
|
6914
6906
|
ChromeButton2,
|
|
6915
6907
|
{
|
|
6916
6908
|
appearance,
|
|
@@ -6918,7 +6910,7 @@ function WebVRChromeBridge({ host }) {
|
|
|
6918
6910
|
children: "VR Setup"
|
|
6919
6911
|
}
|
|
6920
6912
|
) : null,
|
|
6921
|
-
/* @__PURE__ */
|
|
6913
|
+
/* @__PURE__ */ jsx9(
|
|
6922
6914
|
ChromeButton2,
|
|
6923
6915
|
{
|
|
6924
6916
|
appearance,
|
|
@@ -6926,7 +6918,7 @@ function WebVRChromeBridge({ host }) {
|
|
|
6926
6918
|
children: "Exit VR"
|
|
6927
6919
|
}
|
|
6928
6920
|
)
|
|
6929
|
-
] }) : /* @__PURE__ */
|
|
6921
|
+
] }) : /* @__PURE__ */ jsx9(
|
|
6930
6922
|
ChromeButton2,
|
|
6931
6923
|
{
|
|
6932
6924
|
appearance,
|
|
@@ -6934,7 +6926,7 @@ function WebVRChromeBridge({ host }) {
|
|
|
6934
6926
|
children: available ? "Enter VR" : "VR unavailable"
|
|
6935
6927
|
}
|
|
6936
6928
|
) }),
|
|
6937
|
-
mode === "fake" ? /* @__PURE__ */
|
|
6929
|
+
mode === "fake" ? /* @__PURE__ */ jsx9(
|
|
6938
6930
|
"p",
|
|
6939
6931
|
{
|
|
6940
6932
|
className: "pano-webvr-hint",
|
|
@@ -6942,7 +6934,7 @@ function WebVRChromeBridge({ host }) {
|
|
|
6942
6934
|
children: "Simulated VR Mode \xB7 Click the view to lock the mouse, then move to look around. Use a headset or phone for real VR."
|
|
6943
6935
|
}
|
|
6944
6936
|
) : null,
|
|
6945
|
-
setupOpen ? /* @__PURE__ */
|
|
6937
|
+
setupOpen ? /* @__PURE__ */ jsx9(
|
|
6946
6938
|
SetupPanel,
|
|
6947
6939
|
{
|
|
6948
6940
|
appearance,
|
|
@@ -6984,7 +6976,7 @@ import { useFrame as useFrame5, useThree as useThree8 } from "@react-three/fiber
|
|
|
6984
6976
|
import { useXR as useXR2, XROrigin } from "@react-three/xr";
|
|
6985
6977
|
import { useRef as useRef12 } from "react";
|
|
6986
6978
|
import { Vector3 as Vector34 } from "three";
|
|
6987
|
-
import { jsx as
|
|
6979
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
6988
6980
|
function PanoramaXROrigin() {
|
|
6989
6981
|
const originRef = useRef12(null);
|
|
6990
6982
|
const localHeadPositionRef = useRef12(new Vector34());
|
|
@@ -7000,11 +6992,11 @@ function PanoramaXROrigin() {
|
|
|
7000
6992
|
origin.position.copy(localHeadPositionRef.current).multiplyScalar(-1);
|
|
7001
6993
|
origin.updateMatrixWorld();
|
|
7002
6994
|
}, -100);
|
|
7003
|
-
return /* @__PURE__ */
|
|
6995
|
+
return /* @__PURE__ */ jsx10(XROrigin, { ref: originRef });
|
|
7004
6996
|
}
|
|
7005
6997
|
|
|
7006
6998
|
// src/pano-viewer.tsx
|
|
7007
|
-
import { jsx as
|
|
6999
|
+
import { jsx as jsx11, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
7008
7000
|
var DEFAULT_VIEW = {
|
|
7009
7001
|
yaw: 0,
|
|
7010
7002
|
pitch: 0,
|
|
@@ -7049,7 +7041,7 @@ function PanoCursorTree({
|
|
|
7049
7041
|
if (!cursors) {
|
|
7050
7042
|
return children;
|
|
7051
7043
|
}
|
|
7052
|
-
return /* @__PURE__ */
|
|
7044
|
+
return /* @__PURE__ */ jsx11(PanoCursorController, { cursors, children });
|
|
7053
7045
|
}
|
|
7054
7046
|
function PanoVideoHostReset() {
|
|
7055
7047
|
const host = useContext15(PanoVideoHostContext);
|
|
@@ -7070,9 +7062,9 @@ function DefaultControlChannels({
|
|
|
7070
7062
|
return null;
|
|
7071
7063
|
}
|
|
7072
7064
|
return /* @__PURE__ */ jsxs6(DefaultControlChannelContext.Provider, { value: true, children: [
|
|
7073
|
-
userControlsEnabled && mouseChannel.mount && claims.mouse === 0 ? /* @__PURE__ */
|
|
7074
|
-
userControlsEnabled && touchChannel.mount && claims.touch === 0 ? /* @__PURE__ */
|
|
7075
|
-
userControlsEnabled && keyboardChannel.mount && claims.keyboard === 0 ? /* @__PURE__ */
|
|
7065
|
+
userControlsEnabled && mouseChannel.mount && claims.mouse === 0 ? /* @__PURE__ */ jsx11(MouseControls, { ...mouseChannel.props, fovSpeed }) : null,
|
|
7066
|
+
userControlsEnabled && touchChannel.mount && claims.touch === 0 ? /* @__PURE__ */ jsx11(TouchControls, { ...touchChannel.props }) : null,
|
|
7067
|
+
userControlsEnabled && keyboardChannel.mount && claims.keyboard === 0 ? /* @__PURE__ */ jsx11(
|
|
7076
7068
|
KeyboardControls,
|
|
7077
7069
|
{
|
|
7078
7070
|
...keyboardChannel.props,
|
|
@@ -7165,7 +7157,27 @@ var PanoViewer = forwardRef2(
|
|
|
7165
7157
|
return resume;
|
|
7166
7158
|
}, [mediaActivationControls, mediaActivationOptions]);
|
|
7167
7159
|
const hasMediaActivationIntent = mediaActivationRevision >= 0 && hasPanoMediaActivationIntent(mediaActivationHost);
|
|
7168
|
-
const
|
|
7160
|
+
const shouldActivateMedia = mediaActivationOptions !== null && hasMediaActivationIntent && !mediaActivated;
|
|
7161
|
+
useEffect13(() => {
|
|
7162
|
+
if (!shouldActivateMedia) {
|
|
7163
|
+
return;
|
|
7164
|
+
}
|
|
7165
|
+
if (!needsMediaGesture()) {
|
|
7166
|
+
void activateMedia();
|
|
7167
|
+
return;
|
|
7168
|
+
}
|
|
7169
|
+
const handleGesture = () => {
|
|
7170
|
+
removeListeners();
|
|
7171
|
+
void activateMedia();
|
|
7172
|
+
};
|
|
7173
|
+
const removeListeners = () => {
|
|
7174
|
+
window.removeEventListener("pointerdown", handleGesture, true);
|
|
7175
|
+
window.removeEventListener("keydown", handleGesture, true);
|
|
7176
|
+
};
|
|
7177
|
+
window.addEventListener("pointerdown", handleGesture, { capture: true });
|
|
7178
|
+
window.addEventListener("keydown", handleGesture, { capture: true });
|
|
7179
|
+
return removeListeners;
|
|
7180
|
+
}, [activateMedia, shouldActivateMedia]);
|
|
7169
7181
|
const fallbackViewRef = useRef13(DEFAULT_VIEW);
|
|
7170
7182
|
const normalizedMinFov = Math.max(1, Math.min(minFov, maxFov - 1));
|
|
7171
7183
|
const normalizedMaxFov = Math.min(
|
|
@@ -7428,7 +7440,7 @@ var PanoViewer = forwardRef2(
|
|
|
7428
7440
|
"aria-label": ariaLabel,
|
|
7429
7441
|
style: rootStyle,
|
|
7430
7442
|
children: [
|
|
7431
|
-
/* @__PURE__ */
|
|
7443
|
+
/* @__PURE__ */ jsx11(
|
|
7432
7444
|
Canvas,
|
|
7433
7445
|
{
|
|
7434
7446
|
"aria-label": `${ariaLabel} canvas`,
|
|
@@ -7450,23 +7462,23 @@ var PanoViewer = forwardRef2(
|
|
|
7450
7462
|
...DEFAULT_CANVAS_STYLE,
|
|
7451
7463
|
touchAction: userControlsEnabled ? "none" : "auto"
|
|
7452
7464
|
},
|
|
7453
|
-
children: /* @__PURE__ */
|
|
7465
|
+
children: /* @__PURE__ */ jsx11(XR, { store: xrStore, children: /* @__PURE__ */ jsxs6(
|
|
7454
7466
|
WebVRRuntimeContext.Provider,
|
|
7455
7467
|
{
|
|
7456
7468
|
value: { host: webVRHost, xrStore, stereoView },
|
|
7457
7469
|
children: [
|
|
7458
|
-
/* @__PURE__ */
|
|
7459
|
-
/* @__PURE__ */
|
|
7470
|
+
/* @__PURE__ */ jsx11(PanoramaXROrigin, {}),
|
|
7471
|
+
/* @__PURE__ */ jsx11(HotspotAccessibilityContext.Provider, { value: registry, children: /* @__PURE__ */ jsx11(HotspotTargetRegistryContext.Provider, { value: hotspotTargetRegistry, children: /* @__PURE__ */ jsx11(PanoEventBusContext.Provider, { value: eventBus, children: /* @__PURE__ */ jsx11(PanoCursorTree, { cursors: resolvedCursors, children: /* @__PURE__ */ jsx11(PanoramaViewContext.Provider, { value: controlsRef, children: /* @__PURE__ */ jsx11(
|
|
7460
7472
|
PanoContextMenuOverlayContext.Provider,
|
|
7461
7473
|
{
|
|
7462
7474
|
value: contextMenuOverlayApi,
|
|
7463
|
-
children: /* @__PURE__ */
|
|
7475
|
+
children: /* @__PURE__ */ jsx11(PanoChromeOverlayContext.Provider, { value: chromeOverlayApi, children: /* @__PURE__ */ jsx11(PanoVideoHostContext.Provider, { value: videoHost, children: /* @__PURE__ */ jsx11(PanoFilterHostContext.Provider, { value: filterHost, children: /* @__PURE__ */ jsx11(
|
|
7464
7476
|
PanoContextMenuActionsContext.Provider,
|
|
7465
7477
|
{
|
|
7466
7478
|
value: contextMenuActions,
|
|
7467
|
-
children: /* @__PURE__ */
|
|
7468
|
-
/* @__PURE__ */
|
|
7469
|
-
/* @__PURE__ */
|
|
7479
|
+
children: /* @__PURE__ */ jsx11(ScenesHostContext.Provider, { value: scenesHost, children: /* @__PURE__ */ jsx11(BackgroundAudioHostContext.Provider, { value: bgmHost, children: /* @__PURE__ */ jsxs6(PanoMediaActivationHostContext.Provider, { value: mediaActivationHost, children: [
|
|
7480
|
+
/* @__PURE__ */ jsx11(PanoVideoHostReset, {}),
|
|
7481
|
+
/* @__PURE__ */ jsx11(
|
|
7470
7482
|
PanoramaViewRuntime,
|
|
7471
7483
|
{
|
|
7472
7484
|
ref: controlsRef,
|
|
@@ -7477,7 +7489,7 @@ var PanoViewer = forwardRef2(
|
|
|
7477
7489
|
options: controlOptions
|
|
7478
7490
|
}
|
|
7479
7491
|
),
|
|
7480
|
-
(onViewChange || onPanoramaClick || onPanoramaDoubleClick || onPanoramaPointerMove) && /* @__PURE__ */
|
|
7492
|
+
(onViewChange || onPanoramaClick || onPanoramaDoubleClick || onPanoramaPointerMove) && /* @__PURE__ */ jsx11(
|
|
7481
7493
|
PanoEvents,
|
|
7482
7494
|
{
|
|
7483
7495
|
onViewChange,
|
|
@@ -7486,18 +7498,18 @@ var PanoViewer = forwardRef2(
|
|
|
7486
7498
|
onPointerMove: onPanoramaPointerMove
|
|
7487
7499
|
}
|
|
7488
7500
|
),
|
|
7489
|
-
/* @__PURE__ */
|
|
7501
|
+
/* @__PURE__ */ jsx11(
|
|
7490
7502
|
AutoRotate,
|
|
7491
7503
|
{
|
|
7492
7504
|
enabled: legacyAutoRotate,
|
|
7493
7505
|
speed: legacyAutoRotateOptions.autoRotateSpeed
|
|
7494
7506
|
}
|
|
7495
7507
|
),
|
|
7496
|
-
/* @__PURE__ */
|
|
7497
|
-
contextMenuChannel.mount ? /* @__PURE__ */
|
|
7508
|
+
/* @__PURE__ */ jsx11(PanoramaEventSurface, {}),
|
|
7509
|
+
contextMenuChannel.mount ? /* @__PURE__ */ jsx11(PanoContextMenu, { ...contextMenuChannel.props }) : null,
|
|
7498
7510
|
/* @__PURE__ */ jsxs6(ControlClaimsContext.Provider, { value: controlClaims, children: [
|
|
7499
7511
|
children,
|
|
7500
|
-
/* @__PURE__ */
|
|
7512
|
+
/* @__PURE__ */ jsx11(
|
|
7501
7513
|
DefaultControlChannels,
|
|
7502
7514
|
{
|
|
7503
7515
|
fovSpeed: controlOptions.fovSpeed,
|
|
@@ -7525,7 +7537,7 @@ var PanoViewer = forwardRef2(
|
|
|
7525
7537
|
"data-pano-chrome-overlay": "",
|
|
7526
7538
|
ref: setOverlayNode,
|
|
7527
7539
|
children: [
|
|
7528
|
-
/* @__PURE__ */
|
|
7540
|
+
/* @__PURE__ */ jsx11(
|
|
7529
7541
|
PanoVideoChromeBridge,
|
|
7530
7542
|
{
|
|
7531
7543
|
fullscreen: contextMenuActions,
|
|
@@ -7533,21 +7545,12 @@ var PanoViewer = forwardRef2(
|
|
|
7533
7545
|
overlayElement
|
|
7534
7546
|
}
|
|
7535
7547
|
),
|
|
7536
|
-
/* @__PURE__ */
|
|
7548
|
+
/* @__PURE__ */ jsx11(WebVRChromeBridge, { host: webVRHost })
|
|
7537
7549
|
]
|
|
7538
7550
|
}
|
|
7539
7551
|
),
|
|
7540
7552
|
contextMenuOverlay,
|
|
7541
|
-
hotspotAccessibilityControls
|
|
7542
|
-
shouldShowMediaActivation ? /* @__PURE__ */ jsx12(
|
|
7543
|
-
PanoMediaActivationOverlay,
|
|
7544
|
-
{
|
|
7545
|
-
...mediaActivationOptions,
|
|
7546
|
-
onActivate: () => {
|
|
7547
|
-
void activateMedia();
|
|
7548
|
-
}
|
|
7549
|
-
}
|
|
7550
|
-
) : null
|
|
7553
|
+
hotspotAccessibilityControls
|
|
7551
7554
|
]
|
|
7552
7555
|
}
|
|
7553
7556
|
);
|
|
@@ -8477,7 +8480,7 @@ import {
|
|
|
8477
8480
|
Vector2 as Vector22,
|
|
8478
8481
|
Vector3 as Vector37
|
|
8479
8482
|
} from "three";
|
|
8480
|
-
import { jsx as
|
|
8483
|
+
import { jsx as jsx12, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
8481
8484
|
var CENTER_NDC = new Vector22(0, 0);
|
|
8482
8485
|
var HUD_DISTANCE = 2;
|
|
8483
8486
|
var RETICLE_SCALE = 1;
|
|
@@ -8652,8 +8655,8 @@ function WebVRReticle({
|
|
|
8652
8655
|
raycast: noopRaycast,
|
|
8653
8656
|
renderOrder: RETICLE_RENDER_ORDER + 1,
|
|
8654
8657
|
children: [
|
|
8655
|
-
/* @__PURE__ */
|
|
8656
|
-
/* @__PURE__ */
|
|
8658
|
+
/* @__PURE__ */ jsx12("boxGeometry", { args: [CROSSHAIR_LENGTH, CROSSHAIR_THICKNESS, 1e-3] }),
|
|
8659
|
+
/* @__PURE__ */ jsx12(
|
|
8657
8660
|
"meshBasicMaterial",
|
|
8658
8661
|
{
|
|
8659
8662
|
color: "#ffffff",
|
|
@@ -8673,8 +8676,8 @@ function WebVRReticle({
|
|
|
8673
8676
|
raycast: noopRaycast,
|
|
8674
8677
|
renderOrder: RETICLE_RENDER_ORDER + 1,
|
|
8675
8678
|
children: [
|
|
8676
|
-
/* @__PURE__ */
|
|
8677
|
-
/* @__PURE__ */
|
|
8679
|
+
/* @__PURE__ */ jsx12("boxGeometry", { args: [CROSSHAIR_THICKNESS, CROSSHAIR_LENGTH, 1e-3] }),
|
|
8680
|
+
/* @__PURE__ */ jsx12(
|
|
8678
8681
|
"meshBasicMaterial",
|
|
8679
8682
|
{
|
|
8680
8683
|
color: "#ffffff",
|
|
@@ -8696,7 +8699,7 @@ function WebVRReticle({
|
|
|
8696
8699
|
renderOrder: RETICLE_RENDER_ORDER + 2,
|
|
8697
8700
|
visible: false,
|
|
8698
8701
|
children: [
|
|
8699
|
-
/* @__PURE__ */
|
|
8702
|
+
/* @__PURE__ */ jsx12(
|
|
8700
8703
|
"ringGeometry",
|
|
8701
8704
|
{
|
|
8702
8705
|
args: [
|
|
@@ -8709,7 +8712,7 @@ function WebVRReticle({
|
|
|
8709
8712
|
]
|
|
8710
8713
|
}
|
|
8711
8714
|
),
|
|
8712
|
-
/* @__PURE__ */
|
|
8715
|
+
/* @__PURE__ */ jsx12(
|
|
8713
8716
|
"meshBasicMaterial",
|
|
8714
8717
|
{
|
|
8715
8718
|
color: "#ffffff",
|
|
@@ -9161,7 +9164,7 @@ function useWebVRWakeLock(enabled) {
|
|
|
9161
9164
|
}
|
|
9162
9165
|
|
|
9163
9166
|
// src/webvr/webvr.tsx
|
|
9164
|
-
import { Fragment as Fragment4, jsx as
|
|
9167
|
+
import { Fragment as Fragment4, jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
9165
9168
|
function initializeSettings(screensize, profile) {
|
|
9166
9169
|
const stored = loadWebVRSettings();
|
|
9167
9170
|
return {
|
|
@@ -9495,7 +9498,7 @@ var WebVR = forwardRef4(function WebVR2({
|
|
|
9495
9498
|
wakelock && (mode === "mobilevr" || mode === "fake")
|
|
9496
9499
|
);
|
|
9497
9500
|
return /* @__PURE__ */ jsxs8(Fragment4, { children: [
|
|
9498
|
-
/* @__PURE__ */
|
|
9501
|
+
/* @__PURE__ */ jsx13(
|
|
9499
9502
|
Gyro,
|
|
9500
9503
|
{
|
|
9501
9504
|
ref: gyroRef,
|
|
@@ -9509,7 +9512,7 @@ var WebVR = forwardRef4(function WebVR2({
|
|
|
9509
9512
|
touchMode: "off"
|
|
9510
9513
|
}
|
|
9511
9514
|
),
|
|
9512
|
-
/* @__PURE__ */
|
|
9515
|
+
/* @__PURE__ */ jsx13(
|
|
9513
9516
|
WebVRStereoRenderer,
|
|
9514
9517
|
{
|
|
9515
9518
|
mode,
|
|
@@ -9517,7 +9520,7 @@ var WebVR = forwardRef4(function WebVR2({
|
|
|
9517
9520
|
screensize: settings.screensize
|
|
9518
9521
|
}
|
|
9519
9522
|
),
|
|
9520
|
-
/* @__PURE__ */
|
|
9523
|
+
/* @__PURE__ */ jsx13(
|
|
9521
9524
|
WebVRReticle,
|
|
9522
9525
|
{
|
|
9523
9526
|
dwellMs: cursorDwellMs,
|
|
@@ -9801,7 +9804,7 @@ diffuseColor.rgb = mix(diffuseColor.rgb, applyPanoFilter(diffuseColor.rgb), clam
|
|
|
9801
9804
|
}
|
|
9802
9805
|
|
|
9803
9806
|
// src/pano-filter/pano-basic-material.tsx
|
|
9804
|
-
import { jsx as
|
|
9807
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
9805
9808
|
function PanoBasicMaterial({
|
|
9806
9809
|
map,
|
|
9807
9810
|
side,
|
|
@@ -9848,7 +9851,7 @@ function PanoBasicMaterial({
|
|
|
9848
9851
|
intensityUniformRef.current.value = snapshot.intensity;
|
|
9849
9852
|
}
|
|
9850
9853
|
}, [snapshot.intensity]);
|
|
9851
|
-
return /* @__PURE__ */
|
|
9854
|
+
return /* @__PURE__ */ jsx14(
|
|
9852
9855
|
"meshBasicMaterial",
|
|
9853
9856
|
{
|
|
9854
9857
|
ref: materialRef,
|
|
@@ -9864,7 +9867,7 @@ function PanoBasicMaterial({
|
|
|
9864
9867
|
}
|
|
9865
9868
|
|
|
9866
9869
|
// src/sphere.tsx
|
|
9867
|
-
import { jsx as
|
|
9870
|
+
import { jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
9868
9871
|
function useEquirectTexture(url, anisotropy, generateMipmaps, onLoad, onError) {
|
|
9869
9872
|
const [texture, setTexture] = useState9(null);
|
|
9870
9873
|
const onLoadRef = useRef22(onLoad);
|
|
@@ -9969,8 +9972,8 @@ function Sphere({
|
|
|
9969
9972
|
rotation: [0, MathUtils5.degToRad(90 + yawOffset), 0],
|
|
9970
9973
|
visible,
|
|
9971
9974
|
children: [
|
|
9972
|
-
/* @__PURE__ */
|
|
9973
|
-
/* @__PURE__ */
|
|
9975
|
+
/* @__PURE__ */ jsx15("sphereGeometry", { args: [DEFAULT_PANORAMA_RADIUS, 128, 64] }),
|
|
9976
|
+
/* @__PURE__ */ jsx15(
|
|
9974
9977
|
PanoBasicMaterial,
|
|
9975
9978
|
{
|
|
9976
9979
|
map: displayTexture,
|
|
@@ -10004,7 +10007,7 @@ import {
|
|
|
10004
10007
|
TextureLoader as TextureLoader2,
|
|
10005
10008
|
VideoTexture
|
|
10006
10009
|
} from "three";
|
|
10007
|
-
import { Fragment as Fragment5, jsx as
|
|
10010
|
+
import { Fragment as Fragment5, jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
10008
10011
|
var EMPTY_TRACKS = [];
|
|
10009
10012
|
var EMPTY_RATES = DEFAULT_PANO_VIDEO_PLAYBACK_RATES;
|
|
10010
10013
|
function createEmptySnapshot() {
|
|
@@ -10725,8 +10728,8 @@ function PanoVideo({
|
|
|
10725
10728
|
rotation: [0, MathUtils6.degToRad(90 + yawOffset), 0],
|
|
10726
10729
|
visible,
|
|
10727
10730
|
children: [
|
|
10728
|
-
/* @__PURE__ */
|
|
10729
|
-
/* @__PURE__ */
|
|
10731
|
+
/* @__PURE__ */ jsx16("sphereGeometry", { args: [DEFAULT_PANORAMA_RADIUS, 128, 64] }),
|
|
10732
|
+
/* @__PURE__ */ jsx16(
|
|
10730
10733
|
PanoBasicMaterial,
|
|
10731
10734
|
{
|
|
10732
10735
|
map: activeTexture,
|
|
@@ -10737,7 +10740,7 @@ function PanoVideo({
|
|
|
10737
10740
|
]
|
|
10738
10741
|
}
|
|
10739
10742
|
) : null,
|
|
10740
|
-
captionsEnabled ? /* @__PURE__ */
|
|
10743
|
+
captionsEnabled ? /* @__PURE__ */ jsx16(PanoVideoCaptions, { appearance: typeof captions === "object" ? captions : void 0 }) : null
|
|
10741
10744
|
] });
|
|
10742
10745
|
}
|
|
10743
10746
|
|
|
@@ -10869,7 +10872,7 @@ function overlayProgress(elapsedTime, duration, startTime) {
|
|
|
10869
10872
|
}
|
|
10870
10873
|
|
|
10871
10874
|
// src/scene-transitions/particle-overlay.tsx
|
|
10872
|
-
import { jsx as
|
|
10875
|
+
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
10873
10876
|
var PARTICLE_GRID = 48;
|
|
10874
10877
|
var PARTICLE_COUNT = PARTICLE_GRID * PARTICLE_GRID;
|
|
10875
10878
|
var PARTICLE_VERTEX_SHADER = `
|
|
@@ -10991,7 +10994,7 @@ function ParticleOverlay({
|
|
|
10991
10994
|
onFinish();
|
|
10992
10995
|
}
|
|
10993
10996
|
});
|
|
10994
|
-
return /* @__PURE__ */
|
|
10997
|
+
return /* @__PURE__ */ jsx17(
|
|
10995
10998
|
"mesh",
|
|
10996
10999
|
{
|
|
10997
11000
|
ref: meshRef,
|
|
@@ -11285,7 +11288,7 @@ function createSnapshotMaterial(preset, texture) {
|
|
|
11285
11288
|
}
|
|
11286
11289
|
|
|
11287
11290
|
// src/scene-transitions/snapshot-overlay.tsx
|
|
11288
|
-
import { jsx as
|
|
11291
|
+
import { jsx as jsx18, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
11289
11292
|
function SnapshotOverlay({
|
|
11290
11293
|
snapshot,
|
|
11291
11294
|
transition,
|
|
@@ -11335,20 +11338,20 @@ function SnapshotOverlay({
|
|
|
11335
11338
|
return null;
|
|
11336
11339
|
}
|
|
11337
11340
|
return /* @__PURE__ */ jsxs11("mesh", { ref: meshRef, renderOrder: OVERLAY_RENDER_ORDER, frustumCulled: false, children: [
|
|
11338
|
-
/* @__PURE__ */
|
|
11339
|
-
/* @__PURE__ */
|
|
11341
|
+
/* @__PURE__ */ jsx18("primitive", { attach: "geometry", object: FULLSCREEN_PLANE }),
|
|
11342
|
+
/* @__PURE__ */ jsx18("primitive", { attach: "material", object: material })
|
|
11340
11343
|
] });
|
|
11341
11344
|
}
|
|
11342
11345
|
|
|
11343
11346
|
// src/scene-transitions/transition-overlay.tsx
|
|
11344
|
-
import { jsx as
|
|
11347
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
11345
11348
|
function TransitionOverlay(props) {
|
|
11346
11349
|
const { preset } = props.transition;
|
|
11347
11350
|
switch (preset) {
|
|
11348
11351
|
case "none":
|
|
11349
11352
|
return null;
|
|
11350
11353
|
case "particles":
|
|
11351
|
-
return /* @__PURE__ */
|
|
11354
|
+
return /* @__PURE__ */ jsx19(ParticleOverlay, { ...props });
|
|
11352
11355
|
case "crossfade":
|
|
11353
11356
|
case "zoom":
|
|
11354
11357
|
case "blackout":
|
|
@@ -11376,7 +11379,7 @@ function TransitionOverlay(props) {
|
|
|
11376
11379
|
case "zoomBlur":
|
|
11377
11380
|
case "hexDissolve":
|
|
11378
11381
|
case "filmBurn":
|
|
11379
|
-
return /* @__PURE__ */
|
|
11382
|
+
return /* @__PURE__ */ jsx19(SnapshotOverlay, { ...props });
|
|
11380
11383
|
default: {
|
|
11381
11384
|
const exhaustive = preset;
|
|
11382
11385
|
void exhaustive;
|
|
@@ -11621,7 +11624,7 @@ var TileTextureManager = class {
|
|
|
11621
11624
|
};
|
|
11622
11625
|
|
|
11623
11626
|
// src/tile/texture-manager-context.tsx
|
|
11624
|
-
import { jsx as
|
|
11627
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
11625
11628
|
var TileTextureManagerContext = createContext15(
|
|
11626
11629
|
null
|
|
11627
11630
|
);
|
|
@@ -11645,7 +11648,7 @@ function TileTextureManagerProvider({
|
|
|
11645
11648
|
manager.resume();
|
|
11646
11649
|
return () => manager.dispose();
|
|
11647
11650
|
}, [manager]);
|
|
11648
|
-
return /* @__PURE__ */
|
|
11651
|
+
return /* @__PURE__ */ jsx20(TileTextureManagerContext.Provider, { value: manager, children });
|
|
11649
11652
|
}
|
|
11650
11653
|
function useSharedTileTextureManager() {
|
|
11651
11654
|
return useContext22(TileTextureManagerContext);
|
|
@@ -11854,7 +11857,7 @@ function resolveTemplateUrl(template, address) {
|
|
|
11854
11857
|
}
|
|
11855
11858
|
|
|
11856
11859
|
// src/tile/tile.tsx
|
|
11857
|
-
import { jsx as
|
|
11860
|
+
import { jsx as jsx21, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
11858
11861
|
var MAX_LOD_UPDATE_INTERVAL_MS = 100;
|
|
11859
11862
|
var FAST_ROTATION_THRESHOLD_RADIANS = Math.PI / 180;
|
|
11860
11863
|
var FAST_FOV_THRESHOLD_DEGREES = 0.5;
|
|
@@ -11941,14 +11944,14 @@ function PreviewFace({
|
|
|
11941
11944
|
[geometry]
|
|
11942
11945
|
);
|
|
11943
11946
|
const transform = getFaceTransform(face, PREVIEW_RADIUS);
|
|
11944
|
-
return /* @__PURE__ */
|
|
11947
|
+
return /* @__PURE__ */ jsx21(
|
|
11945
11948
|
"mesh",
|
|
11946
11949
|
{
|
|
11947
11950
|
geometry,
|
|
11948
11951
|
position: transform.position,
|
|
11949
11952
|
renderOrder: -100,
|
|
11950
11953
|
rotation: transform.rotation,
|
|
11951
|
-
children: /* @__PURE__ */
|
|
11954
|
+
children: /* @__PURE__ */ jsx21(
|
|
11952
11955
|
PanoBasicMaterial,
|
|
11953
11956
|
{
|
|
11954
11957
|
depthTest: false,
|
|
@@ -11964,7 +11967,7 @@ function PreviewCube({
|
|
|
11964
11967
|
texture,
|
|
11965
11968
|
faceOrder
|
|
11966
11969
|
}) {
|
|
11967
|
-
return CUBE_FACES.map((face) => /* @__PURE__ */
|
|
11970
|
+
return CUBE_FACES.map((face) => /* @__PURE__ */ jsx21(
|
|
11968
11971
|
PreviewFace,
|
|
11969
11972
|
{
|
|
11970
11973
|
face,
|
|
@@ -12009,14 +12012,14 @@ var TileMesh = memo(function TileMesh2({
|
|
|
12009
12012
|
if (!snapshot.texture) {
|
|
12010
12013
|
return null;
|
|
12011
12014
|
}
|
|
12012
|
-
return /* @__PURE__ */
|
|
12015
|
+
return /* @__PURE__ */ jsx21("group", { position: transform.position, rotation: transform.rotation, children: /* @__PURE__ */ jsx21(
|
|
12013
12016
|
"mesh",
|
|
12014
12017
|
{
|
|
12015
12018
|
geometry: SHARED_TILE_GEOMETRY,
|
|
12016
12019
|
position: [layout.x, layout.y, 0],
|
|
12017
12020
|
renderOrder,
|
|
12018
12021
|
scale: [layout.width, layout.height, 1],
|
|
12019
|
-
children: /* @__PURE__ */
|
|
12022
|
+
children: /* @__PURE__ */ jsx21(
|
|
12020
12023
|
PanoBasicMaterial,
|
|
12021
12024
|
{
|
|
12022
12025
|
depthTest: false,
|
|
@@ -12033,7 +12036,7 @@ var TileLayerMeshes = memo(function TileLayerMeshes2({
|
|
|
12033
12036
|
manager,
|
|
12034
12037
|
resolveUrl
|
|
12035
12038
|
}) {
|
|
12036
|
-
return layer.addresses.map((address) => /* @__PURE__ */
|
|
12039
|
+
return layer.addresses.map((address) => /* @__PURE__ */ jsx21(
|
|
12037
12040
|
TileMesh,
|
|
12038
12041
|
{
|
|
12039
12042
|
address,
|
|
@@ -12371,14 +12374,14 @@ function Tile({
|
|
|
12371
12374
|
commitLayers(nextLayers);
|
|
12372
12375
|
});
|
|
12373
12376
|
return /* @__PURE__ */ jsxs12("group", { visible, children: [
|
|
12374
|
-
previewTexture ? /* @__PURE__ */
|
|
12377
|
+
previewTexture ? /* @__PURE__ */ jsx21(
|
|
12375
12378
|
PreviewCube,
|
|
12376
12379
|
{
|
|
12377
12380
|
texture: previewTexture,
|
|
12378
12381
|
faceOrder: previewFaceOrder
|
|
12379
12382
|
}
|
|
12380
12383
|
) : null,
|
|
12381
|
-
layers.map((layer) => /* @__PURE__ */
|
|
12384
|
+
layers.map((layer) => /* @__PURE__ */ jsx21(
|
|
12382
12385
|
TileLayerMeshes,
|
|
12383
12386
|
{
|
|
12384
12387
|
layer,
|
|
@@ -12391,7 +12394,7 @@ function Tile({
|
|
|
12391
12394
|
}
|
|
12392
12395
|
|
|
12393
12396
|
// src/scenes.tsx
|
|
12394
|
-
import { jsx as
|
|
12397
|
+
import { jsx as jsx22, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
12395
12398
|
function SceneSource({
|
|
12396
12399
|
scene,
|
|
12397
12400
|
visible,
|
|
@@ -12404,7 +12407,7 @@ function SceneSource({
|
|
|
12404
12407
|
}
|
|
12405
12408
|
switch (scene.type) {
|
|
12406
12409
|
case "sphere":
|
|
12407
|
-
return /* @__PURE__ */
|
|
12410
|
+
return /* @__PURE__ */ jsx22(
|
|
12408
12411
|
Sphere,
|
|
12409
12412
|
{
|
|
12410
12413
|
src: scene.src,
|
|
@@ -12417,7 +12420,7 @@ function SceneSource({
|
|
|
12417
12420
|
);
|
|
12418
12421
|
case "tile": {
|
|
12419
12422
|
const { id: _id, type: _type, ...tileProps } = scene;
|
|
12420
|
-
return /* @__PURE__ */
|
|
12423
|
+
return /* @__PURE__ */ jsx22(
|
|
12421
12424
|
Tile,
|
|
12422
12425
|
{
|
|
12423
12426
|
...tileProps,
|
|
@@ -12685,7 +12688,7 @@ function ScenesController({
|
|
|
12685
12688
|
const renderedScene = slots[liveSlot];
|
|
12686
12689
|
const snapshotVisible = snapshot !== null && (phase === "transitioning" || phase === "recapturing" || phase === "preloading");
|
|
12687
12690
|
return /* @__PURE__ */ jsxs13(Fragment6, { children: [
|
|
12688
|
-
/* @__PURE__ */
|
|
12691
|
+
/* @__PURE__ */ jsx22(
|
|
12689
12692
|
SnapshotCapture,
|
|
12690
12693
|
{
|
|
12691
12694
|
requestId: captureRequestId,
|
|
@@ -12697,7 +12700,7 @@ function ScenesController({
|
|
|
12697
12700
|
const source = slots[slot];
|
|
12698
12701
|
const isLive = slot === liveSlot;
|
|
12699
12702
|
const isPending = slot === pendingSlot;
|
|
12700
|
-
return /* @__PURE__ */
|
|
12703
|
+
return /* @__PURE__ */ jsx22(
|
|
12701
12704
|
SceneSource,
|
|
12702
12705
|
{
|
|
12703
12706
|
scene: source,
|
|
@@ -12713,7 +12716,7 @@ function ScenesController({
|
|
|
12713
12716
|
`${slot}:${source?.id ?? "empty"}:${recoveryKey}`
|
|
12714
12717
|
);
|
|
12715
12718
|
}),
|
|
12716
|
-
snapshotVisible ? /* @__PURE__ */
|
|
12719
|
+
snapshotVisible ? /* @__PURE__ */ jsx22(
|
|
12717
12720
|
TransitionOverlay,
|
|
12718
12721
|
{
|
|
12719
12722
|
snapshot,
|
|
@@ -12806,12 +12809,12 @@ function Scenes({
|
|
|
12806
12809
|
}
|
|
12807
12810
|
};
|
|
12808
12811
|
}, [host, requestSceneChange]);
|
|
12809
|
-
return /* @__PURE__ */
|
|
12812
|
+
return /* @__PURE__ */ jsx22(
|
|
12810
12813
|
TileTextureManagerProvider,
|
|
12811
12814
|
{
|
|
12812
12815
|
maxTextureMemoryMb,
|
|
12813
12816
|
maxConcurrentLoads: maxConcurrentTileLoads,
|
|
12814
|
-
children: /* @__PURE__ */
|
|
12817
|
+
children: /* @__PURE__ */ jsx22(
|
|
12815
12818
|
ScenesController,
|
|
12816
12819
|
{
|
|
12817
12820
|
...rest,
|
|
@@ -12864,7 +12867,7 @@ import { useEffect as useEffect28, useMemo as useMemo21, useState as useState13
|
|
|
12864
12867
|
// src/webvr/stereo-html.tsx
|
|
12865
12868
|
import { Html } from "@react-three/drei";
|
|
12866
12869
|
import { useContext as useContext24, useSyncExternalStore as useSyncExternalStore7 } from "react";
|
|
12867
|
-
import { Fragment as Fragment7, jsx as
|
|
12870
|
+
import { Fragment as Fragment7, jsx as jsx23, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
12868
12871
|
function useFallbackStereoView() {
|
|
12869
12872
|
const runtime = useContext24(WebVRRuntimeContext);
|
|
12870
12873
|
const host = runtime?.host ?? null;
|
|
@@ -12889,10 +12892,10 @@ function stereoCalculatePosition(eye, stereoView) {
|
|
|
12889
12892
|
function PanoHtml({ children, ...htmlProps }) {
|
|
12890
12893
|
const stereoView = useFallbackStereoView();
|
|
12891
12894
|
if (!stereoView) {
|
|
12892
|
-
return /* @__PURE__ */
|
|
12895
|
+
return /* @__PURE__ */ jsx23(Html, { ...htmlProps, children });
|
|
12893
12896
|
}
|
|
12894
12897
|
return /* @__PURE__ */ jsxs14(Fragment7, { children: [
|
|
12895
|
-
/* @__PURE__ */
|
|
12898
|
+
/* @__PURE__ */ jsx23(
|
|
12896
12899
|
Html,
|
|
12897
12900
|
{
|
|
12898
12901
|
...htmlProps,
|
|
@@ -12900,7 +12903,7 @@ function PanoHtml({ children, ...htmlProps }) {
|
|
|
12900
12903
|
children
|
|
12901
12904
|
}
|
|
12902
12905
|
),
|
|
12903
|
-
/* @__PURE__ */
|
|
12906
|
+
/* @__PURE__ */ jsx23(
|
|
12904
12907
|
Html,
|
|
12905
12908
|
{
|
|
12906
12909
|
...htmlProps,
|
|
@@ -12913,7 +12916,7 @@ function PanoHtml({ children, ...htmlProps }) {
|
|
|
12913
12916
|
}
|
|
12914
12917
|
|
|
12915
12918
|
// src/hotspot/hotspot-tooltip.tsx
|
|
12916
|
-
import { jsx as
|
|
12919
|
+
import { jsx as jsx24, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
12917
12920
|
var DEFAULT_HOTSPOT_TOOLTIP_OFFSET = 12;
|
|
12918
12921
|
var DEFAULT_HOTSPOT_TOOLTIP_APPEARANCE = {
|
|
12919
12922
|
background: "rgba(22, 22, 22, 0.72)",
|
|
@@ -13010,14 +13013,14 @@ function HotspotTooltip({
|
|
|
13010
13013
|
if (!showImage && !content.text) {
|
|
13011
13014
|
return null;
|
|
13012
13015
|
}
|
|
13013
|
-
return /* @__PURE__ */
|
|
13016
|
+
return /* @__PURE__ */ jsx24(PanoHtml, { pointerEvents: "none", style: WRAPPER_STYLE, zIndexRange: [20, 10], children: /* @__PURE__ */ jsxs15(
|
|
13014
13017
|
"div",
|
|
13015
13018
|
{
|
|
13016
13019
|
className: "pano-hotspot-tooltip",
|
|
13017
13020
|
role: "tooltip",
|
|
13018
13021
|
style: bubbleStyle,
|
|
13019
13022
|
children: [
|
|
13020
|
-
showImage ? /* @__PURE__ */
|
|
13023
|
+
showImage ? /* @__PURE__ */ jsx24(
|
|
13021
13024
|
"img",
|
|
13022
13025
|
{
|
|
13023
13026
|
alt: content.imageAlt ?? content.text ?? "",
|
|
@@ -13026,14 +13029,14 @@ function HotspotTooltip({
|
|
|
13026
13029
|
src: content.image
|
|
13027
13030
|
}
|
|
13028
13031
|
) : null,
|
|
13029
|
-
content.text ? /* @__PURE__ */
|
|
13032
|
+
content.text ? /* @__PURE__ */ jsx24("p", { className: "pano-hotspot-tooltip-text", children: content.text }) : null
|
|
13030
13033
|
]
|
|
13031
13034
|
}
|
|
13032
13035
|
) });
|
|
13033
13036
|
}
|
|
13034
13037
|
|
|
13035
13038
|
// src/hotspot/hotspot-anchor.tsx
|
|
13036
|
-
import { jsx as
|
|
13039
|
+
import { jsx as jsx25, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
13037
13040
|
var DEFAULT_FLOATING_DISTANCE = 10;
|
|
13038
13041
|
var PANORAMA_RADIUS = DEFAULT_PANORAMA_RADIUS;
|
|
13039
13042
|
var PANORAMA_SURFACE_INSET = 4;
|
|
@@ -13680,18 +13683,18 @@ function HotspotAnchor({
|
|
|
13680
13683
|
} : void 0,
|
|
13681
13684
|
onPointerUp: acceptsPointer ? (event) => releasePointer(event, true) : void 0,
|
|
13682
13685
|
children: [
|
|
13683
|
-
focused ? focusContent ?? /* @__PURE__ */
|
|
13686
|
+
focused ? focusContent ?? /* @__PURE__ */ jsx25(
|
|
13684
13687
|
"lineSegments",
|
|
13685
13688
|
{
|
|
13686
13689
|
geometry: focusGeometry,
|
|
13687
13690
|
position: [0, 0, 0.01],
|
|
13688
13691
|
renderOrder: renderOrder + 1,
|
|
13689
13692
|
scale: [1.12, 1.12, 1],
|
|
13690
|
-
children: /* @__PURE__ */
|
|
13693
|
+
children: /* @__PURE__ */ jsx25("lineBasicMaterial", { color: "#f5fbfc", depthTest: false })
|
|
13691
13694
|
}
|
|
13692
13695
|
) : null,
|
|
13693
13696
|
children,
|
|
13694
|
-
tooltipOpen && tooltipContent ? /* @__PURE__ */
|
|
13697
|
+
tooltipOpen && tooltipContent ? /* @__PURE__ */ jsx25("group", { ref: tooltipAnchorRef, children: /* @__PURE__ */ jsx25(
|
|
13695
13698
|
HotspotTooltip,
|
|
13696
13699
|
{
|
|
13697
13700
|
appearance: tooltipAppearance,
|
|
@@ -13712,7 +13715,7 @@ import {
|
|
|
13712
13715
|
MeshBasicMaterial,
|
|
13713
13716
|
Vector2 as Vector26
|
|
13714
13717
|
} from "three";
|
|
13715
|
-
import { jsx as
|
|
13718
|
+
import { jsx as jsx26, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
13716
13719
|
var HOTSPOT_ALPHA_CUTOFF = 0.05;
|
|
13717
13720
|
var SAMPLE_UV = new Vector26();
|
|
13718
13721
|
var RAYCAST_HITS = [];
|
|
@@ -13815,8 +13818,8 @@ function HotspotPlane({
|
|
|
13815
13818
|
opacity
|
|
13816
13819
|
}) {
|
|
13817
13820
|
return /* @__PURE__ */ jsxs17("mesh", { raycast: hotspotPlaneRaycast, children: [
|
|
13818
|
-
/* @__PURE__ */
|
|
13819
|
-
/* @__PURE__ */
|
|
13821
|
+
/* @__PURE__ */ jsx26("planeGeometry", { args: [1, 1] }),
|
|
13822
|
+
/* @__PURE__ */ jsx26(
|
|
13820
13823
|
"meshBasicMaterial",
|
|
13821
13824
|
{
|
|
13822
13825
|
alphaTest: HOTSPOT_ALPHA_CUTOFF,
|
|
@@ -13832,7 +13835,7 @@ function HotspotPlane({
|
|
|
13832
13835
|
}
|
|
13833
13836
|
|
|
13834
13837
|
// src/hotspot/image-hotspot.tsx
|
|
13835
|
-
import { jsx as
|
|
13838
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
13836
13839
|
function useHotspotImageTexture(src, onLoad, onError) {
|
|
13837
13840
|
const gl = useThree21((state) => state.gl);
|
|
13838
13841
|
const [texture, setTexture] = useState15(null);
|
|
@@ -13896,7 +13899,7 @@ function ImageHotspot({
|
|
|
13896
13899
|
...anchorProps
|
|
13897
13900
|
}) {
|
|
13898
13901
|
const texture = useHotspotImageTexture(src, onLoad, onError);
|
|
13899
|
-
return /* @__PURE__ */
|
|
13902
|
+
return /* @__PURE__ */ jsx27(HotspotAnchor, { ...anchorProps, height, width, children: /* @__PURE__ */ jsx27(HotspotPlane, { map: texture, opacity }) });
|
|
13900
13903
|
}
|
|
13901
13904
|
|
|
13902
13905
|
// src/hotspot/polygon-hotspot.tsx
|
|
@@ -13921,7 +13924,7 @@ import {
|
|
|
13921
13924
|
PerspectiveCamera as PerspectiveCamera6,
|
|
13922
13925
|
Vector3 as Vector314
|
|
13923
13926
|
} from "three";
|
|
13924
|
-
import { jsx as
|
|
13927
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
13925
13928
|
var LINE_WORLD_POSITION = new Vector314();
|
|
13926
13929
|
function applyScreenSpaceDashScale(object, camera, viewportHeight) {
|
|
13927
13930
|
const material = object?.material;
|
|
@@ -13967,7 +13970,7 @@ function HotspotStrokeLine({
|
|
|
13967
13970
|
}
|
|
13968
13971
|
applyScreenSpaceDashScale(lineRef.current, state.camera, state.size.height);
|
|
13969
13972
|
});
|
|
13970
|
-
return /* @__PURE__ */
|
|
13973
|
+
return /* @__PURE__ */ jsx28(
|
|
13971
13974
|
Line,
|
|
13972
13975
|
{
|
|
13973
13976
|
ref: lineRef,
|
|
@@ -13989,7 +13992,7 @@ function HotspotStrokeLine({
|
|
|
13989
13992
|
}
|
|
13990
13993
|
|
|
13991
13994
|
// src/hotspot/polygon-hotspot.tsx
|
|
13992
|
-
import { jsx as
|
|
13995
|
+
import { jsx as jsx29, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
13993
13996
|
var POLYGON_RADIUS = 990;
|
|
13994
13997
|
var MAX_FILL_SEGMENT_DEGREES = 7;
|
|
13995
13998
|
function cloneVertices(vertices) {
|
|
@@ -14292,7 +14295,7 @@ function PolygonHotspot({
|
|
|
14292
14295
|
draggable,
|
|
14293
14296
|
interactive,
|
|
14294
14297
|
useAngularScale: false,
|
|
14295
|
-
focusContent: /* @__PURE__ */
|
|
14298
|
+
focusContent: /* @__PURE__ */ jsx29(
|
|
14296
14299
|
HotspotStrokeLine,
|
|
14297
14300
|
{
|
|
14298
14301
|
color: "#75cbd3",
|
|
@@ -14314,7 +14317,7 @@ function PolygonHotspot({
|
|
|
14314
14317
|
startVerticesRef.current = null;
|
|
14315
14318
|
},
|
|
14316
14319
|
children: [
|
|
14317
|
-
/* @__PURE__ */
|
|
14320
|
+
/* @__PURE__ */ jsx29("mesh", { geometry: fillGeometry, renderOrder, children: /* @__PURE__ */ jsx29(
|
|
14318
14321
|
"meshBasicMaterial",
|
|
14319
14322
|
{
|
|
14320
14323
|
color: fill,
|
|
@@ -14324,7 +14327,7 @@ function PolygonHotspot({
|
|
|
14324
14327
|
transparent: true
|
|
14325
14328
|
}
|
|
14326
14329
|
) }),
|
|
14327
|
-
/* @__PURE__ */
|
|
14330
|
+
/* @__PURE__ */ jsx29(
|
|
14328
14331
|
HotspotStrokeLine,
|
|
14329
14332
|
{
|
|
14330
14333
|
color: stroke,
|
|
@@ -14349,7 +14352,7 @@ import {
|
|
|
14349
14352
|
Quaternion as Quaternion5,
|
|
14350
14353
|
Vector3 as Vector316
|
|
14351
14354
|
} from "three";
|
|
14352
|
-
import { jsx as
|
|
14355
|
+
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
14353
14356
|
var POLYLINE_RADIUS = 990;
|
|
14354
14357
|
var MAX_SEGMENT_DEGREES = 7;
|
|
14355
14358
|
function cloneVertices2(vertices) {
|
|
@@ -14489,7 +14492,7 @@ function PolylineHotspot({
|
|
|
14489
14492
|
startPosition: event.startPosition
|
|
14490
14493
|
});
|
|
14491
14494
|
};
|
|
14492
|
-
return /* @__PURE__ */
|
|
14495
|
+
return /* @__PURE__ */ jsx30(
|
|
14493
14496
|
HotspotAnchor,
|
|
14494
14497
|
{
|
|
14495
14498
|
...anchorProps,
|
|
@@ -14503,7 +14506,7 @@ function PolylineHotspot({
|
|
|
14503
14506
|
renderOrder,
|
|
14504
14507
|
draggable,
|
|
14505
14508
|
useAngularScale: false,
|
|
14506
|
-
focusContent: /* @__PURE__ */
|
|
14509
|
+
focusContent: /* @__PURE__ */ jsx30(
|
|
14507
14510
|
HotspotStrokeLine,
|
|
14508
14511
|
{
|
|
14509
14512
|
color: "#75cbd3",
|
|
@@ -14524,7 +14527,7 @@ function PolylineHotspot({
|
|
|
14524
14527
|
emitVerticesChange(event, onDragEnd);
|
|
14525
14528
|
startVerticesRef.current = null;
|
|
14526
14529
|
},
|
|
14527
|
-
children: /* @__PURE__ */
|
|
14530
|
+
children: /* @__PURE__ */ jsx30(
|
|
14528
14531
|
HotspotStrokeLine,
|
|
14529
14532
|
{
|
|
14530
14533
|
color: stroke,
|
|
@@ -14549,7 +14552,7 @@ import {
|
|
|
14549
14552
|
LinearMipmapLinearFilter as LinearMipmapLinearFilter4,
|
|
14550
14553
|
SRGBColorSpace as SRGBColorSpace6
|
|
14551
14554
|
} from "three";
|
|
14552
|
-
import { jsx as
|
|
14555
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
14553
14556
|
var GRAPHIC_TEXTURE_SIZE = 512;
|
|
14554
14557
|
function resolveStrokeWidth(value) {
|
|
14555
14558
|
return Number.isFinite(value) ? Math.max(value, 0) : 8;
|
|
@@ -14769,15 +14772,15 @@ function CanvasGraphicHotspot({
|
|
|
14769
14772
|
...anchorProps
|
|
14770
14773
|
}) {
|
|
14771
14774
|
const texture = useGraphicTexture(graphic, width, height, onLoad, onError);
|
|
14772
|
-
return /* @__PURE__ */
|
|
14775
|
+
return /* @__PURE__ */ jsx31(HotspotAnchor, { ...anchorProps, height, width, children: /* @__PURE__ */ jsx31(HotspotPlane, { map: texture, opacity }) });
|
|
14773
14776
|
}
|
|
14774
14777
|
function GraphicHotspot(props) {
|
|
14775
14778
|
const { graphic, ...restProps } = props;
|
|
14776
14779
|
if (graphic.kind === "svg") {
|
|
14777
14780
|
const imageProps = restProps;
|
|
14778
|
-
return /* @__PURE__ */
|
|
14781
|
+
return /* @__PURE__ */ jsx31(ImageHotspot, { ...imageProps, src: graphic.src });
|
|
14779
14782
|
}
|
|
14780
|
-
return /* @__PURE__ */
|
|
14783
|
+
return /* @__PURE__ */ jsx31(CanvasGraphicHotspot, { ...restProps, graphic });
|
|
14781
14784
|
}
|
|
14782
14785
|
|
|
14783
14786
|
// src/hotspot/sequence-hotspot.tsx
|
|
@@ -14790,7 +14793,7 @@ import {
|
|
|
14790
14793
|
SRGBColorSpace as SRGBColorSpace7,
|
|
14791
14794
|
TextureLoader as TextureLoader6
|
|
14792
14795
|
} from "three";
|
|
14793
|
-
import { jsx as
|
|
14796
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
14794
14797
|
var DEFAULT_SEQUENCE_FPS = 12;
|
|
14795
14798
|
function resolveFps(value) {
|
|
14796
14799
|
return Number.isFinite(value) && value > 0 ? value : DEFAULT_SEQUENCE_FPS;
|
|
@@ -14966,7 +14969,7 @@ function SequenceHotspot({
|
|
|
14966
14969
|
onFrameChangeRef.current?.({ id, index: nextIndex, src });
|
|
14967
14970
|
}
|
|
14968
14971
|
});
|
|
14969
|
-
return /* @__PURE__ */
|
|
14972
|
+
return /* @__PURE__ */ jsx32(HotspotAnchor, { ...anchorProps, id, height, width, children: /* @__PURE__ */ jsx32(HotspotPlane, { map: texture, opacity }) });
|
|
14970
14973
|
}
|
|
14971
14974
|
|
|
14972
14975
|
// src/hotspot/video-hotspot.tsx
|
|
@@ -14980,7 +14983,7 @@ import {
|
|
|
14980
14983
|
TextureLoader as TextureLoader7,
|
|
14981
14984
|
VideoTexture as VideoTexture2
|
|
14982
14985
|
} from "three";
|
|
14983
|
-
import { jsx as
|
|
14986
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
14984
14987
|
function clampVolume2(volume) {
|
|
14985
14988
|
if (!Number.isFinite(volume)) {
|
|
14986
14989
|
return 1;
|
|
@@ -15205,7 +15208,7 @@ function VideoHotspot({
|
|
|
15205
15208
|
};
|
|
15206
15209
|
}, [playing, resource]);
|
|
15207
15210
|
const activeTexture = resource?.ready ? resource.texture : posterTexture;
|
|
15208
|
-
return /* @__PURE__ */
|
|
15211
|
+
return /* @__PURE__ */ jsx33(HotspotAnchor, { ...anchorProps, id, height, width, children: /* @__PURE__ */ jsx33(HotspotPlane, { map: activeTexture, opacity }) });
|
|
15209
15212
|
}
|
|
15210
15213
|
|
|
15211
15214
|
// src/hotspot/audio-hotspot.tsx
|
|
@@ -15219,7 +15222,7 @@ import {
|
|
|
15219
15222
|
SRGBColorSpace as SRGBColorSpace9,
|
|
15220
15223
|
TextureLoader as TextureLoader8
|
|
15221
15224
|
} from "three";
|
|
15222
|
-
import { jsx as
|
|
15225
|
+
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
15223
15226
|
var SPEAKER_TEXTURE_SIZE = 512;
|
|
15224
15227
|
function paintSpeakerBody(context, center) {
|
|
15225
15228
|
context.fillStyle = "#f5fbfc";
|
|
@@ -15504,7 +15507,7 @@ function AudioHotspot({
|
|
|
15504
15507
|
howl.mute(mutedRef.current);
|
|
15505
15508
|
howl.volume(clampAudioVolume(volumeRef.current) * spatial.gain);
|
|
15506
15509
|
});
|
|
15507
|
-
return /* @__PURE__ */
|
|
15510
|
+
return /* @__PURE__ */ jsx34(HotspotAnchor, { ...anchorProps, id, height, width, children: marker ? /* @__PURE__ */ jsx34(HotspotPlane, { map: markerTexture, opacity }) : null });
|
|
15508
15511
|
}
|
|
15509
15512
|
|
|
15510
15513
|
// src/hotspot/text-hotspot.tsx
|
|
@@ -15516,7 +15519,7 @@ import {
|
|
|
15516
15519
|
LinearMipmapLinearFilter as LinearMipmapLinearFilter8,
|
|
15517
15520
|
SRGBColorSpace as SRGBColorSpace10
|
|
15518
15521
|
} from "three";
|
|
15519
|
-
import { jsx as
|
|
15522
|
+
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
15520
15523
|
var TEXT_TEXTURE_LONG_SIDE = 1024;
|
|
15521
15524
|
var DEFAULT_FONT_FAMILY = "system-ui, sans-serif";
|
|
15522
15525
|
var DEFAULT_FONT_SIZE = 96;
|
|
@@ -15834,13 +15837,13 @@ function TextHotspot({
|
|
|
15834
15837
|
whiteSpace
|
|
15835
15838
|
};
|
|
15836
15839
|
const texture = useTextTexture(text, width, height, style, onLoad, onError);
|
|
15837
|
-
return /* @__PURE__ */
|
|
15840
|
+
return /* @__PURE__ */ jsx35(HotspotAnchor, { ...anchorProps, height, width, children: /* @__PURE__ */ jsx35(HotspotPlane, { map: texture, opacity }) });
|
|
15838
15841
|
}
|
|
15839
15842
|
|
|
15840
15843
|
// src/hotspot/iframe-hotspot.tsx
|
|
15841
15844
|
import { Html as Html2 } from "@react-three/drei";
|
|
15842
15845
|
import { DoubleSide as DoubleSide6 } from "three";
|
|
15843
|
-
import { jsx as
|
|
15846
|
+
import { jsx as jsx36, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
15844
15847
|
var IFRAME_LONG_SIDE = 800;
|
|
15845
15848
|
var CSS3D_DISTANCE_FACTOR = 400;
|
|
15846
15849
|
var DEFAULT_SANDBOX = "allow-scripts allow-popups allow-forms";
|
|
@@ -15907,8 +15910,8 @@ function IframeHotspot({
|
|
|
15907
15910
|
width,
|
|
15908
15911
|
children: [
|
|
15909
15912
|
/* @__PURE__ */ jsxs19("mesh", { children: [
|
|
15910
|
-
/* @__PURE__ */
|
|
15911
|
-
/* @__PURE__ */
|
|
15913
|
+
/* @__PURE__ */ jsx36("planeGeometry", { args: [1, 1] }),
|
|
15914
|
+
/* @__PURE__ */ jsx36(
|
|
15912
15915
|
"meshBasicMaterial",
|
|
15913
15916
|
{
|
|
15914
15917
|
depthWrite: false,
|
|
@@ -15919,7 +15922,7 @@ function IframeHotspot({
|
|
|
15919
15922
|
}
|
|
15920
15923
|
)
|
|
15921
15924
|
] }),
|
|
15922
|
-
/* @__PURE__ */
|
|
15925
|
+
/* @__PURE__ */ jsx36(
|
|
15923
15926
|
Html2,
|
|
15924
15927
|
{
|
|
15925
15928
|
distanceFactor: CSS3D_DISTANCE_FACTOR,
|
|
@@ -15934,7 +15937,7 @@ function IframeHotspot({
|
|
|
15934
15937
|
},
|
|
15935
15938
|
transform: true,
|
|
15936
15939
|
zIndexRange: [10, 0],
|
|
15937
|
-
children: /* @__PURE__ */
|
|
15940
|
+
children: /* @__PURE__ */ jsx36(
|
|
15938
15941
|
"iframe",
|
|
15939
15942
|
{
|
|
15940
15943
|
allow,
|