@realsee/vreo 2.6.5 → 3.0.0-webgpu.10

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 (174) hide show
  1. package/LICENSE-UPDATE.txt +2 -2
  2. package/README.md +6 -6
  3. package/lib/PlayController/createHTMLAudioElement.d.ts +1 -0
  4. package/lib/PlayController/createHTMLAudioElement.d.ts.map +1 -0
  5. package/lib/PlayController/index.d.ts +14 -24
  6. package/lib/PlayController/index.d.ts.map +1 -0
  7. package/lib/PlayController/index.js +74 -220
  8. package/lib/PlayController/index.js.map +1 -0
  9. package/lib/Player/App.d.ts +2 -2
  10. package/lib/Player/App.d.ts.map +1 -0
  11. package/lib/Player/Controller.d.ts +11 -6
  12. package/lib/Player/Controller.d.ts.map +1 -0
  13. package/lib/Player/PlaybackLifecycle.d.ts +1 -0
  14. package/lib/Player/PlaybackLifecycle.d.ts.map +1 -0
  15. package/lib/Player/custom/SpatialScenePanel/index.d.ts +2 -2
  16. package/lib/Player/custom/SpatialScenePanel/index.d.ts.map +1 -0
  17. package/lib/Player/hooks.d.ts +3 -2
  18. package/lib/Player/hooks.d.ts.map +1 -0
  19. package/lib/Player/index.d.ts +3 -2
  20. package/lib/Player/index.d.ts.map +1 -0
  21. package/lib/Player/index.js +1770 -437
  22. package/lib/Player/index.js.map +1 -0
  23. package/lib/Player/modules/Drawer/index.d.ts +2 -2
  24. package/lib/Player/modules/Drawer/index.d.ts.map +1 -0
  25. package/lib/Player/modules/PopUp/index.d.ts +2 -2
  26. package/lib/Player/modules/PopUp/index.d.ts.map +1 -0
  27. package/lib/Player/modules/ResizeObserver/index.d.ts +2 -2
  28. package/lib/Player/modules/ResizeObserver/index.d.ts.map +1 -0
  29. package/lib/Player/modules/VideoAgent/VideoAgentMesh.d.ts +5 -2
  30. package/lib/Player/modules/VideoAgent/VideoAgentMesh.d.ts.map +1 -0
  31. package/lib/Player/modules/VideoAgent/VideoAgentScene.d.ts +8 -5
  32. package/lib/Player/modules/VideoAgent/VideoAgentScene.d.ts.map +1 -0
  33. package/lib/Player/modules/VideoAgent/index.d.ts +11 -2
  34. package/lib/Player/modules/VideoAgent/index.d.ts.map +1 -0
  35. package/lib/Player/modules/Wave/index.d.ts +2 -2
  36. package/lib/Player/modules/Wave/index.d.ts.map +1 -0
  37. package/lib/Player/modules/keyframes/BgMusic/index.d.ts +2 -2
  38. package/lib/Player/modules/keyframes/BgMusic/index.d.ts.map +1 -0
  39. package/lib/Player/modules/keyframes/CameraMovement/index.d.ts +2 -2
  40. package/lib/Player/modules/keyframes/CameraMovement/index.d.ts.map +1 -0
  41. package/lib/Player/modules/keyframes/InfoPanel/index.d.ts +2 -2
  42. package/lib/Player/modules/keyframes/InfoPanel/index.d.ts.map +1 -0
  43. package/lib/Player/modules/keyframes/ModelVideo/index.d.ts +2 -2
  44. package/lib/Player/modules/keyframes/ModelVideo/index.d.ts.map +1 -0
  45. package/lib/Player/modules/keyframes/PanoEffect/index.d.ts +2 -2
  46. package/lib/Player/modules/keyframes/PanoEffect/index.d.ts.map +1 -0
  47. package/lib/Player/modules/keyframes/PanoEffect/lineAnime.d.ts +3 -2
  48. package/lib/Player/modules/keyframes/PanoEffect/lineAnime.d.ts.map +1 -0
  49. package/lib/Player/modules/keyframes/PanoTag/index.d.ts +1 -0
  50. package/lib/Player/modules/keyframes/PanoTag/index.d.ts.map +1 -0
  51. package/lib/Player/modules/keyframes/PanoTextLabel/index.d.ts +2 -2
  52. package/lib/Player/modules/keyframes/PanoTextLabel/index.d.ts.map +1 -0
  53. package/lib/Player/modules/keyframes/Prompter/index.d.ts +2 -2
  54. package/lib/Player/modules/keyframes/Prompter/index.d.ts.map +1 -0
  55. package/lib/Player/modules/keyframes/UpdateVRPanorama/index.d.ts +2 -2
  56. package/lib/Player/modules/keyframes/UpdateVRPanorama/index.d.ts.map +1 -0
  57. package/lib/Player/modules/keyframes/VideoEffect/index.d.ts +2 -2
  58. package/lib/Player/modules/keyframes/VideoEffect/index.d.ts.map +1 -0
  59. package/lib/Player/playback-types.d.ts +1 -0
  60. package/lib/Player/playback-types.d.ts.map +1 -0
  61. package/lib/Player/typings.d.ts +2 -1
  62. package/lib/Player/typings.d.ts.map +1 -0
  63. package/lib/chunks/index-BgPSzRSs.js +93 -0
  64. package/lib/chunks/index-BgPSzRSs.js.map +1 -0
  65. package/lib/chunks/index-CunyJn6H.js +51 -0
  66. package/lib/chunks/index-CunyJn6H.js.map +1 -0
  67. package/lib/fivePlugins/CSS3DRenderPlugin/centerPoint.d.ts +2 -1
  68. package/lib/fivePlugins/CSS3DRenderPlugin/centerPoint.d.ts.map +1 -0
  69. package/lib/fivePlugins/CSS3DRenderPlugin/createResizeObserver.d.ts +5 -6
  70. package/lib/fivePlugins/CSS3DRenderPlugin/createResizeObserver.d.ts.map +1 -0
  71. package/lib/fivePlugins/CSS3DRenderPlugin/evenNumber.d.ts +1 -0
  72. package/lib/fivePlugins/CSS3DRenderPlugin/evenNumber.d.ts.map +1 -0
  73. package/lib/fivePlugins/CSS3DRenderPlugin/index.d.ts +5 -22
  74. package/lib/fivePlugins/CSS3DRenderPlugin/index.d.ts.map +1 -0
  75. package/lib/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.d.ts +2 -1
  76. package/lib/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.d.ts.map +1 -0
  77. package/lib/fivePlugins/CameraMovementPlugin/index.d.ts +2 -1
  78. package/lib/fivePlugins/CameraMovementPlugin/index.d.ts.map +1 -0
  79. package/lib/fivePlugins/CameraMovementPlugin/typings.d.ts +2 -1
  80. package/lib/fivePlugins/CameraMovementPlugin/typings.d.ts.map +1 -0
  81. package/lib/fivePlugins/ModelTVVideoPlugin/index.d.ts +2 -1
  82. package/lib/fivePlugins/ModelTVVideoPlugin/index.d.ts.map +1 -0
  83. package/lib/index.d.ts +3 -0
  84. package/lib/index.d.ts.map +1 -0
  85. package/lib/index.js +12 -1
  86. package/lib/index.js.map +1 -0
  87. package/lib/plugins/CSS3DRenderPlugin.js +115 -0
  88. package/lib/plugins/CSS3DRenderPlugin.js.map +1 -0
  89. package/lib/plugins/CameraMovementPlugin.js +6 -0
  90. package/lib/plugins/CameraMovementPlugin.js.map +1 -0
  91. package/lib/plugins/ModelTVVideoPlugin.js +162 -0
  92. package/lib/plugins/ModelTVVideoPlugin.js.map +1 -0
  93. package/lib/react/index.d.ts +5 -4
  94. package/lib/react/index.d.ts.map +1 -0
  95. package/lib/react/index.js +39 -226
  96. package/lib/react/index.js.map +1 -0
  97. package/lib/shared-utils/Audio.d.ts +3 -1
  98. package/lib/shared-utils/Audio.d.ts.map +1 -0
  99. package/lib/shared-utils/AudioLike.d.ts +2 -1
  100. package/lib/shared-utils/AudioLike.d.ts.map +1 -0
  101. package/lib/shared-utils/Preloader.d.ts +1 -0
  102. package/lib/shared-utils/Preloader.d.ts.map +1 -0
  103. package/lib/shared-utils/addResizeListener.d.ts +2 -1
  104. package/lib/shared-utils/addResizeListener.d.ts.map +1 -0
  105. package/lib/shared-utils/animationFrame/BetterTween.d.ts +1 -0
  106. package/lib/shared-utils/animationFrame/BetterTween.d.ts.map +1 -0
  107. package/lib/shared-utils/animationFrame/index.d.ts +5 -14
  108. package/lib/shared-utils/animationFrame/index.d.ts.map +1 -0
  109. package/lib/shared-utils/animationFrame/tween.d.ts +1 -0
  110. package/lib/shared-utils/animationFrame/tween.d.ts.map +1 -0
  111. package/lib/shared-utils/createTransMatrix.d.ts +3 -1
  112. package/lib/shared-utils/createTransMatrix.d.ts.map +1 -0
  113. package/lib/shared-utils/getFileExpandedName.d.ts +1 -0
  114. package/lib/shared-utils/getFileExpandedName.d.ts.map +1 -0
  115. package/lib/shared-utils/getMediaInfo.d.ts +1 -0
  116. package/lib/shared-utils/getMediaInfo.d.ts.map +1 -0
  117. package/lib/shared-utils/setElementDataset.d.ts +1 -0
  118. package/lib/shared-utils/setElementDataset.d.ts.map +1 -0
  119. package/lib/timeline/index.d.ts +18 -0
  120. package/lib/timeline/index.d.ts.map +1 -0
  121. package/lib/types/index.js +10 -0
  122. package/lib/types/index.js.map +1 -0
  123. package/lib/typings/VreoUnit.d.ts +2 -1
  124. package/lib/typings/VreoUnit.d.ts.map +1 -0
  125. package/lib/typings/index.d.ts +1 -0
  126. package/lib/typings/index.d.ts.map +1 -0
  127. package/package.json +50 -70
  128. package/lib/PlayController/createHTMLAudioElement.js +0 -34
  129. package/lib/Player/App.js +0 -52
  130. package/lib/Player/Controller.js +0 -536
  131. package/lib/Player/PlaybackLifecycle.js +0 -118
  132. package/lib/Player/custom/SpatialScenePanel/index.js +0 -240
  133. package/lib/Player/hooks.js +0 -22
  134. package/lib/Player/modules/Drawer/index.js +0 -40
  135. package/lib/Player/modules/PopUp/index.js +0 -23
  136. package/lib/Player/modules/ResizeObserver/index.js +0 -22
  137. package/lib/Player/modules/VideoAgent/VideoAgentMesh.js +0 -456
  138. package/lib/Player/modules/VideoAgent/VideoAgentScene.js +0 -53
  139. package/lib/Player/modules/VideoAgent/index.js +0 -72
  140. package/lib/Player/modules/Wave/index.js +0 -171
  141. package/lib/Player/modules/keyframes/BgMusic/index.js +0 -65
  142. package/lib/Player/modules/keyframes/CameraMovement/index.js +0 -75
  143. package/lib/Player/modules/keyframes/InfoPanel/index.js +0 -170
  144. package/lib/Player/modules/keyframes/ModelVideo/index.js +0 -128
  145. package/lib/Player/modules/keyframes/PanoEffect/index.js +0 -99
  146. package/lib/Player/modules/keyframes/PanoEffect/lineAnime.js +0 -30
  147. package/lib/Player/modules/keyframes/PanoTag/index.js +0 -110
  148. package/lib/Player/modules/keyframes/PanoTextLabel/index.js +0 -122
  149. package/lib/Player/modules/keyframes/Prompter/index.js +0 -56
  150. package/lib/Player/modules/keyframes/UpdateVRPanorama/index.js +0 -98
  151. package/lib/Player/modules/keyframes/VideoEffect/index.js +0 -154
  152. package/lib/Player/playback-types.js +0 -1
  153. package/lib/Player/typings.js +0 -1
  154. package/lib/fivePlugins/CSS3DRenderPlugin/centerPoint.js +0 -4
  155. package/lib/fivePlugins/CSS3DRenderPlugin/createResizeObserver.js +0 -25
  156. package/lib/fivePlugins/CSS3DRenderPlugin/evenNumber.js +0 -4
  157. package/lib/fivePlugins/CSS3DRenderPlugin/index.js +0 -226
  158. package/lib/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.js +0 -8
  159. package/lib/fivePlugins/CameraMovementPlugin/index.js +0 -245
  160. package/lib/fivePlugins/CameraMovementPlugin/typings.js +0 -15
  161. package/lib/fivePlugins/ModelTVVideoPlugin/index.js +0 -349
  162. package/lib/shared-utils/Audio.js +0 -151
  163. package/lib/shared-utils/AudioLike.js +0 -123
  164. package/lib/shared-utils/Preloader.js +0 -37
  165. package/lib/shared-utils/addResizeListener.js +0 -39
  166. package/lib/shared-utils/animationFrame/BetterTween.js +0 -58
  167. package/lib/shared-utils/animationFrame/index.js +0 -52
  168. package/lib/shared-utils/animationFrame/tween.js +0 -58
  169. package/lib/shared-utils/createTransMatrix.js +0 -12
  170. package/lib/shared-utils/getFileExpandedName.js +0 -6
  171. package/lib/shared-utils/getMediaInfo.js +0 -55
  172. package/lib/shared-utils/setElementDataset.js +0 -16
  173. package/lib/typings/VreoUnit.js +0 -64
  174. package/lib/typings/index.js +0 -1
