react-native-audio-browser 0.2.0-next.11 → 0.2.0-next.13
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 +14 -4
- package/android/build.gradle +20 -1
- package/android/src/main/java/com/audiobrowser/AudioBrowser.kt +115 -26
- package/android/src/main/java/com/audiobrowser/browser/BrowserManager.kt +262 -188
- package/android/src/main/java/com/audiobrowser/browser/BrowserUrlResolution.kt +23 -3
- package/android/src/main/java/com/audiobrowser/browser/InertStyleDiagnostic.kt +267 -0
- package/android/src/main/java/com/audiobrowser/browser/JsonModels.kt +95 -58
- package/android/src/main/java/com/audiobrowser/browser/SectionScope.kt +68 -26
- package/android/src/main/java/com/audiobrowser/browser/StyleResolver.kt +60 -0
- package/android/src/main/java/com/audiobrowser/extension/ResolvedTrackExt.kt +19 -7
- package/android/src/main/java/com/audiobrowser/extension/TappedTrack.kt +20 -0
- package/android/src/main/java/com/audiobrowser/extension/TrackIdentity.kt +15 -0
- package/android/src/main/java/com/audiobrowser/model/PlayerUpdateOptions.kt +1 -1
- package/android/src/main/java/com/audiobrowser/player/MediaSessionCallback.kt +120 -67
- package/android/src/main/java/com/audiobrowser/player/NowPlayingUpdater.kt +21 -24
- package/android/src/main/java/com/audiobrowser/player/PlaybackStateStore.kt +109 -74
- package/android/src/main/java/com/audiobrowser/player/Player.kt +51 -30
- package/android/src/main/java/com/audiobrowser/player/PlayerCapabilitiesExt.kt +2 -15
- package/android/src/main/java/com/audiobrowser/player/ShuffleOrderLedBy.kt +30 -0
- package/android/src/main/java/com/audiobrowser/util/BrowserPathHelper.kt +44 -40
- package/android/src/main/java/com/audiobrowser/util/MediaExtrasBuilder.kt +28 -23
- package/android/src/main/java/com/audiobrowser/util/StyleWire.kt +108 -0
- package/android/src/main/java/com/audiobrowser/util/TrackFactory.kt +52 -53
- package/android/src/test/java/com/audiobrowser/TestFixtures.kt +74 -41
- package/android/src/test/java/com/audiobrowser/browser/BrowserManagerFavoritesTest.kt +153 -0
- package/android/src/test/java/com/audiobrowser/browser/BrowserManagerTest.kt +229 -50
- package/android/src/test/java/com/audiobrowser/browser/BrowserUrlResolutionTest.kt +38 -0
- package/android/src/test/java/com/audiobrowser/browser/InertStyleDiagnosticTest.kt +277 -0
- package/android/src/test/java/com/audiobrowser/browser/JsonArtworkTest.kt +1 -1
- package/android/src/test/java/com/audiobrowser/browser/JsonStyleTest.kt +147 -0
- package/android/src/test/java/com/audiobrowser/browser/SectionScopeTest.kt +128 -53
- package/android/src/test/java/com/audiobrowser/browser/StyleResolverTest.kt +154 -0
- package/android/src/test/java/com/audiobrowser/extension/TappedTrackTest.kt +43 -0
- package/android/src/test/java/com/audiobrowser/extension/TrackIdentityTest.kt +41 -0
- package/android/src/test/java/com/audiobrowser/player/CapabilityControlsTest.kt +1 -2
- package/android/src/test/java/com/audiobrowser/player/NowPlayingUpdaterTest.kt +42 -2
- package/android/src/test/java/com/audiobrowser/player/PlaybackStateStoreTrackJsonTest.kt +55 -0
- package/android/src/test/java/com/audiobrowser/player/ShuffleOrderLedByTest.kt +79 -0
- package/android/src/test/java/com/audiobrowser/util/BrowserPathHelperTest.kt +41 -16
- package/android/src/test/java/com/audiobrowser/util/MediaExtrasBuilderTest.kt +161 -0
- package/android/src/test/java/com/audiobrowser/util/TrackFactoryMediaIdTest.kt +7 -7
- package/ios/Browser/BrowserConfig.swift +102 -5
- package/ios/Browser/BrowserManager+URLResolution.swift +18 -14
- package/ios/Browser/BrowserManager.swift +229 -180
- package/ios/Browser/BrowserPathHelper.swift +44 -44
- package/ios/Browser/InertStyleDiagnostic.swift +279 -0
- package/ios/Browser/JsonModels.swift +258 -106
- package/ios/Browser/SearchDrillIn.swift +6 -6
- package/ios/Browser/SectionPresentation.swift +64 -0
- package/ios/Browser/SectionScope.swift +58 -24
- package/ios/Browser/StyleResolver.swift +58 -0
- package/ios/Browser/TabBarEntries.swift +9 -3
- package/ios/Browser/TrackIdTemplate.swift +37 -0
- package/ios/CarPlay/CarPlayArtworkResolver.swift +8 -7
- package/ios/CarPlay/CarPlayController.swift +227 -85
- package/ios/CarPlay/CarPlayImageLoader.swift +38 -18
- package/ios/CarPlay/CarPlayListItemFactory.swift +289 -84
- package/ios/CarPlay/CarPlayNowPlayingManager.swift +15 -12
- package/ios/Extension/Capability+RemoteCommand.swift +1 -1
- package/ios/Extension/PlayerCapabilities+Favorite.swift +1 -15
- package/ios/Extension/ResolvedTrack+Copying.swift +11 -15
- package/ios/Extension/Section+Copying.swift +31 -0
- package/ios/Extension/Track+Copying.swift +6 -12
- package/ios/Extension/Track+Identity.swift +18 -0
- package/ios/Extension/UIApplication+ActiveScene.swift +27 -0
- package/ios/Http/HttpClient.swift +8 -2
- package/ios/HybridAudioBrowser.swift +166 -45
- package/ios/Model/NitroTypeStubs.swift +106 -21
- package/ios/Model/PlayerUpdateOptions.swift +7 -0
- package/ios/Player/MediaIntentCriteria.swift +13 -5
- package/ios/Player/MediaLoader.swift +33 -9
- package/ios/Player/NowPlayingUpdater.swift +54 -6
- package/ios/Player/PlaybackCoordinator.swift +13 -6
- package/ios/Player/PlaybackTimer.swift +8 -2
- package/ios/Player/QueueManager.swift +36 -10
- package/ios/Player/RetryManager.swift +4 -3
- package/ios/Player/ShuffleOrder.swift +23 -0
- package/ios/Player/SleepTimerHandling.swift +13 -0
- package/ios/RemoteCommand/RemoteCommandController.swift +53 -18
- package/ios/Tests/BrowserPathHelperTests.swift +50 -20
- package/ios/Tests/CarPlayArtworkResolverTests.swift +24 -41
- package/ios/Tests/InertStyleDiagnosticTests.swift +200 -0
- package/ios/Tests/JsonModelsTests.swift +150 -1
- package/ios/Tests/PlaybackStateStoreTests.swift +4 -3
- package/ios/Tests/QueueManagerTests.swift +72 -6
- package/ios/Tests/RemoteCommandControllerTests.swift +16 -0
- package/ios/Tests/ResolvedTrackCopyingTests.swift +37 -35
- package/ios/Tests/SearchDrillInTests.swift +16 -16
- package/ios/Tests/SectionPresentationTests.swift +90 -0
- package/ios/Tests/SectionScopeTests.swift +87 -55
- package/ios/Tests/StyleResolverTests.swift +127 -0
- package/ios/Tests/Support/TestTypes.swift +7 -0
- package/ios/Tests/TabBarEntriesTests.swift +18 -18
- package/ios/Tests/TrackIdTemplateTests.swift +67 -0
- package/ios/Tests/TrackIdentityTests.swift +20 -0
- package/ios/Tests/TrackSelectorTests.swift +168 -33
- package/ios/TrackPlayer.swift +57 -34
- package/ios/TrackSelector.swift +45 -30
- package/ios/Util/ArtworkImageFetcher.swift +16 -1
- package/ios/Util/NetworkMonitor.swift +43 -26
- package/ios/Util/SFSymbolRenderer.swift +24 -2
- package/ios/Util/SVGProcessor.swift +9 -2
- package/lib/commonjs/AudioBrowser.js +11 -0
- package/lib/commonjs/AudioBrowser.js.map +1 -1
- package/lib/commonjs/features/browser-config.js +11 -8
- package/lib/commonjs/features/browser-config.js.map +1 -1
- package/lib/commonjs/features/browser.js +2 -2
- package/lib/commonjs/features/favorites.js +13 -10
- package/lib/commonjs/features/favorites.js.map +1 -1
- package/lib/commonjs/features/playback/controls.js +4 -2
- package/lib/commonjs/features/playback/controls.js.map +1 -1
- package/lib/commonjs/features/playback/progress.js +2 -1
- package/lib/commonjs/features/playback/progress.js.map +1 -1
- package/lib/commonjs/features/playback/rate.js +8 -1
- package/lib/commonjs/features/playback/rate.js.map +1 -1
- package/lib/commonjs/features/playback/state.js +2 -3
- package/lib/commonjs/features/playback/state.js.map +1 -1
- package/lib/commonjs/features/player/options.js.map +1 -1
- package/lib/commonjs/features/player/setup.js +3 -1
- package/lib/commonjs/features/player/setup.js.map +1 -1
- package/lib/commonjs/features/player/validateOptions.js +2 -0
- package/lib/commonjs/features/player/validateOptions.js.map +1 -1
- package/lib/commonjs/features/queue/activeTrack.js +14 -3
- package/lib/commonjs/features/queue/activeTrack.js.map +1 -1
- package/lib/commonjs/features/queue/queue.js +11 -4
- package/lib/commonjs/features/queue/queue.js.map +1 -1
- package/lib/commonjs/utils/LazyNativeEmitter.js +21 -10
- package/lib/commonjs/utils/LazyNativeEmitter.js.map +1 -1
- package/lib/commonjs/utils/NativeUpdatedValue.js +31 -13
- package/lib/commonjs/utils/NativeUpdatedValue.js.map +1 -1
- package/lib/commonjs/utils/getTrackIdentity.js +24 -0
- package/lib/commonjs/utils/getTrackIdentity.js.map +1 -0
- package/lib/commonjs/utils/useNativeValueRefreshedBy.js +33 -0
- package/lib/commonjs/utils/useNativeValueRefreshedBy.js.map +1 -0
- package/lib/commonjs/web/NativeAudioBrowser.js +32 -24
- package/lib/commonjs/web/NativeAudioBrowser.js.map +1 -1
- package/lib/commonjs/web/TrackPlayer/QueueManager.js +14 -0
- package/lib/commonjs/web/TrackPlayer/QueueManager.js.map +1 -1
- package/lib/commonjs/web/browser/BrowserManager.js +144 -87
- package/lib/commonjs/web/browser/BrowserManager.js.map +1 -1
- package/lib/commonjs/web/browser/FavoriteManager.js +30 -21
- package/lib/commonjs/web/browser/FavoriteManager.js.map +1 -1
- package/lib/commonjs/web/browser/assertBrowsePageShape.js +2 -2
- package/lib/commonjs/web/browser/assertBrowsePageShape.js.map +1 -1
- package/lib/commonjs/web/browser/classifyTrackNavigation.js +9 -9
- package/lib/commonjs/web/browser/classifyTrackNavigation.js.map +1 -1
- package/lib/commonjs/web/browser/sections.js +89 -0
- package/lib/commonjs/web/browser/sections.js.map +1 -0
- package/lib/commonjs/web/player/NowPlayingManager.js +4 -3
- package/lib/commonjs/web/player/NowPlayingManager.js.map +1 -1
- package/lib/commonjs/web/util/BrowserPathHelper.js +56 -11
- package/lib/commonjs/web/util/BrowserPathHelper.js.map +1 -1
- package/lib/module/AudioBrowser.js +1 -0
- package/lib/module/AudioBrowser.js.map +1 -1
- package/lib/module/features/browser-config.js +11 -8
- package/lib/module/features/browser-config.js.map +1 -1
- package/lib/module/features/browser.js +2 -2
- package/lib/module/features/favorites.js +13 -10
- package/lib/module/features/favorites.js.map +1 -1
- package/lib/module/features/playback/controls.js +4 -2
- package/lib/module/features/playback/controls.js.map +1 -1
- package/lib/module/features/playback/progress.js +2 -1
- package/lib/module/features/playback/progress.js.map +1 -1
- package/lib/module/features/playback/rate.js +8 -1
- package/lib/module/features/playback/rate.js.map +1 -1
- package/lib/module/features/playback/state.js +2 -3
- package/lib/module/features/playback/state.js.map +1 -1
- package/lib/module/features/player/options.js.map +1 -1
- package/lib/module/features/player/setup.js +3 -1
- package/lib/module/features/player/setup.js.map +1 -1
- package/lib/module/features/player/validateOptions.js +2 -0
- package/lib/module/features/player/validateOptions.js.map +1 -1
- package/lib/module/features/queue/activeTrack.js +14 -3
- package/lib/module/features/queue/activeTrack.js.map +1 -1
- package/lib/module/features/queue/queue.js +11 -4
- package/lib/module/features/queue/queue.js.map +1 -1
- package/lib/module/utils/LazyNativeEmitter.js +21 -10
- package/lib/module/utils/LazyNativeEmitter.js.map +1 -1
- package/lib/module/utils/NativeUpdatedValue.js +31 -13
- package/lib/module/utils/NativeUpdatedValue.js.map +1 -1
- package/lib/module/utils/getTrackIdentity.js +20 -0
- package/lib/module/utils/getTrackIdentity.js.map +1 -0
- package/lib/module/utils/useNativeValueRefreshedBy.js +29 -0
- package/lib/module/utils/useNativeValueRefreshedBy.js.map +1 -0
- package/lib/module/web/NativeAudioBrowser.js +32 -24
- package/lib/module/web/NativeAudioBrowser.js.map +1 -1
- package/lib/module/web/TrackPlayer/QueueManager.js +14 -0
- package/lib/module/web/TrackPlayer/QueueManager.js.map +1 -1
- package/lib/module/web/browser/BrowserManager.js +144 -87
- package/lib/module/web/browser/BrowserManager.js.map +1 -1
- package/lib/module/web/browser/FavoriteManager.js +31 -21
- package/lib/module/web/browser/FavoriteManager.js.map +1 -1
- package/lib/module/web/browser/assertBrowsePageShape.js +2 -2
- package/lib/module/web/browser/assertBrowsePageShape.js.map +1 -1
- package/lib/module/web/browser/classifyTrackNavigation.js +9 -9
- package/lib/module/web/browser/classifyTrackNavigation.js.map +1 -1
- package/lib/module/web/browser/sections.js +83 -0
- package/lib/module/web/browser/sections.js.map +1 -0
- package/lib/module/web/player/NowPlayingManager.js +4 -3
- package/lib/module/web/player/NowPlayingManager.js.map +1 -1
- package/lib/module/web/util/BrowserPathHelper.js +56 -11
- package/lib/module/web/util/BrowserPathHelper.js.map +1 -1
- package/lib/typescript/src/AudioBrowser.d.ts +1 -0
- package/lib/typescript/src/AudioBrowser.d.ts.map +1 -1
- package/lib/typescript/src/features/browser-config.d.ts.map +1 -1
- package/lib/typescript/src/features/browser.d.ts +2 -2
- package/lib/typescript/src/features/favorites.d.ts +13 -10
- package/lib/typescript/src/features/favorites.d.ts.map +1 -1
- package/lib/typescript/src/features/playback/controls.d.ts +4 -2
- package/lib/typescript/src/features/playback/controls.d.ts.map +1 -1
- package/lib/typescript/src/features/playback/progress.d.ts.map +1 -1
- package/lib/typescript/src/features/playback/rate.d.ts +8 -1
- package/lib/typescript/src/features/playback/rate.d.ts.map +1 -1
- package/lib/typescript/src/features/playback/state.d.ts +2 -3
- package/lib/typescript/src/features/playback/state.d.ts.map +1 -1
- package/lib/typescript/src/features/playback/trackPlaybackTime.d.ts +1 -1
- package/lib/typescript/src/features/playback/trackPlaybackTime.d.ts.map +1 -1
- package/lib/typescript/src/features/player/options.d.ts +21 -19
- package/lib/typescript/src/features/player/options.d.ts.map +1 -1
- package/lib/typescript/src/features/player/setup.d.ts.map +1 -1
- package/lib/typescript/src/features/player/validateOptions.d.ts +1 -8
- package/lib/typescript/src/features/player/validateOptions.d.ts.map +1 -1
- package/lib/typescript/src/features/queue/activeTrack.d.ts +8 -1
- package/lib/typescript/src/features/queue/activeTrack.d.ts.map +1 -1
- package/lib/typescript/src/features/queue/queue.d.ts +5 -2
- package/lib/typescript/src/features/queue/queue.d.ts.map +1 -1
- package/lib/typescript/src/types/browser-native.d.ts +2 -2
- package/lib/typescript/src/types/browser-native.d.ts.map +1 -1
- package/lib/typescript/src/types/browser-nodes.d.ts +361 -126
- package/lib/typescript/src/types/browser-nodes.d.ts.map +1 -1
- package/lib/typescript/src/types/browser.d.ts +33 -53
- package/lib/typescript/src/types/browser.d.ts.map +1 -1
- package/lib/typescript/src/utils/LazyNativeEmitter.d.ts +16 -17
- package/lib/typescript/src/utils/LazyNativeEmitter.d.ts.map +1 -1
- package/lib/typescript/src/utils/NativeUpdatedValue.d.ts +24 -19
- package/lib/typescript/src/utils/NativeUpdatedValue.d.ts.map +1 -1
- package/lib/typescript/src/utils/getTrackIdentity.d.ts +18 -0
- package/lib/typescript/src/utils/getTrackIdentity.d.ts.map +1 -0
- package/lib/typescript/src/utils/useNativeValueRefreshedBy.d.ts +21 -0
- package/lib/typescript/src/utils/useNativeValueRefreshedBy.d.ts.map +1 -0
- package/nitrogen/generated/android/AudioBrowser+autolinking.cmake +0 -1
- package/nitrogen/generated/android/c++/{JFavoritesMatchMode.hpp → JArtworkRendering.hpp} +15 -15
- package/nitrogen/generated/android/c++/JArtworkRequestConfig.hpp +8 -3
- package/nitrogen/generated/android/c++/JBrowseResult.hpp +16 -4
- package/nitrogen/generated/android/c++/JCarPlayPlayingIndicatorLocation.hpp +58 -0
- package/nitrogen/generated/android/c++/JCardImage.hpp +58 -0
- package/nitrogen/generated/android/c++/JFavoriteChangedEvent.hpp +8 -3
- package/nitrogen/generated/android/c++/JFormatNowPlayingParams.hpp +8 -3
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_RequestConfig___Track.hpp +8 -3
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_NowPlayingUpdate____FormatNowPlayingParams.hpp +8 -3
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_std__string____Track.hpp +8 -3
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____Track.hpp +8 -3
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_Track______SearchParams.hpp +8 -2
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_void_____TrackLoadEvent.hpp +8 -2
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError__std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError_______BrowserSourceCallbackParam.hpp +16 -4
- package/nitrogen/generated/android/c++/JFunc_void_FavoriteChangedEvent.hpp +8 -3
- package/nitrogen/generated/android/c++/JFunc_void_Options.hpp +2 -5
- package/nitrogen/generated/android/c++/JFunc_void_PlaybackActiveTrackChangedEvent.hpp +8 -3
- package/nitrogen/generated/android/c++/JFunc_void_std__optional_ResolvedTrack_.hpp +15 -3
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_Track_.hpp +8 -2
- package/nitrogen/generated/android/c++/JGridTile.hpp +61 -0
- package/nitrogen/generated/android/c++/JHybridAudioBrowserSpec.cpp +33 -14
- package/nitrogen/generated/android/c++/JIOSOptions.hpp +9 -3
- package/nitrogen/generated/android/c++/JImageShape.hpp +58 -0
- package/nitrogen/generated/android/c++/JMediaRequestConfig.hpp +8 -3
- package/nitrogen/generated/android/c++/JNativeBrowserConfiguration.hpp +22 -10
- package/nitrogen/generated/android/c++/JNativeRouteEntry.hpp +14 -2
- package/nitrogen/generated/android/c++/JNativeSetupPlayerOptions.hpp +10 -7
- package/nitrogen/generated/android/c++/JNativeUpdateOptions.hpp +2 -5
- package/nitrogen/generated/android/c++/JNitroIOSUpdateOptions.hpp +9 -3
- package/nitrogen/generated/android/c++/JOptions.hpp +2 -5
- package/nitrogen/generated/android/c++/JPlaybackActiveTrackChangedEvent.hpp +8 -3
- package/nitrogen/generated/android/c++/JPlayerCapabilities.hpp +5 -11
- package/nitrogen/generated/android/c++/JResolvedTrack.hpp +55 -51
- package/nitrogen/generated/android/c++/JSection.hpp +120 -0
- package/nitrogen/generated/android/c++/JSectionStyle.hpp +96 -0
- package/nitrogen/generated/android/c++/JStyleDisplay.hpp +58 -0
- package/nitrogen/generated/android/c++/JTrack.hpp +23 -48
- package/nitrogen/generated/android/c++/JTrackLoadEvent.hpp +8 -2
- package/nitrogen/generated/android/c++/JTrackStyle.hpp +46 -18
- package/nitrogen/generated/android/c++/JVariant_ResolvedTrack_BrowseError_Promise_BrowseResult_.hpp +16 -4
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{FavoritesMatchMode.kt → ArtworkRendering.kt} +5 -5
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/CarPlayPlayingIndicatorLocation.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/CardImage.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/GridTile.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/IOSOptions.kt +6 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ImageShape.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeBrowserConfiguration.kt +5 -5
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NitroIOSUpdateOptions.kt +6 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlayerCapabilities.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ResolvedTrack.kt +12 -18
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{FavoriteConfig.kt → Section.kt} +18 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/SectionStyle.kt +59 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/StyleDisplay.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Track.kt +6 -15
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TrackStyle.kt +35 -5
- package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Bridge.hpp +158 -82
- package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Umbrella.hpp +25 -10
- package/nitrogen/generated/ios/c++/HybridAudioBrowserSpecSwift.hpp +25 -10
- package/nitrogen/generated/ios/swift/ArtworkRendering.swift +40 -0
- package/nitrogen/generated/ios/swift/CarPlayPlayingIndicatorLocation.swift +40 -0
- package/nitrogen/generated/ios/swift/CardImage.swift +40 -0
- package/nitrogen/generated/ios/swift/GridTile.swift +44 -0
- package/nitrogen/generated/ios/swift/IOSOptions.swift +7 -2
- package/nitrogen/generated/ios/swift/ImageShape.swift +40 -0
- package/nitrogen/generated/ios/swift/NativeBrowserConfiguration.swift +5 -5
- package/nitrogen/generated/ios/swift/NitroIOSUpdateOptions.swift +12 -1
- package/nitrogen/generated/ios/swift/PlayerCapabilities.swift +8 -27
- package/nitrogen/generated/ios/swift/ResolvedTrack.swift +54 -83
- package/nitrogen/generated/ios/swift/Section.swift +100 -0
- package/nitrogen/generated/ios/swift/SectionStyle.swift +133 -0
- package/nitrogen/generated/ios/swift/StyleDisplay.swift +40 -0
- package/nitrogen/generated/ios/swift/Track.swift +20 -73
- package/nitrogen/generated/ios/swift/TrackStyle.swift +86 -22
- package/nitrogen/generated/shared/c++/{FavoritesMatchMode.hpp → ArtworkRendering.hpp} +17 -17
- package/nitrogen/generated/shared/c++/CarPlayPlayingIndicatorLocation.hpp +76 -0
- package/nitrogen/generated/shared/c++/CardImage.hpp +76 -0
- package/nitrogen/generated/shared/c++/GridTile.hpp +80 -0
- package/nitrogen/generated/shared/c++/IOSOptions.hpp +9 -2
- package/nitrogen/generated/shared/c++/ImageShape.hpp +76 -0
- package/nitrogen/generated/shared/c++/NativeBrowserConfiguration.hpp +6 -6
- package/nitrogen/generated/shared/c++/NitroIOSUpdateOptions.hpp +9 -2
- package/nitrogen/generated/shared/c++/PlayerCapabilities.hpp +6 -9
- package/nitrogen/generated/shared/c++/ResolvedTrack.hpp +30 -38
- package/nitrogen/generated/shared/c++/Section.hpp +106 -0
- package/nitrogen/generated/shared/c++/SectionStyle.hpp +126 -0
- package/nitrogen/generated/shared/c++/StyleDisplay.hpp +76 -0
- package/nitrogen/generated/shared/c++/Track.hpp +15 -31
- package/nitrogen/generated/shared/c++/TrackStyle.hpp +73 -34
- package/package.json +7 -2
- package/src/AudioBrowser.ts +1 -0
- package/src/features/browser-config.test.ts +21 -6
- package/src/features/browser-config.ts +11 -8
- package/src/features/browser.test.ts +1 -1
- package/src/features/browser.ts +2 -2
- package/src/features/favorites.ts +13 -10
- package/src/features/hook-wiring.test.ts +63 -15
- package/src/features/playback/controls.ts +4 -2
- package/src/features/playback/progress.ts +2 -1
- package/src/features/playback/rate.ts +8 -1
- package/src/features/playback/state.ts +2 -3
- package/src/features/playback/trackPlaybackTime.ts +1 -1
- package/src/features/player/options.ts +27 -19
- package/src/features/player/setup.test.ts +12 -3
- package/src/features/player/setup.ts +3 -1
- package/src/features/player/validateOptions.ts +2 -0
- package/src/features/queue/activeTrack.ts +14 -3
- package/src/features/queue/queue.ts +11 -4
- package/src/nitro-stub-drift.test.ts +40 -0
- package/src/public-surface.test.ts +40 -0
- package/src/specs/audio-browser.nitro.ts +4 -3
- package/src/style-resolution.test.ts +210 -0
- package/src/types/browser-native.ts +2 -2
- package/src/types/browser-nodes.ts +377 -135
- package/src/types/browser.ts +34 -55
- package/src/utils/LazyNativeEmitter.ts +20 -10
- package/src/utils/NativeUpdatedValue.ts +29 -13
- package/src/utils/getTrackIdentity.ts +20 -0
- package/src/utils/useNativeValueRefreshedBy.ts +38 -0
- package/src/web/NativeAudioBrowser.ts +37 -22
- package/src/web/TrackPlayer/QueueManager.test.ts +29 -0
- package/src/web/TrackPlayer/QueueManager.ts +14 -0
- package/src/web/browser/BrowserManager.ts +176 -95
- package/src/web/browser/FavoriteManager.test.ts +84 -0
- package/src/web/browser/FavoriteManager.ts +28 -23
- package/src/web/browser/assertBrowsePageShape.test.ts +1 -1
- package/src/web/browser/assertBrowsePageShape.ts +5 -3
- package/src/web/browser/classifyTrackNavigation.test.ts +10 -8
- package/src/web/browser/classifyTrackNavigation.ts +9 -9
- package/src/web/browser/parseSearchResponse.test.ts +8 -2
- package/src/web/browser/sections.test.ts +91 -0
- package/src/web/browser/sections.ts +72 -0
- package/src/web/player/NowPlayingManager.ts +4 -3
- package/src/web/util/BrowserPathHelper.test.ts +52 -0
- package/src/web/util/BrowserPathHelper.ts +61 -13
- package/website/guide/android-auto.md +114 -0
- package/website/guide/android-certificates.md +409 -0
- package/website/guide/artwork.md +255 -0
- package/website/guide/audio-output.md +135 -0
- package/website/guide/automotive.md +86 -0
- package/website/guide/basic-usage.md +151 -0
- package/website/guide/battery.md +115 -0
- package/website/guide/browser.md +581 -0
- package/website/guide/carplay.md +620 -0
- package/website/guide/configuration.md +173 -0
- package/website/guide/equalizer.md +231 -0
- package/website/guide/errors.md +310 -0
- package/website/guide/favorites.md +154 -0
- package/website/guide/gate.md +143 -0
- package/website/guide/getting-started.md +46 -0
- package/website/guide/hooks.md +238 -0
- package/website/guide/live-streams.md +125 -0
- package/website/guide/metadata.md +239 -0
- package/website/guide/migrating-from-track-player.md +244 -0
- package/website/guide/native-callback-fetch.md +127 -0
- package/website/guide/network.md +86 -0
- package/website/guide/now-playing.md +175 -0
- package/website/guide/playback.md +328 -0
- package/website/guide/queue.md +300 -0
- package/website/guide/remote-controls.md +256 -0
- package/website/guide/search.md +255 -0
- package/website/guide/sleep-timer.md +268 -0
- package/website/guide/track.md +246 -0
- package/ios/CarPlay/ImageRowItem+CarPlay.swift +0 -19
- package/nitrogen/generated/android/c++/JFavoriteConfig.hpp +0 -58
- package/nitrogen/generated/android/c++/JImageRowItem.hpp +0 -105
- package/nitrogen/generated/android/c++/JVariant_Boolean_FavoriteConfig.cpp +0 -26
- package/nitrogen/generated/android/c++/JVariant_Boolean_FavoriteConfig.hpp +0 -71
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ImageRowItem.kt +0 -68
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_Boolean_FavoriteConfig.kt +0 -53
- package/nitrogen/generated/ios/swift/FavoriteConfig.swift +0 -29
- package/nitrogen/generated/ios/swift/FavoritesMatchMode.swift +0 -40
- package/nitrogen/generated/ios/swift/ImageRowItem.swift +0 -195
- package/nitrogen/generated/ios/swift/Variant_Bool_FavoriteConfig.swift +0 -18
- package/nitrogen/generated/shared/c++/FavoriteConfig.hpp +0 -84
- package/nitrogen/generated/shared/c++/ImageRowItem.hpp +0 -129
|
@@ -44,26 +44,29 @@ function toggleActiveTrackFavorited() {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
/**
|
|
47
|
-
* Sets the list of favorited track
|
|
47
|
+
* Sets the list of favorited track identifiers.
|
|
48
48
|
*
|
|
49
49
|
* This syncs your app's favorites with the native favorites cache, enabling
|
|
50
50
|
* the heart button in media controllers (notification, Android Auto, CarPlay)
|
|
51
51
|
* to show the correct state.
|
|
52
52
|
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
53
|
+
* Each identifier is matched **exactly** against a track's *identity* — its
|
|
54
|
+
* `id` when set, falling back to `src`. Store favorites as the same stable
|
|
55
|
+
* identifier you put in `Track.id` (or as the full `src` for id-less tracks).
|
|
56
56
|
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
57
|
+
* A track whose response already carries `favorited` keeps that value on
|
|
58
|
+
* display surfaces — a caller-set flag wins over cache hydration. The cache
|
|
59
|
+
* itself is written only by this call and by heart toggles
|
|
60
|
+
* (`setActiveTrackFavorited()` / media-controller taps), so you only need to
|
|
61
|
+
* call this on app launch — and again whenever the collection changes outside
|
|
62
|
+
* the player (a sync from another device, say).
|
|
60
63
|
*
|
|
61
|
-
* @param favorites - Array of favorited track `src`
|
|
64
|
+
* @param favorites - Array of favorited track identities (`id`, or `src` for id-less tracks)
|
|
62
65
|
*
|
|
63
66
|
* @example
|
|
64
67
|
* ```ts
|
|
65
|
-
* const
|
|
66
|
-
* setFavorites(
|
|
68
|
+
* const favoriteIds = await loadFavoritesFromStorage()
|
|
69
|
+
* setFavorites(favoriteIds)
|
|
67
70
|
* ```
|
|
68
71
|
*/
|
|
69
72
|
function setFavorites(favorites) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_native","require","_NativeUpdatedValue","setActiveTrackFavorited","favorited","nativeBrowser","toggleActiveTrackFavorited","setFavorites","favorites","onFavoriteChanged","exports","NativeUpdatedValue","emitterize","cb"],"sourceRoot":"../../../src","sources":["features/favorites.ts"],"mappings":";;;;;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,uBAAuBA,CAACC,SAAkB,EAAQ;EAChEC,qBAAa,CAACF,uBAAuB,CAACC,SAAS,CAAC;AAClD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,0BAA0BA,CAAA,EAAS;EACjDD,qBAAa,CAACC,0BAA0B,CAAC,CAAC;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,YAAYA,CAACC,SAAmB,EAAQ;EACtDH,qBAAa,CAACE,YAAY,CAACC,SAAS,CAAC;AACvC;;AAEA;;AAEA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAC5BE,sCAAkB,CAACC,UAAU,CAC1BC,EAAE,IAAMR,qBAAa,CAACI,iBAAiB,GAAGI,EAC7C,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_native","require","_NativeUpdatedValue","setActiveTrackFavorited","favorited","nativeBrowser","toggleActiveTrackFavorited","setFavorites","favorites","onFavoriteChanged","exports","NativeUpdatedValue","emitterize","cb"],"sourceRoot":"../../../src","sources":["features/favorites.ts"],"mappings":";;;;;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,uBAAuBA,CAACC,SAAkB,EAAQ;EAChEC,qBAAa,CAACF,uBAAuB,CAACC,SAAS,CAAC;AAClD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,0BAA0BA,CAAA,EAAS;EACjDD,qBAAa,CAACC,0BAA0B,CAAC,CAAC;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,YAAYA,CAACC,SAAmB,EAAQ;EACtDH,qBAAa,CAACE,YAAY,CAACC,SAAS,CAAC;AACvC;;AAEA;;AAEA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAC5BE,sCAAkB,CAACC,UAAU,CAC1BC,EAAE,IAAMR,qBAAa,CAACI,iBAAiB,GAAGI,EAC7C,CAAC","ignoreList":[]}
|
|
@@ -71,8 +71,10 @@ function seekTo(position) {
|
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
/**
|
|
74
|
-
* Jump to the live edge of the current track
|
|
75
|
-
* live
|
|
74
|
+
* Jump to the live edge of the current track; no-op unless the track
|
|
75
|
+
* declares `live: true`. A stream with a seekable live window (HLS) seeks
|
|
76
|
+
* to the window's edge; a non-seekable stream (e.g. ICY radio) reconnects
|
|
77
|
+
* to rejoin live — an expired URL re-resolves through `media.resolve`.
|
|
76
78
|
*/
|
|
77
79
|
function seekToLiveEdge() {
|
|
78
80
|
_native.nativeBrowser.seekToLiveEdge();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_native","require","reset","nativeBrowser","play","pause","togglePlayback","stop","retry","seekTo","position","seekToLiveEdge","seekBy","offset"],"sourceRoot":"../../../../src","sources":["features/playback/controls.ts"],"mappings":";;;;;;;;;;;;;;AAEA,IAAAA,OAAA,GAAAC,OAAA;AAFA;;AAIA;AACA;AACA;AACO,SAASC,KAAKA,CAAA,EAAS;EAC5BC,qBAAa,CAACD,KAAK,CAAC,CAAC;AACvB;;AAEA;AACA;AACA;AACO,SAASE,IAAIA,CAAA,EAAS;EAC3BD,qBAAa,CAACC,IAAI,CAAC,CAAC;AACtB;;AAEA;AACA;AACA;AACO,SAASC,KAAKA,CAAA,EAAS;EAC5BF,qBAAa,CAACE,KAAK,CAAC,CAAC;AACvB;;AAEA;AACA;AACA;AACO,SAASC,cAAcA,CAAA,EAAS;EACrCH,qBAAa,CAACG,cAAc,CAAC,CAAC;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,IAAIA,CAAA,EAAS;EAC3BJ,qBAAa,CAACI,IAAI,CAAC,CAAC;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,KAAKA,CAAA,EAAS;EAC5BL,qBAAa,CAACK,KAAK,CAAC,CAAC;AACvB;;AAEA;AACA;AACA;AACA;AACO,SAASC,MAAMA,CAACC,QAAgB,EAAQ;EAC7CP,qBAAa,CAACM,MAAM,CAACC,QAAQ,CAAC;AAChC;;AAEA;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAAA,EAAS;EACrCR,qBAAa,CAACQ,cAAc,CAAC,CAAC;AAChC;;AAEA;AACA;AACA;AACA;AACO,SAASC,MAAMA,CAACC,MAAc,EAAQ;EAC3CV,qBAAa,CAACS,MAAM,CAACC,MAAM,CAAC;AAC9B","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_native","require","reset","nativeBrowser","play","pause","togglePlayback","stop","retry","seekTo","position","seekToLiveEdge","seekBy","offset"],"sourceRoot":"../../../../src","sources":["features/playback/controls.ts"],"mappings":";;;;;;;;;;;;;;AAEA,IAAAA,OAAA,GAAAC,OAAA;AAFA;;AAIA;AACA;AACA;AACO,SAASC,KAAKA,CAAA,EAAS;EAC5BC,qBAAa,CAACD,KAAK,CAAC,CAAC;AACvB;;AAEA;AACA;AACA;AACO,SAASE,IAAIA,CAAA,EAAS;EAC3BD,qBAAa,CAACC,IAAI,CAAC,CAAC;AACtB;;AAEA;AACA;AACA;AACO,SAASC,KAAKA,CAAA,EAAS;EAC5BF,qBAAa,CAACE,KAAK,CAAC,CAAC;AACvB;;AAEA;AACA;AACA;AACO,SAASC,cAAcA,CAAA,EAAS;EACrCH,qBAAa,CAACG,cAAc,CAAC,CAAC;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,IAAIA,CAAA,EAAS;EAC3BJ,qBAAa,CAACI,IAAI,CAAC,CAAC;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,KAAKA,CAAA,EAAS;EAC5BL,qBAAa,CAACK,KAAK,CAAC,CAAC;AACvB;;AAEA;AACA;AACA;AACA;AACO,SAASC,MAAMA,CAACC,QAAgB,EAAQ;EAC7CP,qBAAa,CAACM,MAAM,CAACC,QAAQ,CAAC;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAAA,EAAS;EACrCR,qBAAa,CAACQ,cAAc,CAAC,CAAC;AAChC;;AAEA;AACA;AACA;AACA;AACO,SAASC,MAAMA,CAACC,MAAc,EAAQ;EAC3CV,qBAAa,CAACS,MAAM,CAACC,MAAM,CAAC;AAC9B","ignoreList":[]}
|
|
@@ -101,7 +101,8 @@ function usePolledProgress(updateInterval = 1000) {
|
|
|
101
101
|
poll();
|
|
102
102
|
};
|
|
103
103
|
const stop = () => {
|
|
104
|
-
clearTimeout(
|
|
104
|
+
// Guarded: React Native types clearTimeout(handle: number) — no undefined.
|
|
105
|
+
if (timer !== undefined) clearTimeout(timer);
|
|
105
106
|
timer = undefined;
|
|
106
107
|
unsubscribeState?.();
|
|
107
108
|
unsubscribeState = undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","_native","_NativeUpdatedValue","_useNativeUpdatedValue","_state","getProgress","nativeBrowser","onProgressUpdated","exports","NativeUpdatedValue","emitterize","cb","onPlaybackProgressUpdated","useProgress","useNativeUpdatedValue","usePolledProgress","updateInterval","state","setState","useState","position","duration","buffered","useEffect","timer","unsubscribeState","update","currentState","poll","setTimeout","start","undefined","onPlaybackChanged","addListener","stop","clearTimeout","appStateSub","AppState","addEventListener","next","remove"],"sourceRoot":"../../../../src","sources":["features/playback/progress.ts"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,mBAAA,GAAAH,OAAA;AACA,IAAAI,sBAAA,GAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAL,OAAA;AAEA;;AAiBA;AACA;AACA;;AAMA;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASM,WAAWA,CAAA,EAAa;EACtC,OAAOC,qBAAa,CAACD,WAAW,CAAC,CAAC;AACpC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAME,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAC5BE,sCAAkB,CAACC,UAAU,CAC1BC,EAAE,IAAML,qBAAa,CAACM,yBAAyB,GAAGD,EACrD,CAAC;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,WAAWA,CAAA,EAAa;EACtC,OAAO,IAAAC,4CAAqB,EAACT,WAAW,EAAEE,iBAAiB,CAAC;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASQ,iBAAiBA,CAACC,cAAc,GAAG,IAAI,EAAY;EACjE,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAC,eAAQ,EAAW;IAC3CC,QAAQ,EAAE,CAAC;IACXC,QAAQ,EAAE,CAAC;IACXC,QAAQ,EAAE;EACZ,CAAC,CAAC;EAEF,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAIC,KAAgD;IACpD,IAAIC,gBAA0C;IAE9C,MAAMC,MAAM,GAAGA,CAAA,KAAM;MACnB,IAAI;QACF,MAAM;UAAEN,QAAQ;UAAEC,QAAQ;UAAEC;QAAS,CAAC,GAAGjB,WAAW,CAAC,CAAC;QAEtDa,QAAQ,CAAES,YAAY,IACpBP,QAAQ,KAAKO,YAAY,CAACP,QAAQ,IAClCC,QAAQ,KAAKM,YAAY,CAACN,QAAQ,IAClCC,QAAQ,KAAKK,YAAY,CAACL,QAAQ,GAC9BK,YAAY,GACZ;UAAEP,QAAQ;UAAEC,QAAQ;UAAEC;QAAS,CACrC,CAAC;MACH,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ,CAAC;IAED,MAAMM,IAAI,GAAGA,CAAA,KAAM;MACjBF,MAAM,CAAC,CAAC;MACRF,KAAK,GAAGK,UAAU,CAACD,IAAI,EAAEZ,cAAc,CAAC;IAC1C,CAAC;;IAED;IACA;IACA;IACA,MAAMc,KAAK,GAAGA,CAAA,KAAM;MAClB,IAAIN,KAAK,KAAKO,SAAS,EAAE;MACzBN,gBAAgB,GAAGO,wBAAiB,CAACC,WAAW,CAACP,MAAM,CAAC;MACxDE,IAAI,CAAC,CAAC;IACR,CAAC;IAED,MAAMM,IAAI,GAAGA,CAAA,KAAM;
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_native","_NativeUpdatedValue","_useNativeUpdatedValue","_state","getProgress","nativeBrowser","onProgressUpdated","exports","NativeUpdatedValue","emitterize","cb","onPlaybackProgressUpdated","useProgress","useNativeUpdatedValue","usePolledProgress","updateInterval","state","setState","useState","position","duration","buffered","useEffect","timer","unsubscribeState","update","currentState","poll","setTimeout","start","undefined","onPlaybackChanged","addListener","stop","clearTimeout","appStateSub","AppState","addEventListener","next","remove"],"sourceRoot":"../../../../src","sources":["features/playback/progress.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -20,8 +20,15 @@ function getRate() {
|
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* Sets the playback rate.
|
|
23
|
+
*
|
|
24
|
+
* The rate is a speed multiplier, not a transport control — it is independent
|
|
25
|
+
* of play/pause, and setting it while paused never starts playback. Use
|
|
26
|
+
* {@link play} / {@link pause} for that.
|
|
27
|
+
*
|
|
23
28
|
* @param rate - The playback rate to change to, where 0.5 would be half speed,
|
|
24
|
-
* 1 would be regular speed, 2 would be double speed etc.
|
|
29
|
+
* 1 would be regular speed, 2 would be double speed etc. Must be greater than
|
|
30
|
+
* zero; platforms disagree on what a non-positive rate does (iOS ignores it,
|
|
31
|
+
* Android throws, web stalls the element), so treat it as unsupported.
|
|
25
32
|
*/
|
|
26
33
|
function setRate(rate) {
|
|
27
34
|
_native.nativeBrowser.setRate(rate);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_native","require","getRate","nativeBrowser","setRate","rate"],"sourceRoot":"../../../../src","sources":["features/playback/rate.ts"],"mappings":";;;;;;;AAEA,IAAAA,OAAA,GAAAC,OAAA;AAFA;;AAIA;AACA;AACA;AACA;AACO,SAASC,OAAOA,CAAA,EAAW;EAChC,OAAOC,qBAAa,CAACD,OAAO,CAAC,CAAC;AAChC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASE,OAAOA,CAACC,IAAY,EAAQ;EAC1CF,qBAAa,CAACC,OAAO,CAACC,IAAI,CAAC;AAC7B","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_native","require","getRate","nativeBrowser","setRate","rate"],"sourceRoot":"../../../../src","sources":["features/playback/rate.ts"],"mappings":";;;;;;;AAEA,IAAAA,OAAA,GAAAC,OAAA;AAFA;;AAIA;AACA;AACA;AACA;AACO,SAASC,OAAOA,CAAA,EAAW;EAChC,OAAOC,qBAAa,CAACD,OAAO,CAAC,CAAC;AAChC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,OAAOA,CAACC,IAAY,EAAQ;EAC1CF,qBAAa,CAACC,OAAO,CAACC,IAAI,CAAC;AAC7B","ignoreList":[]}
|
|
@@ -24,9 +24,8 @@ var _useNativeUpdatedValue = require("../../utils/useNativeUpdatedValue");
|
|
|
24
24
|
* - `'buffering'`: Indicates that the player is currently loading more data
|
|
25
25
|
* before it can continue playing or is ready to start playing.
|
|
26
26
|
* - `'error'`: Indicates that playback of the current item failed. Call
|
|
27
|
-
* `
|
|
28
|
-
*
|
|
29
|
-
* the item again.
|
|
27
|
+
* `getPlaybackError()` (or subscribe via `usePlaybackError()`) for the
|
|
28
|
+
* error details. Call `retry()` or `play()` to try to play the item again.
|
|
30
29
|
* - `'ended'`: Indicates that playback stopped due to the end of the queue
|
|
31
30
|
* being reached.
|
|
32
31
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_native","require","_NativeUpdatedValue","_useNativeUpdatedValue","getPlayback","nativeBrowser","onPlaybackChanged","exports","NativeUpdatedValue","emitterize","cb","usePlayback","useNativeUpdatedValue"],"sourceRoot":"../../../../src","sources":["features/playback/state.ts"],"mappings":";;;;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
|
|
1
|
+
{"version":3,"names":["_native","require","_NativeUpdatedValue","_useNativeUpdatedValue","getPlayback","nativeBrowser","onPlaybackChanged","exports","NativeUpdatedValue","emitterize","cb","usePlayback","useNativeUpdatedValue"],"sourceRoot":"../../../../src","sources":["features/playback/state.ts"],"mappings":";;;;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAiBA;;AAEA;AACA;AACA;AACA;AACO,SAASG,WAAWA,CAAA,EAAa;EACtC,OAAOC,qBAAa,CAACD,WAAW,CAAC,CAAC;AACpC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAME,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAGE,sCAAkB,CAACC,UAAU,CAC3DC,EAAE,IAAML,qBAAa,CAACC,iBAAiB,GAAGI,EAC7C,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACO,SAASC,WAAWA,CAAA,EAAa;EACtC,OAAO,IAAAC,4CAAqB,EAACR,WAAW,EAAEE,iBAAiB,CAAC;AAC9D","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_native","require","_NativeUpdatedValue","_useNativeUpdatedValue","_validateOptions","updateOptions","options","validateIOSUpdateOptions","ios","nativeBrowser","getOptions","onOptionsChanged","exports","NativeUpdatedValue","emitterize","cb","useOptions","useNativeUpdatedValue"],"sourceRoot":"../../../../src","sources":["features/player/options.ts"],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"names":["_native","require","_NativeUpdatedValue","_useNativeUpdatedValue","_validateOptions","updateOptions","options","validateIOSUpdateOptions","ios","nativeBrowser","getOptions","onOptionsChanged","exports","NativeUpdatedValue","emitterize","cb","useOptions","useNativeUpdatedValue"],"sourceRoot":"../../../../src","sources":["features/player/options.ts"],"mappings":";;;;;;;;;AAIA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AACA,IAAAG,gBAAA,GAAAH,OAAA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAuFA;AACA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA4CA;AACA;AACA;AACA;;AAmFA;AACA;AACA;AACA;;AAOA;AACA;AACA;AACA;;AAoCA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAuDA;AACA;AACA;AACA;;AAwCA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASI,aAAaA,CAACC,OAAsB,EAAQ;EAC1D,IAAAC,yCAAwB,EAACD,OAAO,CAACE,GAAG,CAAC;EACrCC,qBAAa,CAACJ,aAAa,CAACC,OAAO,CAAC;AACtC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASI,UAAUA,CAAA,EAAY;EACpC,OAAOD,qBAAa,CAACC,UAAU,CAAC,CAAC;AACnC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAMC,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,GAAGE,sCAAkB,CAACC,UAAU,CAC1DC,EAAE,IAAMN,qBAAa,CAACE,gBAAgB,GAAGI,EAC5C,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACO,SAASC,UAAUA,CAAA,EAAY;EACpC,OAAO,IAAAC,4CAAqB,EAACP,UAAU,EAAEC,gBAAgB,CAAC;AAC5D","ignoreList":[]}
|
|
@@ -365,12 +365,14 @@ async function setupPlayer(options = {}) {
|
|
|
365
365
|
playbackRates,
|
|
366
366
|
carPlayUpNextButton,
|
|
367
367
|
carPlayNowPlayingButtons,
|
|
368
|
+
carPlayPlayingIndicatorLocation,
|
|
368
369
|
...iosSetup
|
|
369
370
|
} = ios;
|
|
370
371
|
const iosUpdate = definedFields({
|
|
371
372
|
playbackRates,
|
|
372
373
|
carPlayUpNextButton,
|
|
373
|
-
carPlayNowPlayingButtons
|
|
374
|
+
carPlayNowPlayingButtons,
|
|
375
|
+
carPlayPlayingIndicatorLocation
|
|
374
376
|
});
|
|
375
377
|
(0, _validateOptions.validateIOSUpdateOptions)(iosUpdate);
|
|
376
378
|
const updates = definedFields({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_native","require","_validateOptions","resolveNowPlaying","value","autoUpdateNowPlayingMetadata","nowPlayingMetadataFormatter","wrapNowPlayingFormatter","undefined","formatter","params","definedFields","obj","out","key","nonEmpty","Object","keys","length","setupPlayer","options","nowPlaying","capabilities","forwardJumpInterval","backwardJumpInterval","progressUpdateEventInterval","android","ios","nativeSetup","appKilledPlaybackBehavior","skipSilence","remoteButtonLayout","androidSetup","playbackRates","carPlayUpNextButton","carPlayNowPlayingButtons","iosSetup","iosUpdate","validateIOSUpdateOptions","updates","nativeBrowser"],"sourceRoot":"../../../../src","sources":["features/player/setup.ts"],"mappings":";;;;;;AAYA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AAbA;;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAyBA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA2BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;;AA2GA;;AA4CA;AACA;AACA;AACA;AACA;;AAgCA;;AAEA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;;AA0EA;;AAMA;AACA,SAASE,iBAAiBA,CACxBC,KAAuC,EACjB;EACtB,IAAI,OAAOA,KAAK,KAAK,UAAU,EAAE;IAC/B,OAAO;MACLC,4BAA4B,EAAE,IAAI;MAClCC,2BAA2B,EAAEC,uBAAuB,CAACH,KAAK;IAC5D,CAAC;EACH;EACA;EACA,OAAO;IACLC,4BAA4B,EAAED,KAAK,IAAI,IAAI;IAC3CE,2BAA2B,EAAEE;EAC/B,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASD,uBAAuBA,CAC9BE,SAAmC,EACT;EAC1B,OAAQC,MAAM,IAAKD,SAAS,CAACC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,aAAaA,CAAmBC,GAAM,EAAc;EAC3D,MAAMC,GAAe,GAAG,CAAC,CAAC;EAC1B,KAAK,MAAMC,GAAG,IAAIF,GAAG,EAAE;IACrB,IAAIA,GAAG,CAACE,GAAG,CAAC,KAAKN,SAAS,EAAEK,GAAG,CAACC,GAAG,CAAC,GAAGF,GAAG,CAACE,GAAG,CAAC;EACjD;EACA,OAAOD,GAAG;AACZ;;AAEA;AACA,SAASE,QAAQA,CACfD,GAAM,EACNV,KAAQ,EACU;EAClB,OAAOY,MAAM,CAACC,IAAI,CAACb,KAAK,CAAC,CAACc,MAAM,GAAG,CAAC,GAC/B;IAAE,CAACJ,GAAG,GAAGV;EAAM,CAAC,GACjB,CAAC,CAAC;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAee,WAAWA,CAC/BC,OAA2B,GAAG,CAAC,CAAC,EACjB;EACf,MAAM;IACJC,UAAU;IACVC,YAAY;IACZC,mBAAmB;IACnBC,oBAAoB;IACpBC,2BAA2B;IAC3BC,OAAO,GAAG,CAAC,CAAC;IACZC,GAAG,GAAG,CAAC,CAAC;IACR,GAAGC;EACL,CAAC,GAAGR,OAAO;;EAEX;EACA;EACA;EACA,MAAM;IACJS,yBAAyB;IACzBC,WAAW;IACXC,kBAAkB;IAClB,GAAGC;EACL,CAAC,GAAGN,OAAO;EACX,MAAM;IACJO,aAAa;IACbC,mBAAmB;IACnBC,wBAAwB;
|
|
1
|
+
{"version":3,"names":["_native","require","_validateOptions","resolveNowPlaying","value","autoUpdateNowPlayingMetadata","nowPlayingMetadataFormatter","wrapNowPlayingFormatter","undefined","formatter","params","definedFields","obj","out","key","nonEmpty","Object","keys","length","setupPlayer","options","nowPlaying","capabilities","forwardJumpInterval","backwardJumpInterval","progressUpdateEventInterval","android","ios","nativeSetup","appKilledPlaybackBehavior","skipSilence","remoteButtonLayout","androidSetup","playbackRates","carPlayUpNextButton","carPlayNowPlayingButtons","carPlayPlayingIndicatorLocation","iosSetup","iosUpdate","validateIOSUpdateOptions","updates","nativeBrowser"],"sourceRoot":"../../../../src","sources":["features/player/setup.ts"],"mappings":";;;;;;AAYA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AAbA;;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAyBA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA2BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;;AA2GA;;AA4CA;AACA;AACA;AACA;AACA;;AAgCA;;AAEA;AACA;AACA;AACA;;AAMA;AACA;AA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","ignoreList":[]}
|
|
@@ -11,6 +11,8 @@ const MAX_CARPLAY_NOW_PLAYING_BUTTONS = 5;
|
|
|
11
11
|
* Shared by `updateOptions` and `setupPlayer` (both can carry `ios` options).
|
|
12
12
|
* Kept out of `options.ts`, which the barrel re-exports — see
|
|
13
13
|
* public-surface.test.ts.
|
|
14
|
+
*
|
|
15
|
+
* @internal
|
|
14
16
|
*/
|
|
15
17
|
function validateIOSUpdateOptions(ios) {
|
|
16
18
|
const buttons = ios?.carPlayNowPlayingButtons;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MAX_CARPLAY_NOW_PLAYING_BUTTONS","validateIOSUpdateOptions","ios","buttons","carPlayNowPlayingButtons","length","console","warn"],"sourceRoot":"../../../../src","sources":["features/player/validateOptions.ts"],"mappings":";;;;;;AAEA,MAAMA,+BAA+B,GAAG,CAAC;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,wBAAwBA,CAACC,GAAsB,EAAQ;EACrE,MAAMC,OAAO,GAAGD,GAAG,EAAEE,wBAAwB;EAC7C,IAAID,OAAO,IAAIA,OAAO,CAACE,MAAM,GAAGL,+BAA+B,EAAE;IAC/DM,OAAO,CAACC,IAAI,CACV,gCAAgCJ,OAAO,CAACE,MAAM,uBAAuB,GACnE,6CAA6CL,+BAA+B,GAChF,CAAC;EACH;AACF","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["MAX_CARPLAY_NOW_PLAYING_BUTTONS","validateIOSUpdateOptions","ios","buttons","carPlayNowPlayingButtons","length","console","warn"],"sourceRoot":"../../../../src","sources":["features/player/validateOptions.ts"],"mappings":";;;;;;AAEA,MAAMA,+BAA+B,GAAG,CAAC;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,wBAAwBA,CAACC,GAAsB,EAAQ;EACrE,MAAMC,OAAO,GAAGD,GAAG,EAAEE,wBAAwB;EAC7C,IAAID,OAAO,IAAIA,OAAO,CAACE,MAAM,GAAGL,+BAA+B,EAAE;IAC/DM,OAAO,CAACC,IAAI,CACV,gCAAgCJ,OAAO,CAACE,MAAM,uBAAuB,GACnE,6CAA6CL,+BAA+B,GAChF,CAAC;EACH;AACF","ignoreList":[]}
|
|
@@ -9,7 +9,8 @@ exports.onActiveTrackChanged = void 0;
|
|
|
9
9
|
exports.useActiveTrack = useActiveTrack;
|
|
10
10
|
var _native = require("../../native");
|
|
11
11
|
var _NativeUpdatedValue = require("../../utils/NativeUpdatedValue");
|
|
12
|
-
var
|
|
12
|
+
var _useNativeValueRefreshedBy = require("../../utils/useNativeValueRefreshedBy");
|
|
13
|
+
var _favorites = require("../favorites");
|
|
13
14
|
/**
|
|
14
15
|
* Event data for when the active track changes.
|
|
15
16
|
*/
|
|
@@ -35,6 +36,12 @@ function getActiveTrackIndex() {
|
|
|
35
36
|
|
|
36
37
|
/**
|
|
37
38
|
* Subscribes to active track change events.
|
|
39
|
+
*
|
|
40
|
+
* Fires on **transitions only** — selection, queue advance, skip. In-place
|
|
41
|
+
* metadata mutations of the active track (a favorite toggle) emit
|
|
42
|
+
* {@link onFavoriteChanged} instead; {@link useActiveTrack} subscribes to
|
|
43
|
+
* both, so UI bound through the hook still re-renders on a heart toggle.
|
|
44
|
+
*
|
|
38
45
|
* @param callback - Called when the active track changes
|
|
39
46
|
* @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
|
|
40
47
|
*/
|
|
@@ -42,11 +49,15 @@ const onActiveTrackChanged = exports.onActiveTrackChanged = _NativeUpdatedValue.
|
|
|
42
49
|
|
|
43
50
|
// MARK: - Hooks
|
|
44
51
|
|
|
52
|
+
// Module-level so the hook's subscription identity is stable across renders.
|
|
53
|
+
const activeTrackInvalidators = [onActiveTrackChanged, _favorites.onFavoriteChanged];
|
|
54
|
+
|
|
45
55
|
/**
|
|
46
|
-
* Hook that returns the current active track
|
|
56
|
+
* Hook that returns the current active track, updating on transitions AND on
|
|
57
|
+
* in-place mutations of the active track (favorite toggles).
|
|
47
58
|
* @returns The current active track or undefined
|
|
48
59
|
*/
|
|
49
60
|
function useActiveTrack() {
|
|
50
|
-
return (0,
|
|
61
|
+
return (0, _useNativeValueRefreshedBy.useNativeValueRefreshedBy)(getActiveTrack, activeTrackInvalidators);
|
|
51
62
|
}
|
|
52
63
|
//# sourceMappingURL=activeTrack.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_native","require","_NativeUpdatedValue","
|
|
1
|
+
{"version":3,"names":["_native","require","_NativeUpdatedValue","_useNativeValueRefreshedBy","_favorites","getActiveTrack","nativeBrowser","undefined","getActiveTrackIndex","onActiveTrackChanged","exports","NativeUpdatedValue","emitterize","cb","onPlaybackActiveTrackChanged","activeTrackInvalidators","onFavoriteChanged","useActiveTrack","useNativeValueRefreshedBy"],"sourceRoot":"../../../../src","sources":["features/queue/activeTrack.ts"],"mappings":";;;;;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,0BAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAEA;AACA;AACA;;AAcA;;AAEA;AACA;AACA;AACO,SAASI,cAAcA,CAAA,EAAsB;EAClD,OAAOC,qBAAa,CAACD,cAAc,CAAC,CAAC,IAAIE,SAAS;AACpD;;AAEA;AACA;AACA;AACA;AACO,SAASC,mBAAmBA,CAAA,EAAuB;EACxD,OAAOF,qBAAa,CAACE,mBAAmB,CAAC,CAAC,IAAID,SAAS;AACzD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAME,oBAAoB,GAAAC,OAAA,CAAAD,oBAAA,GAC/BE,sCAAkB,CAACC,UAAU,CAC1BC,EAAE,IAAMP,qBAAa,CAACQ,4BAA4B,GAAGD,EACxD,CAAC;;AAEH;;AAEA;AACA,MAAME,uBAAuB,GAAG,CAACN,oBAAoB,EAAEO,4BAAiB,CAAC;;AAEzE;AACA;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAAA,EAAsB;EAClD,OAAO,IAAAC,oDAAyB,EAACb,cAAc,EAAEU,uBAAuB,CAAC;AAC3E","ignoreList":[]}
|
|
@@ -18,7 +18,8 @@ exports.skipToPrevious = skipToPrevious;
|
|
|
18
18
|
exports.useQueue = useQueue;
|
|
19
19
|
var _native = require("../../native");
|
|
20
20
|
var _NativeUpdatedValue = require("../../utils/NativeUpdatedValue");
|
|
21
|
-
var
|
|
21
|
+
var _useNativeValueRefreshedBy = require("../../utils/useNativeValueRefreshedBy");
|
|
22
|
+
var _favorites = require("../favorites");
|
|
22
23
|
// MARK: - Types
|
|
23
24
|
|
|
24
25
|
/**
|
|
@@ -166,7 +167,9 @@ const onQueueEnded = exports.onQueueEnded = _NativeUpdatedValue.NativeUpdatedVal
|
|
|
166
167
|
|
|
167
168
|
/**
|
|
168
169
|
* Subscribes to queue change events.
|
|
169
|
-
* Called when tracks are added, removed, reordered
|
|
170
|
+
* Called when tracks are added, removed, or reordered. An in-place mutation of
|
|
171
|
+
* a queued track's metadata (a favorite toggle) emits `onFavoriteChanged`
|
|
172
|
+
* instead; {@link useQueue} subscribes to both.
|
|
170
173
|
* @param callback - Called with the updated queue
|
|
171
174
|
* @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
|
|
172
175
|
*/
|
|
@@ -174,11 +177,15 @@ const onQueueChanged = exports.onQueueChanged = _NativeUpdatedValue.NativeUpdate
|
|
|
174
177
|
|
|
175
178
|
// MARK: - Hooks
|
|
176
179
|
|
|
180
|
+
// Module-level so the hook's subscription identity is stable across renders.
|
|
181
|
+
const queueInvalidators = [onQueueChanged, _favorites.onFavoriteChanged];
|
|
182
|
+
|
|
177
183
|
/**
|
|
178
|
-
* Hook that returns the current queue
|
|
184
|
+
* Hook that returns the current queue, updating on queue changes AND on
|
|
185
|
+
* in-place mutations of queued tracks (favorite toggles).
|
|
179
186
|
* @returns The current queue
|
|
180
187
|
*/
|
|
181
188
|
function useQueue() {
|
|
182
|
-
return (0,
|
|
189
|
+
return (0, _useNativeValueRefreshedBy.useNativeValueRefreshedBy)(getQueue, queueInvalidators);
|
|
183
190
|
}
|
|
184
191
|
//# sourceMappingURL=queue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_native","require","_NativeUpdatedValue","
|
|
1
|
+
{"version":3,"names":["_native","require","_NativeUpdatedValue","_useNativeValueRefreshedBy","_favorites","add","tracks","insertBeforeIndex","addTracks","Array","isArray","length","nativeBrowser","load","track","move","fromIndex","toIndex","remove","indexOrIndexes","removeUpcomingTracks","skip","index","initialPosition","skipToNext","skipToPrevious","setQueue","startIndex","startPosition","getTrack","getQueue","onQueueEnded","exports","NativeUpdatedValue","emitterize","cb","onPlaybackQueueEnded","onQueueChanged","onPlaybackQueueChanged","queueInvalidators","onFavoriteChanged","useQueue","useNativeValueRefreshedBy"],"sourceRoot":"../../../../src","sources":["features/queue/queue.ts"],"mappings":";;;;;;;;;;;;;;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,0BAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAEA;;AAEA;AACA;AACA;;AAQA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEO,SAASI,GAAGA,CAACC,MAAuB,EAAEC,iBAA0B,EAAQ;EAC7E,MAAMC,SAAS,GAAGC,KAAK,CAACC,OAAO,CAACJ,MAAM,CAAC,GAAGA,MAAM,GAAG,CAACA,MAAM,CAAC;EAC3D,IAAIE,SAAS,CAACG,MAAM,GAAG,CAAC,EAAE;IACxBC,qBAAa,CAACP,GAAG,CAACG,SAAS,EAAED,iBAAiB,CAAC;EACjD;AACF;;AAEA;AACA;AACA;AACA;AACO,SAASM,IAAIA,CAACC,KAAY,EAAQ;EACvCF,qBAAa,CAACC,IAAI,CAACC,KAAK,CAAC;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,IAAIA,CAACC,SAAiB,EAAEC,OAAe,EAAQ;EAC7DL,qBAAa,CAACG,IAAI,CAACC,SAAS,EAAEC,OAAO,CAAC;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,SAASC,MAAMA,CAACC,cAAiC,EAAQ;EAC9DP,qBAAa,CAACM,MAAM,CAClBT,KAAK,CAACC,OAAO,CAACS,cAAc,CAAC,GAAGA,cAAc,GAAG,CAACA,cAAc,CAClE,CAAC;AACH;;AAEA;AACA;AACA;AACO,SAASC,oBAAoBA,CAAA,EAAS;EAC3CR,qBAAa,CAACQ,oBAAoB,CAAC,CAAC;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,IAAIA,CAACC,KAAa,EAAEC,eAAwB,EAAQ;EAClEX,qBAAa,CAACS,IAAI,CAACC,KAAK,EAAEC,eAAe,CAAC;AAC5C;;AAEA;AACA;AACA;AACA;AACO,SAASC,UAAUA,CAACD,eAAwB,EAAQ;EACzDX,qBAAa,CAACY,UAAU,CAACD,eAAe,CAAC;AAC3C;;AAEA;AACA;AACA;AACA;AACO,SAASE,cAAcA,CAACF,eAAwB,EAAQ;EAC7DX,qBAAa,CAACa,cAAc,CAACF,eAAe,CAAC;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,QAAQA,CACtBpB,MAAe,EACfqB,UAAmB,EACnBC,aAAsB,EAChB;EACNhB,qBAAa,CAACc,QAAQ,CAACpB,MAAM,EAAEqB,UAAU,EAAEC,aAAa,CAAC;AAC3D;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,QAAQA,CAACP,KAAa,EAAqB;EACzD,OAAOV,qBAAa,CAACiB,QAAQ,CAACP,KAAK,CAAC;AACtC;;AAEA;AACA;AACA;AACO,SAASQ,QAAQA,CAAA,EAAY;EAClC,OAAOlB,qBAAa,CAACkB,QAAQ,CAAC,CAAC;AACjC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAMC,YAAY,GAAAC,OAAA,CAAAD,YAAA,GACvBE,sCAAkB,CAACC,UAAU,CAC1BC,EAAE,IAAMvB,qBAAa,CAACwB,oBAAoB,GAAGD,EAChD,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAME,cAAc,GAAAL,OAAA,CAAAK,cAAA,GAAGJ,sCAAkB,CAACC,UAAU,CACxDC,EAAE,IAAMvB,qBAAa,CAAC0B,sBAAsB,GAAGH,EAClD,CAAC;;AAED;;AAEA;AACA,MAAMI,iBAAiB,GAAG,CAACF,cAAc,EAAEG,4BAAiB,CAAC;;AAE7D;AACA;AACA;AACA;AACA;AACO,SAASC,QAAQA,CAAA,EAAY;EAClC,OAAO,IAAAC,oDAAyB,EAACZ,QAAQ,EAAES,iBAAiB,CAAC;AAC/D","ignoreList":[]}
|
|
@@ -5,25 +5,28 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.LazyNativeEmitter = void 0;
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* The subscription object behind the library's **discrete** events — the
|
|
9
|
+
* remote-control exports (`onRemotePlay`, `onRemoteSeek`, …) and other
|
|
10
|
+
* one-shot signals with no "current value" to cache. Subscribe with
|
|
11
|
+
* {@link addListener}; the returned function unsubscribes. The emitter is
|
|
12
|
+
* not callable itself.
|
|
9
13
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* For critical state changes (playback, progress, etc.), use NativeEmitter instead to ensure
|
|
15
|
-
* no events are missed.
|
|
14
|
+
* "Lazy" is an implementation detail you may notice in timing: the native
|
|
15
|
+
* side only starts delivering the event once the first listener is added.
|
|
16
|
+
* State that always has a current reading uses `NativeUpdatedValue`
|
|
17
|
+
* instead.
|
|
16
18
|
*
|
|
17
19
|
* @example
|
|
18
20
|
* ```typescript
|
|
19
|
-
*
|
|
20
|
-
* (cb) => (nativeBrowser.onRemotePlay = cb)
|
|
21
|
-
* )
|
|
21
|
+
* import { onRemotePlay } from 'react-native-audio-browser'
|
|
22
22
|
*
|
|
23
23
|
* const unsubscribe = onRemotePlay.addListener(() => console.log('play'))
|
|
24
|
+
* // later:
|
|
25
|
+
* unsubscribe()
|
|
24
26
|
* ```
|
|
25
27
|
*/
|
|
26
28
|
class LazyNativeEmitter {
|
|
29
|
+
/** @internal */
|
|
27
30
|
constructor(setter) {
|
|
28
31
|
this.setter = setter;
|
|
29
32
|
}
|
|
@@ -37,6 +40,13 @@ class LazyNativeEmitter {
|
|
|
37
40
|
});
|
|
38
41
|
return listeners;
|
|
39
42
|
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Subscribes to the event.
|
|
46
|
+
*
|
|
47
|
+
* @param callback - Invoked with each event
|
|
48
|
+
* @returns A function that removes the listener
|
|
49
|
+
*/
|
|
40
50
|
addListener(callback) {
|
|
41
51
|
const listeners = this.getListeners();
|
|
42
52
|
listeners.add(callback);
|
|
@@ -49,6 +59,7 @@ class LazyNativeEmitter {
|
|
|
49
59
|
* @param setter - Function that sets the native callback property
|
|
50
60
|
* @returns The emitter instance — subscribe with `addListener`, which returns
|
|
51
61
|
* an unsubscribe function
|
|
62
|
+
* @internal
|
|
52
63
|
*/
|
|
53
64
|
static emitterize(setter) {
|
|
54
65
|
return new LazyNativeEmitter(setter);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["LazyNativeEmitter","constructor","setter","getListeners","listeners","Set","data","listener","addListener","callback","add","delete","emitterize","exports"],"sourceRoot":"../../../src","sources":["utils/LazyNativeEmitter.ts"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,iBAAiB,CAAI;
|
|
1
|
+
{"version":3,"names":["LazyNativeEmitter","constructor","setter","getListeners","listeners","Set","data","listener","addListener","callback","add","delete","emitterize","exports"],"sourceRoot":"../../../src","sources":["utils/LazyNativeEmitter.ts"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,iBAAiB,CAAI;EAIhC;EACAC,WAAWA,CAACC,MAA6C,EAAE;IACzD,IAAI,CAACA,MAAM,GAAGA,MAAM;EACtB;EAEQC,YAAYA,CAAA,EAAqB;IACvC,IAAI,IAAI,CAACC,SAAS,EAAE,OAAO,IAAI,CAACA,SAAS;IACzC,MAAMA,SAAS,GAAI,IAAI,CAACA,SAAS,GAAG,IAAIC,GAAG,CAAC,CAAE;IAC9C,IAAI,CAACH,MAAM,CAAEI,IAAO,IAAK;MACvB,KAAK,MAAMC,QAAQ,IAAIH,SAAS,EAAE;QAChCG,QAAQ,CAACD,IAAI,CAAC;MAChB;IACF,CAAC,CAAC;IACF,OAAOF,SAAS;EAClB;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEI,WAAWA,CAACC,QAAqB,EAAc;IAC7C,MAAML,SAAS,GAAG,IAAI,CAACD,YAAY,CAAC,CAAC;IACrCC,SAAS,CAACM,GAAG,CAACD,QAAQ,CAAC;IACvB,OAAO,MAAML,SAAS,CAACO,MAAM,CAACF,QAAQ,CAAC;EACzC;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAOG,UAAUA,CACfV,MAA6C,EACvB;IACtB,OAAO,IAAIF,iBAAiB,CAACE,MAAM,CAAC;EACtC;AACF;AAACW,OAAA,CAAAb,iBAAA,GAAAA,iBAAA","ignoreList":[]}
|
|
@@ -5,29 +5,39 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.NativeUpdatedValue = void 0;
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* The subscription object behind the library's **state** events — every
|
|
9
|
+
* `on<Thing>Changed`-style export (`onPlaybackChanged`, `onQueueChanged`, …)
|
|
10
|
+
* is one of these. Subscribe with {@link addListener}; the returned function
|
|
11
|
+
* unsubscribes. The emitter is not callable itself.
|
|
9
12
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* For discrete events without a current value (remote controls), use LazyNativeEmitter instead.
|
|
13
|
+
* It tracks a value that always has a *current* reading (playback state,
|
|
14
|
+
* progress, options): {@link lastValue} caches the most recent one so hooks —
|
|
15
|
+
* and you — can read it synchronously without a getter round-trip. Discrete
|
|
16
|
+
* events with no current value (remote-control presses) use
|
|
17
|
+
* `LazyNativeEmitter` instead.
|
|
16
18
|
*
|
|
17
19
|
* @example
|
|
18
20
|
* ```typescript
|
|
19
|
-
*
|
|
20
|
-
* (cb) => (nativeBrowser.onPlaybackChanged = cb)
|
|
21
|
-
* )
|
|
21
|
+
* import { onPlaybackChanged } from 'react-native-audio-browser'
|
|
22
22
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* }
|
|
23
|
+
* const unsubscribe = onPlaybackChanged.addListener((p) => {
|
|
24
|
+
* console.log(p.state)
|
|
25
|
+
* })
|
|
26
|
+
* // later:
|
|
27
|
+
* unsubscribe()
|
|
26
28
|
* ```
|
|
27
29
|
*/
|
|
28
30
|
class NativeUpdatedValue {
|
|
29
31
|
listeners = new Set();
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The most recent value delivered by native, or `undefined` before the
|
|
35
|
+
* first update. Subscription starts at module load, so this is safe to
|
|
36
|
+
* read synchronously at any time.
|
|
37
|
+
*/
|
|
30
38
|
lastValue = undefined;
|
|
39
|
+
|
|
40
|
+
/** @internal */
|
|
31
41
|
constructor(setter) {
|
|
32
42
|
// Install native callback immediately at module load
|
|
33
43
|
setter(data => {
|
|
@@ -37,6 +47,13 @@ class NativeUpdatedValue {
|
|
|
37
47
|
}
|
|
38
48
|
});
|
|
39
49
|
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Subscribes to value changes.
|
|
53
|
+
*
|
|
54
|
+
* @param callback - Invoked with each new value
|
|
55
|
+
* @returns A function that removes the listener
|
|
56
|
+
*/
|
|
40
57
|
addListener(callback) {
|
|
41
58
|
this.listeners.add(callback);
|
|
42
59
|
return () => this.listeners.delete(callback);
|
|
@@ -47,6 +64,7 @@ class NativeUpdatedValue {
|
|
|
47
64
|
*
|
|
48
65
|
* @param setter - Function that sets the native callback property
|
|
49
66
|
* @returns The subscription instance with lastValue and addListener
|
|
67
|
+
* @internal
|
|
50
68
|
*/
|
|
51
69
|
static emitterize(setter) {
|
|
52
70
|
return new NativeUpdatedValue(setter);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeUpdatedValue","listeners","Set","lastValue","undefined","constructor","setter","data","listener","addListener","callback","add","delete","emitterize","exports"],"sourceRoot":"../../../src","sources":["utils/NativeUpdatedValue.ts"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,kBAAkB,CAAI;EACzBC,SAAS,GAAG,IAAIC,GAAG,CAAc,CAAC;
|
|
1
|
+
{"version":3,"names":["NativeUpdatedValue","listeners","Set","lastValue","undefined","constructor","setter","data","listener","addListener","callback","add","delete","emitterize","exports"],"sourceRoot":"../../../src","sources":["utils/NativeUpdatedValue.ts"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,kBAAkB,CAAI;EACzBC,SAAS,GAAG,IAAIC,GAAG,CAAc,CAAC;;EAE1C;AACF;AACA;AACA;AACA;EACEC,SAAS,GAAkBC,SAAS;;EAEpC;EACAC,WAAWA,CAACC,MAA6C,EAAE;IACzD;IACAA,MAAM,CAAEC,IAAO,IAAK;MAClB,IAAI,CAACJ,SAAS,GAAGI,IAAI;MACrB,KAAK,MAAMC,QAAQ,IAAI,IAAI,CAACP,SAAS,EAAE;QACrCO,QAAQ,CAACD,IAAI,CAAC;MAChB;IACF,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEE,WAAWA,CAACC,QAAqB,EAAc;IAC7C,IAAI,CAACT,SAAS,CAACU,GAAG,CAACD,QAAQ,CAAC;IAC5B,OAAO,MAAM,IAAI,CAACT,SAAS,CAACW,MAAM,CAACF,QAAQ,CAAC;EAC9C;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,OAAOG,UAAUA,CACfP,MAA6C,EACtB;IACvB,OAAO,IAAIN,kBAAkB,CAACM,MAAM,CAAC;EACvC;AACF;AAACQ,OAAA,CAAAd,kBAAA,GAAAA,kBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getTrackIdentity = getTrackIdentity;
|
|
7
|
+
/**
|
|
8
|
+
* A track's identity: its opaque `id` when present (non-blank), falling back
|
|
9
|
+
* to the playable `src`. Two tracks refer to the same item exactly when their
|
|
10
|
+
* identities are equal. Browsable-only tracks (neither `id` nor `src`) have
|
|
11
|
+
* no identity — they are addressed by their `path` instead.
|
|
12
|
+
*
|
|
13
|
+
* This is the same comparison the library uses everywhere it matches tracks:
|
|
14
|
+
* favorites (`setFavorites`), the CarPlay / Android Auto "now playing" row
|
|
15
|
+
* indicator, and queue expansion and in-place skipping when a track is
|
|
16
|
+
* selected from browse content. Use it for your own bookkeeping — keying a
|
|
17
|
+
* favorites collection, deduplicating history — so your comparisons agree
|
|
18
|
+
* with the library's.
|
|
19
|
+
*/
|
|
20
|
+
// Decision record: ADR 0008 (docs/adr/).
|
|
21
|
+
function getTrackIdentity(track) {
|
|
22
|
+
return track.id?.length ? track.id : track.src;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=getTrackIdentity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getTrackIdentity","track","id","length","src"],"sourceRoot":"../../../src","sources":["utils/getTrackIdentity.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,gBAAgBA,CAACC,KAGhC,EAAsB;EACrB,OAAOA,KAAK,CAACC,EAAE,EAAEC,MAAM,GAAGF,KAAK,CAACC,EAAE,GAAGD,KAAK,CAACG,GAAG;AAChD","ignoreList":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useNativeValueRefreshedBy = useNativeValueRefreshedBy;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
/**
|
|
9
|
+
* Hook for a native-fetched value that must stay fresh across SEVERAL event
|
|
10
|
+
* sources — e.g. the active track, which changes on a queue transition
|
|
11
|
+
* (`onActiveTrackChanged`) but is also mutated in place by a favorite toggle
|
|
12
|
+
* (`onFavoriteChanged`).
|
|
13
|
+
*
|
|
14
|
+
* Unlike {@link useNativeUpdatedValue}, this never reads a cached event
|
|
15
|
+
* payload: every trigger re-reads `getter()`, and the mount effect re-reads
|
|
16
|
+
* once after the subscriptions attach (so an event firing between render and
|
|
17
|
+
* effect cannot be missed). The getters are cheap synchronous Nitro calls.
|
|
18
|
+
*
|
|
19
|
+
* @param getter - Synchronous native getter for the current value
|
|
20
|
+
* @param emitters - Event sources that invalidate the value (a stable,
|
|
21
|
+
* module-level array — identity changes resubscribe)
|
|
22
|
+
*/
|
|
23
|
+
function useNativeValueRefreshedBy(getter, emitters) {
|
|
24
|
+
const [value, setValue] = (0, _react.useState)(getter);
|
|
25
|
+
(0, _react.useEffect)(() => {
|
|
26
|
+
setValue(getter());
|
|
27
|
+
const cleanups = emitters.map(emitter => emitter.addListener(() => setValue(getter())));
|
|
28
|
+
return () => cleanups.forEach(cleanup => cleanup());
|
|
29
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
30
|
+
}, [getter, ...emitters]);
|
|
31
|
+
return value;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=useNativeValueRefreshedBy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","useNativeValueRefreshedBy","getter","emitters","value","setValue","useState","useEffect","cleanups","map","emitter","addListener","forEach","cleanup"],"sourceRoot":"../../../src","sources":["utils/useNativeValueRefreshedBy.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,yBAAyBA,CACvCC,MAAe,EACfC,QAAiC,EAC9B;EACH,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAC,eAAQ,EAACJ,MAAM,CAAC;EAE1C,IAAAK,gBAAS,EAAC,MAAM;IACdF,QAAQ,CAACH,MAAM,CAAC,CAAC,CAAC;IAClB,MAAMM,QAAQ,GAAGL,QAAQ,CAACM,GAAG,CAAEC,OAAO,IACpCA,OAAO,CAACC,WAAW,CAAC,MAAMN,QAAQ,CAACH,MAAM,CAAC,CAAC,CAAC,CAC9C,CAAC;IACD,OAAO,MAAMM,QAAQ,CAACI,OAAO,CAAEC,OAAO,IAAKA,OAAO,CAAC,CAAC,CAAC;IACrD;EACF,CAAC,EAAE,CAACX,MAAM,EAAE,GAAGC,QAAQ,CAAC,CAAC;EAEzB,OAAOC,KAAK;AACd","ignoreList":[]}
|