react-native-audio-browser 0.2.0-next.7 → 0.2.0-next.9

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 (165) hide show
  1. package/android/build.gradle +7 -1
  2. package/android/src/main/java/com/audiobrowser/AudioBrowser.kt +33 -8
  3. package/android/src/main/java/com/audiobrowser/ServiceBinding.kt +46 -0
  4. package/android/src/main/java/com/audiobrowser/browser/BrowserManager.kt +1 -2
  5. package/android/src/main/java/com/audiobrowser/browser/BrowserUrlResolution.kt +1 -2
  6. package/android/src/main/java/com/audiobrowser/browser/SectionScope.kt +6 -7
  7. package/android/src/main/java/com/audiobrowser/player/NowPlayingUpdater.kt +0 -1
  8. package/android/src/main/java/com/audiobrowser/player/PlaybackStateStore.kt +2 -4
  9. package/android/src/main/java/com/audiobrowser/player/RetryLoadErrorHandlingPolicy.kt +2 -1
  10. package/android/src/main/java/com/audiobrowser/util/ArtworkVariant.kt +7 -9
  11. package/android/src/main/java/com/audiobrowser/util/TrackFactory.kt +8 -7
  12. package/android/src/test/java/com/audiobrowser/ServiceBindingTest.kt +68 -0
  13. package/android/src/test/java/com/audiobrowser/TestFixtures.kt +0 -1
  14. package/android/src/test/java/com/audiobrowser/browser/JsonArtworkTest.kt +2 -1
  15. package/android/src/test/java/com/audiobrowser/browser/SectionScopeTest.kt +2 -4
  16. package/android/src/test/java/com/audiobrowser/player/PlaybackErrorClassifierTest.kt +3 -4
  17. package/android/src/test/java/com/audiobrowser/player/RetryLoadErrorHandlingPolicyTest.kt +3 -3
  18. package/ios/Browser/BrowserManager.swift +2 -2
  19. package/ios/Browser/SearchDrillIn.swift +1 -1
  20. package/ios/CarPlay/RNABMediaAddHandler.swift +6 -6
  21. package/ios/CarPlay/RNABMediaAffinityHandler.swift +2 -2
  22. package/ios/CarPlay/RNABMediaIntentHandler.swift +16 -16
  23. package/ios/HybridAudioBrowser.swift +86 -55
  24. package/ios/Model/RemoteCommand.swift +18 -0
  25. package/ios/Model/TrackPlayerError.swift +2 -2
  26. package/ios/Option/SessionCategories.swift +3 -2
  27. package/ios/Player/MediaIntentCriteria.swift +4 -4
  28. package/ios/Player/PlaybackErrorHandler.swift +2 -2
  29. package/ios/Player/RetryManager.swift +2 -1
  30. package/ios/RemoteCommand/RemoteCommandCallbacks.swift +47 -0
  31. package/ios/RemoteCommand/RemoteCommandController.swift +9 -6
  32. package/ios/Tests/LoadSeekCoordinatorTests.swift +3 -1
  33. package/ios/Tests/MediaIntentCriteriaTests.swift +2 -2
  34. package/ios/Tests/PlaybackCoordinatorTests.swift +1 -1
  35. package/ios/Tests/RemoteCommandControllerTests.swift +156 -0
  36. package/ios/Tests/RemoteCommandTests.swift +67 -0
  37. package/ios/Tests/SectionScopeTests.swift +2 -2
  38. package/ios/Tests/TabBarEntriesTests.swift +7 -7
  39. package/ios/TrackPlayer.swift +1 -1
  40. package/ios/TrackPlayerCallbacks.swift +5 -38
  41. package/lib/commonjs/AudioBrowser.js +0 -11
  42. package/lib/commonjs/AudioBrowser.js.map +1 -1
  43. package/lib/commonjs/features/carConnection.js +1 -1
  44. package/lib/commonjs/features/equalizer.js +1 -1
  45. package/lib/commonjs/features/errors.js +3 -3
  46. package/lib/commonjs/features/favorites.js +1 -1
  47. package/lib/commonjs/features/gate.js +1 -1
  48. package/lib/commonjs/features/metadata.js +3 -3
  49. package/lib/commonjs/features/network.js +1 -1
  50. package/lib/commonjs/features/nowPlaying.js +1 -1
  51. package/lib/commonjs/features/output.js +1 -1
  52. package/lib/commonjs/features/playback/playWhenReady.js +1 -1
  53. package/lib/commonjs/features/playback/playing.js +1 -1
  54. package/lib/commonjs/features/playback/progress.js +1 -1
  55. package/lib/commonjs/features/playback/state.js +1 -1
  56. package/lib/commonjs/features/playback/trackPlaybackTime.js +0 -6
  57. package/lib/commonjs/features/playback/trackPlaybackTime.js.map +1 -1
  58. package/lib/commonjs/features/playback/volume.js +1 -1
  59. package/lib/commonjs/features/player/options.js +3 -19
  60. package/lib/commonjs/features/player/options.js.map +1 -1
  61. package/lib/commonjs/features/player/setup.js +2 -2
  62. package/lib/commonjs/features/player/setup.js.map +1 -1
  63. package/lib/commonjs/features/player/validateOptions.js +24 -0
  64. package/lib/commonjs/features/player/validateOptions.js.map +1 -0
  65. package/lib/commonjs/features/queue/activeTrack.js +1 -1
  66. package/lib/commonjs/features/queue/queue.js +2 -2
  67. package/lib/commonjs/features/queue/repeatMode.js +1 -1
  68. package/lib/commonjs/features/queue/shuffle.js +1 -1
  69. package/lib/commonjs/features/remoteControls.js +13 -92
  70. package/lib/commonjs/features/remoteControls.js.map +1 -1
  71. package/lib/commonjs/features/sleepTimer.js +1 -1
  72. package/lib/commonjs/utils/LazyNativeEmitter.js +8 -5
  73. package/lib/commonjs/utils/LazyNativeEmitter.js.map +1 -1
  74. package/lib/module/AudioBrowser.js +4 -1
  75. package/lib/module/AudioBrowser.js.map +1 -1
  76. package/lib/module/features/carConnection.js +1 -1
  77. package/lib/module/features/equalizer.js +1 -1
  78. package/lib/module/features/errors.js +3 -3
  79. package/lib/module/features/favorites.js +1 -1
  80. package/lib/module/features/gate.js +1 -1
  81. package/lib/module/features/metadata.js +3 -3
  82. package/lib/module/features/network.js +1 -1
  83. package/lib/module/features/nowPlaying.js +1 -1
  84. package/lib/module/features/output.js +1 -1
  85. package/lib/module/features/playback/playWhenReady.js +1 -1
  86. package/lib/module/features/playback/playing.js +1 -1
  87. package/lib/module/features/playback/progress.js +1 -1
  88. package/lib/module/features/playback/state.js +1 -1
  89. package/lib/module/features/playback/trackPlaybackTime.js +0 -5
  90. package/lib/module/features/playback/trackPlaybackTime.js.map +1 -1
  91. package/lib/module/features/playback/volume.js +1 -1
  92. package/lib/module/features/player/options.js +2 -17
  93. package/lib/module/features/player/options.js.map +1 -1
  94. package/lib/module/features/player/setup.js +1 -1
  95. package/lib/module/features/player/setup.js.map +1 -1
  96. package/lib/module/features/player/validateOptions.js +20 -0
  97. package/lib/module/features/player/validateOptions.js.map +1 -0
  98. package/lib/module/features/queue/activeTrack.js +1 -1
  99. package/lib/module/features/queue/queue.js +2 -2
  100. package/lib/module/features/queue/repeatMode.js +1 -1
  101. package/lib/module/features/queue/shuffle.js +1 -1
  102. package/lib/module/features/remoteControls.js +13 -92
  103. package/lib/module/features/remoteControls.js.map +1 -1
  104. package/lib/module/features/sleepTimer.js +1 -1
  105. package/lib/module/utils/LazyNativeEmitter.js +8 -5
  106. package/lib/module/utils/LazyNativeEmitter.js.map +1 -1
  107. package/lib/typescript/src/AudioBrowser.d.ts +0 -1
  108. package/lib/typescript/src/AudioBrowser.d.ts.map +1 -1
  109. package/lib/typescript/src/features/carConnection.d.ts +1 -1
  110. package/lib/typescript/src/features/equalizer.d.ts +1 -1
  111. package/lib/typescript/src/features/errors.d.ts +3 -3
  112. package/lib/typescript/src/features/favorites.d.ts +1 -1
  113. package/lib/typescript/src/features/gate.d.ts +3 -2
  114. package/lib/typescript/src/features/gate.d.ts.map +1 -1
  115. package/lib/typescript/src/features/metadata.d.ts +3 -3
  116. package/lib/typescript/src/features/network.d.ts +1 -1
  117. package/lib/typescript/src/features/nowPlaying.d.ts +1 -1
  118. package/lib/typescript/src/features/output.d.ts +1 -1
  119. package/lib/typescript/src/features/playback/playWhenReady.d.ts +1 -1
  120. package/lib/typescript/src/features/playback/playing.d.ts +1 -1
  121. package/lib/typescript/src/features/playback/progress.d.ts +1 -1
  122. package/lib/typescript/src/features/playback/state.d.ts +1 -1
  123. package/lib/typescript/src/features/playback/volume.d.ts +1 -1
  124. package/lib/typescript/src/features/player/options.d.ts +1 -1
  125. package/lib/typescript/src/features/player/options.d.ts.map +1 -1
  126. package/lib/typescript/src/features/player/validateOptions.d.ts +2 -0
  127. package/lib/typescript/src/features/player/validateOptions.d.ts.map +1 -0
  128. package/lib/typescript/src/features/queue/activeTrack.d.ts +1 -1
  129. package/lib/typescript/src/features/queue/queue.d.ts +2 -2
  130. package/lib/typescript/src/features/queue/repeatMode.d.ts +1 -1
  131. package/lib/typescript/src/features/queue/shuffle.d.ts +1 -1
  132. package/lib/typescript/src/features/remoteControls.d.ts +23 -22
  133. package/lib/typescript/src/features/remoteControls.d.ts.map +1 -1
  134. package/lib/typescript/src/features/sleepTimer.d.ts +1 -1
  135. package/lib/typescript/src/utils/LazyNativeEmitter.d.ts +8 -4
  136. package/lib/typescript/src/utils/LazyNativeEmitter.d.ts.map +1 -1
  137. package/package.json +3 -1
  138. package/src/AudioBrowser.ts +4 -1
  139. package/src/features/carConnection.ts +1 -1
  140. package/src/features/equalizer.ts +1 -1
  141. package/src/features/errors.ts +3 -3
  142. package/src/features/favorites.ts +1 -1
  143. package/src/features/gate.ts +1 -1
  144. package/src/features/metadata.ts +3 -3
  145. package/src/features/network.ts +1 -1
  146. package/src/features/nowPlaying.ts +1 -1
  147. package/src/features/output.ts +1 -1
  148. package/src/features/playback/playWhenReady.ts +1 -1
  149. package/src/features/playback/playing.ts +1 -1
  150. package/src/features/playback/progress.ts +1 -1
  151. package/src/features/playback/state.ts +1 -1
  152. package/src/features/playback/trackPlaybackTime.test.ts +20 -6
  153. package/src/features/playback/trackPlaybackTime.ts +0 -5
  154. package/src/features/playback/volume.ts +1 -1
  155. package/src/features/player/options.ts +2 -20
  156. package/src/features/player/setup.ts +1 -1
  157. package/src/features/player/validateOptions.ts +22 -0
  158. package/src/features/queue/activeTrack.ts +1 -1
  159. package/src/features/queue/queue.ts +2 -2
  160. package/src/features/queue/repeatMode.ts +1 -1
  161. package/src/features/queue/shuffle.ts +1 -1
  162. package/src/features/remoteControls.ts +13 -92
  163. package/src/features/sleepTimer.ts +1 -1
  164. package/src/public-surface.test.ts +123 -0
  165. package/src/utils/LazyNativeEmitter.ts +9 -6
