@realsee/vreo 0.2.0-alpha.1 → 0.2.0-alpha.12

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 (97) hide show
  1. package/README.md +104 -17
  2. package/docs/assets/custom.css +4 -4
  3. package/docs/assets/search.js +1 -1
  4. package/docs/classes/Player.Controller.html +54 -0
  5. package/docs/classes/Player.Player-1.html +9 -9
  6. package/docs/classes/Player.VideoAgentMesh.html +142 -0
  7. package/docs/classes/Player.VideoAgentScene.html +1 -0
  8. package/docs/enums/Player.InfoPanelStyleEnum.html +1 -0
  9. package/docs/enums/Player.InfoPanelTypeEnum.html +1 -1
  10. package/docs/enums/Player.PanoEffectEnum.html +2 -2
  11. package/docs/enums/Player.PanoTagEnum.html +1 -1
  12. package/docs/enums/Player.PanoTagStyleEnum.html +7 -0
  13. package/docs/enums/Player.VreoKeyframeEnum.html +13 -13
  14. package/docs/enums/fivePlugins.CameraMovementEffect.html +1 -1
  15. package/docs/enums/fivePlugins.Rotation.html +1 -1
  16. package/docs/index.html +53 -20
  17. package/docs/interfaces/Player.CustomVreoKeyframeProps.html +1 -0
  18. package/docs/interfaces/Player.PlayerConfigs.html +3 -3
  19. package/docs/interfaces/Player.Vertex.html +1 -1
  20. package/docs/interfaces/Player.VideoAgentMeshOptions.html +1 -0
  21. package/docs/interfaces/Player.VreoKeyframe.html +1 -1
  22. package/docs/interfaces/Player.VreoUnit.html +1 -1
  23. package/docs/interfaces/Player.VreoVideo.html +1 -1
  24. package/docs/interfaces/fivePlugins.CameraMovementOptsCallback.html +1 -1
  25. package/docs/interfaces/fivePlugins.CameraMovementPluginExportType.html +3 -3
  26. package/docs/interfaces/fivePlugins.CameraMovementPluginParameterType.html +1 -1
  27. package/docs/interfaces/fivePlugins.ModelTVVideoPluginData.html +1 -1
  28. package/docs/interfaces/fivePlugins.ModelTVVideoPluginExportType.html +1 -1
  29. package/docs/interfaces/fivePlugins.ModelTVVideoPluginParameterType.html +1 -1
  30. package/docs/interfaces/react.VreoActionCallbacks.html +15 -7
  31. package/docs/interfaces/react.VreoProviderProps.html +1 -0
  32. package/docs/modules/Player.html +17 -15
  33. package/docs/modules/custom.html +3 -0
  34. package/docs/modules/fivePlugins.html +2 -2
  35. package/docs/modules/react.html +1 -1
  36. package/docs/modules.html +1 -1
  37. package/lib/PlayController/createHTMLAudioElement.d.ts +1 -0
  38. package/lib/PlayController/createHTMLAudioElement.js +47 -0
  39. package/lib/PlayController/index.d.ts +38 -0
  40. package/lib/PlayController/index.js +300 -0
  41. package/lib/Player/App.js +4 -3
  42. package/lib/Player/Controller.d.ts +2 -0
  43. package/lib/Player/Controller.js +14 -0
  44. package/lib/Player/custom/SpatialScenePanel/index.d.ts +22 -0
  45. package/lib/Player/custom/SpatialScenePanel/index.js +279 -0
  46. package/lib/Player/index.d.ts +2 -2
  47. package/lib/Player/index.js +102 -12
  48. package/lib/Player/modules/PopUp/index.d.ts +2 -0
  49. package/lib/Player/modules/PopUp/index.js +43 -0
  50. package/lib/Player/modules/VideoAgent/VideoAgentMesh.d.ts +2 -1
  51. package/lib/Player/modules/VideoAgent/VideoAgentMesh.js +26 -20
  52. package/lib/Player/modules/VideoAgent/VideoAgentScene.d.ts +4 -1
  53. package/lib/Player/modules/VideoAgent/VideoAgentScene.js +2 -1
  54. package/lib/Player/modules/VideoAgent/index.d.ts +2 -0
  55. package/lib/Player/modules/VideoAgent/index.js +1 -1
  56. package/lib/Player/modules/keyframes/CameraMovement/index.js +41 -5
  57. package/lib/Player/modules/keyframes/InfoPanel/index.js +84 -36
  58. package/lib/Player/modules/keyframes/ModelVideo/index.js +45 -8
  59. package/lib/Player/modules/keyframes/PanoTag/index.js +19 -6
  60. package/lib/Player/modules/keyframes/PanoTextLabel/index.js +4 -12
  61. package/lib/Player/modules/keyframes/Prompter/index.js +4 -18
  62. package/lib/Player/modules/keyframes/UpdateVRPanorama/index.js +30 -18
  63. package/lib/Player/typings.d.ts +15 -2
  64. package/lib/fivePlugins/CameraMovementPlugin/index.js +104 -90
  65. package/lib/fivePlugins/CameraMovementPlugin/typings.d.ts +1 -0
  66. package/lib/react/index.d.ts +12 -4
  67. package/lib/react/index.js +3 -3
  68. package/lib/shared-utils/createTransMatrix.d.ts +1 -0
  69. package/lib/shared-utils/createTransMatrix.js +43 -0
  70. package/lib/typings/VreoUnit.d.ts +32 -6
  71. package/lib/typings/VreoUnit.js +26 -6
  72. package/package.json +6 -6
  73. package/resources/PlayController/createHTMLAudioElement.ts +53 -0
  74. package/resources/PlayController/index.ts +167 -0
  75. package/resources/Player/App.tsx +3 -1
  76. package/resources/Player/Controller.ts +12 -0
  77. package/resources/Player/custom/SpatialScenePanel/index.tsx +264 -0
  78. package/resources/Player/index.tsx +59 -4
  79. package/resources/Player/modules/PopUp/index.tsx +26 -0
  80. package/resources/Player/modules/VideoAgent/VideoAgentMesh.ts +7 -6
  81. package/resources/Player/modules/VideoAgent/VideoAgentScene.ts +2 -2
  82. package/resources/Player/modules/VideoAgent/index.tsx +3 -2
  83. package/resources/Player/modules/keyframes/CameraMovement/index.tsx +7 -3
  84. package/resources/Player/modules/keyframes/InfoPanel/index.tsx +90 -23
  85. package/resources/Player/modules/keyframes/ModelVideo/index.tsx +36 -3
  86. package/resources/Player/modules/keyframes/PanoTag/index.tsx +31 -12
  87. package/resources/Player/modules/keyframes/PanoTextLabel/index.tsx +2 -2
  88. package/resources/Player/modules/keyframes/Prompter/index.tsx +5 -15
  89. package/resources/Player/modules/keyframes/UpdateVRPanorama/index.tsx +25 -16
  90. package/resources/Player/typings.ts +17 -2
  91. package/resources/fivePlugins/CameraMovementPlugin/index.ts +59 -48
  92. package/resources/fivePlugins/CameraMovementPlugin/typings.ts +2 -1
  93. package/resources/react/index.tsx +14 -5
  94. package/resources/shared-utils/createTransMatrix.ts +12 -0
  95. package/resources/typings/VreoUnit.ts +42 -7
  96. package/stylesheets/custom/SpatialScenePanel.css +309 -0
  97. package/stylesheets/default.css +116 -10