@@ -1,5 +1,5 @@
1
- License update for @realsee/vreo@2.6.5
1
+ License update for @realsee/vreo@3.0.0-webgpu.10
2
2
 
3
- This release updates the Realsee-authored package license to the Realsee SDK License Agreement, last updated 2026-09-22. The package implementation is unchanged from @realsee/vreo@2.6.4.
3
+ This release updates the Realsee-authored package license to the Realsee SDK License Agreement, last updated 2026-09-22. The package implementation is unchanged from @realsee/vreo@3.0.0-webgpu.9.
4
4
 
5
5
  Third-party components, notices and separately licensed materials retain their respective licenses. This update does not change the license of any previously published package version.
package/README.md CHANGED
@@ -31,12 +31,12 @@
31
31
 
32
32
  ```css
33
33
  /* @file xxx.css */
34
- @import '@realsee/vreo/stylesheets/default.css';
34
+ @import '@realsee/vreo/styles/default.css';
35
35
  ```
36
36
  或
37
37
  ```jsx
38
38
  /* @file xxx.tsx | xxx.jsx */
39
- import '@realsee/vreo/stylesheets/default.css';
39
+ import '@realsee/vreo/styles/default.css';
40
40
  ```
41
41
  examples:
42
42
  ```tsx
@@ -44,7 +44,7 @@ examples:
44
44
  import * as React from 'react'
45
45
  import { Five } from '@realsee/five'
46
46
  import { Player } from '@realsee/vreo'
47
- import '@realsee/vreo/stylesheets/default.css';
47
+ import '@realsee/vreo/styles/default.css';
48
48
 
49
49
  // 创建 Five 实例
50
50
  const five = new Five({
@@ -75,10 +75,10 @@ vreoPlayer.pause()
75
75
  /* @file App.tsx */
76
76
 
77
77
  import * as React from 'react'
78
- import * as ReactDOM from 'react-dom'
78
+ import { createRoot } from 'react-dom/client'
79
79
  import { Five, Work, parseWork } from '@realsee/five'
80
80
  import { createFiveProvider, FiveCanvas } from '@realsee/five/react'
81
- import { VreoProvider, useVreoAction } from '@realsee/vreo/lib/react'
81
+ import { VreoProvider, useVreoAction } from '@realsee/vreo/react'
82
82
 
83
83
  // 创建 FiveProvider
84
84
  const FiveProvider = createFiveProvider({
@@ -120,7 +120,7 @@ const App: React.FC = () => {
120
120
  )
121
121
  }
122
122
 
123
- ReactDOM.render(<App></App>, document.getElementById('app'))
123
+ createRoot(document.getElementById('app')!).render(<App />)
124
124
  ```
