@gcorevideo/player 2.20.19 → 2.20.21
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/dist/core.js +18 -14
- package/dist/index.css +1227 -1227
- package/dist/index.js +36 -25
- package/dist/plugins/index.css +600 -600
- package/dist/plugins/index.js +19 -12
- package/lib/playback/HTML5Video.d.ts +1 -1
- package/lib/playback/HTML5Video.d.ts.map +1 -1
- package/lib/playback/HTML5Video.js +17 -13
- package/lib/plugins/source-controller/SourceController.d.ts.map +1 -1
- package/lib/plugins/source-controller/SourceController.js +1 -0
- package/lib/plugins/spinner-three-bounce/SpinnerThreeBounce.d.ts +2 -0
- package/lib/plugins/spinner-three-bounce/SpinnerThreeBounce.d.ts.map +1 -1
- package/lib/plugins/spinner-three-bounce/SpinnerThreeBounce.js +17 -11
- package/package.json +1 -1
- package/src/playback/HTML5Video.ts +18 -13
- package/src/plugins/source-controller/SourceController.ts +1 -0
- package/src/plugins/spinner-three-bounce/SpinnerThreeBounce.ts +19 -10
- package/tsconfig.tsbuildinfo +1 -1
package/dist/plugins/index.js
CHANGED
|
@@ -37249,7 +37249,7 @@ class ClipsPlugin extends UICorePlugin {
|
|
|
37249
37249
|
|
|
37250
37250
|
const templateHtml$1 = "<ul class=\"context-menu-list\">\n <% if(options) { %>\n <% for (var i = 0; i < options.length; i++) { %>\n <li class=\"context-menu-list-item <%= options[i].class %>\"\n data-<%= options[i].name %>><%= options[i].label %></li>\n <% } %>\n <% } %>\n</ul>\n";
|
|
37251
37251
|
|
|
37252
|
-
var version$1 = "2.20.
|
|
37252
|
+
var version$1 = "2.20.21";
|
|
37253
37253
|
|
|
37254
37254
|
var packages = {
|
|
37255
37255
|
"node_modules/@clappr/core": {
|
|
@@ -39730,6 +39730,7 @@ class SpinnerThreeBounce extends UIContainerPlugin {
|
|
|
39730
39730
|
template = tmpl(spinnerHTML);
|
|
39731
39731
|
hasFatalError = false;
|
|
39732
39732
|
hasBuffering = false;
|
|
39733
|
+
_showOnError = false;
|
|
39733
39734
|
constructor(container) {
|
|
39734
39735
|
super(container);
|
|
39735
39736
|
this.listenTo(this.container, Events$1.CONTAINER_STATE_BUFFERING, this.onBuffering);
|
|
@@ -39740,6 +39741,9 @@ class SpinnerThreeBounce extends UIContainerPlugin {
|
|
|
39740
39741
|
this.listenTo(this.container, Events$1.CONTAINER_ERROR, this.onError);
|
|
39741
39742
|
this.listenTo(this.container, Events$1.CONTAINER_READY, this.render);
|
|
39742
39743
|
}
|
|
39744
|
+
showOnError() {
|
|
39745
|
+
this._showOnError = true;
|
|
39746
|
+
}
|
|
39743
39747
|
onBuffering() {
|
|
39744
39748
|
this.hasBuffering = true;
|
|
39745
39749
|
this._show();
|
|
@@ -39755,26 +39759,27 @@ class SpinnerThreeBounce extends UIContainerPlugin {
|
|
|
39755
39759
|
}
|
|
39756
39760
|
onStop() {
|
|
39757
39761
|
trace(`${T$4} onStop`, {
|
|
39758
|
-
showOnError: this.
|
|
39762
|
+
showOnError: this._showOnError,
|
|
39759
39763
|
hasFatalError: this.hasFatalError,
|
|
39760
39764
|
});
|
|
39761
|
-
if (!(this.hasFatalError && this.
|
|
39762
|
-
|
|
39763
|
-
}
|
|
39765
|
+
// if (!(this.hasFatalError && this._showOnError)) {
|
|
39766
|
+
// this._hide()
|
|
39767
|
+
// }
|
|
39768
|
+
this._hide();
|
|
39764
39769
|
}
|
|
39765
39770
|
onError(e) {
|
|
39766
39771
|
this.hasFatalError = e.code === PlaybackErrorCode.MediaSourceUnavailable;
|
|
39767
39772
|
trace(`${T$4} onError`, {
|
|
39768
|
-
showOnError: this.
|
|
39773
|
+
showOnError: this._showOnError,
|
|
39769
39774
|
hasFatalError: this.hasFatalError,
|
|
39770
39775
|
error: e.code,
|
|
39771
39776
|
});
|
|
39772
|
-
if (this.
|
|
39773
|
-
|
|
39774
|
-
}
|
|
39775
|
-
|
|
39776
|
-
|
|
39777
|
-
|
|
39777
|
+
// if (this._showOnError) {
|
|
39778
|
+
// this._show()
|
|
39779
|
+
// } else {
|
|
39780
|
+
// this._hide()
|
|
39781
|
+
// }
|
|
39782
|
+
this._hide();
|
|
39778
39783
|
}
|
|
39779
39784
|
/**
|
|
39780
39785
|
* Shows the spinner.
|
|
@@ -39818,6 +39823,7 @@ class SpinnerThreeBounce extends UIContainerPlugin {
|
|
|
39818
39823
|
* @internal
|
|
39819
39824
|
*/
|
|
39820
39825
|
render() {
|
|
39826
|
+
// TODO control via sourcecontroller instead
|
|
39821
39827
|
const showOnStart = this.options.spinner?.showOnStart;
|
|
39822
39828
|
trace(`${T$4} render`, {
|
|
39823
39829
|
buffering: this.container.buffering});
|
|
@@ -39942,6 +39948,7 @@ class SourceController extends CorePlugin {
|
|
|
39942
39948
|
}
|
|
39943
39949
|
onCoreReady() {
|
|
39944
39950
|
this.core.getPlugin('error_screen')?.disable(); // TODO test
|
|
39951
|
+
// this.core.getPlugin('spinner')?.showOnError()
|
|
39945
39952
|
}
|
|
39946
39953
|
onActiveContainerChanged() {
|
|
39947
39954
|
trace(`${T$3} onActiveContainerChanged`, {
|
|
@@ -2,7 +2,6 @@ import { ErrorOptions } from '@clappr/core';
|
|
|
2
2
|
import { BasePlayback } from './BasePlayback.js';
|
|
3
3
|
export default class HTML5Video extends BasePlayback {
|
|
4
4
|
private stallTimerId;
|
|
5
|
-
private statllTimerId;
|
|
6
5
|
/**
|
|
7
6
|
* @internal
|
|
8
7
|
*/
|
|
@@ -11,5 +10,6 @@ export default class HTML5Video extends BasePlayback {
|
|
|
11
10
|
_onEnded(): void;
|
|
12
11
|
_handleBufferingEvents(): void;
|
|
13
12
|
_onPlaying(): void;
|
|
13
|
+
_onPause(): void;
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=HTML5Video.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HTML5Video.d.ts","sourceRoot":"","sources":["../../src/playback/HTML5Video.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAG3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAQhD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,YAAY;IAClD,OAAO,CAAC,YAAY,CAAuB;
|
|
1
|
+
{"version":3,"file":"HTML5Video.d.ts","sourceRoot":"","sources":["../../src/playback/HTML5Video.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAG3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAQhD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,YAAY;IAClD,OAAO,CAAC,YAAY,CAAuB;IAE3C;;OAEG;IACM,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,YAAY;IAyBlD,UAAU;IAKV,QAAQ;IASR,sBAAsB;IAsBtB,UAAU;IASV,QAAQ;CAQlB"}
|
|
@@ -6,7 +6,6 @@ const T = 'playback.html5_video';
|
|
|
6
6
|
const STALL_TIMEOUT = 15000;
|
|
7
7
|
export default class HTML5Video extends BasePlayback {
|
|
8
8
|
stallTimerId = null;
|
|
9
|
-
statllTimerId = null;
|
|
10
9
|
/**
|
|
11
10
|
* @internal
|
|
12
11
|
*/
|
|
@@ -46,22 +45,19 @@ export default class HTML5Video extends BasePlayback {
|
|
|
46
45
|
trace(`${T} _handleBufferingEvents`, {
|
|
47
46
|
networkState: this.el.networkState,
|
|
48
47
|
});
|
|
49
|
-
if (!this.
|
|
50
|
-
this.
|
|
48
|
+
if (!this.stallTimerId) {
|
|
49
|
+
this.stallTimerId = setTimeout(() => {
|
|
51
50
|
trace(`${T} _handleBufferingEvents stall timeout`, {
|
|
52
51
|
buffering: this.buffering,
|
|
53
52
|
ended: this.ended,
|
|
54
|
-
isPlaying: this.isPlaying,
|
|
55
53
|
});
|
|
56
|
-
this.
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
});
|
|
64
|
-
}
|
|
54
|
+
this.stallTimerId = null;
|
|
55
|
+
this.createError({
|
|
56
|
+
code: PlaybackErrorCode.MediaSourceUnavailable,
|
|
57
|
+
level: PlayerError.Levels.FATAL,
|
|
58
|
+
message: 'Stall timeout',
|
|
59
|
+
description: 'Playback stalled for too long',
|
|
60
|
+
});
|
|
65
61
|
}, STALL_TIMEOUT);
|
|
66
62
|
}
|
|
67
63
|
super._handleBufferingEvents();
|
|
@@ -74,4 +70,12 @@ export default class HTML5Video extends BasePlayback {
|
|
|
74
70
|
}
|
|
75
71
|
super._onPlaying();
|
|
76
72
|
}
|
|
73
|
+
_onPause() {
|
|
74
|
+
trace(`${T} _onPause`);
|
|
75
|
+
super._onPause();
|
|
76
|
+
if (this.stallTimerId) {
|
|
77
|
+
clearTimeout(this.stallTimerId);
|
|
78
|
+
this.stallTimerId = null;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
77
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SourceController.d.ts","sourceRoot":"","sources":["../../../src/plugins/source-controller/SourceController.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACV,KAAK,IAAI,IAAI,UAAU,EACxB,MAAM,cAAc,CAAA;AAwBrB;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAuC9C,OAAO,CAAC,WAAW,CAA8B;IAEjD,OAAO,CAAC,kBAAkB,CAAI;IAE9B,OAAO,CAAC,YAAY,CAA6B;IAEjD,OAAO,CAAC,MAAM,CAAQ;IAEtB,OAAO,CAAC,SAAS,CAAQ;IAEzB,OAAO,CAAC,IAAI,CAAiB;IAE7B;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;gBACS,IAAI,EAAE,UAAU;IAW5B;;OAEG;IACM,UAAU;IAWnB,OAAO,CAAC,WAAW;
|
|
1
|
+
{"version":3,"file":"SourceController.d.ts","sourceRoot":"","sources":["../../../src/plugins/source-controller/SourceController.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACV,KAAK,IAAI,IAAI,UAAU,EACxB,MAAM,cAAc,CAAA;AAwBrB;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAuC9C,OAAO,CAAC,WAAW,CAA8B;IAEjD,OAAO,CAAC,kBAAkB,CAAI;IAE9B,OAAO,CAAC,YAAY,CAA6B;IAEjD,OAAO,CAAC,MAAM,CAAQ;IAEtB,OAAO,CAAC,SAAS,CAAQ;IAEzB,OAAO,CAAC,IAAI,CAAiB;IAE7B;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;gBACS,IAAI,EAAE,UAAU;IAW5B;;OAEG;IACM,UAAU;IAWnB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,wBAAwB;IAoBhC,OAAO,CAAC,2BAA2B;IAwCnC,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACH,MAAM,KAAK,OAAO,WAEjB;CACF"}
|
|
@@ -110,6 +110,7 @@ export class SourceController extends CorePlugin {
|
|
|
110
110
|
onCoreReady() {
|
|
111
111
|
trace(`${T} onCoreReady`);
|
|
112
112
|
this.core.getPlugin('error_screen')?.disable(); // TODO test
|
|
113
|
+
// this.core.getPlugin('spinner')?.showOnError()
|
|
113
114
|
}
|
|
114
115
|
onActiveContainerChanged() {
|
|
115
116
|
trace(`${T} onActiveContainerChanged`, {
|
|
@@ -42,7 +42,9 @@ export declare class SpinnerThreeBounce extends UIContainerPlugin {
|
|
|
42
42
|
private template;
|
|
43
43
|
private hasFatalError;
|
|
44
44
|
private hasBuffering;
|
|
45
|
+
private _showOnError;
|
|
45
46
|
constructor(container: Container);
|
|
47
|
+
showOnError(): void;
|
|
46
48
|
private onBuffering;
|
|
47
49
|
private onBufferFull;
|
|
48
50
|
private onPlay;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpinnerThreeBounce.d.ts","sourceRoot":"","sources":["../../../src/plugins/spinner-three-bounce/SpinnerThreeBounce.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,SAAS,EAET,iBAAiB,EAElB,MAAM,cAAc,CAAA;AAKrB,OAAO,mDAAmD,CAAA;AAM1D;;;GAGG;AACH,oBAAY,aAAa;IACvB;;;OAGG;IACH,IAAI,yBAAyB;CAC9B;AAED;;;;;;;GAOG;AACH,qBAAa,kBAAmB,SAAQ,iBAAiB;IACvD,OAAO,CAAC,SAAS,CAAQ;IAEzB;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;IACH,IAAa,UAAU;;;MAKtB;IAED,OAAO,CAAC,WAAW,CAAuB;IAE1C,OAAO,CAAC,QAAQ,CAAwB;IAExC,OAAO,CAAC,aAAa,CAAQ;IAE7B,OAAO,CAAC,YAAY,CAAQ;gBAEhB,SAAS,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"SpinnerThreeBounce.d.ts","sourceRoot":"","sources":["../../../src/plugins/spinner-three-bounce/SpinnerThreeBounce.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,SAAS,EAET,iBAAiB,EAElB,MAAM,cAAc,CAAA;AAKrB,OAAO,mDAAmD,CAAA;AAM1D;;;GAGG;AACH,oBAAY,aAAa;IACvB;;;OAGG;IACH,IAAI,yBAAyB;CAC9B;AAED;;;;;;;GAOG;AACH,qBAAa,kBAAmB,SAAQ,iBAAiB;IACvD,OAAO,CAAC,SAAS,CAAQ;IAEzB;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;IACH,IAAa,UAAU;;;MAKtB;IAED,OAAO,CAAC,WAAW,CAAuB;IAE1C,OAAO,CAAC,QAAQ,CAAwB;IAExC,OAAO,CAAC,aAAa,CAAQ;IAE7B,OAAO,CAAC,YAAY,CAAQ;IAE5B,OAAO,CAAC,YAAY,CAAQ;gBAEhB,SAAS,EAAE,SAAS;IAmBzB,WAAW;IAIlB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,OAAO;IAgBf;;;;OAIG;IACH,IAAI,CAAC,KAAK,SAAM;IAMhB;;OAEG;IACH,IAAI;IAKJ,OAAO,CAAC,KAAK;IASb,OAAO,CAAC,KAAK;IAeb;;OAEG;IACM,MAAM;CAoBhB"}
|
|
@@ -55,6 +55,7 @@ export class SpinnerThreeBounce extends UIContainerPlugin {
|
|
|
55
55
|
template = template(spinnerHTML);
|
|
56
56
|
hasFatalError = false;
|
|
57
57
|
hasBuffering = false;
|
|
58
|
+
_showOnError = false;
|
|
58
59
|
constructor(container) {
|
|
59
60
|
super(container);
|
|
60
61
|
this.listenTo(this.container, ClapprEvents.CONTAINER_STATE_BUFFERING, this.onBuffering);
|
|
@@ -65,6 +66,9 @@ export class SpinnerThreeBounce extends UIContainerPlugin {
|
|
|
65
66
|
this.listenTo(this.container, ClapprEvents.CONTAINER_ERROR, this.onError);
|
|
66
67
|
this.listenTo(this.container, ClapprEvents.CONTAINER_READY, this.render);
|
|
67
68
|
}
|
|
69
|
+
showOnError() {
|
|
70
|
+
this._showOnError = true;
|
|
71
|
+
}
|
|
68
72
|
onBuffering() {
|
|
69
73
|
this.hasBuffering = true;
|
|
70
74
|
this._show();
|
|
@@ -81,27 +85,28 @@ export class SpinnerThreeBounce extends UIContainerPlugin {
|
|
|
81
85
|
}
|
|
82
86
|
onStop() {
|
|
83
87
|
trace(`${T} onStop`, {
|
|
84
|
-
showOnError: this.
|
|
88
|
+
showOnError: this._showOnError,
|
|
85
89
|
hasFatalError: this.hasFatalError,
|
|
86
90
|
});
|
|
87
|
-
if (!(this.hasFatalError && this.
|
|
88
|
-
|
|
89
|
-
}
|
|
91
|
+
// if (!(this.hasFatalError && this._showOnError)) {
|
|
92
|
+
// this._hide()
|
|
93
|
+
// }
|
|
94
|
+
this._hide();
|
|
90
95
|
}
|
|
91
96
|
onError(e) {
|
|
92
97
|
this.hasFatalError = e.code === PlaybackErrorCode.MediaSourceUnavailable;
|
|
93
98
|
trace(`${T} onError`, {
|
|
94
99
|
e,
|
|
95
|
-
showOnError: this.
|
|
100
|
+
showOnError: this._showOnError,
|
|
96
101
|
hasFatalError: this.hasFatalError,
|
|
97
102
|
error: e.code,
|
|
98
103
|
});
|
|
99
|
-
if (this.
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
104
|
+
// if (this._showOnError) {
|
|
105
|
+
// this._show()
|
|
106
|
+
// } else {
|
|
107
|
+
// this._hide()
|
|
108
|
+
// }
|
|
109
|
+
this._hide();
|
|
105
110
|
}
|
|
106
111
|
/**
|
|
107
112
|
* Shows the spinner.
|
|
@@ -146,6 +151,7 @@ export class SpinnerThreeBounce extends UIContainerPlugin {
|
|
|
146
151
|
* @internal
|
|
147
152
|
*/
|
|
148
153
|
render() {
|
|
154
|
+
// TODO control via sourcecontroller instead
|
|
149
155
|
const showOnStart = this.options.spinner?.showOnStart;
|
|
150
156
|
trace(`${T} render`, {
|
|
151
157
|
buffering: this.container.buffering,
|
package/package.json
CHANGED
|
@@ -12,7 +12,6 @@ const STALL_TIMEOUT = 15000
|
|
|
12
12
|
|
|
13
13
|
export default class HTML5Video extends BasePlayback {
|
|
14
14
|
private stallTimerId: TimerId | null = null
|
|
15
|
-
private statllTimerId: NodeJS.Timeout | null = null
|
|
16
15
|
|
|
17
16
|
/**
|
|
18
17
|
* @internal
|
|
@@ -60,22 +59,19 @@ export default class HTML5Video extends BasePlayback {
|
|
|
60
59
|
trace(`${T} _handleBufferingEvents`, {
|
|
61
60
|
networkState: (this.el as HTMLMediaElement).networkState,
|
|
62
61
|
})
|
|
63
|
-
if (!this.
|
|
64
|
-
this.
|
|
62
|
+
if (!this.stallTimerId) {
|
|
63
|
+
this.stallTimerId = setTimeout(() => {
|
|
65
64
|
trace(`${T} _handleBufferingEvents stall timeout`, {
|
|
66
65
|
buffering: this.buffering,
|
|
67
66
|
ended: this.ended,
|
|
68
|
-
isPlaying: this.isPlaying,
|
|
69
67
|
})
|
|
70
|
-
this.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
})
|
|
78
|
-
}
|
|
68
|
+
this.stallTimerId = null
|
|
69
|
+
this.createError({
|
|
70
|
+
code: PlaybackErrorCode.MediaSourceUnavailable,
|
|
71
|
+
level: PlayerError.Levels.FATAL,
|
|
72
|
+
message: 'Stall timeout',
|
|
73
|
+
description: 'Playback stalled for too long',
|
|
74
|
+
})
|
|
79
75
|
}, STALL_TIMEOUT)
|
|
80
76
|
}
|
|
81
77
|
super._handleBufferingEvents()
|
|
@@ -89,4 +85,13 @@ export default class HTML5Video extends BasePlayback {
|
|
|
89
85
|
}
|
|
90
86
|
super._onPlaying()
|
|
91
87
|
}
|
|
88
|
+
|
|
89
|
+
override _onPause() {
|
|
90
|
+
trace(`${T} _onPause`)
|
|
91
|
+
super._onPause()
|
|
92
|
+
if (this.stallTimerId) {
|
|
93
|
+
clearTimeout(this.stallTimerId)
|
|
94
|
+
this.stallTimerId = null
|
|
95
|
+
}
|
|
96
|
+
}
|
|
92
97
|
}
|
|
@@ -139,6 +139,7 @@ export class SourceController extends CorePlugin {
|
|
|
139
139
|
private onCoreReady() {
|
|
140
140
|
trace(`${T} onCoreReady`)
|
|
141
141
|
this.core.getPlugin('error_screen')?.disable() // TODO test
|
|
142
|
+
// this.core.getPlugin('spinner')?.showOnError()
|
|
142
143
|
}
|
|
143
144
|
|
|
144
145
|
private onActiveContainerChanged() {
|
|
@@ -73,6 +73,8 @@ export class SpinnerThreeBounce extends UIContainerPlugin {
|
|
|
73
73
|
|
|
74
74
|
private hasBuffering = false
|
|
75
75
|
|
|
76
|
+
private _showOnError = false
|
|
77
|
+
|
|
76
78
|
constructor(container: Container) {
|
|
77
79
|
super(container)
|
|
78
80
|
this.listenTo(
|
|
@@ -92,6 +94,10 @@ export class SpinnerThreeBounce extends UIContainerPlugin {
|
|
|
92
94
|
this.listenTo(this.container, ClapprEvents.CONTAINER_READY, this.render)
|
|
93
95
|
}
|
|
94
96
|
|
|
97
|
+
public showOnError() {
|
|
98
|
+
this._showOnError = true
|
|
99
|
+
}
|
|
100
|
+
|
|
95
101
|
private onBuffering() {
|
|
96
102
|
this.hasBuffering = true
|
|
97
103
|
this._show()
|
|
@@ -111,27 +117,29 @@ export class SpinnerThreeBounce extends UIContainerPlugin {
|
|
|
111
117
|
|
|
112
118
|
private onStop() {
|
|
113
119
|
trace(`${T} onStop`, {
|
|
114
|
-
showOnError: this.
|
|
120
|
+
showOnError: this._showOnError,
|
|
115
121
|
hasFatalError: this.hasFatalError,
|
|
116
122
|
})
|
|
117
|
-
if (!(this.hasFatalError && this.
|
|
118
|
-
|
|
119
|
-
}
|
|
123
|
+
// if (!(this.hasFatalError && this._showOnError)) {
|
|
124
|
+
// this._hide()
|
|
125
|
+
// }
|
|
126
|
+
this._hide()
|
|
120
127
|
}
|
|
121
128
|
|
|
122
129
|
private onError(e: PlaybackError) {
|
|
123
130
|
this.hasFatalError = e.code === PlaybackErrorCode.MediaSourceUnavailable
|
|
124
131
|
trace(`${T} onError`, {
|
|
125
132
|
e,
|
|
126
|
-
showOnError: this.
|
|
133
|
+
showOnError: this._showOnError,
|
|
127
134
|
hasFatalError: this.hasFatalError,
|
|
128
135
|
error: e.code,
|
|
129
136
|
})
|
|
130
|
-
if (this.
|
|
131
|
-
|
|
132
|
-
} else {
|
|
133
|
-
|
|
134
|
-
}
|
|
137
|
+
// if (this._showOnError) {
|
|
138
|
+
// this._show()
|
|
139
|
+
// } else {
|
|
140
|
+
// this._hide()
|
|
141
|
+
// }
|
|
142
|
+
this._hide()
|
|
135
143
|
}
|
|
136
144
|
|
|
137
145
|
/**
|
|
@@ -181,6 +189,7 @@ export class SpinnerThreeBounce extends UIContainerPlugin {
|
|
|
181
189
|
* @internal
|
|
182
190
|
*/
|
|
183
191
|
override render() {
|
|
192
|
+
// TODO control via sourcecontroller instead
|
|
184
193
|
const showOnStart = this.options.spinner?.showOnStart
|
|
185
194
|
trace(`${T} render`, {
|
|
186
195
|
buffering: this.container.buffering,
|