@realsee/vreo 2.3.8 → 2.3.9-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/lib/PlayController/createHTMLAudioElement.js +10 -2
  2. package/lib/PlayController/index.js +66 -6
  3. package/lib/Player/App.js +26 -0
  4. package/lib/Player/Controller.js +77 -21
  5. package/lib/Player/custom/SpatialScenePanel/index.js +63 -42
  6. package/lib/Player/hooks.js +10 -0
  7. package/lib/Player/index.js +79 -19
  8. package/lib/Player/modules/Drawer/index.js +17 -0
  9. package/lib/Player/modules/PopUp/index.js +10 -0
  10. package/lib/Player/modules/ResizeObserver/index.js +8 -0
  11. package/lib/Player/modules/VideoAgent/VideoAgentMesh.js +96 -8
  12. package/lib/Player/modules/VideoAgent/VideoAgentScene.js +17 -3
  13. package/lib/Player/modules/VideoAgent/index.js +17 -0
  14. package/lib/Player/modules/Wave/index.js +32 -11
  15. package/lib/Player/modules/keyframes/BgMusic/index.js +24 -4
  16. package/lib/Player/modules/keyframes/CameraMovement/index.js +26 -0
  17. package/lib/Player/modules/keyframes/InfoPanel/index.js +38 -8
  18. package/lib/Player/modules/keyframes/ModelVideo/index.js +28 -0
  19. package/lib/Player/modules/keyframes/PanoEffect/index.js +38 -15
  20. package/lib/Player/modules/keyframes/PanoEffect/lineAnime.js +7 -0
  21. package/lib/Player/modules/keyframes/PanoTag/index.js +22 -4
  22. package/lib/Player/modules/keyframes/PanoTextLabel/index.js +42 -22
  23. package/lib/Player/modules/keyframes/Prompter/index.js +27 -10
  24. package/lib/Player/modules/keyframes/UpdateVRPanorama/index.js +25 -18
  25. package/lib/Player/modules/keyframes/VideoEffect/index.js +42 -10
  26. package/lib/fivePlugins/CSS3DRenderPlugin/centerPoint.js +2 -0
  27. package/lib/fivePlugins/CSS3DRenderPlugin/createResizeObserver.js +1 -0
  28. package/lib/fivePlugins/CSS3DRenderPlugin/evenNumber.js +1 -0
  29. package/lib/fivePlugins/CSS3DRenderPlugin/index.js +60 -19
  30. package/lib/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.js +5 -2
  31. package/lib/fivePlugins/CameraMovementPlugin/index.js +109 -50
  32. package/lib/fivePlugins/CameraMovementPlugin/typings.js +4 -0
  33. package/lib/fivePlugins/ModelTVVideoPlugin/index.js +54 -8
  34. package/lib/index.js +1 -0
  35. package/lib/react/index.js +30 -7
  36. package/lib/shared-utils/Audio.js +49 -8
  37. package/lib/shared-utils/AudioLike.js +28 -3
  38. package/lib/shared-utils/Preloader.js +7 -0
  39. package/lib/shared-utils/addResizeListener.js +5 -0
  40. package/lib/shared-utils/animationFrame/BetterTween.js +28 -0
  41. package/lib/shared-utils/animationFrame/index.js +10 -2
  42. package/lib/shared-utils/animationFrame/tween.js +11 -2
  43. package/lib/shared-utils/createTransMatrix.js +8 -0
  44. package/lib/shared-utils/getFileExpandedName.js +1 -0
  45. package/lib/shared-utils/getMediaInfo.js +9 -0
  46. package/lib/shared-utils/setElementDataset.js +2 -0
  47. package/lib/typings/VreoUnit.js +15 -0
  48. package/package.json +1 -1
@@ -1,17 +1,26 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  var _typeof = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
8
10
  exports.ModelTVVideoPlugin = void 0;
11
+
9
12
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
+
10
14
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
11
16
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
+
12
18
  var THREE = _interopRequireWildcard(require("three"));
