@realsee/vreo 0.2.0-alpha.1 → 0.2.0-alpha.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 (94) hide show
  1. package/README.md +103 -16
  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.VreoKeyframeEnum.html +13 -13
  13. package/docs/enums/fivePlugins.CameraMovementEffect.html +1 -1
  14. package/docs/enums/fivePlugins.Rotation.html +1 -1
  15. package/docs/index.html +52 -19
  16. package/docs/interfaces/Player.CustomVreoKeyframeProps.html +1 -0
  17. package/docs/interfaces/Player.PlayerConfigs.html +3 -3
  18. package/docs/interfaces/Player.Vertex.html +1 -1
  19. package/docs/interfaces/Player.VideoAgentMeshOptions.html +1 -0
  20. package/docs/interfaces/Player.VreoKeyframe.html +1 -1
  21. package/docs/interfaces/Player.VreoUnit.html +1 -1
  22. package/docs/interfaces/Player.VreoVideo.html +1 -1
  23. package/docs/interfaces/fivePlugins.CameraMovementOptsCallback.html +1 -1
  24. package/docs/interfaces/fivePlugins.CameraMovementPluginExportType.html +3 -3
  25. package/docs/interfaces/fivePlugins.CameraMovementPluginParameterType.html +1 -1
  26. package/docs/interfaces/fivePlugins.ModelTVVideoPluginData.html +1 -1
  27. package/docs/interfaces/fivePlugins.ModelTVVideoPluginExportType.html +1 -1
  28. package/docs/interfaces/fivePlugins.ModelTVVideoPluginParameterType.html +1 -1
  29. package/docs/interfaces/react.VreoActionCallbacks.html +15 -7
  30. package/docs/interfaces/react.VreoProviderProps.html +1 -0
  31. package/docs/modules/Player.html +17 -15
  32. package/docs/modules/custom.html +3 -0
  33. package/docs/modules/fivePlugins.html +2 -2
  34. package/docs/modules/react.html +1 -1
  35. package/docs/modules.html +1 -1
  36. package/lib/PlayController/createHTMLAudioElement.d.ts +1 -0
  37. package/lib/PlayController/createHTMLAudioElement.js +47 -0
  38. package/lib/PlayController/index.d.ts +38 -0
  39. package/lib/PlayController/index.js +300 -0
  40. package/lib/Player/App.js +4 -3
  41. package/lib/Player/Controller.d.ts +2 -0
  42. package/lib/Player/Controller.js +14 -0
  43. package/lib/Player/custom/SpatialScenePanel/index.d.ts +22 -0
  44. package/lib/Player/custom/SpatialScenePanel/index.js +279 -0
  45. package/lib/Player/index.d.ts +1 -1
  46. package/lib/Player/index.js +94 -10
  47. package/lib/Player/modules/PopUp/index.d.ts +2 -0
  48. package/lib/Player/modules/PopUp/index.js +43 -0
  49. package/lib/Player/modules/VideoAgent/VideoAgentMesh.d.ts +1 -0
  50. package/lib/Player/modules/VideoAgent/VideoAgentMesh.js +5 -1
  51. package/lib/Player/modules/VideoAgent/VideoAgentScene.d.ts +4 -1
  52. package/lib/Player/modules/VideoAgent/VideoAgentScene.js +2 -1
  53. package/lib/Player/modules/VideoAgent/index.d.ts +2 -0
  54. package/lib/Player/modules/VideoAgent/index.js +1 -1
  55. package/lib/Player/modules/keyframes/CameraMovement/index.js +41 -5
  56. package/lib/Player/modules/keyframes/InfoPanel/index.js +84 -36
  57. package/lib/Player/modules/keyframes/ModelVideo/index.js +43 -6
  58. package/lib/Player/modules/keyframes/PanoTextLabel/index.js +4 -12
  59. package/lib/Player/modules/keyframes/Prompter/index.js +2 -15
  60. package/lib/Player/modules/keyframes/UpdateVRPanorama/index.js +30 -18
  61. package/lib/Player/typings.d.ts +15 -2
  62. package/lib/fivePlugins/CameraMovementPlugin/index.js +104 -90
  63. package/lib/fivePlugins/CameraMovementPlugin/typings.d.ts +1 -0
  64. package/lib/react/index.d.ts +10 -2
  65. package/lib/react/index.js +1 -1
  66. package/lib/shared-utils/createTransMatrix.d.ts +1 -0
  67. package/lib/shared-utils/createTransMatrix.js +43 -0
  68. package/lib/typings/VreoUnit.d.ts +18 -6
  69. package/lib/typings/VreoUnit.js +14 -6
  70. package/package.json +4 -4
  71. package/resources/PlayController/createHTMLAudioElement.ts +53 -0
  72. package/resources/PlayController/index.ts +167 -0
  73. package/resources/Player/App.tsx +3 -1
  74. package/resources/Player/Controller.ts +12 -0
  75. package/resources/Player/custom/SpatialScenePanel/index.tsx +264 -0
  76. package/resources/Player/index.tsx +53 -2
  77. package/resources/Player/modules/PopUp/index.tsx +26 -0
  78. package/resources/Player/modules/VideoAgent/VideoAgentMesh.ts +4 -3
  79. package/resources/Player/modules/VideoAgent/VideoAgentScene.ts +2 -2
  80. package/resources/Player/modules/VideoAgent/index.tsx +3 -2
  81. package/resources/Player/modules/keyframes/CameraMovement/index.tsx +7 -3
  82. package/resources/Player/modules/keyframes/InfoPanel/index.tsx +90 -23
  83. package/resources/Player/modules/keyframes/ModelVideo/index.tsx +35 -2
  84. package/resources/Player/modules/keyframes/PanoTextLabel/index.tsx +2 -2
  85. package/resources/Player/modules/keyframes/Prompter/index.tsx +3 -14
  86. package/resources/Player/modules/keyframes/UpdateVRPanorama/index.tsx +25 -16
  87. package/resources/Player/typings.ts +17 -2
  88. package/resources/fivePlugins/CameraMovementPlugin/index.ts +59 -48
  89. package/resources/fivePlugins/CameraMovementPlugin/typings.ts +2 -1
  90. package/resources/react/index.tsx +12 -3
  91. package/resources/shared-utils/createTransMatrix.ts +12 -0
  92. package/resources/typings/VreoUnit.ts +27 -7
  93. package/stylesheets/custom/SpatialScenePanel.css +309 -0
  94. package/stylesheets/default.css +92 -7
