@devix-technologies/react-gjirafa-vp-player 1.0.27 → 1.0.29

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/dist/App.d.ts +2 -0
  2. package/dist/components/Feedback.d.ts +25 -0
  3. package/dist/components/VPPlayer/index.d.ts +2 -0
  4. package/dist/components/VPPlayer/ui/index.d.ts +1 -0
  5. package/dist/components/VPPlayer/ui/styled.d.ts +42 -0
  6. package/dist/config/index.d.ts +1 -0
  7. package/dist/config/vpPlayerConfig.d.ts +9 -0
  8. package/dist/constants/configs.d.ts +22 -0
  9. package/dist/constants/index.d.ts +1 -0
  10. package/dist/constants/storybook.d.ts +9 -0
  11. package/dist/constants/styles.d.ts +11 -0
  12. package/dist/constants/urls.d.ts +18 -0
  13. package/dist/constants/vpPlayer.d.ts +47 -0
  14. package/dist/contexts/VPPlayerContext.d.ts +52 -0
  15. package/dist/contexts/index.d.ts +1 -0
  16. package/dist/features/VPPlayer.d.ts +41 -0
  17. package/dist/features/stories/ads/Ads.stories.d.ts +20 -0
  18. package/dist/features/stories/context/Context.stories.d.ts +10 -0
  19. package/dist/features/stories/index.d.ts +3 -0
  20. package/dist/features/stories/playback/Playback.stories.d.ts +38 -0
  21. package/dist/fixtures/index.d.ts +1 -0
  22. package/dist/fixtures/playlist.d.ts +11 -0
  23. package/dist/hooks/index.d.ts +4 -0
  24. package/dist/hooks/useVPPlayerEvents.d.ts +24 -0
  25. package/dist/hooks/useVPPlayerLogic.d.ts +22 -0
  26. package/dist/hooks/useVPPlayerScript.d.ts +13 -0
  27. package/dist/hooks/useVideoData.d.ts +19 -0
  28. package/dist/index.d.ts +9 -0
  29. package/dist/interfaces/config.d.ts +314 -0
  30. package/dist/interfaces/index.d.ts +3 -0
  31. package/dist/interfaces/instance.d.ts +73 -0
  32. package/dist/interfaces/props.d.ts +77 -0
  33. package/dist/main.d.ts +0 -0
  34. package/dist/react-gjirafa-vp-player.es.js +785 -791
  35. package/dist/react-gjirafa-vp-player.umd.js +8 -8
  36. package/dist/types/api.types.d.ts +81 -0
  37. package/dist/types/index.d.ts +2 -0
  38. package/dist/types/playerEvents.types.d.ts +67 -0
  39. package/dist/utils/index.d.ts +2 -0
  40. package/dist/utils/vpPlayerConfigBuilder.d.ts +30 -0
  41. package/dist/utils/vpPlayerUtils.d.ts +8 -0
  42. package/package.json +21 -16
