react-native-audio-browser 0.2.0-next.10 → 0.2.0-next.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (345) hide show
  1. package/README.md +4 -4
  2. package/android/build.gradle +6 -5
  3. package/android/gradle.properties +1 -1
  4. package/android/src/main/java/com/audiobrowser/AudioBrowser.kt +110 -25
  5. package/android/src/main/java/com/audiobrowser/browser/BrowserManager.kt +254 -188
  6. package/android/src/main/java/com/audiobrowser/browser/BrowserUrlResolution.kt +23 -3
  7. package/android/src/main/java/com/audiobrowser/browser/JsonModels.kt +77 -58
  8. package/android/src/main/java/com/audiobrowser/browser/SectionScope.kt +68 -26
  9. package/android/src/main/java/com/audiobrowser/browser/StyleResolver.kt +49 -0
  10. package/android/src/main/java/com/audiobrowser/extension/ResolvedTrackExt.kt +9 -7
  11. package/android/src/main/java/com/audiobrowser/extension/TappedTrack.kt +20 -0
  12. package/android/src/main/java/com/audiobrowser/extension/TrackIdentity.kt +15 -0
  13. package/android/src/main/java/com/audiobrowser/player/MediaSessionCallback.kt +120 -67
  14. package/android/src/main/java/com/audiobrowser/player/NowPlayingUpdater.kt +21 -24
  15. package/android/src/main/java/com/audiobrowser/player/PlaybackStateStore.kt +93 -73
  16. package/android/src/main/java/com/audiobrowser/player/Player.kt +48 -30
  17. package/android/src/main/java/com/audiobrowser/player/PlayerCapabilitiesExt.kt +2 -15
  18. package/android/src/main/java/com/audiobrowser/tls/AiaCertChaser.kt +46 -5
  19. package/android/src/main/java/com/audiobrowser/tls/AiaChasingExtendedTrustManager.kt +86 -27
  20. package/android/src/main/java/com/audiobrowser/tls/AiaChasingTrustManager.kt +58 -14
  21. package/android/src/main/java/com/audiobrowser/tls/AiaTls.kt +20 -6
  22. package/android/src/main/java/com/audiobrowser/tls/CachingCertificateFetcher.kt +249 -86
  23. package/android/src/main/java/com/audiobrowser/util/BrowserPathHelper.kt +44 -40
  24. package/android/src/main/java/com/audiobrowser/util/MediaExtrasBuilder.kt +28 -23
  25. package/android/src/main/java/com/audiobrowser/util/StyleWire.kt +35 -0
  26. package/android/src/main/java/com/audiobrowser/util/TrackFactory.kt +45 -53
  27. package/android/src/test/java/com/audiobrowser/TestFixtures.kt +69 -30
  28. package/android/src/test/java/com/audiobrowser/browser/BrowserManagerFavoritesTest.kt +153 -0
  29. package/android/src/test/java/com/audiobrowser/browser/BrowserManagerLayerResolutionTest.kt +6 -0
  30. package/android/src/test/java/com/audiobrowser/browser/BrowserManagerTest.kt +345 -8
  31. package/android/src/test/java/com/audiobrowser/browser/BrowserUrlResolutionTest.kt +38 -0
  32. package/android/src/test/java/com/audiobrowser/browser/JsonArtworkTest.kt +1 -1
  33. package/android/src/test/java/com/audiobrowser/browser/JsonStyleTest.kt +91 -0
  34. package/android/src/test/java/com/audiobrowser/browser/SectionScopeTest.kt +128 -53
  35. package/android/src/test/java/com/audiobrowser/browser/StyleResolverTest.kt +87 -0
  36. package/android/src/test/java/com/audiobrowser/extension/TappedTrackTest.kt +43 -0
  37. package/android/src/test/java/com/audiobrowser/extension/TrackIdentityTest.kt +41 -0
  38. package/android/src/test/java/com/audiobrowser/player/CapabilityControlsTest.kt +1 -2
  39. package/android/src/test/java/com/audiobrowser/player/NowPlayingUpdaterTest.kt +42 -2
  40. package/android/src/test/java/com/audiobrowser/player/PlaybackStateStoreTrackJsonTest.kt +55 -0
  41. package/android/src/test/java/com/audiobrowser/tls/AiaCertChaserTest.kt +152 -8
  42. package/android/src/test/java/com/audiobrowser/tls/AiaChasingTrustManagerTest.kt +218 -10
  43. package/android/src/test/java/com/audiobrowser/tls/CachingCertificateFetcherCallSiteTest.kt +322 -0
  44. package/android/src/test/java/com/audiobrowser/util/BrowserPathHelperTest.kt +41 -16
  45. package/android/src/test/java/com/audiobrowser/util/MediaExtrasBuilderTest.kt +161 -0
  46. package/android/src/test/java/com/audiobrowser/util/TrackFactoryMediaIdTest.kt +7 -7
  47. package/ios/Browser/BrowserConfig.swift +102 -5
  48. package/ios/Browser/BrowserManager+URLResolution.swift +18 -14
  49. package/ios/Browser/BrowserManager.swift +131 -143
  50. package/ios/Browser/BrowserPathHelper.swift +44 -44
  51. package/ios/Browser/JsonModels.swift +187 -106
  52. package/ios/Browser/SearchDrillIn.swift +6 -6
  53. package/ios/Browser/SectionPresentation.swift +34 -0
  54. package/ios/Browser/SectionScope.swift +58 -24
  55. package/ios/Browser/StyleResolver.swift +47 -0
  56. package/ios/Browser/TabBarEntries.swift +2 -2
  57. package/ios/Browser/TrackIdTemplate.swift +37 -0
  58. package/ios/CarPlay/CarPlayArtworkResolver.swift +8 -7
  59. package/ios/CarPlay/CarPlayController.swift +105 -67
  60. package/ios/CarPlay/CarPlayImageLoader.swift +38 -18
  61. package/ios/CarPlay/CarPlayListItemFactory.swift +217 -84
  62. package/ios/CarPlay/CarPlayNowPlayingManager.swift +15 -12
  63. package/ios/Extension/Capability+RemoteCommand.swift +1 -1
  64. package/ios/Extension/PlayerCapabilities+Favorite.swift +1 -15
  65. package/ios/Extension/ResolvedTrack+Copying.swift +11 -15
  66. package/ios/Extension/Section+Copying.swift +31 -0
  67. package/ios/Extension/Track+Copying.swift +6 -12
  68. package/ios/Extension/Track+Identity.swift +18 -0
  69. package/ios/HybridAudioBrowser.swift +113 -35
  70. package/ios/Model/NitroTypeStubs.swift +64 -23
  71. package/ios/Model/PlayerUpdateOptions.swift +7 -0
  72. package/ios/Player/NowPlayingUpdater.swift +1 -1
  73. package/ios/Player/PlaybackCoordinator.swift +2 -2
  74. package/ios/Player/RetryManager.swift +4 -3
  75. package/ios/Tests/BrowserPathHelperTests.swift +50 -20
  76. package/ios/Tests/CarPlayArtworkResolverTests.swift +24 -41
  77. package/ios/Tests/JsonModelsTests.swift +75 -1
  78. package/ios/Tests/PlaybackStateStoreTests.swift +4 -3
  79. package/ios/Tests/QueueManagerTests.swift +4 -4
  80. package/ios/Tests/ResolvedTrackCopyingTests.swift +37 -35
  81. package/ios/Tests/SearchDrillInTests.swift +16 -16
  82. package/ios/Tests/SectionPresentationTests.swift +61 -0
  83. package/ios/Tests/SectionScopeTests.swift +87 -55
  84. package/ios/Tests/StyleResolverTests.swift +67 -0
  85. package/ios/Tests/TabBarEntriesTests.swift +18 -18
  86. package/ios/Tests/TrackIdTemplateTests.swift +67 -0
  87. package/ios/Tests/TrackIdentityTests.swift +20 -0
  88. package/ios/Tests/TrackSelectorTests.swift +168 -33
  89. package/ios/TrackSelector.swift +45 -30
  90. package/ios/Util/ArtworkImageFetcher.swift +16 -1
  91. package/lib/commonjs/AudioBrowser.js +11 -0
  92. package/lib/commonjs/AudioBrowser.js.map +1 -1
  93. package/lib/commonjs/features/browser-config.js +11 -8
  94. package/lib/commonjs/features/browser-config.js.map +1 -1
  95. package/lib/commonjs/features/browser.js +2 -2
  96. package/lib/commonjs/features/favorites.js +13 -10
  97. package/lib/commonjs/features/favorites.js.map +1 -1
  98. package/lib/commonjs/features/playback/controls.js +4 -2
  99. package/lib/commonjs/features/playback/controls.js.map +1 -1
  100. package/lib/commonjs/features/playback/state.js +2 -3
  101. package/lib/commonjs/features/playback/state.js.map +1 -1
  102. package/lib/commonjs/features/player/options.js.map +1 -1
  103. package/lib/commonjs/features/player/setup.js +3 -1
  104. package/lib/commonjs/features/player/setup.js.map +1 -1
  105. package/lib/commonjs/features/player/validateOptions.js +2 -0
  106. package/lib/commonjs/features/player/validateOptions.js.map +1 -1
  107. package/lib/commonjs/features/queue/activeTrack.js +14 -3
  108. package/lib/commonjs/features/queue/activeTrack.js.map +1 -1
  109. package/lib/commonjs/features/queue/queue.js +11 -4
  110. package/lib/commonjs/features/queue/queue.js.map +1 -1
  111. package/lib/commonjs/utils/LazyNativeEmitter.js +21 -10
  112. package/lib/commonjs/utils/LazyNativeEmitter.js.map +1 -1
  113. package/lib/commonjs/utils/NativeUpdatedValue.js +31 -13
  114. package/lib/commonjs/utils/NativeUpdatedValue.js.map +1 -1
  115. package/lib/commonjs/utils/getTrackIdentity.js +24 -0
  116. package/lib/commonjs/utils/getTrackIdentity.js.map +1 -0
  117. package/lib/commonjs/utils/useNativeValueRefreshedBy.js +33 -0
  118. package/lib/commonjs/utils/useNativeValueRefreshedBy.js.map +1 -0
  119. package/lib/commonjs/web/NativeAudioBrowser.js +32 -24
  120. package/lib/commonjs/web/NativeAudioBrowser.js.map +1 -1
  121. package/lib/commonjs/web/browser/BrowserManager.js +144 -87
  122. package/lib/commonjs/web/browser/BrowserManager.js.map +1 -1
  123. package/lib/commonjs/web/browser/FavoriteManager.js +30 -21
  124. package/lib/commonjs/web/browser/FavoriteManager.js.map +1 -1
  125. package/lib/commonjs/web/browser/assertBrowsePageShape.js +2 -2
  126. package/lib/commonjs/web/browser/assertBrowsePageShape.js.map +1 -1
  127. package/lib/commonjs/web/browser/classifyTrackNavigation.js +9 -9
  128. package/lib/commonjs/web/browser/classifyTrackNavigation.js.map +1 -1
  129. package/lib/commonjs/web/browser/sections.js +89 -0
  130. package/lib/commonjs/web/browser/sections.js.map +1 -0
  131. package/lib/commonjs/web/player/NowPlayingManager.js +4 -3
  132. package/lib/commonjs/web/player/NowPlayingManager.js.map +1 -1
  133. package/lib/commonjs/web/util/BrowserPathHelper.js +56 -11
  134. package/lib/commonjs/web/util/BrowserPathHelper.js.map +1 -1
  135. package/lib/module/AudioBrowser.js +1 -0
  136. package/lib/module/AudioBrowser.js.map +1 -1
  137. package/lib/module/features/browser-config.js +11 -8
  138. package/lib/module/features/browser-config.js.map +1 -1
  139. package/lib/module/features/browser.js +2 -2
  140. package/lib/module/features/favorites.js +13 -10
  141. package/lib/module/features/favorites.js.map +1 -1
  142. package/lib/module/features/playback/controls.js +4 -2
  143. package/lib/module/features/playback/controls.js.map +1 -1
  144. package/lib/module/features/playback/state.js +2 -3
  145. package/lib/module/features/playback/state.js.map +1 -1
  146. package/lib/module/features/player/options.js.map +1 -1
  147. package/lib/module/features/player/setup.js +3 -1
  148. package/lib/module/features/player/setup.js.map +1 -1
  149. package/lib/module/features/player/validateOptions.js +2 -0
  150. package/lib/module/features/player/validateOptions.js.map +1 -1
  151. package/lib/module/features/queue/activeTrack.js +14 -3
  152. package/lib/module/features/queue/activeTrack.js.map +1 -1
  153. package/lib/module/features/queue/queue.js +11 -4
  154. package/lib/module/features/queue/queue.js.map +1 -1
  155. package/lib/module/utils/LazyNativeEmitter.js +21 -10
  156. package/lib/module/utils/LazyNativeEmitter.js.map +1 -1
  157. package/lib/module/utils/NativeUpdatedValue.js +31 -13
  158. package/lib/module/utils/NativeUpdatedValue.js.map +1 -1
  159. package/lib/module/utils/getTrackIdentity.js +20 -0
  160. package/lib/module/utils/getTrackIdentity.js.map +1 -0
  161. package/lib/module/utils/useNativeValueRefreshedBy.js +29 -0
  162. package/lib/module/utils/useNativeValueRefreshedBy.js.map +1 -0
  163. package/lib/module/web/NativeAudioBrowser.js +32 -24
  164. package/lib/module/web/NativeAudioBrowser.js.map +1 -1
  165. package/lib/module/web/browser/BrowserManager.js +144 -87
  166. package/lib/module/web/browser/BrowserManager.js.map +1 -1
  167. package/lib/module/web/browser/FavoriteManager.js +31 -21
  168. package/lib/module/web/browser/FavoriteManager.js.map +1 -1
  169. package/lib/module/web/browser/assertBrowsePageShape.js +2 -2
  170. package/lib/module/web/browser/assertBrowsePageShape.js.map +1 -1
  171. package/lib/module/web/browser/classifyTrackNavigation.js +9 -9
  172. package/lib/module/web/browser/classifyTrackNavigation.js.map +1 -1
  173. package/lib/module/web/browser/sections.js +83 -0
  174. package/lib/module/web/browser/sections.js.map +1 -0
  175. package/lib/module/web/player/NowPlayingManager.js +4 -3
  176. package/lib/module/web/player/NowPlayingManager.js.map +1 -1
  177. package/lib/module/web/util/BrowserPathHelper.js +56 -11
  178. package/lib/module/web/util/BrowserPathHelper.js.map +1 -1
  179. package/lib/typescript/src/AudioBrowser.d.ts +1 -0
  180. package/lib/typescript/src/AudioBrowser.d.ts.map +1 -1
  181. package/lib/typescript/src/features/browser-config.d.ts.map +1 -1
  182. package/lib/typescript/src/features/browser.d.ts +2 -2
  183. package/lib/typescript/src/features/favorites.d.ts +13 -10
  184. package/lib/typescript/src/features/favorites.d.ts.map +1 -1
  185. package/lib/typescript/src/features/playback/controls.d.ts +4 -2
  186. package/lib/typescript/src/features/playback/controls.d.ts.map +1 -1
  187. package/lib/typescript/src/features/playback/state.d.ts +2 -3
  188. package/lib/typescript/src/features/playback/state.d.ts.map +1 -1
  189. package/lib/typescript/src/features/playback/trackPlaybackTime.d.ts +1 -1
  190. package/lib/typescript/src/features/playback/trackPlaybackTime.d.ts.map +1 -1
  191. package/lib/typescript/src/features/player/options.d.ts +21 -19
  192. package/lib/typescript/src/features/player/options.d.ts.map +1 -1
  193. package/lib/typescript/src/features/player/setup.d.ts.map +1 -1
  194. package/lib/typescript/src/features/player/validateOptions.d.ts +1 -8
  195. package/lib/typescript/src/features/player/validateOptions.d.ts.map +1 -1
  196. package/lib/typescript/src/features/queue/activeTrack.d.ts +8 -1
  197. package/lib/typescript/src/features/queue/activeTrack.d.ts.map +1 -1
  198. package/lib/typescript/src/features/queue/queue.d.ts +5 -2
  199. package/lib/typescript/src/features/queue/queue.d.ts.map +1 -1
  200. package/lib/typescript/src/types/browser-native.d.ts +2 -2
  201. package/lib/typescript/src/types/browser-native.d.ts.map +1 -1
  202. package/lib/typescript/src/types/browser-nodes.d.ts +260 -127
  203. package/lib/typescript/src/types/browser-nodes.d.ts.map +1 -1
  204. package/lib/typescript/src/types/browser.d.ts +33 -53
  205. package/lib/typescript/src/types/browser.d.ts.map +1 -1
  206. package/lib/typescript/src/utils/LazyNativeEmitter.d.ts +16 -17
  207. package/lib/typescript/src/utils/LazyNativeEmitter.d.ts.map +1 -1
  208. package/lib/typescript/src/utils/NativeUpdatedValue.d.ts +24 -19
  209. package/lib/typescript/src/utils/NativeUpdatedValue.d.ts.map +1 -1
  210. package/lib/typescript/src/utils/getTrackIdentity.d.ts +18 -0
  211. package/lib/typescript/src/utils/getTrackIdentity.d.ts.map +1 -0
  212. package/lib/typescript/src/utils/useNativeValueRefreshedBy.d.ts +21 -0
  213. package/lib/typescript/src/utils/useNativeValueRefreshedBy.d.ts.map +1 -0
  214. package/nitrogen/generated/android/AudioBrowser+autolinking.cmake +0 -1
  215. package/nitrogen/generated/android/c++/{JFavoritesMatchMode.hpp → JArtworkRendering.hpp} +15 -15
  216. package/nitrogen/generated/android/c++/JArtworkRequestConfig.hpp +4 -3
  217. package/nitrogen/generated/android/c++/JBrowseResult.hpp +10 -4
  218. package/nitrogen/generated/android/c++/JCarPlayPlayingIndicatorLocation.hpp +58 -0
  219. package/nitrogen/generated/android/c++/JFavoriteChangedEvent.hpp +4 -3
  220. package/nitrogen/generated/android/c++/JFormatNowPlayingParams.hpp +4 -3
  221. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_RequestConfig___Track.hpp +4 -3
  222. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_NowPlayingUpdate____FormatNowPlayingParams.hpp +4 -3
  223. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_std__string____Track.hpp +4 -3
  224. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____Track.hpp +4 -3
  225. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_Track______SearchParams.hpp +4 -2
  226. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_void_____TrackLoadEvent.hpp +4 -2
  227. 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
  228. package/nitrogen/generated/android/c++/JFunc_void_FavoriteChangedEvent.hpp +4 -3
  229. package/nitrogen/generated/android/c++/JFunc_void_Options.hpp +2 -5
  230. package/nitrogen/generated/android/c++/JFunc_void_PlaybackActiveTrackChangedEvent.hpp +4 -3
  231. package/nitrogen/generated/android/c++/JFunc_void_std__optional_ResolvedTrack_.hpp +9 -3
  232. package/nitrogen/generated/android/c++/JFunc_void_std__vector_Track_.hpp +4 -2
  233. package/nitrogen/generated/android/c++/JHybridAudioBrowserSpec.cpp +21 -14
  234. package/nitrogen/generated/android/c++/JIOSOptions.hpp +9 -3
  235. package/nitrogen/generated/android/c++/JMediaRequestConfig.hpp +4 -3
  236. package/nitrogen/generated/android/c++/JNativeBrowserConfiguration.hpp +16 -10
  237. package/nitrogen/generated/android/c++/JNativeRouteEntry.hpp +8 -2
  238. package/nitrogen/generated/android/c++/JNativeSetupPlayerOptions.hpp +6 -7
  239. package/nitrogen/generated/android/c++/JNativeUpdateOptions.hpp +2 -5
  240. package/nitrogen/generated/android/c++/JNitroIOSUpdateOptions.hpp +9 -3
  241. package/nitrogen/generated/android/c++/JOptions.hpp +2 -5
  242. package/nitrogen/generated/android/c++/JPlaybackActiveTrackChangedEvent.hpp +4 -3
  243. package/nitrogen/generated/android/c++/JPlayerCapabilities.hpp +5 -11
  244. package/nitrogen/generated/android/c++/JResolvedTrack.hpp +49 -51
  245. package/nitrogen/generated/android/c++/JSection.hpp +114 -0
  246. package/nitrogen/generated/android/c++/JSectionStyle.hpp +69 -0
  247. package/nitrogen/generated/android/c++/JStyleDisplay.hpp +58 -0
  248. package/nitrogen/generated/android/c++/JTrack.hpp +19 -48
  249. package/nitrogen/generated/android/c++/JTrackLoadEvent.hpp +4 -2
  250. package/nitrogen/generated/android/c++/JTrackStyle.hpp +25 -18
  251. package/nitrogen/generated/android/c++/JVariant_ResolvedTrack_BrowseError_Promise_BrowseResult_.hpp +10 -4
  252. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{FavoritesMatchMode.kt → ArtworkRendering.kt} +5 -5
  253. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/CarPlayPlayingIndicatorLocation.kt +23 -0
  254. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/IOSOptions.kt +6 -3
  255. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeBrowserConfiguration.kt +5 -5
  256. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NitroIOSUpdateOptions.kt +6 -3
  257. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlayerCapabilities.kt +2 -2
  258. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ResolvedTrack.kt +12 -18
  259. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Section.kt +50 -0
  260. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{FavoriteConfig.kt → SectionStyle.kt} +12 -6
  261. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/StyleDisplay.kt +23 -0
  262. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Track.kt +6 -15
  263. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TrackStyle.kt +23 -5
  264. package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Bridge.hpp +104 -82
  265. package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Umbrella.hpp +16 -10
  266. package/nitrogen/generated/ios/c++/HybridAudioBrowserSpecSwift.hpp +16 -10
  267. package/nitrogen/generated/ios/swift/ArtworkRendering.swift +40 -0
  268. package/nitrogen/generated/ios/swift/CarPlayPlayingIndicatorLocation.swift +40 -0
  269. package/nitrogen/generated/ios/swift/IOSOptions.swift +7 -2
  270. package/nitrogen/generated/ios/swift/NativeBrowserConfiguration.swift +5 -5
  271. package/nitrogen/generated/ios/swift/NitroIOSUpdateOptions.swift +12 -1
  272. package/nitrogen/generated/ios/swift/PlayerCapabilities.swift +8 -27
  273. package/nitrogen/generated/ios/swift/ResolvedTrack.swift +54 -83
  274. package/nitrogen/generated/ios/swift/Section.swift +100 -0
  275. package/nitrogen/generated/ios/swift/SectionStyle.swift +64 -0
  276. package/nitrogen/generated/ios/swift/StyleDisplay.swift +40 -0
  277. package/nitrogen/generated/ios/swift/Track.swift +20 -73
  278. package/nitrogen/generated/ios/swift/TrackStyle.swift +28 -22
  279. package/nitrogen/generated/shared/c++/{FavoritesMatchMode.hpp → ArtworkRendering.hpp} +17 -17
  280. package/nitrogen/generated/shared/c++/CarPlayPlayingIndicatorLocation.hpp +76 -0
  281. package/nitrogen/generated/shared/c++/IOSOptions.hpp +9 -2
  282. package/nitrogen/generated/shared/c++/NativeBrowserConfiguration.hpp +6 -6
  283. package/nitrogen/generated/shared/c++/NitroIOSUpdateOptions.hpp +9 -2
  284. package/nitrogen/generated/shared/c++/PlayerCapabilities.hpp +6 -9
  285. package/nitrogen/generated/shared/c++/ResolvedTrack.hpp +30 -38
  286. package/nitrogen/generated/shared/c++/Section.hpp +106 -0
  287. package/nitrogen/generated/shared/c++/SectionStyle.hpp +96 -0
  288. package/nitrogen/generated/shared/c++/StyleDisplay.hpp +76 -0
  289. package/nitrogen/generated/shared/c++/Track.hpp +15 -31
  290. package/nitrogen/generated/shared/c++/TrackStyle.hpp +50 -34
  291. package/package.json +3 -2
  292. package/src/AudioBrowser.ts +1 -0
  293. package/src/features/browser-config.test.ts +21 -6
  294. package/src/features/browser-config.ts +11 -8
  295. package/src/features/browser.test.ts +1 -1
  296. package/src/features/browser.ts +2 -2
  297. package/src/features/favorites.ts +13 -10
  298. package/src/features/hook-wiring.test.ts +63 -15
  299. package/src/features/playback/controls.ts +4 -2
  300. package/src/features/playback/state.ts +2 -3
  301. package/src/features/playback/trackPlaybackTime.ts +1 -1
  302. package/src/features/player/options.ts +27 -19
  303. package/src/features/player/setup.test.ts +12 -3
  304. package/src/features/player/setup.ts +3 -1
  305. package/src/features/player/validateOptions.ts +2 -0
  306. package/src/features/queue/activeTrack.ts +14 -3
  307. package/src/features/queue/queue.ts +11 -4
  308. package/src/nitro-stub-drift.test.ts +277 -0
  309. package/src/public-surface.test.ts +40 -0
  310. package/src/specs/audio-browser.nitro.ts +4 -3
  311. package/src/style-resolution.test.ts +139 -0
  312. package/src/types/browser-native.ts +2 -2
  313. package/src/types/browser-nodes.ts +268 -136
  314. package/src/types/browser.ts +34 -55
  315. package/src/utils/LazyNativeEmitter.ts +20 -10
  316. package/src/utils/NativeUpdatedValue.ts +29 -13
  317. package/src/utils/getTrackIdentity.ts +20 -0
  318. package/src/utils/useNativeValueRefreshedBy.ts +38 -0
  319. package/src/web/NativeAudioBrowser.ts +37 -22
  320. package/src/web/browser/BrowserManager.ts +176 -95
  321. package/src/web/browser/FavoriteManager.test.ts +84 -0
  322. package/src/web/browser/FavoriteManager.ts +28 -23
  323. package/src/web/browser/assertBrowsePageShape.test.ts +1 -1
  324. package/src/web/browser/assertBrowsePageShape.ts +5 -3
  325. package/src/web/browser/classifyTrackNavigation.test.ts +10 -8
  326. package/src/web/browser/classifyTrackNavigation.ts +9 -9
  327. package/src/web/browser/parseSearchResponse.test.ts +8 -2
  328. package/src/web/browser/sections.test.ts +91 -0
  329. package/src/web/browser/sections.ts +72 -0
  330. package/src/web/player/NowPlayingManager.ts +4 -3
  331. package/src/web/util/BrowserPathHelper.test.ts +52 -0
  332. package/src/web/util/BrowserPathHelper.ts +61 -13
  333. package/ios/CarPlay/ImageRowItem+CarPlay.swift +0 -19
  334. package/nitrogen/generated/android/c++/JFavoriteConfig.hpp +0 -58
  335. package/nitrogen/generated/android/c++/JImageRowItem.hpp +0 -105
  336. package/nitrogen/generated/android/c++/JVariant_Boolean_FavoriteConfig.cpp +0 -26
  337. package/nitrogen/generated/android/c++/JVariant_Boolean_FavoriteConfig.hpp +0 -71
  338. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ImageRowItem.kt +0 -68
  339. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_Boolean_FavoriteConfig.kt +0 -53
  340. package/nitrogen/generated/ios/swift/FavoriteConfig.swift +0 -29
  341. package/nitrogen/generated/ios/swift/FavoritesMatchMode.swift +0 -40
  342. package/nitrogen/generated/ios/swift/ImageRowItem.swift +0 -195
  343. package/nitrogen/generated/ios/swift/Variant_Bool_FavoriteConfig.swift +0 -18
  344. package/nitrogen/generated/shared/c++/FavoriteConfig.hpp +0 -84
  345. package/nitrogen/generated/shared/c++/ImageRowItem.hpp +0 -129
