expo-libvlc-player 2.5.0 → 3.0.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.
package/README.md CHANGED
@@ -29,7 +29,7 @@
29
29
 
30
30
  ### Installation
31
31
 
32
- Add the package to your npm dependencies
32
+ Add the package to your npm dependencies.
33
33
 
34
34
  ```
35
35
  npm install expo-libvlc-player
@@ -67,7 +67,7 @@ https://developer.apple.com/documentation/technotes/tn3179-understanding-local-n
67
67
 
68
68
  On iOS, the `VLCKit` player experiences a small audio delay when resuming or muting media playback.
69
69
 
70
- This might be related to the internal clock used by the library core causing inaccurate position/time values.
70
+ This might be related to the internal clock used by the library core causing inaccurate time values.
71
71
 
72
72
  https://code.videolan.org/videolan/VLCKit/-/issues/233
73
73
 
@@ -127,16 +127,16 @@ See the [Example App](example/components/PlayerView.tsx) for additional usage.
127
127
 
128
128
  ### Player methods
129
129
 
130
- | Method | Description |
131
- | -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
132
- | `play()` | Starts playback of the current player |
133
- | `pause()` | Pauses playback of the current player |
134
- | `stop()` | Stops playback of the current player |
135
- | `seek(value: number, type?: "position" \| "time")` | Sets the position or time of the current player. Must be a number equal or greater than `0` and type defaults to `"position"` |
136
- | `record(path?: string)` | Starts or stops recording the current media. Must be a valid string |
137
- | `snapshot(path: string)` | Takes a snapshot of the current media. Must be a valid string |
138
- | `postAction(action: number)` | Posts an answer to a [`Dialog`](#dialog). Must be an integer of `1` or `2` |
139
- | `dismiss()` | Dismisses a [`Dialog`](#dialog) |
130
+ | Method | Description |
131
+ | -------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
132
+ | `play()` | Starts playback of the current player |
133
+ | `pause()` | Pauses playback of the current player |
134
+ | `stop()` | Stops playback of the current player |
135
+ | `seek(value: number, type?: "time" \| "position")` | Sets the time or position of the current player. Must be a number equal or greater than `0`, type defaults to `"time"` |
136
+ | `record(path?: string)` | Starts or stops recording the current media. Must be a valid string |
137
+ | `snapshot(path: string)` | Takes a snapshot of the current media. Must be a valid string |
138
+ | `postAction(action: number)` | Posts an answer to a [`Dialog`](#dialog). Must be an integer of `1` or `2` |
139
+ | `dismiss()` | Dismisses a [`Dialog`](#dialog) |
140
140
 
141
141
  ### Player props
142
142
 
@@ -155,8 +155,8 @@ The `LibVlcPlayerView` extends React Native `ViewProps` and implements the follo
155
155
  | `volume` | Sets the player volume. Must be an integer between `0` and `100` | `100` |
156
156
  | `mute` | Sets the player volume to `0` when `true`. Previous value is set when `false` | `false` |
157
157
  | `audioMixingMode` | Determines how the player will interact with other audio in the system | `"auto"` |
158
- | `repeat` | Determines whether the media should repeat once ended | `false` |
159
158
  | `playInBackground` | Determines whether the media should continue playing in the background | `false` |
159
+ | `repeat` | Determines whether the media should repeat once ended | `false` |
160
160
  | `autoplay` | Determines whether the media should autoplay once created | `true` |
161
161
 
162
162
  #### Callback props
@@ -169,13 +169,14 @@ The `LibVlcPlayerView` extends React Native `ViewProps` and implements the follo
169
169
  | `onStopped` | Called after the `Stopped` player event | |
170
170
  | `onEndReached` | Called after the `EndReached` player event | |
171
171
  | `onEncounteredError` | Called after the `EncounteredError` player event | `{ error: string }` |
172
+ | `onDialogDisplay` | Called after a `Dialog` needs to be displayed | [`Dialog`](#dialog) |
172
173
  | `onTimeChanged` | Called after the `TimeChanged` player event | `{ time: number }` |
173
174
  | `onPositionChanged` | Called after the `PositionChanged` player event | `{ position: number }` |
174
175
  | `onESAdded` | Called after the `ESAdded` player event | [`MediaTracks`](#mediatracks) |
175
176
  | `onRecordChanged` | Called after the `RecordChanged` player event | [`Recording`](#recording) |
176
177
  | `onSnapshotTaken` | Called after a media snapshot is taken | `{ path: string }` |
177
- | `onDialogDisplay` | Called after a `Dialog` needs to be displayed | [`Dialog`](#dialog) |
178
178
  | `onFirstPlay` | Called after the player first playing event | [`MediaInfo`](#mediainfo) |
179
+ | `onForeground` | Called after the player enters the foreground | |
179
180
  | `onBackground` | Called after the player enters the background | |
180
181
 
181
182
  ### Player types
@@ -200,6 +201,27 @@ The `LibVlcPlayerView` extends React Native `ViewProps` and implements the follo
200
201
  }
201
202
  ```
202
203
 
204
+ #### `Dialog`
205
+
206
+ ```ts
207
+ {
208
+ title: string;
209
+ text: string;
210
+ cancelText?: string;
211
+ action1Text?: string;
212
+ action2Text?: string;
213
+ }
214
+ ```
215
+
216
+ #### `Recording`
217
+
218
+ ```ts
219
+ {
220
+ path: string | null;
221
+ isRecording: boolean;
222
+ }
223
+ ```
224
+
203
225
  #### `Track`
204
226
 
205
227
  ```ts
@@ -231,27 +253,6 @@ The `LibVlcPlayerView` extends React Native `ViewProps` and implements the follo
231
253
  }
232
254
  ```
233
255
 
234
- #### `Recording`
235
-
236
- ```ts
237
- {
238
- path: string | null;
239
- isRecording: boolean;
240
- }
241
- ```
242
-
243
- #### `Dialog`
244
-
245
- ```ts
246
- {
247
- title: string;
248
- text: string;
249
- cancelText?: string;
250
- action1Text?: string;
251
- action2Text?: string;
252
- }
253
- ```
254
-
255
256
  ## Disclaimer
256
257
 
257
258
  This project is not affiliated with, endorsed by, or officially supported by VideoLAN. The VLC icon is trademark of VideoLAN and is used here solely to indicate compatibility with the following **LibVLC** bindings:
@@ -1,7 +1,7 @@
1
1
  apply plugin: "com.android.library"
2
2
 
3
3
  group = "expo.modules.libvlcplayer"
4
- version = "2.5.0"
4
+ version = "3.0.0"
5
5
 
6
6
  def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
7
7
  apply from: expoModulesCorePlugin
