@realsee/vreo 2.4.7 → 2.5.0-alpha.2
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.
- package/README.md +1 -1
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/classes/Player.AudioLike.html +2 -2
- package/docs/classes/Player.Controller.html +52 -4
- package/docs/classes/Player.Player.html +43 -2
- package/docs/classes/Player.VideoAgentMesh.html +61 -4
- package/docs/classes/Player.VideoAgentScene.html +2 -2
- package/docs/demo/assets/{examples-5qw3pq5z.js → examples-DfiAz2fR.js} +1 -1
- package/docs/demo/assets/react-BnzBLum3.css +1 -0
- package/docs/demo/examples.html +1 -1
- package/docs/demo/index-react.html +2 -2
- package/docs/demo/index.html +1 -1
- package/docs/enums/Player.InfoPanelStyleEnum.html +2 -2
- package/docs/enums/Player.InfoPanelTypeEnum.html +2 -2
- package/docs/enums/Player.PanoEffectEnum.html +2 -2
- package/docs/enums/Player.PanoTagEnum.html +2 -2
- package/docs/enums/Player.PanoTagStyleEnum.html +3 -3
- package/docs/enums/Player.VreoKeyframeEnum.html +13 -13
- package/docs/enums/fivePlugins.CameraMovementEffect.html +2 -2
- package/docs/enums/fivePlugins.Rotation.html +2 -2
- package/docs/functions/custom.SpatialScenePanel.html +1 -1
- package/docs/functions/react.useVreoAction.html +8 -1
- package/docs/functions/react.useVreoEventCallback.html +10 -1
- package/docs/functions/react.useVreoPausedState.html +8 -1
- package/docs/index.html +1 -1
- package/docs/interfaces/Player.Appearance.html +2 -0
- package/docs/interfaces/Player.CustomVreoKeyframeProps.html +2 -2
- package/docs/interfaces/Player.PlayerConfigs.html +6 -6
- package/docs/interfaces/Player.Vertex.html +2 -2
- package/docs/interfaces/Player.VideoAgentMeshOptions.html +5 -4
- package/docs/interfaces/Player.VreoKeyframe.html +2 -2
- package/docs/interfaces/Player.VreoUnit.html +2 -2
- package/docs/interfaces/Player.VreoVideo.html +2 -2
- package/docs/interfaces/fivePlugins.CSS3DRenderPluginExportType.html +7 -5
- package/docs/interfaces/fivePlugins.CameraMovementOptsCallback.html +2 -2
- package/docs/interfaces/fivePlugins.CameraMovementPluginExportType.html +3 -3
- package/docs/interfaces/fivePlugins.CameraMovementPluginParameterType.html +1 -1
- package/docs/interfaces/fivePlugins.ModelTVVideoPluginData.html +2 -2
- package/docs/interfaces/fivePlugins.ModelTVVideoPluginExportType.html +2 -2
- package/docs/interfaces/fivePlugins.ModelTVVideoPluginParameterType.html +2 -2
- package/docs/interfaces/fivePlugins.Vector3Position.html +2 -2
- package/docs/interfaces/react.VreoActionCallbacks.html +7 -7
- package/docs/interfaces/react.VreoProviderProps.html +5 -2
- package/docs/modules/Player.html +1 -1
- package/docs/modules/fivePlugins.html +1 -1
- package/docs/types/Player.AppSize.html +1 -0
- package/docs/types/Player.AudioLikeEvent.html +2 -2
- package/docs/types/Player.CameraMovementData.html +1 -1
- package/docs/types/Player.CustomData.html +1 -1
- package/docs/types/Player.InfoPanelData.html +2 -2
- package/docs/types/Player.ModelVideoData.html +5 -5
- package/docs/types/Player.PanoEffectData.html +2 -2
- package/docs/types/Player.PanoTagData.html +2 -2
- package/docs/types/Player.PanoTextLabelData.html +2 -2
- package/docs/types/Player.PrompterData.html +2 -2
- package/docs/types/Player.QuadrangleVertexs.html +1 -1
- package/docs/types/Player.Quaternion.html +2 -2
- package/docs/types/Player.UpdateVRPanoramaData.html +2 -2
- package/docs/types/Player.Vertexs.html +1 -1
- package/docs/types/Player.VideoEffectData.html +2 -2
- package/docs/types/Player.VreoKeyframeEvent.html +1 -1
- package/docs/types/Player.VreoKeyframeMap.html +2 -2
- package/docs/types/Player.VreoSubscribe.html +1 -1
- package/docs/types/Player.WaveAppearance.html +1 -0
- package/docs/types/fivePlugins.CSS3DRenderPluginParameterType.html +1 -0
- package/docs/types/fivePlugins.MoveArgs.html +1 -1
- package/docs/types/fivePlugins.MoveOpts.html +1 -1
- package/docs/types/fivePlugins.RotateArgs.html +1 -1
- package/docs/types/fivePlugins.RotateOpts.html +1 -1
- package/docs/variables/fivePlugins.CSS3DRenderPlugin.html +2 -2
- package/docs/variables/fivePlugins.CameraMovementPlugin.html +1 -1
- package/docs/variables/fivePlugins.ModelTVVideoPlugin.html +1 -1
- package/docs/variables/react.VreoProvider.html +9 -1
- package/lib/PlayController/createHTMLAudioElement.js +5 -12
- package/lib/PlayController/index.js +27 -34
- package/lib/Player/App.js +25 -34
- package/lib/Player/Controller.d.ts +106 -2
- package/lib/Player/Controller.js +190 -78
- package/lib/Player/custom/SpatialScenePanel/index.js +20 -31
- package/lib/Player/hooks.js +6 -15
- package/lib/Player/index.d.ts +103 -0
- package/lib/Player/index.js +153 -45
- package/lib/Player/modules/Drawer/index.js +8 -17
- package/lib/Player/modules/PopUp/index.js +8 -17
- package/lib/Player/modules/ResizeObserver/index.js +10 -17
- package/lib/Player/modules/VideoAgent/VideoAgentMesh.d.ts +108 -7
- package/lib/Player/modules/VideoAgent/VideoAgentMesh.js +157 -52
- package/lib/Player/modules/VideoAgent/VideoAgentScene.js +16 -25
- package/lib/Player/modules/VideoAgent/index.js +8 -17
- package/lib/Player/modules/Wave/index.js +24 -33
- package/lib/Player/modules/keyframes/BgMusic/index.js +13 -22
- package/lib/Player/modules/keyframes/CameraMovement/index.js +17 -26
- package/lib/Player/modules/keyframes/InfoPanel/index.js +13 -21
- package/lib/Player/modules/keyframes/ModelVideo/index.js +17 -26
- package/lib/Player/modules/keyframes/PanoEffect/index.js +21 -30
- package/lib/Player/modules/keyframes/PanoEffect/lineAnime.js +6 -14
- package/lib/Player/modules/keyframes/PanoTag/index.js +10 -18
- package/lib/Player/modules/keyframes/PanoTextLabel/index.js +19 -28
- package/lib/Player/modules/keyframes/Prompter/index.js +13 -22
- package/lib/Player/modules/keyframes/UpdateVRPanorama/index.js +16 -24
- package/lib/Player/modules/keyframes/VideoEffect/index.js +18 -28
- package/lib/Player/typings.js +1 -5
- package/lib/fivePlugins/CSS3DRenderPlugin/centerPoint.js +3 -9
- package/lib/fivePlugins/CSS3DRenderPlugin/createResizeObserver.js +1 -7
- package/lib/fivePlugins/CSS3DRenderPlugin/evenNumber.js +1 -7
- package/lib/fivePlugins/CSS3DRenderPlugin/index.d.ts +6 -12
- package/lib/fivePlugins/CSS3DRenderPlugin/index.js +27 -37
- package/lib/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.js +3 -9
- package/lib/fivePlugins/CameraMovementPlugin/index.js +15 -22
- package/lib/fivePlugins/CameraMovementPlugin/typings.js +6 -10
- package/lib/fivePlugins/ModelTVVideoPlugin/index.js +9 -18
- package/lib/index.js +1 -12
- package/lib/react/index.d.ts +111 -0
- package/lib/react/index.js +148 -24
- package/lib/shared-utils/Audio.js +27 -37
- package/lib/shared-utils/AudioLike.js +22 -29
- package/lib/shared-utils/Preloader.js +1 -7
- package/lib/shared-utils/addResizeListener.js +4 -11
- package/lib/shared-utils/animationFrame/BetterTween.js +23 -33
- package/lib/shared-utils/animationFrame/index.js +4 -13
- package/lib/shared-utils/animationFrame/tween.js +9 -17
- package/lib/shared-utils/createTransMatrix.js +5 -14
- package/lib/shared-utils/getFileExpandedName.js +1 -7
- package/lib/shared-utils/getMediaInfo.js +8 -19
- package/lib/shared-utils/setElementDataset.js +1 -7
- package/lib/typings/VreoUnit.js +15 -17
- package/package.json +58 -5
- package/stylesheets/custom/SpatialScenePanel.css +7 -7
- package/stylesheets/default.css +1 -1
- package/docs/demo/assets/react-dPVEotm3.css +0 -1
- /package/docs/demo/assets/{react-BLZb_LNZ.js → react-C4h9qndP.js} +0 -0
|
@@ -1,14 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.CameraMovementPlugin = void 0;
|
|
8
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
-
var _five = require("@realsee/five");
|
|
11
|
-
var _typings = require("./typings");
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
2
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
3
|
+
import { Five } from '@realsee/five';
|
|
4
|
+
import { Rotation } from "./typings.js";
|
|
12
5
|
var PI = Math.PI;
|
|
13
6
|
var PI_2 = PI * 2;
|
|
14
7
|
var moving = false; // five 6 神秘bug, move 的时候不能 setState
|
|
@@ -18,7 +11,7 @@ function progressNumber(from, to, pst) {
|
|
|
18
11
|
return from + (to - from) * pst;
|
|
19
12
|
}
|
|
20
13
|
function progressLongitude(fromLongitude, toLongitude, rotation, progress) {
|
|
21
|
-
var clockwise = rotation ===
|
|
14
|
+
var clockwise = rotation === Rotation.Clockwise;
|
|
22
15
|
var delta = clockwise ? fromLongitude - toLongitude : toLongitude - fromLongitude;
|
|
23
16
|
var deltaMod = delta % PI_2;
|
|
24
17
|
var deltaMod2 = deltaMod < 0 ? deltaMod + PI_2 : deltaMod;
|
|
@@ -30,16 +23,16 @@ function progressLongitude(fromLongitude, toLongitude, rotation, progress) {
|
|
|
30
23
|
/**
|
|
31
24
|
* **运镜插件** 模拟类似于电影运镜效果。
|
|
32
25
|
*/
|
|
33
|
-
var CameraMovementPlugin =
|
|
26
|
+
export var CameraMovementPlugin = function CameraMovementPlugin(five) {
|
|
34
27
|
var move = function move(args, duration) {
|
|
35
28
|
var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
|
|
36
29
|
preload: true
|
|
37
30
|
};
|
|
38
31
|
return new Promise(/*#__PURE__*/function () {
|
|
39
|
-
var _ref = (
|
|
32
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(resolve, reject) {
|
|
40
33
|
var _opts$asyncEndCallbac;
|
|
41
34
|
var panoIndex, start, movePanoOptions;
|
|
42
|
-
return
|
|
35
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
43
36
|
while (1) {
|
|
44
37
|
switch (_context.prev = _context.next) {
|
|
45
38
|
case 0:
|
|
@@ -62,7 +55,7 @@ var CameraMovementPlugin = exports.CameraMovementPlugin = function CameraMovemen
|
|
|
62
55
|
case 7:
|
|
63
56
|
return _context.abrupt("return", resolve(true));
|
|
64
57
|
case 8:
|
|
65
|
-
if (!(args.mode ===
|
|
58
|
+
if (!(args.mode === Five.Mode.Floorplan)) {
|
|
66
59
|
_context.next = 10;
|
|
67
60
|
break;
|
|
68
61
|
}
|
|
@@ -124,7 +117,7 @@ var CameraMovementPlugin = exports.CameraMovementPlugin = function CameraMovemen
|
|
|
124
117
|
}());
|
|
125
118
|
};
|
|
126
119
|
var rotate = /*#__PURE__*/function () {
|
|
127
|
-
var _ref2 = (
|
|
120
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(args, duration) {
|
|
128
121
|
var _opts$asyncStartCallb, _opts$asyncEndCallbac2;
|
|
129
122
|
var opts,
|
|
130
123
|
from,
|
|
@@ -134,7 +127,7 @@ var CameraMovementPlugin = exports.CameraMovementPlugin = function CameraMovemen
|
|
|
134
127
|
animeDuration,
|
|
135
128
|
onFiveRenderFrame,
|
|
136
129
|
_args2 = arguments;
|
|
137
|
-
return
|
|
130
|
+
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
138
131
|
while (1) {
|
|
139
132
|
switch (_context2.prev = _context2.next) {
|
|
140
133
|
case 0:
|
|
@@ -148,11 +141,11 @@ var CameraMovementPlugin = exports.CameraMovementPlugin = function CameraMovemen
|
|
|
148
141
|
break;
|
|
149
142
|
}
|
|
150
143
|
_context2.next = 6;
|
|
151
|
-
return five.changeMode(args.mode, args.mode ===
|
|
144
|
+
return five.changeMode(args.mode, args.mode === Five.Mode.Panorama ? {
|
|
152
145
|
latitude: 0
|
|
153
146
|
} : undefined);
|
|
154
147
|
case 6:
|
|
155
|
-
if (!(args.mode ===
|
|
148
|
+
if (!(args.mode === Five.Mode.Panorama && five.currentMode === Five.Mode.Panorama && args.panoIndex !== undefined && args.panoIndex !== five.panoIndex)) {
|
|
156
149
|
_context2.next = 12;
|
|
157
150
|
break;
|
|
158
151
|
}
|
|
@@ -191,7 +184,7 @@ var CameraMovementPlugin = exports.CameraMovementPlugin = function CameraMovemen
|
|
|
191
184
|
timeEnd = false; // 开始时间
|
|
192
185
|
start = performance.now();
|
|
193
186
|
animeDuration = duration;
|
|
194
|
-
if (args.rotation ===
|
|
187
|
+
if (args.rotation === Rotation.Loop) {
|
|
195
188
|
animeDuration = args.rotateSpeed ? Math.ceil(Math.abs(to.longitude - from.longitude) / args.rotateSpeed * 1000) : duration;
|
|
196
189
|
animeDuration = Math.min(duration, animeDuration);
|
|
197
190
|
}
|
|
@@ -201,7 +194,7 @@ var CameraMovementPlugin = exports.CameraMovementPlugin = function CameraMovemen
|
|
|
201
194
|
return;
|
|
202
195
|
}
|
|
203
196
|
var targetState = {};
|
|
204
|
-
if (args.rotation !==
|
|
197
|
+
if (args.rotation !== Rotation.Loop) {
|
|
205
198
|
var progress = (performance.now() - start) / duration;
|
|
206
199
|
targetState = {
|
|
207
200
|
fov: progressNumber(from.fov, to.fov, progress),
|
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.Rotation = exports.CameraMovementEffect = void 0;
|
|
7
1
|
/* eslint-disable prettier/prettier */
|
|
2
|
+
|
|
8
3
|
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
9
|
-
|
|
4
|
+
|
|
5
|
+
export var CameraMovementEffect;
|
|
10
6
|
(function (CameraMovementEffect) {
|
|
11
7
|
CameraMovementEffect["Move"] = "Move";
|
|
12
8
|
CameraMovementEffect["Rotate"] = "Rotate";
|
|
13
|
-
})(CameraMovementEffect || (
|
|
14
|
-
var Rotation;
|
|
9
|
+
})(CameraMovementEffect || (CameraMovementEffect = {}));
|
|
10
|
+
export var Rotation;
|
|
15
11
|
(function (Rotation) {
|
|
16
12
|
Rotation["Clockwise"] = "Clockwise";
|
|
17
13
|
Rotation["Anticlockwise"] = "Anticlockwise";
|
|
18
14
|
Rotation["Loop"] = "Loop";
|
|
19
|
-
})(Rotation || (
|
|
15
|
+
})(Rotation || (Rotation = {}));
|
|
@@ -1,17 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.ModelTVVideoPlugin = void 0;
|
|
9
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
12
|
-
var THREE = _interopRequireWildcard(require("three"));
|
|
13
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) { "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); } return f; })(e, t); }
|
|
14
|
-
var ModelTVVideoPlugin = exports.ModelTVVideoPlugin = function ModelTVVideoPlugin(five, _ref) {
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
|
+
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
3
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
export var ModelTVVideoPlugin = function ModelTVVideoPlugin(five, _ref) {
|
|
15
6
|
var videoElement = _ref.videoElement;
|
|
16
7
|
var state = {
|
|
17
8
|
videoMeshes: [],
|
|
@@ -158,9 +149,9 @@ var ModelTVVideoPlugin = exports.ModelTVVideoPlugin = function ModelTVVideoPlugi
|
|
|
158
149
|
});
|
|
159
150
|
};
|
|
160
151
|
var load = /*#__PURE__*/function () {
|
|
161
|
-
var _ref2 = (
|
|
152
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(data, videoElement) {
|
|
162
153
|
var video_src, video_poster_src, points;
|
|
163
|
-
return
|
|
154
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
164
155
|
while (1) {
|
|
165
156
|
switch (_context.prev = _context.next) {
|
|
166
157
|
case 0:
|
|
@@ -201,7 +192,7 @@ var ModelTVVideoPlugin = exports.ModelTVVideoPlugin = function ModelTVVideoPlugi
|
|
|
201
192
|
five.on('wantsTapGesture', function (raycaster) {
|
|
202
193
|
if (!state.enabled) return;
|
|
203
194
|
var _raycaster$intersectO = raycaster.intersectObjects(five.scene.children, true),
|
|
204
|
-
_raycaster$intersectO2 = (
|
|
195
|
+
_raycaster$intersectO2 = _slicedToArray(_raycaster$intersectO, 1),
|
|
205
196
|
intersect = _raycaster$intersectO2[0];
|
|
206
197
|
if (!!intersect && /^video/.test(intersect.object.name)) {
|
|
207
198
|
if (state.videoTexture) setMuted(!state.videoTexture.image.muted);
|
|
@@ -222,7 +213,7 @@ var ModelTVVideoPlugin = exports.ModelTVVideoPlugin = function ModelTVVideoPlugi
|
|
|
222
213
|
vector = vector.clone().sub(cameraPosition).normalize();
|
|
223
214
|
var raycaster = new THREE.Raycaster(cameraPosition, vector);
|
|
224
215
|
var _raycaster$intersectO3 = raycaster.intersectObjects(five.scene.children, true),
|
|
225
|
-
_raycaster$intersectO4 = (
|
|
216
|
+
_raycaster$intersectO4 = _slicedToArray(_raycaster$intersectO3, 1),
|
|
226
217
|
intersect = _raycaster$intersectO4[0];
|
|
227
218
|
return !!intersect && /^video/.test(intersect.object.name);
|
|
228
219
|
}).length >= 2;
|
package/lib/index.js
CHANGED
|
@@ -1,12 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
Object.defineProperty(exports, "Player", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: function get() {
|
|
9
|
-
return _Player.Player;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
var _Player = require("./Player");
|
|
1
|
+
export { Player } from "./Player/index.js";
|
package/lib/react/index.d.ts
CHANGED
|
@@ -1,10 +1,33 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { PlayerConfigs } from '../Player/typings';
|
|
3
3
|
import { VreoKeyframeEvent, VreoUnit } from '../typings/VreoUnit';
|
|
4
|
+
/**
|
|
5
|
+
* VreoProvider 组件的属性接口
|
|
6
|
+
*/
|
|
4
7
|
export interface VreoProviderProps {
|
|
8
|
+
/** 播放器配置选项 */
|
|
5
9
|
configs?: Partial<PlayerConfigs>;
|
|
10
|
+
/** 子组件 */
|
|
6
11
|
children?: React.ReactNode;
|
|
7
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Vreo 播放器 Provider 组件
|
|
15
|
+
*
|
|
16
|
+
* 为子组件提供 Vreo 播放器实例的 React Context Provider。
|
|
17
|
+
* 必须在 Five Provider 内部使用。
|
|
18
|
+
*
|
|
19
|
+
* @param props - 组件属性
|
|
20
|
+
* @returns React.FC 组件
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```tsx
|
|
24
|
+
* <FiveProvider>
|
|
25
|
+
* <VreoProvider configs={{ autoPreload: true }}>
|
|
26
|
+
* <YourComponent />
|
|
27
|
+
* </VreoProvider>
|
|
28
|
+
* </FiveProvider>
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
8
31
|
export declare const VreoProvider: React.FC<VreoProviderProps>;
|
|
9
32
|
/**
|
|
10
33
|
* VreoPlayer 命令集合。
|
|
@@ -39,6 +62,35 @@ export interface VreoActionCallbacks {
|
|
|
39
62
|
*/
|
|
40
63
|
dispose: () => void;
|
|
41
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* 获取 Vreo 播放器操作函数集合
|
|
67
|
+
*
|
|
68
|
+
* 返回一组经过优化的播放器操作函数,这些函数已经绑定了当前播放器实例。
|
|
69
|
+
* 使用 useCallback 进行性能优化,避免不必要的重新渲染。
|
|
70
|
+
*
|
|
71
|
+
* @returns VreoActionCallbacks 操作函数集合
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```tsx
|
|
75
|
+
* function PlayerControls() {
|
|
76
|
+
* const { load, play, pause, show, hide, dispose } = useVreoAction()
|
|
77
|
+
*
|
|
78
|
+
* const handleLoadScript = async () => {
|
|
79
|
+
* await load(vreoUnit, 0)
|
|
80
|
+
* play()
|
|
81
|
+
* }
|
|
82
|
+
*
|
|
83
|
+
* return (
|
|
84
|
+
* <div>
|
|
85
|
+
* <button onClick={handleLoadScript}>加载并播放</button>
|
|
86
|
+
* <button onClick={pause}>暂停</button>
|
|
87
|
+
* <button onClick={() => show()}>显示</button>
|
|
88
|
+
* <button onClick={() => hide()}>隐藏</button>
|
|
89
|
+
* </div>
|
|
90
|
+
* )
|
|
91
|
+
* }
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
42
94
|
export declare function useVreoAction(): {
|
|
43
95
|
load: (vreoUnit: VreoUnit, currentTime?: number) => Promise<boolean>;
|
|
44
96
|
pause: () => void;
|
|
@@ -47,5 +99,64 @@ export declare function useVreoAction(): {
|
|
|
47
99
|
hide: () => void;
|
|
48
100
|
dispose: () => void;
|
|
49
101
|
};
|
|
102
|
+
/**
|
|
103
|
+
* 监听 Vreo 播放器事件
|
|
104
|
+
*
|
|
105
|
+
* 用于注册和清理 Vreo 播放器事件监听器的 React Hook。
|
|
106
|
+
* 当组件卸载或依赖项变化时自动清理事件监听器。
|
|
107
|
+
*
|
|
108
|
+
* @param name - 事件名称
|
|
109
|
+
* @param callback - 事件回调函数
|
|
110
|
+
* @param deps - 依赖项数组(可选)
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```tsx
|
|
114
|
+
* function EventListener() {
|
|
115
|
+
* const [keyframes, setKeyframes] = React.useState([])
|
|
116
|
+
*
|
|
117
|
+
* // 监听关键帧事件
|
|
118
|
+
* useVreoEventCallback('CameraMovement', (keyframe) => {
|
|
119
|
+
* console.log('相机运镜:', keyframe)
|
|
120
|
+
* })
|
|
121
|
+
*
|
|
122
|
+
* // 监听播放状态变化
|
|
123
|
+
* useVreoEventCallback('playing', () => {
|
|
124
|
+
* console.log('开始播放')
|
|
125
|
+
* }, [])
|
|
126
|
+
*
|
|
127
|
+
* return <div>事件监听组件</div>
|
|
128
|
+
* }
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
50
131
|
export declare function useVreoEventCallback<T extends keyof VreoKeyframeEvent>(name: T, callback: VreoKeyframeEvent[T], deps?: React.DependencyList | undefined): void;
|
|
132
|
+
/**
|
|
133
|
+
* 获取播放器暂停状态
|
|
134
|
+
*
|
|
135
|
+
* 返回当前播放器的暂停状态,并自动响应播放状态变化。
|
|
136
|
+
* 当播放器开始播放或暂停时,状态会自动更新。
|
|
137
|
+
*
|
|
138
|
+
* @returns boolean 是否处于暂停状态
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```tsx
|
|
142
|
+
* function PlayButton() {
|
|
143
|
+
* const isPaused = useVreoPausedState()
|
|
144
|
+
* const { play, pause } = useVreoAction()
|
|
145
|
+
*
|
|
146
|
+
* const handleToggle = () => {
|
|
147
|
+
* if (isPaused) {
|
|
148
|
+
* play()
|
|
149
|
+
* } else {
|
|
150
|
+
* pause()
|
|
151
|
+
* }
|
|
152
|
+
* }
|
|
153
|
+
*
|
|
154
|
+
* return (
|
|
155
|
+
* <button onClick={handleToggle}>
|
|
156
|
+
* {isPaused ? '播放' : '暂停'}
|
|
157
|
+
* </button>
|
|
158
|
+
* )
|
|
159
|
+
* }
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
51
162
|
export declare function useVreoPausedState(): boolean;
|
package/lib/react/index.js
CHANGED
|
@@ -1,29 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.VreoProvider = void 0;
|
|
9
|
-
exports.useVreoAction = useVreoAction;
|
|
10
|
-
exports.useVreoEventCallback = useVreoEventCallback;
|
|
11
|
-
exports.useVreoPausedState = useVreoPausedState;
|
|
12
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
-
var _react = require("@realsee/five/react");
|
|
14
|
-
var React = _interopRequireWildcard(require("react"));
|
|
15
|
-
var _Player = require("../Player");
|
|
16
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) { "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); } return f; })(e, t); }
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
|
+
import { unsafe__useFiveInstance } from '@realsee/five/react';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { Player } from "../Player/index.js";
|
|
17
5
|
var VreoContext = /*#__PURE__*/React.createContext(null);
|
|
18
|
-
|
|
19
|
-
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* VreoProvider 组件的属性接口
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Vreo 播放器 Provider 组件
|
|
13
|
+
*
|
|
14
|
+
* 为子组件提供 Vreo 播放器实例的 React Context Provider。
|
|
15
|
+
* 必须在 Five Provider 内部使用。
|
|
16
|
+
*
|
|
17
|
+
* @param props - 组件属性
|
|
18
|
+
* @returns React.FC 组件
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```tsx
|
|
22
|
+
* <FiveProvider>
|
|
23
|
+
* <VreoProvider configs={{ autoPreload: true }}>
|
|
24
|
+
* <YourComponent />
|
|
25
|
+
* </VreoProvider>
|
|
26
|
+
* </FiveProvider>
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export var VreoProvider = function VreoProvider(props) {
|
|
30
|
+
var five = unsafe__useFiveInstance();
|
|
20
31
|
var _React$useState = React.useState(null),
|
|
21
|
-
_React$useState2 = (
|
|
32
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
22
33
|
player = _React$useState2[0],
|
|
23
34
|
setPlayer = _React$useState2[1];
|
|
24
35
|
var playerRef = React.useRef(null);
|
|
25
36
|
React.useEffect(function () {
|
|
26
|
-
playerRef.current = new
|
|
37
|
+
playerRef.current = new Player(five, props.configs || {});
|
|
27
38
|
setPlayer(playerRef.current);
|
|
28
39
|
return function () {
|
|
29
40
|
var _playerRef$current;
|
|
@@ -35,6 +46,29 @@ var VreoProvider = exports.VreoProvider = function VreoProvider(props) {
|
|
|
35
46
|
value: player
|
|
36
47
|
}, props.children);
|
|
37
48
|
};
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* 获取 Vreo 播放器实例
|
|
52
|
+
*
|
|
53
|
+
* 从 React Context 中获取当前的 Vreo 播放器实例。
|
|
54
|
+
* 必须在 VreoProvider 内部使用。
|
|
55
|
+
*
|
|
56
|
+
* @returns Player 播放器实例
|
|
57
|
+
* @throws 如果未找到 VreoProvider 则抛出错误
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```tsx
|
|
61
|
+
* function MyComponent() {
|
|
62
|
+
* const player = useVreoInstance()
|
|
63
|
+
*
|
|
64
|
+
* const handleLoad = () => {
|
|
65
|
+
* player.load(vreoUnit)
|
|
66
|
+
* }
|
|
67
|
+
*
|
|
68
|
+
* return <button onClick={handleLoad}>Load Script</button>
|
|
69
|
+
* }
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
38
72
|
function useVreoInstance() {
|
|
39
73
|
var context = React.useContext(VreoContext);
|
|
40
74
|
if (!context) {
|
|
@@ -47,7 +81,36 @@ function useVreoInstance() {
|
|
|
47
81
|
* VreoPlayer 命令集合。
|
|
48
82
|
*/
|
|
49
83
|
|
|
50
|
-
|
|
84
|
+
/**
|
|
85
|
+
* 获取 Vreo 播放器操作函数集合
|
|
86
|
+
*
|
|
87
|
+
* 返回一组经过优化的播放器操作函数,这些函数已经绑定了当前播放器实例。
|
|
88
|
+
* 使用 useCallback 进行性能优化,避免不必要的重新渲染。
|
|
89
|
+
*
|
|
90
|
+
* @returns VreoActionCallbacks 操作函数集合
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```tsx
|
|
94
|
+
* function PlayerControls() {
|
|
95
|
+
* const { load, play, pause, show, hide, dispose } = useVreoAction()
|
|
96
|
+
*
|
|
97
|
+
* const handleLoadScript = async () => {
|
|
98
|
+
* await load(vreoUnit, 0)
|
|
99
|
+
* play()
|
|
100
|
+
* }
|
|
101
|
+
*
|
|
102
|
+
* return (
|
|
103
|
+
* <div>
|
|
104
|
+
* <button onClick={handleLoadScript}>加载并播放</button>
|
|
105
|
+
* <button onClick={pause}>暂停</button>
|
|
106
|
+
* <button onClick={() => show()}>显示</button>
|
|
107
|
+
* <button onClick={() => hide()}>隐藏</button>
|
|
108
|
+
* </div>
|
|
109
|
+
* )
|
|
110
|
+
* }
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
export function useVreoAction() {
|
|
51
114
|
var player = useVreoInstance();
|
|
52
115
|
var load = React.useCallback(function (vreoUnit, currentTime) {
|
|
53
116
|
return player.load(vreoUnit, currentTime);
|
|
@@ -76,7 +139,37 @@ function useVreoAction() {
|
|
|
76
139
|
dispose: dispose
|
|
77
140
|
};
|
|
78
141
|
}
|
|
79
|
-
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* 监听 Vreo 播放器事件
|
|
145
|
+
*
|
|
146
|
+
* 用于注册和清理 Vreo 播放器事件监听器的 React Hook。
|
|
147
|
+
* 当组件卸载或依赖项变化时自动清理事件监听器。
|
|
148
|
+
*
|
|
149
|
+
* @param name - 事件名称
|
|
150
|
+
* @param callback - 事件回调函数
|
|
151
|
+
* @param deps - 依赖项数组(可选)
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ```tsx
|
|
155
|
+
* function EventListener() {
|
|
156
|
+
* const [keyframes, setKeyframes] = React.useState([])
|
|
157
|
+
*
|
|
158
|
+
* // 监听关键帧事件
|
|
159
|
+
* useVreoEventCallback('CameraMovement', (keyframe) => {
|
|
160
|
+
* console.log('相机运镜:', keyframe)
|
|
161
|
+
* })
|
|
162
|
+
*
|
|
163
|
+
* // 监听播放状态变化
|
|
164
|
+
* useVreoEventCallback('playing', () => {
|
|
165
|
+
* console.log('开始播放')
|
|
166
|
+
* }, [])
|
|
167
|
+
*
|
|
168
|
+
* return <div>事件监听组件</div>
|
|
169
|
+
* }
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
export function useVreoEventCallback(name, callback, deps) {
|
|
80
173
|
var player = useVreoInstance();
|
|
81
174
|
var dependencyList = [player, name];
|
|
82
175
|
if (deps !== undefined) {
|
|
@@ -91,10 +184,41 @@ function useVreoEventCallback(name, callback, deps) {
|
|
|
91
184
|
};
|
|
92
185
|
}, dependencyList);
|
|
93
186
|
}
|
|
94
|
-
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* 获取播放器暂停状态
|
|
190
|
+
*
|
|
191
|
+
* 返回当前播放器的暂停状态,并自动响应播放状态变化。
|
|
192
|
+
* 当播放器开始播放或暂停时,状态会自动更新。
|
|
193
|
+
*
|
|
194
|
+
* @returns boolean 是否处于暂停状态
|
|
195
|
+
*
|
|
196
|
+
* @example
|
|
197
|
+
* ```tsx
|
|
198
|
+
* function PlayButton() {
|
|
199
|
+
* const isPaused = useVreoPausedState()
|
|
200
|
+
* const { play, pause } = useVreoAction()
|
|
201
|
+
*
|
|
202
|
+
* const handleToggle = () => {
|
|
203
|
+
* if (isPaused) {
|
|
204
|
+
* play()
|
|
205
|
+
* } else {
|
|
206
|
+
* pause()
|
|
207
|
+
* }
|
|
208
|
+
* }
|
|
209
|
+
*
|
|
210
|
+
* return (
|
|
211
|
+
* <button onClick={handleToggle}>
|
|
212
|
+
* {isPaused ? '播放' : '暂停'}
|
|
213
|
+
* </button>
|
|
214
|
+
* )
|
|
215
|
+
* }
|
|
216
|
+
* ```
|
|
217
|
+
*/
|
|
218
|
+
export function useVreoPausedState() {
|
|
95
219
|
var player = useVreoInstance();
|
|
96
220
|
var _React$useState3 = React.useState(player.paused),
|
|
97
|
-
_React$useState4 = (
|
|
221
|
+
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
98
222
|
state = _React$useState4[0],
|
|
99
223
|
setState = _React$useState4[1];
|
|
100
224
|
useVreoEventCallback('paused', function () {
|
|
@@ -1,32 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var
|
|
13
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
14
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
16
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
17
|
-
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
18
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
19
|
-
var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
|
|
20
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
21
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
22
|
-
function _createSuper(t) { var r = _isNativeReflectConstruct(); return function () { var e, o = (0, _getPrototypeOf2["default"])(t); if (r) { var s = (0, _getPrototypeOf2["default"])(this).constructor; e = Reflect.construct(o, arguments, s); } else e = o.apply(this, arguments); return (0, _possibleConstructorReturn2["default"])(this, e); }; }
|
|
1
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
2
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
3
|
+
import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized";
|
|
4
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
5
|
+
import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
|
|
6
|
+
import _get from "@babel/runtime/helpers/esm/get";
|
|
7
|
+
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
|
|
8
|
+
import _wrapNativeSuper from "@babel/runtime/helpers/esm/wrapNativeSuper";
|
|
9
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
10
|
+
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
11
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
12
|
+
function _createSuper(t) { var r = _isNativeReflectConstruct(); return function () { var e, o = _getPrototypeOf(t); if (r) { var s = _getPrototypeOf(this).constructor; e = Reflect.construct(o, arguments, s); } else e = o.apply(this, arguments); return _possibleConstructorReturn(this, e); }; }
|
|
23
13
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
24
14
|
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=';
|
|
25
15
|
// 下面这段空音频居然在11pro和xr上播不出来
|
|
26
16
|
// const blankAudioSrc = 'data:audio/mpeg;base64,//AAAAHGZ0eXBNNEEgAAAAAE00QSBpc29tbXA0MgAAAAFtZGF0AAAAAAAAABwA0AAHANAABwDQAAcAAAM+bW9vdgAAAGxtdmhkAAAAAN+jti7fo7YuAACsRAAADAAAAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAdB0cmFrAAAAXHRraGQAAAAB36O2Lt+jti4AAAABAAAAAAAADAAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAFsbWRpYQAAACBtZGhkAAAAAN+jti7fo7YuAACsRAAADABVxAAAAAAAMWhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAABDb3JlIE1lZGlhIEF1ZGlvAAAAARNtaW5mAAAAEHNtaGQAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAANdzdGJsAAAAZ3N0c2QAAAAAAAAAAQAAAFdtcDRhAAAAAAAAAAEAAAAAAAAAAAACABAAAAAArEQAAAAAADNlc2RzAAAAAAOAgIAiAAAABICAgBRAFAAYAAAA+gAAAPoABYCAgAISCAaAgIABAgAAABhzdHRzAAAAAAAAAAEAAAADAAAEAAAAABxzdHNjAAAAAAAAAAEAAAABAAAAAwAAAAEAAAAgc3RzegAAAAAAAAAAAAAAAwAAAAQAAAAEAAAABAAAABRzdGNvAAAAAAAAAAEAAAAsAAAA+nVkdGEAAADybWV0YQAAAAAAAAAiaGRscgAAAAAAAAAAbWRpcgAAAAAAAAAAAAAAAAAAAAAAxGlsc3QAAAC8LS0tLQAAABxtZWFuAAAAAGNvbS5hcHBsZS5pVHVuZXMAAAAUbmFtZQAAAABpVHVuU01QQgAAAIRkYXRhAAAAAQAAAAAgMDAwMDAwMDAgMDAwMDA4NDAgMDAwMDAzQzAgMDAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMA=='
|
|
27
17
|
|
|
28
|
-
var audioList =
|
|
29
|
-
function getAudio(src) {
|
|
18
|
+
export var audioList = [];
|
|
19
|
+
export function getAudio(src) {
|
|
30
20
|
var audio = audioList.find(function (audio) {
|
|
31
21
|
return !audio.realSrc || audio.realSrc === blankAudioSrc;
|
|
32
22
|
});
|
|
@@ -40,17 +30,17 @@ function getAudio(src) {
|
|
|
40
30
|
}
|
|
41
31
|
return audio;
|
|
42
32
|
}
|
|
43
|
-
function waitForBlankAudioGenerated() {
|
|
33
|
+
export function waitForBlankAudioGenerated() {
|
|
44
34
|
return _waitForBlankAudioGenerated.apply(this, arguments);
|
|
45
35
|
}
|
|
46
36
|
function _waitForBlankAudioGenerated() {
|
|
47
|
-
_waitForBlankAudioGenerated = (
|
|
37
|
+
_waitForBlankAudioGenerated = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
48
38
|
var checkInterval,
|
|
49
39
|
timeout,
|
|
50
40
|
startTime,
|
|
51
41
|
isTimedOut,
|
|
52
42
|
_args = arguments;
|
|
53
|
-
return
|
|
43
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
54
44
|
while (1) {
|
|
55
45
|
switch (_context.prev = _context.next) {
|
|
56
46
|
case 0:
|
|
@@ -92,7 +82,7 @@ function _waitForBlankAudioGenerated() {
|
|
|
92
82
|
}));
|
|
93
83
|
return _waitForBlankAudioGenerated.apply(this, arguments);
|
|
94
84
|
}
|
|
95
|
-
function generateBlankAudio(length) {
|
|
85
|
+
export function generateBlankAudio(length) {
|
|
96
86
|
// 判断一下已经生成几个了,防止重复生成
|
|
97
87
|
var generateLength = length - audioList.length;
|
|
98
88
|
if (generateLength <= 0) return;
|
|
@@ -111,21 +101,21 @@ function initAudio(audio) {
|
|
|
111
101
|
}
|
|
112
102
|
}
|
|
113
103
|
var IAudio = /*#__PURE__*/function (_Audio) {
|
|
114
|
-
(
|
|
104
|
+
_inherits(IAudio, _Audio);
|
|
115
105
|
var _super = _createSuper(IAudio);
|
|
116
106
|
function IAudio(src) {
|
|
117
107
|
var _thisSuper, _this;
|
|
118
|
-
(
|
|
108
|
+
_classCallCheck(this, IAudio);
|
|
119
109
|
_this = _super.call(this, src);
|
|
120
|
-
(
|
|
121
|
-
(
|
|
122
|
-
(
|
|
110
|
+
_defineProperty(_assertThisInitialized(_this), "preload", 'auto');
|
|
111
|
+
_defineProperty(_assertThisInitialized(_this), "realSrc", '');
|
|
112
|
+
_defineProperty(_assertThisInitialized(_this), "inited", false);
|
|
123
113
|
_this.realSrc = src !== null && src !== void 0 ? src : '';
|
|
124
|
-
(
|
|
114
|
+
_get((_thisSuper = _assertThisInitialized(_this), _getPrototypeOf(IAudio.prototype)), "addEventListener", _thisSuper).call(_thisSuper, 'ended', function () {
|
|
125
115
|
_this.src = '';
|
|
126
116
|
});
|
|
127
117
|
var init = function init() {
|
|
128
|
-
return initAudio((
|
|
118
|
+
return initAudio(_assertThisInitialized(_this));
|
|
129
119
|
};
|
|
130
120
|
document.addEventListener('click', init);
|
|
131
121
|
document.addEventListener('touchend', init);
|
|
@@ -135,7 +125,7 @@ var IAudio = /*#__PURE__*/function (_Audio) {
|
|
|
135
125
|
};
|
|
136
126
|
return _this;
|
|
137
127
|
}
|
|
138
|
-
(
|
|
128
|
+
_createClass(IAudio, [{
|
|
139
129
|
key: "src",
|
|
140
130
|
get:
|
|
141
131
|
/**
|
|
@@ -156,4 +146,4 @@ var IAudio = /*#__PURE__*/function (_Audio) {
|
|
|
156
146
|
}
|
|
157
147
|
}]);
|
|
158
148
|
return IAudio;
|
|
159
|
-
}(/*#__PURE__*/(
|
|
149
|
+
}(/*#__PURE__*/_wrapNativeSuper(Audio));
|