@devix-technologies/react-gjirafa-vp-player 1.0.31-beta.5 → 1.0.31-beta.8

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/index.d.ts CHANGED
@@ -10,6 +10,78 @@ import { VPPlayerInstance as VPPlayerInstance_2 } from '../../../../../../../src
10
10
  import { VPPlayerProps as VPPlayerProps_2 } from '../../../../../../../src/interfaces';
11
11
  import { VPPlayerRef as VPPlayerRef_2 } from '../../../../../../../src/interfaces';
12
12
 
13
+ /**
14
+ * Ad announcement configuration
15
+ */
16
+ export declare interface AdAnnouncementConfig {
17
+ state: boolean;
18
+ timeBeforeAd: number;
19
+ }
20
+
21
+ /**
22
+ * Ad break configuration
23
+ */
24
+ export declare interface AdBreak {
25
+ adTagUrl: string[];
26
+ breakType: "preroll" | "midroll" | "postroll";
27
+ breakTimingType: "time" | "percentage" | "playlist";
28
+ breakTimingValue: number;
29
+ }
30
+
31
+ /**
32
+ * Ad function configuration
33
+ */
34
+ export declare interface AdFunction {
35
+ isDynamicKey: boolean;
36
+ isDynamicValue: boolean;
37
+ key: string;
38
+ order: number;
39
+ value: string;
40
+ }
41
+
42
+ /**
43
+ * Advertising configuration
44
+ */
45
+ export declare interface AdsConfig {
46
+ skipAd?: AdSkipConfig;
47
+ vmap?: string;
48
+ VPAIDmode?: string;
49
+ enableProgrammability?: boolean;
50
+ functions?: AdFunction[];
51
+ bidding?: boolean;
52
+ afterMidrollBacktrack?: AfterMidrollBacktrack;
53
+ adBreaks?: AdBreak[];
54
+ bidders?: BidderConfig[];
55
+ }
56
+
57
+ /**
58
+ * Ad skip configuration
59
+ */
60
+ export declare interface AdSkipConfig {
61
+ state: boolean;
62
+ skipFrom: number;
63
+ }
64
+
65
+ /**
66
+ * Ads localization
67
+ */
68
+ export declare interface AdsLang {
69
+ ad?: string;
70
+ skip?: string;
71
+ skipIn?: string;
72
+ visit?: string;
73
+ info?: string;
74
+ simultaneousAds?: string;
75
+ }
76
+
77
+ /**
78
+ * After midroll backtrack configuration
79
+ */
80
+ export declare interface AfterMidrollBacktrack {
81
+ state: boolean;
82
+ seconds: number;
83
+ }
84
+
13
85
  /**
14
86
  * Appends the divId query parameter to a script URL.
15
87
  * This tells the managed script which DOM element to use as the player container.
@@ -23,6 +95,118 @@ import { VPPlayerRef as VPPlayerRef_2 } from '../../../../../../../src/interface
23
95
  */
24
96
  export declare const appendDivIdToUrl: (url: string, divId: string) => string;
25
97
 
