react-native-audio-browser 0.2.0-next.11 → 0.2.0-next.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/android/src/main/java/com/audiobrowser/AudioBrowser.kt +110 -25
- package/android/src/main/java/com/audiobrowser/browser/BrowserManager.kt +254 -188
- package/android/src/main/java/com/audiobrowser/browser/BrowserUrlResolution.kt +23 -3
- package/android/src/main/java/com/audiobrowser/browser/JsonModels.kt +77 -58
- package/android/src/main/java/com/audiobrowser/browser/SectionScope.kt +68 -26
- package/android/src/main/java/com/audiobrowser/browser/StyleResolver.kt +49 -0
- package/android/src/main/java/com/audiobrowser/extension/ResolvedTrackExt.kt +9 -7
- package/android/src/main/java/com/audiobrowser/extension/TappedTrack.kt +20 -0
- package/android/src/main/java/com/audiobrowser/extension/TrackIdentity.kt +15 -0
- package/android/src/main/java/com/audiobrowser/player/MediaSessionCallback.kt +120 -67
- package/android/src/main/java/com/audiobrowser/player/NowPlayingUpdater.kt +21 -24
- package/android/src/main/java/com/audiobrowser/player/PlaybackStateStore.kt +93 -73
- package/android/src/main/java/com/audiobrowser/player/Player.kt +48 -30
- package/android/src/main/java/com/audiobrowser/player/PlayerCapabilitiesExt.kt +2 -15
- package/android/src/main/java/com/audiobrowser/util/BrowserPathHelper.kt +44 -40
- package/android/src/main/java/com/audiobrowser/util/MediaExtrasBuilder.kt +28 -23
- package/android/src/main/java/com/audiobrowser/util/StyleWire.kt +35 -0
- package/android/src/main/java/com/audiobrowser/util/TrackFactory.kt +45 -53
- package/android/src/test/java/com/audiobrowser/TestFixtures.kt +26 -39
- package/android/src/test/java/com/audiobrowser/browser/BrowserManagerFavoritesTest.kt +153 -0
- package/android/src/test/java/com/audiobrowser/browser/BrowserManagerTest.kt +228 -50
- package/android/src/test/java/com/audiobrowser/browser/BrowserUrlResolutionTest.kt +38 -0
- package/android/src/test/java/com/audiobrowser/browser/JsonArtworkTest.kt +1 -1
- package/android/src/test/java/com/audiobrowser/browser/JsonStyleTest.kt +91 -0
- package/android/src/test/java/com/audiobrowser/browser/SectionScopeTest.kt +128 -53
- package/android/src/test/java/com/audiobrowser/browser/StyleResolverTest.kt +87 -0
- package/android/src/test/java/com/audiobrowser/extension/TappedTrackTest.kt +43 -0
- package/android/src/test/java/com/audiobrowser/extension/TrackIdentityTest.kt +41 -0
- package/android/src/test/java/com/audiobrowser/player/CapabilityControlsTest.kt +1 -2
- package/android/src/test/java/com/audiobrowser/player/NowPlayingUpdaterTest.kt +42 -2
- package/android/src/test/java/com/audiobrowser/player/PlaybackStateStoreTrackJsonTest.kt +55 -0
- package/android/src/test/java/com/audiobrowser/util/BrowserPathHelperTest.kt +41 -16
- package/android/src/test/java/com/audiobrowser/util/MediaExtrasBuilderTest.kt +161 -0
- package/android/src/test/java/com/audiobrowser/util/TrackFactoryMediaIdTest.kt +7 -7
- package/ios/Browser/BrowserConfig.swift +102 -5
- package/ios/Browser/BrowserManager+URLResolution.swift +18 -14
- package/ios/Browser/BrowserManager.swift +131 -143
- package/ios/Browser/BrowserPathHelper.swift +44 -44
- package/ios/Browser/JsonModels.swift +187 -106
- package/ios/Browser/SearchDrillIn.swift +6 -6
- package/ios/Browser/SectionPresentation.swift +34 -0
- package/ios/Browser/SectionScope.swift +58 -24
- package/ios/Browser/StyleResolver.swift +47 -0
- package/ios/Browser/TabBarEntries.swift +2 -2
- package/ios/Browser/TrackIdTemplate.swift +37 -0
- package/ios/CarPlay/CarPlayArtworkResolver.swift +8 -7
- package/ios/CarPlay/CarPlayController.swift +105 -67
- package/ios/CarPlay/CarPlayImageLoader.swift +38 -18
- package/ios/CarPlay/CarPlayListItemFactory.swift +217 -84
- package/ios/CarPlay/CarPlayNowPlayingManager.swift +15 -12
- package/ios/Extension/Capability+RemoteCommand.swift +1 -1
- package/ios/Extension/PlayerCapabilities+Favorite.swift +1 -15
- package/ios/Extension/ResolvedTrack+Copying.swift +11 -15
- package/ios/Extension/Section+Copying.swift +31 -0
- package/ios/Extension/Track+Copying.swift +6 -12
- package/ios/Extension/Track+Identity.swift +18 -0
- package/ios/HybridAudioBrowser.swift +113 -35
- package/ios/Model/NitroTypeStubs.swift +46 -21
- package/ios/Model/PlayerUpdateOptions.swift +7 -0
- package/ios/Player/NowPlayingUpdater.swift +1 -1
- package/ios/Player/PlaybackCoordinator.swift +2 -2
- package/ios/Player/RetryManager.swift +4 -3
- package/ios/Tests/BrowserPathHelperTests.swift +50 -20
- package/ios/Tests/CarPlayArtworkResolverTests.swift +24 -41
- package/ios/Tests/JsonModelsTests.swift +75 -1
- package/ios/Tests/PlaybackStateStoreTests.swift +4 -3
- package/ios/Tests/ResolvedTrackCopyingTests.swift +37 -35
- package/ios/Tests/SearchDrillInTests.swift +16 -16
- package/ios/Tests/SectionPresentationTests.swift +61 -0
- package/ios/Tests/SectionScopeTests.swift +87 -55
- package/ios/Tests/StyleResolverTests.swift +67 -0
- package/ios/Tests/TabBarEntriesTests.swift +18 -18
- package/ios/Tests/TrackIdTemplateTests.swift +67 -0
- package/ios/Tests/TrackIdentityTests.swift +20 -0
- package/ios/Tests/TrackSelectorTests.swift +168 -33
- package/ios/TrackSelector.swift +45 -30
- package/ios/Util/ArtworkImageFetcher.swift +16 -1
- package/lib/commonjs/AudioBrowser.js +11 -0
- package/lib/commonjs/AudioBrowser.js.map +1 -1
- package/lib/commonjs/features/browser-config.js +11 -8
- package/lib/commonjs/features/browser-config.js.map +1 -1
- package/lib/commonjs/features/browser.js +2 -2
- package/lib/commonjs/features/favorites.js +13 -10
- package/lib/commonjs/features/favorites.js.map +1 -1
- package/lib/commonjs/features/playback/controls.js +4 -2
- package/lib/commonjs/features/playback/controls.js.map +1 -1
- package/lib/commonjs/features/playback/state.js +2 -3
- package/lib/commonjs/features/playback/state.js.map +1 -1
- package/lib/commonjs/features/player/options.js.map +1 -1
- package/lib/commonjs/features/player/setup.js +3 -1
- package/lib/commonjs/features/player/setup.js.map +1 -1
- package/lib/commonjs/features/player/validateOptions.js +2 -0
- package/lib/commonjs/features/player/validateOptions.js.map +1 -1
- package/lib/commonjs/features/queue/activeTrack.js +14 -3
- package/lib/commonjs/features/queue/activeTrack.js.map +1 -1
- package/lib/commonjs/features/queue/queue.js +11 -4
- package/lib/commonjs/features/queue/queue.js.map +1 -1
- package/lib/commonjs/utils/LazyNativeEmitter.js +21 -10
- package/lib/commonjs/utils/LazyNativeEmitter.js.map +1 -1
- package/lib/commonjs/utils/NativeUpdatedValue.js +31 -13
- package/lib/commonjs/utils/NativeUpdatedValue.js.map +1 -1
- package/lib/commonjs/utils/getTrackIdentity.js +24 -0
- package/lib/commonjs/utils/getTrackIdentity.js.map +1 -0
- package/lib/commonjs/utils/useNativeValueRefreshedBy.js +33 -0
- package/lib/commonjs/utils/useNativeValueRefreshedBy.js.map +1 -0
- package/lib/commonjs/web/NativeAudioBrowser.js +32 -24
- package/lib/commonjs/web/NativeAudioBrowser.js.map +1 -1
- package/lib/commonjs/web/browser/BrowserManager.js +144 -87
- package/lib/commonjs/web/browser/BrowserManager.js.map +1 -1
- package/lib/commonjs/web/browser/FavoriteManager.js +30 -21
- package/lib/commonjs/web/browser/FavoriteManager.js.map +1 -1
- package/lib/commonjs/web/browser/assertBrowsePageShape.js +2 -2
- package/lib/commonjs/web/browser/assertBrowsePageShape.js.map +1 -1
- package/lib/commonjs/web/browser/classifyTrackNavigation.js +9 -9
- package/lib/commonjs/web/browser/classifyTrackNavigation.js.map +1 -1
- package/lib/commonjs/web/browser/sections.js +89 -0
- package/lib/commonjs/web/browser/sections.js.map +1 -0
- package/lib/commonjs/web/player/NowPlayingManager.js +4 -3
- package/lib/commonjs/web/player/NowPlayingManager.js.map +1 -1
- package/lib/commonjs/web/util/BrowserPathHelper.js +56 -11
- package/lib/commonjs/web/util/BrowserPathHelper.js.map +1 -1
- package/lib/module/AudioBrowser.js +1 -0
- package/lib/module/AudioBrowser.js.map +1 -1
- package/lib/module/features/browser-config.js +11 -8
- package/lib/module/features/browser-config.js.map +1 -1
- package/lib/module/features/browser.js +2 -2
- package/lib/module/features/favorites.js +13 -10
- package/lib/module/features/favorites.js.map +1 -1
- package/lib/module/features/playback/controls.js +4 -2
- package/lib/module/features/playback/controls.js.map +1 -1
- package/lib/module/features/playback/state.js +2 -3
- package/lib/module/features/playback/state.js.map +1 -1
- package/lib/module/features/player/options.js.map +1 -1
- package/lib/module/features/player/setup.js +3 -1
- package/lib/module/features/player/setup.js.map +1 -1
- package/lib/module/features/player/validateOptions.js +2 -0
- package/lib/module/features/player/validateOptions.js.map +1 -1
- package/lib/module/features/queue/activeTrack.js +14 -3
- package/lib/module/features/queue/activeTrack.js.map +1 -1
- package/lib/module/features/queue/queue.js +11 -4
- package/lib/module/features/queue/queue.js.map +1 -1
- package/lib/module/utils/LazyNativeEmitter.js +21 -10
- package/lib/module/utils/LazyNativeEmitter.js.map +1 -1
- package/lib/module/utils/NativeUpdatedValue.js +31 -13
- package/lib/module/utils/NativeUpdatedValue.js.map +1 -1
- package/lib/module/utils/getTrackIdentity.js +20 -0
- package/lib/module/utils/getTrackIdentity.js.map +1 -0
- package/lib/module/utils/useNativeValueRefreshedBy.js +29 -0
- package/lib/module/utils/useNativeValueRefreshedBy.js.map +1 -0
- package/lib/module/web/NativeAudioBrowser.js +32 -24
- package/lib/module/web/NativeAudioBrowser.js.map +1 -1
- package/lib/module/web/browser/BrowserManager.js +144 -87
- package/lib/module/web/browser/BrowserManager.js.map +1 -1
- package/lib/module/web/browser/FavoriteManager.js +31 -21
- package/lib/module/web/browser/FavoriteManager.js.map +1 -1
- package/lib/module/web/browser/assertBrowsePageShape.js +2 -2
- package/lib/module/web/browser/assertBrowsePageShape.js.map +1 -1
- package/lib/module/web/browser/classifyTrackNavigation.js +9 -9
- package/lib/module/web/browser/classifyTrackNavigation.js.map +1 -1
- package/lib/module/web/browser/sections.js +83 -0
- package/lib/module/web/browser/sections.js.map +1 -0
- package/lib/module/web/player/NowPlayingManager.js +4 -3
- package/lib/module/web/player/NowPlayingManager.js.map +1 -1
- package/lib/module/web/util/BrowserPathHelper.js +56 -11
- package/lib/module/web/util/BrowserPathHelper.js.map +1 -1
- package/lib/typescript/src/AudioBrowser.d.ts +1 -0
- package/lib/typescript/src/AudioBrowser.d.ts.map +1 -1
- package/lib/typescript/src/features/browser-config.d.ts.map +1 -1
- package/lib/typescript/src/features/browser.d.ts +2 -2
- package/lib/typescript/src/features/favorites.d.ts +13 -10
- package/lib/typescript/src/features/favorites.d.ts.map +1 -1
- package/lib/typescript/src/features/playback/controls.d.ts +4 -2
- package/lib/typescript/src/features/playback/controls.d.ts.map +1 -1
- package/lib/typescript/src/features/playback/state.d.ts +2 -3
- package/lib/typescript/src/features/playback/state.d.ts.map +1 -1
- package/lib/typescript/src/features/playback/trackPlaybackTime.d.ts +1 -1
- package/lib/typescript/src/features/playback/trackPlaybackTime.d.ts.map +1 -1
- package/lib/typescript/src/features/player/options.d.ts +21 -19
- package/lib/typescript/src/features/player/options.d.ts.map +1 -1
- package/lib/typescript/src/features/player/setup.d.ts.map +1 -1
- package/lib/typescript/src/features/player/validateOptions.d.ts +1 -8
- package/lib/typescript/src/features/player/validateOptions.d.ts.map +1 -1
- package/lib/typescript/src/features/queue/activeTrack.d.ts +8 -1
- package/lib/typescript/src/features/queue/activeTrack.d.ts.map +1 -1
- package/lib/typescript/src/features/queue/queue.d.ts +5 -2
- package/lib/typescript/src/features/queue/queue.d.ts.map +1 -1
- package/lib/typescript/src/types/browser-native.d.ts +2 -2
- package/lib/typescript/src/types/browser-native.d.ts.map +1 -1
- package/lib/typescript/src/types/browser-nodes.d.ts +260 -127
- package/lib/typescript/src/types/browser-nodes.d.ts.map +1 -1
- package/lib/typescript/src/types/browser.d.ts +33 -53
- package/lib/typescript/src/types/browser.d.ts.map +1 -1
- package/lib/typescript/src/utils/LazyNativeEmitter.d.ts +16 -17
- package/lib/typescript/src/utils/LazyNativeEmitter.d.ts.map +1 -1
- package/lib/typescript/src/utils/NativeUpdatedValue.d.ts +24 -19
- package/lib/typescript/src/utils/NativeUpdatedValue.d.ts.map +1 -1
- package/lib/typescript/src/utils/getTrackIdentity.d.ts +18 -0
- package/lib/typescript/src/utils/getTrackIdentity.d.ts.map +1 -0
- package/lib/typescript/src/utils/useNativeValueRefreshedBy.d.ts +21 -0
- package/lib/typescript/src/utils/useNativeValueRefreshedBy.d.ts.map +1 -0
- package/nitrogen/generated/android/AudioBrowser+autolinking.cmake +0 -1
- package/nitrogen/generated/android/c++/{JFavoritesMatchMode.hpp → JArtworkRendering.hpp} +15 -15
- package/nitrogen/generated/android/c++/JArtworkRequestConfig.hpp +4 -3
- package/nitrogen/generated/android/c++/JBrowseResult.hpp +10 -4
- package/nitrogen/generated/android/c++/JCarPlayPlayingIndicatorLocation.hpp +58 -0
- package/nitrogen/generated/android/c++/JFavoriteChangedEvent.hpp +4 -3
- package/nitrogen/generated/android/c++/JFormatNowPlayingParams.hpp +4 -3
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_RequestConfig___Track.hpp +4 -3
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_NowPlayingUpdate____FormatNowPlayingParams.hpp +4 -3
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_std__string____Track.hpp +4 -3
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____Track.hpp +4 -3
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_Track______SearchParams.hpp +4 -2
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_void_____TrackLoadEvent.hpp +4 -2
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError__std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError_______BrowserSourceCallbackParam.hpp +10 -4
- package/nitrogen/generated/android/c++/JFunc_void_FavoriteChangedEvent.hpp +4 -3
- package/nitrogen/generated/android/c++/JFunc_void_Options.hpp +2 -5
- package/nitrogen/generated/android/c++/JFunc_void_PlaybackActiveTrackChangedEvent.hpp +4 -3
- package/nitrogen/generated/android/c++/JFunc_void_std__optional_ResolvedTrack_.hpp +9 -3
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_Track_.hpp +4 -2
- package/nitrogen/generated/android/c++/JHybridAudioBrowserSpec.cpp +21 -14
- package/nitrogen/generated/android/c++/JIOSOptions.hpp +9 -3
- package/nitrogen/generated/android/c++/JMediaRequestConfig.hpp +4 -3
- package/nitrogen/generated/android/c++/JNativeBrowserConfiguration.hpp +16 -10
- package/nitrogen/generated/android/c++/JNativeRouteEntry.hpp +8 -2
- package/nitrogen/generated/android/c++/JNativeSetupPlayerOptions.hpp +6 -7
- package/nitrogen/generated/android/c++/JNativeUpdateOptions.hpp +2 -5
- package/nitrogen/generated/android/c++/JNitroIOSUpdateOptions.hpp +9 -3
- package/nitrogen/generated/android/c++/JOptions.hpp +2 -5
- package/nitrogen/generated/android/c++/JPlaybackActiveTrackChangedEvent.hpp +4 -3
- package/nitrogen/generated/android/c++/JPlayerCapabilities.hpp +5 -11
- package/nitrogen/generated/android/c++/JResolvedTrack.hpp +49 -51
- package/nitrogen/generated/android/c++/JSection.hpp +114 -0
- package/nitrogen/generated/android/c++/JSectionStyle.hpp +69 -0
- package/nitrogen/generated/android/c++/JStyleDisplay.hpp +58 -0
- package/nitrogen/generated/android/c++/JTrack.hpp +19 -48
- package/nitrogen/generated/android/c++/JTrackLoadEvent.hpp +4 -2
- package/nitrogen/generated/android/c++/JTrackStyle.hpp +25 -18
- package/nitrogen/generated/android/c++/JVariant_ResolvedTrack_BrowseError_Promise_BrowseResult_.hpp +10 -4
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{FavoritesMatchMode.kt → ArtworkRendering.kt} +5 -5
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/CarPlayPlayingIndicatorLocation.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/IOSOptions.kt +6 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeBrowserConfiguration.kt +5 -5
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NitroIOSUpdateOptions.kt +6 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlayerCapabilities.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ResolvedTrack.kt +12 -18
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Section.kt +50 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{FavoriteConfig.kt → SectionStyle.kt} +12 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/StyleDisplay.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Track.kt +6 -15
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TrackStyle.kt +23 -5
- package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Bridge.hpp +104 -82
- package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Umbrella.hpp +16 -10
- package/nitrogen/generated/ios/c++/HybridAudioBrowserSpecSwift.hpp +16 -10
- package/nitrogen/generated/ios/swift/ArtworkRendering.swift +40 -0
- package/nitrogen/generated/ios/swift/CarPlayPlayingIndicatorLocation.swift +40 -0
- package/nitrogen/generated/ios/swift/IOSOptions.swift +7 -2
- package/nitrogen/generated/ios/swift/NativeBrowserConfiguration.swift +5 -5
- package/nitrogen/generated/ios/swift/NitroIOSUpdateOptions.swift +12 -1
- package/nitrogen/generated/ios/swift/PlayerCapabilities.swift +8 -27
- package/nitrogen/generated/ios/swift/ResolvedTrack.swift +54 -83
- package/nitrogen/generated/ios/swift/Section.swift +100 -0
- package/nitrogen/generated/ios/swift/SectionStyle.swift +64 -0
- package/nitrogen/generated/ios/swift/StyleDisplay.swift +40 -0
- package/nitrogen/generated/ios/swift/Track.swift +20 -73
- package/nitrogen/generated/ios/swift/TrackStyle.swift +28 -22
- package/nitrogen/generated/shared/c++/{FavoritesMatchMode.hpp → ArtworkRendering.hpp} +17 -17
- package/nitrogen/generated/shared/c++/CarPlayPlayingIndicatorLocation.hpp +76 -0
- package/nitrogen/generated/shared/c++/IOSOptions.hpp +9 -2
- package/nitrogen/generated/shared/c++/NativeBrowserConfiguration.hpp +6 -6
- package/nitrogen/generated/shared/c++/NitroIOSUpdateOptions.hpp +9 -2
- package/nitrogen/generated/shared/c++/PlayerCapabilities.hpp +6 -9
- package/nitrogen/generated/shared/c++/ResolvedTrack.hpp +30 -38
- package/nitrogen/generated/shared/c++/Section.hpp +106 -0
- package/nitrogen/generated/shared/c++/SectionStyle.hpp +96 -0
- package/nitrogen/generated/shared/c++/StyleDisplay.hpp +76 -0
- package/nitrogen/generated/shared/c++/Track.hpp +15 -31
- package/nitrogen/generated/shared/c++/TrackStyle.hpp +50 -34
- package/package.json +1 -1
- package/src/AudioBrowser.ts +1 -0
- package/src/features/browser-config.test.ts +21 -6
- package/src/features/browser-config.ts +11 -8
- package/src/features/browser.test.ts +1 -1
- package/src/features/browser.ts +2 -2
- package/src/features/favorites.ts +13 -10
- package/src/features/hook-wiring.test.ts +63 -15
- package/src/features/playback/controls.ts +4 -2
- package/src/features/playback/state.ts +2 -3
- package/src/features/playback/trackPlaybackTime.ts +1 -1
- package/src/features/player/options.ts +27 -19
- package/src/features/player/setup.test.ts +12 -3
- package/src/features/player/setup.ts +3 -1
- package/src/features/player/validateOptions.ts +2 -0
- package/src/features/queue/activeTrack.ts +14 -3
- package/src/features/queue/queue.ts +11 -4
- package/src/nitro-stub-drift.test.ts +40 -0
- package/src/public-surface.test.ts +40 -0
- package/src/specs/audio-browser.nitro.ts +4 -3
- package/src/style-resolution.test.ts +139 -0
- package/src/types/browser-native.ts +2 -2
- package/src/types/browser-nodes.ts +268 -136
- package/src/types/browser.ts +34 -55
- package/src/utils/LazyNativeEmitter.ts +20 -10
- package/src/utils/NativeUpdatedValue.ts +29 -13
- package/src/utils/getTrackIdentity.ts +20 -0
- package/src/utils/useNativeValueRefreshedBy.ts +38 -0
- package/src/web/NativeAudioBrowser.ts +37 -22
- package/src/web/browser/BrowserManager.ts +176 -95
- package/src/web/browser/FavoriteManager.test.ts +84 -0
- package/src/web/browser/FavoriteManager.ts +28 -23
- package/src/web/browser/assertBrowsePageShape.test.ts +1 -1
- package/src/web/browser/assertBrowsePageShape.ts +5 -3
- package/src/web/browser/classifyTrackNavigation.test.ts +10 -8
- package/src/web/browser/classifyTrackNavigation.ts +9 -9
- package/src/web/browser/parseSearchResponse.test.ts +8 -2
- package/src/web/browser/sections.test.ts +91 -0
- package/src/web/browser/sections.ts +72 -0
- package/src/web/player/NowPlayingManager.ts +4 -3
- package/src/web/util/BrowserPathHelper.test.ts +52 -0
- package/src/web/util/BrowserPathHelper.ts +61 -13
- package/ios/CarPlay/ImageRowItem+CarPlay.swift +0 -19
- package/nitrogen/generated/android/c++/JFavoriteConfig.hpp +0 -58
- package/nitrogen/generated/android/c++/JImageRowItem.hpp +0 -105
- package/nitrogen/generated/android/c++/JVariant_Boolean_FavoriteConfig.cpp +0 -26
- package/nitrogen/generated/android/c++/JVariant_Boolean_FavoriteConfig.hpp +0 -71
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ImageRowItem.kt +0 -68
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_Boolean_FavoriteConfig.kt +0 -53
- package/nitrogen/generated/ios/swift/FavoriteConfig.swift +0 -29
- package/nitrogen/generated/ios/swift/FavoritesMatchMode.swift +0 -40
- package/nitrogen/generated/ios/swift/ImageRowItem.swift +0 -195
- package/nitrogen/generated/ios/swift/Variant_Bool_FavoriteConfig.swift +0 -18
- package/nitrogen/generated/shared/c++/FavoriteConfig.hpp +0 -84
- package/nitrogen/generated/shared/c++/ImageRowItem.hpp +0 -129
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// CarPlayPlayingIndicatorLocation.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
|
+
/**
|
|
9
|
+
* Represents the JS union `CarPlayPlayingIndicatorLocation`, backed by a C++ enum.
|
|
10
|
+
*/
|
|
11
|
+
public typealias CarPlayPlayingIndicatorLocation = margelo.nitro.audiobrowser.CarPlayPlayingIndicatorLocation
|
|
12
|
+
|
|
13
|
+
public extension CarPlayPlayingIndicatorLocation {
|
|
14
|
+
/**
|
|
15
|
+
* Get a CarPlayPlayingIndicatorLocation for the given String value, or
|
|
16
|
+
* return `nil` if the given value was invalid/unknown.
|
|
17
|
+
*/
|
|
18
|
+
init?(fromString string: String) {
|
|
19
|
+
switch string {
|
|
20
|
+
case "leading":
|
|
21
|
+
self = .leading
|
|
22
|
+
case "trailing":
|
|
23
|
+
self = .trailing
|
|
24
|
+
default:
|
|
25
|
+
return nil
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Get the String value this CarPlayPlayingIndicatorLocation represents.
|
|
31
|
+
*/
|
|
32
|
+
var stringValue: String {
|
|
33
|
+
switch self {
|
|
34
|
+
case .leading:
|
|
35
|
+
return "leading"
|
|
36
|
+
case .trailing:
|
|
37
|
+
return "trailing"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -18,7 +18,7 @@ public extension IOSOptions {
|
|
|
18
18
|
/**
|
|
19
19
|
* Create a new instance of `IOSOptions`.
|
|
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__vector_double_ in
|
|
23
23
|
var __vector = bridge.create_std__vector_double_(playbackRates.count)
|
|
24
24
|
for __item in playbackRates {
|
|
@@ -31,7 +31,7 @@ public extension IOSOptions {
|
|
|
31
31
|
__vector.push_back(__item)
|
|
32
32
|
}
|
|
33
33
|
return __vector
|
|
34
|
-
}())
|
|
34
|
+
}(), carPlayPlayingIndicatorLocation)
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
@inline(__always)
|
|
@@ -48,4 +48,9 @@ public extension IOSOptions {
|
|
|
48
48
|
var carPlayNowPlayingButtons: [CarPlayNowPlayingButton] {
|
|
49
49
|
return self.__carPlayNowPlayingButtons.map({ __item in __item })
|
|
50
50
|
}
|
|
51
|
+
|
|
52
|
+
@inline(__always)
|
|
53
|
+
var carPlayPlayingIndicatorLocation: CarPlayPlayingIndicatorLocation {
|
|
54
|
+
return self.__carPlayPlayingIndicatorLocation
|
|
55
|
+
}
|
|
51
56
|
}
|
|
@@ -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?, 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))
|
|
@@ -113,7 +113,7 @@ public extension NativeBrowserConfiguration {
|
|
|
113
113
|
return .init()
|
|
114
114
|
}
|
|
115
115
|
}(), { () -> bridge.std__optional_std__function_std__shared_ptr_Promise_std__optional_std__string____const_Track_____track______ in
|
|
116
|
-
if let __unwrappedValue =
|
|
116
|
+
if let __unwrappedValue = resolveAlbumPath {
|
|
117
117
|
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
118
|
let __closureWrapper = Func_std__shared_ptr_Promise_std__optional_std__string____Track(__unwrappedValue)
|
|
119
119
|
return bridge.create_Func_std__shared_ptr_Promise_std__optional_std__string____Track(__closureWrapper.toUnsafe())
|
|
@@ -333,10 +333,10 @@ public extension NativeBrowserConfiguration {
|
|
|
333
333
|
}
|
|
334
334
|
|
|
335
335
|
@inline(__always)
|
|
336
|
-
var
|
|
336
|
+
var resolveAlbumPath: ((_ track: Track) -> Promise<String?>)? {
|
|
337
337
|
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.
|
|
338
|
+
if bridge.has_value_std__optional_std__function_std__shared_ptr_Promise_std__optional_std__string____const_Track_____track______(self.__resolveAlbumPath) {
|
|
339
|
+
let __unwrapped = bridge.get_std__optional_std__function_std__shared_ptr_Promise_std__optional_std__string____const_Track_____track______(self.__resolveAlbumPath)
|
|
340
340
|
return { () -> (Track) -> Promise<String?> in
|
|
341
341
|
let __wrappedFunction = bridge.wrap_Func_std__shared_ptr_Promise_std__optional_std__string____Track(__unwrapped)
|
|
342
342
|
return { (__track: Track) -> Promise<String?> in
|
|
@@ -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
|
}
|
|
@@ -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?) {
|
|
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,36 +146,35 @@ 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.std__optional_std__vector_ImageRowItem__ in
|
|
156
|
-
if let __unwrappedValue = imageRow {
|
|
157
|
-
return bridge.create_std__optional_std__vector_ImageRowItem__({ () -> bridge.std__vector_ImageRowItem_ in
|
|
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
|
-
}())
|
|
164
|
-
} else {
|
|
165
|
-
return .init()
|
|
166
|
-
}
|
|
167
155
|
}())
|
|
168
156
|
}
|
|
169
157
|
|
|
170
158
|
@inline(__always)
|
|
171
|
-
var
|
|
172
|
-
return String(self.
|
|
159
|
+
var path: String {
|
|
160
|
+
return String(self.__path)
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
@inline(__always)
|
|
164
|
+
var style: SectionStyle? {
|
|
165
|
+
return self.__style.value
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
@inline(__always)
|
|
169
|
+
var sections: [Section]? {
|
|
170
|
+
return { () -> [Section]? in
|
|
171
|
+
if bridge.has_value_std__optional_std__vector_Section__(self.__sections) {
|
|
172
|
+
let __unwrapped = bridge.get_std__optional_std__vector_Section__(self.__sections)
|
|
173
|
+
return __unwrapped.map({ __item in __item })
|
|
174
|
+
} else {
|
|
175
|
+
return nil
|
|
176
|
+
}
|
|
177
|
+
}()
|
|
173
178
|
}
|
|
174
179
|
|
|
175
180
|
@inline(__always)
|
|
@@ -247,18 +252,6 @@ public extension ResolvedTrack {
|
|
|
247
252
|
return self.__request.value
|
|
248
253
|
}
|
|
249
254
|
|
|
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
255
|
@inline(__always)
|
|
263
256
|
var title: String {
|
|
264
257
|
return String(self.__title)
|
|
@@ -289,10 +282,10 @@ public extension ResolvedTrack {
|
|
|
289
282
|
}
|
|
290
283
|
|
|
291
284
|
@inline(__always)
|
|
292
|
-
var
|
|
285
|
+
var albumPath: String? {
|
|
293
286
|
return { () -> String? in
|
|
294
|
-
if bridge.has_value_std__optional_std__string_(self.
|
|
295
|
-
let __unwrapped = bridge.get_std__optional_std__string_(self.
|
|
287
|
+
if bridge.has_value_std__optional_std__string_(self.__albumPath) {
|
|
288
|
+
let __unwrapped = bridge.get_std__optional_std__string_(self.__albumPath)
|
|
296
289
|
return String(__unwrapped)
|
|
297
290
|
} else {
|
|
298
291
|
return nil
|
|
@@ -349,20 +342,10 @@ public extension ResolvedTrack {
|
|
|
349
342
|
}
|
|
350
343
|
|
|
351
344
|
@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? {
|
|
345
|
+
var disabled: Bool? {
|
|
363
346
|
return { () -> Bool? in
|
|
364
|
-
if bridge.has_value_std__optional_bool_(self.
|
|
365
|
-
let __unwrapped = bridge.get_std__optional_bool_(self.
|
|
347
|
+
if bridge.has_value_std__optional_bool_(self.__disabled) {
|
|
348
|
+
let __unwrapped = bridge.get_std__optional_bool_(self.__disabled)
|
|
366
349
|
return __unwrapped
|
|
367
350
|
} else {
|
|
368
351
|
return nil
|
|
@@ -371,11 +354,11 @@ public extension ResolvedTrack {
|
|
|
371
354
|
}
|
|
372
355
|
|
|
373
356
|
@inline(__always)
|
|
374
|
-
var
|
|
375
|
-
return { () ->
|
|
376
|
-
if bridge.
|
|
377
|
-
let __unwrapped = bridge.
|
|
378
|
-
return
|
|
357
|
+
var favorited: Bool? {
|
|
358
|
+
return { () -> Bool? in
|
|
359
|
+
if bridge.has_value_std__optional_bool_(self.__favorited) {
|
|
360
|
+
let __unwrapped = bridge.get_std__optional_bool_(self.__favorited)
|
|
361
|
+
return __unwrapped
|
|
379
362
|
} else {
|
|
380
363
|
return nil
|
|
381
364
|
}
|
|
@@ -393,16 +376,4 @@ public extension ResolvedTrack {
|
|
|
393
376
|
}
|
|
394
377
|
}()
|
|
395
378
|
}
|
|
396
|
-
|
|
397
|
-
@inline(__always)
|
|
398
|
-
var imageRow: [ImageRowItem]? {
|
|
399
|
-
return { () -> [ImageRowItem]? in
|
|
400
|
-
if bridge.has_value_std__optional_std__vector_ImageRowItem__(self.__imageRow) {
|
|
401
|
-
let __unwrapped = bridge.get_std__optional_std__vector_ImageRowItem__(self.__imageRow)
|
|
402
|
-
return __unwrapped.map({ __item in __item })
|
|
403
|
-
} else {
|
|
404
|
-
return nil
|
|
405
|
-
}
|
|
406
|
-
}()
|
|
407
|
-
}
|
|
408
379
|
}
|
|
@@ -0,0 +1,100 @@
|
|
|
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?, subtitle: 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_std__string_ in
|
|
29
|
+
if let __unwrappedValue = subtitle {
|
|
30
|
+
return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
|
|
31
|
+
} else {
|
|
32
|
+
return .init()
|
|
33
|
+
}
|
|
34
|
+
}(), { () -> bridge.std__optional_SectionStyle_ in
|
|
35
|
+
if let __unwrappedValue = style {
|
|
36
|
+
return bridge.create_std__optional_SectionStyle_(__unwrappedValue)
|
|
37
|
+
} else {
|
|
38
|
+
return .init()
|
|
39
|
+
}
|
|
40
|
+
}(), { () -> bridge.std__optional_std__string_ in
|
|
41
|
+
if let __unwrappedValue = path {
|
|
42
|
+
return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
|
|
43
|
+
} else {
|
|
44
|
+
return .init()
|
|
45
|
+
}
|
|
46
|
+
}(), { () -> bridge.std__vector_Track_ in
|
|
47
|
+
var __vector = bridge.create_std__vector_Track_(children.count)
|
|
48
|
+
for __item in children {
|
|
49
|
+
__vector.push_back(__item)
|
|
50
|
+
}
|
|
51
|
+
return __vector
|
|
52
|
+
}())
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
@inline(__always)
|
|
56
|
+
var title: String? {
|
|
57
|
+
return { () -> String? in
|
|
58
|
+
if bridge.has_value_std__optional_std__string_(self.__title) {
|
|
59
|
+
let __unwrapped = bridge.get_std__optional_std__string_(self.__title)
|
|
60
|
+
return String(__unwrapped)
|
|
61
|
+
} else {
|
|
62
|
+
return nil
|
|
63
|
+
}
|
|
64
|
+
}()
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@inline(__always)
|
|
68
|
+
var subtitle: String? {
|
|
69
|
+
return { () -> String? in
|
|
70
|
+
if bridge.has_value_std__optional_std__string_(self.__subtitle) {
|
|
71
|
+
let __unwrapped = bridge.get_std__optional_std__string_(self.__subtitle)
|
|
72
|
+
return String(__unwrapped)
|
|
73
|
+
} else {
|
|
74
|
+
return nil
|
|
75
|
+
}
|
|
76
|
+
}()
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@inline(__always)
|
|
80
|
+
var style: SectionStyle? {
|
|
81
|
+
return self.__style.value
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
@inline(__always)
|
|
85
|
+
var path: String? {
|
|
86
|
+
return { () -> String? in
|
|
87
|
+
if bridge.has_value_std__optional_std__string_(self.__path) {
|
|
88
|
+
let __unwrapped = bridge.get_std__optional_std__string_(self.__path)
|
|
89
|
+
return String(__unwrapped)
|
|
90
|
+
} else {
|
|
91
|
+
return nil
|
|
92
|
+
}
|
|
93
|
+
}()
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
@inline(__always)
|
|
97
|
+
var children: [Track] {
|
|
98
|
+
return self.__children.map({ __item in __item })
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// SectionStyle.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 `SectionStyle`, backed by a C++ struct.
|
|
12
|
+
*/
|
|
13
|
+
public typealias SectionStyle = margelo.nitro.audiobrowser.SectionStyle
|
|
14
|
+
|
|
15
|
+
public extension SectionStyle {
|
|
16
|
+
private typealias bridge = margelo.nitro.audiobrowser.bridge.swift
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Create a new instance of `SectionStyle`.
|
|
20
|
+
*/
|
|
21
|
+
init(gridWrap: Bool?, display: StyleDisplay?, artworkRendering: ArtworkRendering?) {
|
|
22
|
+
self.init({ () -> bridge.std__optional_bool_ in
|
|
23
|
+
if let __unwrappedValue = gridWrap {
|
|
24
|
+
return bridge.create_std__optional_bool_(__unwrappedValue)
|
|
25
|
+
} else {
|
|
26
|
+
return .init()
|
|
27
|
+
}
|
|
28
|
+
}(), { () -> bridge.std__optional_StyleDisplay_ in
|
|
29
|
+
if let __unwrappedValue = display {
|
|
30
|
+
return bridge.create_std__optional_StyleDisplay_(__unwrappedValue)
|
|
31
|
+
} else {
|
|
32
|
+
return .init()
|
|
33
|
+
}
|
|
34
|
+
}(), { () -> bridge.std__optional_ArtworkRendering_ in
|
|
35
|
+
if let __unwrappedValue = artworkRendering {
|
|
36
|
+
return bridge.create_std__optional_ArtworkRendering_(__unwrappedValue)
|
|
37
|
+
} else {
|
|
38
|
+
return .init()
|
|
39
|
+
}
|
|
40
|
+
}())
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@inline(__always)
|
|
44
|
+
var gridWrap: Bool? {
|
|
45
|
+
return { () -> Bool? in
|
|
46
|
+
if bridge.has_value_std__optional_bool_(self.__gridWrap) {
|
|
47
|
+
let __unwrapped = bridge.get_std__optional_bool_(self.__gridWrap)
|
|
48
|
+
return __unwrapped
|
|
49
|
+
} else {
|
|
50
|
+
return nil
|
|
51
|
+
}
|
|
52
|
+
}()
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
@inline(__always)
|
|
56
|
+
var display: StyleDisplay? {
|
|
57
|
+
return self.__display.value
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@inline(__always)
|
|
61
|
+
var artworkRendering: ArtworkRendering? {
|
|
62
|
+
return self.__artworkRendering.value
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// StyleDisplay.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
|
+
/**
|
|
9
|
+
* Represents the JS union `StyleDisplay`, backed by a C++ enum.
|
|
10
|
+
*/
|
|
11
|
+
public typealias StyleDisplay = margelo.nitro.audiobrowser.StyleDisplay
|
|
12
|
+
|
|
13
|
+
public extension StyleDisplay {
|
|
14
|
+
/**
|
|
15
|
+
* Get a StyleDisplay for the given String value, or
|
|
16
|
+
* return `nil` if the given value was invalid/unknown.
|
|
17
|
+
*/
|
|
18
|
+
init?(fromString string: String) {
|
|
19
|
+
switch string {
|
|
20
|
+
case "list":
|
|
21
|
+
self = .list
|
|
22
|
+
case "grid":
|
|
23
|
+
self = .grid
|
|
24
|
+
default:
|
|
25
|
+
return nil
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Get the String value this StyleDisplay represents.
|
|
31
|
+
*/
|
|
32
|
+
var stringValue: String {
|
|
33
|
+
switch self {
|
|
34
|
+
case .list:
|
|
35
|
+
return "list"
|
|
36
|
+
case .grid:
|
|
37
|
+
return "grid"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|