@@ -41,7 +41,7 @@ export function getPlayback() {
41
41
  /**
42
42
  * Subscribes to playback state changes.
43
43
  * @param callback - Called when the playback state changes
44
- * @returns Cleanup function to unsubscribe
44
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
45
45
  */
46
46
  export const onPlaybackChanged = NativeUpdatedValue.emitterize(cb => nativeBrowser.onPlaybackChanged = cb);
47
47
 
@@ -80,9 +80,4 @@ export function trackPlaybackTime(callback, period) {
80
80
  if (handles.size === 0) nativeBrowser.setPlaybackIntervalEnabled(false);
81
81
  };
82
82
  }
83
-
84
- /** @internal test hook — drives the fan-out without a native tick. */
85
- export function __emitTickForTests(ticks = 1) {
86
- for (let i = 0; i < ticks; i++) onTick();
87
- }
88
83
  //# sourceMappingURL=trackPlaybackTime.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["nativeBrowser","onActiveTrackChanged","handles","Set","installed","currentTrack","onTick","handle","totalSeconds","sinceLast","lastFireSeconds","period","callback","total","track","install","onPlaybackInterval","addListener","event","trackPlaybackTime","Error","add","size","setPlaybackIntervalEnabled","delete","__emitTickForTests","ticks","i"],"sourceRoot":"../../../../src","sources":["features/playback/trackPlaybackTime.ts"],"mappings":";;AACA,SAASA,aAAa,QAAQ,cAAc;AAC5C,SAASC,oBAAoB,QAAQ,sBAAsB;;AAE3D;;AAkBA;;AAEA,MAAMC,OAAO,GAAG,IAAIC,GAAG,CAAS,CAAC;AACjC,IAAIC,SAAS,GAAG,KAAK;AACrB,IAAIC,YAA+B;;AAEnC;AACA;AACA;AACA,SAASC,MAAMA,CAAA,EAAG;EAChB,KAAK,MAAMC,MAAM,IAAIL,OAAO,EAAE;IAC5BK,MAAM,CAACC,YAAY,IAAI,CAAC;IACxB,MAAMC,SAAS,GAAGF,MAAM,CAACC,YAAY,GAAGD,MAAM,CAACG,eAAe;IAC9D,IAAID,SAAS,IAAIF,MAAM,CAACI,MAAM,EAAE;MAC9BJ,MAAM,CAACG,eAAe,GAAGH,MAAM,CAACC,YAAY;MAC5CD,MAAM,CAACK,QAAQ,CAAC;QACdC,KAAK,EAAEN,MAAM,CAACC,YAAY;QAC1BC,SAAS;QACTK,KAAK,EAAET;MACT,CAAC,CAAC;IACJ;EACF;AACF;AAEA,SAASU,OAAOA,CAAA,EAAG;EACjB,IAAIX,SAAS,EAAE;EACfA,SAAS,GAAG,IAAI;EAChBJ,aAAa,CAACgB,kBAAkB,GAAGV,MAAM;EACzCL,oBAAoB,CAACgB,WAAW,CAAEC,KAAK,IAAK;IAC1Cb,YAAY,GAAGa,KAAK,CAACJ,KAAK;EAC5B,CAAC,CAAC;AACJ;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASK,iBAAiBA,CAC/BP,QAA4C,EAC5CD,MAAc,EACF;EACZ,IAAI,EAAEA,MAAM,IAAI,CAAC,CAAC,EAAE;IAClB,MAAM,IAAIS,KAAK,CAAC,wCAAwC,CAAC;EAC3D;EACAL,OAAO,CAAC,CAAC;EACT,MAAMR,MAAc,GAAG;IACrBI,MAAM;IACNH,YAAY,EAAE,CAAC;IACfE,eAAe,EAAE,CAAC;IAClBE;EACF,CAAC;EACDV,OAAO,CAACmB,GAAG,CAACd,MAAM,CAAC;EACnB,IAAIL,OAAO,CAACoB,IAAI,KAAK,CAAC,EAAEtB,aAAa,CAACuB,0BAA0B,CAAC,IAAI,CAAC;EACtE,OAAO,MAAM;IACX,IAAI,CAACrB,OAAO,CAACsB,MAAM,CAACjB,MAAM,CAAC,EAAE;IAC7B,IAAIL,OAAO,CAACoB,IAAI,KAAK,CAAC,EAAEtB,aAAa,CAACuB,0BAA0B,CAAC,KAAK,CAAC;EACzE,CAAC;AACH;;AAEA;AACA,OAAO,SAASE,kBAAkBA,CAACC,KAAK,GAAG,CAAC,EAAE;EAC5C,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,KAAK,EAAEC,CAAC,EAAE,EAAErB,MAAM,CAAC,CAAC;AAC1C","ignoreList":[]}