98
+ /**
99
+ * Autopause on viewable configuration
100
+ */
101
+ export declare interface AutopauseOnViewableConfig {
102
+ state: boolean;
103
+ percentageViewable?: number;
104
+ }
105
+
106
+ /**
107
+ * Autoplay toggle skin
108
+ */
109
+ export declare interface AutoplaySkin {
110
+ autoplayOn?: string;
111
+ autoplayOff?: string;
112
+ }
113
+
114
+ /**
115
+ * Autostart on load configuration
116
+ */
117
+ export declare interface AutostartOnLoadConfig {
118
+ state: boolean;
119
+ onMobile?: boolean;
120
+ onData?: boolean;
121
+ }
122
+
123
+ /**
124
+ * Autostart on viewable configuration
125
+ */
126
+ export declare interface AutostartOnViewableConfig {
127
+ state: boolean;
128
+ onMobile?: boolean;
129
+ onData?: boolean;
130
+ percentageViewable?: number;
131
+ }
132
+
133
+ /**
134
+ * Bidder configuration
135
+ */
136
+ export declare interface BidderConfig {
137
+ name: string;
138
+ params: Record<string, string>;
139
+ }
140
+
141
+ /**
142
+ * Control bar skin configuration
143
+ */
144
+ export declare interface ControlBarSkin {
145
+ background?: string;
146
+ text?: string;
147
+ icons?: IconsSkin;
148
+ timeslider?: TimesliderSkin;
149
+ volume?: VolumeSkin;
150
+ timesliderOnAd?: TimesliderSkin;
151
+ }
152
+
153
+ /**
154
+ * Controls visibility configuration
155
+ */
156
+ export declare interface ControlsConfig {
157
+ theaterButton?: boolean;
158
+ settingsButton?: boolean;
159
+ chromecastButton?: boolean;
160
+ nextButton?: boolean;
161
+ fullscreenButton?: boolean;
162
+ airplayButton?: boolean;
163
+ bigPlayButton?: boolean;
164
+ pictureInPictureButton?: boolean;
165
+ relatedButton?: boolean;
166
+ volumeButton?: boolean;
167
+ shareButton?: boolean;
168
+ subtitlesButton?: boolean;
169
+ showCaptions?: boolean;
170
+ audioOnlyButton?: boolean;
171
+ rewindButton?: boolean;
172
+ forwardButton?: boolean;
173
+ chaptersButton?: boolean;
174
+ showHelperButton?: boolean | null;
175
+ helperButtonImage?: string;
176
+ showLiveIcon?: boolean | null;
177
+ delayLiveVideosTime?: number;
178
+ delayLiveVideos?: boolean | null;
179
+ showAutoPlay?: boolean | null;
180
+ showQualities?: boolean | null;
181
+ }
182
+
183
+ /**
184
+ * Controls localization
185
+ */
186
+ export declare interface ControlsLang {
187
+ play?: string;
188
+ pause?: string;
189
+ next?: string;
190
+ replay?: string;
191
+ volume?: string;
192
+ mute?: string;
193
+ unmute?: string;
194
+ settings?: string;
195
+ theater?: string;
196
+ fullscreen?: string;
197
+ chromecast?: string;
198
+ airplay?: string;
199
+ pictureInPicture?: string;
200
+ related?: string;
201
+ skipIntro?: string;
202
+ skipAd?: string;
203
+ adAnnouncement?: string;
204
+ playlistTitle?: string;
205
+ upNext?: string;
206
+ live?: string;
207
+ continueAfterPause?: string;
208
+ }
209
+
26
210
  /**
27
211
  * Represents data about the currently playing video.
28
212
  * Used in onVideoStarted callback.
@@ -48,6 +232,20 @@ export declare interface CurrentVideoData {
48
232
  description?: string;
49
233
  }
50
234
 
235
+ /**
236
+ * VP Player Configuration Types
237
+ *
238
+ * Fully typed configuration based on VP Player documentation.
239
+ * @see {@link https://vp.gjirafa.tech/documentation/docs/web-player/setup-the-player/full-configuration}
240
+ * @see {@link https://vp.gjirafa.tech/documentation/docs/vertical-player/setup-the-player/configration}
241
+ */
242
+ /**
243
+ * Deep partial utility type - makes all nested properties optional
244
+ */
245
+ export declare type DeepPartial<T> = T extends object ? {
246
+ [P in keyof T]?: DeepPartial<T[P]>;
247
+ } : T;
248
+
51
249
  /**
52
250
  * Event callback refs interface for internal use
53
251
  * Prevents stale closures in event handlers
@@ -56,7 +254,6 @@ export declare interface EventCallbackRefs {
56
254
  onReady?: () => void;
57
255
  onPlay?: () => void;
58
256
  onPause?: () => void;
59
- onResume?: () => void;
60
257
  onComplete?: () => void;
61
258
  onError?: (error: string) => void;
62
259
  onVideoStarted?: (data: CurrentVideoData_2) => void;
@@ -70,6 +267,28 @@ export declare interface EventCallbackRefs {
70
267
  onProgress20s?: (seconds: number) => void;
71
268
  }
72
269
 
270
+ /**
271
+ * Float (picture-in-picture) configuration
272
+ */
273
+ export declare interface FloatConfig {
274
+ state: boolean;
275
+ onMobile?: boolean;
276
+ position?: "TOP_LEFT" | "TOP_RIGHT" | "BOTTOM_LEFT" | "BOTTOM_RIGHT";
277
+ dismissible?: boolean;
278
+ requiresInteraction?: boolean;
279
+ toVideoThreshold?: number;
280
+ toFloatThreshold?: number;
281
+ style?: FloatStyleConfig;
282
+ }
283
+
284
+ /**
285
+ * Float style configuration
286
+ */
287
+ export declare interface FloatStyleConfig {
288
+ width: number;
289
+ border?: string;
290
+ }
291
+
73
292
  /**
74
293
  * Generates a full player DOM element ID based on provided playerId and videoId.
75
294
  * Falls back to "default" if playerId is not provided.
@@ -117,14 +336,74 @@ export declare const getPlayerScriptUrl: (playerVersion: string) => string;
117
336
  export declare const getVerticalPlayerScriptUrl: (scriptId: string) => string;
118
337
 
119
338
  /**
120
- * Manual playlist configuration
121
- * Used when you want to provide your own videos array instead of using GTech admin playlists
339
+ * Icons skin configuration
340
+ */
341
+ export declare interface IconsSkin {
342
+ default?: string;
343
+ hover?: string;
344
+ }
345
+
346
+ /**
347
+ * Full localization configuration
348
+ */
349
+ export declare interface LangConfig {
350
+ locale?: string;
351
+ controls?: ControlsLang;
352
+ settings?: SettingsLang;
353
+ ads?: AdsLang;
354
+ }
355
+
356
+ /**
357
+ * Logo configuration
358
+ */
359
+ export declare interface LogoConfig {
360
+ state: boolean;
361
+ file?: string;
362
+ position?: "TOP_LEFT" | "TOP_RIGHT" | "BOTTOM_LEFT" | "BOTTOM_RIGHT";
363
+ defaultOpacity?: number;
364
+ inactiveOpacity?: number;
365
+ onClickURL?: string;
366
+ }
367
+
368
+ /**
369
+ * Menu background skin
370
+ */
371
+ export declare interface MenuBackgroundSkin {
372
+ default?: string;
373
+ hover?: string;
374
+ }
375
+
376
+ /**
377
+ * Menu links skin
378
+ */
379
+ export declare interface MenuLinksSkin {
380
+ default?: string;
381
+ hover?: string;
382
+ }
383
+
384
+ /**
385
+ * Menus skin configuration
386
+ */
387
+ export declare interface MenusSkin {
388
+ background?: MenuBackgroundSkin;
389
+ links?: MenuLinksSkin;
390
+ autoplay?: AutoplaySkin;
391
+ }
392
+
393
+ /**
394
+ * Next video skin configuration
122
395
  */
