@devix-technologies/react-gjirafa-vp-player 1.0.31-beta.0 → 1.0.31-beta.11
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/README.md +216 -98
- package/dist/index.d.ts +828 -524
- package/dist/react-gjirafa-vp-player.es.js +1078 -1246
- package/dist/react-gjirafa-vp-player.umd.js +8 -8
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,66 +1,210 @@
|
|
|
1
1
|
import { CurrentVideoData as CurrentVideoData_2 } from '../../../../../../../src/types';
|
|
2
|
-
import { default as default_2 } from 'react';
|
|
3
2
|
import { DetailedHTMLProps } from 'react';
|
|
3
|
+
import { ForwardRefExoticComponent } from 'react';
|
|
4
4
|
import { HTMLAttributes } from 'react';
|
|
5
|
-
import {
|
|
6
|
-
import { PlayerEventCallbacks as PlayerEventCallbacks_2 } from '../../../../../../../src/types';
|
|
7
|
-
import { PlayerTrackingMetadata as PlayerTrackingMetadata_2 } from '../../../../../../../src/types';
|
|
8
|
-
import { PlaylistItem as PlaylistItem_2 } from '../../../../../../../src/types';
|
|
5
|
+
import { RefAttributes } from 'react';
|
|
9
6
|
import { RefObject } from 'react';
|
|
10
7
|
import { StyledComponent } from '@emotion/styled';
|
|
11
8
|
import { Theme } from '@emotion/react';
|
|
12
|
-
import { VPPlayerConfig as VPPlayerConfig_2 } from '../../../../../../../src/interfaces';
|
|
13
|
-
import { VPPlayerConfig as VPPlayerConfig_3 } from '../../../../../../../src/interfaces/config';
|
|
14
9
|
import { VPPlayerInstance as VPPlayerInstance_2 } from '../../../../../../../src/interfaces';
|
|
15
10
|
import { VPPlayerProps as VPPlayerProps_2 } from '../../../../../../../src/interfaces';
|
|
11
|
+
import { VPPlayerRef as VPPlayerRef_2 } from '../../../../../../../src/interfaces';
|
|
16
12
|
|
|
17
|
-
/**
|
|
18
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Ad announcement configuration
|
|
15
|
+
*/
|
|
16
|
+
export declare interface AdAnnouncementConfig {
|
|
17
|
+
state: boolean;
|
|
18
|
+
timeBeforeAd: number;
|
|
19
|
+
}
|
|
19
20
|
|
|
20
|
-
/**
|
|
21
|
-
|
|
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
|
+
}
|
|
22
30
|
|
|
23
31
|
/**
|
|
24
|
-
*
|
|
32
|
+
* Ad function configuration
|
|
25
33
|
*/
|
|
26
|
-
export declare
|
|
34
|
+
export declare interface AdFunction {
|
|
35
|
+
isDynamicKey: boolean;
|
|
36
|
+
isDynamicValue: boolean;
|
|
37
|
+
key: string;
|
|
38
|
+
order: number;
|
|
39
|
+
value: string;
|
|
40
|
+
}
|
|
27
41
|
|
|
28
42
|
/**
|
|
29
|
-
*
|
|
43
|
+
* Advertising configuration
|
|
30
44
|
*/
|
|
31
|
-
export declare
|
|
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
|
+
}
|
|
32
56
|
|
|
33
57
|
/**
|
|
34
|
-
*
|
|
58
|
+
* Ad skip configuration
|
|
35
59
|
*/
|
|
36
|
-
export declare
|
|
60
|
+
export declare interface AdSkipConfig {
|
|
61
|
+
state: boolean;
|
|
62
|
+
skipFrom: number;
|
|
63
|
+
}
|
|
37
64
|
|
|
38
|
-
/**
|
|
39
|
-
|
|
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
|
+
}
|
|
40
76
|
|
|
41
77
|
/**
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* For vertical player with playlist, BOTH video.file AND video.playlist are needed.
|
|
45
|
-
* The video.file should contain the URL of the current/first video to play.
|
|
46
|
-
*
|
|
47
|
-
* @function
|
|
48
|
-
* @param {ConfigBuilderOptions} options - Options for building the configuration
|
|
49
|
-
* @returns {VPPlayerConfig} - The final configuration object for the player
|
|
50
|
-
* @throws {Error} - Throws error if no valid video source is found
|
|
78
|
+
* After midroll backtrack configuration
|
|
51
79
|
*/
|
|
52
|
-
export declare
|
|
80
|
+
export declare interface AfterMidrollBacktrack {
|
|
81
|
+
state: boolean;
|
|
82
|
+
seconds: number;
|
|
83
|
+
}
|
|
53
84
|
|
|
54
85
|
/**
|
|
55
|
-
*
|
|
86
|
+
* Appends the divId query parameter to a script URL.
|
|
87
|
+
* This tells the managed script which DOM element to use as the player container.
|
|
56
88
|
*
|
|
57
|
-
* @
|
|
89
|
+
* @param url - The base script URL
|
|
90
|
+
* @param divId - The DOM element ID for the player container
|
|
91
|
+
* @returns The URL with ?divId= parameter appended
|
|
92
|
+
* @example
|
|
93
|
+
* appendDivIdToUrl('https://host.vpplayer.tech/player/ptkzurnx/vjsobqhe.js', 'my-player')
|
|
94
|
+
* // Returns: 'https://host.vpplayer.tech/player/ptkzurnx/vjsobqhe.js?divId=my-player'
|
|
58
95
|
*/
|
|
59
|
-
declare
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
96
|
+
export declare const appendDivIdToUrl: (url: string, divId: string) => string;
|
|
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;
|
|
64
208
|
}
|
|
65
209
|
|
|
66
210
|
/**
|
|
@@ -89,44 +233,179 @@ export declare interface CurrentVideoData {
|
|
|
89
233
|
}
|
|
90
234
|
|
|
91
235
|
/**
|
|
92
|
-
*
|
|
236
|
+
* VP Player Configuration Types
|
|
93
237
|
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
* @constant
|
|
99
|
-
* @type {VPPlayerConfig}
|
|
100
|
-
* @see {@link https://vp.gjirafa.tech/documentation/docs/web-player/setup-the-player/configuration}
|
|
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}
|
|
101
241
|
*/
|
|
102
|
-
|
|
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;
|
|
103
248
|
|
|
104
|
-
/**
|
|
105
|
-
|
|
249
|
+
/**
|
|
250
|
+
* Event callback refs interface for internal use
|
|
251
|
+
* Prevents stale closures in event handlers
|
|
252
|
+
*/
|
|
253
|
+
export declare interface EventCallbackRefs {
|
|
254
|
+
onReady?: (data?: CurrentVideoData_2) => void;
|
|
255
|
+
onPlay?: (data?: CurrentVideoData_2) => void;
|
|
256
|
+
onPause?: () => void;
|
|
257
|
+
onResume?: () => void;
|
|
258
|
+
onComplete?: () => void;
|
|
259
|
+
onError?: (error: string) => void;
|
|
260
|
+
onVideoStarted?: (data: CurrentVideoData_2) => void;
|
|
261
|
+
onTimeUpdate?: (seconds: number) => void;
|
|
262
|
+
onQuartile25?: () => void;
|
|
263
|
+
onQuartile50?: () => void;
|
|
264
|
+
onQuartile75?: () => void;
|
|
265
|
+
onNext?: () => void;
|
|
266
|
+
onPrevious?: () => void;
|
|
267
|
+
onProgress10s?: (seconds: number) => void;
|
|
268
|
+
onProgress20s?: (seconds: number) => void;
|
|
269
|
+
}
|
|
106
270
|
|
|
107
271
|
/**
|
|
108
|
-
*
|
|
272
|
+
* Float (picture-in-picture) configuration
|
|
273
|
+
*/
|
|
274
|
+
export declare interface FloatConfig {
|
|
275
|
+
state: boolean;
|
|
276
|
+
onMobile?: boolean;
|
|
277
|
+
position?: "TOP_LEFT" | "TOP_RIGHT" | "BOTTOM_LEFT" | "BOTTOM_RIGHT";
|
|
278
|
+
dismissible?: boolean;
|
|
279
|
+
requiresInteraction?: boolean;
|
|
280
|
+
toVideoThreshold?: number;
|
|
281
|
+
toFloatThreshold?: number;
|
|
282
|
+
style?: FloatStyleConfig;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Float style configuration
|
|
287
|
+
*/
|
|
288
|
+
export declare interface FloatStyleConfig {
|
|
289
|
+
width: number;
|
|
290
|
+
border?: string;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Generates a full player DOM element ID based on provided playerId and videoId.
|
|
295
|
+
* Falls back to "default" if playerId is not provided.
|
|
109
296
|
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
|
|
297
|
+
* @param playerId - Base identifier for the player.
|
|
298
|
+
* @param videoId - Optional video identifier.
|
|
299
|
+
* @returns Full DOM element ID string.
|
|
300
|
+
*/
|
|
301
|
+
export declare const generatePlayerId: (playerId?: string, videoId?: string) => string;
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Generates the URL for a FULLY managed video-specific player script.
|
|
305
|
+
* This script auto-initializes with all config from GTech admin panel -
|
|
306
|
+
* NO .setup() call needed! Chapters, ads, controls, etc. are all pre-configured.
|
|
114
307
|
*
|
|
115
|
-
* @
|
|
116
|
-
* @param {string}
|
|
117
|
-
* @returns {string
|
|
308
|
+
* @param {string} scriptId - The player script ID (e.g., 'ptkzurnx').
|
|
309
|
+
* @param {string} videoId - The video ID (e.g., 'vjsobqhe').
|
|
310
|
+
* @returns {string} - The complete URL for the fully managed player script.
|
|
311
|
+
* @example
|
|
312
|
+
* // Returns: https://host.vpplayer.tech/player/ptkzurnx/vjsobqhe.js
|
|
313
|
+
* getFullyManagedPlayerScriptUrl('ptkzurnx', 'vjsobqhe')
|
|
314
|
+
*/
|
|
315
|
+
export declare const getFullyManagedPlayerScriptUrl: (scriptId: string, videoId: string) => string;
|
|
316
|
+
|
|
317
|
+
/**
|
|
318
|
+
* Generates the URL for loading a managed VP Player script (Web Player).
|
|
319
|
+
* This script requires calling .setup() with your config.
|
|
320
|
+
* @param {string} scriptId - The unique script ID (e.g., 'ptkzurly').
|
|
321
|
+
* @returns {string} - The complete URL for the managed player script.
|
|
322
|
+
*/
|
|
323
|
+
export declare const getManagedPlayerScriptUrl: (scriptId: string) => string;
|
|
324
|
+
|
|
325
|
+
/**
|
|
326
|
+
* Generates the URL for loading the standard VP Player script by version.
|
|
327
|
+
* @param {string} playerVersion - The version of the VP Player script (e.g., 'latest', 'v2.1.1').
|
|
328
|
+
* @returns {string} - The complete URL for the player script.
|
|
329
|
+
*/
|
|
330
|
+
export declare const getPlayerScriptUrl: (playerVersion: string) => string;
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Generates the URL for loading a vertical VP Player script.
|
|
334
|
+
* @param {string} scriptId - The unique script ID (e.g., 'rbqcdwzlg').
|
|
335
|
+
* @returns {string} - The complete URL for the vertical player script.
|
|
336
|
+
*/
|
|
337
|
+
export declare const getVerticalPlayerScriptUrl: (scriptId: string) => string;
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* Icons skin configuration
|
|
341
|
+
*/
|
|
342
|
+
export declare interface IconsSkin {
|
|
343
|
+
default?: string;
|
|
344
|
+
hover?: string;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
* Full localization configuration
|
|
349
|
+
*/
|
|
350
|
+
export declare interface LangConfig {
|
|
351
|
+
locale?: string;
|
|
352
|
+
controls?: ControlsLang;
|
|
353
|
+
settings?: SettingsLang;
|
|
354
|
+
ads?: AdsLang;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* Logo configuration
|
|
359
|
+
*/
|
|
360
|
+
export declare interface LogoConfig {
|
|
361
|
+
state: boolean;
|
|
362
|
+
file?: string;
|
|
363
|
+
position?: "TOP_LEFT" | "TOP_RIGHT" | "BOTTOM_LEFT" | "BOTTOM_RIGHT";
|
|
364
|
+
defaultOpacity?: number;
|
|
365
|
+
inactiveOpacity?: number;
|
|
366
|
+
onClickURL?: string;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
/**
|
|
370
|
+
* Menu background skin
|
|
118
371
|
*/
|
|
119
|
-
export declare
|
|
372
|
+
export declare interface MenuBackgroundSkin {
|
|
373
|
+
default?: string;
|
|
374
|
+
hover?: string;
|
|
375
|
+
}
|
|
120
376
|
|
|
121
377
|
/**
|
|
122
|
-
*
|
|
123
|
-
* @param breakType - The type of ad break (e.g., "preroll", "postroll", "midroll").
|
|
124
|
-
* @param adTagUrls - Array of ad tag URLs to use for the ad break.
|
|
125
|
-
* @param breakTimingType - The timing type for the ad break (e.g., "time", "percentage", "playlist").
|
|
126
|
-
* @param breakTimingValue - The timing value for the ad break (e.g., 0 for immediate, 2 for playlist index).
|
|
127
|
-
* @returns A partial VPPlayerConfig with the ad configuration.
|
|
378
|
+
* Menu links skin
|
|
128
379
|
*/
|
|
129
|
-
export declare
|
|
380
|
+
export declare interface MenuLinksSkin {
|
|
381
|
+
default?: string;
|
|
382
|
+
hover?: string;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* Menus skin configuration
|
|
387
|
+
*/
|
|
388
|
+
export declare interface MenusSkin {
|
|
389
|
+
background?: MenuBackgroundSkin;
|
|
390
|
+
links?: MenuLinksSkin;
|
|
391
|
+
autoplay?: AutoplaySkin;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
/**
|
|
395
|
+
* Next video skin configuration
|
|
396
|
+
*/
|
|
397
|
+
export declare interface NextVideoSkin {
|
|
398
|
+
background?: string;
|
|
399
|
+
text?: string;
|
|
400
|
+
timeslider?: {
|
|
401
|
+
rail?: string;
|
|
402
|
+
progress?: string;
|
|
403
|
+
};
|
|
404
|
+
icons?: {
|
|
405
|
+
play?: PlayIconSkin;
|
|
406
|
+
close?: string;
|
|
407
|
+
};
|
|
408
|
+
}
|
|
130
409
|
|
|
131
410
|
/**
|
|
132
411
|
* Styled component for the full-screen overlay when the player is active.
|
|
@@ -141,12 +420,6 @@ as?: React.ElementType;
|
|
|
141
420
|
className?: string;
|
|
142
421
|
}, DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
143
422
|
|
|
144
|
-
/** URL for the Pexels thumbnail */
|
|
145
|
-
export declare const PEXELS_THUMBNAIL_URL = "https://images.pexels.com/videos/4678261/pexels-photo-4678261.jpeg?auto=compress&cs=tinysrgb&w=600";
|
|
146
|
-
|
|
147
|
-
/** URL for the Pexels vertical video */
|
|
148
|
-
export declare const PEXELS_VERTICAL_VIDEO_URL = "https://videos.pexels.com/video-files/4678261/4678261-hd_1080_1920_25fps.mp4";
|
|
149
|
-
|
|
150
423
|
/**
|
|
151
424
|
* Styled component for the video player container.
|
|
152
425
|
*
|
|
@@ -227,44 +500,33 @@ export declare interface PlayerObject {
|
|
|
227
500
|
}
|
|
228
501
|
|
|
229
502
|
/**
|
|
230
|
-
*
|
|
231
|
-
*
|
|
232
|
-
* @interface
|
|
233
|
-
*/
|
|
234
|
-
export declare interface PlayerParams {
|
|
235
|
-
playerId: string;
|
|
236
|
-
config?: Partial<VPPlayerConfig>;
|
|
237
|
-
videoId?: string;
|
|
238
|
-
projectId?: string;
|
|
239
|
-
videoUrl?: string;
|
|
240
|
-
playlistId?: string;
|
|
241
|
-
scriptUrl?: string;
|
|
242
|
-
version?: string | null;
|
|
243
|
-
thumbnailUrl?: string;
|
|
244
|
-
isReels?: boolean;
|
|
245
|
-
hiddenClasses?: string[];
|
|
246
|
-
className?: string;
|
|
247
|
-
onPlaylistData?: (videos: PlaylistItem_2[]) => void;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
/**
|
|
251
|
-
* Interface defining the parameters for initializing the VPPlayer.
|
|
252
|
-
*
|
|
253
|
-
* @interface PlayerParams
|
|
503
|
+
* Player settings configuration (the `config` object in VP Player)
|
|
254
504
|
*/
|
|
255
|
-
declare interface
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
505
|
+
export declare interface PlayerSettingsConfig {
|
|
506
|
+
configId?: string;
|
|
507
|
+
size?: SizeConfig;
|
|
508
|
+
adAnnouncement?: AdAnnouncementConfig;
|
|
509
|
+
autoplay?: boolean;
|
|
510
|
+
autostartOnLoad?: AutostartOnLoadConfig;
|
|
511
|
+
autostartOnViewable?: AutostartOnViewableConfig;
|
|
512
|
+
autopauseOnViewable?: AutopauseOnViewableConfig;
|
|
513
|
+
pauseOtherVideos?: boolean;
|
|
514
|
+
focusOnAutostart?: boolean;
|
|
515
|
+
showRelatedOnPause?: ShowRelatedOnPauseConfig;
|
|
516
|
+
playbackRates?: number[];
|
|
517
|
+
volume?: number;
|
|
518
|
+
muted?: boolean;
|
|
519
|
+
loop?: boolean;
|
|
520
|
+
casting?: boolean;
|
|
521
|
+
debug?: boolean;
|
|
522
|
+
skipAmount?: number;
|
|
523
|
+
adsRequireInteraction?: boolean;
|
|
524
|
+
float?: FloatConfig;
|
|
525
|
+
controls?: ControlsConfig;
|
|
526
|
+
logo?: LogoConfig;
|
|
527
|
+
socialMedia?: unknown[];
|
|
528
|
+
lang?: LangConfig;
|
|
529
|
+
skin?: SkinConfig;
|
|
268
530
|
}
|
|
269
531
|
|
|
270
532
|
/**
|
|
@@ -293,6 +555,14 @@ as?: React.ElementType;
|
|
|
293
555
|
className?: string;
|
|
294
556
|
}, DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
295
557
|
|
|
558
|
+
/**
|
|
559
|
+
* Play icon skin
|
|
560
|
+
*/
|
|
561
|
+
export declare interface PlayIconSkin {
|
|
562
|
+
default?: string;
|
|
563
|
+
hover?: string;
|
|
564
|
+
}
|
|
565
|
+
|
|
296
566
|
/**
|
|
297
567
|
* API response structure for fetching playlist data.
|
|
298
568
|
*
|
|
@@ -302,6 +572,47 @@ export declare interface PlaylistApiResponse {
|
|
|
302
572
|
result: PlaylistItem[];
|
|
303
573
|
}
|
|
304
574
|
|
|
575
|
+
/**
|
|
576
|
+
* Playlist arrows skin
|
|
577
|
+
*/
|
|
578
|
+
export declare interface PlaylistArrowsSkin {
|
|
579
|
+
active?: string;
|
|
580
|
+
inactive?: string;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
/**
|
|
584
|
+
* Playlist card duration skin
|
|
585
|
+
*/
|
|
586
|
+
export declare interface PlaylistCardDurationSkin {
|
|
587
|
+
text?: string;
|
|
588
|
+
background?: string;
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
/**
|
|
592
|
+
* Playlist card skin
|
|
593
|
+
*/
|
|
594
|
+
export declare interface PlaylistCardSkin {
|
|
595
|
+
background?: string;
|
|
596
|
+
title?: string;
|
|
597
|
+
duration?: PlaylistCardDurationSkin;
|
|
598
|
+
icons?: {
|
|
599
|
+
play?: PlayIconSkin;
|
|
600
|
+
};
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
/**
|
|
604
|
+
* Playlist configuration
|
|
605
|
+
*/
|
|
606
|
+
export declare interface PlaylistConfig {
|
|
607
|
+
state: boolean;
|
|
608
|
+
playlistId: string;
|
|
609
|
+
playlistVideoIndex: number;
|
|
610
|
+
highlightCurrentVideo?: boolean;
|
|
611
|
+
algorithm?: string;
|
|
612
|
+
title?: string;
|
|
613
|
+
videos: PlaylistVideoConfig[];
|
|
614
|
+
}
|
|
615
|
+
|
|
305
616
|
/**
|
|
306
617
|
* Represents an item in a video playlist.
|
|
307
618
|
*
|
|
@@ -322,19 +633,99 @@ export declare interface PlaylistItem {
|
|
|
322
633
|
}
|
|
323
634
|
|
|
324
635
|
/**
|
|
325
|
-
*
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
636
|
+
* Playlist skin configuration
|
|
637
|
+
*/
|
|
638
|
+
export declare interface PlaylistSkin {
|
|
639
|
+
background?: string;
|
|
640
|
+
text?: string;
|
|
641
|
+
icons?: {
|
|
642
|
+
arrows?: PlaylistArrowsSkin;
|
|
643
|
+
close?: string;
|
|
644
|
+
};
|
|
645
|
+
card?: PlaylistCardSkin;
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
/**
|
|
649
|
+
* Playlist video item in config
|
|
650
|
+
*/
|
|
651
|
+
export declare interface PlaylistVideoConfig {
|
|
652
|
+
videoId: string;
|
|
653
|
+
title: string;
|
|
654
|
+
file: string;
|
|
655
|
+
thumbnailUrl?: string;
|
|
656
|
+
duration?: number;
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
/**
|
|
660
|
+
* Settings localization
|
|
661
|
+
*/
|
|
662
|
+
export declare interface SettingsLang {
|
|
663
|
+
quality?: string;
|
|
664
|
+
subtitles?: string;
|
|
665
|
+
autoplay?: string;
|
|
666
|
+
playbackRate?: string;
|
|
667
|
+
auto?: string;
|
|
668
|
+
off?: string;
|
|
669
|
+
normal?: string;
|
|
670
|
+
share?: string;
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
/**
|
|
674
|
+
* Show related on pause configuration
|
|
330
675
|
*/
|
|
331
|
-
export declare
|
|
676
|
+
export declare interface ShowRelatedOnPauseConfig {
|
|
677
|
+
state: boolean;
|
|
678
|
+
onMobile?: boolean;
|
|
679
|
+
from?: number;
|
|
680
|
+
}
|
|
332
681
|
|
|
333
682
|
/**
|
|
334
|
-
*
|
|
335
|
-
* Uses native SDK events instead of manual progress tracking.
|
|
683
|
+
* Size configuration
|
|
336
684
|
*/
|
|
337
|
-
export declare
|
|
685
|
+
export declare interface SizeConfig {
|
|
686
|
+
sizeType: "RESPONSIVE" | "FIXED";
|
|
687
|
+
aspectRatio?: "16:9" | "9:16" | "4:3" | "1:1";
|
|
688
|
+
width?: number;
|
|
689
|
+
height?: number;
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
/**
|
|
693
|
+
* Full skin configuration
|
|
694
|
+
*/
|
|
695
|
+
export declare interface SkinConfig {
|
|
696
|
+
controlBar?: ControlBarSkin;
|
|
697
|
+
menus?: MenusSkin;
|
|
698
|
+
nextVideo?: NextVideoSkin;
|
|
699
|
+
playlist?: PlaylistSkin;
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
/**
|
|
703
|
+
* Skip intro configuration
|
|
704
|
+
*/
|
|
705
|
+
export declare interface SkipIntroConfig {
|
|
706
|
+
state: boolean;
|
|
707
|
+
skipFrom: number;
|
|
708
|
+
skipTo: number;
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
/**
|
|
712
|
+
* Timeslider skin configuration
|
|
713
|
+
*/
|
|
714
|
+
export declare interface TimesliderSkin {
|
|
715
|
+
progress?: string;
|
|
716
|
+
rail?: string;
|
|
717
|
+
buffer?: string | null;
|
|
718
|
+
dragger?: string;
|
|
719
|
+
}
|
|
720
|
+
|
|
721
|
+
/**
|
|
722
|
+
* VP Player logic hook
|
|
723
|
+
*
|
|
724
|
+
* Supports two modes:
|
|
725
|
+
* 1. **Auto-init mode** (default): Load managed script that auto-initializes with GTech admin config
|
|
726
|
+
* 2. **Config override mode**: Fetch config, merge user overrides, and call setup()
|
|
727
|
+
*/
|
|
728
|
+
export declare const useVPPlayerLogic: ({ scriptId, videoId, scriptUrl, projectId, config, playerId, isVertical, isReels, onReady, onPlay, onPause, onResume, onComplete, onError, onVideoStarted, onTimeUpdate, onQuartile25, onQuartile50, onQuartile75, onNext, onPrevious, onProgress10s, onProgress20s, }: VPPlayerProps_2) => {
|
|
338
729
|
playerRef: RefObject<HTMLDivElement | null>;
|
|
339
730
|
playerInstanceRef: RefObject<VPPlayerInstance_2 | null>;
|
|
340
731
|
isScriptLoaded: boolean;
|
|
@@ -379,6 +770,33 @@ export declare interface VideoApiResponse {
|
|
|
379
770
|
};
|
|
380
771
|
}
|
|
381
772
|
|
|
773
|
+
/**
|
|
774
|
+
* Video configuration
|
|
775
|
+
*/
|
|
776
|
+
export declare interface VideoConfig {
|
|
777
|
+
videoId?: string;
|
|
778
|
+
assetId?: string;
|
|
779
|
+
fpsCertificateUrl?: string;
|
|
780
|
+
widevineLicenseUrl?: string;
|
|
781
|
+
related?: string;
|
|
782
|
+
file?: string;
|
|
783
|
+
title?: string;
|
|
784
|
+
duration?: number;
|
|
785
|
+
description?: string;
|
|
786
|
+
live?: boolean;
|
|
787
|
+
liveType?: string;
|
|
788
|
+
thumbnail?: string;
|
|
789
|
+
filmstrip?: string;
|
|
790
|
+
tracks?: unknown[];
|
|
791
|
+
startTime?: number;
|
|
792
|
+
skipIntro?: SkipIntroConfig;
|
|
793
|
+
flags?: VideoFlag[];
|
|
794
|
+
playlist?: PlaylistConfig;
|
|
795
|
+
advertising?: boolean;
|
|
796
|
+
adId?: string;
|
|
797
|
+
ads?: AdsConfig;
|
|
798
|
+
}
|
|
799
|
+
|
|
382
800
|
/**
|
|
383
801
|
* Result structure returned by the video data fetching logic.
|
|
384
802
|
*
|
|
@@ -392,396 +810,132 @@ export declare interface VideoDataResult {
|
|
|
392
810
|
}
|
|
393
811
|
|
|
394
812
|
/**
|
|
395
|
-
* Video
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
* @param {string} [props.videoId] - ID of the video to be played.
|
|
402
|
-
* @param {string} [props.version] - Version of the player.
|
|
403
|
-
* @param {string} [props.videoUrl] - Direct video URL (bypasses API calls).
|
|
404
|
-
* @param {string} [props.projectId] - Project ID associated with the video.
|
|
405
|
-
* @param {string} [props.playlistId] - Playlist ID if playing a collection of videos.
|
|
406
|
-
* @param {string} [props.scriptUrl] - URL of the video player script.
|
|
407
|
-
* @param {object} [props.config={}] - Configuration settings for the player.
|
|
408
|
-
* @param {boolean} [props.isReels=false] - Determines if the player should behave as a short-video reel.
|
|
409
|
-
* @param {string[]} [props.hiddenClasses=[]] - CSS classes to hide player elements.
|
|
410
|
-
* @param {function} [props.onClose] - Callback triggered when the player is closed.
|
|
411
|
-
* @param {boolean} [props.isPlayerVisible=false] - Controls the initial visibility of the player.
|
|
412
|
-
* @param {string} [props.className] - CSS class name for additional styling.
|
|
413
|
-
* @param {function} [props.onPlaylistData] - Callback triggered when the playlist data is loaded.
|
|
414
|
-
* @param {function} [props.onVideoStarted] - Callback triggered when the video starts playing.
|
|
415
|
-
* @param {object} [props.trackingMetadata] - Video metadata for tracking/analytics callbacks.
|
|
416
|
-
* @param {function} [props.onPlayerStart] - Callback triggered when the player starts playing.
|
|
417
|
-
* @param {function} [props.onPlayerPlay] - Callback triggered when the player plays.
|
|
418
|
-
* @param {function} [props.onPlayerPause] - Callback triggered when the player pauses.
|
|
419
|
-
* @param {function} [props.onPlayerResume] - Callback triggered when the player resumes.
|
|
420
|
-
* @param {function} [props.onPlayerEnd] - Callback triggered when the player ends.
|
|
421
|
-
* @param {function} [props.onPlayerProgressEvery10Seconds] - Callback triggered every 10 seconds.
|
|
422
|
-
* @param {function} [props.onPlayerProgressAt20Seconds] - Callback triggered at 20 seconds.
|
|
423
|
-
* @param {function} [props.onPlayerQuartile25] - Callback triggered at 25% quartile.
|
|
424
|
-
* @param {function} [props.onPlayerQuartile50] - Callback triggered at 50% quartile.
|
|
425
|
-
* @param {function} [props.onPlayerQuartile75] - Callback triggered at 75% quartile.
|
|
426
|
-
* @param {function} [props.onPlayerNext] - Callback triggered when the player goes to the next video.
|
|
427
|
-
* @param {function} [props.onPlayerEvent] - Callback triggered for all events.
|
|
428
|
-
* @returns {JSX.Element} The rendered video player component.
|
|
429
|
-
*/
|
|
430
|
-
export declare const VPPlayer: ({ playerId, videoId, version, videoUrl, projectId, playlistId, scriptUrl, config, isReels, hiddenClasses, onClose, className, onPlaylistData, onVideoStarted, trackingMetadata, onPlayerStart, onPlayerPlay, onPlayerPause, onPlayerResume, onPlayerEnd, onPlayerProgressEvery10Seconds, onPlayerProgressAt20Seconds, onPlayerQuartile25, onPlayerQuartile50, onPlayerQuartile75, onPlayerNext, onPlayerPrevious, onPlayerEvent, }: VPPlayerProps_2 & {
|
|
431
|
-
className?: string;
|
|
432
|
-
}) => JSX.Element;
|
|
813
|
+
* Video flag/tag
|
|
814
|
+
*/
|
|
815
|
+
export declare interface VideoFlag {
|
|
816
|
+
id: number;
|
|
817
|
+
name: string;
|
|
818
|
+
}
|
|
433
819
|
|
|
434
820
|
/**
|
|
435
|
-
*
|
|
436
|
-
*
|
|
437
|
-
* @interface
|
|
438
|
-
* @see {@link https://vp.gjirafa.tech/documentation/docs/web-player/setup-the-player/advertising}
|
|
821
|
+
* Volume skin configuration
|
|
439
822
|
*/
|
|
440
|
-
export declare interface
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
vmap?: string;
|
|
446
|
-
VPAIDmode?: string;
|
|
447
|
-
enableProgrammability?: boolean;
|
|
448
|
-
functions?: Array<{
|
|
449
|
-
isDynamicKey: boolean;
|
|
450
|
-
isDynamicValue: boolean;
|
|
451
|
-
key: string;
|
|
452
|
-
order: number;
|
|
453
|
-
value: string;
|
|
454
|
-
}>;
|
|
455
|
-
bidding?: boolean;
|
|
456
|
-
afterMidrollBacktrack?: {
|
|
457
|
-
state: boolean;
|
|
458
|
-
seconds: number;
|
|
459
|
-
};
|
|
460
|
-
adBreaks?: Array<{
|
|
461
|
-
adTagUrl: string[];
|
|
462
|
-
breakType?: 'preroll' | 'midroll' | 'postroll';
|
|
463
|
-
breakTimingType?: 'time' | 'percentage' | 'playlist';
|
|
464
|
-
breakTimingValue?: number;
|
|
465
|
-
schedule?: {
|
|
466
|
-
type?: 'CUSTOM' | 'RECURRING';
|
|
467
|
-
ranges?: Array<{
|
|
468
|
-
startTime?: number;
|
|
469
|
-
endTime?: number;
|
|
470
|
-
count?: number;
|
|
471
|
-
breaks?: number[];
|
|
472
|
-
}>;
|
|
473
|
-
algorithm?: 'PASSIVE' | 'AGGRESSIVE' | 'SIMILAR_DISTANCE' | 'CUSTOM';
|
|
474
|
-
protectFirst?: number;
|
|
475
|
-
protectLast?: number;
|
|
476
|
-
occurEvery?: number;
|
|
477
|
-
liveCount?: number;
|
|
478
|
-
};
|
|
479
|
-
}>;
|
|
480
|
-
bidders?: Array<{
|
|
481
|
-
name: string;
|
|
482
|
-
params?: Array<{
|
|
483
|
-
paramName?: string;
|
|
484
|
-
paramType?: string;
|
|
485
|
-
paramValue?: string;
|
|
486
|
-
}>;
|
|
487
|
-
}>;
|
|
488
|
-
adsRequireInteraction?: boolean;
|
|
823
|
+
export declare interface VolumeSkin {
|
|
824
|
+
dragger?: string;
|
|
825
|
+
progress?: string;
|
|
826
|
+
rail?: string;
|
|
827
|
+
notifier?: string;
|
|
489
828
|
}
|
|
490
829
|
|
|
491
830
|
/**
|
|
492
|
-
*
|
|
493
|
-
*
|
|
494
|
-
* @interface
|
|
495
|
-
* @see {@link https://vp.gjirafa.tech/documentation/docs/web-player/setup-the-player/configuration}
|
|
496
|
-
* @see {@link https://vp.gjirafa.tech/documentation/docs/web-player/setup-the-player/playing}
|
|
497
|
-
* @see {@link https://vp.gjirafa.tech/documentation/docs/web-player/setup-the-player/advertising}
|
|
498
|
-
* @see {@link https://vp.gjirafa.tech/documentation/docs/web-player/setup-the-player/styling}
|
|
499
|
-
* @see {@link https://vp.gjirafa.tech/documentation/docs/web-player/setup-the-player/localization}
|
|
500
|
-
* @see {@link https://vp.gjirafa.tech/documentation/docs/web-player/setup-the-player/full-configuration}
|
|
831
|
+
* Base URL for the VP Player host.
|
|
501
832
|
*/
|
|
502
|
-
export declare
|
|
503
|
-
projectId?: string;
|
|
504
|
-
videoId?: string;
|
|
505
|
-
categoryName?: string;
|
|
506
|
-
gemiusIdentifier?: string;
|
|
507
|
-
typology?: string;
|
|
508
|
-
video: {
|
|
509
|
-
videoId?: string;
|
|
510
|
-
ads?: VPPlayerAdsConfig;
|
|
511
|
-
advertising?: boolean;
|
|
512
|
-
videoLocking?: {
|
|
513
|
-
isEnabled: boolean;
|
|
514
|
-
type: string;
|
|
515
|
-
value: number;
|
|
516
|
-
};
|
|
517
|
-
file?: string;
|
|
518
|
-
title?: string;
|
|
519
|
-
description?: string;
|
|
520
|
-
publishDate?: string;
|
|
521
|
-
duration?: number;
|
|
522
|
-
preload?: string;
|
|
523
|
-
thumbnail?: string;
|
|
524
|
-
filmstrip?: string;
|
|
525
|
-
author?: string;
|
|
526
|
-
source?: string;
|
|
527
|
-
tags?: string[];
|
|
528
|
-
tracks?: Array<{
|
|
529
|
-
file: string;
|
|
530
|
-
label: string;
|
|
531
|
-
kind: string;
|
|
532
|
-
default?: boolean;
|
|
533
|
-
}>;
|
|
534
|
-
playlist?: {
|
|
535
|
-
state?: boolean;
|
|
536
|
-
playlistId?: string;
|
|
537
|
-
playlistVideoIndex?: number;
|
|
538
|
-
videos?: Array<{
|
|
539
|
-
videoId: string;
|
|
540
|
-
title: string;
|
|
541
|
-
thumbnailUrl?: string;
|
|
542
|
-
duration?: number;
|
|
543
|
-
file?: string;
|
|
544
|
-
hlsUrl?: string;
|
|
545
|
-
}>;
|
|
546
|
-
};
|
|
547
|
-
};
|
|
548
|
-
config: {
|
|
549
|
-
adAnnouncement?: {
|
|
550
|
-
state?: boolean;
|
|
551
|
-
timeBeforeAd?: number;
|
|
552
|
-
};
|
|
553
|
-
autostartOnLoad?: {
|
|
554
|
-
state?: boolean;
|
|
555
|
-
onMobile?: boolean;
|
|
556
|
-
onData?: boolean;
|
|
557
|
-
};
|
|
558
|
-
adsRequireInteraction?: boolean;
|
|
559
|
-
autoplay?: boolean;
|
|
560
|
-
pauseOtherVideos?: boolean;
|
|
561
|
-
focusOnAutostart?: boolean;
|
|
562
|
-
muted?: boolean;
|
|
563
|
-
loop?: boolean;
|
|
564
|
-
size?: {
|
|
565
|
-
sizeType?: string;
|
|
566
|
-
aspectRatio?: string;
|
|
567
|
-
width?: number | string;
|
|
568
|
-
height?: number | string;
|
|
569
|
-
};
|
|
570
|
-
showRelatedOnPause?: {
|
|
571
|
-
state?: boolean;
|
|
572
|
-
onMobile?: boolean;
|
|
573
|
-
from?: number;
|
|
574
|
-
};
|
|
575
|
-
float?: {
|
|
576
|
-
state: boolean;
|
|
577
|
-
onMobile: boolean;
|
|
578
|
-
position: string;
|
|
579
|
-
dismissible: boolean;
|
|
580
|
-
requiresInteraction: boolean;
|
|
581
|
-
toVideoThreshold: number;
|
|
582
|
-
toFloatThreshold: number;
|
|
583
|
-
style: {
|
|
584
|
-
width: number;
|
|
585
|
-
border: string;
|
|
586
|
-
};
|
|
587
|
-
};
|
|
588
|
-
controls?: {
|
|
589
|
-
theaterButton?: boolean;
|
|
590
|
-
settingsButton?: boolean;
|
|
591
|
-
chromecastButton?: boolean;
|
|
592
|
-
nextButton?: boolean;
|
|
593
|
-
fullscreenButton?: boolean;
|
|
594
|
-
airplayButton?: boolean;
|
|
595
|
-
bigPlayButton?: boolean;
|
|
596
|
-
autopausePlayButton?: boolean;
|
|
597
|
-
pictureInPictureButton?: boolean;
|
|
598
|
-
relatedButton?: boolean;
|
|
599
|
-
volumeButton?: boolean;
|
|
600
|
-
shareButton?: boolean;
|
|
601
|
-
subtitlesButton?: boolean;
|
|
602
|
-
showCaptions?: boolean;
|
|
603
|
-
};
|
|
604
|
-
logo?: {
|
|
605
|
-
state?: boolean;
|
|
606
|
-
file?: string;
|
|
607
|
-
position?: string;
|
|
608
|
-
defaultOpacity?: number;
|
|
609
|
-
inactiveOpacity?: number;
|
|
610
|
-
onClickURL?: string;
|
|
611
|
-
};
|
|
612
|
-
skin?: {
|
|
613
|
-
controlBar?: {
|
|
614
|
-
background?: string;
|
|
615
|
-
spread?: "solid" | "gradient";
|
|
616
|
-
gradientMidPoint?: number;
|
|
617
|
-
text?: string;
|
|
618
|
-
icons?: {
|
|
619
|
-
default?: string;
|
|
620
|
-
hover?: string;
|
|
621
|
-
};
|
|
622
|
-
timeslider?: {
|
|
623
|
-
progress?: string;
|
|
624
|
-
rail?: string;
|
|
625
|
-
buffer?: string;
|
|
626
|
-
dragger?: string;
|
|
627
|
-
};
|
|
628
|
-
timesliderOnAd?: {
|
|
629
|
-
progress?: string;
|
|
630
|
-
rail?: string;
|
|
631
|
-
buffer?: string;
|
|
632
|
-
dragger?: string;
|
|
633
|
-
};
|
|
634
|
-
volume?: {
|
|
635
|
-
dragger?: string;
|
|
636
|
-
progress?: string;
|
|
637
|
-
rail?: string;
|
|
638
|
-
notifier?: string;
|
|
639
|
-
};
|
|
640
|
-
};
|
|
641
|
-
menus?: {
|
|
642
|
-
background?: {
|
|
643
|
-
default?: string;
|
|
644
|
-
hover?: string;
|
|
645
|
-
};
|
|
646
|
-
links?: {
|
|
647
|
-
default?: string;
|
|
648
|
-
hover?: string;
|
|
649
|
-
};
|
|
650
|
-
autoplay?: {
|
|
651
|
-
autoplayOn?: string;
|
|
652
|
-
autoplayOff?: string;
|
|
653
|
-
};
|
|
654
|
-
};
|
|
655
|
-
nextVideo?: {
|
|
656
|
-
background?: string;
|
|
657
|
-
text?: string;
|
|
658
|
-
timeslider?: {
|
|
659
|
-
rail?: string;
|
|
660
|
-
progress?: string;
|
|
661
|
-
};
|
|
662
|
-
icons?: {
|
|
663
|
-
play?: {
|
|
664
|
-
default?: string;
|
|
665
|
-
hover?: string;
|
|
666
|
-
};
|
|
667
|
-
close?: string;
|
|
668
|
-
};
|
|
669
|
-
};
|
|
670
|
-
playlist?: {
|
|
671
|
-
background?: string;
|
|
672
|
-
text?: string;
|
|
673
|
-
icons?: {
|
|
674
|
-
arrows?: {
|
|
675
|
-
active?: string;
|
|
676
|
-
inactive?: string;
|
|
677
|
-
};
|
|
678
|
-
close?: string;
|
|
679
|
-
};
|
|
680
|
-
card?: {
|
|
681
|
-
background?: string;
|
|
682
|
-
title?: string;
|
|
683
|
-
duration?: {
|
|
684
|
-
text?: string;
|
|
685
|
-
background?: string;
|
|
686
|
-
};
|
|
687
|
-
icons?: {
|
|
688
|
-
play?: {
|
|
689
|
-
default?: string;
|
|
690
|
-
hover?: string;
|
|
691
|
-
};
|
|
692
|
-
};
|
|
693
|
-
};
|
|
694
|
-
};
|
|
695
|
-
};
|
|
696
|
-
lang?: {
|
|
697
|
-
locale?: string;
|
|
698
|
-
controls?: {
|
|
699
|
-
play?: string;
|
|
700
|
-
pause?: string;
|
|
701
|
-
next?: string;
|
|
702
|
-
replay?: string;
|
|
703
|
-
volume?: string;
|
|
704
|
-
mute?: string;
|
|
705
|
-
unmute?: string;
|
|
706
|
-
settings?: string;
|
|
707
|
-
theater?: string;
|
|
708
|
-
fullscreen?: string;
|
|
709
|
-
chromecast?: string;
|
|
710
|
-
airplay?: string;
|
|
711
|
-
pictureInPicture?: string;
|
|
712
|
-
related?: string;
|
|
713
|
-
skipIntro?: string;
|
|
714
|
-
skipAd?: string;
|
|
715
|
-
playlistTitle?: string;
|
|
716
|
-
upNext?: string;
|
|
717
|
-
live?: string;
|
|
718
|
-
continueAfterPause?: string;
|
|
719
|
-
};
|
|
720
|
-
settings?: {
|
|
721
|
-
quality?: string;
|
|
722
|
-
subtitles?: string;
|
|
723
|
-
autoplay?: string;
|
|
724
|
-
playbackRate?: string;
|
|
725
|
-
auto?: string;
|
|
726
|
-
off?: string;
|
|
727
|
-
normal?: string;
|
|
728
|
-
share?: string;
|
|
729
|
-
};
|
|
730
|
-
ads?: {
|
|
731
|
-
ad?: string;
|
|
732
|
-
skip?: string;
|
|
733
|
-
skipIn?: string;
|
|
734
|
-
visit?: string;
|
|
735
|
-
info?: string;
|
|
736
|
-
simultaneousAds?: string;
|
|
737
|
-
adAnnouncement?: string;
|
|
738
|
-
};
|
|
739
|
-
messages?: {
|
|
740
|
-
playbackErrorTitle?: string;
|
|
741
|
-
playbackErrorDescription?: string;
|
|
742
|
-
geoBlockedTitle?: string;
|
|
743
|
-
geoBlockedDescription?: string;
|
|
744
|
-
streamInterruptedTitle?: string;
|
|
745
|
-
streamInterruptedDescription?: string;
|
|
746
|
-
};
|
|
747
|
-
};
|
|
748
|
-
ads?: VPPlayerAdsConfig;
|
|
749
|
-
};
|
|
750
|
-
}
|
|
833
|
+
export declare const VP_PLAYER_BASE_URL = "https://host.vpplayer.tech";
|
|
751
834
|
|
|
752
835
|
/**
|
|
753
|
-
*
|
|
836
|
+
* VP Player Component
|
|
837
|
+
*
|
|
838
|
+
* A thin React wrapper for the GTech VP Player.
|
|
839
|
+
* Configuration can be managed through the GTech admin panel or via the `config` prop.
|
|
840
|
+
*
|
|
841
|
+
* ## Basic Usage
|
|
842
|
+
*
|
|
843
|
+
* ```tsx
|
|
844
|
+
* // Using scriptId + videoId (recommended)
|
|
845
|
+
* <VPPlayer
|
|
846
|
+
* scriptId="ptkzurnx"
|
|
847
|
+
* videoId="vjsobqhe"
|
|
848
|
+
* onPlay={() => console.log('Playing!')}
|
|
849
|
+
* />
|
|
850
|
+
*
|
|
851
|
+
* // OR using full script URL
|
|
852
|
+
* <VPPlayer
|
|
853
|
+
* scriptUrl="https://host.vpplayer.tech/player/ptkzurnx/vjsobqhe.js"
|
|
854
|
+
* onPlay={() => console.log('Playing!')}
|
|
855
|
+
* />
|
|
856
|
+
* ```
|
|
857
|
+
*
|
|
858
|
+
* ## Using the ref for imperative control
|
|
859
|
+
*
|
|
860
|
+
* ```tsx
|
|
861
|
+
* const playerRef = useRef<VPPlayerRef>(null);
|
|
862
|
+
*
|
|
863
|
+
* <VPPlayer
|
|
864
|
+
* ref={playerRef}
|
|
865
|
+
* scriptId="ptkzurnx"
|
|
866
|
+
* videoId="vjsobqhe"
|
|
867
|
+
* />
|
|
868
|
+
*
|
|
869
|
+
* // Later:
|
|
870
|
+
* playerRef.current?.seek(60);
|
|
871
|
+
* playerRef.current?.play();
|
|
872
|
+
* console.log(playerRef.current?.getPosition());
|
|
873
|
+
* ```
|
|
874
|
+
*
|
|
875
|
+
* ## Config Override Mode
|
|
754
876
|
*
|
|
755
|
-
*
|
|
877
|
+
* Override the fetched configuration with custom settings:
|
|
878
|
+
*
|
|
879
|
+
* ```tsx
|
|
880
|
+
* <VPPlayer
|
|
881
|
+
* scriptId="ptkzurnx"
|
|
882
|
+
* videoId="vjsobqhe"
|
|
883
|
+
* config={{
|
|
884
|
+
* config: {
|
|
885
|
+
* muted: true,
|
|
886
|
+
* autoplay: true,
|
|
887
|
+
* skin: {
|
|
888
|
+
* controlBar: {
|
|
889
|
+
* background: 'rgba(0,0,0,0.8)'
|
|
890
|
+
* }
|
|
891
|
+
* }
|
|
892
|
+
* }
|
|
893
|
+
* }}
|
|
894
|
+
* />
|
|
895
|
+
* ```
|
|
896
|
+
*
|
|
897
|
+
* ## Reels Mode
|
|
898
|
+
*
|
|
899
|
+
* For TikTok-style vertical videos with overlay:
|
|
900
|
+
*
|
|
901
|
+
* ```tsx
|
|
902
|
+
* <VPPlayer
|
|
903
|
+
* scriptId="rbqcdwzlg"
|
|
904
|
+
* videoId="vjsobqhe"
|
|
905
|
+
* isReels={true}
|
|
906
|
+
* thumbnailUrl="https://example.com/thumb.jpg"
|
|
907
|
+
* onClose={() => console.log('Closed')}
|
|
908
|
+
* />
|
|
909
|
+
* ```
|
|
910
|
+
*
|
|
911
|
+
* @param props - VPPlayer configuration props
|
|
756
912
|
*/
|
|
757
|
-
export declare
|
|
758
|
-
showPlayer: (params: PlayerParams) => void;
|
|
759
|
-
hidePlayer: () => void;
|
|
760
|
-
isPlayerVisible: boolean;
|
|
761
|
-
playerParams: PlayerParams | null;
|
|
762
|
-
}
|
|
913
|
+
export declare const VPPlayer: ForwardRefExoticComponent<VPPlayerProps_2 & RefAttributes<VPPlayerRef_2>>;
|
|
763
914
|
|
|
764
915
|
/**
|
|
765
|
-
*
|
|
766
|
-
*
|
|
767
|
-
* @interface VPPlayerContextType
|
|
916
|
+
* Full VP Player configuration
|
|
917
|
+
* This is the root configuration object passed to vpPlayer().setup()
|
|
768
918
|
*/
|
|
769
|
-
declare interface
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
919
|
+
export declare interface VPPlayerConfig {
|
|
920
|
+
projectId?: string;
|
|
921
|
+
biskoId?: string;
|
|
922
|
+
video?: VideoConfig;
|
|
923
|
+
config?: PlayerSettingsConfig;
|
|
774
924
|
}
|
|
775
925
|
|
|
776
926
|
/**
|
|
777
927
|
* Interface representing an instance of the VP Player.
|
|
778
|
-
* Based on VP Player API Reference: https://vp.gjirafa.tech/documentation/docs/web-player/api-reference
|
|
779
|
-
* And VP Vertical Player API Reference: https://vp.gjirafa.tech/documentation/docs/vertical-player/api-reference
|
|
780
928
|
*
|
|
781
|
-
*
|
|
929
|
+
* NOTE: The VP Player SDK does not ship with TypeScript types.
|
|
930
|
+
* This is our own type definition based on the official API documentation.
|
|
931
|
+
*
|
|
932
|
+
* @see https://vp.gjirafa.tech/documentation/docs/web-player/api-reference
|
|
933
|
+
* @see https://vp.gjirafa.tech/documentation/docs/vertical-player/api-reference
|
|
934
|
+
*
|
|
935
|
+
* @interface VPPlayerInstance
|
|
782
936
|
*/
|
|
783
937
|
export declare interface VPPlayerInstance {
|
|
784
|
-
setup: (config:
|
|
938
|
+
setup: (config: unknown) => void;
|
|
785
939
|
destroy?: () => void;
|
|
786
940
|
play?: () => void;
|
|
787
941
|
pause?: () => void;
|
|
@@ -795,8 +949,6 @@ export declare interface VPPlayerInstance {
|
|
|
795
949
|
exitFullScreen?: () => void;
|
|
796
950
|
enterFullscreen?: () => void;
|
|
797
951
|
exitFullscreen?: () => void;
|
|
798
|
-
enterPictureInPicture?: () => void;
|
|
799
|
-
exitPictureInPicture?: () => void;
|
|
800
952
|
togglePlay?: () => void;
|
|
801
953
|
toggleMute?: () => void;
|
|
802
954
|
isMuted?: () => boolean;
|
|
@@ -810,7 +962,7 @@ export declare interface VPPlayerInstance {
|
|
|
810
962
|
getVolume?: () => number;
|
|
811
963
|
getContainer?: () => HTMLElement;
|
|
812
964
|
getDuration?: () => number;
|
|
813
|
-
getConfig?: () =>
|
|
965
|
+
getConfig?: () => unknown;
|
|
814
966
|
getQualityLevels?: () => unknown[];
|
|
815
967
|
getCurrentQuality?: () => number;
|
|
816
968
|
checkViewability?: () => boolean;
|
|
@@ -838,60 +990,212 @@ export declare interface VPPlayerInstance {
|
|
|
838
990
|
}
|
|
839
991
|
|
|
840
992
|
/**
|
|
841
|
-
*
|
|
993
|
+
* Simplified props interface for VPPlayer
|
|
994
|
+
*
|
|
995
|
+
* The wrapper is a thin bridge to the GTech JS player.
|
|
996
|
+
* Configuration can be managed through the GTech admin panel or via the `config` prop.
|
|
842
997
|
*
|
|
843
|
-
* @interface
|
|
998
|
+
* @interface VPPlayerProps
|
|
844
999
|
*/
|
|
845
1000
|
export declare interface VPPlayerProps {
|
|
846
|
-
|
|
847
|
-
|
|
1001
|
+
/**
|
|
1002
|
+
* GTech script ID (e.g., 'ptkzurnx')
|
|
1003
|
+
* Used with videoId to build the fully managed script URL
|
|
1004
|
+
*/
|
|
1005
|
+
scriptId?: string;
|
|
1006
|
+
/**
|
|
1007
|
+
* GTech video ID (e.g., 'vjsobqhe')
|
|
1008
|
+
* Used with scriptId to build the fully managed script URL
|
|
1009
|
+
*/
|
|
848
1010
|
videoId?: string;
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
1011
|
+
/**
|
|
1012
|
+
* Full managed script URL (alternative to scriptId + videoId)
|
|
1013
|
+
* @example "https://host.vpplayer.tech/player/ptkzurnx/vjsobqhe.js"
|
|
1014
|
+
*/
|
|
852
1015
|
scriptUrl?: string;
|
|
853
|
-
|
|
1016
|
+
/**
|
|
1017
|
+
* GTech project ID
|
|
1018
|
+
* Convenience prop that gets merged into config.projectId
|
|
1019
|
+
* Can also be set directly in the config prop
|
|
1020
|
+
*/
|
|
1021
|
+
projectId?: string;
|
|
1022
|
+
/**
|
|
1023
|
+
* Player configuration overrides.
|
|
1024
|
+
* When provided, the wrapper will:
|
|
1025
|
+
* 1. Try to fetch the JSON config from VP Player API
|
|
1026
|
+
* 2. Deep merge your overrides into the fetched config
|
|
1027
|
+
* 3. Call setup() with the merged configuration
|
|
1028
|
+
*
|
|
1029
|
+
* If fetch fails, your config will be used directly.
|
|
1030
|
+
*
|
|
1031
|
+
* @example
|
|
1032
|
+
* ```tsx
|
|
1033
|
+
* <VPPlayer
|
|
1034
|
+
* scriptId="ptkzurnx"
|
|
1035
|
+
* videoId="vjsobqhe"
|
|
1036
|
+
* config={{
|
|
1037
|
+
* config: {
|
|
1038
|
+
* muted: true,
|
|
1039
|
+
* autoplay: true,
|
|
1040
|
+
* skin: {
|
|
1041
|
+
* controlBar: {
|
|
1042
|
+
* background: 'rgba(0,0,0,0.8)'
|
|
1043
|
+
* }
|
|
1044
|
+
* }
|
|
1045
|
+
* }
|
|
1046
|
+
* }}
|
|
1047
|
+
* />
|
|
1048
|
+
* ```
|
|
1049
|
+
*
|
|
1050
|
+
* @see {@link https://vp.gjirafa.tech/documentation/docs/web-player/setup-the-player/full-configuration}
|
|
1051
|
+
*/
|
|
1052
|
+
config?: DeepPartial<VPPlayerConfig>;
|
|
1053
|
+
/**
|
|
1054
|
+
* Custom container ID for the player div
|
|
1055
|
+
* Auto-generated if not provided
|
|
1056
|
+
*/
|
|
1057
|
+
playerId?: string;
|
|
1058
|
+
/**
|
|
1059
|
+
* Use vertical player script URL builder
|
|
1060
|
+
* When true, uses /vertical-player/{scriptId}.js pattern
|
|
1061
|
+
*/
|
|
1062
|
+
isVertical?: boolean;
|
|
1063
|
+
/**
|
|
1064
|
+
* Enable Reels/TikTok-style overlay mode
|
|
1065
|
+
* Shows thumbnail first, then fullscreen overlay when clicked
|
|
1066
|
+
*/
|
|
854
1067
|
isReels?: boolean;
|
|
1068
|
+
/**
|
|
1069
|
+
* Thumbnail URL for Reels mode
|
|
1070
|
+
*/
|
|
855
1071
|
thumbnailUrl?: string;
|
|
1072
|
+
/**
|
|
1073
|
+
* Callback when Reels overlay is closed
|
|
1074
|
+
*/
|
|
856
1075
|
onClose?: () => void;
|
|
857
|
-
|
|
858
|
-
|
|
1076
|
+
/**
|
|
1077
|
+
* Additional CSS class name for the player container
|
|
1078
|
+
*/
|
|
859
1079
|
className?: string;
|
|
860
|
-
onPlaylistData?: (videos: PlaylistItem_2[]) => void;
|
|
861
|
-
onVideoStarted?: (videoData: CurrentVideoData_2) => void;
|
|
862
1080
|
/**
|
|
863
|
-
*
|
|
1081
|
+
* CSS classes to hide specific SDK elements
|
|
1082
|
+
* @example ['vp-share-button', 'vp-logo']
|
|
864
1083
|
*/
|
|
865
|
-
|
|
866
|
-
onPlayerStart?: PlayerEventCallbacks_2["onPlayerStart"];
|
|
867
|
-
onPlayerPlay?: PlayerEventCallbacks_2["onPlayerPlay"];
|
|
868
|
-
onPlayerPause?: PlayerEventCallbacks_2["onPlayerPause"];
|
|
869
|
-
onPlayerResume?: PlayerEventCallbacks_2["onPlayerResume"];
|
|
870
|
-
onPlayerEnd?: PlayerEventCallbacks_2["onPlayerEnd"];
|
|
871
|
-
onPlayerProgressEvery10Seconds?: PlayerEventCallbacks_2["onPlayerProgressEvery10Seconds"];
|
|
872
|
-
onPlayerProgressAt20Seconds?: PlayerEventCallbacks_2["onPlayerProgressAt20Seconds"];
|
|
873
|
-
onPlayerQuartile25?: PlayerEventCallbacks_2["onPlayerQuartile25"];
|
|
874
|
-
onPlayerQuartile50?: PlayerEventCallbacks_2["onPlayerQuartile50"];
|
|
875
|
-
onPlayerQuartile75?: PlayerEventCallbacks_2["onPlayerQuartile75"];
|
|
876
|
-
onPlayerNext?: PlayerEventCallbacks_2["onPlayerNext"];
|
|
877
|
-
onPlayerPrevious?: PlayerEventCallbacks_2["onPlayerPrevious"];
|
|
1084
|
+
hiddenClasses?: string[];
|
|
878
1085
|
/**
|
|
879
|
-
*
|
|
880
|
-
*
|
|
1086
|
+
* Called when the player is ready/initialized
|
|
1087
|
+
* @param data - Optional video metadata (available in vertical player)
|
|
1088
|
+
*/
|
|
1089
|
+
onReady?: (data?: CurrentVideoData_2) => void;
|
|
1090
|
+
/**
|
|
1091
|
+
* Called when playback starts
|
|
1092
|
+
* @param data - Optional video metadata (available in vertical player)
|
|
1093
|
+
*/
|
|
1094
|
+
onPlay?: (data?: CurrentVideoData_2) => void;
|
|
1095
|
+
/**
|
|
1096
|
+
* Called when playback is paused
|
|
1097
|
+
*/
|
|
1098
|
+
onPause?: () => void;
|
|
1099
|
+
/**
|
|
1100
|
+
* Called when playback resumes after being paused
|
|
1101
|
+
*/
|
|
1102
|
+
onResume?: () => void;
|
|
1103
|
+
/**
|
|
1104
|
+
* Called when video playback completes
|
|
1105
|
+
*/
|
|
1106
|
+
onComplete?: () => void;
|
|
1107
|
+
/**
|
|
1108
|
+
* Called when an error occurs
|
|
1109
|
+
*/
|
|
1110
|
+
onError?: (error: string) => void;
|
|
1111
|
+
/**
|
|
1112
|
+
* Called when a video starts playing
|
|
1113
|
+
* Provides metadata about the current video
|
|
1114
|
+
*/
|
|
1115
|
+
onVideoStarted?: (data: CurrentVideoData_2) => void;
|
|
1116
|
+
/**
|
|
1117
|
+
* Called on time updates during playback
|
|
1118
|
+
* @param seconds - Current playback position in seconds
|
|
1119
|
+
*/
|
|
1120
|
+
onTimeUpdate?: (seconds: number) => void;
|
|
1121
|
+
/**
|
|
1122
|
+
* Called when playback reaches 25% of video duration
|
|
1123
|
+
*/
|
|
1124
|
+
onQuartile25?: () => void;
|
|
1125
|
+
/**
|
|
1126
|
+
* Called when playback reaches 50% of video duration
|
|
881
1127
|
*/
|
|
882
|
-
|
|
1128
|
+
onQuartile50?: () => void;
|
|
1129
|
+
/**
|
|
1130
|
+
* Called when playback reaches 75% of video duration
|
|
1131
|
+
*/
|
|
1132
|
+
onQuartile75?: () => void;
|
|
1133
|
+
/**
|
|
1134
|
+
* Called when transitioning to the next video in playlist
|
|
1135
|
+
*/
|
|
1136
|
+
onNext?: () => void;
|
|
1137
|
+
/**
|
|
1138
|
+
* Called when transitioning to the previous video in playlist
|
|
1139
|
+
*/
|
|
1140
|
+
onPrevious?: () => void;
|
|
1141
|
+
/**
|
|
1142
|
+
* Called every 10 seconds during playback
|
|
1143
|
+
* @param seconds - Current playback position in seconds
|
|
1144
|
+
*/
|
|
1145
|
+
onProgress10s?: (seconds: number) => void;
|
|
1146
|
+
/**
|
|
1147
|
+
* Called when playback reaches 20 seconds
|
|
1148
|
+
* @param seconds - Current playback position (should be ~20)
|
|
1149
|
+
*/
|
|
1150
|
+
onProgress20s?: (seconds: number) => void;
|
|
883
1151
|
}
|
|
884
1152
|
|
|
885
1153
|
/**
|
|
886
|
-
*
|
|
1154
|
+
* Interface for the imperative handle exposed by VPPlayer via ref.
|
|
1155
|
+
* Use this to call player methods from parent components.
|
|
887
1156
|
*
|
|
888
|
-
* @
|
|
889
|
-
*
|
|
890
|
-
*
|
|
891
|
-
*
|
|
1157
|
+
* @example
|
|
1158
|
+
* ```tsx
|
|
1159
|
+
* const playerRef = useRef<VPPlayerRef>(null);
|
|
1160
|
+
*
|
|
1161
|
+
* <VPPlayer ref={playerRef} scriptId="..." videoId="..." />
|
|
1162
|
+
*
|
|
1163
|
+
* // Later:
|
|
1164
|
+
* playerRef.current?.seek(60);
|
|
1165
|
+
* playerRef.current?.play();
|
|
1166
|
+
* ```
|
|
892
1167
|
*/
|
|
893
|
-
export declare
|
|
894
|
-
|
|
895
|
-
|
|
1168
|
+
export declare interface VPPlayerRef {
|
|
1169
|
+
play: () => void;
|
|
1170
|
+
pause: () => void;
|
|
1171
|
+
seek: (position: number) => void;
|
|
1172
|
+
forward: () => void;
|
|
1173
|
+
rewind: () => void;
|
|
1174
|
+
replay: () => void;
|
|
1175
|
+
mute: () => void;
|
|
1176
|
+
unmute: () => void;
|
|
1177
|
+
togglePlay: () => void;
|
|
1178
|
+
toggleMute: () => void;
|
|
1179
|
+
enterFullScreen: () => void;
|
|
1180
|
+
exitFullScreen: () => void;
|
|
1181
|
+
getPosition: () => number | null;
|
|
1182
|
+
getDuration: () => number | null;
|
|
1183
|
+
getVolume: () => number | null;
|
|
1184
|
+
setVolume: (volume: number) => void;
|
|
1185
|
+
isMuted: () => boolean;
|
|
1186
|
+
isPlaying: () => boolean;
|
|
1187
|
+
isPaused: () => boolean;
|
|
1188
|
+
isFullscreen: () => boolean;
|
|
1189
|
+
}
|
|
1190
|
+
|
|
1191
|
+
/**
|
|
1192
|
+
* VP Vertical Player configuration
|
|
1193
|
+
* Similar to VPPlayerConfig but optimized for vertical video
|
|
1194
|
+
*/
|
|
1195
|
+
export declare interface VPVerticalPlayerConfig {
|
|
1196
|
+
projectId?: string;
|
|
1197
|
+
video?: VideoConfig;
|
|
1198
|
+
config?: PlayerSettingsConfig;
|
|
1199
|
+
}
|
|
896
1200
|
|
|
897
1201
|
export { }
|