@@ -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;
132
182
 
183
+ if (data.panoIndex === undefined) {
184
+ return false;
185
+ }
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;
228
+ _context.next = 28;
145
229
  return (_this$controller$vide3 = this.controller.videoAgentScene) === null || _this$controller$vide3 === void 0 ? void 0 : _this$controller$vide3.videoAgentMesh.play(vreoUnit.video.url);
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
  }
@@ -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
@@ -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
  });
@@ -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
 
@@ -9,8 +9,12 @@ exports.ModelVideo = ModelVideo;
9
9
 
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
 
12
+ var THREE = _interopRequireWildcard(require("three"));
13
+
12
14
  var _ModelTVVideoPlugin = require("../../../../fivePlugins/ModelTVVideoPlugin");
13
15
 
16
+ var _createTransMatrix = require("../../../../shared-utils/createTransMatrix");
17
+
14
18
  var _VreoUnit = require("../../../../typings/VreoUnit");
15
19
 
16
20
  var _hooks = require("../../../hooks");
@@ -33,7 +37,7 @@ function ModelVideo() {
33
37
  var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(keyframe) {
34
38
  var _controller$configs, _controller$configs$v;
35
39
 
36
- var start, end, _ref2, videoSrc, videoPosterSrc, vertexs;
40
+ var start, end, _ref2, videoSrc, videoPosterSrc, vertexs, matrixWorld, position, points;
37
41
 
38
42
  return regeneratorRuntime.wrap(function _callee$(_context) {
39
43
  while (1) {
@@ -44,16 +48,49 @@ function ModelVideo() {
44
48
  }
45
49
 
46
50
  start = keyframe.start, end = keyframe.end;
47
- _ref2 = keyframe.data, videoSrc = _ref2.videoSrc, videoPosterSrc = _ref2.videoPosterSrc, vertexs = _ref2.vertexs;
51
+ _ref2 = keyframe.data, videoSrc = _ref2.videoSrc, videoPosterSrc = _ref2.videoPosterSrc, vertexs = _ref2.vertexs, matrixWorld = _ref2.matrixWorld;
52
+
53
+ position = function () {
54
+ if (vertexs.length < 4) {
55
+ throw new Error('ModelVideo: 顶点数据集合不够,无法组成矩形 ....');
56
+ }
57
+
58
+ if (vertexs.length === 4) {
59
+ return vertexs;
60
+ }
61
+
62
+ var box = new THREE.Box3();
63
+ vertexs.forEach(function (v) {
64
+ return box.expandByPoint(new THREE.Vector3(v.x, v.y, v.z));
65
+ });
66
+ return [new THREE.Vector3(box.min.x, box.max.y, box.max.z), new THREE.Vector3(box.min.x, box.min.y, box.max.z), new THREE.Vector3(box.max.x, box.min.y, box.max.z), new THREE.Vector3(box.max.x, box.max.y, box.max.z)];
67
+ }();
68
+
69
+ points = function () {
70
+ if (matrixWorld) {
71
+ var transMatrix = (0, _createTransMatrix.createTransMatrix)(matrixWorld);
72
+ return [position.map(function (p) {
73
+ var res = transMatrix([p.x, p.y, p.z]);
74
+ return {
75
+ x: res[0],
76
+ y: res[1],
77
+ z: res[2]
78
+ };
79
+ })];
80
+ }
81
+
82
+ return [position];
83
+ }();
84
+
48
85
  ref.current.disable();
49
- _context.next = 6;
86
+ _context.next = 8;
50
87
  return ref.current.load({
51
88
  video_src: videoSrc,
52
89
  video_poster_src: videoPosterSrc,
53
- points: [vertexs]
90
+ points: points
54
91
  }, (_controller$configs = controller.configs) === null || _controller$configs === void 0 ? void 0 : (_controller$configs$v = _controller$configs.videos) === null || _controller$configs$v === void 0 ? void 0 : _controller$configs$v.modelTVVideo);
55
92
 
56
- case 6:
93
+ case 8:
57
94
  ref.current.enable();
58
95
  timeoutRef.current = setTimeout(function () {
59
96
  var _ref$current;
@@ -61,7 +98,7 @@ function ModelVideo() {
61
98
  return (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.disable();
62
99
  }, end - start);
63
100
 
64
- case 8:
101
+ case 10:
65
102
  case "end":
66
103
  return _context.stop();
67
104
  }
@@ -63,12 +63,8 @@ function PanoTextLabel() {
63
63
  var res = project2d(new _three.Vector3(x, y, z));
64
64
  if (!res) return;
65
65
  var left = res.x,
66
- top = res.y;
67
- Object.assign(window, {
68
- $PanoTextLabel: {
69
- setState: setState
70
- }
71
- });
66
+ top = res.y; // Object.assign(window, { $PanoTextLabel: { setState } })
67
+
72
68
  setState({
73
69
  left: left,
74
70
  top: top,
@@ -80,12 +76,8 @@ function PanoTextLabel() {
80
76
  }, end - start);
81
77
  };
82
78
 
83
- controller.on(_VreoUnit.VreoKeyframeEnum.PanoTextLabel, callback);
84
- Object.assign(window, {
85
- $panoTextLabel: {
86
- setState: setState
87
- }
88
- });
79
+ controller.on(_VreoUnit.VreoKeyframeEnum.PanoTextLabel, callback); // Object.assign(window, { $panoTextLabel: { setState } })
80
+
89
81
  return function () {
90
82
  controller.off(_VreoUnit.VreoKeyframeEnum.PanoTextLabel, callback);
91
83
 
@@ -13,8 +13,6 @@ var _classnames = _interopRequireDefault(require("classnames"));
13
13
 
14
14
  var _hooks = require("../../../hooks");
15
15
 
16
- var _reactTransitionGroup = require("react-transition-group");
17
-
18
16
  var _VreoUnit = require("../../../../typings/VreoUnit");
19
17
 
20
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
@@ -87,20 +85,9 @@ function Prompter() {
87
85
  'vreo-prompter--hidden': hidden,
88
86
  'vreo-prompter--audio': controller.isAudio
89
87
  })
90
- }, text ?
91
- /*#__PURE__*/
92
-
93
- /* @warning "index.js:1 Warning: findDOMNode is deprecated in StrictMode." */
94
- React.createElement(_reactTransitionGroup.TransitionGroup, {
88
+ }, /*#__PURE__*/React.createElement("div", {
95
89
  className: "vreo-prompter-text"
96
- }, /*#__PURE__*/React.createElement(_reactTransitionGroup.CSSTransition, {
97
- key: text,
98
- classNames: "vreo-prompter-text-transition",
99
- timeout: 500,
100
- addEndListener: function addEndListener(node, done) {
101
- return node.addEventListener('transitionend', done, false);
102
- }
103
90
  }, /*#__PURE__*/React.createElement("div", {
104
91
  className: "vreo-prompter-innerText"
105
- }, text))) : undefined);
92
+ }, text)));
106
93
  }