@5stones/react-native-audio-browser 0.2.0 → 0.3.0
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/AudioBrowser.podspec +3 -1
- package/android/src/main/cpp/cpp-adapter.cpp +4 -1
- package/android/src/main/java/com/audiobrowser/AudioBrowser.kt +8 -27
- package/android/src/main/java/com/audiobrowser/Service.kt +0 -2
- package/android/src/main/java/com/audiobrowser/browser/BrowserManager.kt +5 -0
- package/android/src/main/java/com/audiobrowser/browser/JsonModels.kt +31 -0
- package/android/src/main/java/com/audiobrowser/browser/SimpleRouter.kt +10 -6
- package/android/src/main/java/com/audiobrowser/browser/TrackLoadHandler.kt +45 -0
- package/android/src/main/java/com/audiobrowser/player/MediaSessionCallback.kt +3 -21
- package/android/src/main/java/com/audiobrowser/player/PlaybackStateStore.kt +1 -0
- package/android/src/main/java/com/audiobrowser/player/Player.kt +1 -0
- package/android/src/test/java/com/audiobrowser/browser/SimpleRouterTest.kt +104 -95
- package/ios/Browser/BrowserConfig.swift +31 -5
- package/ios/Browser/BrowserManager.swift +96 -6
- package/ios/Browser/JsonModels.swift +37 -0
- package/ios/CarPlay/CarPlayController.swift +219 -99
- package/ios/CarPlay/RNABAudioBrowser.h +23 -0
- package/ios/CarPlay/RNABAudioBrowser.m +22 -0
- package/ios/CarPlay/RNABMediaIntentHandler.swift +60 -0
- package/ios/Extension/ChapterMetadata+AVFoundation.swift +1 -1
- package/ios/Extension/CxxVectorConformances.swift +20 -0
- package/ios/Extension/TimedMetadata+AVFoundation.swift +5 -5
- package/ios/Extension/Track+AVPlayer.swift +5 -6
- package/ios/Extension/TrackMetadata+AVFoundation.swift +1 -1
- package/ios/HybridAudioBrowser.swift +107 -46
- package/ios/Model/MediaURL.swift +2 -1
- package/ios/Player/PlayingStateManager.swift +1 -0
- package/ios/Player/RetryManager.swift +26 -65
- package/ios/Player/SleepTimerManager.swift +6 -8
- package/ios/RemoteCommand/RemoteCommandController.swift +6 -0
- package/ios/Tests/SimpleRouterTests.swift +139 -0
- package/ios/TrackPlayer.swift +35 -24
- package/ios/Util/NetworkMonitor.swift +3 -6
- package/ios/Util/SFSymbolRenderer.swift +142 -0
- package/lib/commonjs/features/browser.js +1 -0
- package/lib/commonjs/features/browser.js.map +1 -1
- package/lib/commonjs/features/remoteControls.js +1 -24
- package/lib/commonjs/features/remoteControls.js.map +1 -1
- package/lib/commonjs/web/NativeAudioBrowser.js +20 -24
- package/lib/commonjs/web/NativeAudioBrowser.js.map +1 -1
- package/lib/commonjs/web/SimpleRouter.js +4 -3
- package/lib/commonjs/web/SimpleRouter.js.map +1 -1
- package/lib/commonjs/web/SimpleRouter.test.js +174 -0
- package/lib/commonjs/web/SimpleRouter.test.js.map +1 -0
- package/lib/module/features/browser.js +1 -0
- package/lib/module/features/browser.js.map +1 -1
- package/lib/module/features/remoteControls.js +0 -22
- package/lib/module/features/remoteControls.js.map +1 -1
- package/lib/module/web/NativeAudioBrowser.js +20 -24
- package/lib/module/web/NativeAudioBrowser.js.map +1 -1
- package/lib/module/web/SimpleRouter.js +4 -3
- package/lib/module/web/SimpleRouter.js.map +1 -1
- package/lib/module/web/SimpleRouter.test.js +174 -0
- package/lib/module/web/SimpleRouter.test.js.map +1 -0
- package/lib/typescript/src/features/browser.d.ts.map +1 -1
- package/lib/typescript/src/features/remoteControls.d.ts +0 -26
- package/lib/typescript/src/features/remoteControls.d.ts.map +1 -1
- package/lib/typescript/src/specs/audio-browser.nitro.d.ts +1 -3
- package/lib/typescript/src/specs/audio-browser.nitro.d.ts.map +1 -1
- package/lib/typescript/src/types/browser-native.d.ts +2 -1
- package/lib/typescript/src/types/browser-native.d.ts.map +1 -1
- package/lib/typescript/src/types/browser-nodes.d.ts +46 -1
- package/lib/typescript/src/types/browser-nodes.d.ts.map +1 -1
- package/lib/typescript/src/types/browser.d.ts +32 -0
- package/lib/typescript/src/types/browser.d.ts.map +1 -1
- package/lib/typescript/src/web/NativeAudioBrowser.d.ts +3 -6
- package/lib/typescript/src/web/NativeAudioBrowser.d.ts.map +1 -1
- package/lib/typescript/src/web/SimpleRouter.d.ts.map +1 -1
- package/lib/typescript/src/web/SimpleRouter.test.d.ts +2 -0
- package/lib/typescript/src/web/SimpleRouter.test.d.ts.map +1 -0
- package/nitrogen/generated/android/AudioBrowser+autolinking.cmake +1 -1
- package/nitrogen/generated/android/AudioBrowser+autolinking.gradle +1 -1
- package/nitrogen/generated/android/AudioBrowserOnLoad.cpp +67 -57
- package/nitrogen/generated/android/AudioBrowserOnLoad.hpp +14 -5
- package/nitrogen/generated/android/c++/JAndroidAudioContentType.hpp +6 -7
- package/nitrogen/generated/android/c++/JAndroidAudioOffloadSettings.hpp +1 -1
- package/nitrogen/generated/android/c++/JAndroidOptions.hpp +1 -1
- package/nitrogen/generated/android/c++/JAndroidPlayerWakeMode.hpp +4 -5
- package/nitrogen/generated/android/c++/JAndroidUpdateOptions.hpp +1 -1
- package/nitrogen/generated/android/c++/JAppKilledPlaybackBehavior.hpp +4 -5
- package/nitrogen/generated/android/c++/JArtworkRequestConfig.hpp +4 -1
- package/nitrogen/generated/android/c++/JBatteryOptimizationStatus.hpp +4 -5
- package/nitrogen/generated/android/c++/JBatteryOptimizationStatusChangedEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JBatteryWarningPendingChangedEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JBrowseError.hpp +1 -1
- package/nitrogen/generated/android/c++/JBrowseResult.cpp +1 -1
- package/nitrogen/generated/android/c++/JBrowseResult.hpp +7 -3
- package/nitrogen/generated/android/c++/JBrowserSourceCallbackParam.hpp +1 -1
- package/nitrogen/generated/android/c++/JCarPlayNowPlayingButton.hpp +5 -6
- package/nitrogen/generated/android/c++/JCarPlaySiriListButtonPosition.hpp +58 -0
- package/nitrogen/generated/android/c++/JChapterMetadata.hpp +1 -1
- package/nitrogen/generated/android/c++/JEqualizerSettings.hpp +1 -1
- package/nitrogen/generated/android/c++/JFavoriteChangedEvent.hpp +4 -1
- package/nitrogen/generated/android/c++/JFormatNavigationErrorParams.hpp +1 -1
- package/nitrogen/generated/android/c++/JFormattedNavigationError.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_FormattedNavigationError____FormatNavigationErrorParams.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____MediaTransformParams.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____RequestConfig_std__optional_std__unordered_map_std__string__std__string__.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____Track.hpp +4 -1
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError______BrowserSourceCallbackParam.hpp +5 -1
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_Track______SearchParams.hpp +3 -1
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_void_____TrackLoadEvent.hpp +139 -0
- package/nitrogen/generated/android/c++/JFunc_void.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_BatteryOptimizationStatusChangedEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_BatteryWarningPendingChangedEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_EqualizerSettings.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_FavoriteChangedEvent.hpp +4 -1
- package/nitrogen/generated/android/c++/JFunc_void_IosOutput.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_NavigationErrorEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_NowPlayingMetadata.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_Options.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_Playback.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_PlaybackActiveTrackChangedEvent.hpp +4 -1
- package/nitrogen/generated/android/c++/JFunc_void_PlaybackErrorEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_PlaybackPlayWhenReadyChangedEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_PlaybackProgressUpdatedEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_PlaybackQueueEndedEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_PlayingState.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_RemoteJumpBackwardEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_RemoteJumpForwardEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_RemotePlayIdEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_RemotePlaySearchEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_RemoteSeekEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_RemoteSetRatingEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_RemoteSkipEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_RepeatModeChangedEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_TimedMetadata.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_TrackMetadata.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_double.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_std__optional_FormattedNavigationError_.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_std__optional_ResolvedTrack_.hpp +5 -1
- package/nitrogen/generated/android/c++/JFunc_void_std__optional_std__variant_nitro__NullType__SleepTimerTime__SleepTimerEndOfTrack__.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_std__string.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_ChapterMetadata_.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_Track_.hpp +3 -1
- package/nitrogen/generated/android/c++/JHeartRating.hpp +1 -1
- package/nitrogen/generated/android/c++/JHttpMethod.hpp +8 -9
- package/nitrogen/generated/android/c++/JHybridAudioBrowserSpec.cpp +230 -245
- package/nitrogen/generated/android/c++/JHybridAudioBrowserSpec.hpp +20 -26
- package/nitrogen/generated/android/c++/JIOSCategory.hpp +7 -8
- package/nitrogen/generated/android/c++/JIOSCategoryMode.hpp +10 -11
- package/nitrogen/generated/android/c++/JIOSCategoryOptions.hpp +8 -9
- package/nitrogen/generated/android/c++/JIOSCategoryPolicy.hpp +4 -5
- package/nitrogen/generated/android/c++/JImageContext.hpp +1 -1
- package/nitrogen/generated/android/c++/JImageQueryParams.hpp +1 -1
- package/nitrogen/generated/android/c++/JImageRowItem.hpp +75 -0
- package/nitrogen/generated/android/c++/JImageSource.hpp +1 -1
- package/nitrogen/generated/android/c++/JIosOutput.hpp +1 -1
- package/nitrogen/generated/android/c++/JIosOutputType.hpp +12 -13
- package/nitrogen/generated/android/c++/JMediaRequestConfig.hpp +4 -1
- package/nitrogen/generated/android/c++/JMediaTransformParams.hpp +1 -1
- package/nitrogen/generated/android/c++/JNativeBrowserConfiguration.hpp +22 -2
- package/nitrogen/generated/android/c++/JNativeRouteEntry.hpp +5 -1
- package/nitrogen/generated/android/c++/JNativeUpdateOptions.hpp +1 -1
- package/nitrogen/generated/android/c++/JNavigationError.hpp +1 -1
- package/nitrogen/generated/android/c++/JNavigationErrorEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JNavigationErrorType.hpp +6 -7
- package/nitrogen/generated/android/c++/JNitroAndroidUpdateOptions.hpp +1 -1
- package/nitrogen/generated/android/c++/JNotificationButton.hpp +6 -7
- package/nitrogen/generated/android/c++/JNotificationButtonLayout.hpp +1 -1
- package/nitrogen/generated/android/c++/JNowPlayingMetadata.hpp +1 -1
- package/nitrogen/generated/android/c++/JNowPlayingUpdate.hpp +1 -1
- package/nitrogen/generated/android/c++/JOptions.hpp +1 -1
- package/nitrogen/generated/android/c++/JPartialAndroidSetupPlayerOptions.hpp +1 -1
- package/nitrogen/generated/android/c++/JPartialIOSSetupPlayerOptions.hpp +1 -1
- package/nitrogen/generated/android/c++/JPartialSetupPlayerOptions.hpp +1 -1
- package/nitrogen/generated/android/c++/JPercentageRating.hpp +1 -1
- package/nitrogen/generated/android/c++/JPlayback.hpp +1 -1
- package/nitrogen/generated/android/c++/JPlaybackActiveTrackChangedEvent.hpp +4 -1
- package/nitrogen/generated/android/c++/JPlaybackError.hpp +1 -1
- package/nitrogen/generated/android/c++/JPlaybackErrorEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JPlaybackPlayWhenReadyChangedEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JPlaybackProgressUpdatedEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JPlaybackQueueEndedEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JPlaybackState.hpp +10 -11
- package/nitrogen/generated/android/c++/JPlayerCapabilities.hpp +1 -1
- package/nitrogen/generated/android/c++/JPlayingState.hpp +1 -1
- package/nitrogen/generated/android/c++/JProgress.hpp +1 -1
- package/nitrogen/generated/android/c++/JRatingType.hpp +8 -9
- package/nitrogen/generated/android/c++/JRemoteJumpBackwardEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JRemoteJumpForwardEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JRemotePlayIdEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JRemotePlaySearchEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JRemoteSeekEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JRemoteSetRatingEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JRemoteSkipEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JRepeatMode.hpp +4 -5
- package/nitrogen/generated/android/c++/JRepeatModeChangedEvent.hpp +1 -1
- package/nitrogen/generated/android/c++/JRequestConfig.hpp +1 -1
- package/nitrogen/generated/android/c++/JResolvedTrack.hpp +34 -4
- package/nitrogen/generated/android/c++/JRetryConfig.hpp +1 -1
- package/nitrogen/generated/android/c++/JSearchMode.hpp +7 -8
- package/nitrogen/generated/android/c++/JSearchParams.hpp +1 -1
- package/nitrogen/generated/android/c++/JSleepTimer.cpp +1 -1
- package/nitrogen/generated/android/c++/JSleepTimer.hpp +4 -4
- package/nitrogen/generated/android/c++/JSleepTimerEndOfTrack.hpp +1 -1
- package/nitrogen/generated/android/c++/JSleepTimerTime.hpp +1 -1
- package/nitrogen/generated/android/c++/JStarRating.hpp +1 -1
- package/nitrogen/generated/android/c++/JThumbsRating.hpp +1 -1
- package/nitrogen/generated/android/c++/JTimedMetadata.hpp +1 -1
- package/nitrogen/generated/android/c++/JTrack.hpp +29 -4
- package/nitrogen/generated/android/c++/{JRemoteLoadEvent.hpp → JTrackLoadEvent.hpp} +13 -11
- package/nitrogen/generated/android/c++/JTrackMetadata.hpp +1 -1
- package/nitrogen/generated/android/c++/JTrackStyle.hpp +3 -4
- package/nitrogen/generated/android/c++/JTransformableRequestConfig.hpp +1 -1
- package/nitrogen/generated/android/c++/JUpdateOptions.hpp +1 -1
- package/nitrogen/generated/android/c++/JVariant_Boolean_AndroidAudioOffloadSettings.cpp +1 -1
- package/nitrogen/generated/android/c++/JVariant_Boolean_AndroidAudioOffloadSettings.hpp +3 -3
- package/nitrogen/generated/android/c++/JVariant_Boolean_RetryConfig.cpp +1 -1
- package/nitrogen/generated/android/c++/JVariant_Boolean_RetryConfig.hpp +3 -3
- package/nitrogen/generated/android/c++/JVariant_HeartRating_ThumbsRating_StarRating_PercentageRating.cpp +1 -1
- package/nitrogen/generated/android/c++/JVariant_HeartRating_ThumbsRating_StarRating_PercentageRating.hpp +5 -5
- package/nitrogen/generated/android/c++/JVariant_NullType_Double.cpp +1 -1
- package/nitrogen/generated/android/c++/JVariant_NullType_Double.hpp +3 -3
- package/nitrogen/generated/android/c++/JVariant_NullType_NotificationButtonLayout.cpp +1 -1
- package/nitrogen/generated/android/c++/JVariant_NullType_NotificationButtonLayout.hpp +3 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/AndroidAudioContentType.kt +3 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/AndroidAudioOffloadSettings.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/AndroidOptions.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/AndroidPlayerWakeMode.kt +3 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/AndroidUpdateOptions.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/AppKilledPlaybackBehavior.kt +3 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ArtworkRequestConfig.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/AudioBrowserOnLoad.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/BatteryOptimizationStatus.kt +3 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/BatteryOptimizationStatusChangedEvent.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/BatteryWarningPendingChangedEvent.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/BrowseError.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/BrowseResult.kt +1 -7
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/BrowserSourceCallbackParam.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/CarPlayNowPlayingButton.kt +3 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/CarPlaySiriListButtonPosition.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ChapterMetadata.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/EqualizerSettings.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/FavoriteChangedEvent.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/FormatNavigationErrorParams.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/FormattedNavigationError.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__optional_FormattedNavigationError____FormatNavigationErrorParams.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____MediaTransformParams.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____RequestConfig_std__optional_std__unordered_map_std__string__std__string__.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____Track.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError______BrowserSourceCallbackParam.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_Track______SearchParams.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{Func_void_RemoteLoadEvent.kt → Func_std__shared_ptr_Promise_std__shared_ptr_Promise_void_____TrackLoadEvent.kt} +14 -14
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_BatteryOptimizationStatusChangedEvent.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_BatteryWarningPendingChangedEvent.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_EqualizerSettings.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_FavoriteChangedEvent.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_IosOutput.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_NavigationErrorEvent.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_NowPlayingMetadata.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_Options.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_Playback.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_PlaybackActiveTrackChangedEvent.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_PlaybackErrorEvent.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_PlaybackPlayWhenReadyChangedEvent.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_PlaybackProgressUpdatedEvent.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_PlaybackQueueEndedEvent.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_PlayingState.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RemoteJumpBackwardEvent.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RemoteJumpForwardEvent.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RemotePlayIdEvent.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RemotePlaySearchEvent.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RemoteSeekEvent.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RemoteSetRatingEvent.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RemoteSkipEvent.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RepeatModeChangedEvent.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_TimedMetadata.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_TrackMetadata.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_bool.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_double.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_std__optional_FormattedNavigationError_.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_std__optional_ResolvedTrack_.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_std__optional_std__variant_nitro__NullType__SleepTimerTime__SleepTimerEndOfTrack__.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_std__string.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_std__vector_ChapterMetadata_.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_std__vector_Track_.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/HeartRating.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/HttpMethod.kt +3 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/HybridAudioBrowserSpec.kt +16 -47
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/IOSCategory.kt +3 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/IOSCategoryMode.kt +3 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/IOSCategoryOptions.kt +3 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/IOSCategoryPolicy.kt +3 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ImageContext.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ImageQueryParams.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ImageRowItem.kt +47 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ImageSource.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/IosOutput.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/IosOutputType.kt +3 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/MediaRequestConfig.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/MediaTransformParams.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeBrowserConfiguration.kt +9 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeRouteEntry.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeUpdateOptions.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NavigationError.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NavigationErrorEvent.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NavigationErrorType.kt +3 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NitroAndroidUpdateOptions.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NotificationButton.kt +3 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NotificationButtonLayout.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NowPlayingMetadata.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NowPlayingUpdate.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Options.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PartialAndroidSetupPlayerOptions.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PartialIOSSetupPlayerOptions.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PartialSetupPlayerOptions.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PercentageRating.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Playback.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackActiveTrackChangedEvent.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackError.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackErrorEvent.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackPlayWhenReadyChangedEvent.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackProgressUpdatedEvent.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackQueueEndedEvent.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackState.kt +3 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlayerCapabilities.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlayingState.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Progress.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RatingType.kt +3 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemoteJumpBackwardEvent.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemoteJumpForwardEvent.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemotePlayIdEvent.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemotePlaySearchEvent.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemoteSeekEvent.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemoteSetRatingEvent.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemoteSkipEvent.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RepeatMode.kt +3 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RepeatModeChangedEvent.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RequestConfig.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ResolvedTrack.kt +11 -5
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RetryConfig.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/SearchMode.kt +3 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/SearchParams.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/SleepTimer.kt +1 -8
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/SleepTimerEndOfTrack.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/SleepTimerTime.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/StarRating.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ThumbsRating.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TimedMetadata.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Track.kt +8 -5
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{RemoteLoadEvent.kt → TrackLoadEvent.kt} +7 -7
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TrackMetadata.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TrackStyle.kt +3 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TransformableRequestConfig.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/UpdateOptions.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_Boolean_AndroidAudioOffloadSettings.kt +1 -7
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_Boolean_RetryConfig.kt +1 -7
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_HeartRating_ThumbsRating_StarRating_PercentageRating.kt +1 -9
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_NullType_Double.kt +1 -7
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_NullType_NotificationButtonLayout.kt +1 -7
- package/nitrogen/generated/ios/AudioBrowser+autolinking.rb +2 -2
- package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Bridge.cpp +23 -14
- package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Bridge.hpp +239 -142
- package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Umbrella.hpp +10 -4
- package/nitrogen/generated/ios/AudioBrowserAutolinking.mm +1 -1
- package/nitrogen/generated/ios/AudioBrowserAutolinking.swift +9 -8
- package/nitrogen/generated/ios/c++/HybridAudioBrowserSpecSwift.cpp +1 -1
- package/nitrogen/generated/ios/c++/HybridAudioBrowserSpecSwift.hpp +25 -18
- package/nitrogen/generated/ios/swift/AndroidAudioContentType.swift +1 -1
- package/nitrogen/generated/ios/swift/AndroidAudioOffloadSettings.swift +19 -44
- package/nitrogen/generated/ios/swift/AndroidOptions.swift +30 -74
- package/nitrogen/generated/ios/swift/AndroidPlayerWakeMode.swift +1 -1
- package/nitrogen/generated/ios/swift/AndroidUpdateOptions.swift +44 -112
- package/nitrogen/generated/ios/swift/AppKilledPlaybackBehavior.swift +1 -1
- package/nitrogen/generated/ios/swift/ArtworkRequestConfig.swift +152 -303
- package/nitrogen/generated/ios/swift/BatteryOptimizationStatus.swift +1 -1
- package/nitrogen/generated/ios/swift/BatteryOptimizationStatusChangedEvent.swift +3 -10
- package/nitrogen/generated/ios/swift/BatteryWarningPendingChangedEvent.swift +3 -10
- package/nitrogen/generated/ios/swift/BrowseError.swift +3 -10
- package/nitrogen/generated/ios/swift/BrowseResult.swift +1 -1
- package/nitrogen/generated/ios/swift/BrowserSourceCallbackParam.swift +20 -45
- package/nitrogen/generated/ios/swift/CarPlayNowPlayingButton.swift +1 -1
- package/nitrogen/generated/ios/swift/CarPlaySiriListButtonPosition.swift +40 -0
- package/nitrogen/generated/ios/swift/ChapterMetadata.swift +23 -60
- package/nitrogen/generated/ios/swift/EqualizerSettings.swift +24 -97
- package/nitrogen/generated/ios/swift/FavoriteChangedEvent.swift +5 -18
- package/nitrogen/generated/ios/swift/FormatNavigationErrorParams.swift +7 -26
- package/nitrogen/generated/ios/swift/FormattedNavigationError.swift +5 -18
- package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__optional_FormattedNavigationError____FormatNavigationErrorParams.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____MediaTransformParams.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____RequestConfig_std__optional_std__unordered_map_std__string__std__string__.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____Track.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError______BrowserSourceCallbackParam.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_Track______SearchParams.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_void_____TrackLoadEvent.swift +61 -0
- package/nitrogen/generated/ios/swift/Func_void.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_BatteryOptimizationStatusChangedEvent.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_BatteryWarningPendingChangedEvent.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_EqualizerSettings.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_FavoriteChangedEvent.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_IosOutput.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_NavigationErrorEvent.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_NowPlayingMetadata.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_Options.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_Playback.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_PlaybackActiveTrackChangedEvent.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_PlaybackErrorEvent.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_PlaybackPlayWhenReadyChangedEvent.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_PlaybackProgressUpdatedEvent.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_PlaybackQueueEndedEvent.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_PlayingState.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_RemoteJumpBackwardEvent.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_RemoteJumpForwardEvent.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_RemotePlayIdEvent.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_RemotePlaySearchEvent.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_RemoteSeekEvent.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_RemoteSetRatingEvent.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_RemoteSkipEvent.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_RepeatModeChangedEvent.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_RequestConfig.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_TimedMetadata.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_TrackMetadata.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_bool.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_double.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_std__optional_FormattedNavigationError_.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_std__optional_ResolvedTrack_.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_std__optional_std__variant_nitro__NullType__SleepTimerTime__SleepTimerEndOfTrack__.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_Promise_RequestConfig__.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError___.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_Promise_std__vector_Track___.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_Promise_void__.swift +64 -0
- package/nitrogen/generated/ios/swift/Func_void_std__string.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_std__variant_ResolvedTrack__BrowseError_.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_std__vector_ChapterMetadata_.swift +1 -2
- package/nitrogen/generated/ios/swift/Func_void_std__vector_Track_.swift +1 -2
- package/nitrogen/generated/ios/swift/HeartRating.swift +3 -10
- package/nitrogen/generated/ios/swift/HttpMethod.swift +1 -1
- package/nitrogen/generated/ios/swift/HybridAudioBrowserSpec.swift +3 -6
- package/nitrogen/generated/ios/swift/HybridAudioBrowserSpec_cxx.swift +56 -58
- package/nitrogen/generated/ios/swift/IOSCategory.swift +1 -1
- package/nitrogen/generated/ios/swift/IOSCategoryMode.swift +1 -1
- package/nitrogen/generated/ios/swift/IOSCategoryOptions.swift +1 -1
- package/nitrogen/generated/ios/swift/IOSCategoryPolicy.swift +1 -1
- package/nitrogen/generated/ios/swift/ImageContext.swift +19 -30
- package/nitrogen/generated/ios/swift/ImageQueryParams.swift +19 -44
- package/nitrogen/generated/ios/swift/ImageRowItem.swift +76 -0
- package/nitrogen/generated/ios/swift/ImageSource.swift +31 -80
- package/nitrogen/generated/ios/swift/IosOutput.swift +7 -26
- package/nitrogen/generated/ios/swift/IosOutputType.swift +1 -1
- package/nitrogen/generated/ios/swift/MediaRequestConfig.swift +162 -301
- package/nitrogen/generated/ios/swift/MediaTransformParams.swift +5 -24
- package/nitrogen/generated/ios/swift/NativeBrowserConfiguration.swift +143 -232
- package/nitrogen/generated/ios/swift/NativeRouteEntry.swift +81 -178
- package/nitrogen/generated/ios/swift/NativeUpdateOptions.swift +53 -125
- package/nitrogen/generated/ios/swift/NavigationError.swift +23 -53
- package/nitrogen/generated/ios/swift/NavigationErrorEvent.swift +3 -16
- package/nitrogen/generated/ios/swift/NavigationErrorType.swift +1 -1
- package/nitrogen/generated/ios/swift/NitroAndroidUpdateOptions.swift +44 -112
- package/nitrogen/generated/ios/swift/NotificationButton.swift +1 -1
- package/nitrogen/generated/ios/swift/NotificationButtonLayout.swift +18 -85
- package/nitrogen/generated/ios/swift/NowPlayingMetadata.swift +109 -227
- package/nitrogen/generated/ios/swift/NowPlayingUpdate.swift +19 -44
- package/nitrogen/generated/ios/swift/Options.swift +32 -88
- package/nitrogen/generated/ios/swift/PartialAndroidSetupPlayerOptions.swift +101 -201
- package/nitrogen/generated/ios/swift/PartialIOSSetupPlayerOptions.swift +25 -85
- package/nitrogen/generated/ios/swift/PartialSetupPlayerOptions.swift +35 -91
- package/nitrogen/generated/ios/swift/PercentageRating.swift +3 -10
- package/nitrogen/generated/ios/swift/Playback.swift +5 -24
- package/nitrogen/generated/ios/swift/PlaybackActiveTrackChangedEvent.swift +25 -66
- package/nitrogen/generated/ios/swift/PlaybackError.swift +5 -18
- package/nitrogen/generated/ios/swift/PlaybackErrorEvent.swift +3 -16
- package/nitrogen/generated/ios/swift/PlaybackPlayWhenReadyChangedEvent.swift +3 -10
- package/nitrogen/generated/ios/swift/PlaybackProgressUpdatedEvent.swift +9 -34
- package/nitrogen/generated/ios/swift/PlaybackQueueEndedEvent.swift +5 -18
- package/nitrogen/generated/ios/swift/PlaybackState.swift +1 -1
- package/nitrogen/generated/ios/swift/PlayerCapabilities.swift +109 -254
- package/nitrogen/generated/ios/swift/PlayingState.swift +5 -18
- package/nitrogen/generated/ios/swift/Progress.swift +7 -26
- package/nitrogen/generated/ios/swift/RatingType.swift +1 -1
- package/nitrogen/generated/ios/swift/RemoteJumpBackwardEvent.swift +3 -10
- package/nitrogen/generated/ios/swift/RemoteJumpForwardEvent.swift +3 -10
- package/nitrogen/generated/ios/swift/RemotePlayIdEvent.swift +12 -24
- package/nitrogen/generated/ios/swift/RemotePlaySearchEvent.swift +3 -10
- package/nitrogen/generated/ios/swift/RemoteSeekEvent.swift +3 -10
- package/nitrogen/generated/ios/swift/RemoteSetRatingEvent.swift +21 -39
- package/nitrogen/generated/ios/swift/RemoteSkipEvent.swift +3 -10
- package/nitrogen/generated/ios/swift/RepeatMode.swift +1 -1
- package/nitrogen/generated/ios/swift/RepeatModeChangedEvent.swift +3 -10
- package/nitrogen/generated/ios/swift/RequestConfig.swift +82 -191
- package/nitrogen/generated/ios/swift/ResolvedTrack.swift +164 -333
- package/nitrogen/generated/ios/swift/RetryConfig.swift +12 -24
- package/nitrogen/generated/ios/swift/SearchMode.swift +1 -1
- package/nitrogen/generated/ios/swift/SearchParams.swift +50 -129
- package/nitrogen/generated/ios/swift/SleepTimer.swift +1 -1
- package/nitrogen/generated/ios/swift/SleepTimerEndOfTrack.swift +3 -10
- package/nitrogen/generated/ios/swift/SleepTimerTime.swift +3 -10
- package/nitrogen/generated/ios/swift/StarRating.swift +3 -10
- package/nitrogen/generated/ios/swift/ThumbsRating.swift +3 -10
- package/nitrogen/generated/ios/swift/TimedMetadata.swift +46 -107
- package/nitrogen/generated/ios/swift/Track.swift +151 -319
- package/nitrogen/generated/ios/swift/TrackLoadEvent.swift +45 -0
- package/nitrogen/generated/ios/swift/TrackMetadata.swift +145 -338
- package/nitrogen/generated/ios/swift/TrackStyle.swift +1 -1
- package/nitrogen/generated/ios/swift/TransformableRequestConfig.swift +128 -252
- package/nitrogen/generated/ios/swift/UpdateOptions.swift +53 -125
- package/nitrogen/generated/ios/swift/Variant_Bool_AndroidAudioOffloadSettings.swift +1 -1
- package/nitrogen/generated/ios/swift/Variant_Bool_RetryConfig.swift +1 -1
- package/nitrogen/generated/ios/swift/Variant_HeartRating_ThumbsRating_StarRating_PercentageRating.swift +1 -1
- package/nitrogen/generated/ios/swift/Variant_NullType_Double.swift +1 -1
- package/nitrogen/generated/ios/swift/Variant_NullType_NotificationButtonLayout.swift +1 -1
- package/nitrogen/generated/shared/c++/AndroidAudioContentType.hpp +1 -1
- package/nitrogen/generated/shared/c++/AndroidAudioOffloadSettings.hpp +16 -8
- package/nitrogen/generated/shared/c++/AndroidOptions.hpp +25 -17
- package/nitrogen/generated/shared/c++/AndroidPlayerWakeMode.hpp +1 -1
- package/nitrogen/generated/shared/c++/AndroidUpdateOptions.hpp +25 -17
- package/nitrogen/generated/shared/c++/AppKilledPlaybackBehavior.hpp +1 -1
- package/nitrogen/generated/shared/c++/ArtworkRequestConfig.hpp +43 -35
- package/nitrogen/generated/shared/c++/BatteryOptimizationStatus.hpp +1 -1
- package/nitrogen/generated/shared/c++/BatteryOptimizationStatusChangedEvent.hpp +13 -5
- package/nitrogen/generated/shared/c++/BatteryWarningPendingChangedEvent.hpp +13 -5
- package/nitrogen/generated/shared/c++/BrowseError.hpp +13 -5
- package/nitrogen/generated/shared/c++/BrowserSourceCallbackParam.hpp +16 -8
- package/nitrogen/generated/shared/c++/CarPlayNowPlayingButton.hpp +1 -1
- package/nitrogen/generated/shared/c++/CarPlaySiriListButtonPosition.hpp +76 -0
- package/nitrogen/generated/shared/c++/ChapterMetadata.hpp +22 -14
- package/nitrogen/generated/shared/c++/EqualizerSettings.hpp +34 -26
- package/nitrogen/generated/shared/c++/FavoriteChangedEvent.hpp +16 -8
- package/nitrogen/generated/shared/c++/FormatNavigationErrorParams.hpp +19 -11
- package/nitrogen/generated/shared/c++/FormattedNavigationError.hpp +16 -8
- package/nitrogen/generated/shared/c++/HeartRating.hpp +13 -5
- package/nitrogen/generated/shared/c++/HttpMethod.hpp +1 -1
- package/nitrogen/generated/shared/c++/HybridAudioBrowserSpec.cpp +1 -5
- package/nitrogen/generated/shared/c++/HybridAudioBrowserSpec.hpp +1 -8
- package/nitrogen/generated/shared/c++/IOSCategory.hpp +1 -1
- package/nitrogen/generated/shared/c++/IOSCategoryMode.hpp +1 -1
- package/nitrogen/generated/shared/c++/IOSCategoryOptions.hpp +1 -1
- package/nitrogen/generated/shared/c++/IOSCategoryPolicy.hpp +1 -1
- package/nitrogen/generated/shared/c++/ImageContext.hpp +16 -8
- package/nitrogen/generated/shared/c++/ImageQueryParams.hpp +16 -8
- package/nitrogen/generated/shared/c++/ImageRowItem.hpp +98 -0
- package/nitrogen/generated/shared/c++/ImageSource.hpp +22 -14
- package/nitrogen/generated/shared/c++/IosOutput.hpp +19 -11
- package/nitrogen/generated/shared/c++/IosOutputType.hpp +1 -1
- package/nitrogen/generated/shared/c++/MediaRequestConfig.hpp +40 -32
- package/nitrogen/generated/shared/c++/MediaTransformParams.hpp +16 -8
- package/nitrogen/generated/shared/c++/NativeBrowserConfiguration.hpp +50 -35
- package/nitrogen/generated/shared/c++/NativeRouteEntry.hpp +34 -26
- package/nitrogen/generated/shared/c++/NativeUpdateOptions.hpp +28 -20
- package/nitrogen/generated/shared/c++/NavigationError.hpp +22 -14
- package/nitrogen/generated/shared/c++/NavigationErrorEvent.hpp +13 -5
- package/nitrogen/generated/shared/c++/NavigationErrorType.hpp +1 -1
- package/nitrogen/generated/shared/c++/NitroAndroidUpdateOptions.hpp +25 -17
- package/nitrogen/generated/shared/c++/NotificationButton.hpp +1 -1
- package/nitrogen/generated/shared/c++/NotificationButtonLayout.hpp +25 -17
- package/nitrogen/generated/shared/c++/NowPlayingMetadata.hpp +40 -32
- package/nitrogen/generated/shared/c++/NowPlayingUpdate.hpp +16 -8
- package/nitrogen/generated/shared/c++/Options.hpp +28 -20
- package/nitrogen/generated/shared/c++/PartialAndroidSetupPlayerOptions.hpp +40 -32
- package/nitrogen/generated/shared/c++/PartialIOSSetupPlayerOptions.hpp +25 -17
- package/nitrogen/generated/shared/c++/PartialSetupPlayerOptions.hpp +22 -14
- package/nitrogen/generated/shared/c++/PercentageRating.hpp +13 -5
- package/nitrogen/generated/shared/c++/Playback.hpp +16 -8
- package/nitrogen/generated/shared/c++/PlaybackActiveTrackChangedEvent.hpp +25 -17
- package/nitrogen/generated/shared/c++/PlaybackError.hpp +16 -8
- package/nitrogen/generated/shared/c++/PlaybackErrorEvent.hpp +13 -5
- package/nitrogen/generated/shared/c++/PlaybackPlayWhenReadyChangedEvent.hpp +13 -5
- package/nitrogen/generated/shared/c++/PlaybackProgressUpdatedEvent.hpp +22 -14
- package/nitrogen/generated/shared/c++/PlaybackQueueEndedEvent.hpp +16 -8
- package/nitrogen/generated/shared/c++/PlaybackState.hpp +1 -1
- package/nitrogen/generated/shared/c++/PlayerCapabilities.hpp +46 -38
- package/nitrogen/generated/shared/c++/PlayingState.hpp +16 -8
- package/nitrogen/generated/shared/c++/Progress.hpp +19 -11
- package/nitrogen/generated/shared/c++/RatingType.hpp +1 -1
- package/nitrogen/generated/shared/c++/RemoteJumpBackwardEvent.hpp +13 -5
- package/nitrogen/generated/shared/c++/RemoteJumpForwardEvent.hpp +13 -5
- package/nitrogen/generated/shared/c++/RemotePlayIdEvent.hpp +16 -8
- package/nitrogen/generated/shared/c++/RemotePlaySearchEvent.hpp +13 -5
- package/nitrogen/generated/shared/c++/RemoteSeekEvent.hpp +13 -5
- package/nitrogen/generated/shared/c++/RemoteSetRatingEvent.hpp +13 -5
- package/nitrogen/generated/shared/c++/RemoteSkipEvent.hpp +13 -5
- package/nitrogen/generated/shared/c++/RepeatMode.hpp +1 -1
- package/nitrogen/generated/shared/c++/RepeatModeChangedEvent.hpp +13 -5
- package/nitrogen/generated/shared/c++/RequestConfig.hpp +34 -26
- package/nitrogen/generated/shared/c++/ResolvedTrack.hpp +79 -57
- package/nitrogen/generated/shared/c++/RetryConfig.hpp +16 -8
- package/nitrogen/generated/shared/c++/SearchMode.hpp +1 -1
- package/nitrogen/generated/shared/c++/SearchParams.hpp +31 -23
- package/nitrogen/generated/shared/c++/SleepTimerEndOfTrack.hpp +13 -5
- package/nitrogen/generated/shared/c++/SleepTimerTime.hpp +13 -5
- package/nitrogen/generated/shared/c++/StarRating.hpp +13 -5
- package/nitrogen/generated/shared/c++/ThumbsRating.hpp +13 -5
- package/nitrogen/generated/shared/c++/TimedMetadata.hpp +25 -17
- package/nitrogen/generated/shared/c++/Track.hpp +70 -54
- package/nitrogen/generated/shared/c++/{RemoteLoadEvent.hpp → TrackLoadEvent.hpp} +28 -20
- package/nitrogen/generated/shared/c++/TrackMetadata.hpp +58 -50
- package/nitrogen/generated/shared/c++/TrackStyle.hpp +1 -1
- package/nitrogen/generated/shared/c++/TransformableRequestConfig.hpp +37 -29
- package/nitrogen/generated/shared/c++/UpdateOptions.hpp +28 -20
- package/package.json +6 -7
- package/src/features/browser.ts +1 -0
- package/src/features/remoteControls.ts +0 -35
- package/src/specs/audio-browser.nitro.ts +0 -3
- package/src/types/browser-native.ts +2 -0
- package/src/types/browser-nodes.ts +49 -1
- package/src/types/browser.ts +36 -0
- package/src/web/NativeAudioBrowser.ts +19 -24
- package/src/web/SimpleRouter.test.ts +160 -0
- package/src/web/SimpleRouter.ts +10 -8
- package/nitrogen/generated/android/c++/JFunc_void_RemoteLoadEvent.hpp +0 -89
- package/nitrogen/generated/ios/swift/Func_void_RemoteLoadEvent.swift +0 -47
- package/nitrogen/generated/ios/swift/RemoteLoadEvent.swift +0 -70
|
@@ -107,6 +107,12 @@ class RemoteCommandController {
|
|
|
107
107
|
commands.forEach { self.disable(command: $0) }
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
+
/// Disables all currently enabled remote commands and removes their targets.
|
|
111
|
+
func disableAll() {
|
|
112
|
+
disable(commands: enabledCommands)
|
|
113
|
+
enabledCommands.removeAll()
|
|
114
|
+
}
|
|
115
|
+
|
|
110
116
|
/**
|
|
111
117
|
Enables a remote command by setting it up with the provided handler.
|
|
112
118
|
Removes any existing target before adding the new one to prevent duplicate handlers.
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import Testing
|
|
2
|
+
|
|
3
|
+
@testable import AudioBrowserTestable
|
|
4
|
+
|
|
5
|
+
private struct TestRoute: RouteEntry {
|
|
6
|
+
let path: String
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
private func match(_ path: String, _ patterns: [String]) -> (route: TestRoute, match: RouteMatch)? {
|
|
10
|
+
let router = SimpleRouter()
|
|
11
|
+
let routes = patterns.map { TestRoute(path: $0) }
|
|
12
|
+
return router.findBestMatch(path: path, routes: routes)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// MARK: - exact matches
|
|
16
|
+
|
|
17
|
+
@Test func matchesASimplePath() {
|
|
18
|
+
let result = match("/artists", ["/artists"])
|
|
19
|
+
#expect(result != nil)
|
|
20
|
+
#expect(result!.route.path == "/artists")
|
|
21
|
+
#expect(result!.match.params.isEmpty)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@Test func matchesMultiSegmentPaths() {
|
|
25
|
+
let result = match("/artists/top/rated", ["/artists/top/rated"])
|
|
26
|
+
#expect(result != nil)
|
|
27
|
+
#expect(result!.route.path == "/artists/top/rated")
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@Test func returnsNilWhenNoRouteMatches() {
|
|
31
|
+
#expect(match("/unknown", ["/artists"]) == nil)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@Test func returnsNilWhenSegmentCountDiffers() {
|
|
35
|
+
#expect(match("/artists/123", ["/artists"]) == nil)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@Test func returnsNilWhenRoutesAreEmpty() {
|
|
39
|
+
#expect(match("/artists", []) == nil)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@Test func treatsTrailingSlashesTheSameAsWithout() {
|
|
43
|
+
let result = match("/artists/", ["/artists"])
|
|
44
|
+
#expect(result != nil)
|
|
45
|
+
#expect(result!.route.path == "/artists")
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// MARK: - parameter extraction
|
|
49
|
+
|
|
50
|
+
@Test func extractsASingleParameter() {
|
|
51
|
+
let result = match("/artists/123", ["/artists/{id}"])
|
|
52
|
+
#expect(result != nil)
|
|
53
|
+
#expect(result!.match.params == ["id": "123"])
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@Test func extractsMultipleParameters() {
|
|
57
|
+
let result = match("/artists/123/albums/456", ["/artists/{artistId}/albums/{albumId}"])
|
|
58
|
+
#expect(result != nil)
|
|
59
|
+
#expect(result!.match.params == ["artistId": "123", "albumId": "456"])
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// MARK: - single wildcard
|
|
63
|
+
|
|
64
|
+
@Test func matchesAnySingleSegment() {
|
|
65
|
+
#expect(match("/artists/anything", ["/artists/*"]) != nil)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
@Test func doesNotExtractWildcardValueIntoParams() {
|
|
69
|
+
let result = match("/artists/anything", ["/artists/*"])
|
|
70
|
+
#expect(result!.match.params.isEmpty)
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// MARK: - tail wildcard
|
|
74
|
+
|
|
75
|
+
@Test func matchesWithNoRemainingSegmentsAndHasNoTailParam() {
|
|
76
|
+
let result = match("/files", ["/files/**"])
|
|
77
|
+
#expect(result != nil)
|
|
78
|
+
#expect(result!.match.params.isEmpty)
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
@Test func matchesWithRemainingSegmentsAndCapturesTail() {
|
|
82
|
+
let result = match("/files/a/b/c", ["/files/**"])
|
|
83
|
+
#expect(result != nil)
|
|
84
|
+
#expect(result!.match.params == ["tail": "a/b/c"])
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
@Test func matchesWithASingleRemainingSegment() {
|
|
88
|
+
let result = match("/files/readme.txt", ["/files/**"])
|
|
89
|
+
#expect(result != nil)
|
|
90
|
+
#expect(result!.match.params == ["tail": "readme.txt"])
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
@Test func returnsNilWhenPrefixSegmentsDoNotMatch() {
|
|
94
|
+
#expect(match("/other/a/b", ["/files/**"]) == nil)
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
@Test func worksWithParametersBeforeTailWildcard() {
|
|
98
|
+
let result = match("/api/v1/users/list", ["/api/{version}/**"])
|
|
99
|
+
#expect(result != nil)
|
|
100
|
+
#expect(result!.match.params == ["version": "v1", "tail": "users/list"])
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
@Test func matchesAnyPathWithBareTailWildcardPattern() {
|
|
104
|
+
let result = match("/any/path/here", ["/**"])
|
|
105
|
+
#expect(result != nil)
|
|
106
|
+
#expect(result!.match.params == ["tail": "any/path/here"])
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// MARK: - specificity
|
|
110
|
+
|
|
111
|
+
@Test func prefersConstantSegmentsOverParameters() {
|
|
112
|
+
let result = match("/artists/top", ["/artists/{id}", "/artists/top"])
|
|
113
|
+
#expect(result!.route.path == "/artists/top")
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
@Test func prefersParametersOverWildcards() {
|
|
117
|
+
let result = match("/artists/123", ["/artists/*", "/artists/{id}"])
|
|
118
|
+
#expect(result!.route.path == "/artists/{id}")
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
@Test func prefersExactMatchOverTailWildcard() {
|
|
122
|
+
let result = match("/api/v1", ["/api/**", "/api/{version}"])
|
|
123
|
+
#expect(result!.route.path == "/api/{version}")
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
@Test func computesCorrectSpecificityForTailWildcardPatterns() {
|
|
127
|
+
// Regression test for issue #27: specificity must account for
|
|
128
|
+
// segment types before the ** wildcard.
|
|
129
|
+
let result = match("/api/v1/users", ["/api/v1/**"])
|
|
130
|
+
// constant "api" (1000) + constant "v1" (1000) + tail(1) + 3 segments = 2004
|
|
131
|
+
#expect(result!.match.specificity == 2004)
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
@Test func prefersConstantPrefixOverParameterPrefixInTailWildcards() {
|
|
135
|
+
// Second part of issue #27: with correct specificity, the constant
|
|
136
|
+
// prefix should beat the parameter prefix.
|
|
137
|
+
let result = match("/api/v1/users", ["/api/{version}/**", "/api/v1/**"])
|
|
138
|
+
#expect(result!.route.path == "/api/v1/**")
|
|
139
|
+
}
|
package/ios/TrackPlayer.swift
CHANGED
|
@@ -186,9 +186,9 @@ class TrackPlayer {
|
|
|
186
186
|
/// The deferred seek time, if any. Used by `seekBy()` to offset from the deferred position.
|
|
187
187
|
var pendingTime: TimeInterval? {
|
|
188
188
|
switch state {
|
|
189
|
-
case let .pendingSeek(time):
|
|
190
|
-
case let .seekInFlight(time):
|
|
191
|
-
case .idle:
|
|
189
|
+
case let .pendingSeek(time): time
|
|
190
|
+
case let .seekInFlight(time): time
|
|
191
|
+
case .idle: nil
|
|
192
192
|
}
|
|
193
193
|
}
|
|
194
194
|
|
|
@@ -196,8 +196,8 @@ class TrackPlayer {
|
|
|
196
196
|
/// True when a seek is pending or in-flight during the loading phase.
|
|
197
197
|
var shouldDeferReadyTransition: Bool {
|
|
198
198
|
switch state {
|
|
199
|
-
case .idle:
|
|
200
|
-
case .pendingSeek, .seekInFlight:
|
|
199
|
+
case .idle: false
|
|
200
|
+
case .pendingSeek, .seekInFlight: true
|
|
201
201
|
}
|
|
202
202
|
}
|
|
203
203
|
|
|
@@ -512,10 +512,12 @@ class TrackPlayer {
|
|
|
512
512
|
if playWhenReady == true, state == .error || state == .stopped {
|
|
513
513
|
reload(startFromCurrentTime: state == .error)
|
|
514
514
|
}
|
|
515
|
-
if
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
515
|
+
if state != .loading {
|
|
516
|
+
if playWhenReady {
|
|
517
|
+
startPlayback()
|
|
518
|
+
} else {
|
|
519
|
+
pausePlayback()
|
|
520
|
+
}
|
|
519
521
|
}
|
|
520
522
|
|
|
521
523
|
if oldValue != playWhenReady {
|
|
@@ -616,7 +618,7 @@ class TrackPlayer {
|
|
|
616
618
|
tracks.append(track)
|
|
617
619
|
currentIndex = 0
|
|
618
620
|
} else {
|
|
619
|
-
|
|
621
|
+
replace(currentIndex, track)
|
|
620
622
|
}
|
|
621
623
|
handleCurrentTrackChanged()
|
|
622
624
|
}
|
|
@@ -805,6 +807,13 @@ class TrackPlayer {
|
|
|
805
807
|
nowPlayingInfoController.clear()
|
|
806
808
|
}
|
|
807
809
|
|
|
810
|
+
/// Tears down the player completely, stopping audio and removing all remote command targets.
|
|
811
|
+
/// Called when the HybridAudioBrowser is being replaced (e.g., JS runtime reload).
|
|
812
|
+
func destroy() {
|
|
813
|
+
clear()
|
|
814
|
+
remoteCommandController.disableAll()
|
|
815
|
+
}
|
|
816
|
+
|
|
808
817
|
// MARK: - Private
|
|
809
818
|
|
|
810
819
|
private func setNowPlayingCurrentTime(seconds: Double) {
|
|
@@ -859,11 +868,6 @@ class TrackPlayer {
|
|
|
859
868
|
private func loadImage(from imageSource: ImageSource) async -> UIImage? {
|
|
860
869
|
guard let url = URL(string: imageSource.uri) else { return nil }
|
|
861
870
|
|
|
862
|
-
if url.isFileURL {
|
|
863
|
-
return UIImage(contentsOfFile: url.path)
|
|
864
|
-
}
|
|
865
|
-
|
|
866
|
-
// Build Kingfisher options with headers if provided
|
|
867
871
|
var options: KingfisherOptionsInfo = []
|
|
868
872
|
if let headers = imageSource.headers, !headers.isEmpty {
|
|
869
873
|
let modifier = AnyModifier { request in
|
|
@@ -1282,13 +1286,12 @@ class TrackPlayer {
|
|
|
1282
1286
|
// MARK: - Queue Methods
|
|
1283
1287
|
|
|
1284
1288
|
/**
|
|
1285
|
-
|
|
1289
|
+
Replace the track at a specific index.
|
|
1286
1290
|
|
|
1287
|
-
- parameter index: The index of the track to
|
|
1288
|
-
- parameter track: The track
|
|
1291
|
+
- parameter index: The index of the track to replace.
|
|
1292
|
+
- parameter track: The replacement track.
|
|
1289
1293
|
*/
|
|
1290
|
-
func
|
|
1291
|
-
guard index >= 0, index < tracks.count else { return }
|
|
1294
|
+
func replace(_ index: Int, _ track: Track) {
|
|
1292
1295
|
tracks[index] = track
|
|
1293
1296
|
}
|
|
1294
1297
|
|
|
@@ -1585,6 +1588,18 @@ class TrackPlayer {
|
|
|
1585
1588
|
let lastPosition = currentTime
|
|
1586
1589
|
let shouldContinuePlayback = playWhenReady
|
|
1587
1590
|
if let currentTrack {
|
|
1591
|
+
// Cancel in-flight loading from previous track and clear old item
|
|
1592
|
+
// to prevent stale audio during async URL resolution.
|
|
1593
|
+
metadataLoadTask?.cancel()
|
|
1594
|
+
playableLoadTask?.cancel()
|
|
1595
|
+
pausePlayback()
|
|
1596
|
+
stopObservingAVPlayerItem()
|
|
1597
|
+
avPlayer.replaceCurrentItem(with: nil)
|
|
1598
|
+
|
|
1599
|
+
// Set loading state before playWhenReady so the setter's guard
|
|
1600
|
+
// prevents a no-op startPlayback() on the now-nil item.
|
|
1601
|
+
state = .loading
|
|
1602
|
+
|
|
1588
1603
|
// Ensure playWhenReady is set before loading to preserve playback state
|
|
1589
1604
|
playWhenReady = shouldContinuePlayback
|
|
1590
1605
|
|
|
@@ -1611,10 +1626,6 @@ class TrackPlayer {
|
|
|
1611
1626
|
logger.debug(" track.url: \(currentTrack.url ?? "nil")")
|
|
1612
1627
|
logger.debug(" track.src: \(src)")
|
|
1613
1628
|
|
|
1614
|
-
// Set loading state early so seekTo calls during async URL resolution
|
|
1615
|
-
// are captured as pending seeks rather than silently dropped
|
|
1616
|
-
state = .loading
|
|
1617
|
-
|
|
1618
1629
|
// Check if it's already a full URL (http/https) or local file
|
|
1619
1630
|
if src.hasPrefix("http://") || src.hasPrefix("https://") || src.hasPrefix("file://") {
|
|
1620
1631
|
// Already a full URL, use directly (may still need transform for headers)
|
|
@@ -11,15 +11,12 @@ final class NetworkMonitor: @unchecked Sendable {
|
|
|
11
11
|
private let monitor: NWPathMonitor
|
|
12
12
|
private let queue = DispatchQueue(label: "com.audiobrowser.networkmonitor")
|
|
13
13
|
|
|
14
|
-
/// Current network connectivity state
|
|
14
|
+
/// Current network connectivity state. Must only be set on main thread.
|
|
15
15
|
private(set) var isOnline: Bool = false {
|
|
16
16
|
didSet {
|
|
17
17
|
if oldValue != isOnline {
|
|
18
18
|
logger.info("Network status changed: \(oldValue) -> \(self.isOnline)")
|
|
19
|
-
|
|
20
|
-
guard let self else { return }
|
|
21
|
-
onChanged?(isOnline)
|
|
22
|
-
}
|
|
19
|
+
onChanged?(isOnline)
|
|
23
20
|
}
|
|
24
21
|
}
|
|
25
22
|
}
|
|
@@ -35,7 +32,7 @@ final class NetworkMonitor: @unchecked Sendable {
|
|
|
35
32
|
// Set up handler before starting
|
|
36
33
|
monitor.pathUpdateHandler = { [weak self] path in
|
|
37
34
|
let newStatus = path.status == .satisfied
|
|
38
|
-
DispatchQueue.main.async {
|
|
35
|
+
DispatchQueue.main.async { [weak self] in
|
|
39
36
|
self?.isOnline = newStatus
|
|
40
37
|
}
|
|
41
38
|
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import os.log
|
|
2
|
+
import UIKit
|
|
3
|
+
|
|
4
|
+
/// Renders SF Symbols to PNG files in the caches directory.
|
|
5
|
+
/// Returns `file://` URIs usable by both React Native's `<Image>` and native image loaders.
|
|
6
|
+
///
|
|
7
|
+
/// Artwork format: `sf:symbol.name?bg=#RRGGBB&fg=#RRGGBB`
|
|
8
|
+
/// - `bg`: background color (default: transparent)
|
|
9
|
+
/// - `fg`: foreground/symbol color (default: #000000)
|
|
10
|
+
final class SFSymbolRenderer: @unchecked Sendable {
|
|
11
|
+
@MainActor static let shared = SFSymbolRenderer()
|
|
12
|
+
static let defaultCanvasSize = CGSize(width: 200, height: 200)
|
|
13
|
+
|
|
14
|
+
private let logger = Logger(subsystem: "com.audiobrowser", category: "SFSymbolRenderer")
|
|
15
|
+
private let scale: CGFloat
|
|
16
|
+
private let cacheDirectory: URL
|
|
17
|
+
|
|
18
|
+
@MainActor
|
|
19
|
+
private init() {
|
|
20
|
+
scale = UIScreen.main.scale
|
|
21
|
+
|
|
22
|
+
let caches = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask)[0]
|
|
23
|
+
cacheDirectory = caches.appendingPathComponent("sf-symbols", isDirectory: true)
|
|
24
|
+
try? FileManager.default.createDirectory(at: cacheDirectory, withIntermediateDirectories: true)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/// Renders an SF Symbol to a PNG file and returns its `file://` URI.
|
|
28
|
+
///
|
|
29
|
+
/// Skips rendering if the file already exists on disk.
|
|
30
|
+
///
|
|
31
|
+
/// - Parameters:
|
|
32
|
+
/// - artworkValue: The artwork string (e.g. "sf:heart.fill?bg=#000&fg=#fff" or "heart.fill")
|
|
33
|
+
/// - canvasSize: The canvas size in points (rendered at device scale)
|
|
34
|
+
/// - Returns: A file URI string, or nil if the symbol doesn't exist or rendering fails
|
|
35
|
+
func render(_ artworkValue: String, canvasSize: CGSize = defaultCanvasSize) -> String? {
|
|
36
|
+
let (symbolName, backgroundColor, symbolColor) = Self.parseArtwork(artworkValue)
|
|
37
|
+
|
|
38
|
+
// Validate symbol exists before any filesystem work
|
|
39
|
+
let symbolPointSize = min(canvasSize.width, canvasSize.height) * 0.45
|
|
40
|
+
let config = UIImage.SymbolConfiguration(pointSize: symbolPointSize, weight: .medium)
|
|
41
|
+
guard let symbol = UIImage(systemName: symbolName, withConfiguration: config) else {
|
|
42
|
+
return nil
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
let safeArtwork = artworkValue.unicodeScalars
|
|
46
|
+
.filter { CharacterSet.alphanumerics.contains($0) || $0 == "_" }
|
|
47
|
+
.map(String.init).joined()
|
|
48
|
+
let fileName = "\(safeArtwork)_\(Int(canvasSize.width))x\(Int(canvasSize.height))_\(Int(scale))x"
|
|
49
|
+
let fileURL = cacheDirectory.appendingPathComponent("\(fileName).png")
|
|
50
|
+
|
|
51
|
+
if FileManager.default.fileExists(atPath: fileURL.path) {
|
|
52
|
+
return fileURL.absoluteString
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
let renderer = UIGraphicsImageRenderer(size: canvasSize, format: {
|
|
56
|
+
let fmt = UIGraphicsImageRendererFormat()
|
|
57
|
+
fmt.scale = scale
|
|
58
|
+
return fmt
|
|
59
|
+
}())
|
|
60
|
+
|
|
61
|
+
let pngData = renderer.pngData { _ in
|
|
62
|
+
if let backgroundColor {
|
|
63
|
+
backgroundColor.setFill()
|
|
64
|
+
UIRectFill(CGRect(origin: .zero, size: canvasSize))
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
let symbolSize = symbol.size
|
|
68
|
+
let x = (canvasSize.width - symbolSize.width) / 2
|
|
69
|
+
let y = (canvasSize.height - symbolSize.height) / 2
|
|
70
|
+
|
|
71
|
+
(symbolColor ?? .black).set()
|
|
72
|
+
symbol.withRenderingMode(.alwaysTemplate)
|
|
73
|
+
.draw(in: CGRect(x: x, y: y, width: symbolSize.width, height: symbolSize.height))
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
do {
|
|
77
|
+
try pngData.write(to: fileURL, options: .atomic)
|
|
78
|
+
} catch {
|
|
79
|
+
logger.error("Failed to write SF Symbol PNG: \(error.localizedDescription)")
|
|
80
|
+
return nil
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return fileURL.absoluteString
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/// Whether the given artwork string is an SF Symbol reference.
|
|
87
|
+
static func isSFSymbol(_ artwork: String) -> Bool {
|
|
88
|
+
artwork.hasPrefix("sf:")
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/// Parses an SF Symbol artwork string into symbol name and resolved colors.
|
|
92
|
+
/// `"sf:heart.fill?bg=#000&fg=#fff"` → `("heart.fill", bg: black, fg: white)`
|
|
93
|
+
static func parseArtwork(_ value: String) -> (symbolName: String, backgroundColor: UIColor?, symbolColor: UIColor?) {
|
|
94
|
+
let (symbolName, params) = parseArtworkValue(value)
|
|
95
|
+
let bg = params["bg"].map { UIColor(hex: $0) }
|
|
96
|
+
let fg = params["fg"].map { UIColor(hex: $0) }
|
|
97
|
+
return (symbolName, bg, fg)
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/// Parses an SF Symbol artwork string, stripping the `sf:` prefix if present.
|
|
101
|
+
/// `"sf:heart.fill?bg=#000&fg=#fff"` → `("heart.fill", ["bg": "000", "fg": "fff"])`
|
|
102
|
+
private static func parseArtworkValue(_ value: String) -> (symbolName: String, params: [String: String]) {
|
|
103
|
+
let stripped = value.hasPrefix("sf:") ? String(value.dropFirst(3)) : value
|
|
104
|
+
guard let questionMark = stripped.firstIndex(of: "?") else {
|
|
105
|
+
return (stripped, [:])
|
|
106
|
+
}
|
|
107
|
+
let symbolName = String(stripped[..<questionMark])
|
|
108
|
+
let queryString = String(stripped[stripped.index(after: questionMark)...])
|
|
109
|
+
var params: [String: String] = [:]
|
|
110
|
+
for pair in queryString.split(separator: "&") {
|
|
111
|
+
let parts = pair.split(separator: "=", maxSplits: 1)
|
|
112
|
+
guard parts.count == 2 else { continue }
|
|
113
|
+
let key = String(parts[0])
|
|
114
|
+
let val = String(parts[1]).replacingOccurrences(of: "#", with: "")
|
|
115
|
+
params[key] = val
|
|
116
|
+
}
|
|
117
|
+
return (symbolName, params)
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
extension UIColor {
|
|
122
|
+
convenience init(hex: String) {
|
|
123
|
+
let hex = hex.trimmingCharacters(in: CharacterSet(charactersIn: "#"))
|
|
124
|
+
var rgb: UInt64 = 0
|
|
125
|
+
Scanner(string: hex).scanHexInt64(&rgb)
|
|
126
|
+
|
|
127
|
+
switch hex.count {
|
|
128
|
+
case 3:
|
|
129
|
+
let r = CGFloat((rgb >> 8) & 0xF) / 15
|
|
130
|
+
let g = CGFloat((rgb >> 4) & 0xF) / 15
|
|
131
|
+
let b = CGFloat(rgb & 0xF) / 15
|
|
132
|
+
self.init(red: r, green: g, blue: b, alpha: 1)
|
|
133
|
+
case 6:
|
|
134
|
+
let r = CGFloat((rgb >> 16) & 0xFF) / 255
|
|
135
|
+
let g = CGFloat((rgb >> 8) & 0xFF) / 255
|
|
136
|
+
let b = CGFloat(rgb & 0xFF) / 255
|
|
137
|
+
self.init(red: r, green: g, blue: b, alpha: 1)
|
|
138
|
+
default:
|
|
139
|
+
self.init(white: 0, alpha: 1)
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
@@ -164,6 +164,7 @@ function toNativeConfig(config) {
|
|
|
164
164
|
artwork: config.artwork,
|
|
165
165
|
routes: flattenRoutes(config.routes, config.browse, config.tabs, config.search),
|
|
166
166
|
singleTrack: config.singleTrack,
|
|
167
|
+
handleTrackLoad: config.handleTrackLoad,
|
|
167
168
|
androidControllerOfflineError: config.androidControllerOfflineError,
|
|
168
169
|
carPlayUpNextButton: config.carPlayUpNextButton,
|
|
169
170
|
carPlayNowPlayingButtons: config.carPlayNowPlayingButtons,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_native","require","_NativeUpdatedValue","_useNativeUpdatedValue","isCallback","source","isTransformableRequestConfig","obj","isRouteConfig","flattenBrowseSource","browseCallback","browseConfig","browseStatic","searchSourceToRouteEntry","path","SEARCH_ROUTE_PATH","searchCallback","searchConfig","wrapTracksAsResolvedTrack","tracks","url","TABS_ROUTE_PATH","title","children","tabsSourceToRouteEntry","Array","isArray","wrappedCallback","flattenRouteEntry","browse","media","artwork","DEFAULT_ROUTE_PATH","flattenRoutes","routes","rootBrowse","tabs","search","entries","Object","push","length","undefined","toNativeConfig","config","request","singleTrack","androidControllerOfflineError","carPlayUpNextButton","carPlayNowPlayingButtons","formatNavigationError","configureBrowser","configuration","nativeBrowser","navigate","pathOrTrack","navigatePath","navigateTrack","getPath","onPathChanged","exports","NativeUpdatedValue","emitterize","cb","usePath","useNativeUpdatedValue","getContent","onContentChanged","useContent","getTabs","onTabsChanged","useTabs","notifyContentChanged","hasSearch","searchRoute","find","r","query","onSearch"],"sourceRoot":"../../../src","sources":["features/browser.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["_native","require","_NativeUpdatedValue","_useNativeUpdatedValue","isCallback","source","isTransformableRequestConfig","obj","isRouteConfig","flattenBrowseSource","browseCallback","browseConfig","browseStatic","searchSourceToRouteEntry","path","SEARCH_ROUTE_PATH","searchCallback","searchConfig","wrapTracksAsResolvedTrack","tracks","url","TABS_ROUTE_PATH","title","children","tabsSourceToRouteEntry","Array","isArray","wrappedCallback","flattenRouteEntry","browse","media","artwork","DEFAULT_ROUTE_PATH","flattenRoutes","routes","rootBrowse","tabs","search","entries","Object","push","length","undefined","toNativeConfig","config","request","singleTrack","handleTrackLoad","androidControllerOfflineError","carPlayUpNextButton","carPlayNowPlayingButtons","formatNavigationError","configureBrowser","configuration","nativeBrowser","navigate","pathOrTrack","navigatePath","navigateTrack","getPath","onPathChanged","exports","NativeUpdatedValue","emitterize","cb","usePath","useNativeUpdatedValue","getContent","onContentChanged","useContent","getTabs","onTabsChanged","useTabs","notifyContentChanged","hasSearch","searchRoute","find","r","query","onSearch"],"sourceRoot":"../../../src","sources":["features/browser.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,14 +5,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.handleRemoteJumpBackward = handleRemoteJumpBackward;
|
|
7
7
|
exports.handleRemoteJumpForward = handleRemoteJumpForward;
|
|
8
|
-
exports.handleRemoteLoad = handleRemoteLoad;
|
|
9
8
|
exports.handleRemoteNext = handleRemoteNext;
|
|
10
9
|
exports.handleRemotePause = handleRemotePause;
|
|
11
10
|
exports.handleRemotePlay = handleRemotePlay;
|
|
12
11
|
exports.handleRemotePrevious = handleRemotePrevious;
|
|
13
12
|
exports.handleRemoteSeek = handleRemoteSeek;
|
|
14
13
|
exports.handleRemoteStop = handleRemoteStop;
|
|
15
|
-
exports.onRemoteStop = exports.onRemoteSkip = exports.onRemoteSetRating = exports.onRemoteSeek = exports.onRemotePrevious = exports.onRemotePlaySearch = exports.onRemotePlayId = exports.onRemotePlay = exports.onRemotePause = exports.onRemoteNext = exports.
|
|
14
|
+
exports.onRemoteStop = exports.onRemoteSkip = exports.onRemoteSetRating = exports.onRemoteSeek = exports.onRemotePrevious = exports.onRemotePlaySearch = exports.onRemotePlayId = exports.onRemotePlay = exports.onRemotePause = exports.onRemoteNext = exports.onRemoteJumpForward = exports.onRemoteJumpBackward = void 0;
|
|
16
15
|
var _native = require("../native");
|
|
17
16
|
var _LazyNativeEmitter = require("../utils/LazyNativeEmitter");
|
|
18
17
|
// MARK: - Event Interfaces
|
|
@@ -45,10 +44,6 @@ var _LazyNativeEmitter = require("../utils/LazyNativeEmitter");
|
|
|
45
44
|
* Remote skip event (Android only).
|
|
46
45
|
*/
|
|
47
46
|
|
|
48
|
-
/**
|
|
49
|
-
* Remote load event, fired when a track is about to be loaded via navigateTrack.
|
|
50
|
-
*/
|
|
51
|
-
|
|
52
47
|
// MARK: - Default Handlers
|
|
53
48
|
|
|
54
49
|
// Install remote control handlers with default behavior immediately when module loads
|
|
@@ -198,15 +193,6 @@ function handleRemoteJumpBackward(callback) {
|
|
|
198
193
|
_native.nativeBrowser.handleRemoteJumpBackward = callback;
|
|
199
194
|
}
|
|
200
195
|
|
|
201
|
-
/**
|
|
202
|
-
* Sets a custom handler for remote load events, overriding the default track loading behavior.
|
|
203
|
-
* When set, navigateTrack() will call this handler instead of auto-loading/playing the track.
|
|
204
|
-
* @param callback - Called with the track, queue, and startIndex. Pass undefined to restore default behavior.
|
|
205
|
-
*/
|
|
206
|
-
function handleRemoteLoad(callback) {
|
|
207
|
-
_native.nativeBrowser.handleRemoteLoad = callback;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
196
|
// MARK: - Event Callbacks (for listening/debugging only)
|
|
211
197
|
//
|
|
212
198
|
// Use these functions when you want to LISTEN to remote control events without overriding
|
|
@@ -228,15 +214,6 @@ const onRemoteJumpBackward = exports.onRemoteJumpBackward = _LazyNativeEmitter.L
|
|
|
228
214
|
*/
|
|
229
215
|
const onRemoteJumpForward = exports.onRemoteJumpForward = _LazyNativeEmitter.LazyNativeEmitter.emitterize(cb => _native.nativeBrowser.onRemoteJumpForward = cb);
|
|
230
216
|
|
|
231
|
-
/**
|
|
232
|
-
* Subscribes to remote load events.
|
|
233
|
-
* Fires whenever a track is about to be loaded via navigateTrack(),
|
|
234
|
-
* regardless of whether handleRemoteLoad is set.
|
|
235
|
-
* @param callback - Called with the track, queue, and startIndex
|
|
236
|
-
* @returns Cleanup function to unsubscribe
|
|
237
|
-
*/
|
|
238
|
-
const onRemoteLoad = exports.onRemoteLoad = _LazyNativeEmitter.LazyNativeEmitter.emitterize(cb => _native.nativeBrowser.onRemoteLoad = cb);
|
|
239
|
-
|
|
240
217
|
/**
|
|
241
218
|
* Subscribes to remote next events.
|
|
242
219
|
* @param callback - Called when the user presses the next track button
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_native","require","_LazyNativeEmitter","handleRemotePlay","callback","nativeBrowser","handleRemotePause","handleRemoteNext","handleRemotePrevious","handleRemoteStop","handleRemoteSeek","handleRemoteJumpForward","handleRemoteJumpBackward","
|
|
1
|
+
{"version":3,"names":["_native","require","_LazyNativeEmitter","handleRemotePlay","callback","nativeBrowser","handleRemotePause","handleRemoteNext","handleRemotePrevious","handleRemoteStop","handleRemoteSeek","handleRemoteJumpForward","handleRemoteJumpBackward","onRemoteJumpBackward","exports","LazyNativeEmitter","emitterize","cb","onRemoteJumpForward","onRemoteNext","onRemotePause","onRemotePlay","onRemotePlayId","onRemotePlaySearch","onRemotePrevious","onRemoteSeek","onRemoteSetRating","onRemoteSkip","onRemoteStop"],"sourceRoot":"../../../src","sources":["features/remoteControls.ts"],"mappings":";;;;;;;;;;;;;;AAMA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAEA;;AAEA;AACA;AACA;;AAMA;AACA;AACA;;AAMA;AACA;AACA;;AAQA;AACA;AACA;;AAMA;AACA;AACA;;AAMA;AACA;AACA;;AAKA;AACA;AACA;;AAMA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACO,SAASE,gBAAgBA,CAACC,QAAkC,EAAE;EACnEC,qBAAa,CAACF,gBAAgB,GAAGC,QAAQ;AAC3C;;AAEA;AACA;AACA;AACA;AACO,SAASE,iBAAiBA,CAACF,QAAkC,EAAE;EACpEC,qBAAa,CAACC,iBAAiB,GAAGF,QAAQ;AAC5C;;AAEA;AACA;AACA;AACA;AACO,SAASG,gBAAgBA,CAACH,QAAkC,EAAE;EACnEC,qBAAa,CAACE,gBAAgB,GAAGH,QAAQ;AAC3C;;AAEA;AACA;AACA;AACA;AACO,SAASI,oBAAoBA,CAACJ,QAAkC,EAAE;EACvEC,qBAAa,CAACG,oBAAoB,GAAGJ,QAAQ;AAC/C;;AAEA;AACA;AACA;AACA;AACO,SAASK,gBAAgBA,CAACL,QAAkC,EAAE;EACnEC,qBAAa,CAACI,gBAAgB,GAAGL,QAAQ;AAC3C;;AAEA;AACA;AACA;AACA;AACO,SAASM,gBAAgBA,CAC9BN,QAAwD,EACxD;EACAC,qBAAa,CAACK,gBAAgB,GAAGN,QAAQ;AAC3C;;AAEA;AACA;AACA;AACA;AACO,SAASO,uBAAuBA,CACrCP,QAA+D,EAC/D;EACAC,qBAAa,CAACM,uBAAuB,GAAGP,QAAQ;AAClD;;AAEA;AACA;AACA;AACA;AACO,SAASQ,wBAAwBA,CACtCR,QAAgE,EAChE;EACAC,qBAAa,CAACO,wBAAwB,GAAGR,QAAQ;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAMS,oBAAoB,GAAAC,OAAA,CAAAD,oBAAA,GAC/BE,oCAAiB,CAACC,UAAU,CACzBC,EAAE,IAAMZ,qBAAa,CAACQ,oBAAoB,GAAGI,EAChD,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACO,MAAMC,mBAAmB,GAAAJ,OAAA,CAAAI,mBAAA,GAC9BH,oCAAiB,CAACC,UAAU,CACzBC,EAAE,IAAMZ,qBAAa,CAACa,mBAAmB,GAAGD,EAC/C,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACO,MAAME,YAAY,GAAAL,OAAA,CAAAK,YAAA,GAAGJ,oCAAiB,CAACC,UAAU,CACrDC,EAAE,IAAMZ,qBAAa,CAACc,YAAY,GAAGF,EACxC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACO,MAAMG,aAAa,GAAAN,OAAA,CAAAM,aAAA,GAAGL,oCAAiB,CAACC,UAAU,CACtDC,EAAE,IAAMZ,qBAAa,CAACe,aAAa,GAAGH,EACzC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACO,MAAMI,YAAY,GAAAP,OAAA,CAAAO,YAAA,GAAGN,oCAAiB,CAACC,UAAU,CACrDC,EAAE,IAAMZ,qBAAa,CAACgB,YAAY,GAAGJ,EACxC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACO,MAAMK,cAAc,GAAAR,OAAA,CAAAQ,cAAA,GAAGP,oCAAiB,CAACC,UAAU,CACvDC,EAAE,IAAMZ,qBAAa,CAACiB,cAAc,GAAGL,EAC1C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACO,MAAMM,kBAAkB,GAAAT,OAAA,CAAAS,kBAAA,GAC7BR,oCAAiB,CAACC,UAAU,CACzBC,EAAE,IAAMZ,qBAAa,CAACkB,kBAAkB,GAAGN,EAC9C,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACO,MAAMO,gBAAgB,GAAAV,OAAA,CAAAU,gBAAA,GAAGT,oCAAiB,CAACC,UAAU,CACzDC,EAAE,IAAMZ,qBAAa,CAACmB,gBAAgB,GAAGP,EAC5C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACO,MAAMQ,YAAY,GAAAX,OAAA,CAAAW,YAAA,GAAGV,oCAAiB,CAACC,UAAU,CACrDC,EAAE,IAAMZ,qBAAa,CAACoB,YAAY,GAAGR,EACxC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACO,MAAMS,iBAAiB,GAAAZ,OAAA,CAAAY,iBAAA,GAC5BX,oCAAiB,CAACC,UAAU,CACzBC,EAAE,IAAMZ,qBAAa,CAACqB,iBAAiB,GAAGT,EAC7C,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACO,MAAMU,YAAY,GAAAb,OAAA,CAAAa,YAAA,GAAGZ,oCAAiB,CAACC,UAAU,CACrDC,EAAE,IAAMZ,qBAAa,CAACsB,YAAY,GAAGV,EACxC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACO,MAAMW,YAAY,GAAAd,OAAA,CAAAc,YAAA,GAAGb,oCAAiB,CAACC,UAAU,CACrDC,EAAE,IAAMZ,qBAAa,CAACuB,YAAY,GAAGX,EACxC,CAAC","ignoreList":[]}
|