123
- export declare interface ManualPlaylistConfig {
124
- /** Array of videos to play */
125
- videos: PlaylistVideoItem[];
126
- /** Starting video index (0-based) */
127
- startIndex?: number;
396
+ export declare interface NextVideoSkin {
397
+ background?: string;
398
+ text?: string;
399
+ timeslider?: {
400
+ rail?: string;
401
+ progress?: string;
402
+ };
403
+ icons?: {
404
+ play?: PlayIconSkin;
405
+ close?: string;
406
+ };
128
407
  }
129
408
 
130
409
  /**
@@ -219,6 +498,36 @@ export declare interface PlayerObject {
219
498
  progress?: number;
220
499
  }
221
500
 
501
+ /**
502
+ * Player settings configuration (the `config` object in VP Player)
503
+ */
504
+ export declare interface PlayerSettingsConfig {
505
+ configId?: string;
506
+ size?: SizeConfig;
507
+ adAnnouncement?: AdAnnouncementConfig;
508
+ autoplay?: boolean;
509
+ autostartOnLoad?: AutostartOnLoadConfig;
510
+ autostartOnViewable?: AutostartOnViewableConfig;
511
+ autopauseOnViewable?: AutopauseOnViewableConfig;
512
+ pauseOtherVideos?: boolean;
513
+ focusOnAutostart?: boolean;
514
+ showRelatedOnPause?: ShowRelatedOnPauseConfig;
515
+ playbackRates?: number[];
516
+ volume?: number;
517
+ muted?: boolean;
518
+ loop?: boolean;
519
+ casting?: boolean;
520
+ debug?: boolean;
521
+ skipAmount?: number;
522
+ adsRequireInteraction?: boolean;
523
+ float?: FloatConfig;
524
+ controls?: ControlsConfig;
525
+ logo?: LogoConfig;
526
+ socialMedia?: unknown[];
527
+ lang?: LangConfig;
528
+ skin?: SkinConfig;
529
+ }
530
+
222
531
  /**
223
532
  * Tracking metadata for analytics (available in v1.0.23+)
224
533
  */
@@ -245,6 +554,14 @@ as?: React.ElementType;
245
554
  className?: string;
246
555
  }, DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
