@javascriptcommon/react-native-track-player 1.2.23 → 4.1.4

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 (507) hide show
  1. package/LICENSE +201 -21
  2. package/README.md +8 -0
  3. package/android/build.gradle +80 -63
  4. package/android/proguard-rules.txt +0 -3
  5. package/android/src/main/AndroidManifest.xml +10 -11
  6. package/android/src/main/java/com/doublesymmetry/trackplayer/HeadlessJsMediaService.kt +199 -0
  7. package/android/src/main/java/com/doublesymmetry/trackplayer/TrackPlayer.kt +33 -0
  8. package/android/src/main/java/com/{guichaguri → doublesymmetry}/trackplayer/extensions/AudioPlayerStateExt.kt +3 -3
  9. package/android/src/main/java/com/doublesymmetry/trackplayer/extensions/EnumExtensions.kt +5 -0
  10. package/android/src/main/java/com/doublesymmetry/trackplayer/extensions/NumberExt.kt +13 -0
  11. package/android/src/main/java/com/{guichaguri → doublesymmetry}/trackplayer/model/MetadataAdapter.kt +20 -17
  12. package/android/src/main/java/com/doublesymmetry/trackplayer/model/NowPlayingMetadata.kt +16 -0
  13. package/android/src/main/java/com/{guichaguri/trackplayer/kotlinaudio/models → doublesymmetry/trackplayer/model}/PlaybackMetadata.kt +31 -28
  14. package/android/src/main/java/com/{guichaguri → doublesymmetry}/trackplayer/model/State.kt +1 -1
  15. package/android/src/main/java/com/doublesymmetry/trackplayer/model/Track.kt +67 -0
  16. package/android/src/main/java/com/doublesymmetry/trackplayer/model/TrackAudioItem.kt +18 -0
  17. package/android/src/main/java/com/doublesymmetry/trackplayer/model/TrackMetadata.kt +38 -0
  18. package/android/src/main/java/com/{guichaguri → doublesymmetry}/trackplayer/module/MusicEvents.kt +10 -9
  19. package/android/src/main/java/com/doublesymmetry/trackplayer/module/MusicModule.kt +778 -0
  20. package/android/src/main/java/com/doublesymmetry/trackplayer/service/MusicService.kt +1286 -0
  21. package/android/src/main/java/com/doublesymmetry/trackplayer/utils/AppForegroundTracker.kt +35 -0
  22. package/android/src/main/java/com/{guichaguri/trackplayer/service → doublesymmetry/trackplayer/utils}/BundleUtils.kt +50 -20
  23. package/android/src/main/java/com/doublesymmetry/trackplayer/utils/CoilBitmapLoader.kt +65 -0
  24. package/android/src/main/java/com/doublesymmetry/trackplayer/utils/MediaItemBuilder.kt +41 -0
  25. package/android/src/main/java/com/doublesymmetry/trackplayer/utils/RejectionException.kt +11 -0
  26. package/android/src/main/java/com/doublesymmetry/trackplayer/video/TrackPlayerVideoView.kt +42 -0
  27. package/android/src/main/java/com/doublesymmetry/trackplayer/video/TrackPlayerVideoViewManager.kt +18 -0
  28. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/event/EventHolder.kt +7 -7
  29. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/event/PlayerEventHolder.kt +22 -9
  30. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/AudioContentType.kt +1 -1
  31. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/AudioItem.kt +118 -0
  32. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/AudioItemTransitionReason.kt +3 -3
  33. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/AudioPlayerState.kt +2 -2
  34. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/BufferConfig.kt +1 -1
  35. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/CacheConfig.kt +1 -1
  36. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/Capability.kt +1 -1
  37. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/CustomButton.kt +19 -0
  38. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/FocusChangeData.kt +1 -1
  39. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/MediaSessionCallback.kt +1 -1
  40. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/PlayWhenReadyChangeData.kt +1 -3
  41. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/PlaybackEndedReason.kt +1 -1
  42. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/PlaybackError.kt +1 -1
  43. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/PlayerConfig.kt +8 -5
  44. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/PlayerOptions.kt +40 -0
  45. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/PositionChangedReason.kt +1 -1
  46. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/RepeatMode.kt +16 -0
  47. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/WakeMode.kt +7 -0
  48. package/android/src/main/java/com/lovegaoshi/kotlinaudio/player/AudioPlayer.kt +756 -0
  49. package/android/src/main/java/com/lovegaoshi/kotlinaudio/player/ForwardingPlayer.java +1124 -0
  50. package/android/src/main/java/com/{guichaguri/trackplayer/kotlinaudio/players → lovegaoshi/kotlinaudio/player}/QueuedAudioPlayer.kt +68 -58
  51. package/android/src/main/java/com/lovegaoshi/kotlinaudio/player/components/APMRenderersFactory.kt +33 -0
  52. package/android/src/main/java/com/lovegaoshi/kotlinaudio/player/components/Buffer.kt +34 -0
  53. package/android/src/main/java/com/lovegaoshi/kotlinaudio/player/components/Cache.kt +27 -0
  54. package/android/src/main/java/com/lovegaoshi/kotlinaudio/player/components/FocusManager.kt +59 -0
  55. package/android/src/main/java/com/lovegaoshi/kotlinaudio/player/components/MediaFactory.kt +130 -0
  56. package/android/src/main/java/com/lovegaoshi/kotlinaudio/processors/TeeListener.kt +171 -0
  57. package/android/src/main/java/com/lovegaoshi/kotlinaudio/service/MusicService.kt +127 -0
  58. package/android/src/main/java/com/lovegaoshi/kotlinaudio/utils/FFT.java +99 -0
  59. package/android/src/main/java/com/lovegaoshi/kotlinaudio/utils/Utils.kt +113 -0
  60. package/android/src/main/res/drawable/baseline_repeat_24.xml +5 -0
  61. package/android/src/main/res/drawable/baseline_repeat_one_24.xml +5 -0
  62. package/android/src/main/res/drawable/forward.xml +5 -0
  63. package/android/src/main/res/drawable/heart_24px.xml +5 -0
  64. package/android/src/main/res/drawable/hearte_24px.xml +5 -0
  65. package/android/src/main/res/drawable/ifl_24px.xml +5 -0
  66. package/android/src/main/res/drawable/rewind.xml +5 -0
  67. package/android/src/main/res/drawable/shuffle_24px.xml +5 -0
  68. package/android/src/main/res/values/strings.xml +3 -4
  69. package/android/src/main/res/xml/automotive_app_desc.xml +3 -0
  70. package/ios/Example/SwiftAudio/Assets.xcassets/22AMI.imageset/22AMillion.jpg +0 -0
  71. package/ios/Example/SwiftAudio/Assets.xcassets/22AMI.imageset/Contents.json +21 -0
  72. package/ios/Example/SwiftAudio/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
  73. package/ios/Example/SwiftAudio/Assets.xcassets/AppIcon.appiconset/Contents.json +58 -0
  74. package/ios/Example/SwiftAudio/Assets.xcassets/Contents.json +6 -0
  75. package/ios/Example/SwiftAudio/Assets.xcassets/cover.imageset/Contents.json +21 -0
  76. package/ios/Example/SwiftAudio/Assets.xcassets/cover.imageset/cover.jpg +0 -0
  77. package/ios/Example/SwiftAudio/AudioController.swift +46 -0
  78. package/ios/Example/SwiftAudio/Extensions.swift +22 -0
  79. package/ios/Example/SwiftAudio/PlayerView.swift +172 -0
  80. package/ios/Example/SwiftAudio/PlayerViewModel.swift +120 -0
  81. package/ios/Example/SwiftAudio/Preview Content/Preview Assets.xcassets/Contents.json +6 -0
  82. package/ios/Example/SwiftAudio/QueueView.swift +65 -0
  83. package/ios/{TrackPlayer.xcodeproj/xcuserdata/marco.xcuserdatad/xcschemes/xcschememanagement.plist → Example/SwiftAudio/SwiftAudio.entitlements} +6 -8
  84. package/ios/Example/SwiftAudio/SwiftAudioApp.swift +17 -0
  85. package/ios/Example/SwiftAudio.xcodeproj/project.pbxproj +412 -0
  86. package/ios/{TrackPlayer.xcodeproj → Example/SwiftAudio.xcodeproj}/project.xcworkspace/contents.xcworkspacedata +1 -1
  87. package/ios/RNTrackPlayer/Models/Capabilities.swift +39 -4
  88. package/ios/RNTrackPlayer/Models/MediaURL.swift +12 -6
  89. package/ios/RNTrackPlayer/Models/MetadataAdapter.swift +147 -0
  90. package/ios/RNTrackPlayer/Models/PitchAlgorithms.swift +13 -0
  91. package/ios/RNTrackPlayer/Models/SessionCategories.swift +106 -0
  92. package/ios/RNTrackPlayer/Models/State.swift +26 -0
  93. package/ios/RNTrackPlayer/Models/Track.swift +74 -54
  94. package/ios/RNTrackPlayer/RNTrackPlayer.swift +867 -406
  95. package/ios/RNTrackPlayer/Support/RNTrackPlayer-Bridging-Header.h +1 -0
  96. package/ios/RNTrackPlayer/TrackPlayer.h +14 -0
  97. package/ios/RNTrackPlayer/TrackPlayer.mm +249 -0
  98. package/ios/RNTrackPlayer/Utils/EventType.swift +45 -0
  99. package/ios/RNTrackPlayer/Utils/Metadata.swift +60 -0
  100. package/ios/RNTrackPlayer/Video/RNTrackPlayerVideoView.swift +83 -0
  101. package/ios/RNTrackPlayer/Video/RNTrackPlayerVideoViewManager.m +5 -0
  102. package/ios/RNTrackPlayer/Video/RNTrackPlayerVideoViewManager.swift +17 -0
  103. package/ios/SwiftAudioEx/Package.swift +20 -0
  104. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AVPlayerWrapper/AVPlayerWrapper.swift +531 -0
  105. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AVPlayerWrapper/AVPlayerWrapperDelegate.swift +27 -0
  106. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AVPlayerWrapper/AVPlayerWrapperProtocol.swift +69 -0
  107. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AVPlayerWrapper/AVPlayerWrapperState.swift +43 -0
  108. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AudioItem.swift +158 -0
  109. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AudioPlayer.swift +459 -0
  110. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AudioPlayerError.swift +26 -0
  111. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AudioSessionController/AudioSession.swift +33 -0
  112. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AudioSessionController/AudioSessionController.swift +135 -0
  113. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AudioTap.swift +96 -0
  114. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/Event.swift +155 -0
  115. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/NowPlayingInfoController/MediaItemProperty.swift +95 -0
  116. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/NowPlayingInfoController/NowPlayingInfoCenter.swift +17 -0
  117. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/NowPlayingInfoController/NowPlayingInfoController.swift +73 -0
  118. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/NowPlayingInfoController/NowPlayingInfoControllerProtocol.swift +26 -0
  119. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/NowPlayingInfoController/NowPlayingInfoKeyValue.swift +14 -0
  120. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/NowPlayingInfoController/NowPlayingInfoProperty.swift +234 -0
  121. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/Observer/AVPlayerItemNotificationObserver.swift +102 -0
  122. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/Observer/AVPlayerItemObserver.swift +136 -0
  123. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/Observer/AVPlayerObserver.swift +120 -0
  124. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/Observer/AVPlayerTimeObserver.swift +112 -0
  125. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/QueueManager.swift +356 -0
  126. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/QueuedAudioPlayer.swift +236 -0
  127. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/RemoteCommandController/RemoteCommand.swift +170 -0
  128. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/RemoteCommandController/RemoteCommandController.swift +206 -0
  129. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/RepeatMode.swift +15 -0
  130. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/TimeEventFrequency.swift +26 -0
  131. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/Utils/DispatchQueueType.swift +18 -0
  132. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/WaveformAudioTap.swift +159 -0
  133. package/lib/specs/NativeTrackPlayer.d.ts +134 -0
  134. package/lib/specs/NativeTrackPlayer.js +4 -0
  135. package/lib/src/TrackPlayerModule.web.d.ts +2 -0
  136. package/lib/src/TrackPlayerModule.web.js +2 -0
  137. package/lib/src/VideoView.d.ts +16 -0
  138. package/lib/src/VideoView.js +25 -0
  139. package/lib/src/constants/AndroidAudioContentType.d.ts +35 -0
  140. package/lib/src/constants/AndroidAudioContentType.js +36 -0
  141. package/lib/src/constants/AndroidAutoContentStyle.d.ts +10 -0
  142. package/lib/src/constants/AndroidAutoContentStyle.js +11 -0
  143. package/lib/src/constants/AppKilledPlaybackBehavior.d.ts +17 -0
  144. package/lib/src/constants/AppKilledPlaybackBehavior.js +18 -0
  145. package/lib/src/constants/Capability.d.ts +17 -0
  146. package/lib/src/constants/Capability.js +19 -0
  147. package/lib/src/constants/Event.d.ts +172 -0
  148. package/lib/src/constants/Event.js +173 -0
  149. package/lib/src/constants/IOSCategory.d.ts +36 -0
  150. package/lib/src/constants/IOSCategory.js +37 -0
  151. package/lib/src/constants/IOSCategoryMode.d.ts +47 -0
  152. package/lib/src/constants/IOSCategoryMode.js +48 -0
  153. package/lib/src/constants/IOSCategoryOptions.d.ts +44 -0
  154. package/lib/src/constants/IOSCategoryOptions.js +45 -0
  155. package/lib/src/constants/MediaItemPlayable.d.ts +4 -0
  156. package/lib/src/constants/MediaItemPlayable.js +5 -0
  157. package/lib/src/constants/PitchAlgorithm.d.ts +14 -0
  158. package/lib/src/constants/PitchAlgorithm.js +16 -0
  159. package/lib/src/constants/RatingType.d.ts +8 -0
  160. package/lib/src/constants/RatingType.js +10 -0
  161. package/lib/src/constants/RepeatMode.d.ts +8 -0
  162. package/lib/src/constants/RepeatMode.js +10 -0
  163. package/lib/src/constants/State.d.ts +34 -0
  164. package/lib/src/constants/State.js +35 -0
  165. package/lib/src/constants/TrackType.d.ts +6 -0
  166. package/lib/src/constants/TrackType.js +7 -0
  167. package/lib/src/constants/index.d.ts +14 -0
  168. package/lib/src/constants/index.js +14 -0
  169. package/lib/src/hooks/index.d.ts +6 -0
  170. package/lib/src/hooks/index.js +6 -0
  171. package/lib/src/hooks/useActiveTrack.d.ts +2 -0
  172. package/lib/src/hooks/useActiveTrack.js +28 -0
  173. package/lib/src/hooks/useAppIsInBackground.d.ts +1 -0
  174. package/lib/src/hooks/useAppIsInBackground.js +16 -0
  175. package/lib/src/hooks/useIsPlaying.d.ts +35 -0
  176. package/lib/src/hooks/useIsPlaying.js +50 -0
  177. package/lib/src/hooks/usePlayWhenReady.d.ts +1 -0
  178. package/lib/src/hooks/usePlayWhenReady.js +27 -0
  179. package/lib/src/hooks/usePlaybackState.d.ts +10 -0
  180. package/lib/src/hooks/usePlaybackState.js +35 -0
  181. package/lib/src/hooks/useProgress.d.ts +7 -0
  182. package/lib/src/hooks/useProgress.js +55 -0
  183. package/lib/src/hooks/useTrackPlayerEvents.d.ts +8 -0
  184. package/lib/src/hooks/useTrackPlayerEvents.js +30 -0
  185. package/lib/src/index.d.ts +6 -0
  186. package/lib/src/index.js +6 -0
  187. package/lib/src/interfaces/AndroidAutoBrowseTree.d.ts +5 -0
  188. package/lib/src/interfaces/AndroidAutoBrowseTree.js +1 -0
  189. package/lib/src/interfaces/AndroidOptions.d.ts +41 -0
  190. package/lib/src/interfaces/AndroidOptions.js +1 -0
  191. package/lib/src/interfaces/CustomButtons.d.ts +5 -0
  192. package/lib/src/interfaces/CustomButtons.js +1 -0
  193. package/lib/src/interfaces/FeedbackOptions.d.ts +6 -0
  194. package/lib/src/interfaces/FeedbackOptions.js +1 -0
  195. package/lib/src/interfaces/MediaItem.d.ts +18 -0
  196. package/lib/src/interfaces/MediaItem.js +1 -0
  197. package/lib/src/interfaces/MetadataOptions.d.ts +3 -0
  198. package/lib/src/interfaces/MetadataOptions.js +1 -0
  199. package/lib/src/interfaces/NowPlayingMetadata.d.ts +4 -0
  200. package/lib/src/interfaces/NowPlayingMetadata.js +1 -0
  201. package/lib/src/interfaces/PlaybackState.d.ts +8 -0
  202. package/lib/src/interfaces/PlaybackState.js +1 -0
  203. package/lib/src/interfaces/PlayerOptions.d.ts +132 -0
  204. package/lib/src/interfaces/PlayerOptions.js +1 -0
  205. package/lib/src/interfaces/Progress.d.ts +15 -0
  206. package/lib/src/interfaces/Progress.js +1 -0
  207. package/lib/src/interfaces/ResourceObject.d.ts +1 -0
  208. package/lib/src/interfaces/ResourceObject.js +1 -0
  209. package/lib/src/interfaces/ServiceHandler.d.ts +1 -0
  210. package/lib/src/interfaces/ServiceHandler.js +1 -0
  211. package/lib/src/interfaces/Track.d.ts +21 -0
  212. package/lib/src/interfaces/Track.js +1 -0
  213. package/lib/src/interfaces/TrackMetadataBase.d.ts +28 -0
  214. package/lib/src/interfaces/TrackMetadataBase.js +1 -0
  215. package/lib/src/interfaces/UpdateOptions.d.ts +52 -0
  216. package/lib/src/interfaces/UpdateOptions.js +1 -0
  217. package/lib/src/interfaces/events/AudioMetadataReceivedEvent.d.ts +33 -0
  218. package/lib/src/interfaces/events/AudioMetadataReceivedEvent.js +1 -0
  219. package/lib/src/interfaces/events/ControllerConnectedEvent.d.ts +8 -0
  220. package/lib/src/interfaces/events/ControllerConnectedEvent.js +1 -0
  221. package/lib/src/interfaces/events/EventPayloadByEvent.d.ts +77 -0
  222. package/lib/src/interfaces/events/EventPayloadByEvent.js +1 -0
  223. package/lib/src/interfaces/events/FFTUpdateEvent.d.ts +7 -0
  224. package/lib/src/interfaces/events/FFTUpdateEvent.js +1 -0
  225. package/lib/src/interfaces/events/PlaybackActiveTrackChangedEvent.d.ts +24 -0
  226. package/lib/src/interfaces/events/PlaybackActiveTrackChangedEvent.js +1 -0
  227. package/lib/src/interfaces/events/PlaybackAnimatedVolumeChangedEvent.d.ts +4 -0
  228. package/lib/src/interfaces/events/PlaybackAnimatedVolumeChangedEvent.js +1 -0
  229. package/lib/src/interfaces/events/PlaybackErrorEvent.d.ts +6 -0
  230. package/lib/src/interfaces/events/PlaybackErrorEvent.js +1 -0
  231. package/lib/src/interfaces/events/PlaybackMetadataReceivedEvent.d.ts +16 -0
  232. package/lib/src/interfaces/events/PlaybackMetadataReceivedEvent.js +1 -0
  233. package/lib/src/interfaces/events/PlaybackPlayWhenReadyChangedEvent.d.ts +4 -0
  234. package/lib/src/interfaces/events/PlaybackPlayWhenReadyChangedEvent.js +1 -0
  235. package/lib/src/interfaces/events/PlaybackProgressUpdatedEvent.d.ts +4 -0
  236. package/lib/src/interfaces/events/PlaybackProgressUpdatedEvent.js +1 -0
  237. package/lib/src/interfaces/events/PlaybackQueueEndedEvent.d.ts +9 -0
  238. package/lib/src/interfaces/events/PlaybackQueueEndedEvent.js +1 -0
  239. package/lib/src/interfaces/events/PlaybackResumeEvent.d.ts +3 -0
  240. package/lib/src/interfaces/events/PlaybackResumeEvent.js +1 -0
  241. package/lib/src/interfaces/events/PlaybackTrackChangedEvent.d.ts +11 -0
  242. package/lib/src/interfaces/events/PlaybackTrackChangedEvent.js +1 -0
  243. package/lib/src/interfaces/events/PlayerErrorEvent.d.ts +6 -0
  244. package/lib/src/interfaces/events/PlayerErrorEvent.js +1 -0
  245. package/lib/src/interfaces/events/RemoteBrowseEvent.d.ts +4 -0
  246. package/lib/src/interfaces/events/RemoteBrowseEvent.js +1 -0
  247. package/lib/src/interfaces/events/RemoteCustomActionEvent.d.ts +7 -0
  248. package/lib/src/interfaces/events/RemoteCustomActionEvent.js +1 -0
  249. package/lib/src/interfaces/events/RemoteDuckEvent.d.ts +13 -0
  250. package/lib/src/interfaces/events/RemoteDuckEvent.js +1 -0
  251. package/lib/src/interfaces/events/RemoteJumpBackwardEvent.d.ts +7 -0
  252. package/lib/src/interfaces/events/RemoteJumpBackwardEvent.js +1 -0
  253. package/lib/src/interfaces/events/RemoteJumpForwardEvent.d.ts +7 -0
  254. package/lib/src/interfaces/events/RemoteJumpForwardEvent.js +1 -0
  255. package/lib/src/interfaces/events/RemotePlayIdEvent.d.ts +4 -0
  256. package/lib/src/interfaces/events/RemotePlayIdEvent.js +1 -0
  257. package/lib/src/interfaces/events/RemotePlaySearchEvent.d.ts +9 -0
  258. package/lib/src/interfaces/events/RemotePlaySearchEvent.js +1 -0
  259. package/lib/src/interfaces/events/RemoteSearchEvent.d.ts +3 -0
  260. package/lib/src/interfaces/events/RemoteSearchEvent.js +1 -0
  261. package/lib/src/interfaces/events/RemoteSeekEvent.d.ts +4 -0
  262. package/lib/src/interfaces/events/RemoteSeekEvent.js +1 -0
  263. package/lib/src/interfaces/events/RemoteSetRatingEvent.d.ts +4 -0
  264. package/lib/src/interfaces/events/RemoteSetRatingEvent.js +1 -0
  265. package/lib/src/interfaces/events/RemoteSkipEvent.d.ts +3 -0
  266. package/lib/src/interfaces/events/RemoteSkipEvent.js +1 -0
  267. package/lib/src/interfaces/events/index.d.ts +20 -0
  268. package/lib/src/interfaces/events/index.js +20 -0
  269. package/lib/src/interfaces/index.d.ts +15 -0
  270. package/lib/src/interfaces/index.js +15 -0
  271. package/lib/src/resolveAssetSource.d.ts +2 -0
  272. package/lib/src/resolveAssetSource.js +3 -0
  273. package/lib/src/resolveAssetSource.web.d.ts +2 -0
  274. package/lib/src/resolveAssetSource.web.js +8 -0
  275. package/lib/src/trackPlayer.d.ts +371 -0
  276. package/lib/src/trackPlayer.js +627 -0
  277. package/lib/web/TrackPlayer/Player.d.ts +40 -0
  278. package/lib/web/TrackPlayer/Player.js +188 -0
  279. package/lib/web/TrackPlayer/PlaylistPlayer.d.ts +31 -0
  280. package/lib/web/TrackPlayer/PlaylistPlayer.js +181 -0
  281. package/lib/web/TrackPlayer/RepeatMode.d.ts +5 -0
  282. package/lib/web/TrackPlayer/RepeatMode.js +6 -0
  283. package/lib/web/TrackPlayer/SetupNotCalledError.d.ts +3 -0
  284. package/lib/web/TrackPlayer/SetupNotCalledError.js +5 -0
  285. package/lib/web/TrackPlayer/index.d.ts +3 -0
  286. package/lib/web/TrackPlayer/index.js +3 -0
  287. package/lib/web/TrackPlayerModule.d.ts +63 -0
  288. package/lib/web/TrackPlayerModule.js +153 -0
  289. package/lib/web/index.d.ts +3 -0
  290. package/lib/web/index.js +3 -0
  291. package/package.json +85 -6
  292. package/react-native-track-player.podspec +13 -13
  293. package/specs/NativeTrackPlayer.ts +153 -0
  294. package/src/TrackPlayerModule.web.ts +2 -0
  295. package/src/VideoView.tsx +51 -0
  296. package/src/constants/AndroidAudioContentType.ts +35 -0
  297. package/src/constants/AndroidAutoContentStyle.ts +10 -0
  298. package/src/constants/AppKilledPlaybackBehavior.ts +19 -0
  299. package/src/constants/Capability.ts +19 -0
  300. package/src/constants/Event.ts +173 -0
  301. package/src/constants/IOSCategory.ts +36 -0
  302. package/src/constants/IOSCategoryMode.ts +47 -0
  303. package/src/constants/IOSCategoryOptions.ts +44 -0
  304. package/src/constants/MediaItemPlayable.ts +4 -0
  305. package/src/constants/PitchAlgorithm.ts +16 -0
  306. package/src/constants/RatingType.ts +10 -0
  307. package/src/constants/RepeatMode.ts +10 -0
  308. package/src/constants/State.ts +34 -0
  309. package/src/constants/TrackType.ts +6 -0
  310. package/src/constants/index.ts +14 -0
  311. package/src/hooks/index.ts +6 -0
  312. package/src/hooks/useActiveTrack.ts +36 -0
  313. package/src/hooks/useAppIsInBackground.ts +20 -0
  314. package/src/hooks/useIsPlaying.ts +56 -0
  315. package/src/hooks/usePlayWhenReady.ts +37 -0
  316. package/src/hooks/usePlaybackState.ts +45 -0
  317. package/src/hooks/useProgress.ts +64 -0
  318. package/src/hooks/useTrackPlayerEvents.ts +48 -0
  319. package/src/index.ts +8 -0
  320. package/src/interfaces/AndroidAutoBrowseTree.ts +6 -0
  321. package/src/interfaces/AndroidOptions.ts +48 -0
  322. package/src/interfaces/CustomButtons.ts +6 -0
  323. package/src/interfaces/FeedbackOptions.ts +7 -0
  324. package/src/interfaces/MediaItem.ts +19 -0
  325. package/src/interfaces/MetadataOptions.ts +4 -0
  326. package/src/interfaces/NowPlayingMetadata.ts +5 -0
  327. package/src/interfaces/PlaybackState.ts +11 -0
  328. package/src/interfaces/PlayerOptions.ts +138 -0
  329. package/src/interfaces/Progress.ts +15 -0
  330. package/src/interfaces/ResourceObject.ts +1 -0
  331. package/src/interfaces/ServiceHandler.ts +1 -0
  332. package/src/interfaces/Track.ts +23 -0
  333. package/src/interfaces/TrackMetadataBase.ts +29 -0
  334. package/src/interfaces/UpdateOptions.ts +59 -0
  335. package/src/interfaces/events/AudioMetadataReceivedEvent.ts +37 -0
  336. package/src/interfaces/events/ControllerConnectedEvent.ts +9 -0
  337. package/src/interfaces/events/EventPayloadByEvent.ts +80 -0
  338. package/src/interfaces/events/FFTUpdateEvent.ts +9 -0
  339. package/src/interfaces/events/PlaybackActiveTrackChangedEvent.ts +29 -0
  340. package/src/interfaces/events/PlaybackAnimatedVolumeChangedEvent.ts +4 -0
  341. package/src/interfaces/events/PlaybackErrorEvent.ts +6 -0
  342. package/src/interfaces/events/PlaybackMetadataReceivedEvent.ts +16 -0
  343. package/src/interfaces/events/PlaybackPlayWhenReadyChangedEvent.ts +4 -0
  344. package/src/interfaces/events/PlaybackProgressUpdatedEvent.ts +5 -0
  345. package/src/interfaces/events/PlaybackQueueEndedEvent.ts +9 -0
  346. package/src/interfaces/events/PlaybackResumeEvent.ts +5 -0
  347. package/src/interfaces/events/PlaybackTrackChangedEvent.ts +11 -0
  348. package/src/interfaces/events/PlayerErrorEvent.ts +6 -0
  349. package/src/interfaces/events/RemoteBrowseEvent.ts +4 -0
  350. package/src/interfaces/events/RemoteCustomActionEvent.ts +7 -0
  351. package/src/interfaces/events/RemoteDuckEvent.ts +13 -0
  352. package/src/interfaces/events/RemoteJumpBackwardEvent.ts +7 -0
  353. package/src/interfaces/events/RemoteJumpForwardEvent.ts +7 -0
  354. package/src/interfaces/events/RemotePlayIdEvent.ts +4 -0
  355. package/src/interfaces/events/RemotePlaySearchEvent.ts +21 -0
  356. package/src/interfaces/events/RemoteSearchEvent.ts +3 -0
  357. package/src/interfaces/events/RemoteSeekEvent.ts +4 -0
  358. package/src/interfaces/events/RemoteSetRatingEvent.ts +5 -0
  359. package/src/interfaces/events/RemoteSkipEvent.ts +3 -0
  360. package/src/interfaces/events/index.ts +20 -0
  361. package/src/interfaces/index.ts +15 -0
  362. package/src/resolveAssetSource.ts +3 -0
  363. package/src/resolveAssetSource.web.ts +10 -0
  364. package/src/trackPlayer.ts +806 -0
  365. package/web/TrackPlayer/Player.ts +201 -0
  366. package/web/TrackPlayer/PlaylistPlayer.ts +215 -0
  367. package/web/TrackPlayer/RepeatMode.ts +6 -0
  368. package/web/TrackPlayer/SetupNotCalledError.ts +5 -0
  369. package/web/TrackPlayer/index.ts +3 -0
  370. package/web/TrackPlayerModule.ts +181 -0
  371. package/web/index.ts +4 -0
  372. package/CHANGELOG.md +0 -75
  373. package/android/react-native-music-control.iml +0 -139
  374. package/android/react-native-track-player.iml +0 -151
  375. package/android/src/main/ic_home-playstore.png +0 -0
  376. package/android/src/main/ic_repeat-playstore.png +0 -0
  377. package/android/src/main/ic_repeat_50-playstore.png +0 -0
  378. package/android/src/main/ic_shuffle-playstore.png +0 -0
  379. package/android/src/main/ic_shuffle_50-playstore.png +0 -0
  380. package/android/src/main/ic_shuffle_sm-playstore.png +0 -0
  381. package/android/src/main/ic_stop-playstore.png +0 -0
  382. package/android/src/main/ic_test-playstore.png +0 -0
  383. package/android/src/main/java/com/guichaguri/trackplayer/HeadlessJsMediaService.java +0 -225
  384. package/android/src/main/java/com/guichaguri/trackplayer/TrackPlayer.kt +0 -25
  385. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/event/NotificationEventHolder.kt +0 -20
  386. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/models/AAMediaSessionCallback.kt +0 -10
  387. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/models/AudioItem.kt +0 -66
  388. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/models/NotificationConfig.kt +0 -43
  389. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/models/NotificationMetadata.kt +0 -8
  390. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/models/NotificationState.kt +0 -8
  391. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/models/PlayerOptions.kt +0 -9
  392. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/models/QueuedPlayerOptions.kt +0 -49
  393. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/notification/NotificationManager.kt +0 -678
  394. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/players/AudioPlayer.kt +0 -10
  395. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/players/BaseAudioPlayer.kt +0 -864
  396. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/players/components/MediaSourceExt.kt +0 -35
  397. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/players/components/PlayerCache.kt +0 -26
  398. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/utils/Utils.kt +0 -12
  399. package/android/src/main/java/com/guichaguri/trackplayer/model/Track.kt +0 -120
  400. package/android/src/main/java/com/guichaguri/trackplayer/model/TrackAudioItem.kt +0 -19
  401. package/android/src/main/java/com/guichaguri/trackplayer/model/TrackType.kt +0 -11
  402. package/android/src/main/java/com/guichaguri/trackplayer/module/AutoConnectionDetector.kt +0 -151
  403. package/android/src/main/java/com/guichaguri/trackplayer/module/MusicModule.kt +0 -1177
  404. package/android/src/main/java/com/guichaguri/trackplayer/service/MusicBinder.kt +0 -31
  405. package/android/src/main/java/com/guichaguri/trackplayer/service/MusicManager.kt +0 -347
  406. package/android/src/main/java/com/guichaguri/trackplayer/service/MusicService.kt +0 -1254
  407. package/android/src/main/java/com/guichaguri/trackplayer/service/Utils.kt +0 -228
  408. package/android/src/main/java/com/guichaguri/trackplayer/service/metadata/ButtonEvents.kt +0 -141
  409. package/android/src/main/java/com/guichaguri/trackplayer/service/metadata/MetadataManager.kt +0 -396
  410. package/android/src/main/res/drawable-hdpi/ic_forward.png +0 -0
  411. package/android/src/main/res/drawable-hdpi/ic_home.png +0 -0
  412. package/android/src/main/res/drawable-hdpi/ic_next.png +0 -0
  413. package/android/src/main/res/drawable-hdpi/ic_pause.png +0 -0
  414. package/android/src/main/res/drawable-hdpi/ic_play.png +0 -0
  415. package/android/src/main/res/drawable-hdpi/ic_previous.png +0 -0
  416. package/android/src/main/res/drawable-hdpi/ic_rewind.png +0 -0
  417. package/android/src/main/res/drawable-hdpi/ic_stop.png +0 -0
  418. package/android/src/main/res/drawable-mdpi/ic_forward.png +0 -0
  419. package/android/src/main/res/drawable-mdpi/ic_home.png +0 -0
  420. package/android/src/main/res/drawable-mdpi/ic_next.png +0 -0
  421. package/android/src/main/res/drawable-mdpi/ic_pause.png +0 -0
  422. package/android/src/main/res/drawable-mdpi/ic_play.png +0 -0
  423. package/android/src/main/res/drawable-mdpi/ic_previous.png +0 -0
  424. package/android/src/main/res/drawable-mdpi/ic_rewind.png +0 -0
  425. package/android/src/main/res/drawable-mdpi/ic_stop.png +0 -0
  426. package/android/src/main/res/drawable-xhdpi/ic_forward.png +0 -0
  427. package/android/src/main/res/drawable-xhdpi/ic_home.png +0 -0
  428. package/android/src/main/res/drawable-xhdpi/ic_next.png +0 -0
  429. package/android/src/main/res/drawable-xhdpi/ic_pause.png +0 -0
  430. package/android/src/main/res/drawable-xhdpi/ic_play.png +0 -0
  431. package/android/src/main/res/drawable-xhdpi/ic_previous.png +0 -0
  432. package/android/src/main/res/drawable-xhdpi/ic_rewind.png +0 -0
  433. package/android/src/main/res/drawable-xhdpi/ic_stop.png +0 -0
  434. package/android/src/main/res/drawable-xxhdpi/ic_forward.png +0 -0
  435. package/android/src/main/res/drawable-xxhdpi/ic_home.png +0 -0
  436. package/android/src/main/res/drawable-xxhdpi/ic_next.png +0 -0
  437. package/android/src/main/res/drawable-xxhdpi/ic_pause.png +0 -0
  438. package/android/src/main/res/drawable-xxhdpi/ic_play.png +0 -0
  439. package/android/src/main/res/drawable-xxhdpi/ic_previous.png +0 -0
  440. package/android/src/main/res/drawable-xxhdpi/ic_rewind.png +0 -0
  441. package/android/src/main/res/drawable-xxhdpi/ic_stop.png +0 -0
  442. package/android/src/main/res/drawable-xxxhdpi/ic_forward.png +0 -0
  443. package/android/src/main/res/drawable-xxxhdpi/ic_home.png +0 -0
  444. package/android/src/main/res/drawable-xxxhdpi/ic_next.png +0 -0
  445. package/android/src/main/res/drawable-xxxhdpi/ic_pause.png +0 -0
  446. package/android/src/main/res/drawable-xxxhdpi/ic_play.png +0 -0
  447. package/android/src/main/res/drawable-xxxhdpi/ic_previous.png +0 -0
  448. package/android/src/main/res/drawable-xxxhdpi/ic_rewind.png +0 -0
  449. package/android/src/main/res/drawable-xxxhdpi/ic_stop.png +0 -0
  450. package/android/src/main/res/mipmap-hdpi/ic_arrow_down_circle_foreground.png +0 -0
  451. package/android/src/main/res/mipmap-hdpi/ic_clock_now_foreground.png +0 -0
  452. package/android/src/main/res/mipmap-hdpi/ic_close_foreground.png +0 -0
  453. package/android/src/main/res/mipmap-hdpi/ic_heart_foreground.png +0 -0
  454. package/android/src/main/res/mipmap-hdpi/ic_heart_outlined_foreground.png +0 -0
  455. package/android/src/main/res/mipmap-hdpi/ic_repeat_off_foreground.png +0 -0
  456. package/android/src/main/res/mipmap-hdpi/ic_repeat_on_foreground.png +0 -0
  457. package/android/src/main/res/mipmap-hdpi/ic_shuffle_off_foreground.png +0 -0
  458. package/android/src/main/res/mipmap-hdpi/ic_shuffle_on_foreground.png +0 -0
  459. package/android/src/main/res/mipmap-mdpi/ic_arrow_down_circle_foreground.png +0 -0
  460. package/android/src/main/res/mipmap-mdpi/ic_clock_now_foreground.png +0 -0
  461. package/android/src/main/res/mipmap-mdpi/ic_close_foreground.png +0 -0
  462. package/android/src/main/res/mipmap-mdpi/ic_heart_foreground.png +0 -0
  463. package/android/src/main/res/mipmap-mdpi/ic_heart_outlined_foreground.png +0 -0
  464. package/android/src/main/res/mipmap-mdpi/ic_repeat_off_foreground.png +0 -0
  465. package/android/src/main/res/mipmap-mdpi/ic_repeat_on_foreground.png +0 -0
  466. package/android/src/main/res/mipmap-mdpi/ic_shuffle_off_foreground.png +0 -0
  467. package/android/src/main/res/mipmap-mdpi/ic_shuffle_on_foreground.png +0 -0
  468. package/android/src/main/res/mipmap-xhdpi/ic_arrow_down_circle_foreground.png +0 -0
  469. package/android/src/main/res/mipmap-xhdpi/ic_clock_now_foreground.png +0 -0
  470. package/android/src/main/res/mipmap-xhdpi/ic_close_foreground.png +0 -0
  471. package/android/src/main/res/mipmap-xhdpi/ic_heart_foreground.png +0 -0
  472. package/android/src/main/res/mipmap-xhdpi/ic_heart_outlined_foreground.png +0 -0
  473. package/android/src/main/res/mipmap-xhdpi/ic_repeat_off_foreground.png +0 -0
  474. package/android/src/main/res/mipmap-xhdpi/ic_repeat_on_foreground.png +0 -0
  475. package/android/src/main/res/mipmap-xhdpi/ic_shuffle_off_foreground.png +0 -0
  476. package/android/src/main/res/mipmap-xhdpi/ic_shuffle_on_foreground.png +0 -0
  477. package/android/src/main/res/mipmap-xxhdpi/ic_arrow_down_circle_foreground.png +0 -0
  478. package/android/src/main/res/mipmap-xxhdpi/ic_clock_now_foreground.png +0 -0
  479. package/android/src/main/res/mipmap-xxhdpi/ic_close_foreground.png +0 -0
  480. package/android/src/main/res/mipmap-xxhdpi/ic_heart_foreground.png +0 -0
  481. package/android/src/main/res/mipmap-xxhdpi/ic_heart_outlined_foreground.png +0 -0
  482. package/android/src/main/res/mipmap-xxhdpi/ic_repeat_off_foreground.png +0 -0
  483. package/android/src/main/res/mipmap-xxhdpi/ic_repeat_on_foreground.png +0 -0
  484. package/android/src/main/res/mipmap-xxhdpi/ic_shuffle_off_foreground.png +0 -0
  485. package/android/src/main/res/mipmap-xxhdpi/ic_shuffle_on_foreground.png +0 -0
  486. package/android/src/main/res/mipmap-xxxhdpi/ic_arrow_down_circle_foreground.png +0 -0
  487. package/android/src/main/res/mipmap-xxxhdpi/ic_clock_now_foreground.png +0 -0
  488. package/android/src/main/res/mipmap-xxxhdpi/ic_close_foreground.png +0 -0
  489. package/android/src/main/res/mipmap-xxxhdpi/ic_heart_foreground.png +0 -0
  490. package/android/src/main/res/mipmap-xxxhdpi/ic_heart_outlined_foreground.png +0 -0
  491. package/android/src/main/res/mipmap-xxxhdpi/ic_repeat_off_foreground.png +0 -0
  492. package/android/src/main/res/mipmap-xxxhdpi/ic_repeat_on_foreground.png +0 -0
  493. package/android/src/main/res/mipmap-xxxhdpi/ic_shuffle_off_foreground.png +0 -0
  494. package/android/src/main/res/mipmap-xxxhdpi/ic_shuffle_on_foreground.png +0 -0
  495. package/android/src/main/res/raw/silent_5_seconds.mp3 +0 -0
  496. package/android/src/main/res/strings.xml +0 -6
  497. package/index.d.ts +0 -235
  498. package/index.js +0 -4
  499. package/ios/RNTrackPlayer/RNTrackPlayerBridge.h +0 -12
  500. package/ios/RNTrackPlayer/RNTrackPlayerBridge.m +0 -29
  501. package/ios/TrackPlayer.xcodeproj/project.pbxproj +0 -495
  502. package/ios/TrackPlayer.xcodeproj/project.xcworkspace/xcuserdata/marco.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  503. package/lib/ProgressComponent.js +0 -70
  504. package/lib/eventTypes.js +0 -28
  505. package/lib/hooks.js +0 -160
  506. package/lib/index.js +0 -178
  507. /package/ios/{TrackPlayer.xcodeproj → Example/SwiftAudio.xcodeproj}/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
