@picsa/capacitor-video-player 7.1.0

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 (89) hide show
  1. package/CapacitorVideoPlayer.podspec +17 -0
  2. package/LICENSE +21 -0
  3. package/android/build.gradle +71 -0
  4. package/android/src/main/AndroidManifest.xml +3 -0
  5. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/CapacitorVideoPlayer.java +71 -0
  6. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/CapacitorVideoPlayerPlugin.java +1256 -0
  7. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/FullscreenExoPlayerFragment.java +1595 -0
  8. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/Notifications/MyRunnable.java +21 -0
  9. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/Notifications/NotificationCenter.java +61 -0
  10. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/PickerVideo/AdapterVideoList.java +47 -0
  11. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/PickerVideo/ModelVideo.java +49 -0
  12. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/PickerVideo/PickerVideoFragment.java +119 -0
  13. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/PickerVideo/VideoRecyclerViewHolder.java +65 -0
  14. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/Utilities/FilesUtils.java +101 -0
  15. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/Utilities/FragmentUtils.java +32 -0
  16. package/android/src/main/res/.gitkeep +0 -0
  17. package/android/src/main/res/drawable/bg_round_rect_white_50.xml +9 -0
  18. package/android/src/main/res/drawable/bg_rounded_rectangle_white_corner_rounded.xml +10 -0
  19. package/android/src/main/res/drawable/exo_close_btn.xml +12 -0
  20. package/android/src/main/res/drawable/gradient_transparent_middle.xml +12 -0
  21. package/android/src/main/res/drawable/ic_arrow_left.xml +5 -0
  22. package/android/src/main/res/drawable/ic_baseline_lq.xml +7 -0
  23. package/android/src/main/res/drawable/ic_exo_icon_fastforward.xml +35 -0
  24. package/android/src/main/res/drawable/ic_exo_icon_pause.xml +26 -0
  25. package/android/src/main/res/drawable/ic_exo_icon_play.xml +36 -0
  26. package/android/src/main/res/drawable/ic_exo_icon_rewind.xml +35 -0
  27. package/android/src/main/res/drawable/ic_expand.xml +5 -0
  28. package/android/src/main/res/drawable/ic_fit.xml +5 -0
  29. package/android/src/main/res/drawable/ic_image_background.xml +12 -0
  30. package/android/src/main/res/drawable/ic_img_16_9_background.xml +10 -0
  31. package/android/src/main/res/drawable/ic_img_9_16_background.xml +10 -0
  32. package/android/src/main/res/drawable/ic_outline_lock.xml +5 -0
  33. package/android/src/main/res/drawable/ic_outline_lock_open.xml +5 -0
  34. package/android/src/main/res/drawable/ic_pip_white.xml +5 -0
  35. package/android/src/main/res/drawable/ic_views.xml +18 -0
  36. package/android/src/main/res/drawable/ic_zoom.xml +5 -0
  37. package/android/src/main/res/layout/bridge_layout_main.xml +15 -0
  38. package/android/src/main/res/layout/exo_playback_control_view.xml +289 -0
  39. package/android/src/main/res/layout/exoplayer_layout_youtube.xml +361 -0
  40. package/android/src/main/res/layout/fragment_fs_exoplayer.xml +50 -0
  41. package/android/src/main/res/layout/fragment_picker_video.xml +21 -0
  42. package/android/src/main/res/layout/row_video.xml +76 -0
  43. package/android/src/main/res/values/colors.xml +14 -0
  44. package/android/src/main/res/values/strings.xml +3 -0
  45. package/android/src/main/res/values/styles.xml +3 -0
  46. package/dist/docs.json +831 -0
  47. package/dist/esm/definitions.d.ts +322 -0
  48. package/dist/esm/definitions.js +2 -0
  49. package/dist/esm/definitions.js.map +1 -0
  50. package/dist/esm/index.d.ts +4 -0
  51. package/dist/esm/index.js +7 -0
  52. package/dist/esm/index.js.map +1 -0
  53. package/dist/esm/web-utils/video-types.d.ts +16 -0
  54. package/dist/esm/web-utils/video-types.js +15 -0
  55. package/dist/esm/web-utils/video-types.js.map +1 -0
  56. package/dist/esm/web-utils/videoplayer.d.ts +30 -0
  57. package/dist/esm/web-utils/videoplayer.js +315 -0
  58. package/dist/esm/web-utils/videoplayer.js.map +1 -0
  59. package/dist/esm/web.d.ts +123 -0
  60. package/dist/esm/web.js +675 -0
  61. package/dist/esm/web.js.map +1 -0
  62. package/dist/plugin.cjs.js +1017 -0
  63. package/dist/plugin.cjs.js.map +1 -0
  64. package/dist/plugin.js +1019 -0
  65. package/dist/plugin.js.map +1 -0
  66. package/ios/Plugin/CapacitorVideoPlayer.swift +64 -0
  67. package/ios/Plugin/CapacitorVideoPlayerPlugin.h +10 -0
  68. package/ios/Plugin/CapacitorVideoPlayerPlugin.m +22 -0
  69. package/ios/Plugin/CapacitorVideoPlayerPlugin.swift +632 -0
  70. package/ios/Plugin/Extensions/CapacitorVideoPlayerPlugin.AVPlayerViewController.swift +59 -0
  71. package/ios/Plugin/Extensions/CapacitorVideoPlayerPlugin.File.swift +126 -0
  72. package/ios/Plugin/Extensions/CapacitorVideoPlayerPlugin.Fullscreen.swift +94 -0
  73. package/ios/Plugin/Extensions/CapacitorVideoPlayerPlugin.Notifications.swift +140 -0
  74. package/ios/Plugin/Extensions/CapacitorVideoPlayerPlugin.Observers.swift +180 -0
  75. package/ios/Plugin/Info.plist +24 -0
  76. package/ios/Plugin/VideoPicker/VideoHelper.swift +127 -0
  77. package/ios/Plugin/VideoPicker/VideoPickerViewController.swift +144 -0
  78. package/ios/Plugin/VideoPlayer/Extensions/AVURLAsset.swift +18 -0
  79. package/ios/Plugin/VideoPlayer/Extensions/AllOrientationAVPlayerController.swift +12 -0
  80. package/ios/Plugin/VideoPlayer/Extensions/CMTime.swift +23 -0
  81. package/ios/Plugin/VideoPlayer/Extensions/LandscapeAVPlayerController.swift +12 -0
  82. package/ios/Plugin/VideoPlayer/Extensions/Notification.Name.swift +18 -0
  83. package/ios/Plugin/VideoPlayer/Extensions/PortraitAVPlayerController.swift +12 -0
  84. package/ios/Plugin/VideoPlayer/Extensions/View.swift +54 -0
  85. package/ios/Plugin/VideoPlayer/FullScreenVideoPlayerView.swift +601 -0
  86. package/ios/Plugin/VideoPlayer/Models/Video.swift +28 -0
  87. package/ios/Plugin/VideoPlayer/Models/VideoModel.swift +42 -0
  88. package/package.json +92 -0
  89. package/readme.md +190 -0
