@realsee/vreo 2.6.4-alpha.1 → 2.6.4-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.
Files changed (134) hide show
  1. package/lib/PlayController/createHTMLAudioElement.js +10 -14
  2. package/lib/PlayController/index.js +63 -73
  3. package/lib/Player/App.js +2 -2
  4. package/lib/Player/AudioFocus.d.ts +36 -0
  5. package/lib/Player/AudioFocus.js +139 -0
  6. package/lib/Player/Controller.d.ts +6 -0
  7. package/lib/Player/Controller.js +93 -62
  8. package/lib/Player/custom/SpatialScenePanel/index.js +34 -11
  9. package/lib/Player/index.d.ts +8 -2
  10. package/lib/Player/index.js +182 -123
  11. package/lib/Player/modules/Drawer/index.js +1 -2
  12. package/lib/Player/modules/VideoAgent/VideoAgentMesh.d.ts +8 -1
  13. package/lib/Player/modules/VideoAgent/VideoAgentMesh.js +173 -203
  14. package/lib/Player/modules/VideoAgent/VideoAgentScene.d.ts +1 -0
  15. package/lib/Player/modules/VideoAgent/VideoAgentScene.js +6 -2
  16. package/lib/Player/modules/VideoAgent/index.js +10 -2
  17. package/lib/Player/modules/keyframes/BgMusic/index.js +46 -74
  18. package/lib/Player/modules/keyframes/CameraMovement/index.js +43 -45
  19. package/lib/Player/modules/keyframes/InfoPanel/index.js +37 -32
  20. package/lib/Player/modules/keyframes/ModelVideo/index.js +98 -57
  21. package/lib/Player/modules/keyframes/PanoTag/index.js +1 -1
  22. package/lib/Player/modules/keyframes/PanoTextLabel/index.js +3 -3
  23. package/lib/Player/modules/keyframes/UpdateVRPanorama/index.js +3 -3
  24. package/lib/Player/modules/keyframes/VideoEffect/index.js +87 -74
  25. package/lib/Player/typings.d.ts +3 -0
  26. package/lib/fivePlugins/CSS3DRenderPlugin/index.js +6 -6
  27. package/lib/fivePlugins/CameraMovementPlugin/index.js +173 -180
  28. package/lib/fivePlugins/CameraMovementPlugin/typings.js +6 -6
  29. package/lib/fivePlugins/ModelTVVideoPlugin/index.d.ts +2 -0
  30. package/lib/fivePlugins/ModelTVVideoPlugin/index.js +87 -43
  31. package/lib/index.d.ts +1 -0
  32. package/lib/react/index.js +1 -1
  33. package/lib/shared-utils/Audio.js +53 -56
  34. package/lib/shared-utils/AudioLike.js +12 -14
  35. package/lib/shared-utils/animationFrame/BetterTween.js +13 -15
  36. package/lib/shared-utils/animationFrame/tween.js +1 -3
  37. package/lib/shared-utils/getMediaInfo.js +0 -1
  38. package/lib/typings/VreoUnit.js +134 -27
  39. package/package.json +6 -4
  40. package/docs/.nojekyll +0 -1
  41. package/docs/assets/custom.css +0 -78
  42. package/docs/assets/hierarchy.js +0 -1
  43. package/docs/assets/highlight.css +0 -127
  44. package/docs/assets/icons.js +0 -18
  45. package/docs/assets/icons.svg +0 -1
  46. package/docs/assets/main.js +0 -60
  47. package/docs/assets/navigation.js +0 -1
  48. package/docs/assets/search.js +0 -1
  49. package/docs/assets/style.css +0 -1640
  50. package/docs/classes/Player.AudioLike.html +0 -15
  51. package/docs/classes/Player.Controller.html +0 -87
  52. package/docs/classes/Player.Player.html +0 -54
  53. package/docs/classes/Player.VideoAgentMesh.html +0 -72
  54. package/docs/classes/Player.VideoAgentScene.html +0 -9
  55. package/docs/demo/assets/AppReact-CkuqZtcS.js +0 -1
  56. package/docs/demo/assets/default-BQGCQRLt.css +0 -1
  57. package/docs/demo/assets/default-CVvVdmSW.js +0 -5540
  58. package/docs/demo/assets/dynamic-CO5wq52h.js +0 -1
  59. package/docs/demo/assets/examples-BCLzFApO.css +0 -1
  60. package/docs/demo/assets/examples-DfiAz2fR.js +0 -25
  61. package/docs/demo/assets/index-CBBSwaYT.js +0 -1
  62. package/docs/demo/assets/index-CmEXi2sK.css +0 -1
  63. package/docs/demo/assets/main-BF1tvUg-.js +0 -25
  64. package/docs/demo/assets/react-BnzBLum3.css +0 -1
  65. package/docs/demo/assets/react-C4h9qndP.js +0 -25
  66. package/docs/demo/examples.html +0 -16
  67. package/docs/demo/index-react-dynamic.html +0 -18
  68. package/docs/demo/index-react.html +0 -19
  69. package/docs/demo/index.html +0 -19
  70. package/docs/enums/Player.InfoPanelStyleEnum.html +0 -3
  71. package/docs/enums/Player.InfoPanelTypeEnum.html +0 -4
  72. package/docs/enums/Player.PanoEffectEnum.html +0 -4
  73. package/docs/enums/Player.PanoTagEnum.html +0 -4
  74. package/docs/enums/Player.PanoTagStyleEnum.html +0 -6
  75. package/docs/enums/Player.VreoKeyframeEnum.html +0 -25
  76. package/docs/enums/fivePlugins.CameraMovementEffect.html +0 -3
  77. package/docs/enums/fivePlugins.Rotation.html +0 -4
  78. package/docs/functions/custom.SpatialScenePanel.html +0 -2
  79. package/docs/functions/react.useVreoAction.html +0 -8
  80. package/docs/functions/react.useVreoEventCallback.html +0 -10
  81. package/docs/functions/react.useVreoPausedState.html +0 -8
  82. package/docs/hierarchy.html +0 -1
  83. package/docs/index.html +0 -160
  84. package/docs/interfaces/Player.Appearance.html +0 -2
  85. package/docs/interfaces/Player.CustomVreoKeyframeProps.html +0 -3
  86. package/docs/interfaces/Player.PlayerConfigs.html +0 -20
  87. package/docs/interfaces/Player.Vertex.html +0 -5
  88. package/docs/interfaces/Player.VideoAgentMeshOptions.html +0 -9
  89. package/docs/interfaces/Player.VreoKeyframe.html +0 -8
  90. package/docs/interfaces/Player.VreoUnit.html +0 -9
  91. package/docs/interfaces/Player.VreoVideo.html +0 -7
  92. package/docs/interfaces/fivePlugins.CSS3DRenderPluginExportType.html +0 -8
  93. package/docs/interfaces/fivePlugins.CameraMovementOptsCallback.html +0 -3
  94. package/docs/interfaces/fivePlugins.CameraMovementPluginExportType.html +0 -5
  95. package/docs/interfaces/fivePlugins.CameraMovementPluginParameterType.html +0 -1
  96. package/docs/interfaces/fivePlugins.ModelTVVideoPluginData.html +0 -5
  97. package/docs/interfaces/fivePlugins.ModelTVVideoPluginExportType.html +0 -4
  98. package/docs/interfaces/fivePlugins.ModelTVVideoPluginParameterType.html +0 -2
  99. package/docs/interfaces/fivePlugins.Vector3Position.html +0 -5
  100. package/docs/interfaces/react.VreoActionCallbacks.html +0 -18
  101. package/docs/interfaces/react.VreoProviderProps.html +0 -6
  102. package/docs/modules/Player.html +0 -1
  103. package/docs/modules/custom.html +0 -1
  104. package/docs/modules/fivePlugins.html +0 -1
  105. package/docs/modules/react.html +0 -1
  106. package/docs/modules.html +0 -1
  107. package/docs/types/Player.AppSize.html +0 -1
  108. package/docs/types/Player.AudioLikeEvent.html +0 -6
  109. package/docs/types/Player.CameraMovementData.html +0 -2
  110. package/docs/types/Player.CustomData.html +0 -2
  111. package/docs/types/Player.InfoPanelData.html +0 -7
  112. package/docs/types/Player.ModelVideoData.html +0 -9
  113. package/docs/types/Player.PanoEffectData.html +0 -4
  114. package/docs/types/Player.PanoTagData.html +0 -6
  115. package/docs/types/Player.PanoTextLabelData.html +0 -7
  116. package/docs/types/Player.PrompterData.html +0 -3
  117. package/docs/types/Player.QuadrangleVertexs.html +0 -2
  118. package/docs/types/Player.Quaternion.html +0 -6
  119. package/docs/types/Player.UpdateVRPanoramaData.html +0 -7
  120. package/docs/types/Player.Vertexs.html +0 -2
  121. package/docs/types/Player.VideoEffectData.html +0 -7
  122. package/docs/types/Player.VreoKeyframeEvent.html +0 -2
  123. package/docs/types/Player.VreoKeyframeMap.html +0 -6
  124. package/docs/types/Player.VreoSubscribe.html +0 -1
  125. package/docs/types/Player.WaveAppearance.html +0 -1
  126. package/docs/types/fivePlugins.CSS3DRenderPluginParameterType.html +0 -1
  127. package/docs/types/fivePlugins.MoveArgs.html +0 -1
  128. package/docs/types/fivePlugins.MoveOpts.html +0 -1
  129. package/docs/types/fivePlugins.RotateArgs.html +0 -1
  130. package/docs/types/fivePlugins.RotateOpts.html +0 -1
  131. package/docs/variables/fivePlugins.CSS3DRenderPlugin.html +0 -3
  132. package/docs/variables/fivePlugins.CameraMovementPlugin.html +0 -2
  133. package/docs/variables/fivePlugins.ModelTVVideoPlugin.html +0 -1
  134. package/docs/variables/react.VreoProvider.html +0 -9