@@ -27,7 +27,7 @@ android {
27
27
  namespace "expo.modules.libvlcplayer"
28
28
  defaultConfig {
29
29
  versionCode 1
30
- versionName "2.5.0"
30
+ versionName "3.0.0"
31
31
  consumerProguardFiles("proguard-rules.pro")
32
32
  }
33
33
  lintOptions {
@@ -12,13 +12,14 @@ private const val PAUSED_EVENT = "onPaused"
12
12
  private const val STOPPED_EVENT = "onStopped"
13
13
  private const val END_REACHED_EVENT = "onEndReached"
14
14
  private const val ENCOUNTERED_ERROR_EVENT = "onEncounteredError"
15
+ private const val DIALOG_DISPLAY_EVENT = "onDialogDisplay"
15
16
  private const val TIME_CHANGED_EVENT = "onTimeChanged"
16
17
  private const val POSITION_CHANGED_EVENT = "onPositionChanged"
17
18
  private const val ES_ADDED_EVENT = "onESAdded"
18
19
  private const val RECORD_CHANGED_EVENT = "onRecordChanged"
19
20
  private const val SNAPSHOT_TAKEN_EVENT = "onSnapshotTaken"
20
- private const val DIALOG_DISPLAY_EVENT = "onDialogDisplay"
21
21
  private const val FIRST_PLAY_EVENT = "onFirstPlay"
22
+ private const val FOREROUND_EVENT = "onForeground"
22
23
  private const val BACKGROUND_EVENT = "onBackground"
23
24
 
24
25
  val playerEvents =
@@ -29,13 +30,14 @@ val playerEvents =
29
30
  STOPPED_EVENT,
30
31
  END_REACHED_EVENT,
31
32
  ENCOUNTERED_ERROR_EVENT,
33
+ DIALOG_DISPLAY_EVENT,
32
34
  TIME_CHANGED_EVENT,
33
35
  POSITION_CHANGED_EVENT,
34
36
  ES_ADDED_EVENT,
35
37
  RECORD_CHANGED_EVENT,
36
38
  SNAPSHOT_TAKEN_EVENT,
37
- DIALOG_DISPLAY_EVENT,
38
39
  FIRST_PLAY_EVENT,
40
+ FOREROUND_EVENT,
39
41
  BACKGROUND_EVENT,
40
42
  )
41
43
 
@@ -99,14 +101,14 @@ class LibVlcPlayerModule : Module() {
99
101
  view.audioMixingMode = audioMixingMode ?: AudioMixingMode.AUTO
100
102
  }
101
103
 
102
- Prop("repeat") { view: LibVlcPlayerView, repeat: Boolean? ->
103
- view.repeat = repeat ?: false
104
- }
105
-
106
104
  Prop("playInBackground") { view: LibVlcPlayerView, playInBackground: Boolean? ->
107
105
  view.playInBackground = playInBackground ?: false
108
106
  }
109
107
 
108
+ Prop("repeat") { view: LibVlcPlayerView, repeat: Boolean? ->
109
+ view.repeat = repeat ?: false
110
+ }
111
+
110
112
  Prop("autoplay") { view: LibVlcPlayerView, autoplay: Boolean? ->
111
113
  view.autoplay = autoplay ?: true
112
114
  }
@@ -133,7 +135,7 @@ class LibVlcPlayerModule : Module() {
133
135
  }
134
136
 
135
137
  AsyncFunction("seek") { view: LibVlcPlayerView, value: Double, type: String? ->
136
- view.seek(value, type ?: "position")
138
+ view.seek(value, type ?: "time")
137
139
  }
138
140
 
139
141
  AsyncFunction("record") { view: LibVlcPlayerView, path: String? ->
@@ -153,8 +155,12 @@ class LibVlcPlayerModule : Module() {
153
155
  }
154
156
  }
155
157
 
158
+ OnActivityEntersForeground {
159
+ MediaPlayerManager.onPlayerForeground()
160
+ }
161
+
156
162
  OnActivityEntersBackground {
157
- MediaPlayerManager.onAppBackground()
163
+ MediaPlayerManager.onPlayerBackground()
158
164
  }
159
165
  }
160
166
  }