@@ -0,0 +1,322 @@
1
+ import { PluginListenerHandle } from '@capacitor/core';
2
+ export interface CapacitorVideoPlayerPlugin {
3
+ /**
4
+ * Echo
5
+ *
6
+ */
7
+ echo(options: capEchoOptions): Promise<capVideoPlayerResult>;
8
+ /**
9
+ * Initialize a video player
10
+ *
11
+ */
12
+ initPlayer(options: capVideoPlayerOptions): Promise<capVideoPlayerResult>;
13
+ /**
14
+ * Return if a given playerId is playing
15
+ *
16
+ */
17
+ isPlaying(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;
18
+ /**
19
+ * Play the current video from a given playerId
20
+ *
21
+ */
22
+ play(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;
23
+ /**
24
+ * Pause the current video from a given playerId
25
+ *
26
+ */
27
+ pause(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;
28
+ /**
29
+ * Get the duration of the current video from a given playerId
30
+ *
31
+ */
32
+ getDuration(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;
33
+ /**
34
+ * Get the current time of the current video from a given playerId
35
+ *
36
+ */
37
+ getCurrentTime(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;
38
+ /**
39
+ * Set the current time to seek the current video to from a given playerId
40
+ *
41
+ */
42
+ setCurrentTime(options: capVideoTimeOptions): Promise<capVideoPlayerResult>;
43
+ /**
44
+ * Get the volume of the current video from a given playerId
45
+ *
46
+ */
47
+ getVolume(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;
48
+ /**
49
+ * Set the volume of the current video to from a given playerId
50
+ *
51
+ */
52
+ setVolume(options: capVideoVolumeOptions): Promise<capVideoPlayerResult>;
53
+ /**
54
+ * Get the muted of the current video from a given playerId
55
+ *
56
+ */
57
+ getMuted(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;
58
+ /**
59
+ * Set the muted of the current video to from a given playerId
60
+ *
61
+ */
62
+ setMuted(options: capVideoMutedOptions): Promise<capVideoPlayerResult>;
63
+ /**
64
+ * Set the rate of the current video from a given playerId
65
+ *
66
+ */
67
+ setRate(options: capVideoRateOptions): Promise<capVideoPlayerResult>;
68
+ /**
69
+ * Get the rate of the current video from a given playerId
70
+ *
71
+ */
72
+ getRate(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;
73
+ /**
74
+ * Stop all players playing
75
+ *
76
+ */
77
+ stopAllPlayers(): Promise<capVideoPlayerResult>;
78
+ /**
79
+ * Show controller
80
+ *
81
+ */
82
+ showController(): Promise<capVideoPlayerResult>;
83
+ /**
84
+ * isControllerIsFullyVisible
85
+ *
86
+ */
87
+ isControllerIsFullyVisible(): Promise<capVideoPlayerResult>;
88
+ /**
89
+ * Exit player
90
+ *
91
+ */
92
+ exitPlayer(): Promise<capVideoPlayerResult>;
93
+ /**
94
+ * Register event listener
95
+ */
96
+ addListener(event: VideoEventName, callback: (e: capVideoListener) => void): Promise<PluginListenerHandle>;
97
+ /**
98
+ * Register event listener
99
+ */
100
+ addListener(event: 'jeepCapVideoPlayerExit', callback: (e: capVideoListenerExit) => void): Promise<PluginListenerHandle>;
101
+ removeAllListeners(): Promise<void>;
102
+ }
103
+ export interface capEchoOptions {
104
+ /**
105
+ * String to be echoed
106
+ */
107
+ value?: string;
108
+ }
109
+ export interface capVideoPlayerOptions {
110
+ /**
111
+ * Player mode
112
+ * - "fullscreen"
113
+ * - "embedded" (Web only)
114
+ */
115
+ mode?: string;
116
+ /**
117
+ * The url of the video to play
118
+ */
119
+ url?: string;
120
+ /**
121
+ * The url of subtitle associated with the video
122
+ */
123
+ subtitle?: string;
124
+ /**
125
+ * The language of subtitle
126
+ * see https://github.com/libyal/libfwnt/wiki/Language-Code-identifiers
127
+ */
128
+ language?: string;
129
+ /**
130
+ * SubTitle Options
131
+ */
132
+ subtitleOptions?: SubTitleOptions;
133
+ /**
134
+ * Id of DIV Element parent of the player
135
+ */
136
+ playerId?: string;
137
+ /**
138
+ * Initial playing rate
139
+ */
140
+ rate?: number;
141
+ /**
142
+ * Exit on VideoEnd (iOS, Android)
143
+ * default: true
144
+ */
145
+ exitOnEnd?: boolean;
146
+ /**
147
+ * Loop on VideoEnd when exitOnEnd false (iOS, Android)
148
+ * default: false
149
+ */
150
+ loopOnEnd?: boolean;
151
+ /**
152
+ * Picture in Picture Enable (iOS, Android)
153
+ * default: true
154
+ */
155
+ pipEnabled?: boolean;
156
+ /**
157
+ * Background Mode Enable (iOS, Android)
158
+ * default: true
159
+ */
160
+ bkmodeEnabled?: boolean;
161
+ /**
162
+ * Show Controls Enable (iOS, Android)
163
+ * default: true
164
+ */
165
+ showControls?: boolean;
166
+ /**
167
+ * Display Mode ["all", "portrait", "landscape"] (iOS, Android)
168
+ * default: "all"
169
+ */
170
+ displayMode?: string;
171
+ /**
172
+ * Component Tag or DOM Element Tag (React app)
173
+ */
174
+ componentTag?: string;
175
+ /**
176
+ * Player Width (mode "embedded" only)
177
+ */
178
+ width?: number;
179
+ /**
180
+ * Player height (mode "embedded" only)
181
+ */
182
+ height?: number;
183
+ /**
184
+ * Headers for the request (iOS, Android)
185
+ * by Manuel García Marín (https://github.com/PhantomPainX)
186
+ */
187
+ headers?: {
188
+ [key: string]: string;
189
+ };
190
+ /**
191
+ * Title shown in the player (Android)
192
+ * by Manuel García Marín (https://github.com/PhantomPainX)
193
+ */
194
+ title?: string;
195
+ /**
196
+ * Subtitle shown below the title in the player (Android)
197
+ * by Manuel García Marín (https://github.com/PhantomPainX)
198
+ */
199
+ smallTitle?: string;
200
+ /**
201
+ * ExoPlayer Progress Bar and Spinner color (Android)
202
+ * by Manuel García Marín (https://github.com/PhantomPainX)
203
+ * Must be a valid hex color code
204
+ * default: #FFFFFF
205
+ */
206
+ accentColor?: string;
207
+ /**
208
+ * Chromecast enable/disable (Android)
209
+ * by Manuel García Marín (https://github.com/PhantomPainX)
210
+ * default: true
211
+ */
212
+ chromecast?: boolean;
213
+ /**
214
+ * Artwork url to be shown in Chromecast player
215
+ * by Manuel García Marín (https://github.com/PhantomPainX)
216
+ * default: ""
217
+ */
218
+ artwork?: string;
219
+ }
220
+ export interface capVideoPlayerIdOptions {
221
+ /**
222
+ * Id of DIV Element parent of the player
223
+ */
224
+ playerId?: string;
225
+ }
226
+ export interface capVideoRateOptions {
227
+ /**
228
+ * Id of DIV Element parent of the player
229
+ */
230
+ playerId?: string;
231
+ /**
232
+ * Rate value
233
+ */
234
+ rate?: number;
235
+ }
236
+ export interface capVideoVolumeOptions {
237
+ /**
238
+ * Id of DIV Element parent of the player
239
+ */
240
+ playerId?: string;
241
+ /**
242
+ * Volume value between [0 - 1]
243
+ */
244
+ volume?: number;
245
+ }
246
+ export interface capVideoTimeOptions {
247
+ /**
248
+ * Id of DIV Element parent of the player
249
+ */
250
+ playerId?: string;
251
+ /**
252
+ * Video time value you want to seek to
253
+ */
254
+ seektime?: number;
255
+ }
256
+ export interface capVideoMutedOptions {
257
+ /**
258
+ * Id of DIV Element parent of the player
259
+ */
260
+ playerId?: string;
261
+ /**
262
+ * Muted value true or false
263
+ */
264
+ muted?: boolean;
265
+ }
266
+ export interface capVideoListener {
267
+ /**
268
+ * Id of DIV Element parent of the player
269
+ */
270
+ fromPlayerId?: string;
271
+ /**
272
+ * Video current time when listener trigerred
273
+ */
274
+ currentTime?: number;
275
+ }
276
+ export interface capVideoListenerExit {
277
+ dismiss?: boolean;
278
+ currentTime: number;
279
+ }
280
+ export interface capExitListener {
281
+ /**
282
+ * Dismiss value true or false
283
+ */
284
+ dismiss?: boolean;
285
+ /**
286
+ * Video current time when listener trigerred
287
+ */
288
+ currentTime?: number;
289
+ }
290
+ export interface capVideoPlayerResult {
291
+ /**
292
+ * result set to true when successful else false
293
+ */
294
+ result?: boolean;
295
+ /**
296
+ * method name
297
+ */
298
+ method?: string;
299
+ /**
300
+ * value returned
301
+ */
302
+ value?: any;
303
+ /**
304
+ * message string
305
+ */
306
+ message?: string;
307
+ }
308
+ export interface SubTitleOptions {
309
+ /**
310
+ * Foreground Color in RGBA (default rgba(255,255,255,1)
311
+ */
312
+ foregroundColor?: string;
313
+ /**
314
+ * Background Color in RGBA (default rgba(0,0,0,1)
315
+ */
316
+ backgroundColor?: string;
317
+ /**
318
+ * Font Size in pixels (default 16)
319
+ */
320
+ fontSize?: number;
321
+ }
322
+ export type VideoEventName = 'jeepCapVideoPlayerReady' | 'jeepCapVideoPlayerPlay' | 'jeepCapVideoPlayerPause' | 'jeepCapVideoPlayerEnded';
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { CapacitorVideoPlayerPlugin } from './definitions';
2
+ declare const CapacitorVideoPlayer: CapacitorVideoPlayerPlugin;
3
+ export * from './definitions';
4
+ export { CapacitorVideoPlayer };
@@ -0,0 +1,7 @@
1
+ import { registerPlugin } from '@capacitor/core';
2
+ const CapacitorVideoPlayer = registerPlugin('CapacitorVideoPlayer', {
3
+ web: () => import('./web').then(m => new m.CapacitorVideoPlayerWeb()),
4
+ });
5
+ export * from './definitions';
6
+ export { CapacitorVideoPlayer };
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIjD,MAAM,oBAAoB,GAAG,cAAc,CACzC,sBAAsB,EACtB;IACE,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,CAAC;CACtE,CACF,CAAC;AAEF,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ export type videoExtension = keyof typeof videoTypes;
2
+ export type videoMimeType = (typeof videoTypes)[videoExtension];
3
+ export declare const videoTypes: {
4
+ readonly mp4: "video/mp4";
5
+ readonly webm: "video/webm";
6
+ readonly cmaf: "video/mp4";
7
+ readonly cmfv: "video/mp4";
8
+ readonly m3u8: "application/x-mpegURL";
9
+ readonly ogg: "video/ogg";
10
+ readonly ogv: "video/ogg";
11
+ readonly mov: "video/quicktime";
12
+ readonly avi: "video/x-msvideo";
13
+ readonly mkv: "video/x-matroska";
14
+ readonly flv: "video/x-flv";
15
+ readonly wmv: "video/x-ms-wmv";
16
+ };
@@ -0,0 +1,15 @@
1
+ export const videoTypes = {
2
+ mp4: 'video/mp4',
3
+ webm: 'video/webm',
4
+ cmaf: 'video/mp4',
5
+ cmfv: 'video/mp4',
6
+ m3u8: 'application/x-mpegURL',
7
+ ogg: 'video/ogg',
8
+ ogv: 'video/ogg',
9
+ mov: 'video/quicktime',
10
+ avi: 'video/x-msvideo',
11
+ mkv: 'video/x-matroska',
12
+ flv: 'video/x-flv',
13
+ wmv: 'video/x-ms-wmv',
14
+ };
15
+ //# sourceMappingURL=video-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-types.js","sourceRoot":"","sources":["../../../src/web-utils/video-types.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,uBAAuB;IAC7B,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,gBAAgB;CACb,CAAC"}
@@ -0,0 +1,30 @@
1
+ export declare class VideoPlayer {
2
+ videoEl: HTMLVideoElement | undefined;
3
+ pipMode: boolean;
4
+ pipWindow: Window | undefined;
5
+ isPlaying: boolean | undefined;
6
+ private _url;
7
+ private _playerId;
8
+ private _container;
9
+ private _mode;
10
+ private _width;
11
+ private _height;
12
+ private _zIndex;
13
+ private _initial;
14
+ private _videoType;
15
+ private _videoContainer;
16
+ private _firstReadyToPlay;
17
+ private _isEnded;
18
+ private _videoRate;
19
+ private _videoExitOnEnd;
20
+ private _videoLoopOnEnd;
21
+ constructor(mode: string, url: string, playerId: string, rate: number, exitOnEnd: boolean, loopOnEnd: boolean, container: any, zIndex: number, width?: number, height?: number);
22
+ initialize(): Promise<void>;
23
+ private createVideoElement;
24
+ private _goFullscreen;
25
+ private _setPlayer;
26
+ private _getVideoType;
27
+ private _doHide;
28
+ private _createEvent;
29
+ private _closeFullscreen;
30
+ }