@munsonlabs/video-player 0.2.3 → 0.2.5

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 (42) hide show
  1. package/README.md +49 -33
  2. package/dist/chunks/{ads-BV769SMr.mjs → ads-Dph3guS9.mjs} +1 -1
  3. package/dist/{elements/chunks/brightcove-rNI-XRxB.mjs → chunks/brightcove-DiJF_74z.mjs} +1 -1
  4. package/dist/chunks/constants-35ZnLsDv.mjs +1 -0
  5. package/dist/chunks/dailymotion-DTooszoV.mjs +1 -0
  6. package/dist/chunks/embedShared-CbArTtuR.mjs +1 -0
  7. package/dist/chunks/{jwplayer-WIkwoJTA.mjs → jwplayer-Dhq65VxK.mjs} +1 -1
  8. package/dist/chunks/loadScript-CxzeXqTe.mjs +1 -0
  9. package/dist/chunks/{sourceHelpers-rbs6D6ZG.mjs → sourceHelpers-B0tH-grj.mjs} +1 -1
  10. package/dist/chunks/vimeo-D0GAjId0.mjs +1 -0
  11. package/dist/chunks/youtube-B8AT2F-4.mjs +1 -0
  12. package/dist/elements/chunks/{ads-BV769SMr.mjs → ads-Dph3guS9.mjs} +1 -1
  13. package/dist/{chunks/brightcove-rNI-XRxB.mjs → elements/chunks/brightcove-DiJF_74z.mjs} +1 -1
  14. package/dist/elements/chunks/constants-35ZnLsDv.mjs +1 -0
  15. package/dist/elements/chunks/dailymotion-DTooszoV.mjs +1 -0
  16. package/dist/elements/chunks/embedShared-CbArTtuR.mjs +1 -0
  17. package/dist/elements/chunks/{jwplayer-WIkwoJTA.mjs → jwplayer-Dhq65VxK.mjs} +1 -1
  18. package/dist/elements/chunks/loadScript-CxzeXqTe.mjs +1 -0
  19. package/dist/elements/chunks/{sourceHelpers-rbs6D6ZG.mjs → sourceHelpers-B0tH-grj.mjs} +1 -1
  20. package/dist/elements/chunks/vimeo-D0GAjId0.mjs +1 -0
  21. package/dist/elements/chunks/youtube-B8AT2F-4.mjs +1 -0
  22. package/dist/elements/controls.d.mts +166 -38
  23. package/dist/elements/controls.mjs +1 -1
  24. package/dist/elements/core.d.mts +26 -31
  25. package/dist/elements/core.mjs +1 -1
  26. package/dist/elements/index.d.mts +136 -69
  27. package/dist/elements/index.mjs +1 -1
  28. package/dist/index.d.mts +208 -209
  29. package/dist/index.mjs +1 -1
  30. package/package.json +5 -3
  31. package/dist/chunks/constants-zR-UwEWY.mjs +0 -1
  32. package/dist/chunks/dailymotion-gEquA4h5.mjs +0 -1
  33. package/dist/chunks/embedShared-duyOYFQN.mjs +0 -1
  34. package/dist/chunks/loadScript-Du6JsTc2.mjs +0 -1
  35. package/dist/chunks/vimeo-WJYDJPA3.mjs +0 -1
  36. package/dist/chunks/youtube-DbJ-IrvP.mjs +0 -1
  37. package/dist/elements/chunks/constants-zR-UwEWY.mjs +0 -1
  38. package/dist/elements/chunks/dailymotion-gEquA4h5.mjs +0 -1
  39. package/dist/elements/chunks/embedShared-duyOYFQN.mjs +0 -1
  40. package/dist/elements/chunks/loadScript-Du6JsTc2.mjs +0 -1
  41. package/dist/elements/chunks/vimeo-WJYDJPA3.mjs +0 -1
  42. package/dist/elements/chunks/youtube-DbJ-IrvP.mjs +0 -1
@@ -1,18 +1,7 @@
1
- import "vue";
1
+ import { Ref, UnwrapNestedRefs } from "vue";
2
2
  //#region src/composables/player/emitter.d.ts
3
3
  type PlaybackListener = (...args: unknown[]) => void;
4
4
  //#endregion
5
- //#region src/adapters/embeds/embedShared.d.ts
6
- interface EmbedAdapterOptions {
7
- src: string;
8
- poster?: string;
9
- autoplay?: boolean;
10
- muted?: boolean;
11
- volume?: number;
12
- nativeUi?: boolean;
13
- customVars?: Record<string, unknown>;
14
- }
15
- //#endregion
16
5
  //#region src/types/playback.d.ts
