* fix: fix crash when invalid index type is provided and minor clean up
* fix: review video track management. Fix index support and rework string vs int in tracks management
* fix: ABR track selection check
* fix: split track selector in sample and lint code
* fix: ensure we don't report null fields
* chore: improve tracks displayed
* chore: start moving to selection by index only
* perf: ensure we do not provide callback to native if no callback provided from app
* chore: rework bufferConfig to make it more generic and reduce ReactExoplayerView code size
* chore: improve issue template
* fix(android): avoid video view flickering at playback startup
* feat(android): implement live buffer configuration
* chore: fix linter
* chore: rework bufferConfig to make it more generic and reduce ReactExoplayerView code size
* feat: expose bufferingStrategy to app and change default behavior
rename disableBuffering undocumented prop to bufferingStrategy and document it.
before this change, default was 'dependingOnMemory'. It can trigger some unnecessary gc() call on android.
* perf: ensure we do not provide callback to native if no callback provided from app
* chore: rework bufferConfig to make it more generic and reduce ReactExoplayerView code size
* fix(js): add missing type for cacheSizeMB
* feat(ios): add `showNotificationControls` prop
* feat(android): add `showNotificationControls` prop
* add docs
* feat!: add `metadata` property to srouce
This is breaking change for iOS/tvOS as we are moving some properties, but I believe that this will more readable and more user friendly
* chore(ios): remove UI blocking function
* code review changes for android
* update example
* fix readme
* fix typos
* update docs
* fix typo
* chore: improve sample metadata notification
* update codegen types
* rename properties
* update tvOS example
* reset metadata on source change
* update docs
---------
Co-authored-by: Olivier Bouillet <freeboub@gmail.com>
* fix(ts): onPlaybackRateChangeData was not correctly typed
* fix: ensure tracks are well displayed in the sample
* fix: avoid crash when setting invalid selected track or index 0
* fix: ensure poster works as expected and add it to the sample
* chore: drop audioOnly property as not implemented on any platform
* fix(ios): do not save pause state before seeking
* fix(ts): onPlaybackRateChangeData was not correctly typed
* feat: implement opacity to control visibility of subtitles
implemented per discussion on https://github.com/react-native-video/react-native-video/issues/3579
updated docs and linked onTextTrackDataChanged to the subtitle style to clarify intent on how to control visibility.
* chore: update type so that we use a union of 0 1 vs any number
* chore: run ktlint to get rid of white spaces
* feat: add ability to have range of numbers for opacity; while, 0 will still not render the subtitles.
added util function for safeGetFloat
updated types
* feat: add ability to suppress subtitles with opacity 0
add data structure for subtitle styles for extensibility
* chore: run yarn check-ios
* chore: update documentation to clarify differences between android and ios
* Update android/src/main/java/com/brentvatne/exoplayer/ExoPlayerView.java
Co-authored-by: Olivier Bouillet <62574056+freeboub@users.noreply.github.com>
---------
Co-authored-by: Olivier Bouillet <62574056+freeboub@users.noreply.github.com>
* feat: implemented codegenConfig on package.json
* chore: moved directory location of Fabric component
* fix: typefix FabricExample
* chore: pod instaslled FabricExample iOS app
* feat: implemented codegen config on package.json
* feat: implemented codegen of specs/VideoNativeComponent
* chore: removed not using type Filter
* feat: removed unnecessary export on codegen tyepes
* Revert "feat: removed unnecessary export on codegen tyepes"
This reverts commit fc243b0ac5c565eda4886cd865c32ba4e812d7ff.
* refactor: fixed types on Video component and modified types with codegen types
* feat: modified codegenNativeComponent naming (RCTVideo)
* feat: pod installed example basic app
* feat: bump up react-native dev dependency version to 0.73.2 for supporting codegen array event params
* feat: support array param types on event callback function codegen types
* chore: pod installed ios basic example
* feat: modified source prop as optional type
* feat: add original src/VideoComponent.ts again
* Revert "feat: add original src/VideoComponent.ts again"
This reverts commit d63ac94e5330f7c7fb50374f65f8f3f4e0a225d7.
* feat: add original src/VideoComponent.ts again with original file name
* feat: git rm src/specs/VideoNativeComponent.ts
* feat: git mv VideoNativeComponent.ts
* feat: git mv src/specs/VideoNativeComponent.ts
* feat: git mv src/VideoNativeComponent.ts src/specs/VideoNativeComponent.ts
* feat: implemented array type handling on android JAVA
* feat: updated iOS requestHeaders parsing native
* feat: use safeGetArray on android, removed not using import too
* feat: temporary commit - reusing enum types for remaining docs types
* feat: implemented mixed type of SelectedTrack.value for JS layer
* feature: add support to get subtitle content data
* refactor: return a string of the subtitles
Push the parsing/formatting to the consumer side.
* chore: add types for new subtitle feature
* chore: run swiftlint and swiftformat
* chore: add documentation for new onSubtitleTracks callback
* chore: added test uri; basic implementation of feature; hotfix onTextTracks
added optional chaining for `return x?.selected` because tracks that don't have a track selected either by default or manually will return undefined and this can cause an error.
* feat: rename onSubtitleTracks to onTextTrackDataChanged
Renamed the onSubtitleTracks event to onTextTrackDataChanged across the codebase to clearly indicate the callback's purpose: being called when the text track's data changes. This change is reflected in the events documentation, example usage in VideoPlayer.tsx, and the relevant iOS implementation files for consistency and clarity, in line with PR feedback.
* chore: omit target property
target could be confusing for users so we have removed it. using the delete operator instead of using {target,...eventData} as that would give an eslint error about unused vars.