@@ -1,5 +1,6 @@
1
1
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
2
- import _regeneratorRuntime from "@babel/runtime/regenerator";
2
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
3
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
3
4
  var BLANK_AUDIO = '' + 'data:audio/mpeg;base64,' + '//uQxAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAADAAAGhgBVVVVVVVVVVVVVVVVVVVVVVVV' + 'VVVVVVVVVVVVVVVVVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr///////////' + '////////////////////////////////8AAAA5TEFNRTMuOThyAc0AAAAAAAAAABSAJAiqQgAAg' + 'AAABobxtI73AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//uQxAACFEII9ACZ/sJZwWEoEb8w/////N//////Jcxj' + 'Hjf+7/v/H2PzCCFAiDtGeyBCIx7bJJ1mmEEMy6g8mm2c8nrGABB4h2Mkmn//4z/73u773R5qHHu' + '/j/w7Kxkzh5lWRWdsifCkNAnY9Zc1HvDAhjhSHdFkHFzLmabt/AQxSg2wwzLhHIJOBnAWwVY4zr' + 'hIYhhc2kvhYDfQ4hDi2Gmh5KyFn8EcGIrHAngNgIwVIEMf5bzbAiTRoAD///8z/KVhkkWEle6IX' + '+d/z4fvH3BShK1e5kmjkCMoxVmXhd4ROlTKo3iipasvTilY21q19ta30/v/0/idPX1v8PNxJL6r' + 'amnOVsdvMv2akO0iSYIzdJFirtzWXCZicS9vHqvSKyqm5XJBdqBwPxyfJdykhWTZ0G0ZyTZGpLK' + 'xsNwwoRhsx3tZfhwmeOBVISm3impAC/IT/8hP/EKEM1KMdVdVKM2rHV4x7HVXZvbVVKN/qq8CiV' + '9VL9jjH/6l6qf7MBCjZmOqsAibjcP+qqqv0oxqpa/NVW286hPo1nz2L/h8+jXt//uSxCmDU2IK/' + 'ECN98KKtE5IYzNoCfbw+u9i5r8PoadUMFPKqWL4LK3T/LCraMSHGkW4bpLXR/E6LlHOVQxmslKV' + 'J8IULktMN06N0FKCpHCoYsjC4F+Z0NVqdNFoGSTjSiyjzLdnZ2fNqTi2eHKONONKLMPMKLONKLM' + 'PQRJGlFxZRoKcJFAYEeIFiRQkUWUeYfef//Ko04soswso40UJAgMw8wosososy0EalnZyjQUGBR' + 'QGIFggOWUacWUeYmuadrZziQKKEgQsQLAhQkUJAgMQDghltLO1onp0cpkNInSFMqlYeSEJ5AHsq' + 'FdOwy1DA2sRmRJKxdKRfLhfLw5BzUxBTUUzLjk4LjJVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV' + 'VVVVVVVVVVVVVVVVVUxBTUUzLjk4LjJVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV' + 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV' + 'VVVVVVVVVVVVVVVVVVVf/7ksRRA8AAAaQAAAAgAAA0gAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVV' + 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV' + 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV' + 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV' + 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV' + 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV' + 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV' + 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=';