@@ -0,0 +1,188 @@
1
+ import { State } from '../../src/constants/State';
2
+ import { SetupNotCalledError } from './SetupNotCalledError';
3
+ export class Player {
4
+ hasInitialized = false;
5
+ element;
6
+ player;
7
+ _current = undefined;
8
+ _playWhenReady = false;
9
+ _state = { state: State.None };
10
+ // current getter/setter
11
+ get current() {
12
+ return this._current;
13
+ }
14
+ set current(cur) {
15
+ this._current = cur;
16
+ }
17
+ // state getter/setter
18
+ get state() {
19
+ return this._state;
20
+ }
21
+ set state(newState) {
22
+ this._state = newState;
23
+ }
24
+ // playWhenReady getter/setter
25
+ get playWhenReady() {
26
+ return this._playWhenReady;
27
+ }
28
+ set playWhenReady(pwr) {
29
+ this._playWhenReady = pwr;
30
+ }
31
+ async setupPlayer() {
32
+ // shaka only runs in a browser
33
+ if (typeof window === 'undefined')
34
+ return;
35
+ if (this.hasInitialized === true) {
36
+ // TODO: double check the structure of this error message
37
+ throw { code: 'player_already_initialized', message: 'The player has already been initialized via setupPlayer.' };
38
+ }
39
+ // @ts-ignore
40
+ const shaka = (await import('shaka-player/dist/shaka-player.ui')).default;
41
+ // Install built-in polyfills to patch browser incompatibilities.
42
+ shaka.polyfill.installAll();
43
+ // Check to see if the browser supports the basic APIs Shaka needs.
44
+ if (!shaka.Player.isBrowserSupported()) {
45
+ // This browser does not have the minimum set of APIs we need.
46
+ this.state = {
47
+ state: State.Error,
48
+ error: {
49
+ code: 'not_supported',
50
+ message: 'Browser not supported.',
51
+ },
52
+ };
53
+ throw new Error('Browser not supported.');
54
+ }
55
+ // build dom element and attach shaka-player
56
+ this.element = document.createElement('audio');
57
+ this.element.setAttribute('id', 'react-native-track-player');
58
+ this.player = new shaka.Player();
59
+ this.player?.attach(this.element);
60
+ // Listen for relevant events events.
61
+ this.player.addEventListener('error', (error) => {
62
+ // Extract the shaka.util.Error object from the event.
63
+ this.onError(error.detail);
64
+ });
65
+ this.element.addEventListener('ended', this.onStateUpdate.bind(this, State.Ended));
66
+ this.element.addEventListener('playing', this.onStateUpdate.bind(this, State.Playing));
67
+ this.element.addEventListener('pause', this.onStateUpdate.bind(this, State.Paused));
68
+ this.player.addEventListener('loading', this.onStateUpdate.bind(this, State.Loading));
69
+ this.player.addEventListener('loaded', this.onStateUpdate.bind(this, State.Ready));
70
+ this.player.addEventListener('buffering', ({ buffering }) => {
71
+ if (buffering === true) {
72
+ this.onStateUpdate(State.Buffering);
73
+ }
74
+ });
75
+ // Attach player to the window to make it easy to access in the JS console.
76
+ // @ts-ignore
77
+ window.rntp = this.player;
78
+ this.hasInitialized = true;
79
+ }
80
+ /**
81
+ * event handlers
82
+ */
83
+ onStateUpdate(state) {
84
+ this.state = { state };
85
+ }
86
+ onError(error) {
87
+ // unload the current track to allow for clean playback on other
88
+ this.player?.unload();
89
+ this.state = {
90
+ state: State.Error,
91
+ error: {
92
+ code: error.code.toString(),
93
+ message: error.message,
94
+ },
95
+ };
96
+ // Log the error.
97
+ console.debug('Error code', error.code, 'object', error);
98
+ }
99
+ /**
100
+ * player control
101
+ */
102
+ async load(track) {
103
+ if (!this.player)
104
+ throw new SetupNotCalledError();
105
+ await this.player.load(track.url);
106
+ this.current = track;
107
+ }
108
+ async retry() {
109
+ if (!this.player)
110
+ throw new SetupNotCalledError();
111
+ this.player.retryStreaming();
112
+ }
113
+ async stop() {
114
+ if (!this.player)
115
+ throw new SetupNotCalledError();
116
+ this.current = undefined;
117
+ await this.player.unload();
118
+ }
119
+ play() {
120
+ if (!this.element)
121
+ throw new SetupNotCalledError();
122
+ this.playWhenReady = true;
123
+ return this.element.play()
124
+ .catch(err => {
125
+ console.error(err);
126
+ });
127
+ }
128
+ pause() {
129
+ if (!this.element)
130
+ throw new SetupNotCalledError();
131
+ this.playWhenReady = false;
132
+ return this.element.pause();
133
+ }
134
+ setRate(rate) {
135
+ if (!this.element)
136
+ throw new SetupNotCalledError();
137
+ return this.element.playbackRate = rate;
138
+ }
139
+ getRate() {
140
+ if (!this.element)
141
+ throw new SetupNotCalledError();
142
+ return this.element.playbackRate;
143
+ }
144
+ seekBy(offset) {
145
+ if (!this.element)
146
+ throw new SetupNotCalledError();
147
+ this.element.currentTime += offset;
148
+ }
149
+ seekTo(seconds) {
150
+ if (!this.element)
151
+ throw new SetupNotCalledError();
152
+ this.element.currentTime = seconds;
153
+ }
154
+ setVolume(volume) {
155
+ if (!this.element)
156
+ throw new SetupNotCalledError();
157
+ this.element.volume = volume;
158
+ }
159
+ getVolume() {
160
+ if (!this.element)
161
+ throw new SetupNotCalledError();
162
+ return this.element.volume;
163
+ }
164
+ getDuration() {
165
+ if (!this.element)
166
+ throw new SetupNotCalledError();
167
+ return this.element.duration;
168
+ }
169
+ getPosition() {
170
+ if (!this.element)
171
+ throw new SetupNotCalledError();
172
+ return this.element.currentTime;
173
+ }
174
+ getProgress() {
175
+ if (!this.element)
176
+ throw new SetupNotCalledError();
177
+ return {
178
+ position: this.element.currentTime,
179
+ duration: this.element.duration || 0,
180
+ buffered: 0, // TODO: this.element.buffered.end,
181
+ };
182
+ }
183
+ getBufferedPosition() {
184
+ if (!this.element)
185
+ throw new SetupNotCalledError();
186
+ return this.element.buffered.end;
187
+ }
188
+ }
@@ -0,0 +1,31 @@
1
+ import { Player } from './Player';
2
+ import type { Track } from '../../src/interfaces';
3
+ import { RepeatMode } from './RepeatMode';
4
+ import { State } from '../../src';
5
+ export declare class PlaylistPlayer extends Player {
6
+ protected playlist: Track[];
7
+ protected lastIndex?: number;
8
+ protected _currentIndex?: number;
9
+ protected repeatMode: RepeatMode;
10
+ protected onStateUpdate(state: Exclude<State, State.Error>): Promise<void>;
11
+ protected onTrackEnded(): Promise<void>;
12
+ protected onPlaylistEnded(): void;
13
+ protected get currentIndex(): number | undefined;
14
+ protected set currentIndex(current: number | undefined);
15
+ protected goToIndex(index: number, initialPosition?: number): Promise<void>;
16
+ add(tracks: Track[], insertBeforeIndex?: number): Promise<void>;
17
+ skip(index: number, initialPosition?: number): Promise<void>;
18
+ skipToNext(initialPosition?: number): Promise<void>;
19
+ skipToPrevious(initialPosition?: number): Promise<void>;
20
+ getTrack(index: number): Track | null;
21
+ setRepeatMode(mode: RepeatMode): void;
22
+ getRepeatMode(): RepeatMode;
23
+ remove(indexes: number[]): Promise<void>;
24
+ stop(): Promise<void>;
25
+ reset(): Promise<void>;
26
+ removeUpcomingTracks(): Promise<void>;
27
+ move(fromIndex: number, toIndex: number): Promise<void>;
28
+ updateMetadataForTrack(index: number, metadata: Partial<Track>): void;
29
+ clearNowPlayingMetadata(): void;
30
+ updateNowPlayingMetadata(metadata: Partial<Track>): void;
31
+ }
@@ -0,0 +1,181 @@
1
+ import { Player } from './Player';
2
+ import { RepeatMode } from './RepeatMode';
3
+ import { State } from '../../src';
4
+ export class PlaylistPlayer extends Player {
5
+ // TODO: use immer to make the `playlist` immutable
6
+ playlist = [];
7
+ lastIndex;
8
+ _currentIndex;
9
+ repeatMode = RepeatMode.Off;
10
+ async onStateUpdate(state) {
11
+ super.onStateUpdate(state);
12
+ if (state === State.Ended) {
13
+ await this.onTrackEnded();
14
+ }
15
+ }
16
+ async onTrackEnded() {
17
+ switch (this.repeatMode) {
18
+ case RepeatMode.Track:
19
+ if (this.currentIndex !== undefined) {
20
+ await this.goToIndex(this.currentIndex);
21
+ }
22
+ break;
23
+ case RepeatMode.Playlist:
24
+ if (this.currentIndex === this.playlist.length - 1) {
25
+ await this.goToIndex(0);
26
+ }
27
+ else {
28
+ await this.skipToNext();
29
+ }
30
+ break;
31
+ default:
32
+ try {
33
+ await this.skipToNext();
34
+ }
35
+ catch (err) {
36
+ if (err.message !== 'playlist_exhausted') {
37
+ throw err;
38
+ }
39
+ this.onPlaylistEnded();
40
+ }
41
+ break;
42
+ }
43
+ }
44
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
45
+ onPlaylistEnded() { }
46
+ get currentIndex() {
47
+ return this._currentIndex;
48
+ }
49
+ set currentIndex(current) {
50
+ this.lastIndex = this.currentIndex;
51
+ this._currentIndex = current;
52
+ }
53
+ async goToIndex(index, initialPosition) {
54
+ const track = this.playlist[index];
55
+ if (!track) {
56
+ throw new Error('playlist_exhausted');
57
+ }
58
+ if (this.currentIndex !== index) {
59
+ this.currentIndex = index;
60
+ await this.load(track);
61
+ }
62
+ if (initialPosition) {
63
+ this.seekTo(initialPosition);
64
+ }
65
+ if (this.playWhenReady) {
66
+ await this.play();
67
+ }
68
+ }
69
+ async add(tracks, insertBeforeIndex) {
70
+ if (insertBeforeIndex !== -1 && insertBeforeIndex !== undefined) {
71
+ this.playlist.splice(insertBeforeIndex, 0, ...tracks);
72
+ }
73
+ else {
74
+ this.playlist.push(...tracks);
75
+ }
76
+ if (this.currentIndex === undefined) {
77
+ await this.goToIndex(0);
78
+ }
79
+ }
80
+ async skip(index, initialPosition) {
81
+ const track = this.playlist[index];
82
+ if (track === undefined) {
83
+ throw new Error('index out of bounds');
84
+ }
85
+ await this.goToIndex(index, initialPosition);
86
+ }
87
+ async skipToNext(initialPosition) {
88
+ if (this.currentIndex === undefined)
89
+ return;
90
+ const index = this.currentIndex + 1;
91
+ await this.goToIndex(index, initialPosition);
92
+ }
93
+ async skipToPrevious(initialPosition) {
94
+ if (this.currentIndex === undefined)
95
+ return;
96
+ const index = this.currentIndex - 1;
97
+ await this.goToIndex(index, initialPosition);
98
+ }
99
+ getTrack(index) {
100
+ const track = this.playlist[index];
101
+ return track || null;
102
+ }
103
+ setRepeatMode(mode) {
104
+ this.repeatMode = mode;
105
+ }
106
+ getRepeatMode() {
107
+ return this.repeatMode;
108
+ }
109
+ async remove(indexes) {
110
+ const idxMap = indexes.reduce((acc, elem) => {
111
+ acc[elem] = true;
112
+ return acc;
113
+ }, {});
114
+ let isCurrentRemoved = false;
115
+ this.playlist = this.playlist.filter((_track, idx) => {
116
+ const keep = !idxMap[idx];
117
+ if (!keep && idx === this.currentIndex) {
118
+ isCurrentRemoved = true;
119
+ }
120
+ return keep;
121
+ });
122
+ if (this.currentIndex === undefined) {
123
+ return;
124
+ }
125
+ const hasItems = this.playlist.length > 0;
126
+ if (isCurrentRemoved && hasItems) {
127
+ await this.goToIndex(this.currentIndex % this.playlist.length);
128
+ }
129
+ else if (isCurrentRemoved) {
130
+ await this.stop();
131
+ }
132
+ }
133
+ async stop() {
134
+ await super.stop();
135
+ this.currentIndex = undefined;
136
+ }
137
+ async reset() {
138
+ await this.stop();
139
+ this.playlist = [];
140
+ }
141
+ async removeUpcomingTracks() {
142
+ if (this.currentIndex === undefined)
143
+ return;
144
+ this.playlist = this.playlist.slice(0, this.currentIndex + 1);
145
+ }
146
+ async move(fromIndex, toIndex) {
147
+ if (!this.playlist[fromIndex]) {
148
+ throw new Error('index out of bounds');
149
+ }
150
+ if (this.currentIndex === fromIndex) {
151
+ throw new Error('you cannot move the currently playing track');
152
+ }
153
+ if (this.currentIndex === toIndex) {
154
+ throw new Error('you cannot replace the currently playing track');
155
+ }
156
+ // calculate `currentIndex` after move
157
+ let shift = undefined;
158
+ if (this.currentIndex) {
159
+ if (fromIndex < this.currentIndex && toIndex > this.currentIndex) {
160
+ shift = -1;
161
+ }
162
+ else if (fromIndex > this.currentIndex && toIndex < this.currentIndex) {
163
+ shift = +1;
164
+ }
165
+ }
166
+ // move the track
167
+ const fromItem = this.playlist[fromIndex];
168
+ this.playlist.splice(fromIndex, 1);
169
+ this.playlist.splice(toIndex, 0, fromItem);
170
+ if (this.currentIndex && shift) {
171
+ this.currentIndex = this.currentIndex + shift;
172
+ }
173
+ }
174
+ // TODO
175
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
176
+ updateMetadataForTrack(index, metadata) { }
177
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
178
+ clearNowPlayingMetadata() { }
179
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
180
+ updateNowPlayingMetadata(metadata) { }
181
+ }
@@ -0,0 +1,5 @@
1
+ export declare enum RepeatMode {
2
+ Off = "REPEAT_OFF",
3
+ Track = "REPEAT_TRACK",
4
+ Playlist = "REPEAT_PLAYLIST"
5
+ }
@@ -0,0 +1,6 @@
1
+ export var RepeatMode;
2
+ (function (RepeatMode) {
3
+ RepeatMode["Off"] = "REPEAT_OFF";
4
+ RepeatMode["Track"] = "REPEAT_TRACK";
5
+ RepeatMode["Playlist"] = "REPEAT_PLAYLIST";
6
+ })(RepeatMode || (RepeatMode = {}));
@@ -0,0 +1,3 @@
1
+ export declare class SetupNotCalledError extends Error {
2
+ constructor();
3
+ }
@@ -0,0 +1,5 @@
1
+ export class SetupNotCalledError extends Error {
2
+ constructor() {
3
+ super('You must call `setupPlayer` prior to interacting with the player.');
4
+ }
5
+ }
@@ -0,0 +1,3 @@
1
+ export * from './Player';
2
+ export * from './PlaylistPlayer';
3
+ export * from './RepeatMode';
@@ -0,0 +1,3 @@
1
+ export * from './Player';
2
+ export * from './PlaylistPlayer';
3
+ export * from './RepeatMode';
@@ -0,0 +1,63 @@
1
+ import { PlaybackState, State } from '../src';
2
+ import type { Track, UpdateOptions } from '../src';
3
+ import { PlaylistPlayer, RepeatMode } from './TrackPlayer';
4
+ export declare class TrackPlayerModule extends PlaylistPlayer {
5
+ protected emitter: import("react-native").DeviceEventEmitterStatic;
6
+ protected progressUpdateEventInterval: any;
7
+ readonly CAPABILITY_PLAY = "CAPABILITY_PLAY";
8
+ readonly CAPABILITY_PLAY_FROM_ID = "CAPABILITY_PLAY_FROM_ID";
9
+ readonly CAPABILITY_PLAY_FROM_SEARCH = "CAPABILITY_PLAY_FROM_SEARCH";
10
+ readonly CAPABILITY_PAUSE = "CAPABILITY_PAUSE";
11
+ readonly CAPABILITY_STOP = "CAPABILITY_STOP";
12
+ readonly CAPABILITY_SEEK_TO = "CAPABILITY_SEEK_TO";
13
+ readonly CAPABILITY_SKIP = "CAPABILITY_SKIP";
14
+ readonly CAPABILITY_SKIP_TO_NEXT = "CAPABILITY_SKIP_TO_NEXT";
15
+ readonly CAPABILITY_SKIP_TO_PREVIOUS = "CAPABILITY_SKIP_TO_PREVIOUS";
16
+ readonly CAPABILITY_JUMP_FORWARD = "CAPABILITY_JUMP_FORWARD";
17
+ readonly CAPABILITY_JUMP_BACKWARD = "CAPABILITY_JUMP_BACKWARD";
18
+ readonly CAPABILITY_SET_RATING = "CAPABILITY_SET_RATING";
19
+ readonly CAPABILITY_LIKE = "CAPABILITY_LIKE";
20
+ readonly CAPABILITY_DISLIKE = "CAPABILITY_DISLIKE";
21
+ readonly CAPABILITY_BOOKMARK = "CAPABILITY_BOOKMARK";
22
+ readonly STATE_NONE = "STATE_NONE";
23
+ readonly STATE_READY = "STATE_READY";
24
+ readonly STATE_PLAYING = "STATE_PLAYING";
25
+ readonly STATE_PAUSED = "STATE_PAUSED";
26
+ readonly STATE_STOPPED = "STATE_STOPPED";
27
+ readonly STATE_BUFFERING = "STATE_BUFFERING";
28
+ readonly STATE_CONNECTING = "STATE_CONNECTING";
29
+ readonly RATING_HEART = "RATING_HEART";
30
+ readonly RATING_THUMBS_UP_DOWN = "RATING_THUMBS_UP_DOWN";
31
+ readonly RATING_3_STARS = "RATING_3_STARS";
32
+ readonly RATING_4_STARS = "RATING_4_STARS";
33
+ readonly RATING_5_STARS = "RATING_5_STARS";
34
+ readonly RATING_PERCENTAGE = "RATING_PERCENTAGE";
35
+ readonly REPEAT_OFF = RepeatMode.Off;
36
+ readonly REPEAT_TRACK = RepeatMode.Track;
37
+ readonly REPEAT_QUEUE = RepeatMode.Playlist;
38
+ readonly PITCH_ALGORITHM_LINEAR = "PITCH_ALGORITHM_LINEAR";
39
+ readonly PITCH_ALGORITHM_MUSIC = "PITCH_ALGORITHM_MUSIC";
40
+ readonly PITCH_ALGORITHM_VOICE = "PITCH_ALGORITHM_VOICE";
41
+ get state(): PlaybackState;
42
+ set state(newState: PlaybackState);
43
+ updateOptions(options: UpdateOptions): Promise<void>;
44
+ protected setupProgressUpdates(interval?: number): void;
45
+ protected clearUpdateEventInterval(): void;
46
+ protected onTrackEnded(): Promise<void>;
47
+ protected onPlaylistEnded(): Promise<void>;
48
+ get playWhenReady(): boolean;
49
+ set playWhenReady(pwr: boolean);
50
+ getPlayWhenReady(): boolean;
51
+ setPlayWhenReady(pwr: boolean): boolean;
52
+ load(track: Track): Promise<void>;
53
+ getQueue(): Track[];
54
+ setQueue(queue: Track[]): Promise<void>;
55
+ getActiveTrack(): Track | undefined;
56
+ getActiveTrackIndex(): number | undefined;
57
+ /**
58
+ * @deprecated
59
+ * @returns State
60
+ */
61
+ getState(): State;
62
+ getPlaybackState(): PlaybackState;
63
+ }
@@ -0,0 +1,153 @@
1
+ import { DeviceEventEmitter } from 'react-native';
2
+ import { Event, State } from '../src';
3
+ import { PlaylistPlayer, RepeatMode } from './TrackPlayer';
4
+ import { SetupNotCalledError } from './TrackPlayer/SetupNotCalledError';
5
+ export class TrackPlayerModule extends PlaylistPlayer {
6
+ emitter = DeviceEventEmitter;
7
+ progressUpdateEventInterval;
8
+ // Capabilities
9
+ CAPABILITY_PLAY = 'CAPABILITY_PLAY';
10
+ CAPABILITY_PLAY_FROM_ID = 'CAPABILITY_PLAY_FROM_ID';
11
+ CAPABILITY_PLAY_FROM_SEARCH = 'CAPABILITY_PLAY_FROM_SEARCH';
12
+ CAPABILITY_PAUSE = 'CAPABILITY_PAUSE';
13
+ CAPABILITY_STOP = 'CAPABILITY_STOP';
14
+ CAPABILITY_SEEK_TO = 'CAPABILITY_SEEK_TO';
15
+ CAPABILITY_SKIP = 'CAPABILITY_SKIP';
16
+ CAPABILITY_SKIP_TO_NEXT = 'CAPABILITY_SKIP_TO_NEXT';
17
+ CAPABILITY_SKIP_TO_PREVIOUS = 'CAPABILITY_SKIP_TO_PREVIOUS';
18
+ CAPABILITY_JUMP_FORWARD = 'CAPABILITY_JUMP_FORWARD';
19
+ CAPABILITY_JUMP_BACKWARD = 'CAPABILITY_JUMP_BACKWARD';
20
+ CAPABILITY_SET_RATING = 'CAPABILITY_SET_RATING';
21
+ CAPABILITY_LIKE = 'CAPABILITY_LIKE';
22
+ CAPABILITY_DISLIKE = 'CAPABILITY_DISLIKE';
23
+ CAPABILITY_BOOKMARK = 'CAPABILITY_BOOKMARK';
24
+ // States
25
+ STATE_NONE = 'STATE_NONE';
26
+ STATE_READY = 'STATE_READY';
27
+ STATE_PLAYING = 'STATE_PLAYING';
28
+ STATE_PAUSED = 'STATE_PAUSED';
29
+ STATE_STOPPED = 'STATE_STOPPED';
30
+ STATE_BUFFERING = 'STATE_BUFFERING';
31
+ STATE_CONNECTING = 'STATE_CONNECTING';
32
+ // Rating Types
33
+ RATING_HEART = 'RATING_HEART';
34
+ RATING_THUMBS_UP_DOWN = 'RATING_THUMBS_UP_DOWN';
35
+ RATING_3_STARS = 'RATING_3_STARS';
36
+ RATING_4_STARS = 'RATING_4_STARS';
37
+ RATING_5_STARS = 'RATING_5_STARS';
38
+ RATING_PERCENTAGE = 'RATING_PERCENTAGE';
39
+ // Repeat Modes
40
+ REPEAT_OFF = RepeatMode.Off;
41
+ REPEAT_TRACK = RepeatMode.Track;
42
+ REPEAT_QUEUE = RepeatMode.Playlist;
43
+ // Pitch Algorithms
44
+ PITCH_ALGORITHM_LINEAR = 'PITCH_ALGORITHM_LINEAR';
45
+ PITCH_ALGORITHM_MUSIC = 'PITCH_ALGORITHM_MUSIC';
46
+ PITCH_ALGORITHM_VOICE = 'PITCH_ALGORITHM_VOICE';
47
+ // observe and emit state changes
48
+ get state() {
49
+ return super.state;
50
+ }
51
+ set state(newState) {
52
+ super.state = newState;
53
+ this.emitter.emit(Event.PlaybackState, newState);
54
+ }
55
+ async updateOptions(options) {
56
+ this.setupProgressUpdates(options.progressUpdateEventInterval);
57
+ }
58
+ setupProgressUpdates(interval) {
59
+ // clear and reset interval
60
+ this.clearUpdateEventInterval();
61
+ if (interval) {
62
+ this.clearUpdateEventInterval();
63
+ this.progressUpdateEventInterval = setInterval(async () => {
64
+ if (this.state.state === State.Playing) {
65
+ const progress = await this.getProgress();
66
+ this.emitter.emit(Event.PlaybackProgressUpdated, {
67
+ ...progress,
68
+ track: this.currentIndex,
69
+ });
70
+ }
71
+ }, interval * 1000);
72
+ }
73
+ }
74
+ clearUpdateEventInterval() {
75
+ if (this.progressUpdateEventInterval) {
76
+ clearInterval(this.progressUpdateEventInterval);
77
+ }
78
+ }
79
+ async onTrackEnded() {
80
+ const position = this.element.currentTime;
81
+ await super.onTrackEnded();
82
+ this.emitter.emit(Event.PlaybackTrackChanged, {
83
+ track: this.lastIndex,
84
+ position,
85
+ nextTrack: this.currentIndex,
86
+ });
87
+ }
88
+ async onPlaylistEnded() {
89
+ await super.onPlaylistEnded();
90
+ this.emitter.emit(Event.PlaybackQueueEnded, {
91
+ track: this.currentIndex,
92
+ position: this.element.currentTime,
93
+ });
94
+ }
95
+ get playWhenReady() {
96
+ return super.playWhenReady;
97
+ }
98
+ set playWhenReady(pwr) {
99
+ const didChange = pwr !== this._playWhenReady;
100
+ super.playWhenReady = pwr;
101
+ if (didChange) {
102
+ this.emitter.emit(Event.PlaybackPlayWhenReadyChanged, { playWhenReady: this._playWhenReady });
103
+ }
104
+ }
105
+ getPlayWhenReady() {
106
+ return this.playWhenReady;
107
+ }
108
+ setPlayWhenReady(pwr) {
109
+ this.playWhenReady = pwr;
110
+ return this.playWhenReady;
111
+ }
112
+ async load(track) {
113
+ if (!this.element)
114
+ throw new SetupNotCalledError();
115
+ const lastTrack = this.current;
116
+ const lastPosition = this.element.currentTime;
117
+ await super.load(track);
118
+ this.emitter.emit(Event.PlaybackActiveTrackChanged, {
119
+ lastTrack,
120
+ lastPosition,
121
+ lastIndex: this.lastIndex,
122
+ index: this.currentIndex,
123
+ track,
124
+ });
125
+ }
126
+ getQueue() {
127
+ return this.playlist;
128
+ }
129
+ async setQueue(queue) {
130
+ await this.stop();
131
+ this.playlist = queue;
132
+ }
133
+ getActiveTrack() {
134
+ return this.current;
135
+ }
136
+ getActiveTrackIndex() {
137
+ // per the existing spec, this should throw if setup hasn't been called
138
+ if (!this.element || !this.player)
139
+ throw new SetupNotCalledError();
140
+ return this.currentIndex;
141
+ }
142
+ /**
143
+ * @deprecated
144
+ * @returns State
145
+ */
146
+ getState() {
147
+ return this.state.state;
148
+ }
149
+ getPlaybackState() {
150
+ return this.state;
151
+ }
152
+ }
153
+ ;
@@ -0,0 +1,3 @@
1
+ import { TrackPlayerModule } from './TrackPlayerModule';
2
+ declare const module: TrackPlayerModule;
3
+ export default module;
@@ -0,0 +1,3 @@
1
+ import { TrackPlayerModule } from './TrackPlayerModule';
2
+ const module = new TrackPlayerModule();
3
+ export default module;