@@ -1 +1 @@
1
- {"version":3,"file":"activeTrack.d.ts","sourceRoot":"","sources":["../../../../../src/features/queue/activeTrack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAGnE;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB,8DAA8D;IAC9D,YAAY,EAAE,MAAM,CAAA;IACpB,uFAAuF;IACvF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iFAAiF;IACjF,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAID;;GAEG;AACH,wBAAgB,cAAc,IAAI,KAAK,GAAG,SAAS,CAElD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,SAAS,CAExD;AAID;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,qDAG9B,CAAA;AAIH;;;GAGG;AACH,wBAAgB,cAAc,IAAI,KAAK,GAAG,SAAS,CAElD"}
1
+ {"version":3,"file":"activeTrack.d.ts","sourceRoot":"","sources":["../../../../../src/features/queue/activeTrack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAInE;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB,8DAA8D;IAC9D,YAAY,EAAE,MAAM,CAAA;IACpB,uFAAuF;IACvF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iFAAiF;IACjF,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAID;;GAEG;AACH,wBAAgB,cAAc,IAAI,KAAK,GAAG,SAAS,CAElD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,SAAS,CAExD;AAID;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,qDAG9B,CAAA;AAOH;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,KAAK,GAAG,SAAS,CAElD"}
@@ -105,13 +105,16 @@ export declare function getQueue(): Track[];
105
105
  export declare const onQueueEnded: NativeUpdatedValue<PlaybackQueueEndedEvent>;
106
106
  /**
107
107
  * Subscribes to queue change events.
108
- * Called when tracks are added, removed, reordered, or when track metadata changes.
108
+ * Called when tracks are added, removed, or reordered. An in-place mutation of
109
+ * a queued track's metadata (a favorite toggle) emits `onFavoriteChanged`
110
+ * instead; {@link useQueue} subscribes to both.
109
111
  * @param callback - Called with the updated queue
110
112
  * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
111
113
  */
112
114
  export declare const onQueueChanged: NativeUpdatedValue<Track[]>;
113
115
  /**
114
- * Hook that returns the current queue and updates when it changes.
116
+ * Hook that returns the current queue, updating on queue changes AND on
117
+ * in-place mutations of queued tracks (favorite toggles).
115
118
  * @returns The current queue
116
119
  */
117
120
  export declare function useQueue(): Track[];
@@ -1 +1 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../../src/features/queue/queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAKnE;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAA;IACb,0FAA0F;IAC1F,QAAQ,EAAE,MAAM,CAAA;CACjB;AAID;;;;;GAKG;AACH,wBAAgB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;AACtE;;;;;GAKG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;AAQnE;;;GAGG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAEvC;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7D;AAED;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;AAC/C;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;AAO3C;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAElE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAEzD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAE7D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,KAAK,EAAE,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,GACrB,IAAI,CAEN;AAID;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAEzD;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,KAAK,EAAE,CAElC;AAID;;;;GAIG;AACH,eAAO,MAAM,YAAY,6CAGtB,CAAA;AAEH;;;;;GAKG;AACH,eAAO,MAAM,cAAc,6BAE1B,CAAA;AAID;;;GAGG;AACH,wBAAgB,QAAQ,IAAI,KAAK,EAAE,CAElC"}
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../../src/features/queue/queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAMnE;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAA;IACb,0FAA0F;IAC1F,QAAQ,EAAE,MAAM,CAAA;CACjB;AAID;;;;;GAKG;AACH,wBAAgB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;AACtE;;;;;GAKG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;AAQnE;;;GAGG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAEvC;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7D;AAED;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;AAC/C;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;AAO3C;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAElE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAEzD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAE7D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,KAAK,EAAE,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,GACrB,IAAI,CAEN;AAID;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAEzD;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,KAAK,EAAE,CAElC;AAID;;;;GAIG;AACH,eAAO,MAAM,YAAY,6CAGtB,CAAA;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,6BAE1B,CAAA;AAOD;;;;GAIG;AACH,wBAAgB,QAAQ,IAAI,KAAK,EAAE,CAElC"}
@@ -5,7 +5,7 @@
5
5
  * into separate optional properties to reduce generated code complexity.
6
6
  * Users should use BrowserConfiguration, not these types directly.
7
7
  */
8
- import type { ArtworkRequestConfig, BrowserSourceCallback, ResolveAlbumUrlCallback, FormatNavigationErrorCallback, HandleTrackLoadCallback, MediaRequestConfig, SearchSourceCallback, TransformableRequestConfig } from './browser';
8
+ import type { ArtworkRequestConfig, BrowserSourceCallback, ResolveAlbumPathCallback, FormatNavigationErrorCallback, HandleTrackLoadCallback, MediaRequestConfig, SearchSourceCallback, TransformableRequestConfig } from './browser';
9
9
  import type { ResolvedTrack } from './browser-nodes';
10
10
  type NativeRequestConfigResolver = () => Promise<TransformableRequestConfig>;
11
11
  /**
@@ -39,7 +39,7 @@ export interface NativeBrowserConfiguration {
39
39
  handleTrackLoad?: HandleTrackLoadCallback;
40
40
  androidControllerOfflineError?: boolean;
41
41
  carPlayLoadingTitle?: string;
42
- resolveAlbumUrl?: ResolveAlbumUrlCallback;
42
+ resolveAlbumPath?: ResolveAlbumPathCallback;
43
43
  formatNavigationError?: FormatNavigationErrorCallback;
44
44
  }
45
45
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"browser-native.d.ts","sourceRoot":"","sources":["../../../../src/types/browser-native.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,6BAA6B,EAC7B,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,WAAW,CAAA;AAClB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAMpD,KAAK,2BAA2B,GAAG,MAAM,OAAO,CAAC,0BAA0B,CAAC,CAAA;AAE5E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IAEZ,cAAc,CAAC,EAAE,qBAAqB,CAAA;IACtC,YAAY,CAAC,EAAE,0BAA0B,CAAA;IACzC,YAAY,CAAC,EAAE,aAAa,CAAA;IAE5B,cAAc,CAAC,EAAE,oBAAoB,CAAA;IACrC,YAAY,CAAC,EAAE,0BAA0B,CAAA;IAEzC,KAAK,CAAC,EAAE,kBAAkB,CAAA;IAC1B,OAAO,CAAC,EAAE,oBAAoB,CAAA;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,MAAM,CAAA;IAKb,OAAO,CAAC,EAAE,0BAA0B,CAAA;IACpC,eAAe,CAAC,EAAE,2BAA2B,CAAA;IAG7C,MAAM,CAAC,EAAE,0BAA0B,CAAA;IACnC,cAAc,CAAC,EAAE,2BAA2B,CAAA;IAC5C,KAAK,CAAC,EAAE,kBAAkB,CAAA;IAC1B,OAAO,CAAC,EAAE,oBAAoB,CAAA;IAC9B,iBAAiB,CAAC,EAAE,oBAAoB,CAAA;IAQxC,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAG3B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,eAAe,CAAC,EAAE,uBAAuB,CAAA;IACzC,6BAA6B,CAAC,EAAE,OAAO,CAAA;IAGvC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,eAAe,CAAC,EAAE,uBAAuB,CAAA;IACzC,qBAAqB,CAAC,EAAE,6BAA6B,CAAA;CACtD"}
1
+ {"version":3,"file":"browser-native.d.ts","sourceRoot":"","sources":["../../../../src/types/browser-native.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,6BAA6B,EAC7B,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,WAAW,CAAA;AAClB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAMpD,KAAK,2BAA2B,GAAG,MAAM,OAAO,CAAC,0BAA0B,CAAC,CAAA;AAE5E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IAEZ,cAAc,CAAC,EAAE,qBAAqB,CAAA;IACtC,YAAY,CAAC,EAAE,0BAA0B,CAAA;IACzC,YAAY,CAAC,EAAE,aAAa,CAAA;IAE5B,cAAc,CAAC,EAAE,oBAAoB,CAAA;IACrC,YAAY,CAAC,EAAE,0BAA0B,CAAA;IAEzC,KAAK,CAAC,EAAE,kBAAkB,CAAA;IAC1B,OAAO,CAAC,EAAE,oBAAoB,CAAA;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,MAAM,CAAA;IAKb,OAAO,CAAC,EAAE,0BAA0B,CAAA;IACpC,eAAe,CAAC,EAAE,2BAA2B,CAAA;IAG7C,MAAM,CAAC,EAAE,0BAA0B,CAAA;IACnC,cAAc,CAAC,EAAE,2BAA2B,CAAA;IAC5C,KAAK,CAAC,EAAE,kBAAkB,CAAA;IAC1B,OAAO,CAAC,EAAE,oBAAoB,CAAA;IAC9B,iBAAiB,CAAC,EAAE,oBAAoB,CAAA;IAQxC,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAG3B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,eAAe,CAAC,EAAE,uBAAuB,CAAA;IACzC,6BAA6B,CAAC,EAAE,OAAO,CAAA;IAGvC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,gBAAgB,CAAC,EAAE,wBAAwB,CAAA;IAC3C,qBAAqB,CAAC,EAAE,6BAA6B,CAAA;CACtD"}
@@ -1,5 +1,114 @@
1
1
  import type { CarPlaySiriListButtonPosition, HttpMethod } from './browser';
2
- export type TrackStyle = 'list' | 'grid';
2
+ /**
3
+ * How a holder's *children* lay out — CSS's inner display type, honored
4
+ * literally (`display: 'grid'` in CSS describes the children, not the
5
+ * element).
6
+ *
7
+ * - `'list'` (default) — full-width rows on every surface.
8
+ * - `'grid'` — artwork tiles; wraps unless {@link SectionStyle.gridWrap}
9
+ * is `false`. Tiles presume artwork: an artwork-less child renders a
10
+ * placeholder tile plus its title. On CarPlay a *wrapping* grid needs
11
+ * iOS 26+ and renders a list before that; a single-line grid renders
12
+ * on every OS.
13
+ */
14
+ export type StyleDisplay = 'list' | 'grid';
15
+ /**
16
+ * How a track's artwork is rendered.
17
+ *
18
+ * - `'original'` (default) — drawn as-is.
19
+ * - `'stencil'` — treated as a monochrome glyph and tinted to the
20
+ * surface's appearance (black in light mode, white in dark). For
21
+ * monochrome logos and icons; full-color artwork should stay
22
+ * `'original'`.
23
+ */
24
+ export type ArtworkRendering = 'original' | 'stencil';
25
+ /**
26
+ * The style declaration block a {@link Track} may carry: *inherited item
27
+ * properties* (resolved `track ?? section ?? page ?? default`, per
28
+ * property — they travel with the track) plus the *positional*
29
+ * {@link TrackStyle.display} (each holder's own children; never
30
+ * inherited).
31
+ *
32
+ * Rules governing every property:
33
+ *
34
+ * - **Declarations are aspirational.** Each surface renders the
35
+ * properties it understands and ignores the rest — inert, never an
36
+ * error.
37
+ * - **Presentation only.** No style property affects queue scope,
38
+ * playback, or navigation: rendering may truncate what is visible, it
39
+ * never changes what plays. (This is why {@link Track.disabled} is NOT
40
+ * here — it carries behavior, so it lives on Track as a content fact.)
41
+ * - **The inheritance boundary**: a handle's block styles the handle; a
42
+ * page's block is inherited by the page's descendants; nothing
43
+ * inherits across resolution.
44
+ */
45
+ export interface TrackStyle {
46
+ /**
47
+ * How this entity's *children* lay out. The meaning is uniform at
48
+ * every position; only the children differ:
49
+ *
50
+ * - On a {@link Section}: the section's children.
51
+ * - On a resolved page ({@link ResolvedTrack.style}): the declaration
52
+ * for the whole page — a section overrides it for its own children.
53
+ * - On a browsable {@link Track} (the handle): the *advertised*
54
+ * layout of the page it opens. Android Auto decides a page's
55
+ * layout before resolving it, so it is the one reader that acts
56
+ * on the handle's declaration. Declared or it doesn't exist: no
57
+ * value → nothing advertised. The resolved page is the truth.
58
+ * - On a track rendered *playable* (`src` wins the rendering): inert —
59
+ * playables open no page.
60
+ *
61
+ * Never *item*-inherited — each holder speaks only for its own
62
+ * children. Between containers it resolves by scope override, not
63
+ * inheritance: the page declares for its whole scope, a section
64
+ * overrides for its own children.
65
+ *
66
+ * @default 'list'
67
+ *
68
+ * @see https://developer.android.com/training/cars/media/create-media-browser/content-styles
69
+ */
70
+ display?: StyleDisplay;
71
+ /**
72
+ * Inherited (`track ?? section ?? page`): how this item's artwork is
73
+ * rendered — `'stencil'` tints a monochrome glyph to the surface's
74
+ * light/dark appearance.
75
+ *
76
+ * @default 'original'
77
+ *
78
+ * @platform carplay
79
+ */
80
+ artworkRendering?: ArtworkRendering;
81
+ }
82
+ /**
83
+ * A {@link Section}'s (or resolved page's) style declaration block: the
84
+ * *container* properties below, plus — via `extends` — a section-wide
85
+ * value for every inherited {@link TrackStyle} item property (and the
86
+ * section's own positional `display`).
87
+ *
88
+ * Container properties resolve by scope override, not inheritance: the
89
+ * page declares for its whole scope, a section overrides for its own
90
+ * children (`section ?? page ?? default`) — they never flow to items.
91
+ */
92
+ export interface SectionStyle extends TrackStyle {
93
+ /**
94
+ * Whether grid tiles wrap to multiple lines. `false` renders exactly
95
+ * one line — the teaser shelf: a preview of a larger collection,
96
+ * typically paired with {@link Section.path} as the "view all" target.
97
+ *
98
+ * Rendered by CarPlay (a single line of tiles). Android Auto has no
99
+ * single-line tile container — its grid wraps, showing more, never
100
+ * less. Phone UIs typically honor `false` as a horizontal scroller.
101
+ *
102
+ * Inert unless {@link TrackStyle.display} is `'grid'`.
103
+ *
104
+ * @default true
105
+ *
106
+ * @platform carplay
107
+ *
108
+ * @see https://developer.apple.com/documentation/carplay/cplistimagerowitem
109
+ */
110
+ gridWrap?: boolean;
111
+ }
3
112
  /**
4
113
  * Image source for React Native's `<Image>` component.
5
114
  * Contains all information needed to load an image, including URL transformation
@@ -50,74 +159,84 @@ export interface ArtworkVariants {
50
159
  }
51
160
  /** A single artwork URL, or one per appearance. */
52
161
  export type TrackArtwork = string | ArtworkVariants;
53
- export interface ImageRowItem {
162
+ /**
163
+ * A titled, styled group of Tracks within a resolved page — the unit of
164
+ * queue scope. Tapping a playable child queues the section it sits in,
165
+ * identically on every platform and screen width: rendering may truncate
166
+ * what is visible, it never changes what plays.
167
+ */
168
+ export interface Section {
169
+ /** Header text. Absent = headerless group. */
170
+ title?: string;
54
171
  /**
55
- * Opaque, stable identifier for this item's track. Round-tripped like
56
- * `Track.id` when the thumbnail is played (see `src`).
172
+ * Secondary line for the section's navigation surface — e.g. the label
173
+ * of the "view all" link a tile section gets on Android Auto.
57
174
  */
58
- id?: string;
59
- /** Navigation path. Tapping this thumbnail navigates to this URL. */
60
- url?: string;
175
+ subtitle?: string;
61
176
  /**
62
- * Direct audio source. When present, tapping this thumbnail plays it
63
- * immediately (same selection path as a playable list row) instead of
64
- * navigating. Takes precedence over `url`.
177
+ * Presentation, separated from content. Each surface renders the
178
+ * declared layout's nearest supported form; on CarPlay
179
+ * a wrapping grid requires iOS 26+ and renders a list before that,
180
+ * since CarPlay's only earlier tile container truncates at a width the
181
+ * system doesn't report. Use the artwork `resolve` hook to supply
182
+ * fallback art for tile layouts.
65
183
  */
66
- src?: string;
67
- /** Artwork URL for the thumbnail image. */
68
- artwork?: string;
69
- /** Output only — populated by the artwork transform pipeline. */
70
- readonly artworkSource?: ImageSource;
71
- /** Title of this item. Shown as the thumbnail caption; used for identification and accessibility. */
72
- title: string;
73
- /** Now-playing secondary line when played via `src` (mirrors `Track.artist`). */
74
- artist?: string;
75
- /** Now-playing album line when played via `src` (mirrors `Track.album`). */
76
- album?: string;
77
- /** Navigation target of the album line when played via `src` (mirrors `Track.albumUrl`). */
78
- albumUrl?: string;
79
- /** Live stream indicator when played via `src` (mirrors `Track.live`). */
80
- live?: boolean;
81
- /** Per-item media-request override when played via `src` (mirrors `Track.request`). */
82
- request?: TrackRequest;
184
+ style?: SectionStyle;
185
+ /**
186
+ * Navigation target for the section header / "view all" surface. A
187
+ * tile section's header tap (CarPlay) and appended "view all" link
188
+ * (Android Auto) navigate here. Absent = a pure preview; the header is
189
+ * not tappable.
190
+ */
191
+ path?: string;
192
+ /** The section's tracks. */
193
+ children: Track[];
83
194
  }
195
+ /**
196
+ * The one node type of the browse tree — every tab, folder, station,
197
+ * episode, and queue item is a Track. What a Track *is* follows from which
198
+ * address fields it carries: a {@link path} makes it **browsable** (it opens
199
+ * as a page), a {@link src} makes it **playable** (it can be loaded into the
200
+ * player); at least one of the two is required. The remaining fields are
201
+ * display metadata ({@link title}, {@link artist}, {@link artwork}, …) and
202
+ * content state ({@link favorited}, {@link live}, {@link disabled}).
203
+ */
84
204
  export interface Track {
85
205
  /**
86
206
  * Opaque, stable identifier for this track.
87
207
  *
208
+ * A track's **identity** is `id` when set (non-blank), falling back to
209
+ * `src`. That single rule drives every comparison the library makes:
210
+ * favorites matching (`setFavorites`), the CarPlay / Android Auto
211
+ * "now playing" row indicator, section scoping and skip-in-place, and the
212
+ * contextual queue re-expansion. Two tracks refer to the same item iff
213
+ * their identities are equal — so set `id` consistently on every surface,
214
+ * or on none.
215
+ *
88
216
  * The library never parses or derives anything from this value — it is
89
- * round-tripped verbatim through `setQueue`, `getActiveTrack`, the queue, and
90
- * `onActiveTrackChanged`, so consumers can recognise which item became active
91
- * after an external transport change (lock screen / CarPlay / Android Auto /
92
- * Bluetooth next-previous) without parsing the playable `src`.
93
- *
94
- * When present on a playable track it is also the track's *identity* on car
95
- * browse surfaces: CarPlay's and Android Auto's "now playing" row indicator
96
- * match the active track to browse rows by `id` (falling back to exact `src`
97
- * equality for tracks without one). Assign ids when your playable `src`
98
- * strings for the same item can differ between browse rows and loaded tracks
99
- * (absolute vs relative URLs, volatile query params) — otherwise the
100
- * indicator never matches.
101
- *
102
- * It is also handed to the per-track `MediaRequestConfig.resolve` and
103
- * `ArtworkRequestConfig.resolve` hooks, so requests can be built from a stable
104
- * id (e.g. supply tracks with only an `id` and synthesise `src` in `resolve`).
105
- *
106
- * Optional: consumers whose `url`/`src` strings are already stable across
107
- * surfaces can ignore it.
108
- *
109
- * Note: an Android Auto item selected directly from the browse tree that the
110
- * consumer never queued is identified only by `url`/`src`, so `id` may be
111
- * undefined on that specific path.
217
+ * round-tripped verbatim through `setQueue`, `getActiveTrack`, the queue,
218
+ * `onActiveTrackChanged`, and `onFavoriteChanged`, and handed to the
219
+ * per-track `MediaRequestConfig.resolve` / `ArtworkRequestConfig.resolve`
220
+ * hooks so requests can be built from the stable id.
221
+ *
222
+ * Optional: consumers whose `src` strings are identical wherever the same
223
+ * item appears can ignore it — their identity is the `src`. Assign ids when
224
+ * `src` strings for the same item can differ between surfaces (absolute vs
225
+ * relative URLs, volatile query params), or when favorites are stored as an
226
+ * identifier that isn't the playable URL.
112
227
  */
113
228
  id?: string;
114
229
  /**
115
230
  * Navigation path. When present, this track is a container (tab, album, playlist, folder)
116
231
  * that can be navigated into to view its contents.
117
232
  *
118
- * At least one of `url` or `src` must be defined.
233
+ * At least one of `path` or `src` must be defined. When both are set, current
234
+ * surfaces treat the track as playable — `src` wins the rendering, and the
235
+ * browse pipeline replaces a playable track's `path` with its contextual
236
+ * path — so a consumer-supplied `path` on a playable track is not reachable
237
+ * today.
119
238
  */
120
- url?: string;
239
+ path?: string;
121
240
  /**
122
241
  * Direct audio source identifier. When present, this track can be played directly.
123
242
  *
@@ -125,7 +244,7 @@ export interface Track {
125
244
  * any string (file path, custom identifier, etc.) that will be passed to
126
245
  * MediaRequestConfig.resolve to transform it into the actual media request.
127
246
  *
128
- * At least one of `url` or `src` must be defined.
247
+ * At least one of `path` or `src` must be defined.
129
248
  */
130
249
  src?: string;
131
250
  /**
@@ -138,7 +257,8 @@ export interface Track {
138
257
  * Pass an {@link ArtworkVariants} pair to supply genuinely different images
139
258
  * per appearance — a logo that changes colour, say. For a monochrome glyph
140
259
  * that only needs recolouring, prefer a single URL plus
141
- * {@link Track.artworkCarPlayTinted}, which is one fetch instead of two.
260
+ * `style: { artworkRendering: 'stencil' }`, which is one fetch instead
261
+ * of two.
142
262
  *
143
263
  * **iOS:** supports {@link https://developer.apple.com/sf-symbols/ | SF Symbols}
144
264
  * with the `sf:` prefix and optional color params:
@@ -165,22 +285,6 @@ export interface Track {
165
285
  readonly artworkSource?: ImageSource;
166
286
  /** Per-track media-request override; merged last (request → media → track.request). */
167
287
  request?: TrackRequest;
168
- /**
169
- * Whether this artwork should be tinted based on CarPlay's current appearance (light/dark mode).
170
- *
171
- * When `true`, the artwork is treated as a monochrome icon and tinted:
172
- * - Light mode: tinted black for visibility on light backgrounds
173
- * - Dark mode: tinted white for visibility on dark backgrounds
174
- *
175
- * This is useful for SVG or PNG icons that need to adapt to CarPlay's light/dark themes.
176
- * Full-color artwork (album covers, logos) should not use this.
177
- *
178
- * **iOS CarPlay only** - Android Auto is dark-only, so content providers should
179
- * provide appropriately colored icons directly (e.g., white icons).
180
- *
181
- * @default false
182
- */
183
- artworkCarPlayTinted?: boolean;
184
288
  /** Primary line shown for this item, in both browse lists and now-playing. */
185
289
  title: string;
186
290
  /**
@@ -202,9 +306,9 @@ export interface Track {
202
306
  artist?: string;
203
307
  /**
204
308
  * Browse path the {@link album} line navigates to (same path namespace as
205
- * {@link url}). On CarPlay, when the active track has an `albumUrl`, its
309
+ * {@link path}). On CarPlay, when the active track has an `albumPath`, its
206
310
  * album line on the Now Playing screen becomes tappable and navigates the
207
- * browse stack there. See also `resolveAlbumUrl` in the browser
311
+ * browse stack there. See also `resolveAlbumPath` in the browser
208
312
  * configuration for a dynamic fallback.
209
313
  *
210
314
  * Requires {@link album} to be set: CarPlay renders the tappable line from
@@ -212,9 +316,25 @@ export interface Track {
212
316
  *
213
317
  * @platform ios
214
318
  */
215
- albumUrl?: string;
319
+ albumPath?: string;
320
+ /**
321
+ * Album name, shown on now-playing surfaces that have an album slot
322
+ * (CarPlay, Android Auto, Bluetooth metadata — the iOS lock screen has
323
+ * none). With {@link albumPath} set, CarPlay renders it as a tappable
324
+ * line that navigates there.
325
+ */
216
326
  album?: string;
327
+ /**
328
+ * Longer free-form text about the item, passed to the platform's
329
+ * description metadata slot where one exists. Not shown on browse rows
330
+ * (those render {@link title} / {@link subtitle}) or the lock screen.
331
+ */
217
332
  description?: string;
333
+ /**
334
+ * Genre name, passed to the platform's genre metadata slot where one
335
+ * exists. Catalog metadata only — the library never matches search or
336
+ * browse against it.
337
+ */
218
338
  genre?: string;
219
339
  /**
220
340
  * Duration in seconds, as catalog metadata for app UI (e.g. an episode
@@ -223,67 +343,61 @@ export interface Track {
223
343
  */
224
344
  duration?: number;
225
345
  /**
226
- * Display style for this item in Android Auto/AAOS.
227
- * - 'list': Display as a list row
228
- * - 'grid': Display as a grid tile
229
- *
230
- * On Android: when `artwork` is an `android.resource://` URI
231
- * (e.g., `android.resource://com.myapp/drawable/ic_folder`), the library
232
- * automatically uses 'category' styling which adds margins around the icon
233
- * and enables system tinting for vector drawables.
234
- *
235
- * @see https://developer.android.com/training/cars/media#default-content-style
346
+ * The track's style declaration block: inherited item properties (a
347
+ * per-item override of section/page values — they travel with the
348
+ * track), plus the positional {@link TrackStyle.display} — on a
349
+ * browsable track, the advertised layout of the page it opens, read
350
+ * by Android Auto, which picks a page's layout before resolving it.
236
351
  */
237
352
  style?: TrackStyle;
238
353
  /**
239
- * Display style for this item's children in Android Auto/AAOS.
240
- * Only applies to browsable items (containers/folders).
241
- * - 'list': Display children as list rows
242
- * - 'grid': Display children as grid tiles
243
- *
244
- * Must be set on the item when it appears as a child in a parent's list.
245
- * Android Auto reads the extras at that point to determine how to display
246
- * the folder's contents when navigated into.
354
+ * Unavailable — a content-state fact beside `favorited` and `live`,
355
+ * with full behavioral weight (content facts may carry behavior; style
356
+ * never does): a disabled track never plays — tap refused, queue
357
+ * expansion excludes it, voice search won't match it.
358
+ *
359
+ * Rendering ladder, never a trap: **grayed + inert** where the surface
360
+ * can draw it (CarPlay) → **hidden** where it can't (Android Auto) —
361
+ * never a normal-looking dead control. Hiding is behavior-safe because
362
+ * the track is inert everywhere regardless; the cost is losing the
363
+ * "Available at 9 PM" tease on surfaces that hide, so put the reason
364
+ * in the title for the ones that gray. Applied at page (re-)serve,
365
+ * like style.
366
+ *
367
+ * @default false
247
368
  */
248
- childrenStyle?: TrackStyle;
369
+ disabled?: boolean;
249
370
  /**
250
371
  * Whether this track is favorited. When the `favorite` capability is enabled,
251
372
  * displays a filled/empty heart icon in media controllers (notification, Android Auto).
252
373
  */
253
374
  favorited?: boolean;
254
375
  /**
255
- * Group title for section headers in Android Auto/AAOS.
256
- * Items with the same groupTitle are displayed under a shared section header.
257
- * Items must be contiguous to form a single group.
258
- */
259
- groupTitle?: string;
260
- /**
261
- * Whether this track is a live stream. When true, displays a "live" indicator
262
- * in iOS now playing interfaces.
263
- */
264
- live?: boolean;
265
- /**
266
- * When present, renders this track as a horizontal row of tappable artwork
267
- * thumbnails instead of a standard list item.
376
+ * Declares this track a live broadcast rather than a file. The players
377
+ * detect *transport* liveness (sliding windows, buffering) themselves;
378
+ * this declaration drives the semantic decisions they can't infer:
268
379
  *
269
- * - Track.title → row header text
270
- * - Track.url → navigated when header is tapped (optional)
271
- * - Each ImageRowItem → one thumbnail in the horizontal row; a thumbnail
272
- * with `src` plays immediately on tap, otherwise its `url` is navigated
380
+ * - **End of stream** (iOS): a live track "ending" is judged a dropped
381
+ * broadcast and recovered by rejoining the edge, never a queue advance.
382
+ * - **Stall recovery** (iOS): a live track that runs dry reconnects at
383
+ * the edge; a non-live one resumes its existing connection.
384
+ * - **`seekToLiveEdge()`** (all platforms): the call only acts on a
385
+ * track declared live — without the declaration it is a no-op.
386
+ * - **Persistence** (iOS): no position is stored, so a cold-start resume
387
+ * rejoins the current broadcast instead of seeking a stale timestamp.
388
+ * - **Now-playing** (iOS): the live indicator and live-style
389
+ * (non-scrubbing) progress UI.
273
390
  *
274
- * On CarPlay: maps to CPListImageRowItem. Limits visible images by display
275
- * width (~4-5). Excess silently truncated. A row whose track has no `url`
276
- * is a pure preview: its header is not tappable.
391
+ * The iOS-heavy list is deliberate, not a gap: on Android, ExoPlayer's
392
+ * own classification already covers these — a dropped live connection
393
+ * surfaces as a load error (never end-of-stream), and persistence keys
394
+ * off its detected liveness — so the declaration's only Android reader
395
+ * is the `seekToLiveEdge()` gate. Android Auto has no live badge.
277
396
  *
278
- * On Android Auto: there is no image-row rendering, so the row expands into
279
- * its items as grid-styled rows (artwork tiles where the host honors the
280
- * per-item content-style hint, list rows otherwise) grouped under the
281
- * track's title, followed by the track itself as a browsable "view all"
282
- * link when it has a `url`.
283
- *
284
- * On app side: consumable by React Native UI for horizontal thumbnail layouts.
397
+ * Omitting it never breaks playback — it silently breaks these judgment
398
+ * calls. Declare it on every live track.
285
399
  */
286
- imageRow?: ImageRowItem[];
400
+ live?: boolean;
287
401
  }
288
402
  /**
289
403
  * A Track that has been resolved with its children through browsing.
@@ -295,21 +409,40 @@ export interface Track {
295
409
  * ```ts
296
410
  * // navigate() is fire-and-forget (returns void); read the resolved page
297
411
  * // from getContent() / useContent() / onContentChanged.
298
- * navigate('albums/abbey-road');
412
+ * navigate('/albums/abbey-road');
299
413
  * const resolved = getContent();
300
- * console.log(resolved?.url); // "albums/abbey-road"
414
+ * console.log(resolved?.path); // "/albums/abbey-road"
301
415
  * console.log(resolved?.title); // "Abbey Road"
302
- * console.log(resolved?.children); // Array of tracks in this album
416
+ * console.log(resolved?.sections); // the album's tracks, as sections
303
417
  * ```
304
418
  */
305
419
  export interface ResolvedTrack extends Track {
306
420
  /**
307
- * URL path for this resolved track. Always present since you navigated to this location.
421
+ * Browse path of this resolved track. Always present since you navigated to this location.
422
+ */
423
+ path: string;
424
+ /**
425
+ * A page is a Track that is also the container of its sections, so its
426
+ * block widens to {@link SectionStyle}: the declaration for the whole
427
+ * page. Item properties set here are inherited by every item on the
428
+ * page unless a section or track declares its own; the container
429
+ * property (`gridWrap`) and the positional `display` are the page-wide
430
+ * values a section overrides for its own children.
431
+ */
432
+ style?: SectionStyle;
433
+ /**
434
+ * The page's sections — the canonical resolved shape. Every resolved page
435
+ * with content carries `sections`; a page authored with plain `children`
436
+ * resolves to a single untitled section.
308
437
  */
309
- url: string;
438
+ sections?: Section[];
310
439
  /**
311
- * Immediate children of this track. Present for container tracks (albums, playlists, folders).
312
- * Undefined for leaf tracks (individual songs without children).
440
+ * Authoring sugar for a flat page: equivalent to declaring one untitled,
441
+ * style-less section holding these tracks (which therefore takes the
442
+ * page block's scope-wide values, like any undeclared section). Accepted
443
+ * anywhere a page is authored (static routes, browse callbacks, JSON
444
+ * payloads); never populated on a *resolved* page — read `sections`
445
+ * instead.
313
446
  */
314
447
  children?: Track[];
315
448
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"browser-nodes.d.ts","sourceRoot":"","sources":["../../../../src/types/browser-nodes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-nodes.d.ts","sourceRoot":"","sources":["../../../../src/types/browser-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAE1E;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAA;AAE1C;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,SAAS,CAAA;AAErD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,OAAO,CAAC,EAAE,YAAY,CAAA;IAEtB;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;CACpC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,+DAA+D;IAC/D,GAAG,EAAE,MAAM,CAAA;IACX,2CAA2C;IAC3C,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAA;CACb;AAOD,mDAAmD;AACnD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,eAAe,CAAA;AAEnD;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,4BAA4B;IAC5B,QAAQ,EAAE,KAAK,EAAE,CAAA;CAClB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,KAAK;IACpB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;IAEX;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb;;;;;;;;OAQG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IAEZ;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,EAAE,YAAY,CAAA;IAEtB;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,CAAA;IAEpC,uFAAuF;IACvF,OAAO,CAAC,EAAE,YAAY,CAAA;IAGtB,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAA;IAEb;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,UAAU,CAAA;IAElB;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,aAAc,SAAQ,KAAK;IAC1C;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,YAAY,CAAA;IAEpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IAEpB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAA;IAElB;;;;;;;;;;;;OAYG;IACH,qBAAqB,CAAC,EAAE,6BAA6B,CAAA;CACtD"}