react-native-audio-browser 0.2.0-next.2 → 0.2.0-next.21
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 +35 -21
- package/android/build.gradle +35 -12
- package/android/gradle.properties +2 -2
- package/android/src/main/AndroidManifest.xml +3 -1
- package/android/src/main/java/com/audiobrowser/AudioBrowser.kt +389 -164
- package/android/src/main/java/com/audiobrowser/AudioBrowserLifecycleModule.kt +38 -0
- package/android/src/main/java/com/audiobrowser/AudioBrowserPackage.kt +18 -2
- package/android/src/main/java/com/audiobrowser/ServiceBinding.kt +48 -0
- package/android/src/main/java/com/audiobrowser/browser/BrowserManager.kt +315 -213
- package/android/src/main/java/com/audiobrowser/browser/BrowserUrlResolution.kt +24 -5
- package/android/src/main/java/com/audiobrowser/browser/InertStyleDiagnostic.kt +267 -0
- package/android/src/main/java/com/audiobrowser/browser/JsonModels.kt +97 -58
- package/android/src/main/java/com/audiobrowser/browser/SectionScope.kt +70 -29
- package/android/src/main/java/com/audiobrowser/browser/StyleResolver.kt +60 -0
- package/android/src/main/java/com/audiobrowser/extension/ResolvedTrackExt.kt +20 -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/http/HttpClient.kt +20 -3
- package/android/src/main/java/com/audiobrowser/model/IcyTitle.kt +24 -0
- package/android/src/main/java/com/audiobrowser/model/PlaybackMetadata.kt +10 -6
- package/android/src/main/java/com/audiobrowser/model/PlayerUpdateOptions.kt +12 -12
- package/android/src/main/java/com/audiobrowser/player/CapabilityControls.kt +111 -58
- package/android/src/main/java/com/audiobrowser/player/CrossOriginHeaderStripper.kt +77 -0
- package/android/src/main/java/com/audiobrowser/player/MediaFactory.kt +28 -10
- package/android/src/main/java/com/audiobrowser/player/MediaSessionCallback.kt +509 -230
- package/android/src/main/java/com/audiobrowser/player/MediaSessionCommandManager.kt +218 -252
- package/android/src/main/java/com/audiobrowser/player/NowPlayingUpdater.kt +21 -25
- package/android/src/main/java/com/audiobrowser/player/PlaybackStateStore.kt +113 -78
- package/android/src/main/java/com/audiobrowser/player/Player.kt +81 -38
- package/android/src/main/java/com/audiobrowser/player/PlayerCapabilitiesExt.kt +2 -15
- package/android/src/main/java/com/audiobrowser/player/PlayerListener.kt +1 -1
- package/android/src/main/java/com/audiobrowser/player/RetryLoadErrorHandlingPolicy.kt +2 -1
- package/android/src/main/java/com/audiobrowser/player/ShuffleOrderLedBy.kt +30 -0
- package/android/src/main/java/com/audiobrowser/tls/AiaCertChaser.kt +67 -11
- package/android/src/main/java/com/audiobrowser/tls/AiaChasingExtendedTrustManager.kt +168 -0
- package/android/src/main/java/com/audiobrowser/tls/AiaChasingTrustManager.kt +58 -14
- package/android/src/main/java/com/audiobrowser/tls/AiaTls.kt +35 -7
- package/android/src/main/java/com/audiobrowser/tls/CachingCertificateFetcher.kt +278 -59
- package/android/src/main/java/com/audiobrowser/util/ArtworkVariant.kt +7 -9
- package/android/src/main/java/com/audiobrowser/util/BrowserPathHelper.kt +56 -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 +56 -52
- package/android/src/main/res/values/strings.xml +25 -5
- package/android/src/test/java/com/audiobrowser/ServiceBindingTest.kt +87 -0
- package/android/src/test/java/com/audiobrowser/TestFixtures.kt +119 -33
- package/android/src/test/java/com/audiobrowser/browser/BrowserManagerFavoritesTest.kt +153 -0
- package/android/src/test/java/com/audiobrowser/browser/BrowserManagerLayerResolutionTest.kt +15 -0
- package/android/src/test/java/com/audiobrowser/browser/BrowserManagerTest.kt +346 -8
- 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 +3 -2
- package/android/src/test/java/com/audiobrowser/browser/JsonStyleTest.kt +147 -0
- package/android/src/test/java/com/audiobrowser/browser/SectionScopeTest.kt +128 -55
- 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/model/IcyTitleTest.kt +49 -0
- package/android/src/test/java/com/audiobrowser/player/BrowseTilesTest.kt +385 -0
- package/android/src/test/java/com/audiobrowser/player/CapabilityControlsTest.kt +101 -58
- package/android/src/test/java/com/audiobrowser/player/CrossOriginHeaderStripperTest.kt +94 -0
- package/android/src/test/java/com/audiobrowser/player/MediaSessionSlotMappingTest.kt +45 -0
- package/android/src/test/java/com/audiobrowser/player/NowPlayingUpdaterTest.kt +42 -2
- package/android/src/test/java/com/audiobrowser/player/PlaybackErrorClassifierTest.kt +3 -4
- package/android/src/test/java/com/audiobrowser/player/PlaybackStateStoreTrackJsonTest.kt +55 -0
- package/android/src/test/java/com/audiobrowser/player/RetryLoadErrorHandlingPolicyTest.kt +3 -3
- package/android/src/test/java/com/audiobrowser/player/ShuffleOrderLedByTest.kt +79 -0
- package/android/src/test/java/com/audiobrowser/tls/AiaCertChaserTest.kt +197 -7
- package/android/src/test/java/com/audiobrowser/tls/AiaChasingTrustManagerTest.kt +325 -4
- package/android/src/test/java/com/audiobrowser/tls/CachingCertificateFetcherCallSiteTest.kt +322 -0
- package/android/src/test/java/com/audiobrowser/tls/CachingCertificateFetcherTest.kt +83 -0
- package/android/src/test/java/com/audiobrowser/util/BrowserPathHelperTest.kt +41 -16
- package/android/src/test/java/com/audiobrowser/util/MediaExtrasBuilderTest.kt +162 -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 +230 -205
- package/ios/Browser/BrowserPathHelper.swift +44 -44
- package/ios/Browser/InertStyleDiagnostic.swift +279 -0
- package/ios/Browser/JsonModels.swift +264 -106
- package/ios/Browser/SearchDrillIn.swift +7 -7
- 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 +42 -20
- package/ios/CarPlay/CarPlayListItemFactory.swift +289 -84
- package/ios/CarPlay/CarPlayNowPlayingManager.swift +15 -12
- package/ios/CarPlay/RNABMediaAddHandler.swift +6 -6
- package/ios/CarPlay/RNABMediaAffinityHandler.swift +2 -2
- package/ios/CarPlay/RNABMediaIntentHandler.swift +16 -16
- package/ios/Extension/Capability+RemoteCommand.swift +1 -1
- package/ios/Extension/PlayerCapabilities+Favorite.swift +1 -15
- package/ios/Extension/ResolvedTrack+Copying.swift +13 -15
- package/ios/Extension/Section+Copying.swift +29 -0
- package/ios/Extension/String+IcyCharset.swift +21 -0
- package/ios/Extension/TimedMetadata+AVFoundation.swift +6 -4
- package/ios/Extension/Track+Copying.swift +8 -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 +253 -100
- package/ios/Model/NitroTypeStubs.swift +125 -23
- package/ios/Model/PlayerUpdateOptions.swift +7 -0
- package/ios/Model/RemoteCommand.swift +18 -0
- package/ios/Model/TrackPlayerError.swift +2 -2
- package/ios/Option/SessionCategories.swift +3 -2
- package/ios/Player/MediaIntentCriteria.swift +17 -9
- package/ios/Player/MediaLoader.swift +33 -9
- package/ios/Player/NowPlayingUpdater.swift +54 -6
- package/ios/Player/PlaybackCoordinator.swift +13 -6
- package/ios/Player/PlaybackErrorHandler.swift +4 -4
- package/ios/Player/PlaybackTimer.swift +8 -2
- package/ios/Player/QueueManager.swift +46 -13
- package/ios/Player/RetryManager.swift +80 -18
- package/ios/Player/SeekCompletionHandler.swift +3 -1
- package/ios/Player/ShuffleOrder.swift +33 -0
- package/ios/Player/SleepTimerHandling.swift +13 -0
- package/ios/RemoteCommand/RemoteCommandCallbacks.swift +47 -0
- package/ios/RemoteCommand/RemoteCommandController.swift +62 -24
- 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/LRUCacheTests.swift +111 -0
- package/ios/Tests/LoadSeekCoordinatorTests.swift +3 -1
- package/ios/Tests/MediaIntentCriteriaTests.swift +2 -2
- package/ios/Tests/PlaybackCoordinatorTests.swift +1 -1
- package/ios/Tests/PlaybackErrorHandlerTests.swift +3 -1
- package/ios/Tests/PlaybackStateStoreTests.swift +4 -3
- package/ios/Tests/PlayerTimeObserverTests.swift +37 -0
- package/ios/Tests/QueueManagerTests.swift +122 -10
- package/ios/Tests/RemoteCommandControllerTests.swift +172 -0
- package/ios/Tests/RemoteCommandTests.swift +67 -0
- package/ios/Tests/ResolvedTrackCopyingTests.swift +39 -35
- package/ios/Tests/RetryManagerTests.swift +89 -0
- 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 +8 -1
- package/ios/Tests/TabBarEntriesTests.swift +19 -19
- package/ios/Tests/TimedMetadataAVFoundationTests.swift +42 -0
- 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 +63 -35
- package/ios/TrackPlayerCallbacks.swift +5 -38
- package/ios/TrackSelector.swift +45 -30
- package/ios/Util/ArtworkImageFetcher.swift +16 -1
- package/ios/Util/LRUCache.swift +4 -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 +8 -8
- package/lib/commonjs/AudioBrowser.js.map +1 -1
- package/lib/commonjs/CLAUDE.md +52 -0
- package/lib/commonjs/features/browser-config.js +12 -8
- package/lib/commonjs/features/browser-config.js.map +1 -1
- package/lib/commonjs/features/browser.js +11 -3
- package/lib/commonjs/features/browser.js.map +1 -1
- package/lib/commonjs/features/carConnection.js +1 -1
- package/lib/commonjs/features/equalizer.js +1 -1
- package/lib/commonjs/features/errors.js +3 -3
- package/lib/commonjs/features/favorites.js +14 -11
- package/lib/commonjs/features/favorites.js.map +1 -1
- package/lib/commonjs/features/gate.js +16 -1
- package/lib/commonjs/features/gate.js.map +1 -1
- package/lib/commonjs/features/metadata.js +20 -3
- package/lib/commonjs/features/metadata.js.map +1 -1
- package/lib/commonjs/features/network.js +1 -1
- package/lib/commonjs/features/nowPlaying.js +1 -1
- package/lib/commonjs/features/output.js +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/playWhenReady.js +1 -1
- package/lib/commonjs/features/playback/playing.js +1 -1
- package/lib/commonjs/features/playback/progress.js +3 -2
- 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 +3 -4
- package/lib/commonjs/features/playback/state.js.map +1 -1
- package/lib/commonjs/features/playback/trackPlaybackTime.js +0 -6
- package/lib/commonjs/features/playback/trackPlaybackTime.js.map +1 -1
- package/lib/commonjs/features/playback/volume.js +1 -1
- package/lib/commonjs/features/player/options.js +48 -34
- package/lib/commonjs/features/player/options.js.map +1 -1
- package/lib/commonjs/features/player/setup.js +18 -9
- package/lib/commonjs/features/player/setup.js.map +1 -1
- package/lib/commonjs/features/player/validateOptions.js +23 -0
- package/lib/commonjs/features/player/validateOptions.js.map +1 -0
- package/lib/commonjs/features/queue/activeTrack.js +15 -4
- package/lib/commonjs/features/queue/activeTrack.js.map +1 -1
- package/lib/commonjs/features/queue/queue.js +13 -6
- package/lib/commonjs/features/queue/queue.js.map +1 -1
- package/lib/commonjs/features/queue/repeatMode.js +1 -1
- package/lib/commonjs/features/queue/shuffle.js +1 -1
- package/lib/commonjs/features/remoteControls.js +13 -92
- package/lib/commonjs/features/remoteControls.js.map +1 -1
- package/lib/commonjs/features/sleepTimer.js +13 -1
- package/lib/commonjs/features/sleepTimer.js.map +1 -1
- package/lib/commonjs/test-utils/reactNativeStub.js +65 -0
- package/lib/commonjs/test-utils/reactNativeStub.js.map +1 -0
- package/lib/commonjs/utils/LazyNativeEmitter.js +28 -14
- 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 +200 -75
- package/lib/commonjs/web/NativeAudioBrowser.js.map +1 -1
- package/lib/commonjs/web/TrackPlayer/LoadAttempt.js +37 -0
- package/lib/commonjs/web/TrackPlayer/LoadAttempt.js.map +1 -0
- package/lib/commonjs/web/TrackPlayer/PlaybackStateMachine.js +18 -2
- package/lib/commonjs/web/TrackPlayer/PlaybackStateMachine.js.map +1 -1
- package/lib/commonjs/web/TrackPlayer/Player.js +254 -39
- package/lib/commonjs/web/TrackPlayer/Player.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/TrackPlayer/QueuePlayer.js +33 -12
- package/lib/commonjs/web/TrackPlayer/QueuePlayer.js.map +1 -1
- package/lib/commonjs/web/browser/BrowserManager.js +175 -100
- 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/SearchManager.js +18 -23
- package/lib/commonjs/web/browser/SearchManager.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/http/RequestConfigBuilder.js +110 -27
- package/lib/commonjs/web/http/RequestConfigBuilder.js.map +1 -1
- package/lib/commonjs/web/http/followMediaRedirect.js +219 -0
- package/lib/commonjs/web/http/followMediaRedirect.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 +2 -1
- package/lib/module/AudioBrowser.js.map +1 -1
- package/lib/module/CLAUDE.md +52 -0
- package/lib/module/features/browser-config.js +12 -8
- package/lib/module/features/browser-config.js.map +1 -1
- package/lib/module/features/browser.js +11 -3
- package/lib/module/features/browser.js.map +1 -1
- package/lib/module/features/carConnection.js +1 -1
- package/lib/module/features/equalizer.js +1 -1
- package/lib/module/features/errors.js +3 -3
- package/lib/module/features/favorites.js +14 -11
- package/lib/module/features/favorites.js.map +1 -1
- package/lib/module/features/gate.js +16 -1
- package/lib/module/features/gate.js.map +1 -1
- package/lib/module/features/metadata.js +20 -3
- package/lib/module/features/metadata.js.map +1 -1
- package/lib/module/features/network.js +1 -1
- package/lib/module/features/nowPlaying.js +1 -1
- package/lib/module/features/output.js +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/playWhenReady.js +1 -1
- package/lib/module/features/playback/playing.js +1 -1
- package/lib/module/features/playback/progress.js +3 -2
- 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 +3 -4
- package/lib/module/features/playback/state.js.map +1 -1
- package/lib/module/features/playback/trackPlaybackTime.js +0 -5
- package/lib/module/features/playback/trackPlaybackTime.js.map +1 -1
- package/lib/module/features/playback/volume.js +1 -1
- package/lib/module/features/player/options.js +47 -32
- package/lib/module/features/player/options.js.map +1 -1
- package/lib/module/features/player/setup.js +17 -8
- package/lib/module/features/player/setup.js.map +1 -1
- package/lib/module/features/player/validateOptions.js +19 -0
- package/lib/module/features/player/validateOptions.js.map +1 -0
- package/lib/module/features/queue/activeTrack.js +15 -4
- package/lib/module/features/queue/activeTrack.js.map +1 -1
- package/lib/module/features/queue/queue.js +13 -6
- package/lib/module/features/queue/queue.js.map +1 -1
- package/lib/module/features/queue/repeatMode.js +1 -1
- package/lib/module/features/queue/shuffle.js +1 -1
- package/lib/module/features/remoteControls.js +13 -92
- package/lib/module/features/remoteControls.js.map +1 -1
- package/lib/module/features/sleepTimer.js +13 -1
- package/lib/module/features/sleepTimer.js.map +1 -1
- package/lib/module/test-utils/reactNativeStub.js +58 -0
- package/lib/module/test-utils/reactNativeStub.js.map +1 -0
- package/lib/module/utils/LazyNativeEmitter.js +28 -14
- 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 +200 -75
- package/lib/module/web/NativeAudioBrowser.js.map +1 -1
- package/lib/module/web/TrackPlayer/LoadAttempt.js +32 -0
- package/lib/module/web/TrackPlayer/LoadAttempt.js.map +1 -0
- package/lib/module/web/TrackPlayer/PlaybackStateMachine.js +18 -2
- package/lib/module/web/TrackPlayer/PlaybackStateMachine.js.map +1 -1
- package/lib/module/web/TrackPlayer/Player.js +254 -39
- package/lib/module/web/TrackPlayer/Player.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/TrackPlayer/QueuePlayer.js +33 -12
- package/lib/module/web/TrackPlayer/QueuePlayer.js.map +1 -1
- package/lib/module/web/browser/BrowserManager.js +175 -100
- 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/SearchManager.js +18 -23
- package/lib/module/web/browser/SearchManager.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/http/RequestConfigBuilder.js +110 -27
- package/lib/module/web/http/RequestConfigBuilder.js.map +1 -1
- package/lib/module/web/http/followMediaRedirect.js +215 -0
- package/lib/module/web/http/followMediaRedirect.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/package.json +1 -0
- package/lib/typescript/src/AudioBrowser.d.ts +1 -1
- 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 +10 -2
- package/lib/typescript/src/features/browser.d.ts.map +1 -1
- package/lib/typescript/src/features/carConnection.d.ts +1 -1
- package/lib/typescript/src/features/equalizer.d.ts +1 -1
- package/lib/typescript/src/features/errors.d.ts +3 -3
- package/lib/typescript/src/features/favorites.d.ts +14 -11
- package/lib/typescript/src/features/favorites.d.ts.map +1 -1
- package/lib/typescript/src/features/gate.d.ts +18 -2
- package/lib/typescript/src/features/gate.d.ts.map +1 -1
- package/lib/typescript/src/features/metadata.d.ts +20 -3
- package/lib/typescript/src/features/metadata.d.ts.map +1 -1
- package/lib/typescript/src/features/network.d.ts +1 -1
- package/lib/typescript/src/features/nowPlaying.d.ts +1 -1
- package/lib/typescript/src/features/output.d.ts +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/playWhenReady.d.ts +1 -1
- package/lib/typescript/src/features/playback/playing.d.ts +1 -1
- package/lib/typescript/src/features/playback/progress.d.ts +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 +3 -4
- 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/playback/volume.d.ts +1 -1
- package/lib/typescript/src/features/player/options.d.ts +108 -56
- package/lib/typescript/src/features/player/options.d.ts.map +1 -1
- package/lib/typescript/src/features/player/setup.d.ts +14 -4
- package/lib/typescript/src/features/player/setup.d.ts.map +1 -1
- package/lib/typescript/src/features/player/validateOptions.d.ts +2 -0
- package/lib/typescript/src/features/player/validateOptions.d.ts.map +1 -0
- package/lib/typescript/src/features/queue/activeTrack.d.ts +9 -2
- package/lib/typescript/src/features/queue/activeTrack.d.ts.map +1 -1
- package/lib/typescript/src/features/queue/queue.d.ts +7 -4
- package/lib/typescript/src/features/queue/queue.d.ts.map +1 -1
- package/lib/typescript/src/features/queue/repeatMode.d.ts +1 -1
- package/lib/typescript/src/features/queue/shuffle.d.ts +1 -1
- package/lib/typescript/src/features/remoteControls.d.ts +23 -22
- package/lib/typescript/src/features/remoteControls.d.ts.map +1 -1
- package/lib/typescript/src/features/sleepTimer.d.ts +1 -1
- package/lib/typescript/src/features/sleepTimer.d.ts.map +1 -1
- package/lib/typescript/src/test-utils/reactNativeStub.d.ts +36 -0
- package/lib/typescript/src/test-utils/reactNativeStub.d.ts.map +1 -0
- package/lib/typescript/src/types/browser-native.d.ts +3 -2
- package/lib/typescript/src/types/browser-native.d.ts.map +1 -1
- package/lib/typescript/src/types/browser-nodes.d.ts +380 -126
- package/lib/typescript/src/types/browser-nodes.d.ts.map +1 -1
- package/lib/typescript/src/types/browser.d.ts +82 -57
- package/lib/typescript/src/types/browser.d.ts.map +1 -1
- package/lib/typescript/src/utils/LazyNativeEmitter.d.ts +19 -16
- 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 +1 -2
- package/nitrogen/generated/android/AudioBrowserOnLoad.cpp +2 -0
- package/nitrogen/generated/android/c++/JAndroidOptions.hpp +10 -10
- 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__string__.hpp +102 -0
- 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 +7 -10
- 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 +45 -25
- package/nitrogen/generated/android/c++/JHybridAudioBrowserSpec.hpp +1 -1
- 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 +36 -11
- package/nitrogen/generated/android/c++/JNativeRouteEntry.hpp +14 -2
- package/nitrogen/generated/android/c++/JNativeSetupPlayerOptions.hpp +15 -12
- package/nitrogen/generated/android/c++/JNativeUpdateOptions.hpp +7 -10
- package/nitrogen/generated/android/c++/JNitroAndroidUpdateOptions.hpp +10 -10
- package/nitrogen/generated/android/c++/JNitroIOSUpdateOptions.hpp +9 -3
- package/nitrogen/generated/android/c++/JOptions.hpp +7 -10
- package/nitrogen/generated/android/c++/JPlaybackActiveTrackChangedEvent.hpp +8 -3
- package/nitrogen/generated/android/c++/JPlayerCapabilities.hpp +5 -11
- package/nitrogen/generated/android/c++/{JNotificationButton.hpp → JRemoteButton.hpp} +19 -19
- package/nitrogen/generated/android/c++/JRemoteButtonLayout.hpp +86 -0
- package/nitrogen/generated/android/c++/JResolvedTrack.hpp +57 -49
- package/nitrogen/generated/android/c++/JSection.hpp +116 -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 +25 -46
- package/nitrogen/generated/android/c++/JTrackLoadEvent.hpp +8 -2
- package/nitrogen/generated/android/c++/JTrackStyle.hpp +46 -18
- package/nitrogen/generated/android/c++/JVariant_NullType_RemoteButtonLayout.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_RemoteButtonLayout.hpp +75 -0
- package/nitrogen/generated/android/c++/JVariant_ResolvedTrack_BrowseError_Promise_BrowseResult_.hpp +16 -4
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/AndroidOptions.kt +3 -3
- 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/Func_std__shared_ptr_Promise_std__string__.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/GridTile.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/HybridAudioBrowserSpec.kt +1 -1
- 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 +8 -5
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NitroAndroidUpdateOptions.kt +3 -3
- 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/{NotificationButton.kt → RemoteButton.kt} +3 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemoteButtonLayout.kt +44 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ResolvedTrack.kt +12 -15
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{FavoriteConfig.kt → Section.kt} +15 -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 -12
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TrackStyle.kt +35 -5
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{Variant_NullType_NotificationButtonLayout.kt → Variant_NullType_RemoteButtonLayout.kt} +9 -9
- package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Bridge.cpp +9 -0
- package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Bridge.hpp +244 -133
- package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Umbrella.hpp +31 -16
- package/nitrogen/generated/ios/c++/HybridAudioBrowserSpecSwift.hpp +33 -18
- package/nitrogen/generated/ios/swift/AndroidOptions.swift +12 -12
- 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/Func_std__shared_ptr_Promise_std__string__.swift +54 -0
- package/nitrogen/generated/ios/swift/GridTile.swift +44 -0
- package/nitrogen/generated/ios/swift/HybridAudioBrowserSpec.swift +1 -1
- package/nitrogen/generated/ios/swift/HybridAudioBrowserSpec_cxx.swift +2 -2
- 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 +52 -5
- package/nitrogen/generated/ios/swift/NitroAndroidUpdateOptions.swift +12 -12
- package/nitrogen/generated/ios/swift/NitroIOSUpdateOptions.swift +12 -1
- package/nitrogen/generated/ios/swift/PlayerCapabilities.swift +8 -27
- package/nitrogen/generated/ios/swift/{NotificationButton.swift → RemoteButton.swift} +6 -6
- package/nitrogen/generated/ios/swift/RemoteButtonLayout.swift +57 -0
- package/nitrogen/generated/ios/swift/ResolvedTrack.swift +62 -73
- package/nitrogen/generated/ios/swift/Section.swift +82 -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 +28 -63
- package/nitrogen/generated/ios/swift/TrackStyle.swift +86 -22
- package/nitrogen/generated/ios/swift/{Variant_NullType_NotificationButtonLayout.swift → Variant_NullType_RemoteButtonLayout.swift} +3 -3
- package/nitrogen/generated/shared/c++/AndroidOptions.hpp +8 -8
- 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++/HybridAudioBrowserSpec.cpp +1 -1
- package/nitrogen/generated/shared/c++/HybridAudioBrowserSpec.hpp +1 -1
- 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 +10 -6
- package/nitrogen/generated/shared/c++/NitroAndroidUpdateOptions.hpp +8 -8
- package/nitrogen/generated/shared/c++/NitroIOSUpdateOptions.hpp +9 -2
- package/nitrogen/generated/shared/c++/PlayerCapabilities.hpp +6 -9
- package/nitrogen/generated/shared/c++/{NotificationButton.hpp → RemoteButton.hpp} +19 -19
- package/nitrogen/generated/shared/c++/RemoteButtonLayout.hpp +94 -0
- package/nitrogen/generated/shared/c++/ResolvedTrack.hpp +33 -37
- package/nitrogen/generated/shared/c++/Section.hpp +102 -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 +18 -30
- package/nitrogen/generated/shared/c++/TrackStyle.hpp +73 -34
- package/package.json +24 -11
- package/src/AudioBrowser.ts +2 -1
- package/src/CLAUDE.md +52 -0
- package/src/features/battery.test.ts +79 -0
- package/src/features/browser-config.test.ts +21 -6
- package/src/features/browser-config.ts +12 -8
- package/src/features/browser.test.ts +1 -1
- package/src/features/browser.ts +11 -3
- package/src/features/carConnection.ts +1 -1
- package/src/features/equalizer.ts +1 -1
- package/src/features/errors.ts +3 -3
- package/src/features/favorites.ts +14 -11
- package/src/features/gate.ts +16 -1
- package/src/features/hook-wiring.test.ts +302 -0
- package/src/features/metadata.ts +20 -3
- package/src/features/network.ts +1 -1
- package/src/features/nowPlaying.ts +1 -1
- package/src/features/output.ts +1 -1
- package/src/features/playback/controls.ts +4 -2
- package/src/features/playback/playWhenReady.ts +1 -1
- package/src/features/playback/playing.ts +1 -1
- package/src/features/playback/progress.test.ts +169 -0
- package/src/features/playback/progress.ts +3 -2
- package/src/features/playback/rate.ts +8 -1
- package/src/features/playback/state.ts +3 -4
- package/src/features/playback/trackPlaybackTime.test.ts +16 -6
- package/src/features/playback/trackPlaybackTime.ts +1 -6
- package/src/features/playback/volume.ts +1 -1
- package/src/features/player/options.ts +126 -76
- package/src/features/player/setup.test.ts +24 -7
- package/src/features/player/setup.ts +22 -10
- package/src/features/player/validateOptions.ts +21 -0
- package/src/features/queue/activeTrack.ts +15 -4
- package/src/features/queue/queue.ts +13 -6
- package/src/features/queue/repeatMode.ts +1 -1
- package/src/features/queue/shuffle.ts +1 -1
- package/src/features/remoteControls.ts +13 -92
- package/src/features/sleepTimer.test.ts +172 -0
- package/src/features/sleepTimer.ts +9 -1
- package/src/nitro-stub-drift.test.ts +277 -0
- package/src/public-surface.test.ts +147 -0
- package/src/specs/audio-browser.nitro.ts +5 -4
- package/src/style-resolution.test.ts +210 -0
- package/src/test-utils/reactNativeStub.ts +60 -0
- package/src/types/browser-native.ts +7 -3
- package/src/types/browser-nodes.ts +396 -134
- package/src/types/browser.ts +85 -59
- package/src/utils/LazyNativeEmitter.ts +28 -15
- package/src/utils/NativeUpdatedValue.ts +29 -13
- package/src/utils/getTrackIdentity.ts +20 -0
- package/src/utils/useDebug.test.ts +182 -0
- package/src/utils/useNativeUpdatedValue.test.ts +103 -0
- package/src/utils/useNativeValueRefreshedBy.ts +38 -0
- package/src/web/NativeAudioBrowser.playWhenReady.test.ts +232 -2
- package/src/web/NativeAudioBrowser.ts +239 -82
- package/src/web/TrackPlayer/LoadAttempt.ts +29 -0
- package/src/web/TrackPlayer/PlaybackStateMachine.test.ts +60 -13
- package/src/web/TrackPlayer/PlaybackStateMachine.ts +22 -6
- package/src/web/TrackPlayer/Player.dispatch.test.ts +5 -3
- package/src/web/TrackPlayer/Player.load.test.ts +137 -1
- package/src/web/TrackPlayer/Player.ts +284 -37
- package/src/web/TrackPlayer/QueueManager.test.ts +29 -0
- package/src/web/TrackPlayer/QueueManager.ts +14 -0
- package/src/web/TrackPlayer/QueuePlayer.ts +33 -14
- package/src/web/__tests__/lifecycle.test.ts +345 -0
- package/src/web/__tests__/lifecycleHarness.ts +351 -0
- package/src/web/__tests__/loadEdgeCases.test.ts +246 -0
- package/src/web/__tests__/loadSupersession.test.ts +175 -0
- package/src/web/__tests__/retry.test.ts +169 -0
- package/src/web/browser/BrowserManager.ts +209 -111
- package/src/web/browser/FavoriteManager.test.ts +84 -0
- package/src/web/browser/FavoriteManager.ts +28 -23
- package/src/web/browser/SearchManager.test.ts +75 -0
- package/src/web/browser/SearchManager.ts +25 -28
- package/src/web/browser/__tests__/artwork-resolution.test.ts +117 -0
- package/src/web/browser/__tests__/layer-resolver.test.ts +35 -0
- package/src/web/browser/__tests__/search-artwork.test.ts +46 -0
- package/src/web/browser/__tests__/search-navigation.test.ts +76 -0
- 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/http/RequestConfigBuilder.test.ts +241 -1
- package/src/web/http/RequestConfigBuilder.ts +140 -33
- package/src/web/http/followMediaRedirect.test.ts +289 -0
- package/src/web/http/followMediaRedirect.ts +253 -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 +247 -0
- package/ios/CarPlay/ImageRowItem+CarPlay.swift +0 -19
- package/ios/Model/MediaURL.swift +0 -67
- package/nitrogen/generated/android/c++/JFavoriteConfig.hpp +0 -58
- package/nitrogen/generated/android/c++/JImageRowItem.hpp +0 -105
- package/nitrogen/generated/android/c++/JNotificationButtonLayout.hpp +0 -94
- 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/c++/JVariant_NullType_NotificationButtonLayout.cpp +0 -26
- package/nitrogen/generated/android/c++/JVariant_NullType_NotificationButtonLayout.hpp +0 -75
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ImageRowItem.kt +0 -68
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NotificationButtonLayout.kt +0 -50
- 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/NotificationButtonLayout.swift +0 -92
- 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
- package/nitrogen/generated/shared/c++/NotificationButtonLayout.hpp +0 -102
|
@@ -18,7 +18,7 @@ public extension NativeBrowserConfiguration {
|
|
|
18
18
|
/**
|
|
19
19
|
* Create a new instance of `NativeBrowserConfiguration`.
|
|
20
20
|
*/
|
|
21
|
-
init(path: String?, request: TransformableRequestConfig?, requestResolver: (() -> Promise<Promise<TransformableRequestConfig>>)?, browse: TransformableRequestConfig?, browseResolver: (() -> Promise<Promise<TransformableRequestConfig>>)?, media: MediaRequestConfig?, artwork: ArtworkRequestConfig?, nowPlayingArtwork: ArtworkRequestConfig?, routes: [NativeRouteEntry]?, singleTrack: Bool?, handleTrackLoad: ((_ event: TrackLoadEvent) -> Promise<Promise<Void>>)?, androidControllerOfflineError: Bool?, carPlayLoadingTitle: String?,
|
|
21
|
+
init(path: String?, request: TransformableRequestConfig?, requestResolver: (() -> Promise<Promise<TransformableRequestConfig>>)?, browse: TransformableRequestConfig?, browseResolver: (() -> Promise<Promise<TransformableRequestConfig>>)?, media: MediaRequestConfig?, artwork: ArtworkRequestConfig?, nowPlayingArtwork: ArtworkRequestConfig?, routes: [NativeRouteEntry]?, singleTrack: Bool?, handleTrackLoad: ((_ event: TrackLoadEvent) -> Promise<Promise<Void>>)?, androidControllerOfflineError: Bool?, viewMoreTitle: (() -> Promise<String>)?, carPlayLoadingTitle: String?, resolveAlbumPath: ((_ track: Track) -> Promise<String?>)?, formatNavigationError: ((_ params: FormatNavigationErrorParams) -> Promise<FormattedNavigationError?>)?) {
|
|
22
22
|
self.init({ () -> bridge.std__optional_std__string_ in
|
|
23
23
|
if let __unwrappedValue = path {
|
|
24
24
|
return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
|
|
@@ -106,6 +106,15 @@ public extension NativeBrowserConfiguration {
|
|
|
106
106
|
} else {
|
|
107
107
|
return .init()
|
|
108
108
|
}
|
|
109
|
+
}(), { () -> bridge.std__optional_std__function_std__shared_ptr_Promise_std__string______ in
|
|
110
|
+
if let __unwrappedValue = viewMoreTitle {
|
|
111
|
+
return bridge.create_std__optional_std__function_std__shared_ptr_Promise_std__string______({ () -> bridge.Func_std__shared_ptr_Promise_std__string__ in
|
|
112
|
+
let __closureWrapper = Func_std__shared_ptr_Promise_std__string__(__unwrappedValue)
|
|
113
|
+
return bridge.create_Func_std__shared_ptr_Promise_std__string__(__closureWrapper.toUnsafe())
|
|
114
|
+
}())
|
|
115
|
+
} else {
|
|
116
|
+
return .init()
|
|
117
|
+
}
|
|
109
118
|
}(), { () -> bridge.std__optional_std__string_ in
|
|
110
119
|
if let __unwrappedValue = carPlayLoadingTitle {
|
|
111
120
|
return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
|
|
@@ -113,7 +122,7 @@ public extension NativeBrowserConfiguration {
|
|
|
113
122
|
return .init()
|
|
114
123
|
}
|
|
115
124
|
}(), { () -> bridge.std__optional_std__function_std__shared_ptr_Promise_std__optional_std__string____const_Track_____track______ in
|
|
116
|
-
if let __unwrappedValue =
|
|
125
|
+
if let __unwrappedValue = resolveAlbumPath {
|
|
117
126
|
return bridge.create_std__optional_std__function_std__shared_ptr_Promise_std__optional_std__string____const_Track_____track______({ () -> bridge.Func_std__shared_ptr_Promise_std__optional_std__string____Track in
|
|
118
127
|
let __closureWrapper = Func_std__shared_ptr_Promise_std__optional_std__string____Track(__unwrappedValue)
|
|
119
128
|
return bridge.create_Func_std__shared_ptr_Promise_std__optional_std__string____Track(__closureWrapper.toUnsafe())
|
|
@@ -320,6 +329,44 @@ public extension NativeBrowserConfiguration {
|
|
|
320
329
|
}()
|
|
321
330
|
}
|
|
322
331
|
|
|
332
|
+
@inline(__always)
|
|
333
|
+
var viewMoreTitle: (() -> Promise<String>)? {
|
|
334
|
+
return { () -> (() -> Promise<String>)? in
|
|
335
|
+
if bridge.has_value_std__optional_std__function_std__shared_ptr_Promise_std__string______(self.__viewMoreTitle) {
|
|
336
|
+
let __unwrapped = bridge.get_std__optional_std__function_std__shared_ptr_Promise_std__string______(self.__viewMoreTitle)
|
|
337
|
+
return { () -> () -> Promise<String> in
|
|
338
|
+
let __wrappedFunction = bridge.wrap_Func_std__shared_ptr_Promise_std__string__(__unwrapped)
|
|
339
|
+
return { () -> Promise<String> in
|
|
340
|
+
let __result = __wrappedFunction.call()
|
|
341
|
+
return { () -> Promise<String> in
|
|
342
|
+
let __promise = Promise<String>()
|
|
343
|
+
let __resolver = { (__result: String) in
|
|
344
|
+
__promise.resolve(withResult: __result)
|
|
345
|
+
}
|
|
346
|
+
let __rejecter = { (__error: Error) in
|
|
347
|
+
__promise.reject(withError: __error)
|
|
348
|
+
}
|
|
349
|
+
let __resolverCpp = { () -> bridge.Func_void_std__string in
|
|
350
|
+
let __closureWrapper = Func_void_std__string(__resolver)
|
|
351
|
+
return bridge.create_Func_void_std__string(__closureWrapper.toUnsafe())
|
|
352
|
+
}()
|
|
353
|
+
let __rejecterCpp = { () -> bridge.Func_void_std__exception_ptr in
|
|
354
|
+
let __closureWrapper = Func_void_std__exception_ptr(__rejecter)
|
|
355
|
+
return bridge.create_Func_void_std__exception_ptr(__closureWrapper.toUnsafe())
|
|
356
|
+
}()
|
|
357
|
+
let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_std__string__(__result)
|
|
358
|
+
__promiseHolder.addOnResolvedListener(__resolverCpp)
|
|
359
|
+
__promiseHolder.addOnRejectedListener(__rejecterCpp)
|
|
360
|
+
return __promise
|
|
361
|
+
}()
|
|
362
|
+
}
|
|
363
|
+
}()
|
|
364
|
+
} else {
|
|
365
|
+
return nil
|
|
366
|
+
}
|
|
367
|
+
}()
|
|
368
|
+
}
|
|
369
|
+
|
|
323
370
|
@inline(__always)
|
|
324
371
|
var carPlayLoadingTitle: String? {
|
|
325
372
|
return { () -> String? in
|
|
@@ -333,10 +380,10 @@ public extension NativeBrowserConfiguration {
|
|
|
333
380
|
}
|
|
334
381
|
|
|
335
382
|
@inline(__always)
|
|
336
|
-
var
|
|
383
|
+
var resolveAlbumPath: ((_ track: Track) -> Promise<String?>)? {
|
|
337
384
|
return { () -> ((_ track: Track) -> Promise<String?>)? in
|
|
338
|
-
if bridge.has_value_std__optional_std__function_std__shared_ptr_Promise_std__optional_std__string____const_Track_____track______(self.
|
|
339
|
-
let __unwrapped = bridge.get_std__optional_std__function_std__shared_ptr_Promise_std__optional_std__string____const_Track_____track______(self.
|
|
385
|
+
if bridge.has_value_std__optional_std__function_std__shared_ptr_Promise_std__optional_std__string____const_Track_____track______(self.__resolveAlbumPath) {
|
|
386
|
+
let __unwrapped = bridge.get_std__optional_std__function_std__shared_ptr_Promise_std__optional_std__string____const_Track_____track______(self.__resolveAlbumPath)
|
|
340
387
|
return { () -> (Track) -> Promise<String?> in
|
|
341
388
|
let __wrappedFunction = bridge.wrap_Func_std__shared_ptr_Promise_std__optional_std__string____Track(__unwrapped)
|
|
342
389
|
return { (__track: Track) -> Promise<String?> in
|
|
@@ -18,7 +18,7 @@ public extension NitroAndroidUpdateOptions {
|
|
|
18
18
|
/**
|
|
19
19
|
* Create a new instance of `NitroAndroidUpdateOptions`.
|
|
20
20
|
*/
|
|
21
|
-
init(appKilledPlaybackBehavior: AppKilledPlaybackBehavior?, skipSilence: Bool?,
|
|
21
|
+
init(appKilledPlaybackBehavior: AppKilledPlaybackBehavior?, skipSilence: Bool?, remoteButtonLayout: Variant_NullType_RemoteButtonLayout?) {
|
|
22
22
|
self.init({ () -> bridge.std__optional_AppKilledPlaybackBehavior_ in
|
|
23
23
|
if let __unwrappedValue = appKilledPlaybackBehavior {
|
|
24
24
|
return bridge.create_std__optional_AppKilledPlaybackBehavior_(__unwrappedValue)
|
|
@@ -31,14 +31,14 @@ public extension NitroAndroidUpdateOptions {
|
|
|
31
31
|
} else {
|
|
32
32
|
return .init()
|
|
33
33
|
}
|
|
34
|
-
}(), { () -> bridge.
|
|
35
|
-
if let __unwrappedValue =
|
|
36
|
-
return bridge.
|
|
34
|
+
}(), { () -> bridge.std__optional_std__variant_nitro__NullType__RemoteButtonLayout__ in
|
|
35
|
+
if let __unwrappedValue = remoteButtonLayout {
|
|
36
|
+
return bridge.create_std__optional_std__variant_nitro__NullType__RemoteButtonLayout__({ () -> bridge.std__variant_nitro__NullType__RemoteButtonLayout_ in
|
|
37
37
|
switch __unwrappedValue {
|
|
38
38
|
case .first(let __value):
|
|
39
|
-
return bridge.
|
|
39
|
+
return bridge.create_std__variant_nitro__NullType__RemoteButtonLayout_(margelo.nitro.NullType.null)
|
|
40
40
|
case .second(let __value):
|
|
41
|
-
return bridge.
|
|
41
|
+
return bridge.create_std__variant_nitro__NullType__RemoteButtonLayout_(__value)
|
|
42
42
|
}
|
|
43
43
|
}().variant)
|
|
44
44
|
} else {
|
|
@@ -65,12 +65,12 @@ public extension NitroAndroidUpdateOptions {
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
@inline(__always)
|
|
68
|
-
var
|
|
69
|
-
return { () ->
|
|
70
|
-
if bridge.
|
|
71
|
-
let __unwrapped = bridge.
|
|
72
|
-
return { () ->
|
|
73
|
-
let __variant = bridge.
|
|
68
|
+
var remoteButtonLayout: Variant_NullType_RemoteButtonLayout? {
|
|
69
|
+
return { () -> Variant_NullType_RemoteButtonLayout? in
|
|
70
|
+
if bridge.has_value_std__optional_std__variant_nitro__NullType__RemoteButtonLayout__(self.__remoteButtonLayout) {
|
|
71
|
+
let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__RemoteButtonLayout__(self.__remoteButtonLayout)
|
|
72
|
+
return { () -> Variant_NullType_RemoteButtonLayout in
|
|
73
|
+
let __variant = bridge.std__variant_nitro__NullType__RemoteButtonLayout_(__unwrapped)
|
|
74
74
|
switch __variant.index() {
|
|
75
75
|
case 0:
|
|
76
76
|
let __actual = __variant.get_0()
|
|
@@ -18,7 +18,7 @@ public extension NitroIOSUpdateOptions {
|
|
|
18
18
|
/**
|
|
19
19
|
* Create a new instance of `NitroIOSUpdateOptions`.
|
|
20
20
|
*/
|
|
21
|
-
init(playbackRates: [Double]?, carPlayUpNextButton: Bool?, carPlayNowPlayingButtons: [CarPlayNowPlayingButton]?) {
|
|
21
|
+
init(playbackRates: [Double]?, carPlayUpNextButton: Bool?, carPlayNowPlayingButtons: [CarPlayNowPlayingButton]?, carPlayPlayingIndicatorLocation: CarPlayPlayingIndicatorLocation?) {
|
|
22
22
|
self.init({ () -> bridge.std__optional_std__vector_double__ in
|
|
23
23
|
if let __unwrappedValue = playbackRates {
|
|
24
24
|
return bridge.create_std__optional_std__vector_double__({ () -> bridge.std__vector_double_ in
|
|
@@ -49,6 +49,12 @@ public extension NitroIOSUpdateOptions {
|
|
|
49
49
|
} else {
|
|
50
50
|
return .init()
|
|
51
51
|
}
|
|
52
|
+
}(), { () -> bridge.std__optional_CarPlayPlayingIndicatorLocation_ in
|
|
53
|
+
if let __unwrappedValue = carPlayPlayingIndicatorLocation {
|
|
54
|
+
return bridge.create_std__optional_CarPlayPlayingIndicatorLocation_(__unwrappedValue)
|
|
55
|
+
} else {
|
|
56
|
+
return .init()
|
|
57
|
+
}
|
|
52
58
|
}())
|
|
53
59
|
}
|
|
54
60
|
|
|
@@ -87,4 +93,9 @@ public extension NitroIOSUpdateOptions {
|
|
|
87
93
|
}
|
|
88
94
|
}()
|
|
89
95
|
}
|
|
96
|
+
|
|
97
|
+
@inline(__always)
|
|
98
|
+
var carPlayPlayingIndicatorLocation: CarPlayPlayingIndicatorLocation? {
|
|
99
|
+
return self.__carPlayPlayingIndicatorLocation.value
|
|
100
|
+
}
|
|
90
101
|
}
|
|
@@ -18,7 +18,7 @@ public extension PlayerCapabilities {
|
|
|
18
18
|
/**
|
|
19
19
|
* Create a new instance of `PlayerCapabilities`.
|
|
20
20
|
*/
|
|
21
|
-
init(play: Bool?, pause: Bool?, stop: Bool?, seekTo: Bool?, skipToNext: Bool?, skipToPrevious: Bool?, jumpForward: Bool?, jumpBackward: Bool?, favorite:
|
|
21
|
+
init(play: Bool?, pause: Bool?, stop: Bool?, seekTo: Bool?, skipToNext: Bool?, skipToPrevious: Bool?, jumpForward: Bool?, jumpBackward: Bool?, favorite: Bool?, shuffleMode: Bool?, repeatMode: Bool?, playbackRate: Bool?) {
|
|
22
22
|
self.init({ () -> bridge.std__optional_bool_ in
|
|
23
23
|
if let __unwrappedValue = play {
|
|
24
24
|
return bridge.create_std__optional_bool_(__unwrappedValue)
|
|
@@ -67,16 +67,9 @@ public extension PlayerCapabilities {
|
|
|
67
67
|
} else {
|
|
68
68
|
return .init()
|
|
69
69
|
}
|
|
70
|
-
}(), { () -> bridge.
|
|
70
|
+
}(), { () -> bridge.std__optional_bool_ in
|
|
71
71
|
if let __unwrappedValue = favorite {
|
|
72
|
-
return bridge.
|
|
73
|
-
switch __unwrappedValue {
|
|
74
|
-
case .first(let __value):
|
|
75
|
-
return bridge.create_std__variant_bool__FavoriteConfig_(__value)
|
|
76
|
-
case .second(let __value):
|
|
77
|
-
return bridge.create_std__variant_bool__FavoriteConfig_(__value)
|
|
78
|
-
}
|
|
79
|
-
}().variant)
|
|
72
|
+
return bridge.create_std__optional_bool_(__unwrappedValue)
|
|
80
73
|
} else {
|
|
81
74
|
return .init()
|
|
82
75
|
}
|
|
@@ -198,23 +191,11 @@ public extension PlayerCapabilities {
|
|
|
198
191
|
}
|
|
199
192
|
|
|
200
193
|
@inline(__always)
|
|
201
|
-
var favorite:
|
|
202
|
-
return { () ->
|
|
203
|
-
if bridge.
|
|
204
|
-
let __unwrapped = bridge.
|
|
205
|
-
return
|
|
206
|
-
let __variant = bridge.std__variant_bool__FavoriteConfig_(__unwrapped)
|
|
207
|
-
switch __variant.index() {
|
|
208
|
-
case 0:
|
|
209
|
-
let __actual = __variant.get_0()
|
|
210
|
-
return .first(__actual)
|
|
211
|
-
case 1:
|
|
212
|
-
let __actual = __variant.get_1()
|
|
213
|
-
return .second(__actual)
|
|
214
|
-
default:
|
|
215
|
-
fatalError("Variant can never have index \(__variant.index())!")
|
|
216
|
-
}
|
|
217
|
-
}()
|
|
194
|
+
var favorite: Bool? {
|
|
195
|
+
return { () -> Bool? in
|
|
196
|
+
if bridge.has_value_std__optional_bool_(self.__favorite) {
|
|
197
|
+
let __unwrapped = bridge.get_std__optional_bool_(self.__favorite)
|
|
198
|
+
return __unwrapped
|
|
218
199
|
} else {
|
|
219
200
|
return nil
|
|
220
201
|
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
///
|
|
2
|
-
///
|
|
2
|
+
/// RemoteButton.swift
|
|
3
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
4
|
/// https://github.com/mrousavy/nitro
|
|
5
5
|
/// Copyright © Marc Rousavy @ Margelo
|
|
6
6
|
///
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
-
* Represents the JS union `
|
|
9
|
+
* Represents the JS union `RemoteButton`, backed by a C++ enum.
|
|
10
10
|
*/
|
|
11
|
-
public typealias
|
|
11
|
+
public typealias RemoteButton = margelo.nitro.audiobrowser.RemoteButton
|
|
12
12
|
|
|
13
|
-
public extension
|
|
13
|
+
public extension RemoteButton {
|
|
14
14
|
/**
|
|
15
|
-
* Get a
|
|
15
|
+
* Get a RemoteButton for the given String value, or
|
|
16
16
|
* return `nil` if the given value was invalid/unknown.
|
|
17
17
|
*/
|
|
18
18
|
init?(fromString string: String) {
|
|
@@ -33,7 +33,7 @@ public extension NotificationButton {
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
|
-
* Get the String value this
|
|
36
|
+
* Get the String value this RemoteButton represents.
|
|
37
37
|
*/
|
|
38
38
|
var stringValue: String {
|
|
39
39
|
switch self {
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// RemoteButtonLayout.swift
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
import NitroModules
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Represents an instance of `RemoteButtonLayout`, backed by a C++ struct.
|
|
12
|
+
*/
|
|
13
|
+
public typealias RemoteButtonLayout = margelo.nitro.audiobrowser.RemoteButtonLayout
|
|
14
|
+
|
|
15
|
+
public extension RemoteButtonLayout {
|
|
16
|
+
private typealias bridge = margelo.nitro.audiobrowser.bridge.swift
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Create a new instance of `RemoteButtonLayout`.
|
|
20
|
+
*/
|
|
21
|
+
init(back: RemoteButton?, forward: RemoteButton?, overflow: [RemoteButton]) {
|
|
22
|
+
self.init({ () -> bridge.std__optional_RemoteButton_ in
|
|
23
|
+
if let __unwrappedValue = back {
|
|
24
|
+
return bridge.create_std__optional_RemoteButton_(__unwrappedValue)
|
|
25
|
+
} else {
|
|
26
|
+
return .init()
|
|
27
|
+
}
|
|
28
|
+
}(), { () -> bridge.std__optional_RemoteButton_ in
|
|
29
|
+
if let __unwrappedValue = forward {
|
|
30
|
+
return bridge.create_std__optional_RemoteButton_(__unwrappedValue)
|
|
31
|
+
} else {
|
|
32
|
+
return .init()
|
|
33
|
+
}
|
|
34
|
+
}(), { () -> bridge.std__vector_RemoteButton_ in
|
|
35
|
+
var __vector = bridge.create_std__vector_RemoteButton_(overflow.count)
|
|
36
|
+
for __item in overflow {
|
|
37
|
+
__vector.push_back(__item)
|
|
38
|
+
}
|
|
39
|
+
return __vector
|
|
40
|
+
}())
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@inline(__always)
|
|
44
|
+
var back: RemoteButton? {
|
|
45
|
+
return self.__back.value
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@inline(__always)
|
|
49
|
+
var forward: RemoteButton? {
|
|
50
|
+
return self.__forward.value
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
@inline(__always)
|
|
54
|
+
var overflow: [RemoteButton] {
|
|
55
|
+
return self.__overflow.map({ __item in __item })
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -18,8 +18,26 @@ public extension ResolvedTrack {
|
|
|
18
18
|
/**
|
|
19
19
|
* Create a new instance of `ResolvedTrack`.
|
|
20
20
|
*/
|
|
21
|
-
init(
|
|
22
|
-
self.init(std.string(
|
|
21
|
+
init(path: String, style: SectionStyle?, sections: [Section]?, children: [Track]?, carPlaySiriListButton: CarPlaySiriListButtonPosition?, id: String?, src: String?, artwork: Variant_String_ArtworkVariants?, artworkSource: ImageSource?, request: TrackRequest?, title: String, subtitle: String?, artist: String?, albumPath: String?, album: String?, description: String?, genre: String?, duration: Double?, disabled: Bool?, favorited: Bool?, live: Bool?, icyCharset: String?) {
|
|
22
|
+
self.init(std.string(path), { () -> bridge.std__optional_SectionStyle_ in
|
|
23
|
+
if let __unwrappedValue = style {
|
|
24
|
+
return bridge.create_std__optional_SectionStyle_(__unwrappedValue)
|
|
25
|
+
} else {
|
|
26
|
+
return .init()
|
|
27
|
+
}
|
|
28
|
+
}(), { () -> bridge.std__optional_std__vector_Section__ in
|
|
29
|
+
if let __unwrappedValue = sections {
|
|
30
|
+
return bridge.create_std__optional_std__vector_Section__({ () -> bridge.std__vector_Section_ in
|
|
31
|
+
var __vector = bridge.create_std__vector_Section_(__unwrappedValue.count)
|
|
32
|
+
for __item in __unwrappedValue {
|
|
33
|
+
__vector.push_back(__item)
|
|
34
|
+
}
|
|
35
|
+
return __vector
|
|
36
|
+
}())
|
|
37
|
+
} else {
|
|
38
|
+
return .init()
|
|
39
|
+
}
|
|
40
|
+
}(), { () -> bridge.std__optional_std__vector_Track__ in
|
|
23
41
|
if let __unwrappedValue = children {
|
|
24
42
|
return bridge.create_std__optional_std__vector_Track__({ () -> bridge.std__vector_Track_ in
|
|
25
43
|
var __vector = bridge.create_std__vector_Track_(__unwrappedValue.count)
|
|
@@ -74,12 +92,6 @@ public extension ResolvedTrack {
|
|
|
74
92
|
} else {
|
|
75
93
|
return .init()
|
|
76
94
|
}
|
|
77
|
-
}(), { () -> bridge.std__optional_bool_ in
|
|
78
|
-
if let __unwrappedValue = artworkCarPlayTinted {
|
|
79
|
-
return bridge.create_std__optional_bool_(__unwrappedValue)
|
|
80
|
-
} else {
|
|
81
|
-
return .init()
|
|
82
|
-
}
|
|
83
95
|
}(), std.string(title), { () -> bridge.std__optional_std__string_ in
|
|
84
96
|
if let __unwrappedValue = subtitle {
|
|
85
97
|
return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
|
|
@@ -93,7 +105,7 @@ public extension ResolvedTrack {
|
|
|
93
105
|
return .init()
|
|
94
106
|
}
|
|
95
107
|
}(), { () -> bridge.std__optional_std__string_ in
|
|
96
|
-
if let __unwrappedValue =
|
|
108
|
+
if let __unwrappedValue = albumPath {
|
|
97
109
|
return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
|
|
98
110
|
} else {
|
|
99
111
|
return .init()
|
|
@@ -122,15 +134,9 @@ public extension ResolvedTrack {
|
|
|
122
134
|
} else {
|
|
123
135
|
return .init()
|
|
124
136
|
}
|
|
125
|
-
}(), { () -> bridge.
|
|
126
|
-
if let __unwrappedValue =
|
|
127
|
-
return bridge.
|
|
128
|
-
} else {
|
|
129
|
-
return .init()
|
|
130
|
-
}
|
|
131
|
-
}(), { () -> bridge.std__optional_TrackStyle_ in
|
|
132
|
-
if let __unwrappedValue = childrenStyle {
|
|
133
|
-
return bridge.create_std__optional_TrackStyle_(__unwrappedValue)
|
|
137
|
+
}(), { () -> bridge.std__optional_bool_ in
|
|
138
|
+
if let __unwrappedValue = disabled {
|
|
139
|
+
return bridge.create_std__optional_bool_(__unwrappedValue)
|
|
134
140
|
} else {
|
|
135
141
|
return .init()
|
|
136
142
|
}
|
|
@@ -140,27 +146,15 @@ public extension ResolvedTrack {
|
|
|
140
146
|
} else {
|
|
141
147
|
return .init()
|
|
142
148
|
}
|
|
143
|
-
}(), { () -> bridge.std__optional_std__string_ in
|
|
144
|
-
if let __unwrappedValue = groupTitle {
|
|
145
|
-
return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
|
|
146
|
-
} else {
|
|
147
|
-
return .init()
|
|
148
|
-
}
|
|
149
149
|
}(), { () -> bridge.std__optional_bool_ in
|
|
150
150
|
if let __unwrappedValue = live {
|
|
151
151
|
return bridge.create_std__optional_bool_(__unwrappedValue)
|
|
152
152
|
} else {
|
|
153
153
|
return .init()
|
|
154
154
|
}
|
|
155
|
-
}(), { () -> bridge.
|
|
156
|
-
if let __unwrappedValue =
|
|
157
|
-
return bridge.
|
|
158
|
-
var __vector = bridge.create_std__vector_ImageRowItem_(__unwrappedValue.count)
|
|
159
|
-
for __item in __unwrappedValue {
|
|
160
|
-
__vector.push_back(__item)
|
|
161
|
-
}
|
|
162
|
-
return __vector
|
|
163
|
-
}())
|
|
155
|
+
}(), { () -> bridge.std__optional_std__string_ in
|
|
156
|
+
if let __unwrappedValue = icyCharset {
|
|
157
|
+
return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
|
|
164
158
|
} else {
|
|
165
159
|
return .init()
|
|
166
160
|
}
|
|
@@ -168,8 +162,25 @@ public extension ResolvedTrack {
|
|
|
168
162
|
}
|
|
169
163
|
|
|
170
164
|
@inline(__always)
|
|
171
|
-
var
|
|
172
|
-
return String(self.
|
|
165
|
+
var path: String {
|
|
166
|
+
return String(self.__path)
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
@inline(__always)
|
|
170
|
+
var style: SectionStyle? {
|
|
171
|
+
return self.__style.value
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
@inline(__always)
|
|
175
|
+
var sections: [Section]? {
|
|
176
|
+
return { () -> [Section]? in
|
|
177
|
+
if bridge.has_value_std__optional_std__vector_Section__(self.__sections) {
|
|
178
|
+
let __unwrapped = bridge.get_std__optional_std__vector_Section__(self.__sections)
|
|
179
|
+
return __unwrapped.map({ __item in __item })
|
|
180
|
+
} else {
|
|
181
|
+
return nil
|
|
182
|
+
}
|
|
183
|
+
}()
|
|
173
184
|
}
|
|
174
185
|
|
|
175
186
|
@inline(__always)
|
|
@@ -247,18 +258,6 @@ public extension ResolvedTrack {
|
|
|
247
258
|
return self.__request.value
|
|
248
259
|
}
|
|
249
260
|
|
|
250
|
-
@inline(__always)
|
|
251
|
-
var artworkCarPlayTinted: Bool? {
|
|
252
|
-
return { () -> Bool? in
|
|
253
|
-
if bridge.has_value_std__optional_bool_(self.__artworkCarPlayTinted) {
|
|
254
|
-
let __unwrapped = bridge.get_std__optional_bool_(self.__artworkCarPlayTinted)
|
|
255
|
-
return __unwrapped
|
|
256
|
-
} else {
|
|
257
|
-
return nil
|
|
258
|
-
}
|
|
259
|
-
}()
|
|
260
|
-
}
|
|
261
|
-
|
|
262
261
|
@inline(__always)
|
|
263
262
|
var title: String {
|
|
264
263
|
return String(self.__title)
|
|
@@ -289,10 +288,10 @@ public extension ResolvedTrack {
|
|
|
289
288
|
}
|
|
290
289
|
|
|
291
290
|
@inline(__always)
|
|
292
|
-
var
|
|
291
|
+
var albumPath: String? {
|
|
293
292
|
return { () -> String? in
|
|
294
|
-
if bridge.has_value_std__optional_std__string_(self.
|
|
295
|
-
let __unwrapped = bridge.get_std__optional_std__string_(self.
|
|
293
|
+
if bridge.has_value_std__optional_std__string_(self.__albumPath) {
|
|
294
|
+
let __unwrapped = bridge.get_std__optional_std__string_(self.__albumPath)
|
|
296
295
|
return String(__unwrapped)
|
|
297
296
|
} else {
|
|
298
297
|
return nil
|
|
@@ -349,20 +348,10 @@ public extension ResolvedTrack {
|
|
|
349
348
|
}
|
|
350
349
|
|
|
351
350
|
@inline(__always)
|
|
352
|
-
var
|
|
353
|
-
return self.__style.value
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
@inline(__always)
|
|
357
|
-
var childrenStyle: TrackStyle? {
|
|
358
|
-
return self.__childrenStyle.value
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
@inline(__always)
|
|
362
|
-
var favorited: Bool? {
|
|
351
|
+
var disabled: Bool? {
|
|
363
352
|
return { () -> Bool? in
|
|
364
|
-
if bridge.has_value_std__optional_bool_(self.
|
|
365
|
-
let __unwrapped = bridge.get_std__optional_bool_(self.
|
|
353
|
+
if bridge.has_value_std__optional_bool_(self.__disabled) {
|
|
354
|
+
let __unwrapped = bridge.get_std__optional_bool_(self.__disabled)
|
|
366
355
|
return __unwrapped
|
|
367
356
|
} else {
|
|
368
357
|
return nil
|
|
@@ -371,11 +360,11 @@ public extension ResolvedTrack {
|
|
|
371
360
|
}
|
|
372
361
|
|
|
373
362
|
@inline(__always)
|
|
374
|
-
var
|
|
375
|
-
return { () ->
|
|
376
|
-
if bridge.
|
|
377
|
-
let __unwrapped = bridge.
|
|
378
|
-
return
|
|
363
|
+
var favorited: Bool? {
|
|
364
|
+
return { () -> Bool? in
|
|
365
|
+
if bridge.has_value_std__optional_bool_(self.__favorited) {
|
|
366
|
+
let __unwrapped = bridge.get_std__optional_bool_(self.__favorited)
|
|
367
|
+
return __unwrapped
|
|
379
368
|
} else {
|
|
380
369
|
return nil
|
|
381
370
|
}
|
|
@@ -395,11 +384,11 @@ public extension ResolvedTrack {
|
|
|
395
384
|
}
|
|
396
385
|
|
|
397
386
|
@inline(__always)
|
|
398
|
-
var
|
|
399
|
-
return { () ->
|
|
400
|
-
if bridge.
|
|
401
|
-
let __unwrapped = bridge.
|
|
402
|
-
return __unwrapped
|
|
387
|
+
var icyCharset: String? {
|
|
388
|
+
return { () -> String? in
|
|
389
|
+
if bridge.has_value_std__optional_std__string_(self.__icyCharset) {
|
|
390
|
+
let __unwrapped = bridge.get_std__optional_std__string_(self.__icyCharset)
|
|
391
|
+
return String(__unwrapped)
|
|
403
392
|
} else {
|
|
404
393
|
return nil
|
|
405
394
|
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// Section.swift
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
import NitroModules
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Represents an instance of `Section`, backed by a C++ struct.
|
|
12
|
+
*/
|
|
13
|
+
public typealias Section = margelo.nitro.audiobrowser.Section
|
|
14
|
+
|
|
15
|
+
public extension Section {
|
|
16
|
+
private typealias bridge = margelo.nitro.audiobrowser.bridge.swift
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Create a new instance of `Section`.
|
|
20
|
+
*/
|
|
21
|
+
init(title: String?, style: SectionStyle?, path: String?, children: [Track]) {
|
|
22
|
+
self.init({ () -> bridge.std__optional_std__string_ in
|
|
23
|
+
if let __unwrappedValue = title {
|
|
24
|
+
return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
|
|
25
|
+
} else {
|
|
26
|
+
return .init()
|
|
27
|
+
}
|
|
28
|
+
}(), { () -> bridge.std__optional_SectionStyle_ in
|
|
29
|
+
if let __unwrappedValue = style {
|
|
30
|
+
return bridge.create_std__optional_SectionStyle_(__unwrappedValue)
|
|
31
|
+
} else {
|
|
32
|
+
return .init()
|
|
33
|
+
}
|
|
34
|
+
}(), { () -> bridge.std__optional_std__string_ in
|
|
35
|
+
if let __unwrappedValue = path {
|
|
36
|
+
return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
|
|
37
|
+
} else {
|
|
38
|
+
return .init()
|
|
39
|
+
}
|
|
40
|
+
}(), { () -> bridge.std__vector_Track_ in
|
|
41
|
+
var __vector = bridge.create_std__vector_Track_(children.count)
|
|
42
|
+
for __item in children {
|
|
43
|
+
__vector.push_back(__item)
|
|
44
|
+
}
|
|
45
|
+
return __vector
|
|
46
|
+
}())
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@inline(__always)
|
|
50
|
+
var title: String? {
|
|
51
|
+
return { () -> String? in
|
|
52
|
+
if bridge.has_value_std__optional_std__string_(self.__title) {
|
|
53
|
+
let __unwrapped = bridge.get_std__optional_std__string_(self.__title)
|
|
54
|
+
return String(__unwrapped)
|
|
55
|
+
} else {
|
|
56
|
+
return nil
|
|
57
|
+
}
|
|
58
|
+
}()
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@inline(__always)
|
|
62
|
+
var style: SectionStyle? {
|
|
63
|
+
return self.__style.value
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
@inline(__always)
|
|
67
|
+
var path: String? {
|
|
68
|
+
return { () -> String? in
|
|
69
|
+
if bridge.has_value_std__optional_std__string_(self.__path) {
|
|
70
|
+
let __unwrapped = bridge.get_std__optional_std__string_(self.__path)
|
|
71
|
+
return String(__unwrapped)
|
|
72
|
+
} else {
|
|
73
|
+
return nil
|
|
74
|
+
}
|
|
75
|
+
}()
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
@inline(__always)
|
|
79
|
+
var children: [Track] {
|
|
80
|
+
return self.__children.map({ __item in __item })
|
|
81
|
+
}
|
|
82
|
+
}
|