19
+
13
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
+
14
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
+
15
24
  var ModelTVVideoPlugin = function ModelTVVideoPlugin(five, _ref) {
16
25
  var videoElement = _ref.videoElement;
17
26
  var state = {
@@ -22,15 +31,18 @@ var ModelTVVideoPlugin = function ModelTVVideoPlugin(five, _ref) {
22
31
  enabled: false,
23
32
  videoElement: videoElement
24
33
  };
34
+
25
35
  var setMuted = function setMuted(muted) {
26
36
  if (state.videoTexture) {
27
37
  state.videoTexture.image.muted = muted;
28
38
  state.videoTexture.image.play();
29
39
  }
30
40
  };
41
+
31
42
  var getMuted = function getMuted() {
32
43
  if (state.videoTexture) return state.videoTexture.image.muted;else return true;
33
44
  };
45
+
34
46
  var enable = function enable() {
35
47
  if (state.enabled) return;
36
48
  if (!state.videoTexture) return;
@@ -39,10 +51,13 @@ var ModelTVVideoPlugin = function ModelTVVideoPlugin(five, _ref) {
39
51
  state.videoMeshes.forEach(function (mesh) {
40
52
  return five.scene.add(mesh);
41
53
  });
54
+
42
55
  var play = function play() {
43
56
  if (!state.videoTexture) return;
57
+
44
58
  var timeupdate = function timeupdate() {
45
59
  var _state$videoTexture;
60
+
46
61
  if (!state.videoTexture) return;
47
62
  (_state$videoTexture = state.videoTexture) === null || _state$videoTexture === void 0 ? void 0 : _state$videoTexture.image.removeEventListener('timeupdate', timeupdate);
48
63
  state.videoTextureEnabled = true;
@@ -51,17 +66,21 @@ var ModelTVVideoPlugin = function ModelTVVideoPlugin(five, _ref) {
51
66
  });
52
67
  five.needsRender = true;
53
68
  };
69
+
54
70
  state.videoTexture.image.addEventListener('timeupdate', timeupdate);
71
+
55
72
  if (state.videoTexture && state.videoMeshes.length) {
56
73
  state.videoTexture.image.play();
57
74
  }
58
75
  };
76
+
59
77
  if (five.model.loaded) play();else {
60
78
  return five.once('modelLoaded', function () {
61
79
  return play();
62
80
  });
63
81
  }
64
82
  };
83
+
65
84
  var disable = function disable() {
66
85
  if (!state.enabled) return;
67
86
  state.enabled = false;
@@ -74,36 +93,47 @@ var ModelTVVideoPlugin = function ModelTVVideoPlugin(five, _ref) {
74
93
  state.videoMeshes = [];
75
94
  five.needsRender = true;
76
95
  };
96
+
77
97
  var createPanoVideoMeshes = function createPanoVideoMeshes() {
78
98
  return state.rectPoints.map(function (points, index) {
79
99
  var geometry = new THREE.BufferGeometry();
80
100
  var segments = 128;
81
101
  var verticesArray = [];
82
102
  verticesArray.push(points[0].x, points[0].y, points[0].z);
103
+
83
104
  for (var i = 1; i < segments; i++) {
84
105
  verticesArray.push(points[0].x + (points[1].x - points[0].x) * i / segments, points[0].y + (points[1].y - points[0].y) * i / segments, points[0].z + (points[1].z - points[0].z) * i / segments);
85
106
  }
107
+
86
108
  verticesArray.push(points[1].x, points[1].y, points[1].z);
87
109
  verticesArray.push(points[2].x, points[2].y, points[2].z);
110
+
88
111
  for (var _i = 1; _i < segments; _i++) {
89
112
  verticesArray.push(points[2].x + (points[3].x - points[2].x) * _i / segments, points[2].y + (points[3].y - points[2].y) * _i / segments, points[2].z + (points[3].z - points[2].z) * _i / segments);
90
113
  }
114
+
91
115
  verticesArray.push(points[3].x, points[3].y, points[3].z);
92
116
  var uvArray = [];
93
117
  uvArray.push(0, 1);
118
+
94
119
  for (var _i2 = 1; _i2 < segments; _i2++) {
95
120
  uvArray.push(0, 1 - _i2 / segments);
96
121
  }
122
+
97
123
  uvArray.push(0, 0);
98
124
  uvArray.push(1, 0);
125
+
99
126
  for (var _i3 = 1; _i3 < segments; _i3++) {
100
127
  uvArray.push(1, _i3 / segments);
101
128
  }
129
+
102
130
  uvArray.push(1, 1);
103
131
  var indicesArray = [];
132
+
104
133
  for (var _i4 = 0; _i4 < segments; _i4++) {
105
134
  indicesArray.push(_i4, _i4 + 1, segments * 2 - _i4, _i4, segments * 2 - _i4, segments * 2 + 1 - _i4);
106
135
  }
136
+
107
137
  geometry.setAttribute('position', new THREE.BufferAttribute(new Float32Array(verticesArray), 3));
108
138
  geometry.setAttribute('uv', new THREE.BufferAttribute(new Float32Array(uvArray), 2));
109
139
  geometry.setIndex(new THREE.BufferAttribute(new Uint32Array(indicesArray), 1));
@@ -117,6 +147,7 @@ var ModelTVVideoPlugin = function ModelTVVideoPlugin(five, _ref) {
117
147
  return mesh;
118
148
  });
119
149
  };
150
+
120
151
  var getImageTexture = function getImageTexture(source) {
121
152
  var texture = new THREE.TextureLoader().load(source);
122
153
  texture.minFilter = THREE.LinearFilter;
@@ -124,9 +155,11 @@ var ModelTVVideoPlugin = function ModelTVVideoPlugin(five, _ref) {
124
155
  texture.format = THREE.RGBFormat;
125
156
  return texture;
126
157
  };
158
+
127
159
  var getVideoTexture = function getVideoTexture(source, video) {
128
160
  return new Promise(function (resolve, reject) {
129
161
  var xhr = new XMLHttpRequest();
162
+
130
163
  xhr.onreadystatechange = function () {
131
164
  if (xhr.readyState == 4) {
132
165
  if (xhr.status == 200) {
@@ -150,14 +183,17 @@ var ModelTVVideoPlugin = function ModelTVVideoPlugin(five, _ref) {
150
183
  }
151
184
  }
152
185
  };
186
+
153
187
  xhr.onerror = function (error) {
154
188
  return reject(error);
155
189
  };
190
+
156
191
  xhr.open('GET', source);
157
192
  xhr.responseType = 'blob';
158
193
  xhr.send();
159
194
  });
160
195
  };
196
+
161
197
  var load = /*#__PURE__*/function () {
162
198
  var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(data, videoElement) {
163
199
  var video_src, video_poster_src, points;
@@ -170,21 +206,25 @@ var ModelTVVideoPlugin = function ModelTVVideoPlugin(five, _ref) {
170
206
  state.rectPoints = points.map(function (items) {
171
207
  return items.map(function (_ref3) {
172
208
  var x = _ref3.x,
173
- y = _ref3.y,
174
- z = _ref3.z;
209
+ y = _ref3.y,
210
+ z = _ref3.z;
175
211
  return new THREE.Vector3(x, y, z);
176
212
  });
177
213
  });
178
214
  state.imageTexture = getImageTexture(video_poster_src);
215
+
179
216
  if (videoElement) {
180
217
  state.videoElement = videoElement;
181
218
  }
219
+
182
220
  _context.next = 7;
183
221
  return getVideoTexture(state.videoSource, state.videoElement);
222
+
184
223
  case 7:
185
224
  state.videoTexture = _context.sent;
186
225
  state.enabled = !!data.enable;
187
226
  if (state.enabled) enable();
227
+
188
228
  case 10:
189
229
  case "end":
190
230
  return _context.stop();
@@ -192,18 +232,22 @@ var ModelTVVideoPlugin = function ModelTVVideoPlugin(five, _ref) {
192
232
  }
193
233
  }, _callee);
194
234
  }));
235
+
195
236
  return function load(_x, _x2) {
196
237
  return _ref2.apply(this, arguments);
197
238
  };
198
239
  }();
240
+
199
241
  five.on('modeChange', function () {
200
242
  return setMuted(true);
201
243
  });
202
244
  five.on('wantsTapGesture', function (raycaster) {
203
245
  if (!state.enabled) return;
246
+
204
247
  var _raycaster$intersectO = raycaster.intersectObjects(five.scene.children, true),
205
- _raycaster$intersectO2 = (0, _slicedToArray2["default"])(_raycaster$intersectO, 1),
206
- intersect = _raycaster$intersectO2[0];
248
+ _raycaster$intersectO2 = (0, _slicedToArray2["default"])(_raycaster$intersectO, 1),
249
+ intersect = _raycaster$intersectO2[0];
250
+
207
251
  if (!!intersect && /^video/.test(intersect.object.name)) {
208
252
  if (state.videoTexture) setMuted(!state.videoTexture.image.muted);
209
253
  return false;
@@ -222,9 +266,11 @@ var ModelTVVideoPlugin = function ModelTVVideoPlugin(five, _ref) {
222
266
  }).filter(function (vector) {
223
267
  vector = vector.clone().sub(cameraPosition).normalize();
224
268
  var raycaster = new THREE.Raycaster(cameraPosition, vector);
269
+
225
270
  var _raycaster$intersectO3 = raycaster.intersectObjects(five.scene.children, true),
226
- _raycaster$intersectO4 = (0, _slicedToArray2["default"])(_raycaster$intersectO3, 1),
227
- intersect = _raycaster$intersectO4[0];
271
+ _raycaster$intersectO4 = (0, _slicedToArray2["default"])(_raycaster$intersectO3, 1),
272
+ intersect = _raycaster$intersectO4[0];
273
+
228
274
  return !!intersect && /^video/.test(intersect.object.name);
229
275
  }).length >= 2;
230
276
  });
@@ -232,8 +278,7 @@ var ModelTVVideoPlugin = function ModelTVVideoPlugin(five, _ref) {
232
278
  });
233
279
  five.on('renderFrame', function () {
234
280
  state.videoMeshes.forEach(function (meshes) {
235
- if (meshes)
236
- //@ts-ignore
281
+ if (meshes) //@ts-ignore
237
282
  meshes.needsRender = true;
238
283
  });
239
284
  });
@@ -248,4 +293,5 @@ var ModelTVVideoPlugin = function ModelTVVideoPlugin(five, _ref) {
248
293
  load: load
249
294
  };
250
295
  };
296
+
251
297
  exports.ModelTVVideoPlugin = ModelTVVideoPlugin;
package/lib/index.js CHANGED
@@ -9,4 +9,5 @@ Object.defineProperty(exports, "Player", {
9
9
  return _Player.Player;
10
10
  }
11
11
  });