17
6
  interface MediaErrorLike {
18
7
  code: number;
@@ -31,7 +20,7 @@ interface QualityLevelInfo {
31
20
  }
32
21
  interface PlaybackAdapter {
33
22
  readonly el: HTMLElement;
34
- play(): void | Promise<void>;
23
+ play(): Promise<void>;
35
24
  pause(): void;
36
25
  paused(): boolean;
37
26
  currentTime(): number;
@@ -61,7 +50,7 @@ interface PlaybackAdapter {
61
50
  togglePip(): void;
62
51
  enterFullscreen(): void;
63
52
  exitFullscreen(): void;
64
- on(event: string | string[], listener: PlaybackListener): void;
53
+ on(event: string, listener: PlaybackListener): void;
65
54
  off(event: string, listener: PlaybackListener): void;
66
55
  dispose(): void;
67
56
  }
@@ -76,6 +65,14 @@ interface Matcher {
76
65
  key: string;
77
66
  embed: boolean;
78
67
  }
68
+ interface EmbedAdapterOptions {
69
+ src: string;
70
+ poster?: string;
71
+ autoplay?: boolean;
72
+ muted?: boolean;
73
+ volume?: number;
74
+ nativeUi?: boolean;
75
+ }
79
76
  type EmbedAdapterFactory = (videoEl: HTMLVideoElement, options: EmbedAdapterOptions) => PlaybackAdapter;
80
77
  type SourceResolver = (url: string) => ResolvedSource | Promise<ResolvedSource>;
81
78
  type PlatformConfig = Pick<Matcher, 'key' | 'test'> & ({
@@ -86,6 +83,96 @@ type PlatformConfig = Pick<Matcher, 'key' | 'test'> & ({
86
83
  resolveSource?: SourceResolver;
87
84
  });
88
85
  //#endregion
86
+ //#region src/composables/player/playerState.d.ts
87
+ declare function createPlayerState(props: PlayerProps): {
88
+ isPlaying: import("vue").Ref<boolean, boolean>;
89
+ hasEnded: import("vue").Ref<boolean, boolean>;
90
+ isReady: import("vue").Ref<boolean, boolean>;
91
+ isLoaded: import("vue").Ref<boolean, boolean>;
92
+ isLive: import("vue").Ref<boolean, boolean>;
93
+ hasStarted: import("vue").Ref<boolean, boolean>;
94
+ isError: import("vue").Ref<boolean, boolean>;
95
+ errorMessage: import("vue").Ref<string, string>;
96
+ current: import("vue").Ref<number, number>;
97
+ total: import("vue").Ref<number, number>;
98
+ buffered: import("vue").Ref<number, number>;
99
+ progress: import("vue").ComputedRef<number>;
100
+ bufferedDisplay: import("vue").ComputedRef<number>;
101
+ vol: import("vue").Ref<number, number>;
102
+ isMuted: import("vue").Ref<boolean, boolean>;
103
+ isAudible: import("vue").ComputedRef<boolean>;
104
+ isLooping: import("vue").Ref<boolean, boolean>;
105
+ currentPlaybackRate: import("vue").Ref<number, number>;
106
+ supportsPlaybackRate: import("vue").Ref<boolean, boolean>;
107
+ isAdPlaying: import("vue").Ref<boolean, boolean>;
108
+ isAdPaused: import("vue").Ref<boolean, boolean>;
109
+ isAdMuted: import("vue").Ref<boolean, boolean>;
110
+ adRemainingTime: import("vue").Ref<number, number>;
111
+ supportsCaptions: import("vue").Ref<boolean, boolean>;
112
+ captionTracks: import("vue").Ref<{
113
+ index: number;
114
+ label: string;
115
+ language: string;
116
+ }[], CaptionTrackInfo[] | {
117
+ index: number;
118
+ label: string;
119
+ language: string;
120
+ }[]>;
121
+ activeCaptionIndex: import("vue").Ref<number | null, number | null>;
122
+ supportsQuality: import("vue").Ref<boolean, boolean>;
123
+ qualityLevels: import("vue").Ref<{
124
+ index: number;
125
+ height: number;
126
+ bitrate: number;
127
+ label: string;
128
+ }[], QualityLevelInfo[] | {
129
+ index: number;
130
+ height: number;
131
+ bitrate: number;
132
+ label: string;
133
+ }[]>;
134
+ currentQualityIndex: import("vue").Ref<number | null, number | null>;
135
+ isAutoQuality: import("vue").Ref<boolean, boolean>;
136
+ supportsPip: import("vue").Ref<boolean, boolean>;
137
+ isPipActive: import("vue").Ref<boolean, boolean>;
138
+ isNativeUi: import("vue").Ref<boolean, boolean>;
139
+ };
140
+ type PlayerState = ReturnType<typeof createPlayerState>;
141
+ //#endregion
142
+ //#region src/composables/player/usePlayerControls.d.ts
143
+ interface UsePlayerControlsReturn {
144
+ play: () => Promise<void>;
145
+ pause: () => void;
146
+ replay: () => Promise<void>;
147
+ togglePlay: () => void;
148
+ seek: (percent: number) => void;
149
+ seekTo: (seconds: number) => void;
150
+ toggleMute: () => void;
151
+ setVolume: (vol: number) => void;
152
+ toggleLoop: () => void;
153
+ setPlaybackRate: (rate: number) => void;
154
+ setCaptionTrack: (index: number | null) => void;
155
+ setQuality: (index: number | null) => void;
156
+ togglePip: () => void;
157
+ }
158
+ //#endregion
159
+ //#region src/composables/player/usePlayer.d.ts
160
+ type UsePlayerReturn = PlayerState & UsePlayerControlsReturn & {
161
+ fire: (type: StateChangeType, extras?: Partial<StateChangeEvent>) => void;
162
+ retry: () => void;
163
+ isBuffering: Ref<boolean>;
164
+ toggleAdMute: () => void;
165
+ isFullscreen: Ref<boolean>;
166
+ isFullscreenPending: Ref<boolean>;
167
+ toggleFullscreen: () => void;
168
+ };
169
+ //#endregion
170
+ //#region src/composables/player/playerSurface.d.ts
171
+ declare const PLAYER_METHOD_KEYS: readonly ["retry", "play", "pause", "replay", "togglePlay", "seek", "seekTo", "toggleMute", "setVolume", "toggleFullscreen", "toggleLoop", "toggleAdMute", "setPlaybackRate", "setCaptionTrack", "setQuality", "togglePip"];
172
+ declare const PLAYER_STATE_KEYS: readonly ["isPlaying", "hasEnded", "isReady", "isLoaded", "isAdPlaying", "isAdPaused", "isAdMuted", "adRemainingTime", "isLive", "isBuffering", "current", "total", "vol", "isMuted", "isAudible", "isLooping", "currentPlaybackRate", "hasStarted", "isError", "errorMessage", "progress", "bufferedDisplay", "isFullscreen", "supportsPlaybackRate", "supportsCaptions", "captionTracks", "activeCaptionIndex", "supportsQuality", "qualityLevels", "currentQualityIndex", "isAutoQuality", "supportsPip", "isPipActive", "isNativeUi"];
173
+ type PlayerMethodKey = (typeof PLAYER_METHOD_KEYS)[number];
174
+ type PlayerStateKey = (typeof PLAYER_STATE_KEYS)[number];
175
+ //#endregion
89
176
  //#region src/types/player.d.ts
90
177
  type BuiltinAction = 'mute' | 'loop' | 'autoplay';
91
178
  interface CustomAction {
@@ -94,6 +181,25 @@ interface CustomAction {
94
181
  onClick: () => void;
95
182
  }
96
183
  type PlayerAction = BuiltinAction | CustomAction;
184
+ type StateChangeType = 'loaded' | 'play' | 'pause' | 'ended' | 'seeked' | 'error' | 'adstart' | 'adend' | 'volumechange' | 'ratechange' | 'captionchange' | 'qualitychange' | 'pipchange' | 'loopchange' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'controlsopen' | 'controlsclose' | 'stageopen' | 'stageclose' | 'bufferstart' | 'bufferend' | 'timeupdate' | 'tap';
185
+ interface StateChangeEvent {
186
+ type: StateChangeType;
187
+ currentTime: number;
188
+ duration: number;
189
+ src: string;
190
+ error?: {
191
+ code: number;
192
+ message: string;
193
+ } | null;
194
+ isMuted?: boolean;
195
+ playbackRate?: number;
196
+ captionIndex?: number | null;
197
+ qualityIndex?: number | null;
198
+ isPipActive?: boolean;
199
+ isLooping?: boolean;
200
+ element?: HTMLElement | null;
201
+ payload?: Record<string, unknown>;
202
+ }
97
203
  interface HeaderBiddingAdUnit {
98
204
  code: string;
99
205
  mediaTypes: {
@@ -118,7 +224,7 @@ interface CaptionTrackDef {
118
224
  }
119
225
  interface PlayerProps {
120
226
  src: string;
121
- title?: string;
227
+ label?: string;
122
228
  poster?: string;
123
229
  aspectRatio?: string;
124
230
  adTagUrl?: string;
@@ -130,8 +236,6 @@ interface PlayerProps {
130
236
  volume?: number;
131
237
  playbackRate?: number;
132
238
  nativeUi?: boolean;
133
- autoStage?: boolean;
134
- lazy?: boolean;
135
239
  payload?: Record<string, unknown> | string;
136
240
  action?: PlayerAction | null;
137
241
  disableTapCapture?: boolean;
@@ -139,74 +243,37 @@ interface PlayerProps {
139
243
  controls?: boolean;
140
244
  playInView?: boolean;
141
245
  pin?: PinCorner;
246
+ loop?: boolean;
247
+ preload?: PreloadMode;
142
248
  }
143
249
  type PinCorner = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
144
- type VideoEntry = PlayerProps;
145
- interface VideoSelectDetail extends VideoEntry {
146
- fromGesture?: boolean;
250
+ type PreloadMode = 'none' | 'metadata' | 'auto';
251
+ interface VideoEntry extends PlayerProps {
252
+ lazy?: boolean;
253
+ autoStage?: boolean;
147
254
  }
148
255
  interface TranscriptCue {
149
256
  time: number;
150
257
  end?: number;
151
258
  text: string;
152
259
  }
153
- interface PlayerHandle {
154
- isPlaying: boolean;
155
- togglePlay(): void;
156
- hasEnded: boolean;
157
- isError: boolean;
158
- retry(): void;
159
- isMuted: boolean;
160
- toggleMute(): void;
161
- isAudible: boolean;
162
- isFullscreen: boolean;
163
- toggleFullscreen(): void;
164
- current: number;
165
- total: number;
166
- seek(percent: number): void;
167
- bufferedDisplay: number;
168
- isBuffering: boolean;
169
- isLive: boolean;
170
- vol: number;
171
- setVolume(vol: number): void;
172
- isLooping: boolean;
173
- toggleLoop(): void;
174
- supportsPip: boolean;
175
- isPipActive: boolean;
176
- togglePip(): void;
177
- supportsCaptions: boolean;
178
- captionTracks: CaptionTrackInfo[];
179
- activeCaptionIndex: number | null;
180
- setCaptionTrack(index: number | null): void;
181
- supportsQuality: boolean;
182
- qualityLevels: QualityLevelInfo[];
183
- currentQualityIndex: number | null;
184
- isAutoQuality: boolean;
185
- setQuality(index: number | null): void;
186
- supportsPlaybackRate: boolean;
187
- currentPlaybackRate: number;
188
- setPlaybackRate(rate: number): void;
189
- }
260
+ type PlayerHandle = Pick<UnwrapNestedRefs<UsePlayerReturn>, PlayerMethodKey | PlayerStateKey>;
190
261
  //#endregion
191
262
  //#region src/adapters/index.d.ts
192
- export declare function registerMatcher(matcher: Matcher): void;
193
- export declare function registerEmbedAdapter(key: string, factory: EmbedAdapterFactory): void;
194
- export declare function registerSourceResolver(key: string, resolver: SourceResolver): void;
263
+ export declare function resolvePlatform(url: string): {
264
+ key: string;
265
+ embed: boolean;
266
+ };
195
267
  export declare function registerPlatform(config: PlatformConfig): void;
196
268
  //#endregion
197
269
  //#region src/elements/core.d.ts
198
- declare const VideoPlayerElement: import("vue").VueElementConstructor<PlayerProps & {
199
- hasPlaylist?: boolean;
200
- hasNext?: boolean;
201
- hasPrevious?: boolean;
202
- autoAdvance?: boolean;
203
- }>;
270
+ declare const VideoPlayerElement: import("vue").VueElementConstructor<PlayerProps>;
204
271
  declare const VideoStageElement: import("vue").VueElementConstructor<{
205
- pin?: "bottom-right" | "bottom-left" | "top-right" | "top-left" | "full-width";
272
+ pin?: PinCorner | "full-width";
206
273
  playlist?: VideoEntry[];
207
274
  }>;
208
- declare const VideoPlaceholderElement: import("vue").VueElementConstructor<VideoSelectDetail>;
209
- declare const VideoCardElement: import("vue").VueElementConstructor<VideoSelectDetail>;
275
+ declare const VideoPlaceholderElement: import("vue").VueElementConstructor<VideoEntry>;
276
+ declare const VideoCardElement: import("vue").VueElementConstructor<VideoEntry>;
210
277
  declare const HideMarkerElement: import("vue").VueElementConstructor<{}>;
211
278
  export declare function defineElements(): void;
212
279
  //#endregion