4
5
  export function createHTMLAudioElement() {
5
6
  var ndAudio = document.querySelector('#vreo-playController-audio');
@@ -14,19 +15,14 @@ export function createHTMLAudioElement() {
14
15
  audio.src = BLANK_AUDIO;
15
16
 
16
17
  // 触发一次播放
17
- Promise.resolve( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
18
- return _regeneratorRuntime.wrap(function _callee$(_context) {
19
- while (1) {
20
- switch (_context.prev = _context.next) {
21
- case 0:
22
- _context.next = 2;
23
- return audio.play();
24
- case 2:
25
- return _context.abrupt("return", _context.sent);
26
- case 3:
27
- case "end":
28
- return _context.stop();
29
- }
18
+ Promise.resolve(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
19
+ return _regenerator().w(function (_context) {
20
+ while (1) switch (_context.n) {
21
+ case 0:
22
+ _context.n = 1;
23
+ return audio.play();
24
+ case 1:
25
+ return _context.a(2, _context.v);
30
26
  }
31
27
  }, _callee);
32
28
  })));
@@ -1,27 +1,25 @@
1
1
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
2
2
  import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
3
  import _createClass from "@babel/runtime/helpers/esm/createClass";
4
- import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized";
5
- import _inherits from "@babel/runtime/helpers/esm/inherits";
6
4
  import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
7
5
  import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
6
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
8
7
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
9
- import _regeneratorRuntime from "@babel/runtime/regenerator";
10
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
11
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
8
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
9
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
10
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
11
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
12
12
  import { Subscribe } from '@realsee/five';
13
13
  import { requestAnimationFrameInterval } from "../shared-utils/animationFrame/index.js";
14
14
  import { createHTMLAudioElement } from "./createHTMLAudioElement.js";
15
15
  var closures = {};
16
16
  export var PlayController = /*#__PURE__*/function (_Subscribe) {
17
- _inherits(PlayController, _Subscribe);
18
- var _super = _createSuper(PlayController);
19
17
  function PlayController() {
20
18
  var _this;
21
19
  var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
22
20
  _classCallCheck(this, PlayController);
23
- _this = _super.call(this);
24
- _defineProperty(_assertThisInitialized(_this), "config", {});
21
+ _this = _callSuper(this, PlayController);
22
+ _defineProperty(_this, "config", {});
25
23
  if (!config.audio) {
26
24
  config.audio = createHTMLAudioElement();
27
25
  }
@@ -65,7 +63,8 @@ export var PlayController = /*#__PURE__*/function (_Subscribe) {
65
63
  /**
66
64
  * 载入数据
67
65
  */
68
- _createClass(PlayController, [{
66
+ _inherits(PlayController, _Subscribe);
67
+ return _createClass(PlayController, [{
69
68
  key: "paused",
70
69
  get: function get() {
71
70
  return this.audioInstance.paused;
@@ -104,40 +103,35 @@ export var PlayController = /*#__PURE__*/function (_Subscribe) {
104
103
  }
105
104
  }, {
106
105
  key: "load",
107
- value: function () {
108
- var _load = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(vreoUnit) {
106
+ value: (function () {
107
+ var _load = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(vreoUnit) {
109
108
  var _this3 = this;
110
- return _regeneratorRuntime.wrap(function _callee$(_context) {
111
- while (1) {
112
- switch (_context.prev = _context.next) {
113
- case 0:
114
- this.vreoUnit = vreoUnit;
115
- _context.next = 3;
116
- return this.pause();
117
- case 3:
118
- _context.next = 5;
119
- return new Promise(function (resolve, reject) {
120
- if (vreoUnit.video.url === _this3.audioInstance.src) {
121
- return resolve(true);
122
- }
123
- _this3.audioInstance.src = vreoUnit.video.url;
124
- var canplaythrough = function canplaythrough() {
125
- resolve(true);
126
- _this3.audioInstance.removeEventListener('canplaythrough', canplaythrough);
127
- };
128
- var error = function error(err) {
129
- reject(err);
130
- _this3.audioInstance.removeEventListener('error', error);
131
- };
132
- _this3.audioInstance.addEventListener('canplaythrough', canplaythrough);
133
- _this3.audioInstance.addEventListener('error', error);
134
- });
135
- case 5:
136
- return _context.abrupt("return", _context.sent);
137
- case 6:
138
- case "end":
139
- return _context.stop();
140
- }
109
+ return _regenerator().w(function (_context) {
110
+ while (1) switch (_context.n) {
111
+ case 0:
112
+ this.vreoUnit = vreoUnit;
113
+ _context.n = 1;
114
+ return this.pause();
115
+ case 1:
116
+ _context.n = 2;
117
+ return new Promise(function (resolve, reject) {
118
+ if (vreoUnit.video.url === _this3.audioInstance.src) {
119
+ return resolve(true);
120
+ }
121
+ _this3.audioInstance.src = vreoUnit.video.url;
122
+ var _canplaythrough = function canplaythrough() {
123
+ resolve(true);
124
+ _this3.audioInstance.removeEventListener('canplaythrough', _canplaythrough);
125
+ };
126
+ var _error = function error(err) {
127
+ reject(err);
128
+ _this3.audioInstance.removeEventListener('error', _error);
129
+ };
130
+ _this3.audioInstance.addEventListener('canplaythrough', _canplaythrough);
131
+ _this3.audioInstance.addEventListener('error', _error);
132
+ });
133
+ case 2:
134
+ return _context.a(2, _context.v);
141
135
  }
142
136
  }, _callee, this);
143
137
  }));
@@ -149,19 +143,17 @@ export var PlayController = /*#__PURE__*/function (_Subscribe) {
149
143
  /**
150
144
  * 播放
151
145
  */
146
+ )
152
147
  }, {
153
148
  key: "play",
154
- value: function () {
155
- var _play = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
156
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
157
- while (1) {
158
- switch (_context2.prev = _context2.next) {
159
- case 0:
160
- closures.playPromise = this.audioInstance.play();
161
- case 1:
162
- case "end":
163
- return _context2.stop();
164
- }
149
+ value: (function () {
150
+ var _play = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
151
+ return _regenerator().w(function (_context2) {
152
+ while (1) switch (_context2.n) {
153
+ case 0:
154
+ closures.playPromise = this.audioInstance.play();
155
+ case 1:
156
+ return _context2.a(2);
165
157
  }
166
158
  }, _callee2, this);
167
159
  }));
@@ -173,26 +165,24 @@ export var PlayController = /*#__PURE__*/function (_Subscribe) {
173
165
  /**
174
166
  * 暂停
175
167
  */
168
+ )
176
169
  }, {
177
170
  key: "pause",
178
- value: function () {
179
- var _pause = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
180
- return _regeneratorRuntime.wrap(function _callee3$(_context3) {
181
- while (1) {
182
- switch (_context3.prev = _context3.next) {
183
- case 0:
184
- if (!closures.playPromise) {
185
- _context3.next = 3;
186
- break;
187
- }
188
- _context3.next = 3;
189
- return closures.playPromise;
190
- case 3:
191
- this.audioInstance.pause();
192
- case 4:
193
- case "end":
194
- return _context3.stop();
195
- }
171
+ value: (function () {
172
+ var _pause = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
173
+ return _regenerator().w(function (_context3) {
174
+ while (1) switch (_context3.n) {
175
+ case 0:
176
+ if (!closures.playPromise) {
177
+ _context3.n = 1;
178
+ break;
179
+ }
180
+ _context3.n = 1;
181
+ return closures.playPromise;
182
+ case 1:
183
+ this.audioInstance.pause();
184
+ case 2:
185
+ return _context3.a(2);
196
186
  }
197
187
  }, _callee3, this);
198
188
  }));
@@ -207,6 +197,7 @@ export var PlayController = /*#__PURE__*/function (_Subscribe) {
207
197
  *
208
198
  * @deprecated **慎重执行**
209
199
  */
200
+ )
210
201
  }, {
211
202
  key: "dispose",
212
203
  value: function dispose() {
@@ -219,5 +210,4 @@ export var PlayController = /*#__PURE__*/function (_Subscribe) {
219
210
  }
220
211
  }
221
212
  }]);
222
- return PlayController;
223
213
  }(Subscribe);
package/lib/Player/App.js CHANGED
@@ -36,9 +36,9 @@ var AppView = observer(function (_ref) {
36
36
  return;
37
37
  }
38
38
  if (controller.playing) {
39
- controller.setPlaying(false);
39
+ controller.audioFocus.cancel('paused');
40
40
  } else {
41
- controller.setPlaying(true);
41
+ if (controller.audioFocus.acquire('user')) controller.setPlaying(true);
42
42
  }
43
43
  },
44
44
  options: ((_controller$configs3 = controller.configs) === null || _controller$configs3 === void 0 ? void 0 : _controller$configs3.videoAgentMeshOptions) || {}
@@ -0,0 +1,36 @@
1
+ export type AudioIntent = 'user' | 'auto';
2
+ export type AudioStopReason = 'preempted' | 'paused' | 'closed' | 'replaced' | 'disposed';
3
+ export interface AudioLease {
4
+ readonly signal: AbortSignal;
5
+ isCurrent(): boolean;
6
+ release(): void;
7
+ }
8
+ export interface AudioSource {
9
+ acquire(intent: AudioIntent): AudioLease | null;
10
+ cancel(reason: AudioStopReason): void;
11
+ dispose(): void;
12
+ }
13
+ export interface AudioFocusHost {
14
+ register(options: {
15
+ label: string;
16
+ stop(reason: AudioStopReason): void;
17
+ }): AudioSource;
18
+ }
19
+ /** One narration owns the outer lease; member tracks never compete with it. */
20
+ export declare class NarrationAudioFocus {
21
+ private onStop;
22
+ private disposed;
23
+ private source?;
24
+ private lease?;
25
+ private task?;
26
+ private members;
27
+ constructor(host: AudioFocusHost | undefined, onStop: () => void);
28
+ get active(): boolean;
29
+ capture(): () => boolean;
30
+ acquire(intent: AudioIntent): boolean;
31
+ add(stop: (reason: AudioStopReason) => void): () => void;
32
+ stop(reason: AudioStopReason): void;
33
+ cancel(reason: AudioStopReason): void;
34
+ dispose(): void;
35
+ readonly host: AudioFocusHost;
36
+ }
@@ -0,0 +1,139 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
4
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
5
+ /** One narration owns the outer lease; member tracks never compete with it. */
6
+ export var NarrationAudioFocus = /*#__PURE__*/function () {
7
+ function NarrationAudioFocus(host, onStop) {
8
+ var _this = this;
9
+ _classCallCheck(this, NarrationAudioFocus);
10
+ _defineProperty(this, "disposed", false);
11
+ _defineProperty(this, "members", new Set());
12
+ _defineProperty(this, "host", {
13
+ register: function register(_ref) {
14
+ var stop = _ref.stop;
15
+ var disposed = false;
16
+ var child;
17
+ var cancel = function cancel(reason) {
18
+ var _child;
19
+ (_child = child) === null || _child === void 0 || _child.abort();
20
+ child = undefined;
21
+ stop(reason);
22
+ };
23
+ var remove = _this.add(cancel);
24
+ return {
25
+ acquire: function acquire() {
26
+ var _child2;
27
+ if (disposed || !_this.active) return null;
28
+ (_child2 = child) === null || _child2 === void 0 || _child2.abort();
29
+ var current = child = new AbortController();
30
+ var valid = _this.capture();
31
+ return {
32
+ signal: current.signal,
33
+ isCurrent: function isCurrent() {
34
+ return valid() && child === current && !current.signal.aborted;
35
+ },
36
+ release: function release() {
37
+ if (child === current) {
38
+ current.abort();
39
+ child = undefined;
40
+ }
41
+ }
42
+ };
43
+ },
44
+ cancel: cancel,
45
+ dispose: function dispose() {
46
+ if (disposed) return;
47
+ disposed = true;
48
+ cancel('disposed');
49
+ remove();
50
+ }
51
+ };
52
+ }
53
+ });
54
+ this.onStop = onStop;
55
+ this.source = host === null || host === void 0 ? void 0 : host.register({
56
+ label: 'vreo',
57
+ stop: function stop(reason) {
58
+ return _this.stop(reason);
59
+ }
60
+ });
61
+ }
62
+ return _createClass(NarrationAudioFocus, [{
63
+ key: "active",
64
+ get: function get() {
65
+ var _this$lease;
66
+ return !!this.task && !this.task.signal.aborted && (!this.source || !!((_this$lease = this.lease) !== null && _this$lease !== void 0 && _this$lease.isCurrent()));
67
+ }
68
+ }, {
69
+ key: "capture",
70
+ value: function capture() {
71
+ var _this2 = this;
72
+ var task = this.task;
73
+ return function () {
74
+ return !!task && task === _this2.task && _this2.active;
75
+ };
76
+ }
77
+ }, {
78
+ key: "acquire",
79
+ value: function acquire(intent) {
80
+ var _this$source;
81
+ if (this.disposed) return false;
82
+ if (this.active) return true;
83
+ var lease = (_this$source = this.source) === null || _this$source === void 0 ? void 0 : _this$source.acquire(intent);
84
+ if (this.source && !lease) return false;
85
+ this.lease = lease !== null && lease !== void 0 ? lease : undefined;
86
+ this.task = new AbortController();
87
+ return true;
88
+ }
89
+ }, {
90
+ key: "add",
91
+ value: function add(stop) {
92
+ var _this3 = this;
93
+ this.members.add(stop);
94
+ return function () {
95
+ _this3.members.delete(stop);
96
+ };
97
+ }
98
+ }, {
99
+ key: "stop",
100
+ value: function stop(reason) {
101
+ var _this$task;
102
+ (_this$task = this.task) === null || _this$task === void 0 || _this$task.abort();
103
+ this.task = undefined;
104
+ var errors = [];
105
+ try {
106
+ this.onStop();
107
+ } catch (error) {
108
+ errors.push(error);
109
+ }
110
+ for (var _i = 0, _arr = _toConsumableArray(this.members); _i < _arr.length; _i++) {
111
+ var _stop = _arr[_i];
112
+ try {
113
+ _stop(reason);
114
+ } catch (error) {
115
+ errors.push(error);
116
+ }
117
+ }
118
+ if (errors.length) throw errors[0];
119
+ }
120
+ }, {
121
+ key: "cancel",
122
+ value: function cancel(reason) {
123
+ var _this$source2;
124
+ this.stop(reason);
125
+ (_this$source2 = this.source) === null || _this$source2 === void 0 || _this$source2.cancel(reason);
126
+ this.lease = undefined;
127
+ }
128
+ }, {
129
+ key: "dispose",
130
+ value: function dispose() {
131
+ var _this$source3;
132
+ if (this.disposed) return;
133
+ this.disposed = true;
134
+ this.cancel('disposed');
135
+ (_this$source3 = this.source) === null || _this$source3 === void 0 || _this$source3.dispose();
136
+ this.members.clear();
137
+ }
138
+ }]);
139
+ }();
@@ -1,3 +1,4 @@
1
+ import { NarrationAudioFocus } from './AudioFocus';
1
2
  import { Five, Subscribe } from '@realsee/five';
2
3
  import * as React from 'react';
3
4
  import { VreoKeyframe, VreoKeyframeEnum, VreoKeyframeEvent, VreoUnit, VreoVideo } from '../typings/VreoUnit';
@@ -122,6 +123,10 @@ export declare class Controller extends Subscribe<VreoKeyframeEvent> {
122
123
  * @param params.container - DOM 容器元素
123
124
  * @param params.configs - 播放器配置
124
125
  */
126
+ private resumeGeneration;
127
+ private resuming;
128
+ private disposers;
129
+ readonly audioFocus: NarrationAudioFocus;
125
130
  constructor({ five, container, configs }: {
126
131
  five: Five;
127
132
  container: Element;
@@ -154,6 +159,7 @@ export declare class Controller extends Subscribe<VreoKeyframeEvent> {
154
159
  * @param callback - 关键帧触发时的回调函数
155
160
  */
156
161
  requestAnimationFrameLoop(callback: (type: VreoKeyframeEnum, keyframe: VreoKeyframe, currentTime: number) => void): void;
162
+ private resumeMedia;
157
163
  /**
158
164
  * 开始运行播放器逻辑循环
159
165
  *