125
125
 
126
126
  ## 剧本数据结构
@@ -1 +1,2 @@
1
1
  export declare function createHTMLAudioElement(): HTMLAudioElement;
2
+ //# sourceMappingURL=createHTMLAudioElement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createHTMLAudioElement.d.ts","sourceRoot":"","sources":["../../resources/PlayController/createHTMLAudioElement.ts"],"names":[],"mappings":"AAmCA,wBAAgB,sBAAsB,IAAI,gBAAgB,CAWzD"}
@@ -1,38 +1,28 @@
1
- import { Subscribe } from '@realsee/five';
2
- import { VreoKeyframe, VreoKeyframeEvent, VreoUnit } from '../typings/VreoUnit';
1
+ import { Subscribe } from '@realsee/five-webgpu';
2
+ import { VreoKeyframeEvent, VreoUnit } from '../typings/VreoUnit';
3
3
  export interface PlayControllerConfig {
4
4
  audio?: HTMLAudioElement;
5
5
  }
6
6
  export declare class PlayController extends Subscribe<VreoKeyframeEvent> {
7
7
  vreoUnit?: VreoUnit;
8
- config: PlayControllerConfig;
9
- stopInterval: () => void;
8
+ readonly config: PlayControllerConfig;
9
+ private readonly timeline;
10
+ private readonly ownsAudio;
11
+ private readonly stopInterval;
12
+ private playPromise?;
13
+ private disposed;
14
+ private readonly onPlaying;
15
+ private readonly onPaused;
16
+ private readonly onEnded;
10
17
  get paused(): boolean;
11
18
  get audioInstance(): HTMLAudioElement;
12
19
  get currentTime(): number;
13
- get currentKeyframes(): VreoKeyframe[];
14
- /**
15
- * 音频时长 不一定能获取得到,建议以 VreoUnit 配置的时长为准。
16
- */
20
+ get currentKeyframes(): import("..").VreoKeyframe[];
17
21
  get duration(): number;
18
22
  constructor(config?: PlayControllerConfig);
19
- /**
20
- * 载入数据
21
- */
22
23
  load(vreoUnit: VreoUnit): Promise<boolean>;
23
- /**
24
- * 播放
25
- */
26
- play(): Promise<void>;
27
- /**
28
- * 暂停
29
- */
24
+ play(): Promise<boolean>;
30
25
  pause(): Promise<void>;
31
- /**
32
- * 销毁资源
33
- * @notice 一旦销毁,创建的实例将不可用:需重新创建实例。
34
- *
35
- * @deprecated **慎重执行**
36
- */
37
26
  dispose(): void;
38
27
  }
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../resources/PlayController/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAGhD,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAGjE,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,gBAAgB,CAAA;CACzB;AAED,qBAAa,cAAe,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC9D,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAA;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgD;IACzE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAY;IACzC,OAAO,CAAC,WAAW,CAAC,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAQ;IAExB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IACvD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAE1D,IAAI,MAAM,YAAuC;IACjD,IAAI,aAAa,qBAAgC;IACjD,IAAI,WAAW,WAAmD;IAClE,IAAI,gBAAgB,gCAAuD;IAC3E,IAAI,QAAQ,WAAgD;gBAEhD,MAAM,GAAE,oBAAyB;IAmBvC,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB1C,IAAI;IAOJ,KAAK;IASX,OAAO;CAWR"}
@@ -1,223 +1,77 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
2
- import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
- import _createClass from "@babel/runtime/helpers/esm/createClass";
4
- import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized";
5
- import _inherits from "@babel/runtime/helpers/esm/inherits";
6
- import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
7
- import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
8
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
9
- import _regeneratorRuntime from "@babel/runtime/regenerator";
10
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
11
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
12
- import { Subscribe } from '@realsee/five';
13
- import { requestAnimationFrameInterval } from "../shared-utils/animationFrame/index.js";
14
- import { createHTMLAudioElement } from "./createHTMLAudioElement.js";
15
- var closures = {};
16
- export var PlayController = /*#__PURE__*/function (_Subscribe) {
17
- _inherits(PlayController, _Subscribe);
18
- var _super = _createSuper(PlayController);
19
- function PlayController() {
20
- var _this;
21
- var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
22
- _classCallCheck(this, PlayController);
23
- _this = _super.call(this);
24
- _defineProperty(_assertThisInitialized(_this), "config", {});
25
- if (!config.audio) {
26
- config.audio = createHTMLAudioElement();
27
- }
28
- _this.config = Object.assign(_this.config, config);
29
- closures.onPlaying = function () {
30
- return _this.emit('playing');
31
- };
32
- closures.onPaused = function () {
33
- return _this.emit('paused');
34
- };
35
- closures.onEnded = function () {
36
- return _this.emit('paused', true);
37
- };
38
- _this.audioInstance.addEventListener('play', closures.onPlaying);
39
- _this.audioInstance.addEventListener('pause', closures.onPaused);
40
- _this.audioInstance.addEventListener('ended', closures.onEnded);
41
- _this.stopInterval = requestAnimationFrameInterval(function () {
42
- if (_this.audioInstance.paused) {
43
- return;
44
- }
45
- if (!_this.vreoUnit) {
46
- return;
47
- }
48
- var keyframes = _this.vreoUnit.keyframes;
49
- var currentTime = _this.currentTime;
50
- // 没有被解析过且开始时间低于当前时间戳 100ms
51
- var currentKeyframes = keyframes.filter(function (keyframe) {
52
- if (keyframe.parsed) return false;
53
- var dur = currentTime - keyframe.start;
54
- return dur <= 60 && dur >= 0;
55
- });
56
- currentKeyframes.forEach(function (keyframe) {
57
- if (keyframe.parsed) return;
58
- keyframe.parsed = true;
59
- _this.emit(keyframe.type, keyframe, _this.currentTime);
60
- });
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;
11
+ }
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);
61
31
  });
