@frameset/plex-player 1.0.6 → 2.0.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.
@@ -1,457 +0,0 @@
1
- /**
2
- * @frameset/plex-player - TypeScript Definitions
3
- * Professional Video Player by FRAMESET Studio
4
- * https://frameset.dev
5
- */
6
-
7
- declare module '@frameset/plex-player' {
8
- export interface PlexPlayerOptions {
9
- /** Container element or selector */
10
- container: HTMLElement | string;
11
- /** Auto-play video on load */
12
- autoplay?: boolean;
13
- /** Mute video on load */
14
- muted?: boolean;
15
- /** Loop video playback */
16
- loop?: boolean;
17
- /** Initial volume (0-1) */
18
- volume?: number;
19
- /** Playback rate (0.25-2) */
20
- playbackRate?: number;
21
- /** Poster image URL */
22
- poster?: string;
23
- /** Preload strategy */
24
- preload?: 'none' | 'metadata' | 'auto';
25
- /** Enable keyboard controls */
26
- keyboard?: boolean;
27
- /** Enable touch gestures */
28
- touch?: boolean;
29
- /** Enable Picture-in-Picture */
30
- pip?: boolean;
31
- /** Enable Chromecast */
32
- cast?: boolean;
33
- /** Enable fullscreen */
34
- fullscreen?: boolean;
35
- /** Controls auto-hide delay (ms) */
36
- controlsHideDelay?: number;
37
- /** Custom theme colors */
38
- theme?: PlexTheme;
39
- /** Subtitle options */
40
- subtitles?: SubtitleOptions;
41
- /** Ads configuration */
42
- ads?: AdsOptions;
43
- /** Playlist configuration */
44
- playlist?: PlaylistOptions;
45
- /** Localization */
46
- i18n?: I18nOptions;
47
- }
48
-
49
- export interface PlexTheme {
50
- /** Primary accent color */
51
- primary?: string;
52
- /** Primary hover color */
53
- primaryHover?: string;
54
- /** Background color */
55
- background?: string;
56
- /** Text primary color */
57
- textPrimary?: string;
58
- /** Text secondary color */
59
- textSecondary?: string;
60
- /** Border radius */
61
- borderRadius?: string;
62
- }
63
-
64
- export interface SubtitleOptions {
65
- /** Default font size (px) */
66
- fontSize?: number;
67
- /** Default font family */
68
- fontFamily?: string;
69
- /** Default text color */
70
- color?: string;
71
- /** Default background color */
72
- background?: string;
73
- /** Default position ('bottom' | 'top') */
74
- position?: 'bottom' | 'top';
75
- }
76
-
77
- export interface AdsOptions {
78
- /** Enable ads */
79
- enabled?: boolean;
80
- /** Skip delay (seconds) */
81
- skipDelay?: number;
82
- /** Show skip button */
83
- showSkip?: boolean;
84
- /** VAST timeout (ms) */
85
- vastTimeout?: number;
86
- /** Max VAST wrapper depth */
87
- maxWrapperDepth?: number;
88
- /** Preroll VAST URL */
89
- preroll?: string;
90
- /** Postroll VAST URL */
91
- postroll?: string;
92
- /** Midroll configuration */
93
- midrolls?: MidrollConfig[];
94
- }
95
-
96
- export interface MidrollConfig {
97
- /** Time in seconds */
98
- time: number;
99
- /** VAST URL */
100
- vastUrl: string;
101
- }
102
-
103
- export interface PlaylistOptions {
104
- /** Enable autoplay next */
105
- autoplayNext?: boolean;
106
- /** Shuffle by default */
107
- shuffle?: boolean;
108
- /** Repeat mode */
109
- repeat?: 'none' | 'one' | 'all';
110
- }
111
-
112
- export interface I18nOptions {
113
- play?: string;
114
- pause?: string;
115
- mute?: string;
116
- unmute?: string;
117
- fullscreen?: string;
118
- exitFullscreen?: string;
119
- pip?: string;
120
- settings?: string;
121
- subtitles?: string;
122
- speed?: string;
123
- quality?: string;
124
- playlist?: string;
125
- advertisement?: string;
126
- skipAd?: string;
127
- learnMore?: string;
128
- }
129
-
130
- export interface VideoSource {
131
- /** Video URL */
132
- src: string;
133
- /** MIME type */
134
- type?: string;
135
- /** Quality label */
136
- label?: string;
137
- /** Resolution */
138
- resolution?: number;
139
- }
140
-
141
- export interface PlaylistItem {
142
- /** Unique ID */
143
- id?: string;
144
- /** Video URL or sources */
145
- src: string | VideoSource[];
146
- /** Video title */
147
- title?: string;
148
- /** Video poster/thumbnail */
149
- poster?: string;
150
- /** Video duration (seconds) */
151
- duration?: number;
152
- /** Subtitles */
153
- subtitles?: SubtitleTrack[];
154
- /** Custom metadata */
155
- metadata?: Record<string, unknown>;
156
- }
157
-
158
- export interface SubtitleTrack {
159
- /** Subtitle URL */
160
- src: string;
161
- /** Language code */
162
- lang: string;
163
- /** Display label */
164
- label: string;
165
- /** Is default */
166
- default?: boolean;
167
- }
168
-
169
- export interface PlayerState {
170
- /** Is playing */
171
- playing: boolean;
172
- /** Is paused */
173
- paused: boolean;
174
- /** Is ended */
175
- ended: boolean;
176
- /** Is seeking */
177
- seeking: boolean;
178
- /** Is buffering/waiting */
179
- waiting: boolean;
180
- /** Is muted */
181
- muted: boolean;
182
- /** Current volume (0-1) */
183
- volume: number;
184
- /** Current time (seconds) */
185
- currentTime: number;
186
- /** Duration (seconds) */
187
- duration: number;
188
- /** Buffered percentage (0-100) */
189
- buffered: number;
190
- /** Progress percentage (0-100) */
191
- progress: number;
192
- /** Playback rate */
193
- playbackRate: number;
194
- /** Is fullscreen */
195
- fullscreen: boolean;
196
- /** Is in PiP mode */
197
- pip: boolean;
198
- /** Is casting */
199
- casting: boolean;
200
- /** Current quality */
201
- quality: string | null;
202
- /** Current subtitle */
203
- subtitle: string | null;
204
- }
205
-
206
- export type PlayerEvent =
207
- | 'play'
208
- | 'pause'
209
- | 'ended'
210
- | 'timeupdate'
211
- | 'progress'
212
- | 'seeking'
213
- | 'seeked'
214
- | 'volumechange'
215
- | 'ratechange'
216
- | 'loadstart'
217
- | 'loadedmetadata'
218
- | 'loadeddata'
219
- | 'canplay'
220
- | 'canplaythrough'
221
- | 'waiting'
222
- | 'playing'
223
- | 'error'
224
- | 'fullscreenchange'
225
- | 'pipchange'
226
- | 'castchange'
227
- | 'qualitychange'
228
- | 'subtitlechange'
229
- | 'playlistchange'
230
- | 'adstart'
231
- | 'adend'
232
- | 'adskip'
233
- | 'aderror'
234
- | 'destroy';
235
-
236
- export type PlayerEventCallback<T = unknown> = (data: T) => void;
237
-
238
- export class PlexPlayer {
239
- /** Player version */
240
- static readonly version: string;
241
-
242
- /** Create player instance */
243
- constructor(options: PlexPlayerOptions);
244
-
245
- /** Load video source */
246
- load(source: string | VideoSource | VideoSource[]): Promise<void>;
247
-
248
- /** Load playlist */
249
- loadPlaylist(items: PlaylistItem[]): void;
250
-
251
- /** Play video */
252
- play(): Promise<void>;
253
-
254
- /** Pause video */
255
- pause(): void;
256
-
257
- /** Toggle play/pause */
258
- togglePlay(): void;
259
-
260
- /** Stop playback */
261
- stop(): void;
262
-
263
- /** Seek to time (seconds) */
264
- seek(time: number): void;
265
-
266
- /** Seek to percentage (0-100) */
267
- seekPercent(percent: number): void;
268
-
269
- /** Set volume (0-1) */
270
- setVolume(volume: number): void;
271
-
272
- /** Get current volume */
273
- getVolume(): number;
274
-
275
- /** Mute */
276
- mute(): void;
277
-
278
- /** Unmute */
279
- unmute(): void;
280
-
281
- /** Toggle mute */
282
- toggleMute(): void;
283
-
284
- /** Is muted */
285
- isMuted(): boolean;
286
-
287
- /** Set playback rate */
288
- setPlaybackRate(rate: number): void;
289
-
290
- /** Get playback rate */
291
- getPlaybackRate(): number;
292
-
293
- /** Enter fullscreen */
294
- enterFullscreen(): Promise<void>;
295
-
296
- /** Exit fullscreen */
297
- exitFullscreen(): Promise<void>;
298
-
299
- /** Toggle fullscreen */
300
- toggleFullscreen(): void;
301
-
302
- /** Is fullscreen */
303
- isFullscreen(): boolean;
304
-
305
- /** Enter Picture-in-Picture */
306
- enterPiP(): Promise<void>;
307
-
308
- /** Exit Picture-in-Picture */
309
- exitPiP(): Promise<void>;
310
-
311
- /** Toggle Picture-in-Picture */
312
- togglePiP(): void;
313
-
314
- /** Is in PiP mode */
315
- isPiP(): boolean;
316
-
317
- /** Start casting */
318
- cast(): Promise<void>;
319
-
320
- /** Stop casting */
321
- stopCast(): void;
322
-
323
- /** Is casting */
324
- isCasting(): boolean;
325
-
326
- /** Get cast device name */
327
- getCastDeviceName(): string | null;
328
-
329
- /** Add subtitle track */
330
- addSubtitle(track: SubtitleTrack): void;
331
-
332
- /** Set active subtitle */
333
- setSubtitle(index: number | null): void;
334
-
335
- /** Get subtitles list */
336
- getSubtitles(): SubtitleTrack[];
337
-
338
- /** Set quality */
339
- setQuality(index: number): void;
340
-
341
- /** Get qualities list */
342
- getQualities(): VideoSource[];
343
-
344
- /** Play VAST ad */
345
- playAd(vastUrl: string): Promise<void>;
346
-
347
- /** Schedule preroll ad */
348
- schedulePreroll(vastUrl: string): void;
349
-
350
- /** Schedule midroll ad */
351
- scheduleMidroll(time: number, vastUrl: string): void;
352
-
353
- /** Schedule postroll ad */
354
- schedulePostroll(vastUrl: string): void;
355
-
356
- /** Skip current ad */
357
- skipAd(): void;
358
-
359
- /** Is ad playing */
360
- isAdPlaying(): boolean;
361
-
362
- /** Playlist: play next */
363
- next(): void;
364
-
365
- /** Playlist: play previous */
366
- previous(): void;
367
-
368
- /** Playlist: play by index */
369
- playAt(index: number): void;
370
-
371
- /** Playlist: toggle shuffle */
372
- toggleShuffle(): void;
373
-
374
- /** Playlist: set repeat mode */
375
- setRepeat(mode: 'none' | 'one' | 'all'): void;
376
-
377
- /** Playlist: get current index */
378
- getCurrentIndex(): number;
379
-
380
- /** Playlist: get items */
381
- getPlaylist(): PlaylistItem[];
382
-
383
- /** Get current player state */
384
- getState(): PlayerState;
385
-
386
- /** Get video element */
387
- getVideoElement(): HTMLVideoElement;
388
-
389
- /** Get container element */
390
- getContainer(): HTMLElement;
391
-
392
- /** Add event listener */
393
- on<T = unknown>(event: PlayerEvent, callback: PlayerEventCallback<T>): void;
394
-
395
- /** Remove event listener */
396
- off<T = unknown>(event: PlayerEvent, callback: PlayerEventCallback<T>): void;
397
-
398
- /** Add one-time event listener */
399
- once<T = unknown>(event: PlayerEvent, callback: PlayerEventCallback<T>): void;
400
-
401
- /** Destroy player instance */
402
- destroy(): void;
403
- }
404
-
405
- export default PlexPlayer;
406
- }
407
-
408
- declare module '@frameset/plex-player/react' {
409
- import { FC, RefObject } from 'react';
410
- import { PlexPlayer, PlexPlayerOptions, PlaylistItem, PlayerEvent, PlayerEventCallback } from '@frameset/plex-player';
411
-
412
- export interface PlexPlayerProps extends Omit<PlexPlayerOptions, 'container'> {
413
- /** Video source URL */
414
- src?: string;
415
- /** Playlist items */
416
- playlist?: PlaylistItem[];
417
- /** CSS class name */
418
- className?: string;
419
- /** Inline styles */
420
- style?: React.CSSProperties;
421
- /** Player ref */
422
- playerRef?: RefObject<PlexPlayer | null>;
423
- /** Event callbacks */
424
- onPlay?: () => void;
425
- onPause?: () => void;
426
- onEnded?: () => void;
427
- onTimeUpdate?: (time: number) => void;
428
- onProgress?: (buffered: number) => void;
429
- onVolumeChange?: (volume: number, muted: boolean) => void;
430
- onFullscreenChange?: (isFullscreen: boolean) => void;
431
- onError?: (error: Error) => void;
432
- onReady?: (player: PlexPlayer) => void;
433
- }
434
-
435
- export const PlexPlayerReact: FC<PlexPlayerProps>;
436
- export const usePlexPlayer: () => PlexPlayer | null;
437
- export default PlexPlayerReact;
438
- }
439
-
440
- declare module '@frameset/plex-player/vue' {
441
- import { DefineComponent, Ref } from 'vue';
442
- import { PlexPlayer, PlexPlayerOptions, PlaylistItem } from '@frameset/plex-player';
443
-
444
- export interface PlexPlayerVueProps extends Omit<PlexPlayerOptions, 'container'> {
445
- src?: string;
446
- playlist?: PlaylistItem[];
447
- }
448
-
449
- export const PlexPlayerVue: DefineComponent<PlexPlayerVueProps>;
450
- export const usePlexPlayer: () => Ref<PlexPlayer | null>;
451
- export default PlexPlayerVue;
452
- }
453
-
454
- declare module '@frameset/plex-player/css' {
455
- const css: string;
456
- export default css;
457
- }