247
556
 
557
+ /**
558
+ * Play icon skin
559
+ */
560
+ export declare interface PlayIconSkin {
561
+ default?: string;
562
+ hover?: string;
563
+ }
564
+
248
565
  /**
249
566
  * API response structure for fetching playlist data.
250
567
  *
@@ -254,6 +571,47 @@ export declare interface PlaylistApiResponse {
254
571
  result: PlaylistItem[];
255
572
  }
256
573
 
574
+ /**
575
+ * Playlist arrows skin
576
+ */
577
+ export declare interface PlaylistArrowsSkin {
578
+ active?: string;
579
+ inactive?: string;
580
+ }
581
+
582
+ /**
583
+ * Playlist card duration skin
584
+ */
585
+ export declare interface PlaylistCardDurationSkin {
586
+ text?: string;
587
+ background?: string;
588
+ }
589
+
590
+ /**
591
+ * Playlist card skin
592
+ */
593
+ export declare interface PlaylistCardSkin {
594
+ background?: string;
595
+ title?: string;
596
+ duration?: PlaylistCardDurationSkin;
597
+ icons?: {
598
+ play?: PlayIconSkin;
599
+ };
600
+ }
601
+
602
+ /**
603
+ * Playlist configuration
604
+ */
605
+ export declare interface PlaylistConfig {
606
+ state: boolean;
607
+ playlistId: string;
608
+ playlistVideoIndex: number;
609
+ highlightCurrentVideo?: boolean;
610
+ algorithm?: string;
611
+ title?: string;
612
+ videos: PlaylistVideoConfig[];
613
+ }
614
+
257
615
  /**
258
616
  * Represents an item in a video playlist.
259
617
  *
@@ -274,35 +632,99 @@ export declare interface PlaylistItem {
274
632
  }
275
633
 
276
634
  /**
277
- * Video item for manual playlist
635
+ * Playlist skin configuration
278
636
  */