12
+
12
13
  var _Player = require("./Player");
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  var _typeof = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
@@ -9,25 +11,36 @@ exports.VreoProvider = void 0;
9
11
  exports.useVreoAction = useVreoAction;
10
12
  exports.useVreoEventCallback = useVreoEventCallback;
11
13
  exports.useVreoPausedState = useVreoPausedState;
14
+
12
15
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
16
+
13
17
  var _react = require("@realsee/five/react");
18
+
14
19
  var React = _interopRequireWildcard(require("react"));
20
+
15
21
  var _Player = require("../Player");
22
+
16
23
  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); }
24
+
17
25
  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; }
26
+
18
27
  var VreoContext = /*#__PURE__*/React.createContext(null);
28
+
19
29
  var VreoProvider = function VreoProvider(props) {
20
30
  var five = (0, _react.unsafe__useFiveInstance)();
31
+
21
32
  var _React$useState = React.useState(null),
22
- _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
23
- player = _React$useState2[0],
24
- setPlayer = _React$useState2[1];
33
+ _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
34
+ player = _React$useState2[0],
35
+ setPlayer = _React$useState2[1];
36
+
25
37
  var playerRef = React.useRef(null);
26
38
  React.useEffect(function () {
27
39
  playerRef.current = new _Player.Player(five, props.configs || {});
28
40
  setPlayer(playerRef.current);
29
41
  return function () {
30
42
  var _playerRef$current;
43
+
31
44
  (_playerRef$current = playerRef.current) === null || _playerRef$current === void 0 ? void 0 : _playerRef$current.dispose();
32
45
  };
33
46
  }, []);
@@ -36,19 +49,23 @@ var VreoProvider = function VreoProvider(props) {
36
49
  value: player
37
50
  }, props.children);