@@ -0,0 +1,314 @@
1
+ /**
2
+ * Interface describing the advertising configuration options for the VP Player.
3
+ *
4
+ * @interface
5
+ * @see {@link https://vp.gjirafa.tech/documentation/docs/web-player/setup-the-player/advertising}
6
+ */
7
+ export interface VPPlayerAdsConfig {
8
+ skipAd?: {
9
+ state: boolean;
10
+ skipFrom: number;
11
+ };
12
+ vmap?: string;
13
+ VPAIDmode?: string;
14
+ enableProgrammability?: boolean;
15
+ functions?: Array<{
16
+ isDynamicKey: boolean;
17
+ isDynamicValue: boolean;
18
+ key: string;
19
+ order: number;
20
+ value: string;
21
+ }>;
22
+ bidding?: boolean;
23
+ afterMidrollBacktrack?: {
24
+ state: boolean;
25
+ seconds: number;
26
+ };
27
+ adBreaks?: Array<{
28
+ adTagUrl: string[];
29
+ breakType?: 'preroll' | 'midroll' | 'postroll';
30
+ breakTimingType?: 'time' | 'percentage' | 'playlist';
31
+ breakTimingValue?: number;
32
+ schedule?: {
33
+ type?: 'CUSTOM' | 'RECURRING';
34
+ ranges?: Array<{
35
+ startTime?: number;
36
+ endTime?: number;
37
+ count?: number;
38
+ breaks?: number[];
39
+ }>;
40
+ algorithm?: 'PASSIVE' | 'AGGRESSIVE' | 'SIMILAR_DISTANCE' | 'CUSTOM';
41
+ protectFirst?: number;
42
+ protectLast?: number;
43
+ occurEvery?: number;
44
+ liveCount?: number;
45
+ };
46
+ }>;
47
+ bidders?: Array<{
48
+ name: string;
49
+ params?: Array<{
50
+ paramName?: string;
51
+ paramType?: string;
52
+ paramValue?: string;
53
+ }>;
54
+ }>;
55
+ adsRequireInteraction?: boolean;
56
+ }
57
+ /**
58
+ * Interface defining the configuration options for the VP Player.
59
+ *
60
+ * @interface
61
+ * @see {@link https://vp.gjirafa.tech/documentation/docs/web-player/setup-the-player/configuration}
62
+ * @see {@link https://vp.gjirafa.tech/documentation/docs/web-player/setup-the-player/playing}
63
+ * @see {@link https://vp.gjirafa.tech/documentation/docs/web-player/setup-the-player/advertising}
64
+ * @see {@link https://vp.gjirafa.tech/documentation/docs/web-player/setup-the-player/styling}
65
+ * @see {@link https://vp.gjirafa.tech/documentation/docs/web-player/setup-the-player/localization}
66
+ * @see {@link https://vp.gjirafa.tech/documentation/docs/web-player/setup-the-player/full-configuration}
67
+ */
68
+ export interface VPPlayerConfig {
69
+ projectId?: string;
70
+ video: {
71
+ videoId?: string;
72
+ ads?: VPPlayerAdsConfig;
73
+ advertising?: boolean;
74
+ file?: string;
75
+ title?: string;
76
+ description?: string;
77
+ publishDate?: string;
78
+ duration?: number;
79
+ thumbnail?: string;
80
+ filmstrip?: string;
81
+ author?: string;
82
+ source?: string;
83
+ tags?: string[];
84
+ tracks?: Array<{
85
+ file: string;
86
+ label: string;
87
+ kind: string;
88
+ default?: boolean;
89
+ }>;
90
+ playlist?: {
91
+ state: boolean;
92
+ playlistVideoIndex: number;
93
+ videos: Array<{
94
+ videoId?: string;
95
+ mediaId?: string;
96
+ title: string;
97
+ thumbnailUrl?: string;
98
+ duration?: number;
99
+ file?: string;
100
+ hlsUrl?: string;
101
+ }>;
102
+ };
103
+ };
104
+ config: {
105
+ adAnnouncement?: {
106
+ state?: boolean;
107
+ timeBeforeAd?: number;
108
+ };
109
+ autostartOnLoad?: {
110
+ state?: boolean;
111
+ onMobile?: boolean;
112
+ onData?: boolean;
113
+ };
114
+ adsRequireInteraction?: boolean;
115
+ autoplay?: boolean;
116
+ pauseOtherVideos?: boolean;
117
+ focusOnAutostart?: boolean;
118
+ muted?: boolean;
119
+ loop?: boolean;
120
+ size?: {
121
+ sizeType?: string;
122
+ aspectRatio?: string;
123
+ width?: number | string;
124
+ height?: number | string;
125
+ };
126
+ showRelatedOnPause?: {
127
+ state?: boolean;
128
+ onMobile?: boolean;
129
+ from?: number;
130
+ };
131
+ float?: {
132
+ state: boolean;
133
+ onMobile: boolean;
134
+ position: string;
135
+ dismissible: boolean;
136
+ requiresInteraction: boolean;
137
+ toVideoThreshold: number;
138
+ toFloatThreshold: number;
139
+ style: {
140
+ width: number;
141
+ border: string;
142
+ };
143
+ };
144
+ controls?: {
145
+ theaterButton?: boolean;
146
+ settingsButton?: boolean;
147
+ chromecastButton?: boolean;
148
+ nextButton?: boolean;
149
+ fullscreenButton?: boolean;
150
+ airplayButton?: boolean;
151
+ bigPlayButton?: boolean;
152
+ autopausePlayButton?: boolean;
153
+ pictureInPictureButton?: boolean;
154
+ relatedButton?: boolean;
155
+ volumeButton?: boolean;
156
+ shareButton?: boolean;
157
+ subtitlesButton?: boolean;
158
+ showCaptions?: boolean;
159
+ };
160
+ logo?: {
161
+ state?: boolean;
162
+ file?: string;
163
+ position?: string;
164
+ defaultOpacity?: number;
165
+ inactiveOpacity?: number;
166
+ onClickURL?: string;
167
+ };
168
+ skin?: {
169
+ controlBar?: {
170
+ background?: string;
171
+ spread?: "solid" | "gradient";
172
+ gradientMidPoint?: number;
173
+ text?: string;
174
+ icons?: {
175
+ default?: string;
176
+ hover?: string;
177
+ };
178
+ timeslider?: {
179
+ progress?: string;
180
+ rail?: string;
181
+ buffer?: string;
182
+ dragger?: string;
183
+ };
184
+ timesliderOnAd?: {
185
+ progress?: string;
186
+ rail?: string;
187
+ buffer?: string;
188
+ dragger?: string;
189
+ };
190
+ volume?: {
191
+ dragger?: string;
192
+ progress?: string;
193
+ rail?: string;
194
+ notifier?: string;
195
+ };
196
+ };
197
+ menus?: {
198
+ background?: {
199
+ default?: string;
200
+ hover?: string;
201
+ };
202
+ links?: {
203
+ default?: string;
204
+ hover?: string;
205
+ };
206
+ autoplay?: {
207
+ autoplayOn?: string;
208
+ autoplayOff?: string;
209
+ };
210
+ };
211
+ nextVideo?: {
212
+ background?: string;
213
+ text?: string;
214
+ timeslider?: {
215
+ rail?: string;
216
+ progress?: string;
217
+ };
218
+ icons?: {
219
+ play?: {
220
+ default?: string;
221
+ hover?: string;
222
+ };
223
+ close?: string;
224
+ };
225
+ };
226
+ playlist?: {
227
+ background?: string;
228
+ text?: string;
229
+ icons?: {
230
+ arrows?: {
231
+ active?: string;
232
+ inactive?: string;
233
+ };
234
+ close?: string;
235
+ };
236
+ card?: {
237
+ background?: string;
238
+ title?: string;
239
+ duration?: {
240
+ text?: string;
241
+ background?: string;
242
+ };
243
+ icons?: {
244
+ play?: {
245
+ default?: string;
246
+ hover?: string;
247
+ };
248
+ };
249
+ };
250
+ };
251
+ };
252
+ lang?: {
253
+ locale?: string;
254
+ controls?: {
255
+ play?: string;
256
+ pause?: string;
257
+ next?: string;
258
+ replay?: string;
259
+ volume?: string;
260
+ mute?: string;
261
+ unmute?: string;
262
+ settings?: string;
263
+ theater?: string;
264
+ fullscreen?: string;
265
+ chromecast?: string;
266
+ airplay?: string;
267
+ pictureInPicture?: string;
268
+ related?: string;
269
+ skipIntro?: string;
270
+ skipAd?: string;
271
+ playlistTitle?: string;
272
+ upNext?: string;
273
+ live?: string;
274
+ continueAfterPause?: string;
275
+ };
276
+ settings?: {
277
+ quality?: string;
278
+ subtitles?: string;
279
+ autoplay?: string;
280
+ playbackRate?: string;
281
+ auto?: string;
282
+ off?: string;
283
+ normal?: string;
284
+ share?: string;
285
+ };
286
+ ads?: {
287
+ ad?: string;
288
+ skip?: string;
289
+ skipIn?: string;
290
+ visit?: string;
291
+ info?: string;
292
+ simultaneousAds?: string;
293
+ adAnnouncement?: string;
294
+ };
295
+ messages?: {
296
+ playbackErrorTitle?: string;
297
+ playbackErrorDescription?: string;
298
+ geoBlockedTitle?: string;
299
+ geoBlockedDescription?: string;
300
+ streamInterruptedTitle?: string;
301
+ streamInterruptedDescription?: string;
302
+ };
303
+ };
304
+ ads?: VPPlayerAdsConfig;
305
+ };
306
+ }
307
+ /**
308
+ * Default configuration object for the VP Player.
309
+ *
310
+ * @constant
311
+ * @type {VPPlayerConfig}
312
+ * @see {@link https://vp.gjirafa.tech/documentation/docs/web-player/setup-the-player/configuration}
313
+ */
314
+ export declare const defaultVPPlayerConfig: VPPlayerConfig;
@@ -0,0 +1,3 @@
1
+ export * from './props';
2
+ export * from './instance';
3
+ export * from './config';
@@ -0,0 +1,73 @@
1
+ import { VPPlayerConfig } from './config';
2
+ /**
3
+ * Interface representing an instance of the VP Player.
4
+ * Based on VP Player API Reference: https://vp.gjirafa.tech/documentation/docs/web-player/api-reference
5
+ * And VP Vertical Player API Reference: https://vp.gjirafa.tech/documentation/docs/vertical-player/api-reference
6
+ *
7
+ * @interface
8
+ */
9
+ export interface VPPlayerInstance {
10
+ setup: (config: VPPlayerConfig) => void;
11
+ destroy?: () => void;
12
+ play?: () => void;
13
+ pause?: () => void;
14
+ forward?: () => void;
15
+ rewind?: () => void;
16
+ replay?: () => void;
17
+ seek?: (position: number) => void;
18
+ mute?: () => void;
19
+ unmute?: () => void;
20
+ enterFullScreen?: () => void;
21
+ exitFullScreen?: () => void;
22
+ enterFullscreen?: () => void;
23
+ exitFullscreen?: () => void;
24
+ enterPictureInPicture?: () => void;
25
+ exitPictureInPicture?: () => void;
26
+ floating?: () => void;
27
+ isFloating?: () => boolean;
28
+ getFloatStyle?: () => unknown;
29
+ setFloatingHlsLevels?: (levels: unknown) => void;
30
+ floatingStateCounter?: number;
31
+ nextVideo?: () => void;
32
+ previousVideo?: () => void;
33
+ switchToIndex?: (index: number) => void;
34
+ switch?: (video: unknown) => void;
35
+ playNewVideo?: (video: unknown) => void;
36
+ togglePlay?: () => void;
37
+ toggleMute?: () => void;
38
+ isMuted?: () => boolean;
39
+ isPlaying?: () => boolean;
40
+ isPaused?: () => boolean;
41
+ isFullscreen?: () => boolean;
42
+ isEnded?: () => boolean;
43
+ isFocused?: () => boolean;
44
+ getPosition?: () => number;
45
+ getBuffered?: () => number;
46
+ getVolume?: () => number;
47
+ getContainer?: () => HTMLElement;
48
+ getDuration?: () => number;
49
+ getQualityLevels?: () => unknown[];
50
+ getCurrentQuality?: () => number;
51
+ checkViewability?: () => boolean;
52
+ setConfig?: (config: unknown) => void;
53
+ setVideo?: (video: unknown) => void;
54
+ setPlaylist?: (playlist: unknown) => void;
55
+ setVolume?: (volume: number) => void;
56
+ setCurrentQuality?: (index: number) => void;
57
+ setLevelToAuto?: () => void;
58
+ setCuePoint?: (cue: number, callback: () => void) => void;
59
+ on?: (event: string, callback: (data?: unknown) => void) => void;
60
+ off?: (event: string, callback?: (data?: unknown) => void) => void;
61
+ videoIndex?: number;
62
+ playlist?: {
63
+ state: boolean;
64
+ playlistId: string;
65
+ playlistVideoIndex: number;
66
+ videos: unknown[];
67
+ };
68
+ multipleVideos?: Map<number, unknown>;
69
+ firstInList?: boolean;
70
+ lastInList?: boolean;
71
+ setupComplete?: boolean;
72
+ initialized?: boolean;
73
+ }
@@ -0,0 +1,77 @@
1
+ import { VPPlayerConfig } from './config';
2
+ import { CurrentVideoData, PlaylistItem, PlayerEventCallbacks, PlayerTrackingMetadata } from '../../../../../../../src/types';
3
+ /**
4
+ * Interface defining the parameters for configuring the VP Player instance.
5
+ *
6
+ * @interface
7
+ */
8
+ export interface PlayerParams {
9
+ playerId: string;
10
+ config?: Partial<VPPlayerConfig>;
11
+ videoId?: string;
12
+ projectId?: string;
13
+ videoUrl?: string;
14
+ playlistId?: string;
15
+ scriptUrl?: string;
16
+ version?: string | null;
17
+ thumbnailUrl?: string;
18
+ isReels?: boolean;
19
+ hiddenClasses?: string[];
20
+ className?: string;
21
+ onPlaylistData?: (videos: PlaylistItem[]) => void;
22
+ }
23
+ /**
24
+ * Interface for the VP Player context, providing methods and state for controlling the player.
25
+ *
26
+ * @interface
27
+ */
28
+ export interface VPPlayerContextType {
29
+ showPlayer: (params: PlayerParams) => void;
30
+ hidePlayer: () => void;
31
+ isPlayerVisible: boolean;
32
+ playerParams: PlayerParams | null;
33
+ }
34
+ /**
35
+ * Interface defining the properties for the VP Player component.
36
+ *
37
+ * @interface
38
+ */
39
+ export interface VPPlayerProps {
40
+ playerId: string;
41
+ config?: Partial<VPPlayerConfig>;
42
+ videoId?: string;
43
+ projectId?: string;
44
+ videoUrl?: string;
45
+ playlistId?: string;
46
+ scriptUrl?: string;
47
+ version?: string | null;
48
+ isReels?: boolean;
49
+ thumbnailUrl?: string;
50
+ onClose?: () => void;
51
+ hiddenClasses?: string[];
52
+ isPlayerVisible?: boolean;
53
+ className?: string;
54
+ onPlaylistData?: (videos: PlaylistItem[]) => void;
55
+ onVideoStarted?: (videoData: CurrentVideoData) => void;
56
+ /**
57
+ * Video metadata for tracking/analytics callbacks
58
+ */
59
+ trackingMetadata?: PlayerTrackingMetadata;
60
+ onPlayerStart?: PlayerEventCallbacks["onPlayerStart"];
61
+ onPlayerPlay?: PlayerEventCallbacks["onPlayerPlay"];
62
+ onPlayerPause?: PlayerEventCallbacks["onPlayerPause"];
63
+ onPlayerResume?: PlayerEventCallbacks["onPlayerResume"];
64
+ onPlayerEnd?: PlayerEventCallbacks["onPlayerEnd"];
65
+ onPlayerProgressEvery10Seconds?: PlayerEventCallbacks["onPlayerProgressEvery10Seconds"];
66
+ onPlayerProgressAt20Seconds?: PlayerEventCallbacks["onPlayerProgressAt20Seconds"];
67
+ onPlayerQuartile25?: PlayerEventCallbacks["onPlayerQuartile25"];
68
+ onPlayerQuartile50?: PlayerEventCallbacks["onPlayerQuartile50"];
69
+ onPlayerQuartile75?: PlayerEventCallbacks["onPlayerQuartile75"];
70
+ onPlayerNext?: PlayerEventCallbacks["onPlayerNext"];
71
+ onPlayerPrevious?: PlayerEventCallbacks["onPlayerPrevious"];
72
+ /**
73
+ * Universal callback for all events - called in addition to specific callbacks
74
+ * this gives us all event in one callback
75
+ */
76
+ onPlayerEvent?: PlayerEventCallbacks["onPlayerEvent"];
77
+ }
package/dist/main.d.ts ADDED
File without changes