279
- export declare interface PlaylistVideoItem {
280
- /** Unique video identifier */
637
+ export declare interface PlaylistSkin {
638
+ background?: string;
639
+ text?: string;
640
+ icons?: {
641
+ arrows?: PlaylistArrowsSkin;
642
+ close?: string;
643
+ };
644
+ card?: PlaylistCardSkin;
645
+ }
646
+
647
+ /**
648
+ * Playlist video item in config
649
+ */
650
+ export declare interface PlaylistVideoConfig {
281
651
  videoId: string;
282
- /** Video title */
283
652
  title: string;
284
- /** Video file URL (mp4, m3u8, etc.) */
285
653
  file: string;
286
- /** Alternative: HLS URL */
287
- hlsUrl?: string;
288
- /** Thumbnail image URL */
289
654
  thumbnailUrl?: string;
290
- /** Alternative: Thumbnail URL */
291
- thumbnail?: string;
292
- /** Video duration in seconds */
293
655
  duration?: number;
294
656
  }
295
657
 
658
+ /**
659
+ * Settings localization
660
+ */
661
+ export declare interface SettingsLang {
662
+ quality?: string;
663
+ subtitles?: string;
664
+ autoplay?: string;
665
+ playbackRate?: string;
666
+ auto?: string;
667
+ off?: string;
668
+ normal?: string;
669
+ share?: string;
670
+ }
671
+
672
+ /**
673
+ * Show related on pause configuration
674
+ */
675
+ export declare interface ShowRelatedOnPauseConfig {
676
+ state: boolean;
677
+ onMobile?: boolean;
678
+ from?: number;
679
+ }
680
+
681
+ /**
682
+ * Size configuration
683
+ */
684
+ export declare interface SizeConfig {
685
+ sizeType: "RESPONSIVE" | "FIXED";
686
+ aspectRatio?: "16:9" | "9:16" | "4:3" | "1:1";
687
+ width?: number;
688
+ height?: number;
689
+ }
690
+
691
+ /**
692
+ * Full skin configuration
693
+ */
694
+ export declare interface SkinConfig {
695
+ controlBar?: ControlBarSkin;
696
+ menus?: MenusSkin;
697
+ nextVideo?: NextVideoSkin;
698
+ playlist?: PlaylistSkin;
699
+ }
700
+
701
+ /**
702
+ * Skip intro configuration
703
+ */
704
+ export declare interface SkipIntroConfig {
705
+ state: boolean;
706
+ skipFrom: number;
707
+ skipTo: number;
708
+ }
709
+
710
+ /**
711
+ * Timeslider skin configuration
712
+ */
713
+ export declare interface TimesliderSkin {
714
+ progress?: string;
715
+ rail?: string;
716
+ buffer?: string | null;
717
+ dragger?: string;
718
+ }
719
+
296
720
  /**
297
721
  * VP Player logic hook
298
722
  *
299
723
  * Supports two modes:
300
724
  * 1. **Auto-init mode** (default): Load managed script that auto-initializes with GTech admin config
301
- * 2. **Manual playlist mode**: Build config and call setup() with custom videos array
302
- *
303
- * The manual playlist mode is required for vertical player when supplying your own videos.
725
+ * 2. **Config override mode**: Fetch config, merge user overrides, and call setup()
304
726
  */
305
- export declare const useVPPlayerLogic: ({ scriptId, videoId, scriptUrl, projectId, playlist, playerId, isVertical, isReels, onReady, onPlay, onPause, onResume, onComplete, onError, onVideoStarted, onTimeUpdate, onQuartile25, onQuartile50, onQuartile75, onNext, onPrevious, onProgress10s, onProgress20s, }: VPPlayerProps_2) => {
727
+ export declare const useVPPlayerLogic: ({ scriptId, videoId, scriptUrl, projectId, config, playerId, isVertical, isReels, onReady, onPlay, onPause, onComplete, onError, onVideoStarted, onTimeUpdate, onQuartile25, onQuartile50, onQuartile75, onNext, onPrevious, onProgress10s, onProgress20s, }: VPPlayerProps_2) => {
306
728
  playerRef: RefObject<HTMLDivElement | null>;
307
729
  playerInstanceRef: RefObject<VPPlayerInstance_2 | null>;
308
730
  isScriptLoaded: boolean;
@@ -347,6 +769,33 @@ export declare interface VideoApiResponse {
347
769
  };
348
770
  }
349
771
 
772
+ /**
773
+ * Video configuration
774
+ */
775
+ export declare interface VideoConfig {
776
+ videoId?: string;
777
+ assetId?: string;
778
+ fpsCertificateUrl?: string;
779
+ widevineLicenseUrl?: string;
780
+ related?: string;
781
+ file?: string;
782
+ title?: string;
783
+ duration?: number;
784
+ description?: string;
785
+ live?: boolean;
786
+ liveType?: string;
787
+ thumbnail?: string;
788
+ filmstrip?: string;
789
+ tracks?: unknown[];
790
+ startTime?: number;
791
+ skipIntro?: SkipIntroConfig;
792
+ flags?: VideoFlag[];
793
+ playlist?: PlaylistConfig;
794
+ advertising?: boolean;
795
+ adId?: string;
796
+ ads?: AdsConfig;
797
+ }
798
+
350
799
  /**
351
800
  * Result structure returned by the video data fetching logic.
352
801
  *
@@ -359,17 +808,34 @@ export declare interface VideoDataResult {
359
808
  error: string | null;
360
809
  }
361
810
 
811
+ /**
812
+ * Video flag/tag
813
+ */
814
+ export declare interface VideoFlag {
815
+ id: number;
816
+ name: string;
817
+ }
818
+
819
+ /**
820
+ * Volume skin configuration
821
+ */
822
+ export declare interface VolumeSkin {
823
+ dragger?: string;
824
+ progress?: string;
825
+ rail?: string;
826
+ notifier?: string;
827
+ }
828
+
362
829
  /**
363
830
  * Base URL for the VP Player host.
364
831
  */
365
832
  export declare const VP_PLAYER_BASE_URL = "https://host.vpplayer.tech";
366
833
 
367
834
  /**
368
- * VP Player Component (v2.0.0)
835
+ * VP Player Component
369
836
  *
370
837
  * A thin React wrapper for the GTech VP Player.
371
- * All configuration is managed through the GTech admin panel -
372
- * this wrapper just provides a DOM container, loads the script, and exposes events.
838
+ * Configuration can be managed through the GTech admin panel or via the `config` prop.
373
839
  *
374
840
  * ## Basic Usage
375
841
  *
@@ -405,23 +871,25 @@ export declare const VP_PLAYER_BASE_URL = "https://host.vpplayer.tech";
405
871
  * console.log(playerRef.current?.getPosition());
406
872
  * ```
407
873
  *
408
- * ## Manual Playlist Mode (Vertical Player)
874
+ * ## Config Override Mode
409
875
  *
410
- * For vertical player with custom videos array:
876
+ * Override the fetched configuration with custom settings:
411
877
  *
412
878
  * ```tsx
413
879
  * <VPPlayer
414
- * scriptId="rbqcdwzlg"
415
- * projectId="agmipnzb"
416
- * isVertical={true}
417
- * playlist={{
418
- * videos: [
419
- * { videoId: "1", title: "Video 1", file: "https://...mp4", thumbnailUrl: "...", duration: 120 },
420
- * { videoId: "2", title: "Video 2", file: "https://...mp4", thumbnailUrl: "...", duration: 150 },
421
- * ],
422
- * startIndex: 0,
880
+ * scriptId="ptkzurnx"
881
+ * videoId="vjsobqhe"
882
+ * config={{
883
+ * config: {
884
+ * muted: true,
885
+ * autoplay: true,
886
+ * skin: {
887
+ * controlBar: {
888
+ * background: 'rgba(0,0,0,0.8)'
889
+ * }
890
+ * }
891
+ * }
423
892
  * }}
424
- * onNext={() => console.log('Next video')}
425
893
  * />
426
894
  * ```
427
895
  *
@@ -444,33 +912,14 @@ export declare const VP_PLAYER_BASE_URL = "https://host.vpplayer.tech";
444
912
  export declare const VPPlayer: ForwardRefExoticComponent<VPPlayerProps_2 & RefAttributes<VPPlayerRef_2>>;
445
913
 
446
914
  /**
447
- * VP Player Configuration Types (v2.0.0)
448
- *
449
- * NOTE: In v2.0.0, configuration is managed through the GTech admin panel.
450
- * These types are kept for reference only - the React wrapper does NOT
451
- * pass configuration to the SDK. The managed script auto-initializes
452
- * with all settings from the admin panel.
453
- *
454
- * @see {@link https://vp.gjirafa.tech/documentation/docs/web-player/setup-the-player/configuration}
455
- */
456
- /**
457
- * Advertising configuration interface (reference only)
458
- * Configured through GTech admin panel
915
+ * Full VP Player configuration
916
+ * This is the root configuration object passed to vpPlayer().setup()
459
917
  */
460
- export declare interface VPPlayerAdsConfig {
461
- skipAd?: {
462
- state: boolean;
463
- skipFrom: number;
464
- };
465
- vmap?: string;
466
- VPAIDmode?: string;
467
- enableProgrammability?: boolean;
468
- adBreaks?: Array<{
469
- adTagUrl: string[];
470
- breakType?: "preroll" | "midroll" | "postroll";
471
- breakTimingType?: "time" | "percentage" | "playlist";
472
- breakTimingValue?: number;
473
- }>;
918
+ export declare interface VPPlayerConfig {
919
+ projectId?: string;
920
+ biskoId?: string;
921
+ video?: VideoConfig;
922
+ config?: PlayerSettingsConfig;
474
923
  }
475
924
 
476
925
  /**
@@ -540,10 +989,10 @@ export declare interface VPPlayerInstance {
540
989
  }
541
990
 
542
991
  /**
543
- * Simplified props interface for VPPlayer v2.0.0
992
+ * Simplified props interface for VPPlayer
544
993
  *
545
- * The wrapper is now a thin bridge to the GTech JS player.
546
- * All configuration is managed through the GTech admin panel.
994
+ * The wrapper is a thin bridge to the GTech JS player.
995
+ * Configuration can be managed through the GTech admin panel or via the `config` prop.
547
996
  *
548
997
  * @interface VPPlayerProps
549
998
  */
@@ -564,34 +1013,42 @@ export declare interface VPPlayerProps {
564
1013
  */
565
1014
  scriptUrl?: string;
566
1015
  /**
567
- * GTech project ID (required for manual playlist mode)
1016
+ * GTech project ID
1017
+ * Convenience prop that gets merged into config.projectId
1018
+ * Can also be set directly in the config prop
568
1019
  */
569
1020
  projectId?: string;
570
1021
  /**
571
- * Manual playlist configuration - provide your own videos array.
572
- * When provided, the wrapper will call setup() with the built config
573
- * instead of relying on auto-initialization.
1022
+ * Player configuration overrides.
1023
+ * When provided, the wrapper will:
1024
+ * 1. Try to fetch the JSON config from VP Player API
1025
+ * 2. Deep merge your overrides into the fetched config
1026
+ * 3. Call setup() with the merged configuration
574
1027
  *
575
- * IMPORTANT: This is required for vertical player when you want to
576
- * supply your own videos (not using GTech admin playlists).
1028
+ * If fetch fails, your config will be used directly.
577
1029
  *
578
1030
  * @example
579
1031
  * ```tsx
580
1032
  * <VPPlayer
581
- * scriptId="rbqcdwzlg"
582
- * projectId="agmipnzb"
583
- * isVertical={true}
584
- * playlist={{
585
- * videos: [
586
- * { videoId: "1", title: "Video 1", file: "https://...mp4", thumbnailUrl: "...", duration: 120 },
587
- * { videoId: "2", title: "Video 2", file: "https://...mp4", thumbnailUrl: "...", duration: 150 },
588
- * ],
589
- * startIndex: 0,
1033
+ * scriptId="ptkzurnx"
1034
+ * videoId="vjsobqhe"
1035
+ * config={{
1036
+ * config: {
1037
+ * muted: true,
1038
+ * autoplay: true,
1039
+ * skin: {
1040
+ * controlBar: {
1041
+ * background: 'rgba(0,0,0,0.8)'
1042
+ * }
1043
+ * }
1044
+ * }
590
1045
  * }}
591
1046
  * />
592
1047
  * ```
1048
+ *
1049
+ * @see {@link https://vp.gjirafa.tech/documentation/docs/web-player/setup-the-player/full-configuration}
593
1050
  */
594
- playlist?: ManualPlaylistConfig;
1051
+ config?: DeepPartial<VPPlayerConfig>;
595
1052
  /**
596
1053
  * Custom container ID for the player div
597
1054
  * Auto-generated if not provided
@@ -636,10 +1093,6 @@ export declare interface VPPlayerProps {
636
1093
  * Called when playback is paused
637
1094
  */
638
1095
  onPause?: () => void;
639
- /**
640
- * Called when playback resumes after pause
641
- */
642
- onResume?: () => void;
643
1096
  /**
644
1097
  * Called when video playback completes
645
1098
  */
@@ -728,4 +1181,14 @@ export declare interface VPPlayerRef {
728
1181
  isFullscreen: () => boolean;
729
1182
  }
730
1183
 
1184
+ /**
1185
+ * VP Vertical Player configuration
1186
+ * Similar to VPPlayerConfig but optimized for vertical video
1187
+ */
1188
+ export declare interface VPVerticalPlayerConfig {
1189
+ projectId?: string;
1190
+ video?: VideoConfig;
1191
+ config?: PlayerSettingsConfig;
1192
+ }
1193
+
731
1194
  export { }