@@ -17,10 +17,14 @@ var _App = require("./App");
17
17
 
18
18
  var _Controller = require("./Controller");
19
19
 
20
+ var _VreoUnit = require("../typings/VreoUnit");
21
+
20
22
  var _mobx = require("mobx");
21
23
 
22
24
  var _Drawer = require("./modules/Drawer");
23
25
 
26
+ var _PopUp = require("./modules/PopUp");
27
+
24
28
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
29
 
26
30
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -79,7 +83,23 @@ var Player = /*#__PURE__*/function (_Subscribe) {
79
83
  _this.controller.configs = _this.configs;
80
84
  ReactDOM.render( /*#__PURE__*/React.createElement(_Controller.ControllerContext.Provider, {
81
85
  value: _this.controller
82
- }, /*#__PURE__*/React.createElement(_App.App, null), /*#__PURE__*/React.createElement(_Drawer.Drawer, null)), configs.containter); // 监听播放情况:抛出触发时机
86
+ }, /*#__PURE__*/React.createElement(_App.App, null), /*#__PURE__*/React.createElement(_Drawer.Drawer, null), /*#__PURE__*/React.createElement(_PopUp.PopUp, null), _this.configs.customKeyframes && _this.configs.customKeyframes.map(function (CustomCmpt, key) {
87
+ return /*#__PURE__*/React.createElement(CustomCmpt, {
88
+ key: key,
89
+ subscribe: {
90
+ on: function on(name, callback) {
91
+ return _this.on(name, callback);
92
+ },
93
+ once: function once(name, callback) {
94
+ return _this.once(name, callback);
95
+ },
96
+ off: function off(name, callback) {
97
+ return _this.off(name, callback);
98
+ }
99
+ },
100
+ five: five
101
+ });
102
+ })), configs.containter); // 监听播放情况:抛出触发时机
83
103
 