@@ -71,13 +71,14 @@ class LibVlcPlayerView(
71
71
  internal val onStopped by EventDispatcher<Unit>()
72
72
  internal val onEndReached by EventDispatcher<Unit>()
73
73
  internal val onEncounteredError by EventDispatcher()
74
+ internal val onDialogDisplay by EventDispatcher<Dialog>()
74
75
  internal val onTimeChanged by EventDispatcher()
75
76
  internal val onPositionChanged by EventDispatcher()
76
77
  internal val onESAdded by EventDispatcher<MediaTracks>()
77
78
  internal val onRecordChanged by EventDispatcher<Recording>()
78
79
  internal val onSnapshotTaken by EventDispatcher()
79
- internal val onDialogDisplay by EventDispatcher<Dialog>()
80
80
  internal val onFirstPlay by EventDispatcher<MediaInfo>()
81
+ internal val onForeground by EventDispatcher<Unit>()
81
82
  internal val onBackground by EventDispatcher<Unit>()
82
83
 
83
84
  init {
@@ -397,6 +398,12 @@ class LibVlcPlayerView(
397
398
  MediaPlayerManager.audioFocusManager.updateAudioFocus()
398
399
  }
399
400
 
401
+ var playInBackground: Boolean = false
402
+ set(value) {
403
+ field = value
404
+ MediaPlayerManager.audioFocusManager.updateAudioFocus()
405
+ }
406
+
400
407
  var repeat: Boolean = false
401
408
  set(value) {
402
409
  field = value
@@ -407,12 +414,6 @@ class LibVlcPlayerView(
407
414
  }
408
415
  }
409
416
 
410
- var playInBackground: Boolean = false
411
- set(value) {
412
- field = value
413
- MediaPlayerManager.audioFocusManager.updateAudioFocus()
414
- }
415
-
416
417
  var autoplay: Boolean = true
417
418
  set(value) {
418
419
  field = value
@@ -31,7 +31,15 @@ object MediaPlayerManager {
31
31
  playerViews.removeAll { it.get() == view }
32
32
  }
33
33
 
34
- fun onAppBackground() {
34
+ fun onPlayerForeground() {
35
+ playerViews.forEach { playerView ->
36
+ playerView.get()?.let { view ->
37
+ view.onForeground(Unit)
38
+ }
39
+ }
40
+ }
41
+
42
+ fun onPlayerBackground() {
35
43
  playerViews.forEach { playerView ->
36
44
  playerView.get()?.let { view ->
37
45
  view.onBackground(Unit)
@@ -19,14 +19,14 @@ export interface LibVlcPlayerViewRef {
19
19
  */
20
20
  readonly stop: () => Promise<void>;
21
21
  /**
22
- * Sets the position or time of the current player
22
+ * Sets the time or position of the current player
23
23
  *
24
24
  * @param value - Must be a number equal or greater than `0`
25
- * @param type - Defaults to `"position"`
25
+ * @param type - Defaults to `"time"`
26
26
  *
27
27
  * @returns A promise which resolves to `void`
28
28
  */
29
- readonly seek: (value: number, type?: "position" | "time") => Promise<void>;
29
+ readonly seek: (value: number, type?: "time" | "position") => Promise<void>;
30
30
  /**
31
31
  * Starts or stops recording the current media
32
32
  *
@@ -77,6 +77,17 @@ export interface NativeEvent<T> {
77
77
  nativeEvent: T & NativeEventProps;
78
78
  }
79
79
  export type LibVlcEvent<T> = Omit<T & NativeEventProps, "target">;
80
+ export interface Dialog {
81
+ title: string;
82
+ text: string;
83
+ cancelText?: string;
84
+ action1Text?: string;
85
+ action2Text?: string;
86
+ }
87
+ export interface Recording {
88
+ path: string | null;
89
+ isRecording: boolean;
90
+ }
80
91
  export interface Track {
81
92
  id: number;
82
93
  name: string;
@@ -93,17 +104,6 @@ export interface MediaInfo {
93
104
  seekable: boolean;
94
105
  tracks: MediaTracks;
95
106
  }
96
- export interface Recording {
97
- path: string | null;
98
- isRecording: boolean;
99
- }
100
- export interface Dialog {
101
- title: string;
102
- text: string;
103
- cancelText?: string;
104
- action1Text?: string;
105
- action2Text?: string;
106
- }
107
107
  /**
108
108
  * @hidden
109
109
  */
@@ -168,6 +168,10 @@ type DialogDisplayListener = (event: NativeEvent<Dialog>) => void;
168
168
  * @hidden
169
169
  */
170
170
  type FirstPlayListener = (event: NativeEvent<MediaInfo>) => void;
171
+ /**
172
+ * @hidden
173
+ */
174
+ type ForegroundListener = () => void;
171
175
  /**
172
176
  * @hidden
173
177
  */
@@ -188,8 +192,8 @@ export interface LibVlcPlayerViewNativeProps {
188
192
  volume?: number;
189
193
  mute?: boolean;
190
194
  audioMixingMode?: AudioMixingMode;
191
- repeat?: boolean;
192
195
  playInBackground?: boolean;
196
+ repeat?: boolean;
193
197
  autoplay?: boolean;
194
198
  onBuffering?: BufferingListener;
195
199
  onPlaying?: PlayingListener;
@@ -197,13 +201,14 @@ export interface LibVlcPlayerViewNativeProps {
197
201
  onStopped?: StoppedListener;
198
202
  onEndReached?: EndReachedListener;
199
203
  onEncounteredError?: EncounteredErrorListener;
204
+ onDialogDisplay?: DialogDisplayListener;
200
205
  onTimeChanged?: TimeChangedListener;
201
206
  onPositionChanged?: PositionChangedListener;
202
207
  onESAdded?: ESAddedListener;
203
208
  onRecordChanged?: RecordChangedListener;
204
209
  onSnapshotTaken?: SnapshotTakenListener;
205
- onDialogDisplay?: DialogDisplayListener;
206
210
  onFirstPlay?: FirstPlayListener;
211
+ onForeground?: ForegroundListener;
207
212
  onBackground?: BackgroundListener;
208
213
  }
209
214
  export interface LibVlcPlayerViewProps extends ViewProps {
@@ -302,17 +307,17 @@ export interface LibVlcPlayerViewProps extends ViewProps {
302
307
  */
303
308
  audioMixingMode?: AudioMixingMode;
304
309
  /**
305
- * Determines whether the media should repeat once ended
310
+ * Determines whether the media should continue playing in the background
306
311
  *
307
312
  * @default false
308
313
  */
309
- repeat?: boolean;
314
+ playInBackground?: boolean;
310
315
  /**
311
- * Determines whether the media should continue playing in the background
316
+ * Determines whether the media should repeat once ended
312
317
  *
313
318
  * @default false
314
319
  */
315
- playInBackground?: boolean;
320
+ repeat?: boolean;
316
321
  /**
317
322
  * Determines whether the media should autoplay once created
318
323
  *
@@ -343,6 +348,10 @@ export interface LibVlcPlayerViewProps extends ViewProps {
343
348
  * Called after the `EncounteredError` player event
344
349
  */
345
350
  onEncounteredError?: (event: Error) => void;
351
+ /**
352
+ * Called after a `Dialog` needs to be displayed
353
+ */
354
+ onDialogDisplay?: (event: Dialog) => void;
346
355
  /**
347
356
  * Called after the `TimeChanged` player event
348
357
  */
@@ -363,14 +372,14 @@ export interface LibVlcPlayerViewProps extends ViewProps {
363
372
  * Called after a media snapshot is taken
364
373
  */
365
374
  onSnapshotTaken?: (event: Snapshot) => void;
366
- /**
367
- * Called after a `Dialog` needs to be displayed
368
- */
369
- onDialogDisplay?: (event: Dialog) => void;
370
375
  /**
371
376
  * Called after the player first playing event
372
377
  */
373
378
  onFirstPlay?: (event: MediaInfo) => void;
379
+ /**
380
+ * Called after the player enters the foreground
381
+ */
382
+ onForeground?: () => void;
374
383
  /**
375
384
  * Called after the player enters the background
376
385
  */
@@ -1 +1 @@
1
- {"version":3,"file":"LibVlcPlayer.types.d.ts","sourceRoot":"","sources":["../src/LibVlcPlayer.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LibVlcPlayer.types.d.ts","sourceRoot":"","sources":["../src/LibVlcPlayer.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"LibVlcPlayer.types.js","sourceRoot":"","sources":["../src/LibVlcPlayer.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ViewProps } from \"react-native\";\n\nexport interface LibVlcPlayerViewRef {\n /**\n * Starts playback of the current player\n *\n * @returns A promise which resolves to `void`\n */\n readonly play: () => Promise<void>;\n /**\n * Pauses playback of the current player\n *\n * @returns A promise which resolves to `void`\n */\n readonly pause: () => Promise<void>;\n /**\n * Stops playback of the current player\n *\n * @returns A promise which resolves to `void`\n */\n readonly stop: () => Promise<void>;\n /**\n * Sets the position or time of the current player\n *\n * @param value - Must be a number equal or greater than `0`\n * @param type - Defaults to `\"position\"`\n *\n * @returns A promise which resolves to `void`\n */\n readonly seek: (value: number, type?: \"position\" | \"time\") => Promise<void>;\n /**\n * Starts or stops recording the current media\n *\n * @param path - Must be a valid string\n *\n * @returns A promise which resolves to `void`\n */\n readonly record: (path?: string) => Promise<void>;\n /**\n * Takes a snapshot of the current media\n *\n * @param path - Must be a valid string\n *\n * @returns A promise which resolves to `void`\n */\n readonly snapshot: (path: string) => Promise<void>;\n /**\n * Posts an answer to a `Dialog`\n *\n * @param action - Must be an integer of `1` or `2`\n *\n * @returns A promise which resolves to `void`\n */\n readonly postAction: (action: 1 | 2) => Promise<void>;\n /**\n * Dismisses a `Dialog`\n *\n * @returns A promise which resolves to `void`\n */\n readonly dismiss: () => Promise<void>;\n}\n\nexport type LibVlcSource = string | number | null;\n\nexport interface Tracks {\n audio?: number;\n video?: number;\n subtitle?: number;\n}\n\nexport interface Slave {\n source: NonNullable<LibVlcSource>;\n type: \"audio\" | \"subtitle\";\n selected?: boolean;\n}\n\nexport type AudioMixingMode =\n | \"mixWithOthers\"\n | \"duckOthers\"\n | \"auto\"\n | \"doNotMix\";\n\nexport interface NativeEventProps {\n target: number;\n}\n\nexport interface NativeEvent<T> {\n nativeEvent: T & NativeEventProps;\n}\n\nexport type LibVlcEvent<T> = Omit<T & NativeEventProps, \"target\">;\n\nexport interface Track {\n id: number;\n name: string;\n}\n\nexport interface MediaTracks {\n audio: Track[];\n video: Track[];\n subtitle: Track[];\n}\n\nexport interface MediaInfo {\n width: number;\n height: number;\n length: number;\n seekable: boolean;\n tracks: MediaTracks;\n}\n\nexport interface Recording {\n path: string | null;\n isRecording: boolean;\n}\n\nexport interface Dialog {\n title: string;\n text: string;\n cancelText?: string;\n action1Text?: string;\n action2Text?: string;\n}\n\n/**\n * @hidden\n */\ntype BufferingListener = () => void;\n\n/**\n * @hidden\n */\ntype PlayingListener = () => void;\n\n/**\n * @hidden\n */\ntype PausedListener = () => void;\n\n/**\n * @hidden\n */\ntype StoppedListener = () => void;\n\n/**\n * @hidden\n */\ntype EndReachedListener = () => void;\n\nexport type Error = { error: string };\n\n/**\n * @hidden\n */\ntype EncounteredErrorListener = (event: NativeEvent<Error>) => void;\n\nexport type Time = { time: number };\n\n/**\n * @hidden\n */\ntype TimeChangedListener = (event: NativeEvent<Time>) => void;\n\nexport type Position = { position: number };\n\n/**\n * @hidden\n */\ntype PositionChangedListener = (event: NativeEvent<Position>) => void;\n\n/**\n * @hidden\n */\ntype ESAddedListener = (event: NativeEvent<MediaTracks>) => void;\n\n/**\n * @hidden\n */\ntype RecordChangedListener = (event: NativeEvent<Recording>) => void;\n\nexport type Snapshot = { path: string };\n\n/**\n * @hidden\n */\ntype SnapshotTakenListener = (event: NativeEvent<Snapshot>) => void;\n\n/**\n * @hidden\n */\ntype DialogDisplayListener = (event: NativeEvent<Dialog>) => void;\n\n/**\n * @hidden\n */\ntype FirstPlayListener = (event: NativeEvent<MediaInfo>) => void;\n\n/**\n * @hidden\n */\ntype BackgroundListener = () => void;\n\n/**\n * @hidden\n */\nexport interface LibVlcPlayerViewNativeProps {\n ref?: React.Ref<LibVlcPlayerViewRef>;\n source?: LibVlcSource;\n options?: string[];\n tracks?: Tracks;\n slaves?: Slave[];\n scale?: number;\n aspectRatio?: string | null;\n rate?: number;\n time?: number;\n volume?: number;\n mute?: boolean;\n audioMixingMode?: AudioMixingMode;\n repeat?: boolean;\n playInBackground?: boolean;\n autoplay?: boolean;\n onBuffering?: BufferingListener;\n onPlaying?: PlayingListener;\n onPaused?: PausedListener;\n onStopped?: StoppedListener;\n onEndReached?: EndReachedListener;\n onEncounteredError?: EncounteredErrorListener;\n onTimeChanged?: TimeChangedListener;\n onPositionChanged?: PositionChangedListener;\n onESAdded?: ESAddedListener;\n onRecordChanged?: RecordChangedListener;\n onSnapshotTaken?: SnapshotTakenListener;\n onDialogDisplay?: DialogDisplayListener;\n onFirstPlay?: FirstPlayListener;\n onBackground?: BackgroundListener;\n}\n\nexport interface LibVlcPlayerViewProps extends ViewProps {\n /**\n * Sets the source of the media to be played. Set to `null` to release the player\n */\n source: LibVlcSource;\n /**\n * Sets the VLC options to initialize the player with\n *\n * https://wiki.videolan.org/VLC_command-line_help/\n *\n * @example [\"--network-caching=1000\"]\n *\n * @default []\n */\n options?: string[];\n /**\n * Sets the player audio, video and subtitle tracks\n *\n * @example\n * ```tsx\n * <LibVlcPlayerView\n * tracks={{\n * audio: 0,\n * video: 1,\n * subtitle: 2,\n * }}\n * />\n * ```\n *\n * @default undefined\n */\n tracks?: Tracks;\n /**\n * Sets the player audio and subtitle slaves\n *\n * @example\n * ```tsx\n * <LibVlcPlayerView\n * slaves={[\n * {\n * source: \"file://path/to/subtitle.srt\",\n * type: \"subtitle\",\n * selected: true\n * },\n * ]}\n * />\n * ```\n *\n * @default []\n */\n slaves?: Slave[];\n /**\n * Sets the player scaling factor. Must be a float equal or greater than `0`\n *\n * @default 0\n */\n scale?: number;\n /**\n * Sets the player aspect ratio. Must be a valid string or `null` for default\n *\n * @example \"16:9\"\n *\n * @default undefined\n */\n aspectRatio?: string | null;\n /**\n * Sets the player rate. Must be a float equal or greater than `1`\n *\n * @default 1\n */\n rate?: number;\n /**\n * Sets the initial player time. Must be an integer in milliseconds\n *\n * @default 0\n */\n time?: number;\n /**\n * Sets the player volume. Must be an integer between `0` and `100`\n *\n * @default 100\n */\n volume?: number;\n /**\n * Sets the player volume to `0` when `true`. Previous value is set when `false`\n *\n * @default false\n */\n mute?: boolean;\n /**\n * Determines how the player will interact with other audio playing in the system\n *\n * @default \"auto\"\n */\n audioMixingMode?: AudioMixingMode;\n /**\n * Determines whether the media should repeat once ended\n *\n * @default false\n */\n repeat?: boolean;\n /**\n * Determines whether the media should continue playing in the background\n *\n * @default false\n */\n playInBackground?: boolean;\n /**\n * Determines whether the media should autoplay once created\n *\n * @default true\n */\n autoplay?: boolean;\n /**\n * Called after the `Buffering` player event\n */\n onBuffering?: () => void;\n /**\n * Called after the `Playing` player event\n */\n onPlaying?: () => void;\n /**\n * Called after the `Paused` player event\n */\n onPaused?: () => void;\n /**\n * Called after the `Stopped` player event\n */\n onStopped?: () => void;\n /**\n * Called after the `EndReached` player event\n */\n onEndReached?: () => void;\n /**\n * Called after the `EncounteredError` player event\n */\n onEncounteredError?: (event: Error) => void;\n /**\n * Called after the `TimeChanged` player event\n */\n onTimeChanged?: (event: Time) => void;\n /**\n * Called after the `PositionChanged` player event\n */\n onPositionChanged?: (event: Position) => void;\n /**\n * Called after the `ESAdded` player event\n */\n onESAdded?: (event: MediaTracks) => void;\n /**\n * Called after the `RecordChanged` player event\n */\n onRecordChanged?: (event: Recording) => void;\n /**\n * Called after a media snapshot is taken\n */\n onSnapshotTaken?: (event: Snapshot) => void;\n /**\n * Called after a `Dialog` needs to be displayed\n */\n onDialogDisplay?: (event: Dialog) => void;\n /**\n * Called after the player first playing event\n */\n onFirstPlay?: (event: MediaInfo) => void;\n /**\n * Called after the player enters the background\n */\n onBackground?: () => void;\n}\n"]}
1
+ {"version":3,"file":"LibVlcPlayer.types.js","sourceRoot":"","sources":["../src/LibVlcPlayer.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ViewProps } from \"react-native\";\n\nexport interface LibVlcPlayerViewRef {\n /**\n * Starts playback of the current player\n *\n * @returns A promise which resolves to `void`\n */\n readonly play: () => Promise<void>;\n /**\n * Pauses playback of the current player\n *\n * @returns A promise which resolves to `void`\n */\n readonly pause: () => Promise<void>;\n /**\n * Stops playback of the current player\n *\n * @returns A promise which resolves to `void`\n */\n readonly stop: () => Promise<void>;\n /**\n * Sets the time or position of the current player\n *\n * @param value - Must be a number equal or greater than `0`\n * @param type - Defaults to `\"time\"`\n *\n * @returns A promise which resolves to `void`\n */\n readonly seek: (value: number, type?: \"time\" | \"position\") => Promise<void>;\n /**\n * Starts or stops recording the current media\n *\n * @param path - Must be a valid string\n *\n * @returns A promise which resolves to `void`\n */\n readonly record: (path?: string) => Promise<void>;\n /**\n * Takes a snapshot of the current media\n *\n * @param path - Must be a valid string\n *\n * @returns A promise which resolves to `void`\n */\n readonly snapshot: (path: string) => Promise<void>;\n /**\n * Posts an answer to a `Dialog`\n *\n * @param action - Must be an integer of `1` or `2`\n *\n * @returns A promise which resolves to `void`\n */\n readonly postAction: (action: 1 | 2) => Promise<void>;\n /**\n * Dismisses a `Dialog`\n *\n * @returns A promise which resolves to `void`\n */\n readonly dismiss: () => Promise<void>;\n}\n\nexport type LibVlcSource = string | number | null;\n\nexport interface Tracks {\n audio?: number;\n video?: number;\n subtitle?: number;\n}\n\nexport interface Slave {\n source: NonNullable<LibVlcSource>;\n type: \"audio\" | \"subtitle\";\n selected?: boolean;\n}\n\nexport type AudioMixingMode =\n | \"mixWithOthers\"\n | \"duckOthers\"\n | \"auto\"\n | \"doNotMix\";\n\nexport interface NativeEventProps {\n target: number;\n}\n\nexport interface NativeEvent<T> {\n nativeEvent: T & NativeEventProps;\n}\n\nexport type LibVlcEvent<T> = Omit<T & NativeEventProps, \"target\">;\n\nexport interface Dialog {\n title: string;\n text: string;\n cancelText?: string;\n action1Text?: string;\n action2Text?: string;\n}\n\nexport interface Recording {\n path: string | null;\n isRecording: boolean;\n}\n\nexport interface Track {\n id: number;\n name: string;\n}\n\nexport interface MediaTracks {\n audio: Track[];\n video: Track[];\n subtitle: Track[];\n}\n\nexport interface MediaInfo {\n width: number;\n height: number;\n length: number;\n seekable: boolean;\n tracks: MediaTracks;\n}\n\n/**\n * @hidden\n */\ntype BufferingListener = () => void;\n\n/**\n * @hidden\n */\ntype PlayingListener = () => void;\n\n/**\n * @hidden\n */\ntype PausedListener = () => void;\n\n/**\n * @hidden\n */\ntype StoppedListener = () => void;\n\n/**\n * @hidden\n */\ntype EndReachedListener = () => void;\n\nexport type Error = { error: string };\n\n/**\n * @hidden\n */\ntype EncounteredErrorListener = (event: NativeEvent<Error>) => void;\n\nexport type Time = { time: number };\n\n/**\n * @hidden\n */\ntype TimeChangedListener = (event: NativeEvent<Time>) => void;\n\nexport type Position = { position: number };\n\n/**\n * @hidden\n */\ntype PositionChangedListener = (event: NativeEvent<Position>) => void;\n\n/**\n * @hidden\n */\ntype ESAddedListener = (event: NativeEvent<MediaTracks>) => void;\n\n/**\n * @hidden\n */\ntype RecordChangedListener = (event: NativeEvent<Recording>) => void;\n\nexport type Snapshot = { path: string };\n\n/**\n * @hidden\n */\ntype SnapshotTakenListener = (event: NativeEvent<Snapshot>) => void;\n\n/**\n * @hidden\n */\ntype DialogDisplayListener = (event: NativeEvent<Dialog>) => void;\n\n/**\n * @hidden\n */\ntype FirstPlayListener = (event: NativeEvent<MediaInfo>) => void;\n\n/**\n * @hidden\n */\ntype ForegroundListener = () => void;\n\n/**\n * @hidden\n */\ntype BackgroundListener = () => void;\n\n/**\n * @hidden\n */\nexport interface LibVlcPlayerViewNativeProps {\n ref?: React.Ref<LibVlcPlayerViewRef>;\n source?: LibVlcSource;\n options?: string[];\n tracks?: Tracks;\n slaves?: Slave[];\n scale?: number;\n aspectRatio?: string | null;\n rate?: number;\n time?: number;\n volume?: number;\n mute?: boolean;\n audioMixingMode?: AudioMixingMode;\n playInBackground?: boolean;\n repeat?: boolean;\n autoplay?: boolean;\n onBuffering?: BufferingListener;\n onPlaying?: PlayingListener;\n onPaused?: PausedListener;\n onStopped?: StoppedListener;\n onEndReached?: EndReachedListener;\n onEncounteredError?: EncounteredErrorListener;\n onDialogDisplay?: DialogDisplayListener;\n onTimeChanged?: TimeChangedListener;\n onPositionChanged?: PositionChangedListener;\n onESAdded?: ESAddedListener;\n onRecordChanged?: RecordChangedListener;\n onSnapshotTaken?: SnapshotTakenListener;\n onFirstPlay?: FirstPlayListener;\n onForeground?: ForegroundListener;\n onBackground?: BackgroundListener;\n}\n\nexport interface LibVlcPlayerViewProps extends ViewProps {\n /**\n * Sets the source of the media to be played. Set to `null` to release the player\n */\n source: LibVlcSource;\n /**\n * Sets the VLC options to initialize the player with\n *\n * https://wiki.videolan.org/VLC_command-line_help/\n *\n * @example [\"--network-caching=1000\"]\n *\n * @default []\n */\n options?: string[];\n /**\n * Sets the player audio, video and subtitle tracks\n *\n * @example\n * ```tsx\n * <LibVlcPlayerView\n * tracks={{\n * audio: 0,\n * video: 1,\n * subtitle: 2,\n * }}\n * />\n * ```\n *\n * @default undefined\n */\n tracks?: Tracks;\n /**\n * Sets the player audio and subtitle slaves\n *\n * @example\n * ```tsx\n * <LibVlcPlayerView\n * slaves={[\n * {\n * source: \"file://path/to/subtitle.srt\",\n * type: \"subtitle\",\n * selected: true\n * },\n * ]}\n * />\n * ```\n *\n * @default []\n */\n slaves?: Slave[];\n /**\n * Sets the player scaling factor. Must be a float equal or greater than `0`\n *\n * @default 0\n */\n scale?: number;\n /**\n * Sets the player aspect ratio. Must be a valid string or `null` for default\n *\n * @example \"16:9\"\n *\n * @default undefined\n */\n aspectRatio?: string | null;\n /**\n * Sets the player rate. Must be a float equal or greater than `1`\n *\n * @default 1\n */\n rate?: number;\n /**\n * Sets the initial player time. Must be an integer in milliseconds\n *\n * @default 0\n */\n time?: number;\n /**\n * Sets the player volume. Must be an integer between `0` and `100`\n *\n * @default 100\n */\n volume?: number;\n /**\n * Sets the player volume to `0` when `true`. Previous value is set when `false`\n *\n * @default false\n */\n mute?: boolean;\n /**\n * Determines how the player will interact with other audio playing in the system\n *\n * @default \"auto\"\n */\n audioMixingMode?: AudioMixingMode;\n /**\n * Determines whether the media should continue playing in the background\n *\n * @default false\n */\n playInBackground?: boolean;\n /**\n * Determines whether the media should repeat once ended\n *\n * @default false\n */\n repeat?: boolean;\n /**\n * Determines whether the media should autoplay once created\n *\n * @default true\n */\n autoplay?: boolean;\n /**\n * Called after the `Buffering` player event\n */\n onBuffering?: () => void;\n /**\n * Called after the `Playing` player event\n */\n onPlaying?: () => void;\n /**\n * Called after the `Paused` player event\n */\n onPaused?: () => void;\n /**\n * Called after the `Stopped` player event\n */\n onStopped?: () => void;\n /**\n * Called after the `EndReached` player event\n */\n onEndReached?: () => void;\n /**\n * Called after the `EncounteredError` player event\n */\n onEncounteredError?: (event: Error) => void;\n /**\n * Called after a `Dialog` needs to be displayed\n */\n onDialogDisplay?: (event: Dialog) => void;\n /**\n * Called after the `TimeChanged` player event\n */\n onTimeChanged?: (event: Time) => void;\n /**\n * Called after the `PositionChanged` player event\n */\n onPositionChanged?: (event: Position) => void;\n /**\n * Called after the `ESAdded` player event\n */\n onESAdded?: (event: MediaTracks) => void;\n /**\n * Called after the `RecordChanged` player event\n */\n onRecordChanged?: (event: Recording) => void;\n /**\n * Called after a media snapshot is taken\n */\n onSnapshotTaken?: (event: Snapshot) => void;\n /**\n * Called after the player first playing event\n */\n onFirstPlay?: (event: MediaInfo) => void;\n /**\n * Called after the player enters the foreground\n */\n onForeground?: () => void;\n /**\n * Called after the player enters the background\n */\n onBackground?: () => void;\n}\n"]}
@@ -18,6 +18,12 @@ const LibVlcPlayerView = forwardRef((props, ref) => {
18
18
  props.onEncounteredError(nativeEvent);
19
19
  }
20
20
  };
21
+ const onDialogDisplay = (event) => {
22
+ if (props.onDialogDisplay) {
23
+ const nativeEvent = converNativeEvent(event);
24
+ props.onDialogDisplay(nativeEvent);
25
+ }
26
+ };
21
27
  const onTimeChanged = (event) => {
22
28
  if (props.onTimeChanged) {
23
29
  const nativeEvent = converNativeEvent(event);
@@ -48,12 +54,6 @@ const LibVlcPlayerView = forwardRef((props, ref) => {
48
54
  props.onSnapshotTaken(nativeEvent);
49
55
  }
50
56
  };
51
- const onDialogDisplay = (event) => {
52
- if (props.onDialogDisplay) {
53
- const nativeEvent = converNativeEvent(event);
54
- props.onDialogDisplay(nativeEvent);
55
- }
56
- };
57
57
  const onFirstPlay = (event) => {
58
58
  if (props.onFirstPlay) {
59
59
  const nativeEvent = converNativeEvent(event);
@@ -63,7 +63,7 @@ const LibVlcPlayerView = forwardRef((props, ref) => {
63
63
  return (<NativeView {...nativeProps} ref={ref} source={parseSource(props.source)} slaves={props.slaves?.map((slave) => ({
64
64
  ...slave,
65
65
  source: parseSource(slave.source),
66
- }))} onEncounteredError={onEncounteredError} onTimeChanged={onTimeChanged} onPositionChanged={onPositionChanged} onESAdded={onESAdded} onRecordChanged={onRecordChanged} onSnapshotTaken={onSnapshotTaken} onDialogDisplay={onDialogDisplay} onFirstPlay={onFirstPlay}/>);
66
+ }))} onEncounteredError={onEncounteredError} onDialogDisplay={onDialogDisplay} onTimeChanged={onTimeChanged} onPositionChanged={onPositionChanged} onESAdded={onESAdded} onRecordChanged={onRecordChanged} onSnapshotTaken={onSnapshotTaken} onFirstPlay={onFirstPlay}/>);
67
67
  });
68
68
  export default LibVlcPlayerView;
69
69
  //# sourceMappingURL=LibVlcPlayerView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LibVlcPlayerView.js","sourceRoot":"","sources":["../src/LibVlcPlayerView.tsx"],"names":[],"mappings":"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","sourcesContent":["import { requireNativeView } from \"expo\";\nimport { forwardRef, type ComponentType } from \"react\";\n\nimport {\n LibVlcPlayerViewNativeProps,\n LibVlcPlayerViewProps,\n LibVlcPlayerViewRef,\n type Dialog,\n type Error,\n type MediaInfo,\n type MediaTracks,\n type NativeEvent,\n type Position,\n type Recording,\n type Snapshot,\n type Time,\n} from \"./LibVlcPlayer.types\";\nimport { parseSource } from \"./utils/assets\";\nimport { converNativeEvent } from \"./utils/events\";\nimport { convertNativeProps } from \"./utils/props\";\n\nconst NativeView: ComponentType<LibVlcPlayerViewNativeProps> =\n requireNativeView(\"ExpoLibVlcPlayer\");\n\nlet loggedRenderingChildrenWarning: boolean = false;\n\nconst LibVlcPlayerView = forwardRef<LibVlcPlayerViewRef, LibVlcPlayerViewProps>(\n (props, ref) => {\n const nativeProps = convertNativeProps(props);\n\n // @ts-expect-error\n if (nativeProps.children && !loggedRenderingChildrenWarning) {\n console.warn(\n \"The <LibVlcPlayerView> component does not support children. This may lead to inconsistent behaviour or crashes. If you want to render content on top of the LibVlcPlayer, consider using absolute positioning.\",\n );\n loggedRenderingChildrenWarning = true;\n }\n\n const onEncounteredError = (event: NativeEvent<Error>) => {\n if (props.onEncounteredError) {\n const nativeEvent = converNativeEvent(event);\n props.onEncounteredError(nativeEvent);\n }\n };\n\n const onTimeChanged = (event: NativeEvent<Time>) => {\n if (props.onTimeChanged) {\n const nativeEvent = converNativeEvent(event);\n props.onTimeChanged(nativeEvent);\n }\n };\n\n const onPositionChanged = (event: NativeEvent<Position>) => {\n if (props.onPositionChanged) {\n const nativeEvent = converNativeEvent(event);\n props.onPositionChanged(nativeEvent);\n }\n };\n\n const onESAdded = (event: NativeEvent<MediaTracks>) => {\n if (props.onESAdded) {\n const nativeEvent = converNativeEvent(event);\n props.onESAdded(nativeEvent);\n }\n };\n\n const onRecordChanged = (event: NativeEvent<Recording>) => {\n if (props.onRecordChanged) {\n const nativeEvent = converNativeEvent(event);\n props.onRecordChanged(nativeEvent);\n }\n };\n\n const onSnapshotTaken = (event: NativeEvent<Snapshot>) => {\n if (props.onSnapshotTaken) {\n const nativeEvent = converNativeEvent(event);\n props.onSnapshotTaken(nativeEvent);\n }\n };\n\n const onDialogDisplay = (event: NativeEvent<Dialog>) => {\n if (props.onDialogDisplay) {\n const nativeEvent = converNativeEvent(event);\n props.onDialogDisplay(nativeEvent);\n }\n };\n\n const onFirstPlay = (event: NativeEvent<MediaInfo>) => {\n if (props.onFirstPlay) {\n const nativeEvent = converNativeEvent(event);\n props.onFirstPlay(nativeEvent);\n }\n };\n\n return (\n <NativeView\n {...nativeProps}\n ref={ref}\n source={parseSource(props.source)}\n slaves={props.slaves?.map((slave) => ({\n ...slave,\n source: parseSource(slave.source)!,\n }))}\n onEncounteredError={onEncounteredError}\n onTimeChanged={onTimeChanged}\n onPositionChanged={onPositionChanged}\n onESAdded={onESAdded}\n onRecordChanged={onRecordChanged}\n onSnapshotTaken={onSnapshotTaken}\n onDialogDisplay={onDialogDisplay}\n onFirstPlay={onFirstPlay}\n />\n );\n },\n);\n\nexport default LibVlcPlayerView;\n"]}
1
+ {"version":3,"file":"LibVlcPlayerView.js","sourceRoot":"","sources":["../src/LibVlcPlayerView.tsx"],"names":[],"mappings":"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","sourcesContent":["import { requireNativeView } from \"expo\";\nimport { forwardRef, type ComponentType } from \"react\";\n\nimport {\n LibVlcPlayerViewNativeProps,\n LibVlcPlayerViewProps,\n LibVlcPlayerViewRef,\n type Dialog,\n type Error,\n type MediaInfo,\n type MediaTracks,\n type NativeEvent,\n type Position,\n type Recording,\n type Snapshot,\n type Time,\n} from \"./LibVlcPlayer.types\";\nimport { parseSource } from \"./utils/assets\";\nimport { converNativeEvent } from \"./utils/events\";\nimport { convertNativeProps } from \"./utils/props\";\n\nconst NativeView: ComponentType<LibVlcPlayerViewNativeProps> =\n requireNativeView(\"ExpoLibVlcPlayer\");\n\nlet loggedRenderingChildrenWarning: boolean = false;\n\nconst LibVlcPlayerView = forwardRef<LibVlcPlayerViewRef, LibVlcPlayerViewProps>(\n (props, ref) => {\n const nativeProps = convertNativeProps(props);\n\n // @ts-expect-error\n if (nativeProps.children && !loggedRenderingChildrenWarning) {\n console.warn(\n \"The <LibVlcPlayerView> component does not support children. This may lead to inconsistent behaviour or crashes. If you want to render content on top of the LibVlcPlayer, consider using absolute positioning.\",\n );\n loggedRenderingChildrenWarning = true;\n }\n\n const onEncounteredError = (event: NativeEvent<Error>) => {\n if (props.onEncounteredError) {\n const nativeEvent = converNativeEvent(event);\n props.onEncounteredError(nativeEvent);\n }\n };\n\n const onDialogDisplay = (event: NativeEvent<Dialog>) => {\n if (props.onDialogDisplay) {\n const nativeEvent = converNativeEvent(event);\n props.onDialogDisplay(nativeEvent);\n }\n };\n\n const onTimeChanged = (event: NativeEvent<Time>) => {\n if (props.onTimeChanged) {\n const nativeEvent = converNativeEvent(event);\n props.onTimeChanged(nativeEvent);\n }\n };\n\n const onPositionChanged = (event: NativeEvent<Position>) => {\n if (props.onPositionChanged) {\n const nativeEvent = converNativeEvent(event);\n props.onPositionChanged(nativeEvent);\n }\n };\n\n const onESAdded = (event: NativeEvent<MediaTracks>) => {\n if (props.onESAdded) {\n const nativeEvent = converNativeEvent(event);\n props.onESAdded(nativeEvent);\n }\n };\n\n const onRecordChanged = (event: NativeEvent<Recording>) => {\n if (props.onRecordChanged) {\n const nativeEvent = converNativeEvent(event);\n props.onRecordChanged(nativeEvent);\n }\n };\n\n const onSnapshotTaken = (event: NativeEvent<Snapshot>) => {\n if (props.onSnapshotTaken) {\n const nativeEvent = converNativeEvent(event);\n props.onSnapshotTaken(nativeEvent);\n }\n };\n\n const onFirstPlay = (event: NativeEvent<MediaInfo>) => {\n if (props.onFirstPlay) {\n const nativeEvent = converNativeEvent(event);\n props.onFirstPlay(nativeEvent);\n }\n };\n\n return (\n <NativeView\n {...nativeProps}\n ref={ref}\n source={parseSource(props.source)}\n slaves={props.slaves?.map((slave) => ({\n ...slave,\n source: parseSource(slave.source)!,\n }))}\n onEncounteredError={onEncounteredError}\n onDialogDisplay={onDialogDisplay}\n onTimeChanged={onTimeChanged}\n onPositionChanged={onPositionChanged}\n onESAdded={onESAdded}\n onRecordChanged={onRecordChanged}\n onSnapshotTaken={onSnapshotTaken}\n onFirstPlay={onFirstPlay}\n />\n );\n },\n);\n\nexport default LibVlcPlayerView;\n"]}
@@ -6,13 +6,14 @@ private let pausedEvent = "onPaused"
6
6
  private let stoppedEvent = "onStopped"
7
7
  private let endReachedEvent = "onEndReached"
8
8
  private let encounteredErrorEvent = "onEncounteredError"
9
+ private let dialogDisplayEvent = "onDialogDisplay"
9
10
  private let timeChangedEvent = "onTimeChanged"
10
11
  private let positionChangedEvent = "onPositionChanged"
11
12
  private let esAddedEvent = "onESAdded"
12
13
  private let recordChangedEvent = "onRecordChanged"
13
14
  private let snapshotTakenEvent = "onSnapshotTaken"
14
- private let dialogDisplayEvent = "onDialogDisplay"
15
15
  private let firstPlayEvent = "onFirstPlay"
16
+ private let foregroundEvent = "onForeground"
16
17
  private let backgroundEvent = "onBackground"
17
18
 
18
19
  let playerEvents = [
@@ -22,13 +23,14 @@ let playerEvents = [
22
23
  stoppedEvent,
23
24
  endReachedEvent,
24
25
  encounteredErrorEvent,
26
+ dialogDisplayEvent,
25
27
  timeChangedEvent,
26
28
  positionChangedEvent,
27
29
  esAddedEvent,
28
30
  recordChangedEvent,
29
31
  snapshotTakenEvent,
30
- dialogDisplayEvent,
31
32
  firstPlayEvent,
33
+ foregroundEvent,
32
34
  backgroundEvent,
33
35
  ]
34
36
 
@@ -87,14 +89,14 @@ public class LibVlcPlayerModule: Module {
87
89
  view.audioMixingMode = audioMixingMode ?? .auto
88
90
  }
89
91
 
90
- Prop("repeat") { (view: LibVlcPlayerView, shouldRepeat: Bool?) in
91
- view.shouldRepeat = shouldRepeat ?? false
92
- }
93
-
94
92
  Prop("playInBackground") { (view: LibVlcPlayerView, playInBackground: Bool?) in
95
93
  view.playInBackground = playInBackground ?? false
96
94
  }
97
95
 
96
+ Prop("repeat") { (view: LibVlcPlayerView, shouldRepeat: Bool?) in
97
+ view.shouldRepeat = shouldRepeat ?? false
98
+ }
99
+
98
100
  Prop("autoplay") { (view: LibVlcPlayerView, autoplay: Bool?) in
99
101
  view.autoplay = autoplay ?? true
100
102
  }
@@ -116,7 +118,7 @@ public class LibVlcPlayerModule: Module {
116
118
  }
117
119
 
118
120
  AsyncFunction("seek") { (view: LibVlcPlayerView, value: Double, type: String?) in
119
- view.seek(value, type ?? "position")
121
+ view.seek(value, type ?? "time")
120
122
  }
121
123
 
122
124
  AsyncFunction("record") { (view: LibVlcPlayerView, path: String?) in
@@ -136,8 +138,12 @@ public class LibVlcPlayerModule: Module {
136
138
  }
137
139
  }
138
140
 
141
+ OnAppEntersForeground {
142
+ MediaPlayerManager.shared.onPlayerForeground()
143
+ }
144
+
139
145
  OnAppEntersBackground {
140
- MediaPlayerManager.shared.onAppBackground()
146
+ MediaPlayerManager.shared.onPlayerBackground()
141
147
  }
142
148
  }
143
149
  }
@@ -36,13 +36,14 @@ class LibVlcPlayerView: ExpoView {
36
36
  let onStopped = EventDispatcher()
37
37
  let onEndReached = EventDispatcher()
38
38
  let onEncounteredError = EventDispatcher()
39
+ let onDialogDisplay = EventDispatcher()
39
40
  let onTimeChanged = EventDispatcher()
40
41
  let onPositionChanged = EventDispatcher()
41
42
  let onESAdded = EventDispatcher()
42
43
  let onRecordChanged = EventDispatcher()
43
44
  let onSnapshotTaken = EventDispatcher()
44
- let onDialogDisplay = EventDispatcher()
45
45
  let onFirstPlay = EventDispatcher()
46
+ let onForeground = EventDispatcher()
46
47
  let onBackground = EventDispatcher()
47
48
 
48
49
  required init(appContext: AppContext? = nil) {
@@ -344,6 +345,12 @@ class LibVlcPlayerView: ExpoView {
344
345
  }
345
346
  }
346
347
 
348
+ var playInBackground: Bool = false {
349
+ didSet {
350
+ MediaPlayerManager.shared.setAppropriateAudioSession()
351
+ }
352
+ }
353
+
347
354
  var shouldRepeat: Bool = false {
348
355
  didSet {
349
356
  if options.hasRepeatOption() {
@@ -353,12 +360,6 @@ class LibVlcPlayerView: ExpoView {
353
360
  }
354
361
  }
355
362
 
356
- var playInBackground: Bool = false {
357
- didSet {
358
- MediaPlayerManager.shared.setAppropriateAudioSession()
359
- }
360
- }
361
-
362
363
  var autoplay: Bool = true {
363
364
  didSet {
364
365
  if !autoplay {
@@ -19,7 +19,13 @@ class MediaPlayerManager {
19
19
  playerViews.remove(view)
20
20
  }
21
21
 
22
- func onAppBackground() {
22
+ func onPlayerForeground() {
23
+ for view in playerViews.allObjects {
24
+ view.onForeground()
25
+ }
26
+ }
27
+
28
+ func onPlayerBackground() {
23
29
  for view in playerViews.allObjects {
24
30
  view.onBackground()
25
31
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-libvlc-player",
3
- "version": "2.5.0",
3
+ "version": "3.0.0",
4
4
  "description": "LibVLC Player for Expo",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -20,14 +20,14 @@ export interface LibVlcPlayerViewRef {
20
20
  */
21
21
  readonly stop: () => Promise<void>;
22
22
  /**
23
- * Sets the position or time of the current player
23
+ * Sets the time or position of the current player
24
24
  *
25
25
  * @param value - Must be a number equal or greater than `0`
26
- * @param type - Defaults to `"position"`
26
+ * @param type - Defaults to `"time"`
27
27
  *
28
28
  * @returns A promise which resolves to `void`
29
29
  */
30
- readonly seek: (value: number, type?: "position" | "time") => Promise<void>;
30
+ readonly seek: (value: number, type?: "time" | "position") => Promise<void>;
31
31
  /**
32
32
  * Starts or stops recording the current media
33
33
  *
@@ -90,6 +90,19 @@ export interface NativeEvent<T> {
90
90
 
91
91
  export type LibVlcEvent<T> = Omit<T & NativeEventProps, "target">;
92
92
 
93
+ export interface Dialog {
94
+ title: string;
95
+ text: string;
96
+ cancelText?: string;
97
+ action1Text?: string;
98
+ action2Text?: string;
99
+ }
100
+
101
+ export interface Recording {
102
+ path: string | null;
103
+ isRecording: boolean;
104
+ }
105
+
93
106
  export interface Track {
94
107
  id: number;
95
108
  name: string;
@@ -109,19 +122,6 @@ export interface MediaInfo {
109
122
  tracks: MediaTracks;
110
123
  }
111
124
 
112
- export interface Recording {
113
- path: string | null;
114
- isRecording: boolean;
115
- }
116
-
117
- export interface Dialog {
118
- title: string;
119
- text: string;
120
- cancelText?: string;
121
- action1Text?: string;
122
- action2Text?: string;
123
- }
124
-
125
125
  /**
126
126
  * @hidden
127
127
  */
@@ -195,6 +195,11 @@ type DialogDisplayListener = (event: NativeEvent<Dialog>) => void;
195
195
  */
196
196
  type FirstPlayListener = (event: NativeEvent<MediaInfo>) => void;
197
197
 
198
+ /**
199
+ * @hidden
200
+ */
201
+ type ForegroundListener = () => void;
202
+
198
203
  /**
199
204
  * @hidden
200
205
  */
@@ -216,8 +221,8 @@ export interface LibVlcPlayerViewNativeProps {
216
221
  volume?: number;
217
222
  mute?: boolean;
218
223
  audioMixingMode?: AudioMixingMode;
219
- repeat?: boolean;
220
224
  playInBackground?: boolean;
225
+ repeat?: boolean;
221
226
  autoplay?: boolean;
222
227
  onBuffering?: BufferingListener;
223
228
  onPlaying?: PlayingListener;
@@ -225,13 +230,14 @@ export interface LibVlcPlayerViewNativeProps {
225
230
  onStopped?: StoppedListener;
226
231
  onEndReached?: EndReachedListener;
227
232
  onEncounteredError?: EncounteredErrorListener;
233
+ onDialogDisplay?: DialogDisplayListener;
228
234
  onTimeChanged?: TimeChangedListener;
229
235
  onPositionChanged?: PositionChangedListener;
230
236
  onESAdded?: ESAddedListener;
231
237
  onRecordChanged?: RecordChangedListener;
232
238
  onSnapshotTaken?: SnapshotTakenListener;
233
- onDialogDisplay?: DialogDisplayListener;
234
239
  onFirstPlay?: FirstPlayListener;
240
+ onForeground?: ForegroundListener;
235
241
  onBackground?: BackgroundListener;
236
242
  }
237
243
 
@@ -331,17 +337,17 @@ export interface LibVlcPlayerViewProps extends ViewProps {
331
337
  */
332
338
  audioMixingMode?: AudioMixingMode;
333
339
  /**
334
- * Determines whether the media should repeat once ended
340
+ * Determines whether the media should continue playing in the background
335
341
  *
336
342
  * @default false
337
343
  */
338
- repeat?: boolean;
344
+ playInBackground?: boolean;
339
345
  /**
340
- * Determines whether the media should continue playing in the background
346
+ * Determines whether the media should repeat once ended
341
347
  *
342
348
  * @default false
343
349
  */
344
- playInBackground?: boolean;
350
+ repeat?: boolean;
345
351
  /**
346
352
  * Determines whether the media should autoplay once created
347
353
  *
@@ -372,6 +378,10 @@ export interface LibVlcPlayerViewProps extends ViewProps {
372
378
  * Called after the `EncounteredError` player event
373
379
  */
374
380
  onEncounteredError?: (event: Error) => void;
381
+ /**
382
+ * Called after a `Dialog` needs to be displayed
383
+ */
384
+ onDialogDisplay?: (event: Dialog) => void;
375
385
  /**
376
386
  * Called after the `TimeChanged` player event
377
387
  */
@@ -392,14 +402,14 @@ export interface LibVlcPlayerViewProps extends ViewProps {
392
402
  * Called after a media snapshot is taken
393
403
  */
394
404
  onSnapshotTaken?: (event: Snapshot) => void;
395
- /**
396
- * Called after a `Dialog` needs to be displayed
397
- */
398
- onDialogDisplay?: (event: Dialog) => void;
399
405
  /**
400
406
  * Called after the player first playing event
401
407
  */
402
408
  onFirstPlay?: (event: MediaInfo) => void;
409
+ /**
410
+ * Called after the player enters the foreground
411
+ */
412
+ onForeground?: () => void;
403
413
  /**
404
414
  * Called after the player enters the background
405
415
  */
@@ -43,6 +43,13 @@ const LibVlcPlayerView = forwardRef<LibVlcPlayerViewRef, LibVlcPlayerViewProps>(
43
43
  }
44
44
  };
45
45
 
46
+ const onDialogDisplay = (event: NativeEvent<Dialog>) => {
47
+ if (props.onDialogDisplay) {
48
+ const nativeEvent = converNativeEvent(event);
49
+ props.onDialogDisplay(nativeEvent);
50
+ }
51
+ };
52
+
46
53
  const onTimeChanged = (event: NativeEvent<Time>) => {
47
54
  if (props.onTimeChanged) {
48
55
  const nativeEvent = converNativeEvent(event);
@@ -78,13 +85,6 @@ const LibVlcPlayerView = forwardRef<LibVlcPlayerViewRef, LibVlcPlayerViewProps>(
78
85
  }
79
86
  };
80
87
 
81
- const onDialogDisplay = (event: NativeEvent<Dialog>) => {
82
- if (props.onDialogDisplay) {
83
- const nativeEvent = converNativeEvent(event);
84
- props.onDialogDisplay(nativeEvent);
85
- }
86
- };
87
-
88
88
  const onFirstPlay = (event: NativeEvent<MediaInfo>) => {
89
89
  if (props.onFirstPlay) {
90
90
  const nativeEvent = converNativeEvent(event);
@@ -102,12 +102,12 @@ const LibVlcPlayerView = forwardRef<LibVlcPlayerViewRef, LibVlcPlayerViewProps>(
102
102
  source: parseSource(slave.source)!,
103
103
  }))}
104
104
  onEncounteredError={onEncounteredError}
105
+ onDialogDisplay={onDialogDisplay}
105
106
  onTimeChanged={onTimeChanged}
106
107
  onPositionChanged={onPositionChanged}
107
108
  onESAdded={onESAdded}
108
109
  onRecordChanged={onRecordChanged}
109
110
  onSnapshotTaken={onSnapshotTaken}
110
- onDialogDisplay={onDialogDisplay}
111
111
  onFirstPlay={onFirstPlay}
112
112
  />
113
113
  );