@livepeer-frameworks/player-svelte 0.1.3 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DevModePanel.svelte +14 -15
- package/dist/IdleScreen.svelte +12 -4
- package/dist/LoadingScreen.svelte +90 -50
- package/dist/LoadingScreen.svelte.bak +702 -0
- package/dist/Player.svelte +200 -53
- package/dist/Player.svelte.d.ts +6 -1
- package/dist/PlayerControls.svelte +109 -32
- package/dist/PlayerControls.svelte.d.ts +3 -0
- package/dist/StreamStateOverlay.svelte +17 -5
- package/dist/controls/FullscreenButton.svelte +26 -0
- package/dist/controls/FullscreenButton.svelte.d.ts +3 -0
- package/dist/controls/LiveBadge.svelte +23 -0
- package/dist/controls/LiveBadge.svelte.d.ts +3 -0
- package/dist/controls/PlayButton.svelte +26 -0
- package/dist/controls/PlayButton.svelte.d.ts +3 -0
- package/dist/controls/SettingsMenu.svelte +208 -0
- package/dist/controls/SettingsMenu.svelte.d.ts +28 -0
- package/dist/controls/SkipButton.svelte +33 -0
- package/dist/controls/SkipButton.svelte.d.ts +7 -0
- package/dist/controls/TimeDisplay.svelte +18 -0
- package/dist/controls/TimeDisplay.svelte.d.ts +3 -0
- package/dist/controls/VolumeControl.svelte +26 -0
- package/dist/controls/VolumeControl.svelte.d.ts +3 -0
- package/dist/controls/index.d.ts +7 -0
- package/dist/controls/index.js +7 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +3 -1
- package/dist/stores/i18n.d.ts +3 -0
- package/dist/stores/i18n.js +4 -0
- package/dist/stores/index.d.ts +1 -0
- package/dist/stores/index.js +2 -0
- package/package.json +8 -8
- package/src/DevModePanel.svelte +14 -15
- package/src/IdleScreen.svelte +12 -4
- package/src/LoadingScreen.svelte +90 -50
- package/src/LoadingScreen.svelte.bak +702 -0
- package/src/Player.svelte +200 -53
- package/src/PlayerControls.svelte +109 -32
- package/src/StreamStateOverlay.svelte +17 -5
- package/src/controls/FullscreenButton.svelte +26 -0
- package/src/controls/LiveBadge.svelte +23 -0
- package/src/controls/PlayButton.svelte +26 -0
- package/src/controls/SettingsMenu.svelte +208 -0
- package/src/controls/SkipButton.svelte +33 -0
- package/src/controls/TimeDisplay.svelte +18 -0
- package/src/controls/VolumeControl.svelte +26 -0
- package/src/controls/index.ts +7 -0
- package/src/index.ts +10 -0
- package/src/stores/i18n.ts +7 -0
- package/src/stores/index.ts +3 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { getContext } from "svelte";
|
|
3
|
+
import type { Readable } from "svelte/store";
|
|
4
|
+
import { createTranslator, type TranslateFn } from "@livepeer-frameworks/player-core";
|
|
5
|
+
import { SkipBackIcon, SkipForwardIcon } from "../icons";
|
|
6
|
+
|
|
7
|
+
interface Props {
|
|
8
|
+
direction: "back" | "forward";
|
|
9
|
+
seconds?: number;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
let { direction, seconds = 10 }: Props = $props();
|
|
13
|
+
let pc: any = getContext("fw-player-controller");
|
|
14
|
+
const translatorCtx = getContext<Readable<TranslateFn> | undefined>("fw-translator");
|
|
15
|
+
const fallbackT = createTranslator({ locale: "en" });
|
|
16
|
+
let t: TranslateFn = $derived(translatorCtx ? $translatorCtx : fallbackT);
|
|
17
|
+
|
|
18
|
+
let label = $derived(direction === "back" ? t("skipBackward") : t("skipForward"));
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<button
|
|
22
|
+
type="button"
|
|
23
|
+
class="fw-btn-flush"
|
|
24
|
+
aria-label={label}
|
|
25
|
+
title={label}
|
|
26
|
+
onclick={() => pc?.seek((pc?.currentTime ?? 0) + (direction === "back" ? -seconds : seconds))}
|
|
27
|
+
>
|
|
28
|
+
{#if direction === "back"}
|
|
29
|
+
<SkipBackIcon size={16} />
|
|
30
|
+
{:else}
|
|
31
|
+
<SkipForwardIcon size={16} />
|
|
32
|
+
{/if}
|
|
33
|
+
</button>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { getContext } from "svelte";
|
|
3
|
+
import { formatTimeDisplay } from "@livepeer-frameworks/player-core";
|
|
4
|
+
|
|
5
|
+
let pc: any = getContext("fw-player-controller");
|
|
6
|
+
|
|
7
|
+
let timeText = $derived(
|
|
8
|
+
formatTimeDisplay({
|
|
9
|
+
isLive: pc?.isEffectivelyLive ?? false,
|
|
10
|
+
currentTime: pc?.currentTime ?? 0,
|
|
11
|
+
duration: pc?.duration ?? NaN,
|
|
12
|
+
liveEdge: pc?.duration ?? 0,
|
|
13
|
+
seekableStart: 0,
|
|
14
|
+
})
|
|
15
|
+
);
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<span class="fw-time-display">{timeText}</span>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { getContext } from "svelte";
|
|
3
|
+
import type { Readable } from "svelte/store";
|
|
4
|
+
import { createTranslator, type TranslateFn } from "@livepeer-frameworks/player-core";
|
|
5
|
+
import { VolumeUpIcon, VolumeOffIcon } from "../icons";
|
|
6
|
+
|
|
7
|
+
let pc: any = getContext("fw-player-controller");
|
|
8
|
+
const translatorCtx = getContext<Readable<TranslateFn> | undefined>("fw-translator");
|
|
9
|
+
const fallbackT = createTranslator({ locale: "en" });
|
|
10
|
+
let t: TranslateFn = $derived(translatorCtx ? $translatorCtx : fallbackT);
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<button
|
|
14
|
+
type="button"
|
|
15
|
+
class="fw-btn-flush"
|
|
16
|
+
aria-label={pc?.isMuted ? t("unmute") : t("mute")}
|
|
17
|
+
aria-pressed={pc?.isMuted ?? false}
|
|
18
|
+
title={pc?.isMuted ? t("unmute") : t("mute")}
|
|
19
|
+
onclick={() => pc?.toggleMute()}
|
|
20
|
+
>
|
|
21
|
+
{#if pc?.isMuted}
|
|
22
|
+
<VolumeOffIcon size={16} />
|
|
23
|
+
{:else}
|
|
24
|
+
<VolumeUpIcon size={16} />
|
|
25
|
+
{/if}
|
|
26
|
+
</button>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { default as PlayButton } from "./PlayButton.svelte";
|
|
2
|
+
export { default as SkipButton } from "./SkipButton.svelte";
|
|
3
|
+
export { default as VolumeControl } from "./VolumeControl.svelte";
|
|
4
|
+
export { default as TimeDisplay } from "./TimeDisplay.svelte";
|
|
5
|
+
export { default as LiveBadge } from "./LiveBadge.svelte";
|
|
6
|
+
export { default as FullscreenButton } from "./FullscreenButton.svelte";
|
|
7
|
+
export { default as SettingsMenu } from "./SettingsMenu.svelte";
|
package/src/index.ts
CHANGED
|
@@ -48,6 +48,9 @@ export { default as ThumbnailOverlay } from "./ThumbnailOverlay.svelte";
|
|
|
48
48
|
export { default as StatsPanel } from "./StatsPanel.svelte";
|
|
49
49
|
export { default as DevModePanel } from "./DevModePanel.svelte";
|
|
50
50
|
|
|
51
|
+
// Composable control components
|
|
52
|
+
export * from "./controls";
|
|
53
|
+
|
|
51
54
|
// Icon components
|
|
52
55
|
export * from "./icons";
|
|
53
56
|
|
|
@@ -65,6 +68,9 @@ export {
|
|
|
65
68
|
PlayerController,
|
|
66
69
|
PlayerManager,
|
|
67
70
|
globalPlayerManager,
|
|
71
|
+
createTranslator,
|
|
72
|
+
getAvailableLocales,
|
|
73
|
+
getLocaleDisplayName,
|
|
68
74
|
} from "@livepeer-frameworks/player-core";
|
|
69
75
|
export type {
|
|
70
76
|
PlayerControllerConfig,
|
|
@@ -88,4 +94,8 @@ export type {
|
|
|
88
94
|
PlayerCombination,
|
|
89
95
|
PlayerManagerOptions,
|
|
90
96
|
PlayerManagerEvents,
|
|
97
|
+
FwLocale,
|
|
98
|
+
TranslateFn,
|
|
99
|
+
TranslationStrings,
|
|
100
|
+
I18nConfig,
|
|
91
101
|
} from "@livepeer-frameworks/player-core";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { writable, derived } from "svelte/store";
|
|
2
|
+
import { createTranslator, type FwLocale } from "@livepeer-frameworks/player-core";
|
|
3
|
+
|
|
4
|
+
export const localeStore = writable<FwLocale>("en");
|
|
5
|
+
export const translatorStore = derived(localeStore, ($locale) =>
|
|
6
|
+
createTranslator({ locale: $locale })
|
|
7
|
+
);
|
package/src/stores/index.ts
CHANGED
|
@@ -71,6 +71,9 @@ export {
|
|
|
71
71
|
type PlayerSelectionStore,
|
|
72
72
|
} from "./playerSelection";
|
|
73
73
|
|
|
74
|
+
// i18n (locale + translator)
|
|
75
|
+
export { localeStore, translatorStore } from "./i18n";
|
|
76
|
+
|
|
74
77
|
// PlayerController store (central orchestrator)
|
|
75
78
|
export {
|
|
76
79
|
createPlayerControllerStore,
|