@livepeer-frameworks/player-wc 0.2.9 → 0.2.11
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/esm/components/controls/fw-fullscreen-button.js +1 -1
- package/dist/esm/components/controls/fw-live-badge.js +1 -1
- package/dist/esm/components/controls/fw-play-button.js +1 -1
- package/dist/esm/components/controls/fw-skip-button.js +1 -1
- package/dist/esm/components/controls/fw-time-display.js +1 -1
- package/dist/esm/components/controls/fw-volume-control.js +1 -1
- package/dist/esm/components/fw-context-menu.js +1 -1
- package/dist/esm/components/fw-dev-mode-panel.js +1 -1
- package/dist/esm/components/fw-dvd-logo.js +1 -1
- package/dist/esm/components/fw-error-overlay.js +1 -1
- package/dist/esm/components/fw-idle-screen.js +1 -1
- package/dist/esm/components/fw-loading-screen.js +1 -1
- package/dist/esm/components/fw-loading-spinner.js +1 -1
- package/dist/esm/components/fw-player-controls.js +2 -6
- package/dist/esm/components/fw-player-controls.js.map +1 -1
- package/dist/esm/components/fw-player.js +1 -1
- package/dist/esm/components/fw-seek-bar.js +1 -1
- package/dist/esm/components/fw-settings-menu.js +3 -3
- package/dist/esm/components/fw-settings-menu.js.map +1 -1
- package/dist/esm/components/fw-skip-indicator.js +1 -1
- package/dist/esm/components/fw-speed-indicator.js +1 -1
- package/dist/esm/components/fw-stats-panel.js +1 -1
- package/dist/esm/components/fw-stream-state-overlay.js +1 -1
- package/dist/esm/components/fw-subtitle-renderer.js +1 -1
- package/dist/esm/components/fw-thumbnail-overlay.js +1 -1
- package/dist/esm/components/fw-title-overlay.js +1 -1
- package/dist/esm/components/fw-toast.js +1 -1
- package/dist/esm/components/fw-volume-control.js +32 -8
- package/dist/esm/components/fw-volume-control.js.map +1 -1
- package/dist/esm/node_modules/.pnpm/{@rollup_plugin-typescript@12.3.0_rollup@4.57.1_tslib@2.8.1_typescript@5.9.3 → @rollup_plugin-typescript@12.3.0_rollup@4.59.0_tslib@2.8.1_typescript@5.9.3}/node_modules/tslib/tslib.es6.js.map +1 -1
- package/dist/fw-player.iife.js +79 -79
- package/dist/types/components/fw-volume-control.d.ts +3 -0
- package/package.json +3 -3
- package/src/components/fw-player-controls.ts +1 -5
- package/src/components/fw-settings-menu.ts +2 -1
- package/src/components/fw-volume-control.ts +33 -7
- /package/dist/esm/node_modules/.pnpm/{@rollup_plugin-typescript@12.3.0_rollup@4.57.1_tslib@2.8.1_typescript@5.9.3 → @rollup_plugin-typescript@12.3.0_rollup@4.59.0_tslib@2.8.1_typescript@5.9.3}/node_modules/tslib/tslib.es6.js +0 -0
|
@@ -11,10 +11,13 @@ export declare class FwVolumeControl extends LitElement {
|
|
|
11
11
|
private _hasAudio;
|
|
12
12
|
private _activePointerId;
|
|
13
13
|
private _activeSliderTarget;
|
|
14
|
+
private _boundStream;
|
|
15
|
+
private _onStreamTrackChange;
|
|
14
16
|
static styles: import("lit").CSSResult[];
|
|
15
17
|
private get _expanded();
|
|
16
18
|
disconnectedCallback(): void;
|
|
17
19
|
protected updated(): void;
|
|
20
|
+
private _unbindStreamListeners;
|
|
18
21
|
private _updateHasAudio;
|
|
19
22
|
private _setVolumeFromClientX;
|
|
20
23
|
private _beginDragInteraction;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livepeer-frameworks/player-wc",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.11",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Lit Web Components for FrameWorks streaming player — <fw-player> custom element with full UI",
|
|
6
6
|
"main": "dist/esm/index.js",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"lit": "^3.3.2",
|
|
29
|
-
"@livepeer-frameworks/player-core": "0.2.
|
|
29
|
+
"@livepeer-frameworks/player-core": "0.2.5"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@rollup/plugin-commonjs": "^29.0.0",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"@rollup/plugin-terser": "^0.4.4",
|
|
35
35
|
"@rollup/plugin-typescript": "^12.3.0",
|
|
36
36
|
"@vitest/coverage-v8": "^4.0.18",
|
|
37
|
-
"rollup": "^4.
|
|
37
|
+
"rollup": "^4.59.0",
|
|
38
38
|
"tslib": "^2.8.1",
|
|
39
39
|
"typescript": "^5.9.3",
|
|
40
40
|
"vitest": "^4.0.18"
|
|
@@ -223,11 +223,7 @@ export class FwPlayerControls extends LitElement {
|
|
|
223
223
|
const isWebRTC = isMediaStreamSource(state.videoElement);
|
|
224
224
|
|
|
225
225
|
const allowMediaStreamDvr =
|
|
226
|
-
isMediaStreamSource(state.videoElement) &&
|
|
227
|
-
bufferWindowMs !== undefined &&
|
|
228
|
-
bufferWindowMs > 0 &&
|
|
229
|
-
sourceType !== "whep" &&
|
|
230
|
-
sourceType !== "webrtc";
|
|
226
|
+
isMediaStreamSource(state.videoElement) && bufferWindowMs !== undefined && bufferWindowMs > 0;
|
|
231
227
|
|
|
232
228
|
const calculatedRange = calculateSeekableRange({
|
|
233
229
|
isLive,
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
supportsPlaybackRate as coreSupportsPlaybackRate,
|
|
12
12
|
getAvailableLocales,
|
|
13
13
|
getLocaleDisplayName,
|
|
14
|
+
formatQualityLabel,
|
|
14
15
|
} from "@livepeer-frameworks/player-core";
|
|
15
16
|
import type { PlaybackMode, FwLocale } from "@livepeer-frameworks/player-core";
|
|
16
17
|
import type { PlayerControllerHost } from "../controllers/player-controller-host.js";
|
|
@@ -152,7 +153,7 @@ export class FwSettingsMenu extends LitElement {
|
|
|
152
153
|
.filter(([, track]) => track?.type === "video")
|
|
153
154
|
.map(([id, track]) => ({
|
|
154
155
|
id,
|
|
155
|
-
label: track.
|
|
156
|
+
label: formatQualityLabel(track.width, track.height, track.bps),
|
|
156
157
|
width: track.width,
|
|
157
158
|
height: track.height,
|
|
158
159
|
bitrate: track.bps,
|
|
@@ -20,6 +20,8 @@ export class FwVolumeControl extends LitElement {
|
|
|
20
20
|
|
|
21
21
|
private _activePointerId: number | null = null;
|
|
22
22
|
private _activeSliderTarget: HTMLElement | null = null;
|
|
23
|
+
private _boundStream: MediaStream | null = null;
|
|
24
|
+
private _onStreamTrackChange: (() => void) | null = null;
|
|
23
25
|
|
|
24
26
|
static styles = [
|
|
25
27
|
sharedStyles,
|
|
@@ -69,28 +71,52 @@ export class FwVolumeControl extends LitElement {
|
|
|
69
71
|
disconnectedCallback(): void {
|
|
70
72
|
super.disconnectedCallback();
|
|
71
73
|
this._endDragInteraction();
|
|
74
|
+
this._unbindStreamListeners();
|
|
72
75
|
}
|
|
73
76
|
|
|
74
77
|
protected updated(): void {
|
|
75
78
|
this._updateHasAudio();
|
|
76
79
|
}
|
|
77
80
|
|
|
78
|
-
private
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
this._hasAudio = mistHasAudio;
|
|
83
|
-
return;
|
|
81
|
+
private _unbindStreamListeners(): void {
|
|
82
|
+
if (this._boundStream && this._onStreamTrackChange) {
|
|
83
|
+
this._boundStream.removeEventListener("addtrack", this._onStreamTrackChange);
|
|
84
|
+
this._boundStream.removeEventListener("removetrack", this._onStreamTrackChange);
|
|
84
85
|
}
|
|
86
|
+
this._boundStream = null;
|
|
87
|
+
this._onStreamTrackChange = null;
|
|
88
|
+
}
|
|
85
89
|
|
|
90
|
+
private _updateHasAudio(): void {
|
|
86
91
|
const video = this.pc?.s.videoElement;
|
|
87
92
|
if (!video) {
|
|
93
|
+
this._unbindStreamListeners();
|
|
88
94
|
this._hasAudio = true;
|
|
89
95
|
return;
|
|
90
96
|
}
|
|
91
97
|
|
|
98
|
+
// MediaStream: bind track change listeners (WebRTC tracks arrive async)
|
|
92
99
|
if (video.srcObject instanceof MediaStream) {
|
|
93
|
-
|
|
100
|
+
const stream = video.srcObject;
|
|
101
|
+
if (stream !== this._boundStream) {
|
|
102
|
+
this._unbindStreamListeners();
|
|
103
|
+
this._boundStream = stream;
|
|
104
|
+
this._onStreamTrackChange = () => {
|
|
105
|
+
this._hasAudio = stream.getAudioTracks().length > 0;
|
|
106
|
+
};
|
|
107
|
+
stream.addEventListener("addtrack", this._onStreamTrackChange);
|
|
108
|
+
stream.addEventListener("removetrack", this._onStreamTrackChange);
|
|
109
|
+
}
|
|
110
|
+
this._hasAudio = stream.getAudioTracks().length > 0;
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
this._unbindStreamListeners();
|
|
115
|
+
|
|
116
|
+
// Fallback: metadata for non-MediaStream sources.
|
|
117
|
+
const mistHasAudio = this.pc?.s.streamState?.streamInfo?.hasAudio;
|
|
118
|
+
if (mistHasAudio !== undefined) {
|
|
119
|
+
this._hasAudio = mistHasAudio;
|
|
94
120
|
return;
|
|
95
121
|
}
|
|
96
122
|
|