@realsee/vreo 3.0.0-webgpu.9 → 4.0.0-react19.0

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.
Files changed (68) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +6 -0
  3. package/lib/PlayController/index.js +74 -75
  4. package/lib/PlayController/index.js.map +1 -1
  5. package/lib/Player/App.d.ts +2 -1
  6. package/lib/Player/App.d.ts.map +1 -1
  7. package/lib/Player/custom/SpatialScenePanel/index.d.ts +2 -1
  8. package/lib/Player/custom/SpatialScenePanel/index.d.ts.map +1 -1
  9. package/lib/Player/hooks.d.ts.map +1 -1
  10. package/lib/Player/index.js +1 -1808
  11. package/lib/Player/modules/Drawer/index.d.ts +2 -1
  12. package/lib/Player/modules/Drawer/index.d.ts.map +1 -1
  13. package/lib/Player/modules/PopUp/index.d.ts +2 -1
  14. package/lib/Player/modules/PopUp/index.d.ts.map +1 -1
  15. package/lib/Player/modules/ResizeObserver/index.d.ts +2 -1
  16. package/lib/Player/modules/ResizeObserver/index.d.ts.map +1 -1
  17. package/lib/Player/modules/VideoAgent/index.d.ts +2 -2
  18. package/lib/Player/modules/Wave/index.d.ts +2 -1
  19. package/lib/Player/modules/Wave/index.d.ts.map +1 -1
  20. package/lib/Player/modules/keyframes/BgMusic/index.d.ts +2 -1
  21. package/lib/Player/modules/keyframes/BgMusic/index.d.ts.map +1 -1
  22. package/lib/Player/modules/keyframes/CameraMovement/index.d.ts +2 -1
  23. package/lib/Player/modules/keyframes/CameraMovement/index.d.ts.map +1 -1
  24. package/lib/Player/modules/keyframes/InfoPanel/index.d.ts +2 -1
  25. package/lib/Player/modules/keyframes/InfoPanel/index.d.ts.map +1 -1
  26. package/lib/Player/modules/keyframes/ModelVideo/index.d.ts +2 -1
  27. package/lib/Player/modules/keyframes/ModelVideo/index.d.ts.map +1 -1
  28. package/lib/Player/modules/keyframes/PanoEffect/index.d.ts +2 -1
  29. package/lib/Player/modules/keyframes/PanoEffect/index.d.ts.map +1 -1
  30. package/lib/Player/modules/keyframes/PanoTextLabel/index.d.ts +2 -1
  31. package/lib/Player/modules/keyframes/PanoTextLabel/index.d.ts.map +1 -1
  32. package/lib/Player/modules/keyframes/Prompter/index.d.ts +2 -1
  33. package/lib/Player/modules/keyframes/Prompter/index.d.ts.map +1 -1
  34. package/lib/Player/modules/keyframes/UpdateVRPanorama/index.d.ts +2 -1
  35. package/lib/Player/modules/keyframes/UpdateVRPanorama/index.d.ts.map +1 -1
  36. package/lib/Player/modules/keyframes/VideoEffect/index.d.ts +2 -1
  37. package/lib/Player/modules/keyframes/VideoEffect/index.d.ts.map +1 -1
  38. package/lib/chunks/CSS3DRenderPlugin-CtnLUnu7.js +128 -0
  39. package/lib/chunks/CSS3DRenderPlugin-CtnLUnu7.js.map +1 -0
  40. package/lib/chunks/CameraMovementPlugin-YCaScSFU.js +77 -0
  41. package/lib/chunks/CameraMovementPlugin-YCaScSFU.js.map +1 -0
  42. package/lib/chunks/Player-BzRqdH4q.js +1581 -0
  43. package/lib/chunks/Player-BzRqdH4q.js.map +1 -0
  44. package/lib/chunks/VreoUnit-NhH1hdF1.js +17 -0
  45. package/lib/chunks/VreoUnit-NhH1hdF1.js.map +1 -0
  46. package/lib/chunks/timeline-DZs_svT3.js +37 -0
  47. package/lib/chunks/timeline-DZs_svT3.js.map +1 -0
  48. package/lib/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.d.ts.map +1 -1
  49. package/lib/index.js +4 -12
  50. package/lib/plugins/CSS3DRenderPlugin.js +1 -115
  51. package/lib/plugins/CameraMovementPlugin.js +1 -6
  52. package/lib/plugins/ModelTVVideoPlugin.js +133 -161
  53. package/lib/plugins/ModelTVVideoPlugin.js.map +1 -1
  54. package/lib/react/index.js +40 -38
  55. package/lib/react/index.js.map +1 -1
  56. package/lib/shared-utils/animationFrame/BetterTween.d.ts.map +1 -1
  57. package/lib/shared-utils/createTransMatrix.d.ts.map +1 -1
  58. package/lib/types/index.js +1 -10
  59. package/package.json +8 -8
  60. package/lib/Player/index.js.map +0 -1
  61. package/lib/chunks/index-BgPSzRSs.js +0 -93
  62. package/lib/chunks/index-BgPSzRSs.js.map +0 -1
  63. package/lib/chunks/index-CunyJn6H.js +0 -51
  64. package/lib/chunks/index-CunyJn6H.js.map +0 -1
  65. package/lib/index.js.map +0 -1
  66. package/lib/plugins/CSS3DRenderPlugin.js.map +0 -1
  67. package/lib/plugins/CameraMovementPlugin.js.map +0 -1
  68. package/lib/types/index.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 4.0.0-react19.0 (candidate)
