react-native-audio-browser 0.2.0-next.10 → 0.2.0-next.12
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 +4 -4
- package/android/build.gradle +6 -5
- package/android/gradle.properties +1 -1
- package/android/src/main/java/com/audiobrowser/AudioBrowser.kt +110 -25
- package/android/src/main/java/com/audiobrowser/browser/BrowserManager.kt +254 -188
- package/android/src/main/java/com/audiobrowser/browser/BrowserUrlResolution.kt +23 -3
- package/android/src/main/java/com/audiobrowser/browser/JsonModels.kt +77 -58
- package/android/src/main/java/com/audiobrowser/browser/SectionScope.kt +68 -26
- package/android/src/main/java/com/audiobrowser/browser/StyleResolver.kt +49 -0
- package/android/src/main/java/com/audiobrowser/extension/ResolvedTrackExt.kt +9 -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/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 +93 -73
- package/android/src/main/java/com/audiobrowser/player/Player.kt +48 -30
- package/android/src/main/java/com/audiobrowser/player/PlayerCapabilitiesExt.kt +2 -15
- package/android/src/main/java/com/audiobrowser/tls/AiaCertChaser.kt +46 -5
- package/android/src/main/java/com/audiobrowser/tls/AiaChasingExtendedTrustManager.kt +86 -27
- package/android/src/main/java/com/audiobrowser/tls/AiaChasingTrustManager.kt +58 -14
- package/android/src/main/java/com/audiobrowser/tls/AiaTls.kt +20 -6
- package/android/src/main/java/com/audiobrowser/tls/CachingCertificateFetcher.kt +249 -86
- 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 +35 -0
- package/android/src/main/java/com/audiobrowser/util/TrackFactory.kt +45 -53
- package/android/src/test/java/com/audiobrowser/TestFixtures.kt +69 -30
- package/android/src/test/java/com/audiobrowser/browser/BrowserManagerFavoritesTest.kt +153 -0
- package/android/src/test/java/com/audiobrowser/browser/BrowserManagerLayerResolutionTest.kt +6 -0
- package/android/src/test/java/com/audiobrowser/browser/BrowserManagerTest.kt +345 -8
- package/android/src/test/java/com/audiobrowser/browser/BrowserUrlResolutionTest.kt +38 -0
- package/android/src/test/java/com/audiobrowser/browser/JsonArtworkTest.kt +1 -1
- package/android/src/test/java/com/audiobrowser/browser/JsonStyleTest.kt +91 -0
- package/android/src/test/java/com/audiobrowser/browser/SectionScopeTest.kt +128 -53
- package/android/src/test/java/com/audiobrowser/browser/StyleResolverTest.kt +87 -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/tls/AiaCertChaserTest.kt +152 -8
- package/android/src/test/java/com/audiobrowser/tls/AiaChasingTrustManagerTest.kt +218 -10
- package/android/src/test/java/com/audiobrowser/tls/CachingCertificateFetcherCallSiteTest.kt +322 -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 +131 -143
- package/ios/Browser/BrowserPathHelper.swift +44 -44
- package/ios/Browser/JsonModels.swift +187 -106
- package/ios/Browser/SearchDrillIn.swift +6 -6
- package/ios/Browser/SectionPresentation.swift +34 -0
- package/ios/Browser/SectionScope.swift +58 -24
- package/ios/Browser/StyleResolver.swift +47 -0
- package/ios/Browser/TabBarEntries.swift +2 -2
- package/ios/Browser/TrackIdTemplate.swift +37 -0
- package/ios/CarPlay/CarPlayArtworkResolver.swift +8 -7
- package/ios/CarPlay/CarPlayController.swift +105 -67
- package/ios/CarPlay/CarPlayImageLoader.swift +38 -18
- package/ios/CarPlay/CarPlayListItemFactory.swift +217 -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/HybridAudioBrowser.swift +113 -35
- package/ios/Model/NitroTypeStubs.swift +64 -23
- package/ios/Model/PlayerUpdateOptions.swift +7 -0
- package/ios/Player/NowPlayingUpdater.swift +1 -1
- package/ios/Player/PlaybackCoordinator.swift +2 -2
- package/ios/Player/RetryManager.swift +4 -3
- package/ios/Tests/BrowserPathHelperTests.swift +50 -20
- package/ios/Tests/CarPlayArtworkResolverTests.swift +24 -41
- package/ios/Tests/JsonModelsTests.swift +75 -1
- package/ios/Tests/PlaybackStateStoreTests.swift +4 -3
- package/ios/Tests/QueueManagerTests.swift +4 -4
- package/ios/Tests/ResolvedTrackCopyingTests.swift +37 -35
- package/ios/Tests/SearchDrillInTests.swift +16 -16
- package/ios/Tests/SectionPresentationTests.swift +61 -0
- package/ios/Tests/SectionScopeTests.swift +87 -55
- package/ios/Tests/StyleResolverTests.swift +67 -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/TrackSelector.swift +45 -30
- package/ios/Util/ArtworkImageFetcher.swift +16 -1
- 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/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/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/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/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/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 +260 -127
- 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 +4 -3
- package/nitrogen/generated/android/c++/JBrowseResult.hpp +10 -4
- package/nitrogen/generated/android/c++/JCarPlayPlayingIndicatorLocation.hpp +58 -0
- package/nitrogen/generated/android/c++/JFavoriteChangedEvent.hpp +4 -3
- package/nitrogen/generated/android/c++/JFormatNowPlayingParams.hpp +4 -3
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_RequestConfig___Track.hpp +4 -3
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_NowPlayingUpdate____FormatNowPlayingParams.hpp +4 -3
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_std__string____Track.hpp +4 -3
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____Track.hpp +4 -3
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_Track______SearchParams.hpp +4 -2
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_void_____TrackLoadEvent.hpp +4 -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 +10 -4
- package/nitrogen/generated/android/c++/JFunc_void_FavoriteChangedEvent.hpp +4 -3
- package/nitrogen/generated/android/c++/JFunc_void_Options.hpp +2 -5
- package/nitrogen/generated/android/c++/JFunc_void_PlaybackActiveTrackChangedEvent.hpp +4 -3
- package/nitrogen/generated/android/c++/JFunc_void_std__optional_ResolvedTrack_.hpp +9 -3
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_Track_.hpp +4 -2
- package/nitrogen/generated/android/c++/JHybridAudioBrowserSpec.cpp +21 -14
- package/nitrogen/generated/android/c++/JIOSOptions.hpp +9 -3
- package/nitrogen/generated/android/c++/JMediaRequestConfig.hpp +4 -3
- package/nitrogen/generated/android/c++/JNativeBrowserConfiguration.hpp +16 -10
- package/nitrogen/generated/android/c++/JNativeRouteEntry.hpp +8 -2
- package/nitrogen/generated/android/c++/JNativeSetupPlayerOptions.hpp +6 -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 +4 -3
- package/nitrogen/generated/android/c++/JPlayerCapabilities.hpp +5 -11
- package/nitrogen/generated/android/c++/JResolvedTrack.hpp +49 -51
- package/nitrogen/generated/android/c++/JSection.hpp +114 -0
- package/nitrogen/generated/android/c++/JSectionStyle.hpp +69 -0
- package/nitrogen/generated/android/c++/JStyleDisplay.hpp +58 -0
- package/nitrogen/generated/android/c++/JTrack.hpp +19 -48
- package/nitrogen/generated/android/c++/JTrackLoadEvent.hpp +4 -2
- package/nitrogen/generated/android/c++/JTrackStyle.hpp +25 -18
- package/nitrogen/generated/android/c++/JVariant_ResolvedTrack_BrowseError_Promise_BrowseResult_.hpp +10 -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/IOSOptions.kt +6 -3
- 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/Section.kt +50 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{FavoriteConfig.kt → SectionStyle.kt} +12 -6
- 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 +23 -5
- package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Bridge.hpp +104 -82
- package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Umbrella.hpp +16 -10
- package/nitrogen/generated/ios/c++/HybridAudioBrowserSpecSwift.hpp +16 -10
- package/nitrogen/generated/ios/swift/ArtworkRendering.swift +40 -0
- package/nitrogen/generated/ios/swift/CarPlayPlayingIndicatorLocation.swift +40 -0
- package/nitrogen/generated/ios/swift/IOSOptions.swift +7 -2
- 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 +64 -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 +28 -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++/IOSOptions.hpp +9 -2
- 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 +96 -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 +50 -34
- package/package.json +3 -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/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 +277 -0
- package/src/public-surface.test.ts +40 -0
- package/src/specs/audio-browser.nitro.ts +4 -3
- package/src/style-resolution.test.ts +139 -0
- package/src/types/browser-native.ts +2 -2
- package/src/types/browser-nodes.ts +268 -136
- 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/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/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
|
@@ -16,9 +16,12 @@ function isObjectValue(value) {
|
|
|
16
16
|
}
|
|
17
17
|
function isTransformableRequestConfig(source) {
|
|
18
18
|
if (!isObjectValue(source)) return false;
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
-
//
|
|
19
|
+
// A static ResolvedTrack page also carries a top-level `path`, so `path`
|
|
20
|
+
// alone cannot mark a request config. A page is recognised by its required
|
|
21
|
+
// `title` — no RequestConfig field is named `title`.
|
|
22
|
+
if ('title' in source) return false;
|
|
23
|
+
// Any RequestConfig key marks a request config. (A static ResolvedTrack's
|
|
24
|
+
// per-track request override is nested under `request`, not top-level.)
|
|
22
25
|
return 'baseUrl' in source || 'path' in source || 'headers' in source || 'query' in source || 'method' in source || 'body' in source || 'contentType' in source || 'userAgent' in source || 'transform' in source || 'transformSync' in source;
|
|
23
26
|
}
|
|
24
27
|
function isRouteConfig(source) {
|
|
@@ -81,7 +84,7 @@ function searchSourceToRouteEntry(source) {
|
|
|
81
84
|
*/
|
|
82
85
|
function wrapTracksAsResolvedTrack(tracks) {
|
|
83
86
|
return {
|
|
84
|
-
|
|
87
|
+
path: TABS_ROUTE_PATH,
|
|
85
88
|
title: 'Tabs',
|
|
86
89
|
children: tracks
|
|
87
90
|
};
|
|
@@ -185,10 +188,10 @@ export function validateBrowserConfiguration(config) {
|
|
|
185
188
|
continue;
|
|
186
189
|
}
|
|
187
190
|
if (!isCallback(source) && !isRouteConfig(source) && !isTransformableRequestConfig(source)) {
|
|
188
|
-
// Falls through to the static-page branch; a page needs
|
|
191
|
+
// Falls through to the static-page branch; a page needs path + title.
|
|
189
192
|
const page = source;
|
|
190
|
-
if (typeof page.
|
|
191
|
-
warn(`route "${path}" matched no source shape — expected a callback, ` + `a request config ({ baseUrl, path, headers, ... }), a ` + `RouteConfig ({ browse, media, artwork }), or a static page ` + `({
|
|
193
|
+
if (typeof page.path !== 'string' || typeof page.title !== 'string') {
|
|
194
|
+
warn(`route "${path}" matched no source shape — expected a callback, ` + `a request config ({ baseUrl, path, headers, ... }), a ` + `RouteConfig ({ browse, media, artwork }), or a static page ` + `({ path, title, children? }). It will be served as static ` + `content and likely render a blank screen.`);
|
|
192
195
|
}
|
|
193
196
|
}
|
|
194
197
|
}
|
|
@@ -214,7 +217,7 @@ export function toNativeConfig(config) {
|
|
|
214
217
|
handleTrackLoad: config.handleTrackLoad,
|
|
215
218
|
androidControllerOfflineError: config.androidControllerOfflineError,
|
|
216
219
|
carPlayLoadingTitle: config.carPlayLoadingTitle,
|
|
217
|
-
|
|
220
|
+
resolveAlbumPath: config.resolveAlbumPath,
|
|
218
221
|
formatNavigationError: config.formatNavigationError
|
|
219
222
|
};
|
|
220
223
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isCallback","source","isObjectValue","value","isTransformableRequestConfig","isRouteConfig","artwork","splitLayer","layer","resolve","resolver","Promise","config","flattenBrowseSource","browseCallback","browseConfig","browseStatic","searchSourceToRouteEntry","path","SEARCH_ROUTE_PATH","searchCallback","searchConfig","wrapTracksAsResolvedTrack","tracks","
|
|
1
|
+
{"version":3,"names":["isCallback","source","isObjectValue","value","isTransformableRequestConfig","isRouteConfig","artwork","splitLayer","layer","resolve","resolver","Promise","config","flattenBrowseSource","browseCallback","browseConfig","browseStatic","searchSourceToRouteEntry","path","SEARCH_ROUTE_PATH","searchCallback","searchConfig","wrapTracksAsResolvedTrack","tracks","TABS_ROUTE_PATH","title","children","tabsSourceToRouteEntry","Array","isArray","wrappedCallback","flattenRouteEntry","browse","media","DEFAULT_ROUTE_PATH","flattenRoutes","routes","tabs","search","entries","Object","push","length","undefined","MAX_TABS","validateBrowserConfiguration","warn","message","console","startsWith","page","toNativeConfig","request","requestResolver","browseResolver","nowPlayingArtwork","singleTrack","handleTrackLoad","androidControllerOfflineError","carPlayLoadingTitle","resolveAlbumPath","formatNavigationError"],"sourceRoot":"../../../src","sources":["features/browser-config.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -38,26 +38,29 @@ export function toggleActiveTrackFavorited() {
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
/**
|
|
41
|
-
* Sets the list of favorited track
|
|
41
|
+
* Sets the list of favorited track identifiers.
|
|
42
42
|
*
|
|
43
43
|
* This syncs your app's favorites with the native favorites cache, enabling
|
|
44
44
|
* the heart button in media controllers (notification, Android Auto, CarPlay)
|
|
45
45
|
* to show the correct state.
|
|
46
46
|
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
47
|
+
* Each identifier is matched **exactly** against a track's *identity* — its
|
|
48
|
+
* `id` when set, falling back to `src`. Store favorites as the same stable
|
|
49
|
+
* identifier you put in `Track.id` (or as the full `src` for id-less tracks).
|
|
50
50
|
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
51
|
+
* A track whose response already carries `favorited` keeps that value on
|
|
52
|
+
* display surfaces — a caller-set flag wins over cache hydration. The cache
|
|
53
|
+
* itself is written only by this call and by heart toggles
|
|
54
|
+
* (`setActiveTrackFavorited()` / media-controller taps), so you only need to
|
|
55
|
+
* call this on app launch — and again whenever the collection changes outside
|
|
56
|
+
* the player (a sync from another device, say).
|
|
54
57
|
*
|
|
55
|
-
* @param favorites - Array of favorited track `src`
|
|
58
|
+
* @param favorites - Array of favorited track identities (`id`, or `src` for id-less tracks)
|
|
56
59
|
*
|
|
57
60
|
* @example
|
|
58
61
|
* ```ts
|
|
59
|
-
* const
|
|
60
|
-
* setFavorites(
|
|
62
|
+
* const favoriteIds = await loadFavoritesFromStorage()
|
|
63
|
+
* setFavorites(favoriteIds)
|
|
61
64
|
* ```
|
|
62
65
|
*/
|
|
63
66
|
export function setFavorites(favorites) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["nativeBrowser","NativeUpdatedValue","setActiveTrackFavorited","favorited","toggleActiveTrackFavorited","setFavorites","favorites","onFavoriteChanged","emitterize","cb"],"sourceRoot":"../../../src","sources":["features/favorites.ts"],"mappings":";;AACA,SAASA,aAAa,QAAQ,WAAW;AACzC,SAASC,kBAAkB,QAAQ,6BAA6B;;AAEhE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CAACC,SAAkB,EAAQ;EAChEH,aAAa,CAACE,uBAAuB,CAACC,SAAS,CAAC;AAClD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,0BAA0BA,CAAA,EAAS;EACjDJ,aAAa,CAACI,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,OAAO,SAASC,YAAYA,CAACC,SAAmB,EAAQ;EACtDN,aAAa,CAACK,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;AACA,OAAO,MAAMC,iBAAiB,GAC5BN,kBAAkB,CAACO,UAAU,CAC1BC,EAAE,IAAMT,aAAa,CAACO,iBAAiB,GAAGE,EAC7C,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["nativeBrowser","NativeUpdatedValue","setActiveTrackFavorited","favorited","toggleActiveTrackFavorited","setFavorites","favorites","onFavoriteChanged","emitterize","cb"],"sourceRoot":"../../../src","sources":["features/favorites.ts"],"mappings":";;AACA,SAASA,aAAa,QAAQ,WAAW;AACzC,SAASC,kBAAkB,QAAQ,6BAA6B;;AAEhE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CAACC,SAAkB,EAAQ;EAChEH,aAAa,CAACE,uBAAuB,CAACC,SAAS,CAAC;AAClD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,0BAA0BA,CAAA,EAAS;EACjDJ,aAAa,CAACI,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;AACA,OAAO,SAASC,YAAYA,CAACC,SAAmB,EAAQ;EACtDN,aAAa,CAACK,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;AACA,OAAO,MAAMC,iBAAiB,GAC5BN,kBAAkB,CAACO,UAAU,CAC1BC,EAAE,IAAMT,aAAa,CAACO,iBAAiB,GAAGE,EAC7C,CAAC","ignoreList":[]}
|
|
@@ -60,8 +60,10 @@ export function seekTo(position) {
|
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
/**
|
|
63
|
-
* Jump to the live edge of the current track
|
|
64
|
-
* live
|
|
63
|
+
* Jump to the live edge of the current track; no-op unless the track
|
|
64
|
+
* declares `live: true`. A stream with a seekable live window (HLS) seeks
|
|
65
|
+
* to the window's edge; a non-seekable stream (e.g. ICY radio) reconnects
|
|
66
|
+
* to rejoin live — an expired URL re-resolves through `media.resolve`.
|
|
65
67
|
*/
|
|
66
68
|
export function seekToLiveEdge() {
|
|
67
69
|
nativeBrowser.seekToLiveEdge();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["nativeBrowser","reset","play","pause","togglePlayback","stop","retry","seekTo","position","seekToLiveEdge","seekBy","offset"],"sourceRoot":"../../../../src","sources":["features/playback/controls.ts"],"mappings":";;AAAA;;AAEA,SAASA,aAAa,QAAQ,cAAc;;AAE5C;AACA;AACA;AACA,OAAO,SAASC,KAAKA,CAAA,EAAS;EAC5BD,aAAa,CAACC,KAAK,CAAC,CAAC;AACvB;;AAEA;AACA;AACA;AACA,OAAO,SAASC,IAAIA,CAAA,EAAS;EAC3BF,aAAa,CAACE,IAAI,CAAC,CAAC;AACtB;;AAEA;AACA;AACA;AACA,OAAO,SAASC,KAAKA,CAAA,EAAS;EAC5BH,aAAa,CAACG,KAAK,CAAC,CAAC;AACvB;;AAEA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAAA,EAAS;EACrCJ,aAAa,CAACI,cAAc,CAAC,CAAC;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,IAAIA,CAAA,EAAS;EAC3BL,aAAa,CAACK,IAAI,CAAC,CAAC;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,KAAKA,CAAA,EAAS;EAC5BN,aAAa,CAACM,KAAK,CAAC,CAAC;AACvB;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAACC,QAAgB,EAAQ;EAC7CR,aAAa,CAACO,MAAM,CAACC,QAAQ,CAAC;AAChC;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAAA,EAAS;EACrCT,aAAa,CAACS,cAAc,CAAC,CAAC;AAChC;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAACC,MAAc,EAAQ;EAC3CX,aAAa,CAACU,MAAM,CAACC,MAAM,CAAC;AAC9B","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["nativeBrowser","reset","play","pause","togglePlayback","stop","retry","seekTo","position","seekToLiveEdge","seekBy","offset"],"sourceRoot":"../../../../src","sources":["features/playback/controls.ts"],"mappings":";;AAAA;;AAEA,SAASA,aAAa,QAAQ,cAAc;;AAE5C;AACA;AACA;AACA,OAAO,SAASC,KAAKA,CAAA,EAAS;EAC5BD,aAAa,CAACC,KAAK,CAAC,CAAC;AACvB;;AAEA;AACA;AACA;AACA,OAAO,SAASC,IAAIA,CAAA,EAAS;EAC3BF,aAAa,CAACE,IAAI,CAAC,CAAC;AACtB;;AAEA;AACA;AACA;AACA,OAAO,SAASC,KAAKA,CAAA,EAAS;EAC5BH,aAAa,CAACG,KAAK,CAAC,CAAC;AACvB;;AAEA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAAA,EAAS;EACrCJ,aAAa,CAACI,cAAc,CAAC,CAAC;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,IAAIA,CAAA,EAAS;EAC3BL,aAAa,CAACK,IAAI,CAAC,CAAC;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,KAAKA,CAAA,EAAS;EAC5BN,aAAa,CAACM,KAAK,CAAC,CAAC;AACvB;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAACC,QAAgB,EAAQ;EAC7CR,aAAa,CAACO,MAAM,CAACC,QAAQ,CAAC;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAAA,EAAS;EACrCT,aAAa,CAACS,cAAc,CAAC,CAAC;AAChC;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAACC,MAAc,EAAQ;EAC3CX,aAAa,CAACU,MAAM,CAACC,MAAM,CAAC;AAC9B","ignoreList":[]}
|
|
@@ -19,9 +19,8 @@ import { useNativeUpdatedValue } from '../../utils/useNativeUpdatedValue';
|
|
|
19
19
|
* - `'buffering'`: Indicates that the player is currently loading more data
|
|
20
20
|
* before it can continue playing or is ready to start playing.
|
|
21
21
|
* - `'error'`: Indicates that playback of the current item failed. Call
|
|
22
|
-
* `
|
|
23
|
-
*
|
|
24
|
-
* the item again.
|
|
22
|
+
* `getPlaybackError()` (or subscribe via `usePlaybackError()`) for the
|
|
23
|
+
* error details. Call `retry()` or `play()` to try to play the item again.
|
|
25
24
|
* - `'ended'`: Indicates that playback stopped due to the end of the queue
|
|
26
25
|
* being reached.
|
|
27
26
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["nativeBrowser","NativeUpdatedValue","useNativeUpdatedValue","getPlayback","onPlaybackChanged","emitterize","cb","usePlayback"],"sourceRoot":"../../../../src","sources":["features/playback/state.ts"],"mappings":";;AACA,SAASA,aAAa,QAAQ,cAAc;AAC5C,SAASC,kBAAkB,QAAQ,gCAAgC;AACnE,SAASC,qBAAqB,QAAQ,mCAAmC;;AAEzE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
|
|
1
|
+
{"version":3,"names":["nativeBrowser","NativeUpdatedValue","useNativeUpdatedValue","getPlayback","onPlaybackChanged","emitterize","cb","usePlayback"],"sourceRoot":"../../../../src","sources":["features/playback/state.ts"],"mappings":";;AACA,SAASA,aAAa,QAAQ,cAAc;AAC5C,SAASC,kBAAkB,QAAQ,gCAAgC;AACnE,SAASC,qBAAqB,QAAQ,mCAAmC;;AAEzE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAiBA;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CAAA,EAAa;EACtC,OAAOH,aAAa,CAACG,WAAW,CAAC,CAAC;AACpC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,iBAAiB,GAAGH,kBAAkB,CAACI,UAAU,CAC3DC,EAAE,IAAMN,aAAa,CAACI,iBAAiB,GAAGE,EAC7C,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CAAA,EAAa;EACtC,OAAOL,qBAAqB,CAACC,WAAW,EAAEC,iBAAiB,CAAC;AAC9D","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["nativeBrowser","NativeUpdatedValue","useNativeUpdatedValue","validateIOSUpdateOptions","updateOptions","options","ios","getOptions","onOptionsChanged","emitterize","cb","useOptions"],"sourceRoot":"../../../../src","sources":["features/player/options.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"names":["nativeBrowser","NativeUpdatedValue","useNativeUpdatedValue","validateIOSUpdateOptions","updateOptions","options","ios","getOptions","onOptionsChanged","emitterize","cb","useOptions"],"sourceRoot":"../../../../src","sources":["features/player/options.ts"],"mappings":";;AAIA,SAASA,aAAa,QAAQ,cAAc;AAC5C,SAASC,kBAAkB,QAAQ,gCAAgC;AACnE,SAASC,qBAAqB,QAAQ,mCAAmC;AACzE,SAASC,wBAAwB,QAAQ,mBAAmB;;AAE5D;;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;AACA,OAAO,SAASC,aAAaA,CAACC,OAAsB,EAAQ;EAC1DF,wBAAwB,CAACE,OAAO,CAACC,GAAG,CAAC;EACrCN,aAAa,CAACI,aAAa,CAACC,OAAO,CAAC;AACtC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,UAAUA,CAAA,EAAY;EACpC,OAAOP,aAAa,CAACO,UAAU,CAAC,CAAC;AACnC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAGP,kBAAkB,CAACQ,UAAU,CAC1DC,EAAE,IAAMV,aAAa,CAACQ,gBAAgB,GAAGE,EAC5C,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAAA,EAAY;EACpC,OAAOT,qBAAqB,CAACK,UAAU,EAAEC,gBAAgB,CAAC;AAC5D","ignoreList":[]}
|
|
@@ -362,12 +362,14 @@ export async function setupPlayer(options = {}) {
|
|
|
362
362
|
playbackRates,
|
|
363
363
|
carPlayUpNextButton,
|
|
364
364
|
carPlayNowPlayingButtons,
|
|
365
|
+
carPlayPlayingIndicatorLocation,
|
|
365
366
|
...iosSetup
|
|
366
367
|
} = ios;
|
|
367
368
|
const iosUpdate = definedFields({
|
|
368
369
|
playbackRates,
|
|
369
370
|
carPlayUpNextButton,
|
|
370
|
-
carPlayNowPlayingButtons
|
|
371
|
+
carPlayNowPlayingButtons,
|
|
372
|
+
carPlayPlayingIndicatorLocation
|
|
371
373
|
});
|
|
372
374
|
validateIOSUpdateOptions(iosUpdate);
|
|
373
375
|
const updates = definedFields({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["nativeBrowser","validateIOSUpdateOptions","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","updates"],"sourceRoot":"../../../../src","sources":["features/player/setup.ts"],"mappings":";;AAAA;;AAYA,SAASA,aAAa,QAAQ,cAAc;AAC5C,SAASC,wBAAwB,QAAQ,mBAAmB;;AAE5D;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,SAASC,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;AACA,OAAO,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":["nativeBrowser","validateIOSUpdateOptions","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","updates"],"sourceRoot":"../../../../src","sources":["features/player/setup.ts"],"mappings":";;AAAA;;AAYA,SAASA,aAAa,QAAQ,cAAc;AAC5C,SAASC,wBAAwB,QAAQ,mBAAmB;;AAE5D;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":[]}
|
|
@@ -7,6 +7,8 @@ const MAX_CARPLAY_NOW_PLAYING_BUTTONS = 5;
|
|
|
7
7
|
* Shared by `updateOptions` and `setupPlayer` (both can carry `ios` options).
|
|
8
8
|
* Kept out of `options.ts`, which the barrel re-exports — see
|
|
9
9
|
* public-surface.test.ts.
|
|
10
|
+
*
|
|
11
|
+
* @internal
|
|
10
12
|
*/
|
|
11
13
|
export function validateIOSUpdateOptions(ios) {
|
|
12
14
|
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;AACA,OAAO,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;AACA,OAAO,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":[]}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import { nativeBrowser } from '../../native';
|
|
4
4
|
import { NativeUpdatedValue } from '../../utils/NativeUpdatedValue';
|
|
5
|
-
import {
|
|
5
|
+
import { useNativeValueRefreshedBy } from '../../utils/useNativeValueRefreshedBy';
|
|
6
|
+
import { onFavoriteChanged } from '../favorites';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* Event data for when the active track changes.
|
|
@@ -29,6 +30,12 @@ export function getActiveTrackIndex() {
|
|
|
29
30
|
|
|
30
31
|
/**
|
|
31
32
|
* Subscribes to active track change events.
|
|
33
|
+
*
|
|
34
|
+
* Fires on **transitions only** — selection, queue advance, skip. In-place
|
|
35
|
+
* metadata mutations of the active track (a favorite toggle) emit
|
|
36
|
+
* {@link onFavoriteChanged} instead; {@link useActiveTrack} subscribes to
|
|
37
|
+
* both, so UI bound through the hook still re-renders on a heart toggle.
|
|
38
|
+
*
|
|
32
39
|
* @param callback - Called when the active track changes
|
|
33
40
|
* @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
|
|
34
41
|
*/
|
|
@@ -36,11 +43,15 @@ export const onActiveTrackChanged = NativeUpdatedValue.emitterize(cb => nativeBr
|
|
|
36
43
|
|
|
37
44
|
// MARK: - Hooks
|
|
38
45
|
|
|
46
|
+
// Module-level so the hook's subscription identity is stable across renders.
|
|
47
|
+
const activeTrackInvalidators = [onActiveTrackChanged, onFavoriteChanged];
|
|
48
|
+
|
|
39
49
|
/**
|
|
40
|
-
* Hook that returns the current active track
|
|
50
|
+
* Hook that returns the current active track, updating on transitions AND on
|
|
51
|
+
* in-place mutations of the active track (favorite toggles).
|
|
41
52
|
* @returns The current active track or undefined
|
|
42
53
|
*/
|
|
43
54
|
export function useActiveTrack() {
|
|
44
|
-
return
|
|
55
|
+
return useNativeValueRefreshedBy(getActiveTrack, activeTrackInvalidators);
|
|
45
56
|
}
|
|
46
57
|
//# sourceMappingURL=activeTrack.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["nativeBrowser","NativeUpdatedValue","
|
|
1
|
+
{"version":3,"names":["nativeBrowser","NativeUpdatedValue","useNativeValueRefreshedBy","onFavoriteChanged","getActiveTrack","undefined","getActiveTrackIndex","onActiveTrackChanged","emitterize","cb","onPlaybackActiveTrackChanged","activeTrackInvalidators","useActiveTrack"],"sourceRoot":"../../../../src","sources":["features/queue/activeTrack.ts"],"mappings":";;AACA,SAASA,aAAa,QAAQ,cAAc;AAC5C,SAASC,kBAAkB,QAAQ,gCAAgC;AACnE,SAASC,yBAAyB,QAAQ,uCAAuC;AACjF,SAASC,iBAAiB,QAAQ,cAAc;;AAEhD;AACA;AACA;;AAcA;;AAEA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAAA,EAAsB;EAClD,OAAOJ,aAAa,CAACI,cAAc,CAAC,CAAC,IAAIC,SAAS;AACpD;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAAA,EAAuB;EACxD,OAAON,aAAa,CAACM,mBAAmB,CAAC,CAAC,IAAID,SAAS;AACzD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAME,oBAAoB,GAC/BN,kBAAkB,CAACO,UAAU,CAC1BC,EAAE,IAAMT,aAAa,CAACU,4BAA4B,GAAGD,EACxD,CAAC;;AAEH;;AAEA;AACA,MAAME,uBAAuB,GAAG,CAACJ,oBAAoB,EAAEJ,iBAAiB,CAAC;;AAEzE;AACA;AACA;AACA;AACA;AACA,OAAO,SAASS,cAAcA,CAAA,EAAsB;EAClD,OAAOV,yBAAyB,CAACE,cAAc,EAAEO,uBAAuB,CAAC;AAC3E","ignoreList":[]}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import { nativeBrowser } from '../../native';
|
|
4
4
|
import { NativeUpdatedValue } from '../../utils/NativeUpdatedValue';
|
|
5
|
-
import {
|
|
5
|
+
import { useNativeValueRefreshedBy } from '../../utils/useNativeValueRefreshedBy';
|
|
6
|
+
import { onFavoriteChanged } from '../favorites';
|
|
6
7
|
|
|
7
8
|
// MARK: - Types
|
|
8
9
|
|
|
@@ -151,7 +152,9 @@ export const onQueueEnded = NativeUpdatedValue.emitterize(cb => nativeBrowser.on
|
|
|
151
152
|
|
|
152
153
|
/**
|
|
153
154
|
* Subscribes to queue change events.
|
|
154
|
-
* Called when tracks are added, removed, reordered
|
|
155
|
+
* Called when tracks are added, removed, or reordered. An in-place mutation of
|
|
156
|
+
* a queued track's metadata (a favorite toggle) emits `onFavoriteChanged`
|
|
157
|
+
* instead; {@link useQueue} subscribes to both.
|
|
155
158
|
* @param callback - Called with the updated queue
|
|
156
159
|
* @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
|
|
157
160
|
*/
|
|
@@ -159,11 +162,15 @@ export const onQueueChanged = NativeUpdatedValue.emitterize(cb => nativeBrowser.
|
|
|
159
162
|
|
|
160
163
|
// MARK: - Hooks
|
|
161
164
|
|
|
165
|
+
// Module-level so the hook's subscription identity is stable across renders.
|
|
166
|
+
const queueInvalidators = [onQueueChanged, onFavoriteChanged];
|
|
167
|
+
|
|
162
168
|
/**
|
|
163
|
-
* Hook that returns the current queue
|
|
169
|
+
* Hook that returns the current queue, updating on queue changes AND on
|
|
170
|
+
* in-place mutations of queued tracks (favorite toggles).
|
|
164
171
|
* @returns The current queue
|
|
165
172
|
*/
|
|
166
173
|
export function useQueue() {
|
|
167
|
-
return
|
|
174
|
+
return useNativeValueRefreshedBy(getQueue, queueInvalidators);
|
|
168
175
|
}
|
|
169
176
|
//# sourceMappingURL=queue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["nativeBrowser","NativeUpdatedValue","
|
|
1
|
+
{"version":3,"names":["nativeBrowser","NativeUpdatedValue","useNativeValueRefreshedBy","onFavoriteChanged","add","tracks","insertBeforeIndex","addTracks","Array","isArray","length","load","track","move","fromIndex","toIndex","remove","indexOrIndexes","removeUpcomingTracks","skip","index","initialPosition","skipToNext","skipToPrevious","setQueue","startIndex","startPosition","getTrack","getQueue","onQueueEnded","emitterize","cb","onPlaybackQueueEnded","onQueueChanged","onPlaybackQueueChanged","queueInvalidators","useQueue"],"sourceRoot":"../../../../src","sources":["features/queue/queue.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,25 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* The subscription object behind the library's **discrete** events — the
|
|
5
|
+
* remote-control exports (`onRemotePlay`, `onRemoteSeek`, …) and other
|
|
6
|
+
* one-shot signals with no "current value" to cache. Subscribe with
|
|
7
|
+
* {@link addListener}; the returned function unsubscribes. The emitter is
|
|
8
|
+
* not callable itself.
|
|
5
9
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* For critical state changes (playback, progress, etc.), use NativeEmitter instead to ensure
|
|
11
|
-
* no events are missed.
|
|
10
|
+
* "Lazy" is an implementation detail you may notice in timing: the native
|
|
11
|
+
* side only starts delivering the event once the first listener is added.
|
|
12
|
+
* State that always has a current reading uses `NativeUpdatedValue`
|
|
13
|
+
* instead.
|
|
12
14
|
*
|
|
13
15
|
* @example
|
|
14
16
|
* ```typescript
|
|
15
|
-
*
|
|
16
|
-
* (cb) => (nativeBrowser.onRemotePlay = cb)
|
|
17
|
-
* )
|
|
17
|
+
* import { onRemotePlay } from 'react-native-audio-browser'
|
|
18
18
|
*
|
|
19
19
|
* const unsubscribe = onRemotePlay.addListener(() => console.log('play'))
|
|
20
|
+
* // later:
|
|
21
|
+
* unsubscribe()
|
|
20
22
|
* ```
|
|
21
23
|
*/
|
|
22
24
|
export class LazyNativeEmitter {
|
|
25
|
+
/** @internal */
|
|
23
26
|
constructor(setter) {
|
|
24
27
|
this.setter = setter;
|
|
25
28
|
}
|
|
@@ -33,6 +36,13 @@ export class LazyNativeEmitter {
|
|
|
33
36
|
});
|
|
34
37
|
return listeners;
|
|
35
38
|
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Subscribes to the event.
|
|
42
|
+
*
|
|
43
|
+
* @param callback - Invoked with each event
|
|
44
|
+
* @returns A function that removes the listener
|
|
45
|
+
*/
|
|
36
46
|
addListener(callback) {
|
|
37
47
|
const listeners = this.getListeners();
|
|
38
48
|
listeners.add(callback);
|
|
@@ -45,6 +55,7 @@ export class LazyNativeEmitter {
|
|
|
45
55
|
* @param setter - Function that sets the native callback property
|
|
46
56
|
* @returns The emitter instance — subscribe with `addListener`, which returns
|
|
47
57
|
* an unsubscribe function
|
|
58
|
+
* @internal
|
|
48
59
|
*/
|
|
49
60
|
static emitterize(setter) {
|
|
50
61
|
return new LazyNativeEmitter(setter);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["LazyNativeEmitter","constructor","setter","getListeners","listeners","Set","data","listener","addListener","callback","add","delete","emitterize"],"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,OAAO,MAAMA,iBAAiB,CAAI;
|
|
1
|
+
{"version":3,"names":["LazyNativeEmitter","constructor","setter","getListeners","listeners","Set","data","listener","addListener","callback","add","delete","emitterize"],"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;AACA,OAAO,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","ignoreList":[]}
|
|
@@ -1,29 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* The subscription object behind the library's **state** events — every
|
|
5
|
+
* `on<Thing>Changed`-style export (`onPlaybackChanged`, `onQueueChanged`, …)
|
|
6
|
+
* is one of these. Subscribe with {@link addListener}; the returned function
|
|
7
|
+
* unsubscribes. The emitter is not callable itself.
|
|
5
8
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* For discrete events without a current value (remote controls), use LazyNativeEmitter instead.
|
|
9
|
+
* It tracks a value that always has a *current* reading (playback state,
|
|
10
|
+
* progress, options): {@link lastValue} caches the most recent one so hooks —
|
|
11
|
+
* and you — can read it synchronously without a getter round-trip. Discrete
|
|
12
|
+
* events with no current value (remote-control presses) use
|
|
13
|
+
* `LazyNativeEmitter` instead.
|
|
12
14
|
*
|
|
13
15
|
* @example
|
|
14
16
|
* ```typescript
|
|
15
|
-
*
|
|
16
|
-
* (cb) => (nativeBrowser.onPlaybackChanged = cb)
|
|
17
|
-
* )
|
|
17
|
+
* import { onPlaybackChanged } from 'react-native-audio-browser'
|
|
18
18
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* }
|
|
19
|
+
* const unsubscribe = onPlaybackChanged.addListener((p) => {
|
|
20
|
+
* console.log(p.state)
|
|
21
|
+
* })
|
|
22
|
+
* // later:
|
|
23
|
+
* unsubscribe()
|
|
22
24
|
* ```
|
|
23
25
|
*/
|
|
24
26
|
export class NativeUpdatedValue {
|
|
25
27
|
listeners = new Set();
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The most recent value delivered by native, or `undefined` before the
|
|
31
|
+
* first update. Subscription starts at module load, so this is safe to
|
|
32
|
+
* read synchronously at any time.
|
|
33
|
+
*/
|
|
26
34
|
lastValue = undefined;
|
|
35
|
+
|
|
36
|
+
/** @internal */
|
|
27
37
|
constructor(setter) {
|
|
28
38
|
// Install native callback immediately at module load
|
|
29
39
|
setter(data => {
|
|
@@ -33,6 +43,13 @@ export class NativeUpdatedValue {
|
|
|
33
43
|
}
|
|
34
44
|
});
|
|
35
45
|
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Subscribes to value changes.
|
|
49
|
+
*
|
|
50
|
+
* @param callback - Invoked with each new value
|
|
51
|
+
* @returns A function that removes the listener
|
|
52
|
+
*/
|
|
36
53
|
addListener(callback) {
|
|
37
54
|
this.listeners.add(callback);
|
|
38
55
|
return () => this.listeners.delete(callback);
|
|
@@ -43,6 +60,7 @@ export class NativeUpdatedValue {
|
|
|
43
60
|
*
|
|
44
61
|
* @param setter - Function that sets the native callback property
|
|
45
62
|
* @returns The subscription instance with lastValue and addListener
|
|
63
|
+
* @internal
|
|
46
64
|
*/
|
|
47
65
|
static emitterize(setter) {
|
|
48
66
|
return new NativeUpdatedValue(setter);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeUpdatedValue","listeners","Set","lastValue","undefined","constructor","setter","data","listener","addListener","callback","add","delete","emitterize"],"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,OAAO,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"],"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;AACA,OAAO,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","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A track's identity: its opaque `id` when present (non-blank), falling back
|
|
5
|
+
* to the playable `src`. Two tracks refer to the same item exactly when their
|
|
6
|
+
* identities are equal. Browsable-only tracks (neither `id` nor `src`) have
|
|
7
|
+
* no identity — they are addressed by their `path` instead.
|
|
8
|
+
*
|
|
9
|
+
* This is the same comparison the library uses everywhere it matches tracks:
|
|
10
|
+
* favorites (`setFavorites`), the CarPlay / Android Auto "now playing" row
|
|
11
|
+
* indicator, and queue expansion and in-place skipping when a track is
|
|
12
|
+
* selected from browse content. Use it for your own bookkeeping — keying a
|
|
13
|
+
* favorites collection, deduplicating history — so your comparisons agree
|
|
14
|
+
* with the library's.
|
|
15
|
+
*/
|
|
16
|
+
// Decision record: ADR 0008 (docs/adr/).
|
|
17
|
+
export function getTrackIdentity(track) {
|
|
18
|
+
return track.id?.length ? track.id : track.src;
|
|
19
|
+
}
|
|
20
|
+
//# 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;AACA,OAAO,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,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useEffect, useState } from 'react';
|
|
4
|
+
/**
|
|
5
|
+
* Hook for a native-fetched value that must stay fresh across SEVERAL event
|
|
6
|
+
* sources — e.g. the active track, which changes on a queue transition
|
|
7
|
+
* (`onActiveTrackChanged`) but is also mutated in place by a favorite toggle
|
|
8
|
+
* (`onFavoriteChanged`).
|
|
9
|
+
*
|
|
10
|
+
* Unlike {@link useNativeUpdatedValue}, this never reads a cached event
|
|
11
|
+
* payload: every trigger re-reads `getter()`, and the mount effect re-reads
|
|
12
|
+
* once after the subscriptions attach (so an event firing between render and
|
|
13
|
+
* effect cannot be missed). The getters are cheap synchronous Nitro calls.
|
|
14
|
+
*
|
|
15
|
+
* @param getter - Synchronous native getter for the current value
|
|
16
|
+
* @param emitters - Event sources that invalidate the value (a stable,
|
|
17
|
+
* module-level array — identity changes resubscribe)
|
|
18
|
+
*/
|
|
19
|
+
export function useNativeValueRefreshedBy(getter, emitters) {
|
|
20
|
+
const [value, setValue] = useState(getter);
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
setValue(getter());
|
|
23
|
+
const cleanups = emitters.map(emitter => emitter.addListener(() => setValue(getter())));
|
|
24
|
+
return () => cleanups.forEach(cleanup => cleanup());
|
|
25
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
26
|
+
}, [getter, ...emitters]);
|
|
27
|
+
return value;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=useNativeValueRefreshedBy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","useState","useNativeValueRefreshedBy","getter","emitters","value","setValue","cleanups","map","emitter","addListener","forEach","cleanup"],"sourceRoot":"../../../src","sources":["utils/useNativeValueRefreshedBy.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAM3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,yBAAyBA,CACvCC,MAAe,EACfC,QAAiC,EAC9B;EACH,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGL,QAAQ,CAACE,MAAM,CAAC;EAE1CH,SAAS,CAAC,MAAM;IACdM,QAAQ,CAACH,MAAM,CAAC,CAAC,CAAC;IAClB,MAAMI,QAAQ,GAAGH,QAAQ,CAACI,GAAG,CAAEC,OAAO,IACpCA,OAAO,CAACC,WAAW,CAAC,MAAMJ,QAAQ,CAACH,MAAM,CAAC,CAAC,CAAC,CAC9C,CAAC;IACD,OAAO,MAAMI,QAAQ,CAACI,OAAO,CAAEC,OAAO,IAAKA,OAAO,CAAC,CAAC,CAAC;IACrD;EACF,CAAC,EAAE,CAACT,MAAM,EAAE,GAAGC,QAAQ,CAAC,CAAC;EAEzB,OAAOC,KAAK;AACd","ignoreList":[]}
|