84
104
  (0, _mobx.reaction)(function () {
85
105
  return _this.controller.playing;
@@ -94,9 +114,15 @@ var Player = /*#__PURE__*/function (_Subscribe) {
94
114
  value: function () {
95
115
  var _load = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(vreoUnit) {
96
116
  var _this$controller$vide,
117
+ _this$configs$imageOp,
97
118
  _this2 = this;
98
119
 
99
120
  var currentTime,
121
+ preload,
122
+ force,
123
+ panoIndexMap,
124
+ panoIndexs,
125
+ i,
100
126
  _this$controller$vide2,
101
127
  _this$controller$vide3,
102
128
  _args = arguments;
@@ -106,34 +132,92 @@ var Player = /*#__PURE__*/function (_Subscribe) {
106
132
  switch (_context.prev = _context.next) {
107
133
  case 0:
108
134
  currentTime = _args.length > 1 && _args[1] !== undefined ? _args[1] : 0;
135
+ preload = _args.length > 2 && _args[2] !== undefined ? _args[2] : false;
136
+ force = _args.length > 3 && _args[3] !== undefined ? _args[3] : false;
137
+
138
+ if (force) {
139
+ vreoUnit = JSON.parse(JSON.stringify(vreoUnit));
140
+ }
109
141
 
110
142
  if (this.controller.visible) {
111
- _context.next = 5;
143
+ _context.next = 8;
112
144
  break;
113
145
  }
114
146
 
115
147
  this.controller.setVisible(true); // 延迟 500ms 规避跟 DOM 动画冲突
116
148
 
117
- _context.next = 5;
149
+ _context.next = 8;
118
150
  return new Promise(function (resolve) {
119
151
  setTimeout(function () {
120
152
  return resolve(true);
121
153
  }, 500);
122
154
  });
123
155
 
124
- case 5:
156
+ case 8:
125
157
  if (this.controller.stopInterval) {
126
158
  this.controller.stopInterval();
127
159
  this.controller.stopInterval = undefined;
128
160
  }
129
161
 
130
162
  this.controller.vreoUnit = vreoUnit;
131
- (_this$controller$vide = this.controller.videoInstance) === null || _this$controller$vide === void 0 ? void 0 : _this$controller$vide.pause(); // 新数据载入就绪
163
+ (_this$controller$vide = this.controller.videoInstance) === null || _this$controller$vide === void 0 ? void 0 : _this$controller$vide.pause(); // 预载逻辑
164
+ // 是否降低图片分辨率
165
+
166
+ if (this.$five.imageOptions.size && (_this$configs$imageOp = this.configs.imageOptions) !== null && _this$configs$imageOp !== void 0 && _this$configs$imageOp.size && this.$five.imageOptions.size > this.configs.imageOptions.size) {
167
+ this.$five.imageOptions.size = this.configs.imageOptions.size;
168
+ } // 预载数据中的点位
169
+
170
+
171
+ if (!(preload || preload === undefined && this.configs.autoPreload)) {
172
+ _context.next = 22;
173
+ break;
174
+ }
175
+
176
+ panoIndexMap = vreoUnit.keyframes.filter(function (vreoKeyframe) {
177
+ if (vreoKeyframe.type !== _VreoUnit.VreoKeyframeEnum.CameraMovement) {
178
+ return false;
179
+ }
180
+
181
+ var data = vreoKeyframe.data;
182
+
183
+ if (data.panoIndex === undefined) {
184
+ return false;
185
+ }
132
186
 
187
+ return true;
188
+ }).reduce(function (accu, curr) {
189
+ var panoIndex = curr.data.panoIndex;
190
+
191
+ if (!accu[panoIndex]) {
192
+ accu[panoIndex] = true;
193
+ }
194
+
195
+ return accu;
196
+ }, {});
197
+ panoIndexs = Object.keys(panoIndexMap);
198
+ i = 0;
199
+
200
+ case 16:
201
+ if (!(i < panoIndexs.length)) {
202
+ _context.next = 22;
203
+ break;
204
+ }
205
+
206
+ _context.next = 19;
207
+ return this.$five.preloadPano(Number(panoIndexs[i]));
208
+
209
+ case 19:
210
+ i++;
211
+ _context.next = 16;
212
+ break;
213
+
214
+ case 22:
215
+ // 新数据载入就绪
133
216
  this.emit('loaded', vreoUnit);
217
+ this.controller.emit('loaded', vreoUnit);
134
218
 
135
219
  if (!vreoUnit.video.url) {
136
- _context.next = 14;
220
+ _context.next = 29;
137
221
  break;
138
222
  }
139
223
 
@@ -141,19 +225,19 @@ var Player = /*#__PURE__*/function (_Subscribe) {
141
225
  this.controller.videoAgentScene.videoAgentMesh.videoInstance.currentTime = currentTime / 1000;
142
226
  }
143
227
 
144
- _context.next = 13;
145
- return (_this$controller$vide3 = this.controller.videoAgentScene) === null || _this$controller$vide3 === void 0 ? void 0 : _this$controller$vide3.videoAgentMesh.play(vreoUnit.video.url);
228
+ _context.next = 28;
229
+ return (_this$controller$vide3 = this.controller.videoAgentScene) === null || _this$controller$vide3 === void 0 ? void 0 : _this$controller$vide3.videoAgentMesh.play(vreoUnit.video.url, currentTime / 1000);
146
230
 
147
- case 13:
231
+ case 28:
148
232
  this.play();
149
233
 
150
- case 14:
234
+ case 29:
151
235
  this.controller.run(function (type, keyframe) {
152
236
  return _this2.emit(type, keyframe);
153
237
  });
154
238
  return _context.abrupt("return", true);
155
239
 
156
- case 16:
240
+ case 31:
157
241
  case "end":
158
242
  return _context.stop();
159
243
  }
@@ -174,8 +258,14 @@ var Player = /*#__PURE__*/function (_Subscribe) {
174
258
  }
175
259
  }, {
176
260
  key: "play",
177
- value: function play() {
261
+ value: function play(currentTime) {
178
262
  if (this.controller.playing) return true;
263
+
264
+ if (currentTime && this.controller.videoInstance) {
265
+ // Object.assign(window, {$vreoController: this.controller})
266
+ this.controller.videoInstance.currentTime = currentTime / 1000;
267
+ }
268
+
179
269
  this.controller.setPlaying(true);
180
270
  return true;
181
271
  }
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare function PopUp(): JSX.Element;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.PopUp = PopUp;
9
+
10
+ var React = _interopRequireWildcard(require("react"));
11
+
12
+ var _classnames = _interopRequireDefault(require("classnames"));
13
+
14
+ var _mobxReact = require("mobx-react");
15
+
16
+ var _hooks = require("../../hooks");
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
19
+
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
+
22
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
+
24
+ var PopUpView = (0, _mobxReact.observer)(function (_ref) {
25
+ var controller = _ref.controller;
26
+ return /*#__PURE__*/React.createElement("div", {
27
+ className: (0, _classnames["default"])('vreo-PopUp', {
28
+ 'vreo-PopUp-visible': controller.popUp
29
+ }),
30
+ onClick: function onClick() {
31
+ return controller.openPopUp(false);
32
+ }
33
+ }, /*#__PURE__*/React.createElement("div", {
34
+ className: "vreo-PopUp-inner"
35
+ }, controller.popUp || ''));
36
+ });
37
+
38
+ function PopUp() {
39
+ var controller = (0, _hooks.useController)();
40
+ return /*#__PURE__*/React.createElement(PopUpView, {
41
+ controller: controller
42
+ });
43
+ }
@@ -1,6 +1,7 @@
1
1
  import * as THREE from 'three';
2
2
  export interface VideoAgentMeshOptions {
3
3
  videoInstance?: HTMLVideoElement;
4
+ audioInstance?: HTMLAudioElement;
4
5
  }
5
6
  /**
6
7
  * 视频经纪人MESH
@@ -23,7 +24,7 @@ export declare class VideoAgentMesh extends THREE.Mesh {
23
24
  */
24
25
  constructor(width: number, height: number, widthSegments: number, heightSegments: number, options?: VideoAgentMeshOptions);
25
26
  private update;
26
- play(videoUrl?: string): Promise<unknown>;
27
+ play(videoUrl?: string, currentTime?: number): Promise<unknown>;
27
28
  /**
28
29
  * 转成毫秒,保障精准度
29
30
  */
@@ -106,7 +106,8 @@ var VideoAgentMesh = /*#__PURE__*/function (_THREE$Mesh) {
106
106
  _this.options = options;
107
107
  _this.freeze = false;
108
108
  _this.paused = true;
109
- {
109
+
110
+ if (!options.audioInstance) {
110
111
  if (cacheInstance.audioInstance) {
111
112
  _this.audioInstance = cacheInstance.audioInstance;
112
113
  } else {
@@ -122,7 +123,10 @@ var VideoAgentMesh = /*#__PURE__*/function (_THREE$Mesh) {
122
123
  _this.audioInstance = audioInstance;
123
124
  cacheInstance.audioInstance = audioInstance;
124
125
  }
126
+ } else {
127
+ _this.audioInstance = options.audioInstance;
125
128
  }
129
+
126
130
  (0, _mobx.makeObservable)(_assertThisInitialized(_this), {
127
131
  paused: _mobx.observable
128
132
  });
@@ -241,64 +245,66 @@ var VideoAgentMesh = /*#__PURE__*/function (_THREE$Mesh) {
241
245
  var _this3 = this;
242
246
 
243
247
  var videoUrl,
248
+ currentTime,
244
249
  _args3 = arguments;
245
250
  return regeneratorRuntime.wrap(function _callee3$(_context3) {
246
251
  while (1) {
247
252
  switch (_context3.prev = _context3.next) {
248
253
  case 0:
249
254
  videoUrl = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : '';
255
+ currentTime = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : 0;
250
256
  videoUrl = videoUrl || '';
251
257
 
252
258
  if (videoUrl) {
253
- _context3.next = 10;
259
+ _context3.next = 11;
254
260
  break;
255
261
  }
256
262
 
257
263
  if (!this.videoUrl) {
258
- _context3.next = 8;
264
+ _context3.next = 9;
259
265
  break;
260
266
  }
261
267
 
262
- _context3.next = 6;
268
+ _context3.next = 7;
263
269
  return this.videoInstance.play();
264
270
 
265
- case 6:
266
- _context3.next = 9;
271
+ case 7:
272
+ _context3.next = 10;
267
273
  break;
268
274
 
269
- case 8:
275
+ case 9:
270
276
  console.warn('警告:视频资源未初始化。');
271
277
 
272
- case 9:
278
+ case 10:
273
279
  return _context3.abrupt("return", true);
274
280
 
275
- case 10:
281
+ case 11:
276
282
  if (!(videoUrl === this.videoUrl)) {
277
- _context3.next = 15;
283
+ _context3.next = 16;
278
284
  break;
279
285
  }
280
286
 
281
- this.videoInstance.currentTime = 0;
282
- _context3.next = 14;
287
+ this.videoInstance.currentTime = currentTime;
288
+ _context3.next = 15;
283
289
  return this.videoInstance.play();
284
290
 
285
- case 14:
291
+ case 15:
286
292
  return _context3.abrupt("return", true);
287
293
 
288
- case 15:
289
- _context3.next = 17;
294
+ case 16:
295
+ _context3.next = 18;
290
296
  return this.update(videoUrl);
291
297
 
292
- case 17:
298
+ case 18:
293
299
  this.videoInstance.pause();
294
- _context3.next = 20;
300
+ _context3.next = 21;
295
301
  return new Promise(function (resolve) {
296
302
  return setTimeout( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
297
303
  return regeneratorRuntime.wrap(function _callee2$(_context2) {
298
304
  while (1) {
299
305
  switch (_context2.prev = _context2.next) {
300
306
  case 0:
301
- _this3.videoInstance.currentTime = 0;
307
+ _this3.videoInstance.currentTime = currentTime;
302
308
  _context2.next = 3;
303
309
  return _this3.videoInstance.play();
304
310
 
@@ -314,10 +320,10 @@ var VideoAgentMesh = /*#__PURE__*/function (_THREE$Mesh) {
314
320
  })), 20);
315
321
  });
316
322
 
317
- case 20:
323
+ case 21:
318
324
  return _context3.abrupt("return", _context3.sent);
319
325
 
320
- case 21:
326
+ case 22:
321
327
  case "end":
322
328
  return _context3.stop();
323
329
  }
@@ -6,7 +6,10 @@ export declare class VideoAgentScene {
6
6
  camera: THREE.OrthographicCamera;
7
7
  renderer: THREE.WebGLRenderer;
8
8
  container: HTMLElement;
9
- constructor(container: HTMLElement, needRender?: boolean);
9
+ constructor(container: HTMLElement, needRender?: boolean, options?: {
10
+ videoInstance?: HTMLVideoElement;
11
+ audioInstance?: HTMLAudioElement;
12
+ });
10
13
  run: () => void;
11
14
  dispose: () => void;
12
15
  }
@@ -23,6 +23,7 @@ var VideoAgentScene = function VideoAgentScene(container) {
23
23
  var _this = this;
24
24
 
25
25
  var needRender = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
26
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
26
27
 
27
28
  _classCallCheck(this, VideoAgentScene);
28
29
 
@@ -74,7 +75,7 @@ var VideoAgentScene = function VideoAgentScene(container) {
74
75
 
75
76
  _domElement.setAttribute('style', "width: ".concat(state.width, "px;height: ").concat(state.height, "px;"));
76
77
 
77
- this.videoAgentMesh = new _VideoAgentMesh.VideoAgentMesh(480, 270, 1, 1);
78
+ this.videoAgentMesh = new _VideoAgentMesh.VideoAgentMesh(480, 270, 1, 1, options);
78
79
 
79
80
  if (needRender) {
80
81
  container.append(_domElement);
@@ -1,4 +1,6 @@
1
1
  /// <reference types="react" />
2
+ import { VideoAgentMeshOptions } from './VideoAgentMesh';
2
3
  export declare function VideoAgent(props: {
3
4
  onClick?: () => void;
5
+ options?: VideoAgentMeshOptions;
4
6
  }): JSX.Element;
@@ -28,7 +28,7 @@ function VideoAgent(props) {
28
28
  return;
29
29
  }
30
30
 
31
- var videoAgentScene = new _VideoAgentScene.VideoAgentScene(ref.current);
31
+ var videoAgentScene = new _VideoAgentScene.VideoAgentScene(ref.current, true, props.options || {});
32
32
  controller.videoAgentScene = videoAgentScene;
33
33
  return function () {
34
34
  var _controller$videoAgen;
@@ -45,13 +45,49 @@ function CameraMovement() {
45
45
  cameraMovementData = data;
46
46
  effect = cameraMovementData.effect;
47
47
 
48
- if (effect === _typings.CameraMovementEffect.Rotate) {
49
- ref.current.rotate(data, end - start);
50
- } else {
51
- ref.current.move(data, end - start);
48
+ if (!(effect === _typings.CameraMovementEffect.Rotate)) {
49
+ _context.next = 9;
50
+ break;
52
51
  }
53
52
 
54
- case 5:
53
+ _context.next = 7;
54
+ return ref.current.rotate(data, end - start);
55
+
56
+ case 7:
57
+ _context.next = 21;
58
+ break;
59
+
60
+ case 9:
61
+ if (!(effect === _typings.CameraMovementEffect.Move)) {
62
+ _context.next = 14;
63
+ break;
64
+ }
65
+
66
+ _context.next = 12;
67
+ return ref.current.move(data, end - start);
68
+
69
+ case 12:
70
+ _context.next = 21;
71
+ break;
72
+
73
+ case 14:
74
+ if (!(cameraMovementData.panoIndex !== undefined && cameraMovementData.panoIndex !== five.panoIndex)) {
75
+ _context.next = 19;
76
+ break;
77
+ }
78
+
79
+ _context.next = 17;
80
+ return ref.current.move(data, end - start);
81
+
82
+ case 17:
83
+ _context.next = 21;
84
+ break;
85
+
86
+ case 19:
87
+ _context.next = 21;
88
+ return ref.current.rotate(data, end - start);
89
+
90
+ case 21:
55
91
  case "end":
56
92
  return _context.stop();
57
93
  }
@@ -35,12 +35,14 @@ function InfoPanelVideo(_ref2) {
35
35
  children = _ref2.children;
36
36
  return /*#__PURE__*/React.createElement("div", {
37
37
  className: "vreo-infoPanel vreo-infoPanel--video"
38
- }, children, /*#__PURE__*/React.createElement("video", {
38
+ }, children, /*#__PURE__*/React.createElement("div", {
39
+ className: "vreo-infoPanelWrapper"
40
+ }, /*#__PURE__*/React.createElement("video", {
39
41
  playsInline: true,
40
42
  autoPlay: true,
41
43
  className: "vreo-infoPanelVideo",
42
44
  src: url
43
- }));
45
+ })));
44
46
  }
45
47
 
46
48
  var Title = function Title(props) {
@@ -72,45 +74,91 @@ function InfoPanel() {
72
74
  end = keyframe.end,
73
75
  data = keyframe.data;
74
76
  var infoPanelData = data;
75
-
76
- if (infoPanelData.type === _VreoUnit.InfoPanelTypeEnum.Image) {
77
- controller.openDrawer({
78
- content: /*#__PURE__*/React.createElement(InfoPanelImg, {
79
- url: infoPanelData.url
80
- }),
81
- height: '60vh'
82
- });
83
- } else if (infoPanelData.type === _VreoUnit.InfoPanelTypeEnum.Video) {
84
- controller.openDrawer({
85
- content: /*#__PURE__*/React.createElement(InfoPanelVideo, {
86
- url: infoPanelData.url
87
- }),
88
- height: '60vh'
89
- });
90
- }
77
+ var title = infoPanelData.title,
78
+ subTitle = infoPanelData.subTitle,
79
+ style = infoPanelData.style;
80
+
81
+ do {
82
+ if (style === _VreoUnit.InfoPanelStyleEnum.PopUp) {
83
+ if (infoPanelData.type === _VreoUnit.InfoPanelTypeEnum.Image) {
84
+ controller.openPopUp( /*#__PURE__*/React.createElement(InfoPanelImg, {
85
+ url: infoPanelData.url
86
+ }, /*#__PURE__*/React.createElement(Title, {
87
+ title: title,
88
+ subTitle: subTitle
89
+ })));
90
+ } else if (infoPanelData.type === _VreoUnit.InfoPanelTypeEnum.Video) {
91
+ controller.openPopUp( /*#__PURE__*/React.createElement(InfoPanelVideo, {
92
+ url: infoPanelData.url
93
+ }, /*#__PURE__*/React.createElement(Title, {
94
+ title: title,
95
+ subTitle: subTitle
96
+ })));
97
+ }
98
+
99
+ break;
100
+ }
101
+
102
+ if (infoPanelData.type === _VreoUnit.InfoPanelTypeEnum.Image) {
103
+ controller.openDrawer({
104
+ content: /*#__PURE__*/React.createElement(InfoPanelImg, {
105
+ url: infoPanelData.url
106
+ }, /*#__PURE__*/React.createElement(Title, {
107
+ title: title,
108
+ subTitle: subTitle
109
+ })),
110
+ height: '60vh'
111
+ });
112
+ } else if (infoPanelData.type === _VreoUnit.InfoPanelTypeEnum.Video) {
113
+ controller.openDrawer({
114
+ content: /*#__PURE__*/React.createElement(InfoPanelVideo, {
115
+ url: infoPanelData.url
116
+ }, /*#__PURE__*/React.createElement(Title, {
117
+ title: title,
118
+ subTitle: subTitle
119
+ })),
120
+ height: '60vh'
121
+ });
122
+ }
123
+ } while (false);
91
124
 
92
125
  timeoutRef.current = setTimeout(function () {
93
- return controller.openDrawer(false);
126
+ controller.openDrawer(false);
127
+ controller.openPopUp(false);
94
128
  }, end - start);
95
129
  };
96
130
 
97
- controller.on(_VreoUnit.VreoKeyframeEnum.InfoPanel, callback);
98
- Object.assign(window, {
99
- $setInfoPanel: function $setInfoPanel() {
100
- controller.openDrawer({
101
- content:
102
- /*#__PURE__*/
103
- // <InfoPanelImg url='//vrlab-public.ljcdn.com/release/seesay/tools/cat_music___f68fb9bbe1f7cd6d00a16456dd0b09ad.gif'>
104
- React.createElement(InfoPanelImg, {
105
- url: "http://vrlab-public.ljcdn.com/common/images/web/d94e1bd7-0311-4b20-9c41-a1294fe43554.png"
106
- }, /*#__PURE__*/React.createElement(Title, {
107
- title: "\u573A\u666F\u8054\u52A8\u6293\u62CD\u56FE\u7247",
108
- subTitle: "2022.02.17 14:00"
109
- })),
110
- height: '60vh'
111
- });
112
- }
113
- });
131
+ controller.on(_VreoUnit.VreoKeyframeEnum.InfoPanel, callback); // Object.assign(window, {
132
+ // $setInfoPanel: () => {
133
+ // controller.openPopUp(
134
+ // // <InfoPanelImg url='//vrlab-static.ljcdn.com/release/web/psq/a.8e868cb2.gif' />
135
+ // // <InfoPanelImg url='//vrlab-public.ljcdn.com/release/web/psq/b.f9a1ed52.png' />
136
+ // // <InfoPanelImg url='//vrlab-public.ljcdn.com/release/web/psq/c.4f88c112.png' />
137
+ // // <InfoPanelImg url='//vrlab-public.ljcdn.com/release/seesay/tools/cat_music___f68fb9bbe1f7cd6d00a16456dd0b09ad.gif' />
138
+ // <InfoPanelImg url="http://vrlab-public.ljcdn.com/common/images/web/d94e1bd7-0311-4b20-9c41-a1294fe43554.png">
139
+ // <Title title="场景联动抓拍图片" subTitle={'2022.02.17 14:00'} />
140
+ // </InfoPanelImg>
141
+ // // <InfoPanelVideo url="//vrlab-public.ljcdn.com/release/seesay/tools/2022011713142___b320f74a5e1b5ad4bb46b4dc69d73ecc.mp4">
142
+ // // <Title title="场景联动抓拍图片" subTitle={'2022.02.17 14:00'} />
143
+ // // </InfoPanelVideo>
144
+ // )
145
+ // },
146
+ // $setInfoPanel2: () => {
147
+ // controller.openPopUp(
148
+ // <InfoPanelImg url='//vrlab-static.ljcdn.com/release/web/psq/a.8e868cb2.gif' />
149
+ // // <InfoPanelImg url='//vrlab-public.ljcdn.com/release/web/psq/b.f9a1ed52.png' />
150
+ // // <InfoPanelImg url='//vrlab-public.ljcdn.com/release/web/psq/c.4f88c112.png' />
151
+ // // <InfoPanelImg url='//vrlab-public.ljcdn.com/release/seesay/tools/cat_music___f68fb9bbe1f7cd6d00a16456dd0b09ad.gif' />
152
+ // // <InfoPanelImg url="http://vrlab-public.ljcdn.com/common/images/web/d94e1bd7-0311-4b20-9c41-a1294fe43554.png">
153
+ // // <Title title="场景联动抓拍图片" subTitle={'2022.02.17 14:00'} />
154
+ // // </InfoPanelImg>
155
+ // // <InfoPanelVideo url="//vrlab-public.ljcdn.com/release/seesay/tools/2022011713142___b320f74a5e1b5ad4bb46b4dc69d73ecc.mp4">
156
+ // // <Title title="场景联动抓拍图片" subTitle={'2022.02.17 14:00'} />
157
+ // // </InfoPanelVideo>
158
+ // )
159
+ // },
160
+ // })
161
+
114
162
  return function () {
115
163
  controller.off(_VreoUnit.VreoKeyframeEnum.InfoPanel, callback);
116
164