38
51
  };
52
+
39
53
  exports.VreoProvider = VreoProvider;
54
+
40
55
  function useVreoInstance() {
41
56
  var context = React.useContext(VreoContext);
57
+
42
58
  if (!context) {
43
59
  throw new Error('VreoProvider never found.');
44
60
  }
61
+
45
62
  return context;
46
63
  }
47
-
48
64
  /**
49
65
  * VreoPlayer 命令集合。
50
66
  */
51
67
 
68
+
52
69
  function useVreoAction() {
53
70
  var player = useVreoInstance();
54
71
  var load = React.useCallback(function (vreoUnit, currentTime) {
@@ -78,12 +95,15 @@ function useVreoAction() {
78
95
  dispose: dispose
79
96
  };
80
97
  }
98
+
81
99
  function useVreoEventCallback(name, callback, deps) {
82
100
  var player = useVreoInstance();
83
101
  var dependencyList = [player, name];
102
+
84
103
  if (deps !== undefined) {
85
104
  dependencyList = dependencyList.concat(deps);
86
105
  }
106
+
87
107
  React.useEffect(function () {
88
108
  // @ts-ignore
89
109
  player.on(name, callback);
@@ -93,12 +113,15 @@ function useVreoEventCallback(name, callback, deps) {
93
113
  };
94
114
  }, dependencyList);
95
115
  }
116
+
96
117
  function useVreoPausedState() {
97
118
  var player = useVreoInstance();
119
+
98
120
  var _React$useState3 = React.useState(player.paused),
99
- _React$useState4 = (0, _slicedToArray2["default"])(_React$useState3, 2),
100
- state = _React$useState4[0],
101
- setState = _React$useState4[1];
121
+ _React$useState4 = (0, _slicedToArray2["default"])(_React$useState3, 2),
122
+ state = _React$useState4[0],
123
+ setState = _React$useState4[1];
124
+
102
125
  useVreoEventCallback('paused', function () {
103
126
  return setState(true);
104
127
  });
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
@@ -8,50 +9,70 @@ exports.audioList = void 0;
8
9
  exports.generateBlankAudio = generateBlankAudio;
9
10
  exports.getAudio = getAudio;
10
11
  exports.waitForBlankAudioGenerated = waitForBlankAudioGenerated;
12
+
11
13
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
14
+
12
15
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
16
+
13
17
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
18
+
14
19
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
20
+
15
21
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
22
+
16
23
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
24
+
17
25
  var _set2 = _interopRequireDefault(require("@babel/runtime/helpers/set"));
26
+
18
27
  var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
28
+
19
29
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
30
+
20
31
  var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
32
+
21
33
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
34
+
22
35
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
36
+
23
37
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
38
+
24
39
  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; } }
25
- var blankAudioSrc = '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=';
26
- // 下面这段空音频居然在11pro和xr上播不出来
40
+
41
+ var blankAudioSrc = '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='; // 下面这段空音频居然在11pro和xr上播不出来
27
42
  // const blankAudioSrc = 'data:audio/mpeg;base64,//AAAAHGZ0eXBNNEEgAAAAAE00QSBpc29tbXA0MgAAAAFtZGF0AAAAAAAAABwA0AAHANAABwDQAAcAAAM+bW9vdgAAAGxtdmhkAAAAAN+jti7fo7YuAACsRAAADAAAAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAdB0cmFrAAAAXHRraGQAAAAB36O2Lt+jti4AAAABAAAAAAAADAAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAFsbWRpYQAAACBtZGhkAAAAAN+jti7fo7YuAACsRAAADABVxAAAAAAAMWhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAABDb3JlIE1lZGlhIEF1ZGlvAAAAARNtaW5mAAAAEHNtaGQAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAANdzdGJsAAAAZ3N0c2QAAAAAAAAAAQAAAFdtcDRhAAAAAAAAAAEAAAAAAAAAAAACABAAAAAArEQAAAAAADNlc2RzAAAAAAOAgIAiAAAABICAgBRAFAAYAAAA+gAAAPoABYCAgAISCAaAgIABAgAAABhzdHRzAAAAAAAAAAEAAAADAAAEAAAAABxzdHNjAAAAAAAAAAEAAAABAAAAAwAAAAEAAAAgc3RzegAAAAAAAAAAAAAAAwAAAAQAAAAEAAAABAAAABRzdGNvAAAAAAAAAAEAAAAsAAAA+nVkdGEAAADybWV0YQAAAAAAAAAiaGRscgAAAAAAAAAAbWRpcgAAAAAAAAAAAAAAAAAAAAAAxGlsc3QAAAC8LS0tLQAAABxtZWFuAAAAAGNvbS5hcHBsZS5pVHVuZXMAAAAUbmFtZQAAAABpVHVuU01QQgAAAIRkYXRhAAAAAQAAAAAgMDAwMDAwMDAgMDAwMDA4NDAgMDAwMDAzQzAgMDAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMA=='
28
43
 
29
44
  var audioList = [];
30
45
  exports.audioList = audioList;
46
+
31
47
  function getAudio(src) {
32
48
  var audio = audioList.find(function (audio) {
33
49
  return !audio.realSrc || audio.realSrc === blankAudioSrc;
34
50
  });
51
+
35
52
  if (!audio) {
36
53
  // console.warn('未找到缓存音频,已新建', audioList)
37
54
  audio = new IAudio(blankAudioSrc);
38
55
  audioList.push(audio);
39
56
  }
57
+
40
58
  if (src) {
41
59
  audio.src = src;
42
60
  }
61
+
43
62
  return audio;
44
63
  }
64
+
45
65
  function waitForBlankAudioGenerated() {
46
66
  return _waitForBlankAudioGenerated.apply(this, arguments);
47
67
  }
68
+
48
69
  function _waitForBlankAudioGenerated() {
49
70
  _waitForBlankAudioGenerated = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
50
71
  var checkInterval,
51
- timeout,
52
- startTime,
53
- isTimedOut,
54
- _args = arguments;
72
+ timeout,
73
+ startTime,
74
+ isTimedOut,
75
+ _args = arguments;
55
76
  return _regenerator["default"].wrap(function _callee$(_context) {
56
77
  while (1) {
57
78
  switch (_context.prev = _context.next) {
@@ -60,10 +81,11 @@ function _waitForBlankAudioGenerated() {
60
81
  timeout = _args.length > 1 && _args[1] !== undefined ? _args[1] : 2000;
61
82
  console.log('waitForBlankAudioGenerated, needGenerate: ', audioList.some(function (audio) {
62
83
  return !audio.ended && audio.src === blankAudioSrc;
63
- }));
64
- // while any audioList not ended
84
+ })); // while any audioList not ended
85
+
65
86
  startTime = Date.now();
66
87
  isTimedOut = false;
88
+
67
89
  case 5:
68
90
  if (!(audioList.some(function (audio) {
69
91
  return !audio.ended && audio.src === blankAudioSrc;
@@ -71,20 +93,25 @@ function _waitForBlankAudioGenerated() {
71
93
  _context.next = 13;
72
94
  break;
73
95
  }
96
+
74
97
  if (!(Date.now() - startTime > timeout)) {
75
98
  _context.next = 9;
76
99
  break;
77
100
  }
101
+
78
102
  isTimedOut = true;
79
103
  return _context.abrupt("return", Promise.resolve());
104
+
80
105
  case 9:
81
106
  _context.next = 11;
82
107
  return new Promise(function (resolve) {
83
108
  return setTimeout(resolve, checkInterval);
84
109
  });
110
+
85
111
  case 11:
86
112
  _context.next = 5;
87
113
  break;
114
+
88
115
  case 13:
89
116
  case "end":
90
117
  return _context.stop();
@@ -94,29 +121,38 @@ function _waitForBlankAudioGenerated() {
94
121
  }));
95
122
  return _waitForBlankAudioGenerated.apply(this, arguments);
96
123
  }
124
+
97
125
  function generateBlankAudio(length) {
98
126
  // 判断一下已经生成几个了,防止重复生成
99
127
  var generateLength = length - audioList.length;
100
128
  if (generateLength <= 0) return;
129
+
101
130
  for (var i = 0; i < generateLength; i++) {
102
131
  audioList.push(new IAudio(blankAudioSrc));
103
132
  }
104
133
  }
134
+
105
135
  function initAudio(audio) {
106
136
  if (audio.inited) return;
137
+
107
138
  if (audio.src) {
108
139
  audio.inited = true;
109
140
  audio.removeDocumentEventListener();
110
141
  }
142
+
111
143
  if (audio.src === blankAudioSrc) {
112
144
  audio.play();
113
145
  }
114
146
  }
147
+
115
148
  var IAudio = /*#__PURE__*/function (_Audio) {
116
149
  (0, _inherits2["default"])(IAudio, _Audio);
150
+
117
151
  var _super = _createSuper(IAudio);
152
+
118
153
  function IAudio(src) {
119
154
  var _thisSuper, _this;
155
+
120
156
  (0, _classCallCheck2["default"])(this, IAudio);
121
157
  _this = _super.call(this, src);
122
158
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "preload", 'auto');
@@ -126,17 +162,22 @@ var IAudio = /*#__PURE__*/function (_Audio) {
126
162
  (0, _get2["default"])((_thisSuper = (0, _assertThisInitialized2["default"])(_this), (0, _getPrototypeOf2["default"])(IAudio.prototype)), "addEventListener", _thisSuper).call(_thisSuper, 'ended', function () {
127
163
  _this.src = '';
128
164
  });
165
+
129
166
  var init = function init() {
130
167
  return initAudio((0, _assertThisInitialized2["default"])(_this));
131
168
  };
169
+
132
170
  document.addEventListener('click', init);
133
171
  document.addEventListener('touchend', init);
172
+
134
173
  _this.removeDocumentEventListener = function () {
135
174
  document.removeEventListener('click', init);
136
175
  document.removeEventListener('touchend', init);
137
176
  };
177
+
138
178
  return _this;
139
179
  }
180
+
140
181
  (0, _createClass2["default"])(IAudio, [{
141
182
  key: "src",
142
183
  get: function get() {
@@ -1,31 +1,48 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports["default"] = exports.AudioLike = void 0;
9
+
8
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
9
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
10
14
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
+
11
16
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
12
18
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
+
13
20
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
+
14
22
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
+
15
24
  var _five = require("@realsee/five");
25
+
16
26
  var _animationFrame = require("./animationFrame");
27
+
17
28
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
29
+
18
30
  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; } }
31
+
19
32
  /**
20
33
  * 模拟 `<Audio>` 功能:没有音频,但执行逻辑跟 `<Audio>` 相似。
21
34
  */
22
35
  var AudioLike = /*#__PURE__*/function (_Subscribe) {
23
36
  (0, _inherits2["default"])(AudioLike, _Subscribe);
37
+
24
38
  var _super = _createSuper(AudioLike);
39
+
25
40
  function AudioLike() {
26
41
  var _this;
42
+
27
43
  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
28
- duration = _ref.duration;
44
+ duration = _ref.duration;
45
+
29
46
  (0, _classCallCheck2["default"])(this, AudioLike);
30
47
  _this = _super.call(this);
31
48
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "$timestamp", null);
@@ -33,26 +50,31 @@ var AudioLike = /*#__PURE__*/function (_Subscribe) {
33
50
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "$duration", 0);
34
51
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "muted", false);
35
52
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "src", '');
53
+
36
54
  if (duration) {
37
55
  _this.$duration = duration;
38
56
  }
57
+
39
58
  return _this;
40
59
  }
60
+
41
61
  (0, _createClass2["default"])(AudioLike, [{
42
62
  key: "setAttribute",
43
- value: function setAttribute(name, value) {
44
- // nothing todo
63
+ value: function setAttribute(name, value) {// nothing todo
45
64
  }
46
65
  }, {
47
66
  key: "play",
48
67
  value: function play() {
49
68
  var _this2 = this;
69
+
50
70
  if (this.$currentTime === this.$duration) {
51
71
  this.$currentTime = 0;
52
72
  }
73
+
53
74
  if (this.$timestamp === null) {
54
75
  this.$timestamp = performance.now();
55
76
  }
77
+
56
78
  this.stopInterval = (0, _animationFrame.requestAnimationFrameInterval)(function () {
57
79
  return _this2.requestAnimationFrameLoop();
58
80
  });
@@ -66,6 +88,7 @@ var AudioLike = /*#__PURE__*/function (_Subscribe) {
66
88
  this.emit('pause');
67
89
  this.stopInterval = undefined;
68
90
  }
91
+
69
92
  this.$timestamp = null;
70
93
  }
71
94
  }, {
@@ -76,6 +99,7 @@ var AudioLike = /*#__PURE__*/function (_Subscribe) {
76
99
  this.$currentTime += now - this.$timestamp;
77
100
  this.$timestamp = now;
78
101
  this.emit('timeupdate');
102
+
79
103
  if (this.$currentTime >= this.$duration - 10) {
80
104
  this.$currentTime = this.$duration;
81
105
  this.pause();
@@ -123,6 +147,7 @@ var AudioLike = /*#__PURE__*/function (_Subscribe) {
123
147
  }]);
124
148
  return AudioLike;
125
149
  }(_five.Subscribe);
150
+
126
151
  exports.AudioLike = AudioLike;
127
152
  var _default = AudioLike;
128
153
  exports["default"] = _default;