62
- return _this;
63
32
  }
64
-
65
- /**
66
- * 载入数据
67
- */
68
- _createClass(PlayController, [{
69
- key: "paused",
70
- get: function get() {
71
- return this.audioInstance.paused;
72
- }
73
- }, {
74
- key: "audioInstance",
75
- get: function get() {
76
- return this.config.audio;
77
- }
78
- }, {
79
- key: "currentTime",
80
- get: function get() {
81
- return this.audioInstance.currentTime * 1000;
82
- }
83
- }, {
84
- key: "currentKeyframes",
85
- get: function get() {
86
- var _this2 = this;
87
- if (!this.vreoUnit) return [];
88
- var keyframes = this.vreoUnit.keyframes;
89
- // 没有被解析过且开始时间低于当前时间戳 100ms
90
- return keyframes.filter(function (keyframe) {
91
- if (keyframe.parsed) return false;
92
- var dur = _this2.currentTime - keyframe.start;
93
- return dur <= 100 && dur >= 0;
94
- });
95
- }
96
-
97
- /**
98
- * 音频时长 不一定能获取得到,建议以 VreoUnit 配置的时长为准。
99
- */
100
- }, {
101
- key: "duration",
102
- get: function get() {
103
- return this.audioInstance.duration * 1000;
104
- }
105
- }, {
106
- key: "load",
107
- value: function () {
108
- var _load = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(vreoUnit) {
109
- var _this3 = this;
110
- return _regeneratorRuntime.wrap(function _callee$(_context) {
111
- while (1) {
112
- switch (_context.prev = _context.next) {
113
- case 0:
114
- this.vreoUnit = vreoUnit;
115
- _context.next = 3;
116
- return this.pause();
117
- case 3:
118
- _context.next = 5;
119
- return new Promise(function (resolve, reject) {
120
- if (vreoUnit.video.url === _this3.audioInstance.src) {
121
- return resolve(true);
122
- }
123
- _this3.audioInstance.src = vreoUnit.video.url;
124
- var canplaythrough = function canplaythrough() {
125
- resolve(true);
126
- _this3.audioInstance.removeEventListener('canplaythrough', canplaythrough);
127
- };
128
- var error = function error(err) {
129
- reject(err);
130
- _this3.audioInstance.removeEventListener('error', error);
131
- };
132
- _this3.audioInstance.addEventListener('canplaythrough', canplaythrough);
133
- _this3.audioInstance.addEventListener('error', error);
134
- });
135
- case 5:
136
- return _context.abrupt("return", _context.sent);
137
- case 6:
138
- case "end":
139
- return _context.stop();
140
- }
141
- }
142
- }, _callee, this);
143
- }));
144
- function load(_x) {
145
- return _load.apply(this, arguments);
146
- }
147
- return load;
148
- }()
149
- /**
150
- * 播放
151
- */
152
- }, {
153
- key: "play",
154
- value: function () {
155
- var _play = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
156
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
157
- while (1) {
158
- switch (_context2.prev = _context2.next) {
159
- case 0:
160
- closures.playPromise = this.audioInstance.play();
161
- case 1:
162
- case "end":
163
- return _context2.stop();
164
- }
165
- }
166
- }, _callee2, this);
167
- }));
168
- function play() {
169
- return _play.apply(this, arguments);
170
- }
171
- return play;
172
- }()
173
- /**
174
- * 暂停
175
- */
176
- }, {
177
- key: "pause",
178
- value: function () {
179
- var _pause = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
180
- return _regeneratorRuntime.wrap(function _callee3$(_context3) {
181
- while (1) {
182
- switch (_context3.prev = _context3.next) {
183
- case 0:
184
- if (!closures.playPromise) {
185
- _context3.next = 3;
186
- break;
187
- }
188
- _context3.next = 3;
189
- return closures.playPromise;
190
- case 3:
191
- this.audioInstance.pause();
192
- case 4:
193
- case "end":
194
- return _context3.stop();
195
- }
196
- }
197
- }, _callee3, this);
198
- }));
199
- function pause() {
200
- return _pause.apply(this, arguments);
201
- }
202
- return pause;
203
- }()
204
- /**
205
- * 销毁资源
206
- * @notice 一旦销毁,创建的实例将不可用:需重新创建实例。
207
- *
208
- * @deprecated **慎重执行**
209
- */
210
- }, {
211
- key: "dispose",
212
- value: function dispose() {
213
- // 清理事件监听
214
- this.audioInstance.removeEventListener('play', closures.onPlaying);
215
- this.audioInstance.removeEventListener('pasue', closures.onPaused);
216
- this.audioInstance.removeEventListener('ended', closures.onEnded);
217
- if (this.stopInterval) {
218
- this.stopInterval();
219
- }
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();
220
68
  }
221
- }]);
222
- return PlayController;
223
- }(Subscribe);
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
76
+ };
77
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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,2 +1,2 @@
1
- import * as React from 'react';
2
- export declare function App(): React.JSX.Element;
1
+ export declare function App(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=App.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../resources/Player/App.tsx"],"names":[],"mappings":"AAkDA,wBAAgB,GAAG,4CAmBlB"}
@@ -1,5 +1,5 @@
1
1
  import { PlaybackLifecycle } from './PlaybackLifecycle';
2
- import { Five, Subscribe } from '@realsee/five';
2
+ import { Five, Subscribe } from '@realsee/five-webgpu';
3
3
  import * as React from 'react';
4
4
  import { VreoKeyframe, VreoKeyframeEnum, VreoKeyframeEvent, VreoUnit, VreoVideo } from '../typings/VreoUnit';
5
5
  import { VideoAgentScene } from './modules/VideoAgent/VideoAgentScene';
@@ -57,19 +57,19 @@ export declare class Controller extends Subscribe<VreoKeyframeEvent> {
57
57
  * @returns 'video' | 'avatar' | 'none' - 媒体类型
58
58
  */
59
59
  get agentType(): "none" | "video" | "avatar";
60
- popUp: string | JSX.Element | null;
60
+ popUp: string | React.ReactElement | null;
61
61
  /**
62
62
  * 打开或关闭弹窗
63
63
  * @param popUp - 弹窗内容,可以是字符串、JSX元素或false(关闭弹窗)
64
64
  */
65
- openPopUp(popUp: string | JSX.Element | false): void;
65
+ openPopUp(popUp: string | React.ReactElement | false): void;
66
66
  /**
67
67
  * 设置加载状态
68
68
  * @param loading - 加载状态:true(加载中)、false(加载完成)、null(加载失败)
69
69
  */
70
70
  setLoading(loading: boolean | null): void;
71
71
  drawerConfig: {
72
- content: string | JSX.Element;
72
+ content: string | React.ReactElement;
73
73
  height?: number | string;
74
74
  } | null;
75
75
  /**
@@ -113,7 +113,7 @@ export declare class Controller extends Subscribe<VreoKeyframeEvent> {
113
113
  * @param drawerConfig - 抽屉配置对象,false表示关闭抽屉
114
114
  */
115
115
  openDrawer(drawerConfig?: false | {
116
- content: string | JSX.Element;
116
+ content: string | React.ReactElement;
117
117
  height?: number | string;
118
118
  }): void;
119
119
  /**
@@ -127,6 +127,7 @@ export declare class Controller extends Subscribe<VreoKeyframeEvent> {
127
127
  private resuming;
128
128
  private disposers;
129
129
  readonly playback: PlaybackLifecycle;
130
+ private readonly timeline;
130
131
  constructor({ five, container, configs }: {
131
132
  five: Five;
132
133
  container: Element;
@@ -146,12 +147,15 @@ export declare class Controller extends Subscribe<VreoKeyframeEvent> {
146
147
  * 获取当前时间点应该触发的关键帧
147
148
  * @returns 当前应该执行的关键帧数组
148
149
  */
150
+ loadTimeline(keyframes: readonly VreoKeyframe[]): void;
151
+ seekTimeline(currentTime: number): void;
152
+ resetTimeline(type?: VreoKeyframeEnum): void;
149
153
  get currentKeyframes(): VreoKeyframe[];
150
154
  /**
151
155
  * 获取当前媒体实例(音频或视频元素)
152
156
  * @returns HTML媒体元素实例
153
157
  */
154
- get mediaInstance(): HTMLVideoElement | HTMLAudioElement | import("../shared-utils/AudioLike").AudioLike | undefined;
158
+ get mediaInstance(): import("../shared-utils/AudioLike").AudioLike | HTMLVideoElement | HTMLAudioElement | undefined;
155
159
  /**
156
160
  * 逐帧任务循环处理
157
161
  *
@@ -182,3 +186,4 @@ export declare class Controller extends Subscribe<VreoKeyframeEvent> {
182
186
  }
183
187
  declare const ControllerContext: React.Context<Controller | null>;
184
188
  export { ControllerContext };
189
+ //# sourceMappingURL=Controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Controller.d.ts","sourceRoot":"","sources":["../../resources/Player/Controller.ts"],"names":[],"mappings":"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"}
@@ -23,3 +23,4 @@ export declare class PlaybackLifecycle {
23
23
  finish(): void;
24
24
  dispose(): void;
25
25
  }
26
+ //# sourceMappingURL=PlaybackLifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlaybackLifecycle.d.ts","sourceRoot":"","sources":["../../resources/Player/PlaybackLifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAsB,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAE7G,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,CAAA;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,eAAe,CAAA;IACvC,KAAK,IAAI,OAAO,CAAA;IAChB,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAAA;CACjD;AAED,0FAA0F;AAC1F,qBAAa,iBAAiB;IAMsB,OAAO,CAAC,MAAM;IALhE,OAAO,CAAC,UAAU,CAAC,CAAoB;IACvC,OAAO,CAAC,GAAG,CAAC,CAAa;IACzB,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,OAAO,CAAwB;gBAC3B,OAAO,EAAE,eAAe,GAAG,SAAS,EAAU,MAAM,EAAE,MAAM,IAAI;IAG5E,IAAI,MAAM,YAAiC;IAC3C,OAAO;IACP,KAAK,CAAC,UAAU,EAAE,OAAO;IAczB,GAAG,CAAC,IAAI,EAAE,MAAM,IAAI;IACpB,OAAO,CAAC,IAAI;IAQZ,MAAM;IAKN,MAAM;IACN,OAAO;CAQR"}
@@ -1,4 +1,3 @@
1
- import * as React from 'react';
2
1
  import { CustomVreoKeyframeProps } from '../../typings';
3
2
  export interface SpatialScenePanelData {
4
3
  customType: 'SpatialScenePanel';
@@ -19,4 +18,5 @@ export interface SpatialScenePanelData {
19
18
  * 空间场景面板
20
19
  * @returns
21
20
  */
22
- export declare function SpatialScenePanel(props: CustomVreoKeyframeProps): React.JSX.Element;
21
+ export declare function SpatialScenePanel(props: CustomVreoKeyframeProps): import("react/jsx-runtime").JSX.Element;
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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,4 +1,5 @@
1
- import { Vector3 } from 'three';
1
+ import { Vector3 } from 'three/webgpu';
2
2
  export declare function useController(): import("./Controller").Controller;
3
- export declare function useFiveInstance(): import("@realsee/five").Five;
3
+ export declare function useFiveInstance(): import("@realsee/five-webgpu").Five;
4
4
  export declare function useFiveProject2d(): (vector: Vector3) => import("three").Vector2 | null;
5
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +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,4 +1,4 @@
1
- import { Five, Subscribe } from '@realsee/five';
1
+ import { Five, Subscribe } from '@realsee/five-webgpu';
2
2
  import { VreoKeyframeEvent, VreoUnit } from '../typings/VreoUnit';
3
3
  import { Appearance, PlayerConfigs } from './typings';
4
4
  /**
@@ -9,7 +9,7 @@ import { Appearance, PlayerConfigs } from './typings';
9
9
  *
10
10
  * @example
11
11
  * ```typescript
12
- * import { Five } from '@realsee/five'
12
+ * import { Five } from '@realsee/five-webgpu'
13
13
  * import { Player } from '@realsee/vreo'
14
14
  *
15
15
  * const five = new Five({
@@ -125,3 +125,4 @@ export declare class Player extends Subscribe<VreoKeyframeEvent> {
125
125
  dispose(): void;
126
126
  }
127
127
  export { SpatialScenePanel } from './custom/SpatialScenePanel';
128
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../resources/Player/index.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAItD,OAAO,EAAwC,iBAAiB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAGvG,OAAO,EAAE,UAAU,EAAE,aAAa,EAAkB,MAAM,WAAW,CAAA;AAerE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,MAAO,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IACpD,kBAAkB;IAClB,KAAK,EAAE,IAAI,CAAA;IACX,YAAY;IACZ,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,cAAc,CAAI;IAC1B,OAAO,CAAC,QAAQ,CAAQ;IACxB,eAAe;IACf,gBAAgB;IAChB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;IAEhC;;;;;OAKG;gBACS,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,OAAO,CAAC,aAAa,CAAM;IA0E5D;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,SAAI,EAAE,OAAO,UAAQ,EAAE,KAAK,UAAQ,EAAE,UAAU,UAAQ;IA4GlG;;;OAGG;IACH,IAAI,MAAM,YAET;IAED;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,UAAQ;IAiB7C;;;;;;;;;;OAUG;IACH,aAAa,CAAC,UAAU,EAAE,UAAU;IAIpC;;OAEG;IACH,KAAK;IAML;;OAEG;IACH,IAAI;IAIJ;;OAEG;IACH,IAAI;IAIJ;;;OAGG;IACH,cAAc;IAId;;;;OAIG;IACH,OAAO;CAWV;AAGD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA"}