4
+
5
+ - Declare a separate React/React DOM19.3.1 compatibility line, retaining the published WebGPU player behavior and public entrypoints.
6
+ - Build/types use the same external Five alpha.14 and Dnalogel webgpu.17 as the consumer; Five remains unmodified.
7
+ - Local tar playback, pause, seek, remount and disposal tests pass on two mesh VRs with actual React19 rendering.
8
+ - Full NextVR/Next16 consumer verification is still required before publishing the accepted tar under the independent react19 tag.
9
+
3
10
  ## 2.6.4
4
11
 
5
12
  - feat: 讲解支持应用侧 PlaybackManager,一段讲解共享播放任务,保留内部音轨混音。
package/README.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @realsee/vreo
2
2
 
3
+ ## React19 candidate line
4
+
5
+ `4.0.0-react19.0` targets React/React DOM19.3.1. Existing React18 consumers retain their current `webgpu` version. React, Five, Three and Dnalogel remain external; Five code is unchanged.
6
+
7
+ Development installs the local `.tgz`, not an npm testing release. Build/types and real React19 playback, pause, seek, remount and disposal tests have passed; full NextVR/Next16 integration remains pending. Publish only the exact consumer-accepted tar under `react19`, preserving `latest` and `webgpu`.
8
+
3
9
  [![npm version](https://img.shields.io/npm/v/@realsee/vreo.svg?style=flat-square&logo=npm&label=npm%20install%20@realsee/vreo)](https://www.npmjs.com/package/@realsee/vreo)
4
10
 
5
11
  **Vreo** (VR Video 缩写) 是基于如视三维渲染引擎 [Five](https://unpkg.com/@realsee/five/docs/index.html) 和 用户界面构建库 [React](https://reactjs.org/) 实现的如视 3D 空间剧本播放器。
@@ -1,77 +1,76 @@
1
- var d = Object.defineProperty;
2
- var u = (V, t, A) => t in V ? d(V, t, { enumerable: !0, configurable: !0, writable: !0, value: A }) : V[t] = A;
3
- var e = (V, t, A) => u(V, typeof t != "symbol" ? t + "" : t, A);
4
- import { Subscribe as h } from "@realsee/five-webgpu";
5
- import { T as c, r as q } from "../chunks/index-CunyJn6H.js";
6
- const m = "data:audio/mpeg;base64,//uQxAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAADAAAGhgBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr///////////////////////////////////////////8AAAA5TEFNRTMuOThyAc0AAAAAAAAAABSAJAiqQgAAgAAABobxtI73AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//uQxAACFEII9ACZ/sJZwWEoEb8w/////N//////JcxjHjf+7/v/H2PzCCFAiDtGeyBCIx7bJJ1mmEEMy6g8mm2c8nrGABB4h2Mkmn//4z/73u773R5qHHu/j/w7Kxkzh5lWRWdsifCkNAnY9Zc1HvDAhjhSHdFkHFzLmabt/AQxSg2wwzLhHIJOBnAWwVY4zrhIYhhc2kvhYDfQ4hDi2Gmh5KyFn8EcGIrHAngNgIwVIEMf5bzbAiTRoAD///8z/KVhkkWEle6IX+d/z4fvH3BShK1e5kmjkCMoxVmXhd4ROlTKo3iipasvTilY21q19ta30/v/0/idPX1v8PNxJL6ramnOVsdvMv2akO0iSYIzdJFirtzWXCZicS9vHqvSKyqm5XJBdqBwPxyfJdykhWTZ0G0ZyTZGpLKxsNwwoRhsx3tZfhwmeOBVISm3impAC/IT/8hP/EKEM1KMdVdVKM2rHV4x7HVXZvbVVKN/qq8CiV9VL9jjH/6l6qf7MBCjZmOqsAibjcP+qqqv0oxqpa/NVW286hPo1nz2L/h8+jXt//uSxCmDU2IK/ECN98KKtE5IYzNoCfbw+u9i5r8PoadUMFPKqWL4LK3T/LCraMSHGkW4bpLXR/E6LlHOVQxmslKVJ8IULktMN06N0FKCpHCoYsjC4F+Z0NVqdNFoGSTjSiyjzLdnZ2fNqTi2eHKONONKLMPMKLONKLMPQRJGlFxZRoKcJFAYEeIFiRQkUWUeYfef//Ko04soswso40UJAgMw8wosososy0EalnZyjQUGBRQGIFggOWUacWUeYmuadrZziQKKEgQsQLAhQkUJAgMQDghltLO1onp0cpkNInSFMqlYeSEJ5AHsqFdOwy1DA2sRmRJKxdKRfLhfLw5BzUxBTUUzLjk4LjJVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUxBTUUzLjk4LjJVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7ksRRA8AAAaQAAAAgAAA0gAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=";
7
- function l() {
8
- const V = document.createElement("audio");
9
- return V.style.display = "none", V.controls = !1, document.body.appendChild(V), V.src = m, V.play().catch(() => {
10
- }), V;
1
+ import { n as e, t } from "../chunks/timeline-DZs_svT3.js";
2
+ import { Subscribe as n } from "@realsee/five-webgpu";
3
+ // resources/PlayController/createHTMLAudioElement.ts
4
+ var r = "data:audio/mpeg;base64,//uQxAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAADAAAGhgBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr///////////////////////////////////////////8AAAA5TEFNRTMuOThyAc0AAAAAAAAAABSAJAiqQgAAgAAABobxtI73AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//uQxAACFEII9ACZ/sJZwWEoEb8w/////N//////JcxjHjf+7/v/H2PzCCFAiDtGeyBCIx7bJJ1mmEEMy6g8mm2c8nrGABB4h2Mkmn//4z/73u773R5qHHu/j/w7Kxkzh5lWRWdsifCkNAnY9Zc1HvDAhjhSHdFkHFzLmabt/AQxSg2wwzLhHIJOBnAWwVY4zrhIYhhc2kvhYDfQ4hDi2Gmh5KyFn8EcGIrHAngNgIwVIEMf5bzbAiTRoAD///8z/KVhkkWEle6IX+d/z4fvH3BShK1e5kmjkCMoxVmXhd4ROlTKo3iipasvTilY21q19ta30/v/0/idPX1v8PNxJL6ramnOVsdvMv2akO0iSYIzdJFirtzWXCZicS9vHqvSKyqm5XJBdqBwPxyfJdykhWTZ0G0ZyTZGpLKxsNwwoRhsx3tZfhwmeOBVISm3impAC/IT/8hP/EKEM1KMdVdVKM2rHV4x7HVXZvbVVKN/qq8CiV9VL9jjH/6l6qf7MBCjZmOqsAibjcP+qqqv0oxqpa/NVW286hPo1nz2L/h8+jXt//uSxCmDU2IK/ECN98KKtE5IYzNoCfbw+u9i5r8PoadUMFPKqWL4LK3T/LCraMSHGkW4bpLXR/E6LlHOVQxmslKVJ8IULktMN06N0FKCpHCoYsjC4F+Z0NVqdNFoGSTjSiyjzLdnZ2fNqTi2eHKONONKLMPMKLONKLMPQRJGlFxZRoKcJFAYEeIFiRQkUWUeYfef//Ko04soswso40UJAgMw8wosososy0EalnZyjQUGBRQGIFggOWUacWUeYmuadrZziQKKEgQsQLAhQkUJAgMQDghltLO1onp0cpkNInSFMqlYeSEJ5AHsqFdOwy1DA2sRmRJKxdKRfLhfLw5BzUxBTUUzLjk4LjJVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUxBTUUzLjk4LjJVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7ksRRA8AAAaQAAAAgAAA0gAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=";
5
+ function i() {
6
+ let e = document.createElement("audio");
7
+ return e.style.display = "none", e.controls = !1, document.body.appendChild(e), e.src = r, e.play().catch(() => {}), e;
11
8
  }
12
- class v extends h {
13
- constructor(A = {}) {
14
- super();
15
- e(this, "vreoUnit");
16
- e(this, "config");
17
- e(this, "timeline", new c());
18
- e(this, "ownsAudio");
19
- e(this, "stopInterval");
20
- e(this, "playPromise");
21
- e(this, "disposed", !1);
22
- e(this, "onPlaying", () => this.emit("playing"));
23
- e(this, "onPaused", () => this.emit("paused"));
24
- e(this, "onEnded", () => this.emit("paused", !0));
25
- const i = A.audio ?? l();
26
- this.ownsAudio = !A.audio, this.config = { ...A, audio: i }, i.addEventListener("play", this.onPlaying), i.addEventListener("pause", this.onPaused), i.addEventListener("ended", this.onEnded), this.stopInterval = q(() => {
27
- if (i.paused) return;
28
- const n = this.currentTime;
29
- for (const s of this.timeline.take(n))
30
- this.emit(s.type, s, n);
31
- });
32
- }
33
- get paused() {
34
- return this.audioInstance.paused;
35
- }
36
- get audioInstance() {
37
- return this.config.audio;
38
- }
39
- get currentTime() {
40
- return this.audioInstance.currentTime * 1e3;
41
- }
42
- get currentKeyframes() {
43
- return this.timeline.pendingAt(this.currentTime);
44
- }
45
- get duration() {
46
- return this.audioInstance.duration * 1e3;
47
- }
48
- async load(A) {
49
- return this.disposed ? !1 : (await this.pause(), this.vreoUnit = A, this.timeline.load(A.keyframes), A.video.url === this.audioInstance.src ? !0 : new Promise((i, n) => {
50
- const s = () => {
51
- this.audioInstance.removeEventListener("canplaythrough", a), this.audioInstance.removeEventListener("error", o);
52
- }, a = () => {
53
- s(), i(!0);
54
- }, o = (r) => {
55
- s(), n(r);
56
- };
57
- this.audioInstance.addEventListener("canplaythrough", a), this.audioInstance.addEventListener("error", o), this.audioInstance.src = A.video.url;
58
- }));
59
- }
60
- async play() {
61
- return this.disposed ? !1 : (this.playPromise = this.audioInstance.play(), await this.playPromise, !0);
62
- }
63
- async pause() {
64
- try {
65
- await this.playPromise;
66
- } finally {
67
- this.playPromise = void 0, this.audioInstance.pause();
68
- }
69
- }
70
- dispose() {
71
- this.disposed || (this.disposed = !0, this.stopInterval(), this.audioInstance.removeEventListener("play", this.onPlaying), this.audioInstance.removeEventListener("pause", this.onPaused), this.audioInstance.removeEventListener("ended", this.onEnded), this.audioInstance.pause(), this.ownsAudio && this.audioInstance.remove(), this.timeline.clear());
72
- }
73
- }
74
- export {
75
- v as PlayController
9
+ // resources/PlayController/index.ts
10
+ var a = class extends n {
11
+ vreoUnit;
12
+ config;
13
+ timeline = new t();
14
+ ownsAudio;
15
+ stopInterval;
16
+ playPromise;
17
+ disposed = !1;
18
+ onPlaying = () => this.emit("playing");
19
+ onPaused = () => this.emit("paused");
20
+ onEnded = () => this.emit("paused", !0);
21
+ get paused() {
22
+ return this.audioInstance.paused;
23
+ }
24
+ get audioInstance() {
25
+ return this.config.audio;
26
+ }
27
+ get currentTime() {
28
+ return this.audioInstance.currentTime * 1e3;
29
+ }
30
+ get currentKeyframes() {
31
+ return this.timeline.pendingAt(this.currentTime);
32
+ }
33
+ get duration() {
34
+ return this.audioInstance.duration * 1e3;
35
+ }
36
+ constructor(t = {}) {
37
+ super();
38
+ let n = t.audio ?? i();
39
+ this.ownsAudio = !t.audio, this.config = {
40
+ ...t,
41
+ audio: n
42
+ }, n.addEventListener("play", this.onPlaying), n.addEventListener("pause", this.onPaused), n.addEventListener("ended", this.onEnded), this.stopInterval = e(() => {
43
+ if (n.paused) return;
44
+ let e = this.currentTime;
45
+ for (let t of this.timeline.take(e)) this.emit(t.type, t, e);
46
+ });
47
+ }
48
+ async load(e) {
49
+ return !this.disposed && (await this.pause(), this.vreoUnit = e, this.timeline.load(e.keyframes), e.video.url === this.audioInstance.src || new Promise((t, n) => {
50
+ let r = () => {
51
+ this.audioInstance.removeEventListener("canplaythrough", i), this.audioInstance.removeEventListener("error", a);
52
+ }, i = () => {
53
+ r(), t(!0);
54
+ }, a = (e) => {
55
+ r(), n(e);
56
+ };
57
+ this.audioInstance.addEventListener("canplaythrough", i), this.audioInstance.addEventListener("error", a), this.audioInstance.src = e.video.url;
58
+ }));
59
+ }
60
+ async play() {
61
+ return !this.disposed && (this.playPromise = this.audioInstance.play(), await this.playPromise, !0);
62
+ }
63
+ async pause() {
64
+ try {
65
+ await this.playPromise;
66
+ } finally {
67
+ this.playPromise = void 0, this.audioInstance.pause();
68
+ }
69
+ }
70
+ dispose() {
71
+ this.disposed || (this.disposed = !0, this.stopInterval(), this.audioInstance.removeEventListener("play", this.onPlaying), this.audioInstance.removeEventListener("pause", this.onPaused), this.audioInstance.removeEventListener("ended", this.onEnded), this.audioInstance.pause(), this.ownsAudio && this.audioInstance.remove(), this.timeline.clear());
72
+ }
76
73
  };
77
- //# sourceMappingURL=index.js.map
74
+ export { a as PlayController };
75
+
76
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../resources/PlayController/createHTMLAudioElement.ts","../../resources/PlayController/index.ts"],"sourcesContent":["\nconst BLANK_AUDIO = ''\n+ 'data:audio/mpeg;base64,'\n+ '//uQxAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAADAAAGhgBVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr///////////'\n+ '////////////////////////////////8AAAA5TEFNRTMuOThyAc0AAAAAAAAAABSAJAiqQgAAg'\n+ 'AAABobxtI73AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'\n+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'\n+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'\n+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'\n+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//uQxAACFEII9ACZ/sJZwWEoEb8w/////N//////Jcxj'\n+ 'Hjf+7/v/H2PzCCFAiDtGeyBCIx7bJJ1mmEEMy6g8mm2c8nrGABB4h2Mkmn//4z/73u773R5qHHu'\n+ '/j/w7Kxkzh5lWRWdsifCkNAnY9Zc1HvDAhjhSHdFkHFzLmabt/AQxSg2wwzLhHIJOBnAWwVY4zr'\n+ 'hIYhhc2kvhYDfQ4hDi2Gmh5KyFn8EcGIrHAngNgIwVIEMf5bzbAiTRoAD///8z/KVhkkWEle6IX'\n+ '+d/z4fvH3BShK1e5kmjkCMoxVmXhd4ROlTKo3iipasvTilY21q19ta30/v/0/idPX1v8PNxJL6r'\n+ 'amnOVsdvMv2akO0iSYIzdJFirtzWXCZicS9vHqvSKyqm5XJBdqBwPxyfJdykhWTZ0G0ZyTZGpLK'\n+ 'xsNwwoRhsx3tZfhwmeOBVISm3impAC/IT/8hP/EKEM1KMdVdVKM2rHV4x7HVXZvbVVKN/qq8CiV'\n+ '9VL9jjH/6l6qf7MBCjZmOqsAibjcP+qqqv0oxqpa/NVW286hPo1nz2L/h8+jXt//uSxCmDU2IK/'\n+ 'ECN98KKtE5IYzNoCfbw+u9i5r8PoadUMFPKqWL4LK3T/LCraMSHGkW4bpLXR/E6LlHOVQxmslKV'\n+ 'J8IULktMN06N0FKCpHCoYsjC4F+Z0NVqdNFoGSTjSiyjzLdnZ2fNqTi2eHKONONKLMPMKLONKLM'\n+ 'PQRJGlFxZRoKcJFAYEeIFiRQkUWUeYfef//Ko04soswso40UJAgMw8wosososy0EalnZyjQUGBR'\n+ 'QGIFggOWUacWUeYmuadrZziQKKEgQsQLAhQkUJAgMQDghltLO1onp0cpkNInSFMqlYeSEJ5AHsq'\n+ 'FdOwy1DA2sRmRJKxdKRfLhfLw5BzUxBTUUzLjk4LjJVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVUxBTUUzLjk4LjJVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVf/7ksRRA8AAAaQAAAAgAAA0gAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=';\n\n\nexport function createHTMLAudioElement(): HTMLAudioElement {\n const audio = document.createElement('audio')\n audio.style.display = 'none'\n audio.controls = false\n document.body.appendChild(audio)\n audio.src = BLANK_AUDIO\n\n // 触发一次播放\n void audio.play().catch(() => { /* Browser autoplay policy; the real play remains user-driven. */ })\n\n return audio\n}\n","import { Subscribe } from '@realsee/five-webgpu'\nimport { requestAnimationFrameInterval } from '../shared-utils/animationFrame'\nimport { Timeline } from '../timeline'\nimport { VreoKeyframeEvent, VreoUnit } from '../typings/VreoUnit'\nimport { createHTMLAudioElement } from './createHTMLAudioElement'\n\nexport interface PlayControllerConfig {\n audio?: HTMLAudioElement\n}\n\nexport class PlayController extends Subscribe<VreoKeyframeEvent> {\n vreoUnit?: VreoUnit\n readonly config: PlayControllerConfig\n private readonly timeline = new Timeline<VreoUnit['keyframes'][number]>()\n private readonly ownsAudio: boolean\n private readonly stopInterval: () => void\n private playPromise?: Promise<void>\n private disposed = false\n\n private readonly onPlaying = () => this.emit('playing')\n private readonly onPaused = () => this.emit('paused')\n private readonly onEnded = () => this.emit('paused', true)\n\n get paused() { return this.audioInstance.paused }\n get audioInstance() { return this.config.audio! }\n get currentTime() { return this.audioInstance.currentTime * 1000 }\n get currentKeyframes() { return this.timeline.pendingAt(this.currentTime) }\n get duration() { return this.audioInstance.duration * 1000 }\n\n constructor(config: PlayControllerConfig = {}) {\n super()\n const audio = config.audio ?? createHTMLAudioElement()\n this.ownsAudio = !config.audio\n this.config = { ...config, audio }\n\n audio.addEventListener('play', this.onPlaying)\n audio.addEventListener('pause', this.onPaused)\n audio.addEventListener('ended', this.onEnded)\n\n this.stopInterval = requestAnimationFrameInterval(() => {\n if (audio.paused) return\n const currentTime = this.currentTime\n for (const keyframe of this.timeline.take(currentTime)) {\n this.emit(keyframe.type, keyframe, currentTime)\n }\n })\n }\n\n async load(vreoUnit: VreoUnit): Promise<boolean> {\n if (this.disposed) return false\n await this.pause()\n this.vreoUnit = vreoUnit\n this.timeline.load(vreoUnit.keyframes)\n if (vreoUnit.video.url === this.audioInstance.src) return true\n\n return new Promise((resolve, reject) => {\n const clean = () => {\n this.audioInstance.removeEventListener('canplaythrough', ready)\n this.audioInstance.removeEventListener('error', error)\n }\n const ready = () => { clean(); resolve(true) }\n const error = (event: Event) => { clean(); reject(event) }\n this.audioInstance.addEventListener('canplaythrough', ready)\n this.audioInstance.addEventListener('error', error)\n this.audioInstance.src = vreoUnit.video.url\n })\n }\n\n async play() {\n if (this.disposed) return false\n this.playPromise = this.audioInstance.play()\n await this.playPromise\n return true\n }\n\n async pause() {\n try {\n await this.playPromise\n } finally {\n this.playPromise = undefined\n this.audioInstance.pause()\n }\n }\n\n dispose() {\n if (this.disposed) return\n this.disposed = true\n this.stopInterval()\n this.audioInstance.removeEventListener('play', this.onPlaying)\n this.audioInstance.removeEventListener('pause', this.onPaused)\n this.audioInstance.removeEventListener('ended', this.onEnded)\n this.audioInstance.pause()\n if (this.ownsAudio) this.audioInstance.remove()\n this.timeline.clear()\n }\n}\n"],"names":["BLANK_AUDIO","createHTMLAudioElement","audio","PlayController","Subscribe","config","__publicField","Timeline","requestAnimationFrameInterval","currentTime","keyframe","vreoUnit","resolve","reject","clean","ready","error","event"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["requestAnimationFrameInterval","BLANK_AUDIO","createHTMLAudioElement","audio","PlayController","Subscribe","Timeline","config","currentTime","keyframe","vreoUnit","clean","ready","error","resolve","reject","event"],"sources":["../../resources/PlayController/createHTMLAudioElement.ts","../../resources/PlayController/index.ts"],"sourcesContent":["\nconst BLANK_AUDIO = ''\n+ 'data:audio/mpeg;base64,'\n+ '//uQxAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAADAAAGhgBVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr///////////'\n+ '////////////////////////////////8AAAA5TEFNRTMuOThyAc0AAAAAAAAAABSAJAiqQgAAg'\n+ 'AAABobxtI73AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'\n+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'\n+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'\n+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'\n+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//uQxAACFEII9ACZ/sJZwWEoEb8w/////N//////Jcxj'\n+ 'Hjf+7/v/H2PzCCFAiDtGeyBCIx7bJJ1mmEEMy6g8mm2c8nrGABB4h2Mkmn//4z/73u773R5qHHu'\n+ '/j/w7Kxkzh5lWRWdsifCkNAnY9Zc1HvDAhjhSHdFkHFzLmabt/AQxSg2wwzLhHIJOBnAWwVY4zr'\n+ 'hIYhhc2kvhYDfQ4hDi2Gmh5KyFn8EcGIrHAngNgIwVIEMf5bzbAiTRoAD///8z/KVhkkWEle6IX'\n+ '+d/z4fvH3BShK1e5kmjkCMoxVmXhd4ROlTKo3iipasvTilY21q19ta30/v/0/idPX1v8PNxJL6r'\n+ 'amnOVsdvMv2akO0iSYIzdJFirtzWXCZicS9vHqvSKyqm5XJBdqBwPxyfJdykhWTZ0G0ZyTZGpLK'\n+ 'xsNwwoRhsx3tZfhwmeOBVISm3impAC/IT/8hP/EKEM1KMdVdVKM2rHV4x7HVXZvbVVKN/qq8CiV'\n+ '9VL9jjH/6l6qf7MBCjZmOqsAibjcP+qqqv0oxqpa/NVW286hPo1nz2L/h8+jXt//uSxCmDU2IK/'\n+ 'ECN98KKtE5IYzNoCfbw+u9i5r8PoadUMFPKqWL4LK3T/LCraMSHGkW4bpLXR/E6LlHOVQxmslKV'\n+ 'J8IULktMN06N0FKCpHCoYsjC4F+Z0NVqdNFoGSTjSiyjzLdnZ2fNqTi2eHKONONKLMPMKLONKLM'\n+ 'PQRJGlFxZRoKcJFAYEeIFiRQkUWUeYfef//Ko04soswso40UJAgMw8wosososy0EalnZyjQUGBR'\n+ 'QGIFggOWUacWUeYmuadrZziQKKEgQsQLAhQkUJAgMQDghltLO1onp0cpkNInSFMqlYeSEJ5AHsq'\n+ 'FdOwy1DA2sRmRJKxdKRfLhfLw5BzUxBTUUzLjk4LjJVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVUxBTUUzLjk4LjJVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVf/7ksRRA8AAAaQAAAAgAAA0gAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=';\n\n\nexport function createHTMLAudioElement(): HTMLAudioElement {\n const audio = document.createElement('audio')\n audio.style.display = 'none'\n audio.controls = false\n document.body.appendChild(audio)\n audio.src = BLANK_AUDIO\n\n // 触发一次播放\n void audio.play().catch(() => { /* Browser autoplay policy; the real play remains user-driven. */ })\n\n return audio\n}\n","import { Subscribe } from '@realsee/five-webgpu'\nimport { requestAnimationFrameInterval } from '../shared-utils/animationFrame'\nimport { Timeline } from '../timeline'\nimport { VreoKeyframeEvent, VreoUnit } from '../typings/VreoUnit'\nimport { createHTMLAudioElement } from './createHTMLAudioElement'\n\nexport interface PlayControllerConfig {\n audio?: HTMLAudioElement\n}\n\nexport class PlayController extends Subscribe<VreoKeyframeEvent> {\n vreoUnit?: VreoUnit\n readonly config: PlayControllerConfig\n private readonly timeline = new Timeline<VreoUnit['keyframes'][number]>()\n private readonly ownsAudio: boolean\n private readonly stopInterval: () => void\n private playPromise?: Promise<void>\n private disposed = false\n\n private readonly onPlaying = () => this.emit('playing')\n private readonly onPaused = () => this.emit('paused')\n private readonly onEnded = () => this.emit('paused', true)\n\n get paused() { return this.audioInstance.paused }\n get audioInstance() { return this.config.audio! }\n get currentTime() { return this.audioInstance.currentTime * 1000 }\n get currentKeyframes() { return this.timeline.pendingAt(this.currentTime) }\n get duration() { return this.audioInstance.duration * 1000 }\n\n constructor(config: PlayControllerConfig = {}) {\n super()\n const audio = config.audio ?? createHTMLAudioElement()\n this.ownsAudio = !config.audio\n this.config = { ...config, audio }\n\n audio.addEventListener('play', this.onPlaying)\n audio.addEventListener('pause', this.onPaused)\n audio.addEventListener('ended', this.onEnded)\n\n this.stopInterval = requestAnimationFrameInterval(() => {\n if (audio.paused) return\n const currentTime = this.currentTime\n for (const keyframe of this.timeline.take(currentTime)) {\n this.emit(keyframe.type, keyframe, currentTime)\n }\n })\n }\n\n async load(vreoUnit: VreoUnit): Promise<boolean> {\n if (this.disposed) return false\n await this.pause()\n this.vreoUnit = vreoUnit\n this.timeline.load(vreoUnit.keyframes)\n if (vreoUnit.video.url === this.audioInstance.src) return true\n\n return new Promise((resolve, reject) => {\n const clean = () => {\n this.audioInstance.removeEventListener('canplaythrough', ready)\n this.audioInstance.removeEventListener('error', error)\n }\n const ready = () => { clean(); resolve(true) }\n const error = (event: Event) => { clean(); reject(event) }\n this.audioInstance.addEventListener('canplaythrough', ready)\n this.audioInstance.addEventListener('error', error)\n this.audioInstance.src = vreoUnit.video.url\n })\n }\n\n async play() {\n if (this.disposed) return false\n this.playPromise = this.audioInstance.play()\n await this.playPromise\n return true\n }\n\n async pause() {\n try {\n await this.playPromise\n } finally {\n this.playPromise = undefined\n this.audioInstance.pause()\n }\n }\n\n dispose() {\n if (this.disposed) return\n this.disposed = true\n this.stopInterval()\n this.audioInstance.removeEventListener('play', this.onPlaying)\n this.audioInstance.removeEventListener('pause', this.onPaused)\n this.audioInstance.removeEventListener('ended', this.onEnded)\n this.audioInstance.pause()\n if (this.ownsAudio) this.audioInstance.remove()\n this.timeline.clear()\n }\n}\n"],"mappings":";;;AACA,IAAMC,IAAc;AAkCpB,SAAgBC,IAA2C;CACzD,IAAMC,IAAQ,SAAS,cAAc,OAAO;CAS5C,OARA,EAAM,MAAM,UAAU,QACtB,EAAM,WAAW,IACjB,SAAS,KAAK,YAAYA,CAAK,GAC/B,EAAM,MAAMF,GAGZE,EAAW,KAAK,CAAC,CAAC,YAAY,CAAoE,CAAC,GAE5FA;AACT;;ACpCA,IAAaC,IAAb,cAAoCC,EAA6B;CAC/D;CACA;CACA,WAA4B,IAAIC,EAAwC;CACxE;CACA;CACA;CACA,WAAmB;CAEnB,kBAAmC,KAAK,KAAK,SAAS;CACtD,iBAAkC,KAAK,KAAK,QAAQ;CACpD,gBAAiC,KAAK,KAAK,UAAU,EAAI;CAEzD,IAAI,SAAS;EAAE,OAAO,KAAK,cAAc;CAAO;CAChD,IAAI,gBAAgB;EAAE,OAAO,KAAK,OAAO;CAAO;CAChD,IAAI,cAAc;EAAE,OAAO,KAAK,cAAc,cAAc;CAAK;CACjE,IAAI,mBAAmB;EAAE,OAAO,KAAK,SAAS,UAAU,KAAK,WAAW;CAAE;CAC1E,IAAI,WAAW;EAAE,OAAO,KAAK,cAAc,WAAW;CAAK;CAE3D,YAAY,IAA+B,CAAC,GAAG;EAC7C,MAAM;EACN,IAAMH,IAAQI,EAAO,SAASL,EAAuB;EAQrD,AAPA,KAAK,YAAY,CAACK,EAAO,OACzB,KAAK,SAAS;GAAE,GAAGA;GAAQ;EAAM,GAEjCJ,EAAM,iBAAiB,QAAQ,KAAK,SAAS,GAC7CA,EAAM,iBAAiB,SAAS,KAAK,QAAQ,GAC7CA,EAAM,iBAAiB,SAAS,KAAK,OAAO,GAE5C,KAAK,eAAeH,QAAoC;GACtD,IAAIG,EAAM,QAAQ;GAClB,IAAMK,IAAc,KAAK;GACzB,KAAK,IAAMC,KAAY,KAAK,SAAS,KAAKD,CAAW,GACnD,KAAK,KAAKC,EAAS,MAAMA,GAAUD,CAAW;EAElD,CAAC;CACH;CAEA,MAAM,KAAK,GAAsC;EAO/C,OANA,CAAI,KAAK,aACT,MAAM,KAAK,MAAM,GACjB,KAAK,WAAWE,GAChB,KAAK,SAAS,KAAKA,EAAS,SAAS,GACjCA,EAAS,MAAM,QAAQ,KAAK,cAAc,OAEvC,IAAI,SAAS,GAAS,MAAW;GACtC,IAAMC,UAAc;IAElB,AADA,KAAK,cAAc,oBAAoB,kBAAkBC,CAAK,GAC9D,KAAK,cAAc,oBAAoB,SAASC,CAAK;GACvD,GACMD,UAAc;IAAW,AAATD,EAAM,GAAGG,EAAQ,EAAI;GAAE,GACvCD,KAAS,MAAiB;IAAW,AAATF,EAAM,GAAGI,EAAOC,CAAK;GAAE;GAGzD,AAFA,KAAK,cAAc,iBAAiB,kBAAkBJ,CAAK,GAC3D,KAAK,cAAc,iBAAiB,SAASC,CAAK,GAClD,KAAK,cAAc,MAAMH,EAAS,MAAM;EAC1C,CAAC;CACH;CAEA,MAAM,OAAO;EAIX,OAHA,CAAI,KAAK,aACT,KAAK,cAAc,KAAK,cAAc,KAAK,GAC3C,MAAM,KAAK,aACJ;CACT;CAEA,MAAM,QAAQ;EACZ,IAAI;GACF,MAAM,KAAK;EACb,UAAU;GAER,AADA,KAAK,cAAc,KAAA,GACnB,KAAK,cAAc,MAAM;EAC3B;CACF;CAEA,UAAU;EACR,AAAI,KAAK,aACT,KAAK,WAAW,IAChB,KAAK,aAAa,GAClB,KAAK,cAAc,oBAAoB,QAAQ,KAAK,SAAS,GAC7D,KAAK,cAAc,oBAAoB,SAAS,KAAK,QAAQ,GAC7D,KAAK,cAAc,oBAAoB,SAAS,KAAK,OAAO,GAC5D,KAAK,cAAc,MAAM,GACrB,KAAK,aAAW,KAAK,cAAc,OAAO,GAC9C,KAAK,SAAS,MAAM;CACtB;AACF"}
@@ -1,2 +1,3 @@
1
- export declare function App(): import("react/jsx-runtime").JSX.Element;
1
+ import * as React from 'react';
2
+ export declare function App(): React.JSX.Element;
2
3
  //# sourceMappingURL=App.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../resources/Player/App.tsx"],"names":[],"mappings":"AAkDA,wBAAgB,GAAG,4CAmBlB"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../resources/Player/App.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAkD9B,wBAAgB,GAAG,sBAmBlB"}
@@ -1,3 +1,4 @@
1
+ import * as React from 'react';
1
2
  import { CustomVreoKeyframeProps } from '../../typings';
2
3
  export interface SpatialScenePanelData {
3
4
  customType: 'SpatialScenePanel';
@@ -18,5 +19,5 @@ export interface SpatialScenePanelData {
18
19
  * 空间场景面板
19
20
  * @returns
20
21
  */
21
- export declare function SpatialScenePanel(props: CustomVreoKeyframeProps): import("react/jsx-runtime").JSX.Element;
22
+ export declare function SpatialScenePanel(props: CustomVreoKeyframeProps): React.JSX.Element;
22
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../resources/Player/custom/SpatialScenePanel/index.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AA2BvD,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,mBAAmB,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;KACb,EAAE,CAAA;IACH,QAAQ,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9C,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAC9C;AAsDD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,uBAAuB,2CAkF/D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../resources/Player/custom/SpatialScenePanel/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AA2BvD,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,mBAAmB,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;KACb,EAAE,CAAA;IACH,QAAQ,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9C,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAC9C;AAsDD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,uBAAuB,qBAkF/D"}
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../resources/Player/hooks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAGtC,wBAAgB,aAAa,sCAO5B;AAED,wBAAgB,eAAe,wCAO9B;AAED,wBAAgB,gBAAgB,aAEd,OAAO,oCACxB"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../resources/Player/hooks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAGtC,wBAAgB,aAAa,sCAO5B;AAED,wBAAgB,eAAe,wCAO9B;AAED,wBAAgB,gBAAgB,KAEtB,QAAQ,OAAO,oCACxB"}