1
+ {"version":3,"names":["nativeBrowser","onActiveTrackChanged","handles","Set","installed","currentTrack","onTick","handle","totalSeconds","sinceLast","lastFireSeconds","period","callback","total","track","install","onPlaybackInterval","addListener","event","trackPlaybackTime","Error","add","size","setPlaybackIntervalEnabled","delete"],"sourceRoot":"../../../../src","sources":["features/playback/trackPlaybackTime.ts"],"mappings":";;AACA,SAASA,aAAa,QAAQ,cAAc;AAC5C,SAASC,oBAAoB,QAAQ,sBAAsB;;AAE3D;;AAkBA;;AAEA,MAAMC,OAAO,GAAG,IAAIC,GAAG,CAAS,CAAC;AACjC,IAAIC,SAAS,GAAG,KAAK;AACrB,IAAIC,YAA+B;;AAEnC;AACA;AACA;AACA,SAASC,MAAMA,CAAA,EAAG;EAChB,KAAK,MAAMC,MAAM,IAAIL,OAAO,EAAE;IAC5BK,MAAM,CAACC,YAAY,IAAI,CAAC;IACxB,MAAMC,SAAS,GAAGF,MAAM,CAACC,YAAY,GAAGD,MAAM,CAACG,eAAe;IAC9D,IAAID,SAAS,IAAIF,MAAM,CAACI,MAAM,EAAE;MAC9BJ,MAAM,CAACG,eAAe,GAAGH,MAAM,CAACC,YAAY;MAC5CD,MAAM,CAACK,QAAQ,CAAC;QACdC,KAAK,EAAEN,MAAM,CAACC,YAAY;QAC1BC,SAAS;QACTK,KAAK,EAAET;MACT,CAAC,CAAC;IACJ;EACF;AACF;AAEA,SAASU,OAAOA,CAAA,EAAG;EACjB,IAAIX,SAAS,EAAE;EACfA,SAAS,GAAG,IAAI;EAChBJ,aAAa,CAACgB,kBAAkB,GAAGV,MAAM;EACzCL,oBAAoB,CAACgB,WAAW,CAAEC,KAAK,IAAK;IAC1Cb,YAAY,GAAGa,KAAK,CAACJ,KAAK;EAC5B,CAAC,CAAC;AACJ;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASK,iBAAiBA,CAC/BP,QAA4C,EAC5CD,MAAc,EACF;EACZ,IAAI,EAAEA,MAAM,IAAI,CAAC,CAAC,EAAE;IAClB,MAAM,IAAIS,KAAK,CAAC,wCAAwC,CAAC;EAC3D;EACAL,OAAO,CAAC,CAAC;EACT,MAAMR,MAAc,GAAG;IACrBI,MAAM;IACNH,YAAY,EAAE,CAAC;IACfE,eAAe,EAAE,CAAC;IAClBE;EACF,CAAC;EACDV,OAAO,CAACmB,GAAG,CAACd,MAAM,CAAC;EACnB,IAAIL,OAAO,CAACoB,IAAI,KAAK,CAAC,EAAEtB,aAAa,CAACuB,0BAA0B,CAAC,IAAI,CAAC;EACtE,OAAO,MAAM;IACX,IAAI,CAACrB,OAAO,CAACsB,MAAM,CAACjB,MAAM,CAAC,EAAE;IAC7B,IAAIL,OAAO,CAACoB,IAAI,KAAK,CAAC,EAAEtB,aAAa,CAACuB,0BAA0B,CAAC,KAAK,CAAC;EACzE,CAAC;AACH","ignoreList":[]}
@@ -44,7 +44,7 @@ export function setSystemVolume(level) {
44
44
  /**
45
45
  * Subscribes to system volume changes.
46
46
  * @param callback - Called when the system volume changes
47
- * @returns Cleanup function to unsubscribe
47
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
48
48
  */
49
49
  export const onSystemVolumeChanged = NativeUpdatedValue.emitterize(cb => nativeBrowser.onSystemVolumeChanged = cb);
50
50
 
@@ -3,6 +3,7 @@
3
3
  import { nativeBrowser } from '../../native';
4
4
  import { NativeUpdatedValue } from '../../utils/NativeUpdatedValue';
5
5
  import { useNativeUpdatedValue } from '../../utils/useNativeUpdatedValue';
6
+ import { validateIOSUpdateOptions } from './validateOptions';
6
7
 
7
8
  // MARK: - Types
8
9
 
@@ -165,22 +166,6 @@ import { useNativeUpdatedValue } from '../../utils/useNativeUpdatedValue';
165
166
 
166
167
  // MARK: - Functions
167
168
 
168
- const MAX_CARPLAY_NOW_PLAYING_BUTTONS = 5;
169
-
170
- /**
171
- * Warns when more CarPlay now-playing buttons are configured than CarPlay renders.
172
- * Shared by {@link updateOptions} and `setupPlayer` (both can carry `ios` options).
173
- *
174
- * @internal Validation helper, not public API — `stripInternal` removes it from
175
- * the published types and typedoc hides it from the docs.
176
- */
177
- export function validateIOSUpdateOptions(ios) {
178
- const buttons = ios?.carPlayNowPlayingButtons;
179
- if (buttons && buttons.length > MAX_CARPLAY_NOW_PLAYING_BUTTONS) {
180
- console.warn(`[react-native-audio-browser] ${buttons.length} CarPlay now-playing ` + `buttons configured; CarPlay shows at most ${MAX_CARPLAY_NOW_PLAYING_BUTTONS}.`);
181
- }
182
- }
183
-
184
169
  /**
185
170
  * Updates the configuration for the components.
186
171
  * Pass only the properties you want to change - all properties are optional.
@@ -225,7 +210,7 @@ export function getOptions() {
225
210
  /**
226
211
  * Subscribes to player options changes.
227
212
  * @param callback - Called when the player options change
228
- * @returns Cleanup function to unsubscribe
213
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
229
214
  */
230
215
  export const onOptionsChanged = NativeUpdatedValue.emitterize(cb => nativeBrowser.onOptionsChanged = cb);
231
216
 
@@ -1 +1 @@
1
- {"version":3,"names":["nativeBrowser","NativeUpdatedValue","useNativeUpdatedValue","MAX_CARPLAY_NOW_PLAYING_BUTTONS","validateIOSUpdateOptions","ios","buttons","carPlayNowPlayingButtons","length","console","warn","updateOptions","options","getOptions","onOptionsChanged","emitterize","cb","useOptions"],"sourceRoot":"../../../../src","sources":["features/player/options.ts"],"mappings":";;AAEA,SAASA,aAAa,QAAQ,cAAc;AAC5C,SAASC,kBAAkB,QAAQ,gCAAgC;AACnE,SAASC,qBAAqB,QAAQ,mCAAmC;;AAEzE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAgGA;AACA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA4CA;AACA;AACA;AACA;;AA4EA;AACA;AACA;AACA;;AAOA;AACA;AACA;AACA;;AA6BA;AACA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAuDA;AACA;AACA;AACA;;AAwCA;;AAEA,MAAMC,+BAA+B,GAAG,CAAC;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,wBAAwBA,CAACC,GAAsB,EAAQ;EACrE,MAAMC,OAAO,GAAGD,GAAG,EAAEE,wBAAwB;EAC7C,IAAID,OAAO,IAAIA,OAAO,CAACE,MAAM,GAAGL,+BAA+B,EAAE;IAC/DM,OAAO,CAACC,IAAI,CACV,gCAAgCJ,OAAO,CAACE,MAAM,uBAAuB,GACnE,6CAA6CL,+BAA+B,GAChF,CAAC;EACH;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASQ,aAAaA,CAACC,OAAsB,EAAQ;EAC1DR,wBAAwB,CAACQ,OAAO,CAACP,GAAG,CAAC;EACrCL,aAAa,CAACW,aAAa,CAACC,OAAO,CAAC;AACtC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAAA,EAAY;EACpC,OAAOb,aAAa,CAACa,UAAU,CAAC,CAAC;AACnC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAGb,kBAAkB,CAACc,UAAU,CAC1DC,EAAE,IAAMhB,aAAa,CAACc,gBAAgB,GAAGE,EAC5C,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAAA,EAAY;EACpC,OAAOf,qBAAqB,CAACW,UAAU,EAAEC,gBAAgB,CAAC;AAC5D","ignoreList":[]}
1
+ {"version":3,"names":["nativeBrowser","NativeUpdatedValue","useNativeUpdatedValue","validateIOSUpdateOptions","updateOptions","options","ios","getOptions","onOptionsChanged","emitterize","cb","useOptions"],"sourceRoot":"../../../../src","sources":["features/player/options.ts"],"mappings":";;AAEA,SAASA,aAAa,QAAQ,cAAc;AAC5C,SAASC,kBAAkB,QAAQ,gCAAgC;AACnE,SAASC,qBAAqB,QAAQ,mCAAmC;AACzE,SAASC,wBAAwB,QAAQ,mBAAmB;;AAE5D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAgGA;AACA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA4CA;AACA;AACA;AACA;;AA4EA;AACA;AACA;AACA;;AAOA;AACA;AACA;AACA;;AA6BA;AACA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAuDA;AACA;AACA;AACA;;AAwCA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAACC,OAAsB,EAAQ;EAC1DF,wBAAwB,CAACE,OAAO,CAACC,GAAG,CAAC;EACrCN,aAAa,CAACI,aAAa,CAACC,OAAO,CAAC;AACtC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,UAAUA,CAAA,EAAY;EACpC,OAAOP,aAAa,CAACO,UAAU,CAAC,CAAC;AACnC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAGP,kBAAkB,CAACQ,UAAU,CAC1DC,EAAE,IAAMV,aAAa,CAACQ,gBAAgB,GAAGE,EAC5C,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAAA,EAAY;EACpC,OAAOT,qBAAqB,CAACK,UAAU,EAAEC,gBAAgB,CAAC;AAC5D","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  // MARK: - Types
4
4
 
5
5
  import { nativeBrowser } from '../../native';
6
- import { validateIOSUpdateOptions } from './options';
6
+ import { validateIOSUpdateOptions } from './validateOptions';
7
7
 
8
8
  /**
9
9
  * Parameters passed to the {@link FormatNowPlayingCallback}.
@@ -1 +1 @@
1
- {"version":3,"names":["nativeBrowser","validateIOSUpdateOptions","resolveNowPlaying","value","autoUpdateNowPlayingMetadata","nowPlayingMetadataFormatter","wrapNowPlayingFormatter","undefined","formatter","params","definedFields","obj","out","key","nonEmpty","Object","keys","length","setupPlayer","options","nowPlaying","capabilities","forwardJumpInterval","backwardJumpInterval","progressUpdateEventInterval","android","ios","nativeSetup","appKilledPlaybackBehavior","skipSilence","remoteButtonLayout","androidSetup","playbackRates","carPlayUpNextButton","carPlayNowPlayingButtons","iosSetup","iosUpdate","updates"],"sourceRoot":"../../../../src","sources":["features/player/setup.ts"],"mappings":";;AAAA;;AAYA,SAASA,aAAa,QAAQ,cAAc;AAC5C,SAASC,wBAAwB,QAAQ,WAAW;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAsBA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA2BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;;AA2GA;;AA4CA;AACA;AACA;AACA;AACA;;AAgCA;;AAEA;AACA;AACA;AACA;;AAMA;AACA;AACA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","ignoreList":[]}
1
+ {"version":3,"names":["nativeBrowser","validateIOSUpdateOptions","resolveNowPlaying","value","autoUpdateNowPlayingMetadata","nowPlayingMetadataFormatter","wrapNowPlayingFormatter","undefined","formatter","params","definedFields","obj","out","key","nonEmpty","Object","keys","length","setupPlayer","options","nowPlaying","capabilities","forwardJumpInterval","backwardJumpInterval","progressUpdateEventInterval","android","ios","nativeSetup","appKilledPlaybackBehavior","skipSilence","remoteButtonLayout","androidSetup","playbackRates","carPlayUpNextButton","carPlayNowPlayingButtons","iosSetup","iosUpdate","updates"],"sourceRoot":"../../../../src","sources":["features/player/setup.ts"],"mappings":";;AAAA;;AAYA,SAASA,aAAa,QAAQ,cAAc;AAC5C,SAASC,wBAAwB,QAAQ,mBAAmB;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAsBA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA2BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;;AA2GA;;AA4CA;AACA;AACA;AACA;AACA;;AAgCA;;AAEA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;;AA0EA;;AAMA;AACA,SAASC,iBAAiBA,CACxBC,KAAuC,EACjB;EACtB,IAAI,OAAOA,KAAK,KAAK,UAAU,EAAE;IAC/B,OAAO;MACLC,4BAA4B,EAAE,IAAI;MAClCC,2BAA2B,EAAEC,uBAAuB,CAACH,KAAK;IAC5D,CAAC;EACH;EACA;EACA,OAAO;IACLC,4BAA4B,EAAED,KAAK,IAAI,IAAI;IAC3CE,2BAA2B,EAAEE;EAC/B,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASD,uBAAuBA,CAC9BE,SAAmC,EACT;EAC1B,OAAQC,MAAM,IAAKD,SAAS,CAACC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,aAAaA,CAAmBC,GAAM,EAAc;EAC3D,MAAMC,GAAe,GAAG,CAAC,CAAC;EAC1B,KAAK,MAAMC,GAAG,IAAIF,GAAG,EAAE;IACrB,IAAIA,GAAG,CAACE,GAAG,CAAC,KAAKN,SAAS,EAAEK,GAAG,CAACC,GAAG,CAAC,GAAGF,GAAG,CAACE,GAAG,CAAC;EACjD;EACA,OAAOD,GAAG;AACZ;;AAEA;AACA,SAASE,QAAQA,CACfD,GAAM,EACNV,KAAQ,EACU;EAClB,OAAOY,MAAM,CAACC,IAAI,CAACb,KAAK,CAAC,CAACc,MAAM,GAAG,CAAC,GAC/B;IAAE,CAACJ,GAAG,GAAGV;EAAM,CAAC,GACjB,CAAC,CAAC;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAee,WAAWA,CAC/BC,OAA2B,GAAG,CAAC,CAAC,EACjB;EACf,MAAM;IACJC,UAAU;IACVC,YAAY;IACZC,mBAAmB;IACnBC,oBAAoB;IACpBC,2BAA2B;IAC3BC,OAAO,GAAG,CAAC,CAAC;IACZC,GAAG,GAAG,CAAC,CAAC;IACR,GAAGC;EACL,CAAC,GAAGR,OAAO;;EAEX;EACA;EACA;EACA,MAAM;IACJS,yBAAyB;IACzBC,WAAW;IACXC,kBAAkB;IAClB,GAAGC;EACL,CAAC,GAAGN,OAAO;EACX,MAAM;IACJO,aAAa;IACbC,mBAAmB;IACnBC,wBAAwB;IACxB,GAAGC;EACL,CAAC,GAAGT,GAAG;EACP,MAAMU,SAAS,GAAG1B,aAAa,CAAC;IAC9BsB,aAAa;IACbC,mBAAmB;IACnBC;EACF,CAAC,CAAC;EACFjC,wBAAwB,CAACmC,SAAS,CAAC;EAEnC,MAAMC,OAA4B,GAAG3B,aAAa,CAAC;IACjDW,YAAY;IACZC,mBAAmB;IACnBC,oBAAoB;IACpBC,2BAA2B;IAC3B,GAAGV,QAAQ,CACT,SAAS,EACTJ,aAAa,CAAC;MACZkB,yBAAyB;MACzBC,WAAW;MACXC;IACF,CAAC,CACH,CAAC;IACD,GAAGhB,QAAQ,CAAC,KAAK,EAAEsB,SAAS;EAC9B,CAAC,CAAC;EAEF,OAAOpC,aAAa,CAACkB,WAAW,CAAC;IAC/B,GAAGS,WAAW;IACd,GAAGb,QAAQ,CAAC,SAAS,EAAEJ,aAAa,CAACqB,YAAY,CAAC,CAAC;IACnD,GAAGjB,QAAQ,CAAC,KAAK,EAAEJ,aAAa,CAACyB,QAAQ,CAAC,CAAC;IAC3C,GAAGjC,iBAAiB,CAACkB,UAAU,CAAC;IAChC,GAAGN,QAAQ,CAAC,SAAS,EAAEuB,OAAO;EAChC,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ const MAX_CARPLAY_NOW_PLAYING_BUTTONS = 5;
4
+
5
+ /**
6
+ * Warns when more CarPlay now-playing buttons are configured than CarPlay renders.
7
+ * Shared by `updateOptions` and `setupPlayer` (both can carry `ios` options).
8
+ *
9
+ * Lives outside `options.ts` because `features/player/index.ts` re-exports that
10
+ * module wholesale: anything exported there joins the package's runtime surface,
11
+ * `@internal` or not. This file is imported directly by the two callers and by
12
+ * nothing in the barrel.
13
+ */
14
+ export function validateIOSUpdateOptions(ios) {
15
+ const buttons = ios?.carPlayNowPlayingButtons;
16
+ if (buttons && buttons.length > MAX_CARPLAY_NOW_PLAYING_BUTTONS) {
17
+ console.warn(`[react-native-audio-browser] ${buttons.length} CarPlay now-playing ` + `buttons configured; CarPlay shows at most ${MAX_CARPLAY_NOW_PLAYING_BUTTONS}.`);
18
+ }
19
+ }
20
+ //# sourceMappingURL=validateOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MAX_CARPLAY_NOW_PLAYING_BUTTONS","validateIOSUpdateOptions","ios","buttons","carPlayNowPlayingButtons","length","console","warn"],"sourceRoot":"../../../../src","sources":["features/player/validateOptions.ts"],"mappings":";;AAEA,MAAMA,+BAA+B,GAAG,CAAC;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,wBAAwBA,CAACC,GAAsB,EAAQ;EACrE,MAAMC,OAAO,GAAGD,GAAG,EAAEE,wBAAwB;EAC7C,IAAID,OAAO,IAAIA,OAAO,CAACE,MAAM,GAAGL,+BAA+B,EAAE;IAC/DM,OAAO,CAACC,IAAI,CACV,gCAAgCJ,OAAO,CAACE,MAAM,uBAAuB,GACnE,6CAA6CL,+BAA+B,GAChF,CAAC;EACH;AACF","ignoreList":[]}
@@ -30,7 +30,7 @@ export function getActiveTrackIndex() {
30
30
  /**
31
31
  * Subscribes to active track change events.
32
32
  * @param callback - Called when the active track changes
33
- * @returns Cleanup function to unsubscribe
33
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
34
34
  */
35
35
  export const onActiveTrackChanged = NativeUpdatedValue.emitterize(cb => nativeBrowser.onPlaybackActiveTrackChanged = cb);
36
36
 
@@ -145,7 +145,7 @@ export function getQueue() {
145
145
  /**
146
146
  * Subscribes to playback queue ended events.
147
147
  * @param callback - Called when playback has paused due to reaching the end of the queue
148
- * @returns Cleanup function to unsubscribe
148
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
149
149
  */
150
150
  export const onQueueEnded = NativeUpdatedValue.emitterize(cb => nativeBrowser.onPlaybackQueueEnded = cb);
151
151
 
@@ -153,7 +153,7 @@ export const onQueueEnded = NativeUpdatedValue.emitterize(cb => nativeBrowser.on
153
153
  * Subscribes to queue change events.
154
154
  * Called when tracks are added, removed, reordered, or when track metadata changes.
155
155
  * @param callback - Called with the updated queue
156
- * @returns Cleanup function to unsubscribe
156
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
157
157
  */
158
158
  export const onQueueChanged = NativeUpdatedValue.emitterize(cb => nativeBrowser.onPlaybackQueueChanged = cb);
159
159
 
@@ -36,7 +36,7 @@ export function setRepeatMode(repeatMode) {
36
36
  /**
37
37
  * Subscribes to repeat mode changes.
38
38
  * @param callback - Called when repeat mode changes
39
- * @returns Cleanup function to unsubscribe
39
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
40
40
  */
41
41
  export const onRepeatModeChanged = NativeUpdatedValue.emitterize(cb => nativeBrowser.onPlaybackRepeatModeChanged = cb);
42
42
 
@@ -34,7 +34,7 @@ export function toggleShuffle() {
34
34
  /**
35
35
  * Subscribes to shuffle mode changes.
36
36
  * @param callback - Called when shuffle mode changes
37
- * @returns Cleanup function to unsubscribe
37
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
38
38
  */
39
39
  export const onShuffleChanged = NativeUpdatedValue.emitterize(cb => nativeBrowser.onPlaybackShuffleModeChanged = cb);
40
40
 
@@ -29,90 +29,11 @@ import { LazyNativeEmitter } from '../utils/LazyNativeEmitter';
29
29
  * Remote skip event (Android only).
30
30
  */
31
31
 
32
- // MARK: - Default Handlers
33
-
34
- // Install remote control handlers with default behavior immediately when module loads
35
- // Custom handlers can override the defaults using handleRemote* functions
36
-
37
- // Basic playback controls
38
- // AudioBrowser.onRemotePlay(() => {
39
- // const customHandler = customHandlers.get('play')
40
- // if (customHandler) {
41
- // customHandler()
42
- // } else {
43
- // play()
44
- // }
45
- // })
46
-
47
- // AudioBrowser.onRemotePause(() => {
48
- // const customHandler = customHandlers.get('pause')
49
- // if (customHandler) {
50
- // customHandler()
51
- // } else {
52
- // pause()
53
- // }
54
- // })
55
-
56
- // AudioBrowser.onRemoteNext(() => {
57
- // const customHandler = customHandlers.get('next')
58
- // if (customHandler) {
59
- // customHandler()
60
- // } else {
61
- // skipToNext()
62
- // }
63
- // })
64
-
65
- // AudioBrowser.onRemotePrevious(() => {
66
- // const customHandler = customHandlers.get('previous')
67
- // if (customHandler) {
68
- // customHandler()
69
- // } else {
70
- // skipToPrevious()
71
- // }
72
- // })
73
-
74
- // AudioBrowser.onRemoteStop(() => {
75
- // const customHandler = customHandlers.get('stop')
76
- // if (customHandler) {
77
- // customHandler()
78
- // } else {
79
- // stop()
80
- // }
81
- // })
82
-
83
- // // Seek controls
84
- // AudioBrowser.onRemoteSeek((event: any) => {
85
- // const customHandler = customHandlers.get('seek')
86
- // if (customHandler) {
87
- // customHandler(event)
88
- // } else {
89
- // seekTo(event.position)
90
- // }
91
- // })
92
-
93
- // AudioBrowser.onRemoteJumpForward((event: any) => {
94
- // const customHandler = customHandlers.get('jumpForward')
95
- // if (customHandler) {
96
- // customHandler(event)
97
- // } else {
98
- // seekBy(event.interval)
99
- // }
100
- // })
101
-
102
- // AudioBrowser.onRemoteJumpBackward((event: any) => {
103
- // const customHandler = customHandlers.get('jumpBackward')
104
- // if (customHandler) {
105
- // customHandler(event)
106
- // } else {
107
- // seekBy(-event.interval)
108
- // }
109
- // })
110
-
111
32
  // MARK: - Handler Override Functions
112
33
  //
113
34
  // Use these functions when you want to OVERRIDE the default remote control behavior.
114
35
  // These will replace the default handlers with your custom logic.
115
- // If you just want to listen to events for debugging/logging, use the onRemote* functions below.
36
+ // If you just want to listen to events for debugging/logging, use the onRemote* emitters below.
116
37
 
117
38
  /**
118
39
  * Sets a custom handler for remote play events, overriding the default behavior.
@@ -180,7 +101,7 @@ export function handleRemoteJumpBackward(callback) {
180
101
 
181
102
  // MARK: - Event Callbacks (for listening/debugging only)
182
103
  //
183
- // Use these functions when you want to LISTEN to remote control events without overriding
104
+ // Use these emitters when you want to LISTEN to remote control events without overriding
184
105
  // the default behavior. These are perfect for logging, analytics, or debugging.
185
106
  // Multiple listeners can be registered for the same event.
186
107
  // To override the default behavior, use the handleRemote* functions above.
@@ -188,77 +109,77 @@ export function handleRemoteJumpBackward(callback) {
188
109
  /**
189
110
  * Subscribes to remote jump backward events.
190
111
  * @param callback - Called when the user presses the jump backward button
191
- * @returns Cleanup function to unsubscribe
112
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
192
113
  */
193
114
  export const onRemoteJumpBackward = LazyNativeEmitter.emitterize(cb => nativeBrowser.onRemoteJumpBackward = cb);
194
115
 
195
116
  /**
196
117
  * Subscribes to remote jump forward events.
197
118
  * @param callback - Called when the user presses the jump forward button
198
- * @returns Cleanup function to unsubscribe
119
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
199
120
  */
200
121
  export const onRemoteJumpForward = LazyNativeEmitter.emitterize(cb => nativeBrowser.onRemoteJumpForward = cb);
201
122
 
202
123
  /**
203
124
  * Subscribes to remote next events.
204
125
  * @param callback - Called when the user presses the next track button
205
- * @returns Cleanup function to unsubscribe
126
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
206
127
  */
207
128
  export const onRemoteNext = LazyNativeEmitter.emitterize(cb => nativeBrowser.onRemoteNext = cb);
208
129
 
209
130
  /**
210
131
  * Subscribes to remote pause events.
211
132
  * @param callback - Called when the user presses the pause button
212
- * @returns Cleanup function to unsubscribe
133
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
213
134
  */
214
135
  export const onRemotePause = LazyNativeEmitter.emitterize(cb => nativeBrowser.onRemotePause = cb);
215
136
 
216
137
  /**
217
138
  * Subscribes to remote play events.
218
139
  * @param callback - Called when the user presses the play button
219
- * @returns Cleanup function to unsubscribe
140
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
220
141
  */
221
142
  export const onRemotePlay = LazyNativeEmitter.emitterize(cb => nativeBrowser.onRemotePlay = cb);
222
143
 
223
144
  /**
224
145
  * Subscribes to remote play ID events (Android only).
225
146
  * @param callback - Called when the user selects a track from an external device
226
- * @returns Cleanup function to unsubscribe
147
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
227
148
  */
228
149
  export const onRemotePlayId = LazyNativeEmitter.emitterize(cb => nativeBrowser.onRemotePlayId = cb);
229
150
 
230
151
  /**
231
152
  * Subscribes to remote play search events (Android only).
232
153
  * @param callback - Called when the user searches for a track (usually voice search)
233
- * @returns Cleanup function to unsubscribe
154
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
234
155
  */
235
156
  export const onRemotePlaySearch = LazyNativeEmitter.emitterize(cb => nativeBrowser.onRemotePlaySearch = cb);
236
157
 
237
158
  /**
238
159
  * Subscribes to remote previous events.
239
160
  * @param callback - Called when the user presses the previous track button
240
- * @returns Cleanup function to unsubscribe
161
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
241
162
  */
242
163
  export const onRemotePrevious = LazyNativeEmitter.emitterize(cb => nativeBrowser.onRemotePrevious = cb);
243
164
 
244
165
  /**
245
166
  * Subscribes to remote seek events.
246
167
  * @param callback - Called when the user changes the position of the timeline
247
- * @returns Cleanup function to unsubscribe
168
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
248
169
  */
249
170
  export const onRemoteSeek = LazyNativeEmitter.emitterize(cb => nativeBrowser.onRemoteSeek = cb);
250
171
 
251
172
  /**
252
173
  * Subscribes to remote skip events (Android only).
253
174
  * @param callback - Called when the user presses the skip button
254
- * @returns Cleanup function to unsubscribe
175
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
255
176
  */
256
177
  export const onRemoteSkip = LazyNativeEmitter.emitterize(cb => nativeBrowser.onRemoteSkip = cb);
257
178
 
258
179
  /**
259
180
  * Subscribes to remote stop events.
260
181
  * @param callback - Called when the user presses the stop button
261
- * @returns Cleanup function to unsubscribe
182
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
262
183
  */
263
184
  export const onRemoteStop = LazyNativeEmitter.emitterize(cb => nativeBrowser.onRemoteStop = cb);
264
185
  //# sourceMappingURL=remoteControls.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["nativeBrowser","LazyNativeEmitter","handleRemotePlay","callback","handleRemotePause","handleRemoteNext","handleRemotePrevious","handleRemoteStop","handleRemoteSeek","handleRemoteJumpForward","handleRemoteJumpBackward","onRemoteJumpBackward","emitterize","cb","onRemoteJumpForward","onRemoteNext","onRemotePause","onRemotePlay","onRemotePlayId","onRemotePlaySearch","onRemotePrevious","onRemoteSeek","onRemoteSkip","onRemoteStop"],"sourceRoot":"../../../src","sources":["features/remoteControls.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,WAAW;AACzC,SAASC,iBAAiB,QAAQ,4BAA4B;;AAE9D;;AAEA;AACA;AACA;;AAMA;AACA;AACA;;AAMA;AACA;AACA;;AAQA;AACA;AACA;;AAMA;AACA;AACA;;AAMA;AACA;AACA;;AAMA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAACC,QAAkC,EAAE;EACnEH,aAAa,CAACE,gBAAgB,GAAGC,QAAQ;AAC3C;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAACD,QAAkC,EAAE;EACpEH,aAAa,CAACI,iBAAiB,GAAGD,QAAQ;AAC5C;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASE,gBAAgBA,CAACF,QAAkC,EAAE;EACnEH,aAAa,CAACK,gBAAgB,GAAGF,QAAQ;AAC3C;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASG,oBAAoBA,CAACH,QAAkC,EAAE;EACvEH,aAAa,CAACM,oBAAoB,GAAGH,QAAQ;AAC/C;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASI,gBAAgBA,CAACJ,QAAkC,EAAE;EACnEH,aAAa,CAACO,gBAAgB,GAAGJ,QAAQ;AAC3C;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASK,gBAAgBA,CAC9BL,QAAwD,EACxD;EACAH,aAAa,CAACQ,gBAAgB,GAAGL,QAAQ;AAC3C;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASM,uBAAuBA,CACrCN,QAA+D,EAC/D;EACAH,aAAa,CAACS,uBAAuB,GAAGN,QAAQ;AAClD;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASO,wBAAwBA,CACtCP,QAAgE,EAChE;EACAH,aAAa,CAACU,wBAAwB,GAAGP,QAAQ;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMQ,oBAAoB,GAC/BV,iBAAiB,CAACW,UAAU,CACzBC,EAAE,IAAMb,aAAa,CAACW,oBAAoB,GAAGE,EAChD,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,mBAAmB,GAC9Bb,iBAAiB,CAACW,UAAU,CACzBC,EAAE,IAAMb,aAAa,CAACc,mBAAmB,GAAGD,EAC/C,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA,OAAO,MAAME,YAAY,GAAGd,iBAAiB,CAACW,UAAU,CACrDC,EAAE,IAAMb,aAAa,CAACe,YAAY,GAAGF,EACxC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMG,aAAa,GAAGf,iBAAiB,CAACW,UAAU,CACtDC,EAAE,IAAMb,aAAa,CAACgB,aAAa,GAAGH,EACzC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMI,YAAY,GAAGhB,iBAAiB,CAACW,UAAU,CACrDC,EAAE,IAAMb,aAAa,CAACiB,YAAY,GAAGJ,EACxC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMK,cAAc,GAAGjB,iBAAiB,CAACW,UAAU,CACvDC,EAAE,IAAMb,aAAa,CAACkB,cAAc,GAAGL,EAC1C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMM,kBAAkB,GAC7BlB,iBAAiB,CAACW,UAAU,CACzBC,EAAE,IAAMb,aAAa,CAACmB,kBAAkB,GAAGN,EAC9C,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMO,gBAAgB,GAAGnB,iBAAiB,CAACW,UAAU,CACzDC,EAAE,IAAMb,aAAa,CAACoB,gBAAgB,GAAGP,EAC5C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMQ,YAAY,GAAGpB,iBAAiB,CAACW,UAAU,CACrDC,EAAE,IAAMb,aAAa,CAACqB,YAAY,GAAGR,EACxC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMS,YAAY,GAAGrB,iBAAiB,CAACW,UAAU,CACrDC,EAAE,IAAMb,aAAa,CAACsB,YAAY,GAAGT,EACxC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMU,YAAY,GAAGtB,iBAAiB,CAACW,UAAU,CACrDC,EAAE,IAAMb,aAAa,CAACuB,YAAY,GAAGV,EACxC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["nativeBrowser","LazyNativeEmitter","handleRemotePlay","callback","handleRemotePause","handleRemoteNext","handleRemotePrevious","handleRemoteStop","handleRemoteSeek","handleRemoteJumpForward","handleRemoteJumpBackward","onRemoteJumpBackward","emitterize","cb","onRemoteJumpForward","onRemoteNext","onRemotePause","onRemotePlay","onRemotePlayId","onRemotePlaySearch","onRemotePrevious","onRemoteSeek","onRemoteSkip","onRemoteStop"],"sourceRoot":"../../../src","sources":["features/remoteControls.ts"],"mappings":"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","ignoreList":[]}
@@ -63,7 +63,7 @@ export function clearSleepTimer() {
63
63
  /**
64
64
  * Subscribes to sleep timer changes.
65
65
  * @param callback - Called when the sleep timer state changes
66
- * @returns Cleanup function to unsubscribe
66
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
67
67
  */
68
68
  export const onSleepTimerChanged = NativeUpdatedValue.emitterize(cb => nativeBrowser.onSleepTimerChanged = cb);
69
69
 
@@ -12,9 +12,11 @@
12
12
  *
13
13
  * @example
14
14
  * ```typescript
15
- * export const onRemotePlay = LazyEmitter.emitterize<void>(
15
+ * export const onRemotePlay = LazyNativeEmitter.emitterize<void>(
16
16
  * (cb) => (nativeBrowser.onRemotePlay = cb)
17
17
  * )
18
+ *
19
+ * const unsubscribe = onRemotePlay.addListener(() => console.log('play'))
18
20
  * ```
19
21
  */
20
22
  export class LazyNativeEmitter {
@@ -38,13 +40,14 @@ export class LazyNativeEmitter {
38
40
  }
39
41
 
40
42
  /**
41
- * Creates a lazy emitter subscription function for a native callback.
43
+ * Creates a lazy emitter for a native callback.
44
+ *
42
45
  * @param setter - Function that sets the native callback property
43
- * @returns A subscription function that returns an unsubscribe function
46
+ * @returns The emitter instance — subscribe with `addListener`, which returns
47
+ * an unsubscribe function
44
48
  */
45
49
  static emitterize(setter) {
46
- const emitter = new LazyNativeEmitter(setter);
47
- return callback => emitter.addListener(callback);
50
+ return new LazyNativeEmitter(setter);
48
51
  }
49
52
  }
50
53
  //# sourceMappingURL=LazyNativeEmitter.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["LazyNativeEmitter","constructor","setter","getListeners","listeners","Set","data","listener","addListener","callback","add","delete","emitterize","emitter"],"sourceRoot":"../../../src","sources":["utils/LazyNativeEmitter.ts"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,iBAAiB,CAAI;EAIhCC,WAAWA,CAACC,MAA6C,EAAE;IACzD,IAAI,CAACA,MAAM,GAAGA,MAAM;EACtB;EAEQC,YAAYA,CAAA,EAAqB;IACvC,IAAI,IAAI,CAACC,SAAS,EAAE,OAAO,IAAI,CAACA,SAAS;IACzC,MAAMA,SAAS,GAAI,IAAI,CAACA,SAAS,GAAG,IAAIC,GAAG,CAAC,CAAE;IAC9C,IAAI,CAACH,MAAM,CAAEI,IAAO,IAAK;MACvB,KAAK,MAAMC,QAAQ,IAAIH,SAAS,EAAE;QAChCG,QAAQ,CAACD,IAAI,CAAC;MAChB;IACF,CAAC,CAAC;IACF,OAAOF,SAAS;EAClB;EAEAI,WAAWA,CAACC,QAAqB,EAAc;IAC7C,MAAML,SAAS,GAAG,IAAI,CAACD,YAAY,CAAC,CAAC;IACrCC,SAAS,CAACM,GAAG,CAACD,QAAQ,CAAC;IACvB,OAAO,MAAML,SAAS,CAACO,MAAM,CAACF,QAAQ,CAAC;EACzC;;EAEA;AACF;AACA;AACA;AACA;EACE,OAAOG,UAAUA,CACfV,MAA6C,EACN;IACvC,MAAMW,OAAO,GAAG,IAAIb,iBAAiB,CAACE,MAAM,CAAC;IAC7C,OAAQO,QAAqB,IAAKI,OAAO,CAACL,WAAW,CAACC,QAAQ,CAAC;EACjE;AACF","ignoreList":[]}
1
+ {"version":3,"names":["LazyNativeEmitter","constructor","setter","getListeners","listeners","Set","data","listener","addListener","callback","add","delete","emitterize"],"sourceRoot":"../../../src","sources":["utils/LazyNativeEmitter.ts"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,iBAAiB,CAAI;EAIhCC,WAAWA,CAACC,MAA6C,EAAE;IACzD,IAAI,CAACA,MAAM,GAAGA,MAAM;EACtB;EAEQC,YAAYA,CAAA,EAAqB;IACvC,IAAI,IAAI,CAACC,SAAS,EAAE,OAAO,IAAI,CAACA,SAAS;IACzC,MAAMA,SAAS,GAAI,IAAI,CAACA,SAAS,GAAG,IAAIC,GAAG,CAAC,CAAE;IAC9C,IAAI,CAACH,MAAM,CAAEI,IAAO,IAAK;MACvB,KAAK,MAAMC,QAAQ,IAAIH,SAAS,EAAE;QAChCG,QAAQ,CAACD,IAAI,CAAC;MAChB;IACF,CAAC,CAAC;IACF,OAAOF,SAAS;EAClB;EAEAI,WAAWA,CAACC,QAAqB,EAAc;IAC7C,MAAML,SAAS,GAAG,IAAI,CAACD,YAAY,CAAC,CAAC;IACrCC,SAAS,CAACM,GAAG,CAACD,QAAQ,CAAC;IACvB,OAAO,MAAML,SAAS,CAACO,MAAM,CAACF,QAAQ,CAAC;EACzC;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,OAAOG,UAAUA,CACfV,MAA6C,EACvB;IACtB,OAAO,IAAIF,iBAAiB,CAACE,MAAM,CAAC;EACtC;AACF","ignoreList":[]}
@@ -1,5 +1,4 @@
1
1
  export * from './features';
2
- export * from './native';
3
2
  export * from './types';
4
3
  export * from './utils/useDebug';
5
4
  //# sourceMappingURL=AudioBrowser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AudioBrowser.d.ts","sourceRoot":"","sources":["../../../src/AudioBrowser.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"AudioBrowser.d.ts","sourceRoot":"","sources":["../../../src/AudioBrowser.ts"],"names":[],"mappings":"AAIA,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,kBAAkB,CAAA"}
@@ -9,7 +9,7 @@ export declare function isCarConnected(): boolean;
9
9
  * Subscribes to car connection changes (CarPlay on iOS, Android Auto /
10
10
  * Android Automotive on Android). Never fires on web.
11
11
  * @param callback - Called with the new connection state
12
- * @returns Cleanup function to unsubscribe
12
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
13
13
  */
14
14
  export declare const onCarConnectedChanged: NativeUpdatedValue<boolean>;
15
15
  /**
@@ -24,7 +24,7 @@ export declare function setEqualizerLevels(levels: number[]): void;
24
24
  /**
25
25
  * Subscribes to equalizer settings changes (Android only).
26
26
  * @param callback - Called when equalizer settings change
27
- * @returns Cleanup function to unsubscribe
27
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
28
28
  */
29
29
  export declare const onEqualizerChanged: NativeUpdatedValue<EqualizerSettings>;
30
30
  /**
@@ -101,7 +101,7 @@ export declare function getPlaybackError(): PlaybackError | undefined;
101
101
  /**
102
102
  * Subscribes to playback error events.
103
103
  * @param callback - Called when a playback error occurs
104
- * @returns Cleanup function to unsubscribe
104
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
105
105
  */
106
106
  export declare const onPlaybackError: NativeUpdatedValue<PlaybackErrorEvent>;
107
107
  /**
@@ -117,7 +117,7 @@ export declare function getNavigationError(): NavigationError | undefined;
117
117
  /**
118
118
  * Subscribes to navigation error events.
119
119
  * @param callback - Called when a navigation error occurs
120
- * @returns Cleanup function to unsubscribe
120
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
121
121
  */
122
122
  export declare const onNavigationError: NativeUpdatedValue<NavigationErrorEvent>;
123
123
  /**
@@ -136,7 +136,7 @@ export declare function getFormattedNavigationError(): FormattedNavigationError
136
136
  /**
137
137
  * Subscribes to formatted navigation error changes.
138
138
  * @param callback - Called when the formatted navigation error changes
139
- * @returns Cleanup function to unsubscribe
139
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
140
140
  */
141
141
  export declare const onFormattedNavigationError: NativeUpdatedValue<FormattedNavigationError | undefined>;
142
142
  /**
@@ -66,7 +66,7 @@ export interface FavoriteChangedEvent {
66
66
  * The native side has already updated the track's favorite state and UI.
67
67
  *
68
68
  * @param callback - Called with the track and its new favorite state
69
- * @returns Cleanup function to unsubscribe
69
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
70
70
  *
71
71
  * @example
72
72
  * ```ts
@@ -1,4 +1,5 @@
1
1
  import type { SearchParams } from '../types/browser';
2
+ import { LazyNativeEmitter } from '../utils/LazyNativeEmitter';
2
3
  /** Discriminant for gate requests and events. */
3
4
  export type GateReason = 'browse' | 'search';
4
5
  /**
@@ -71,7 +72,7 @@ export declare function setGate(resolve: GateResolver): void;
71
72
  export declare function clearGate(): void;
72
73
  /**
73
74
  * Subscribes to gate events (fired when a request is gated).
74
- * @returns Cleanup function to unsubscribe.
75
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
75
76
  */
76
- export declare const onGate: (callback: (arg: GateEvent) => void) => () => void;
77
+ export declare const onGate: LazyNativeEmitter<GateEvent>;
77
78
  //# sourceMappingURL=gate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../../../src/features/gate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAMpD,iDAAiD;AACjD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAmB5C;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,CAAA;AAI9C;;;;;;;;;GASG;AACH,MAAM,MAAM,IAAI,GAAG;IACjB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAQD;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,CAAA;AAE5C;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAA;AAoCnE;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;AACjE;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;AAWpD;;GAEG;AACH,wBAAgB,SAAS,IAAI,IAAI,CAGhC;AAED;;;GAGG;AACH,eAAO,MAAM,MAAM,oDAElB,CAAA"}
1
+ {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../../../src/features/gate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAI9D,iDAAiD;AACjD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAmB5C;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,CAAA;AAI9C;;;;;;;;;GASG;AACH,MAAM,MAAM,IAAI,GAAG;IACjB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAQD;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,CAAA;AAE5C;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAA;AAoCnE;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;AACjE;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;AAWpD;;GAEG;AACH,wBAAgB,SAAS,IAAI,IAAI,CAGhC;AAED;;;GAGG;AACH,eAAO,MAAM,MAAM,8BAElB,CAAA"}
@@ -87,19 +87,19 @@ export interface ChapterMetadata {
87
87
  /**
88
88
  * Subscribes to chapter metadata events.
89
89
  * @param callback - Called when chapter metadata is received
90
- * @returns Cleanup function to unsubscribe
90
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
91
91
  */
92
92
  export declare const onChapterMetadata: NativeUpdatedValue<ChapterMetadata[]>;
93
93
  /**
94
94
  * Subscribes to track metadata events.
95
95
  * @param callback - Called when static track metadata is received
96
- * @returns Cleanup function to unsubscribe
96
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
97
97
  */
98
98
  export declare const onTrackMetadata: NativeUpdatedValue<TrackMetadata>;
99
99
  /**
100
100
  * Subscribes to timed metadata events (ICY/ID3 from live streams).
101
101
  * @param callback - Called when stream metadata is received (title, artist from ICY/ID3 tags)
102
- * @returns Cleanup function to unsubscribe
102
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
103
103
  */
104
104
  export declare const onTimedMetadata: NativeUpdatedValue<TimedMetadata>;
105
105
  //# sourceMappingURL=metadata.d.ts.map
@@ -7,7 +7,7 @@ export declare function getOnline(): boolean;
7
7
  /**
8
8
  * Subscribes to network connectivity changes.
9
9
  * @param callback - Called when network state changes
10
- * @returns Cleanup function to unsubscribe
10
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
11
11
  */
12
12
  export declare const onOnlineChanged: NativeUpdatedValue<boolean>;
13
13
  /**
@@ -52,7 +52,7 @@ export declare function clearNowPlayingFlash(): void;
52
52
  * Subscribes to now playing metadata change events.
53
53
  * Fires when updateNowPlaying is called or when the track changes.
54
54
  * @param callback - Called when now playing metadata changes
55
- * @returns Cleanup function to unsubscribe
55
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
56
56
  */
57
57
  export declare const onNowPlayingChanged: NativeUpdatedValue<NowPlayingMetadata>;
58
58
  /**
@@ -27,7 +27,7 @@ export declare function getOutput(): Output | undefined;
27
27
  /**
28
28
  * Subscribes to current-output changes (headphones unplugged, Bluetooth speaker
29
29
  * connected, AirPlay/route selected). Fires on iOS and Android 11+; never below.
30
- * @returns Cleanup function to unsubscribe.
30
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
31
31
  */
32
32
  export declare const onOutputChanged: NativeUpdatedValue<Output>;
33
33
  /**