one 2.11.4 → 2.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/android/src/main/java/com/margelo/nitro/one/HybridOneAudio.kt +309 -124
  2. package/dist/cjs/cli/build.cjs +31 -33
  3. package/dist/cjs/cli/build.native.cjs +31 -33
  4. package/dist/cjs/cli/build.native.js +31 -33
  5. package/dist/cjs/cli/build.native.js.map +1 -1
  6. package/dist/cjs/cli/buildPage.cjs +11 -7
  7. package/dist/cjs/cli/buildPage.native.cjs +11 -7
  8. package/dist/cjs/cli/buildPage.native.js +11 -7
  9. package/dist/cjs/cli/buildPage.native.js.map +1 -1
  10. package/dist/cjs/cli/buildPageWorker.cjs +1 -1
  11. package/dist/cjs/cli/buildPageWorker.native.cjs +1 -1
  12. package/dist/cjs/cli/buildPageWorker.native.js +1 -1
  13. package/dist/cjs/cli/buildPageWorker.native.js.map +1 -1
  14. package/dist/cjs/headless-server.cjs +2 -5
  15. package/dist/cjs/headless-server.native.cjs +2 -5
  16. package/dist/cjs/headless-server.native.js +2 -5
  17. package/dist/cjs/headless-server.native.js.map +1 -1
  18. package/dist/cjs/platform/audio/index.cjs +83 -76
  19. package/dist/cjs/platform/audio/index.native.cjs +2 -2
  20. package/dist/cjs/platform/audio/index.native.js +2 -2
  21. package/dist/cjs/platform/audio/index.native.js.map +1 -1
  22. package/dist/cjs/platform/audio/nowPlaying.cjs +126 -0
  23. package/dist/cjs/platform/audio/nowPlaying.native.cjs +160 -0
  24. package/dist/cjs/platform/audio/nowPlaying.native.js +162 -0
  25. package/dist/cjs/platform/audio/nowPlaying.native.js.map +1 -0
  26. package/dist/cjs/platform/audio/player.cjs +15 -0
  27. package/dist/cjs/platform/audio/player.native.cjs +14 -0
  28. package/dist/cjs/platform/audio/player.native.js +14 -0
  29. package/dist/cjs/platform/audio/player.native.js.map +1 -1
  30. package/dist/cjs/platform/audio/unavailable.cjs +1 -1
  31. package/dist/cjs/platform/audio/unavailable.native.cjs +1 -1
  32. package/dist/cjs/platform/audio/unavailable.native.js +1 -1
  33. package/dist/cjs/platform/audio/unavailable.native.js.map +1 -1
  34. package/dist/cjs/platform/location/index.native.cjs +9 -2
  35. package/dist/cjs/platform/location/index.native.js +9 -2
  36. package/dist/cjs/platform/location/index.native.js.map +1 -1
  37. package/dist/cjs/serve-worker.cjs +0 -3
  38. package/dist/cjs/serve-worker.native.cjs +0 -3
  39. package/dist/cjs/serve-worker.native.js +0 -3
  40. package/dist/cjs/serve-worker.native.js.map +1 -1
  41. package/dist/cjs/server/oneServe.cjs +0 -6
  42. package/dist/cjs/server/oneServe.native.cjs +0 -6
  43. package/dist/cjs/server/oneServe.native.js +0 -6
  44. package/dist/cjs/server/oneServe.native.js.map +1 -1
  45. package/dist/cjs/server/workerHandler.cjs +12 -10
  46. package/dist/cjs/server/workerHandler.native.cjs +14 -10
  47. package/dist/cjs/server/workerHandler.native.js +14 -10
  48. package/dist/cjs/server/workerHandler.native.js.map +1 -1
  49. package/dist/cjs/vite/plugins/workerdDevPlugin.cjs +33 -37
  50. package/dist/cjs/vite/plugins/workerdDevPlugin.native.cjs +33 -37
  51. package/dist/cjs/vite/plugins/workerdDevPlugin.native.js +33 -37
  52. package/dist/cjs/vite/plugins/workerdDevPlugin.native.js.map +1 -1
  53. package/dist/esm/cli/build.mjs +31 -33
  54. package/dist/esm/cli/build.mjs.map +1 -1
  55. package/dist/esm/cli/build.native.js +31 -33
  56. package/dist/esm/cli/build.native.js.map +1 -1
  57. package/dist/esm/cli/buildPage.mjs +11 -7
  58. package/dist/esm/cli/buildPage.mjs.map +1 -1
  59. package/dist/esm/cli/buildPage.native.js +11 -7
  60. package/dist/esm/cli/buildPage.native.js.map +1 -1
  61. package/dist/esm/cli/buildPageWorker.mjs +1 -1
  62. package/dist/esm/cli/buildPageWorker.mjs.map +1 -1
  63. package/dist/esm/cli/buildPageWorker.native.js +1 -1
  64. package/dist/esm/cli/buildPageWorker.native.js.map +1 -1
  65. package/dist/esm/headless-server.mjs +2 -3
  66. package/dist/esm/headless-server.mjs.map +1 -1
  67. package/dist/esm/headless-server.native.js +2 -3
  68. package/dist/esm/headless-server.native.js.map +1 -1
  69. package/dist/esm/platform/audio/index.mjs +83 -76
  70. package/dist/esm/platform/audio/index.mjs.map +1 -1
  71. package/dist/esm/platform/audio/index.native.js +2 -2
  72. package/dist/esm/platform/audio/index.native.js.map +1 -1
  73. package/dist/esm/platform/audio/nowPlaying.mjs +102 -0
  74. package/dist/esm/platform/audio/nowPlaying.mjs.map +1 -0
  75. package/dist/esm/platform/audio/nowPlaying.native.js +134 -0
  76. package/dist/esm/platform/audio/nowPlaying.native.js.map +1 -0
  77. package/dist/esm/platform/audio/player.mjs +15 -0
  78. package/dist/esm/platform/audio/player.mjs.map +1 -1
  79. package/dist/esm/platform/audio/player.native.js +14 -0
  80. package/dist/esm/platform/audio/player.native.js.map +1 -1
  81. package/dist/esm/platform/audio/unavailable.mjs +1 -1
  82. package/dist/esm/platform/audio/unavailable.mjs.map +1 -1
  83. package/dist/esm/platform/audio/unavailable.native.js +1 -1
  84. package/dist/esm/platform/audio/unavailable.native.js.map +1 -1
  85. package/dist/esm/platform/location/index.native.js +9 -2
  86. package/dist/esm/platform/location/index.native.js.map +1 -1
  87. package/dist/esm/serve-worker.mjs +1 -2
  88. package/dist/esm/serve-worker.mjs.map +1 -1
  89. package/dist/esm/serve-worker.native.js +1 -2
  90. package/dist/esm/serve-worker.native.js.map +1 -1
  91. package/dist/esm/server/oneServe.mjs +0 -6
  92. package/dist/esm/server/oneServe.mjs.map +1 -1
  93. package/dist/esm/server/oneServe.native.js +0 -6
  94. package/dist/esm/server/oneServe.native.js.map +1 -1
  95. package/dist/esm/server/workerHandler.mjs +12 -10
  96. package/dist/esm/server/workerHandler.mjs.map +1 -1
  97. package/dist/esm/server/workerHandler.native.js +14 -10
  98. package/dist/esm/server/workerHandler.native.js.map +1 -1
  99. package/dist/esm/vite/plugins/workerdDevPlugin.mjs +33 -37
  100. package/dist/esm/vite/plugins/workerdDevPlugin.mjs.map +1 -1
  101. package/dist/esm/vite/plugins/workerdDevPlugin.native.js +33 -37
  102. package/dist/esm/vite/plugins/workerdDevPlugin.native.js.map +1 -1
  103. package/ios/Nitro/HybridOneAudio.swift +309 -96
  104. package/nitrogen/generated/android/c++/JAudioPlayOptions.hpp +61 -0
  105. package/nitrogen/generated/android/c++/JAudioRemoteCommandEvent.hpp +8 -3
  106. package/nitrogen/generated/android/c++/JFunc_void_AudioRemoteCommandEvent.hpp +1 -0
  107. package/nitrogen/generated/android/c++/JHybridOneAudioSpec.cpp +37 -3
  108. package/nitrogen/generated/android/c++/JHybridOneAudioSpec.hpp +3 -1
  109. package/nitrogen/generated/android/kotlin/com/margelo/nitro/one/AudioPlayOptions.kt +56 -0
  110. package/nitrogen/generated/android/kotlin/com/margelo/nitro/one/AudioRemoteCommandEvent.kt +9 -4
  111. package/nitrogen/generated/android/kotlin/com/margelo/nitro/one/HybridOneAudioSpec.kt +40 -32
  112. package/nitrogen/generated/ios/One-Swift-Cxx-Umbrella.hpp +3 -0
  113. package/nitrogen/generated/ios/c++/HybridOneAudioSpecSwift.hpp +21 -2
  114. package/nitrogen/generated/ios/swift/AudioPlayOptions.swift +60 -0
  115. package/nitrogen/generated/ios/swift/AudioRemoteCommandEvent.swift +19 -1
  116. package/nitrogen/generated/ios/swift/HybridOneAudioSpec.swift +3 -1
  117. package/nitrogen/generated/ios/swift/HybridOneAudioSpec_cxx.swift +70 -32
  118. package/nitrogen/generated/shared/c++/AudioPlayOptions.hpp +87 -0
  119. package/nitrogen/generated/shared/c++/AudioRemoteCommandEvent.hpp +7 -2
  120. package/nitrogen/generated/shared/c++/HybridOneAudioSpec.cpp +2 -0
  121. package/nitrogen/generated/shared/c++/HybridOneAudioSpec.hpp +6 -1
  122. package/package.json +16 -16
  123. package/src/cli/build.ts +35 -32
  124. package/src/cli/buildPage.test.ts +152 -0
  125. package/src/cli/buildPage.ts +14 -9
  126. package/src/cli/buildPageWorker.ts +2 -1
  127. package/src/cli/workerPool.ts +1 -0
  128. package/src/headless-server.ts +2 -2
  129. package/src/index.ts +1 -0
  130. package/src/platform/audio/index.native.ts +4 -2
  131. package/src/platform/audio/index.ts +102 -74
  132. package/src/platform/audio/nowPlaying.ts +122 -0
  133. package/src/platform/audio/player.native.ts +17 -1
  134. package/src/platform/audio/player.ts +23 -1
  135. package/src/platform/audio/types.ts +6 -1
  136. package/src/platform/audio/unavailable.ts +3 -1
  137. package/src/platform/index.native.ts +1 -0
  138. package/src/platform/index.ts +1 -0
  139. package/src/platform/location/index.native.ts +14 -3
  140. package/src/platform/specs/OneAudio.nitro.ts +11 -1
  141. package/src/serve-worker.ts +2 -3
  142. package/src/server/oneServe.ts +0 -6
  143. package/src/server/workerHandler.ts +34 -18
  144. package/src/vite/plugins/workerdDevPlugin.ts +33 -37
  145. package/src/vite/resolveResponse.ts +2 -2
  146. package/types/cli/build.d.ts.map +1 -1
  147. package/types/cli/buildPage.d.ts +1 -1
  148. package/types/cli/buildPage.d.ts.map +1 -1
  149. package/types/cli/workerPool.d.ts +1 -0
  150. package/types/cli/workerPool.d.ts.map +1 -1
  151. package/types/headless-server.d.ts +3 -3
  152. package/types/headless-server.d.ts.map +1 -1
  153. package/types/index.d.ts +1 -1
  154. package/types/index.d.ts.map +1 -1
  155. package/types/platform/audio/index.d.ts +2 -2
  156. package/types/platform/audio/index.d.ts.map +1 -1
  157. package/types/platform/audio/index.native.d.ts +3 -3
  158. package/types/platform/audio/index.native.d.ts.map +1 -1
  159. package/types/platform/audio/nowPlaying.d.ts +12 -0
  160. package/types/platform/audio/nowPlaying.d.ts.map +1 -0
  161. package/types/platform/audio/player.d.ts +3 -1
  162. package/types/platform/audio/player.d.ts.map +1 -1
  163. package/types/platform/audio/player.native.d.ts +3 -1
  164. package/types/platform/audio/player.native.d.ts.map +1 -1
  165. package/types/platform/audio/types.d.ts +3 -1
  166. package/types/platform/audio/types.d.ts.map +1 -1
  167. package/types/platform/audio/unavailable.d.ts +3 -3
  168. package/types/platform/audio/unavailable.d.ts.map +1 -1
  169. package/types/platform/index.d.ts +1 -1
  170. package/types/platform/index.d.ts.map +1 -1
  171. package/types/platform/index.native.d.ts +1 -1
  172. package/types/platform/index.native.d.ts.map +1 -1
  173. package/types/platform/location/index.native.d.ts.map +1 -1
  174. package/types/platform/specs/OneAudio.nitro.d.ts +8 -1
  175. package/types/platform/specs/OneAudio.nitro.d.ts.map +1 -1
  176. package/types/serve-worker.d.ts +3 -3
  177. package/types/serve-worker.d.ts.map +1 -1
  178. package/types/server/oneServe.d.ts.map +1 -1
  179. package/types/server/workerHandler.d.ts +1 -1
  180. package/types/server/workerHandler.d.ts.map +1 -1
  181. package/types/vite/plugins/workerdDevPlugin.d.ts.map +1 -1
  182. package/types/vite/resolveResponse.d.ts +1 -1
  183. package/types/vite/resolveResponse.d.ts.map +1 -1
  184. package/dist/cjs/server/staticHtmlFetcher.cjs +0 -33
  185. package/dist/cjs/server/staticHtmlFetcher.native.cjs +0 -35
  186. package/dist/cjs/server/staticHtmlFetcher.native.js +0 -37
  187. package/dist/cjs/server/staticHtmlFetcher.native.js.map +0 -1
  188. package/dist/esm/server/staticHtmlFetcher.mjs +0 -10
  189. package/dist/esm/server/staticHtmlFetcher.mjs.map +0 -1
  190. package/dist/esm/server/staticHtmlFetcher.native.js +0 -10
  191. package/dist/esm/server/staticHtmlFetcher.native.js.map +0 -1
  192. package/src/server/staticHtmlFetcher.ts +0 -12
  193. package/types/server/staticHtmlFetcher.d.ts +0 -3
  194. package/types/server/staticHtmlFetcher.d.ts.map +0 -1
@@ -34,8 +34,8 @@ var Audio = Object.freeze({
34
34
  requestRecordingPermission: function requestRecordingPermission() {
35
35
  return (0, import_hybrid.audioNative)().requestRecordingPermission().catch(import_nativeError.rethrowNativeError);
36
36
  },
37
- play: function play(uri) {
38
- return (0, import_hybrid.audioNative)().play(uri).catch(import_nativeError.rethrowNativeError);
37
+ play: function play(uri, options) {
38
+ return (0, import_hybrid.audioNative)().play(uri, options !== null && options !== void 0 ? options : {}).catch(import_nativeError.rethrowNativeError);
39
39
  },
40
40
  getPlaybackStatus: function getPlaybackStatus() {
41
41
  return (0, import_hybrid.audioNative)().getPlaybackStatus().catch(import_nativeError.rethrowNativeError);
@@ -1 +1 @@
1
- {"version":3,"file":"index.native.js","names":[],"sources":["cjs/platform/audio/index.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar index_native_exports = {};\n__export(index_native_exports, {\n Audio: () => Audio\n});\nmodule.exports = __toCommonJS(index_native_exports);\nvar import_validateCallback = require(\"../validateCallback\");\nvar import_nativeError = require(\"../nativeError\");\nvar import_hybrid = require(\"./hybrid.native\");\nvar import_player = require(\"./player.native\");\nvar Audio = Object.freeze({\n getRecordingPermissionStatus: function getRecordingPermissionStatus() {\n return (0, import_hybrid.audioNative)().getRecordingPermissionStatus().catch(import_nativeError.rethrowNativeError);\n },\n requestRecordingPermission: function requestRecordingPermission() {\n return (0, import_hybrid.audioNative)().requestRecordingPermission().catch(import_nativeError.rethrowNativeError);\n },\n play: function play(uri) {\n return (0, import_hybrid.audioNative)().play(uri).catch(import_nativeError.rethrowNativeError);\n },\n getPlaybackStatus: function getPlaybackStatus() {\n return (0, import_hybrid.audioNative)().getPlaybackStatus().catch(import_nativeError.rethrowNativeError);\n },\n pause: function pause() {\n return (0, import_hybrid.audioNative)().pause().catch(import_nativeError.rethrowNativeError);\n },\n resume: function resume() {\n return (0, import_hybrid.audioNative)().resume().catch(import_nativeError.rethrowNativeError);\n },\n seek: function seek(positionMs) {\n return (0, import_hybrid.audioNative)().seek(positionMs).catch(import_nativeError.rethrowNativeError);\n },\n stop: function stop() {\n return (0, import_hybrid.audioNative)().stop().catch(import_nativeError.rethrowNativeError);\n },\n startRecording: function startRecording() {\n return (0, import_hybrid.audioNative)().startRecording().catch(import_nativeError.rethrowNativeError);\n },\n getRecordingStatus: function getRecordingStatus() {\n return (0, import_hybrid.audioNative)().getRecordingStatus().catch(import_nativeError.rethrowNativeError);\n },\n pauseRecording: function pauseRecording() {\n return (0, import_hybrid.audioNative)().pauseRecording().catch(import_nativeError.rethrowNativeError);\n },\n resumeRecording: function resumeRecording() {\n return (0, import_hybrid.audioNative)().resumeRecording().catch(import_nativeError.rethrowNativeError);\n },\n stopRecording: function stopRecording() {\n return (0, import_hybrid.audioNative)().stopRecording().catch(import_nativeError.rethrowNativeError);\n },\n watchInterruptions: function watchInterruptions(onEvent) {\n (0, import_validateCallback.validateCallback)(onEvent, \"Audio.watchInterruptions: onEvent must be a function\");\n return (0, import_hybrid.audioNative)().addInterruptionListener(onEvent);\n },\n setNowPlayingInfo: function setNowPlayingInfo(info) {\n return (0, import_hybrid.audioNative)().setNowPlayingInfo(info).catch(import_nativeError.rethrowNativeError);\n },\n clearNowPlayingInfo: function clearNowPlayingInfo() {\n return (0, import_hybrid.audioNative)().clearNowPlayingInfo().catch(import_nativeError.rethrowNativeError);\n },\n watchRemoteCommands: function watchRemoteCommands(onEvent) {\n (0, import_validateCallback.validateCallback)(onEvent, \"Audio.watchRemoteCommands: onEvent must be a function\");\n return (0, import_hybrid.audioNative)().addRemoteCommandListener(onEvent);\n },\n AudioPlayer: import_player.AudioPlayer,\n createPlayer: import_player.createPlayer\n});\n//# sourceMappingURL=index.native.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.native.js","names":[],"sources":["cjs/platform/audio/index.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar index_native_exports = {};\n__export(index_native_exports, {\n Audio: () => Audio\n});\nmodule.exports = __toCommonJS(index_native_exports);\nvar import_validateCallback = require(\"../validateCallback\");\nvar import_nativeError = require(\"../nativeError\");\nvar import_hybrid = require(\"./hybrid.native\");\nvar import_player = require(\"./player.native\");\nvar Audio = Object.freeze({\n getRecordingPermissionStatus: function getRecordingPermissionStatus() {\n return (0, import_hybrid.audioNative)().getRecordingPermissionStatus().catch(import_nativeError.rethrowNativeError);\n },\n requestRecordingPermission: function requestRecordingPermission() {\n return (0, import_hybrid.audioNative)().requestRecordingPermission().catch(import_nativeError.rethrowNativeError);\n },\n play: function play(uri, options) {\n return (0, import_hybrid.audioNative)().play(uri, options !== null && options !== void 0 ? options : {}).catch(import_nativeError.rethrowNativeError);\n },\n getPlaybackStatus: function getPlaybackStatus() {\n return (0, import_hybrid.audioNative)().getPlaybackStatus().catch(import_nativeError.rethrowNativeError);\n },\n pause: function pause() {\n return (0, import_hybrid.audioNative)().pause().catch(import_nativeError.rethrowNativeError);\n },\n resume: function resume() {\n return (0, import_hybrid.audioNative)().resume().catch(import_nativeError.rethrowNativeError);\n },\n seek: function seek(positionMs) {\n return (0, import_hybrid.audioNative)().seek(positionMs).catch(import_nativeError.rethrowNativeError);\n },\n stop: function stop() {\n return (0, import_hybrid.audioNative)().stop().catch(import_nativeError.rethrowNativeError);\n },\n startRecording: function startRecording() {\n return (0, import_hybrid.audioNative)().startRecording().catch(import_nativeError.rethrowNativeError);\n },\n getRecordingStatus: function getRecordingStatus() {\n return (0, import_hybrid.audioNative)().getRecordingStatus().catch(import_nativeError.rethrowNativeError);\n },\n pauseRecording: function pauseRecording() {\n return (0, import_hybrid.audioNative)().pauseRecording().catch(import_nativeError.rethrowNativeError);\n },\n resumeRecording: function resumeRecording() {\n return (0, import_hybrid.audioNative)().resumeRecording().catch(import_nativeError.rethrowNativeError);\n },\n stopRecording: function stopRecording() {\n return (0, import_hybrid.audioNative)().stopRecording().catch(import_nativeError.rethrowNativeError);\n },\n watchInterruptions: function watchInterruptions(onEvent) {\n (0, import_validateCallback.validateCallback)(onEvent, \"Audio.watchInterruptions: onEvent must be a function\");\n return (0, import_hybrid.audioNative)().addInterruptionListener(onEvent);\n },\n setNowPlayingInfo: function setNowPlayingInfo(info) {\n return (0, import_hybrid.audioNative)().setNowPlayingInfo(info).catch(import_nativeError.rethrowNativeError);\n },\n clearNowPlayingInfo: function clearNowPlayingInfo() {\n return (0, import_hybrid.audioNative)().clearNowPlayingInfo().catch(import_nativeError.rethrowNativeError);\n },\n watchRemoteCommands: function watchRemoteCommands(onEvent) {\n (0, import_validateCallback.validateCallback)(onEvent, \"Audio.watchRemoteCommands: onEvent must be a function\");\n return (0, import_hybrid.audioNative)().addRemoteCommandListener(onEvent);\n },\n AudioPlayer: import_player.AudioPlayer,\n createPlayer: import_player.createPlayer\n});\n//# sourceMappingURL=index.native.js.map\n"],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
+ var nowPlaying_exports = {};
22
+ __export(nowPlaying_exports, {
23
+ addRemoteListener: () => addRemoteListener,
24
+ claimNowPlaying: () => claimNowPlaying,
25
+ releaseNowPlaying: () => releaseNowPlaying
26
+ });
27
+ module.exports = __toCommonJS(nowPlaying_exports);
28
+ const listeners = /* @__PURE__ */ new Set();
29
+ const syncEvents = [
30
+ "play",
31
+ "pause",
32
+ "ended"
33
+ ];
34
+ let owner;
35
+ let claim = 0;
36
+ let pendingKey;
37
+ let installed = false;
38
+ function sync() {
39
+ if (!owner || !navigator.mediaSession?.metadata) return;
40
+ navigator.mediaSession.playbackState = owner.element.paused || owner.element.ended ? "paused" : "playing";
41
+ }
42
+ function setOwner(next) {
43
+ if (owner?.element !== next?.element) {
44
+ for (const event of syncEvents) {
45
+ owner?.element.removeEventListener(event, sync);
46
+ next?.element.addEventListener(event, sync);
47
+ }
48
+ }
49
+ owner = next;
50
+ }
51
+ async function remote(event) {
52
+ const current = owner;
53
+ if (!current || !navigator.mediaSession?.metadata) return;
54
+ try {
55
+ if (event.type === "play") await current.play();
56
+ else if (event.type === "pause") await current.pause();
57
+ else await current.seek(event.positionMs);
58
+ } catch {
59
+ return;
60
+ }
61
+ if (owner !== current) return;
62
+ sync();
63
+ const emitted = current.key === "global" ? event : {
64
+ ...event,
65
+ playerId: current.key
66
+ };
67
+ for (const listener of [...listeners]) listener(emitted);
68
+ }
69
+ function install(session) {
70
+ if (installed) return;
71
+ session.setActionHandler("play", () => remote({ type: "play" }));
72
+ session.setActionHandler("pause", () => remote({ type: "pause" }));
73
+ session.setActionHandler("seekto", (event) => remote({
74
+ type: "seek",
75
+ positionMs: (event.seekTime ?? 0) * 1e3
76
+ }));
77
+ installed = true;
78
+ }
79
+ async function claimNowPlaying(next, info, verb, alive) {
80
+ if (!info.title.trim()) throw new Error(`${verb}: title must not be empty`);
81
+ if (!navigator.mediaSession) throw new Error("Audio: Media Session is unavailable");
82
+ const ticket = ++claim;
83
+ pendingKey = next.key;
84
+ if (info.artworkUri) {
85
+ const artwork = new window.Image();
86
+ artwork.src = info.artworkUri;
87
+ await artwork.decode();
88
+ if (!alive()) throw new Error(`${verb}: playback was replaced`);
89
+ if (ticket !== claim) throw new Error(`${verb}: now playing was claimed or cleared again`);
90
+ }
91
+ if (pendingKey === next.key) pendingKey = void 0;
92
+ const session = navigator.mediaSession;
93
+ setOwner(next);
94
+ session.metadata = new MediaMetadata({
95
+ title: info.title,
96
+ artist: info.artist,
97
+ album: info.albumTitle,
98
+ artwork: info.artworkUri ? [{ src: info.artworkUri }] : []
99
+ });
100
+ install(session);
101
+ sync();
102
+ }
103
+ function releaseNowPlaying(key) {
104
+ if (pendingKey === key) {
105
+ claim++;
106
+ pendingKey = void 0;
107
+ }
108
+ if (owner?.key !== key) return;
109
+ setOwner(void 0);
110
+ if (typeof window === "undefined" || !navigator.mediaSession) return;
111
+ const session = navigator.mediaSession;
112
+ if (installed) for (const action of [
113
+ "play",
114
+ "pause",
115
+ "seekto"
116
+ ]) session.setActionHandler(action, null);
117
+ installed = false;
118
+ session.metadata = null;
119
+ session.playbackState = "none";
120
+ }
121
+ function addRemoteListener(onEvent) {
122
+ listeners.add(onEvent);
123
+ return () => {
124
+ listeners.delete(onEvent);
125
+ };
126
+ }
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
23
+ var nowPlaying_exports = {};
24
+ __export(nowPlaying_exports, {
25
+ addRemoteListener: () => addRemoteListener,
26
+ claimNowPlaying: () => claimNowPlaying,
27
+ releaseNowPlaying: () => releaseNowPlaying
28
+ });
29
+ module.exports = __toCommonJS(nowPlaying_exports);
30
+ var listeners = /* @__PURE__ */ new Set();
31
+ var syncEvents = [
32
+ "play",
33
+ "pause",
34
+ "ended"
35
+ ];
36
+ var owner;
37
+ var claim = 0;
38
+ var pendingKey;
39
+ var installed = false;
40
+ function sync() {
41
+ var _navigator_mediaSession;
42
+ if (!owner || !((_navigator_mediaSession = navigator.mediaSession) === null || _navigator_mediaSession === void 0 ? void 0 : _navigator_mediaSession.metadata)) return;
43
+ navigator.mediaSession.playbackState = owner.element.paused || owner.element.ended ? "paused" : "playing";
44
+ }
45
+ function setOwner(next) {
46
+ if ((owner === null || owner === void 0 ? void 0 : owner.element) !== (next === null || next === void 0 ? void 0 : next.element)) {
47
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
48
+ try {
49
+ for (var _iterator = syncEvents[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
50
+ var event = _step.value;
51
+ owner === null || owner === void 0 ? void 0 : owner.element.removeEventListener(event, sync);
52
+ next === null || next === void 0 ? void 0 : next.element.addEventListener(event, sync);
53
+ }
54
+ } catch (err) {
55
+ _didIteratorError = true;
56
+ _iteratorError = err;
57
+ } finally {
58
+ try {
59
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
60
+ _iterator.return();
61
+ }
62
+ } finally {
63
+ if (_didIteratorError) {
64
+ throw _iteratorError;
65
+ }
66
+ }
67
+ }
68
+ }
69
+ owner = next;
70
+ }
71
+ async function remote(event) {
72
+ var _navigator_mediaSession;
73
+ var current = owner;
74
+ if (!current || !((_navigator_mediaSession = navigator.mediaSession) === null || _navigator_mediaSession === void 0 ? void 0 : _navigator_mediaSession.metadata)) return;
75
+ try {
76
+ if (event.type === "play") await current.play();
77
+ else if (event.type === "pause") await current.pause();
78
+ else await current.seek(event.positionMs);
79
+ } catch (unused) {
80
+ return;
81
+ }
82
+ if (owner !== current) return;
83
+ sync();
84
+ var emitted = current.key === "global" ? event : {
85
+ ...event,
86
+ playerId: current.key
87
+ };
88
+ for (var _i = 0, _iter = [...listeners]; _i < _iter.length; _i++) {
89
+ var listener = _iter[_i];
90
+ listener(emitted);
91
+ }
92
+ }
93
+ function install(session) {
94
+ if (installed) return;
95
+ session.setActionHandler("play", function() {
96
+ return remote({ type: "play" });
97
+ });
98
+ session.setActionHandler("pause", function() {
99
+ return remote({ type: "pause" });
100
+ });
101
+ session.setActionHandler("seekto", function(event) {
102
+ var _event_seekTime;
103
+ return remote({
104
+ type: "seek",
105
+ positionMs: ((_event_seekTime = event.seekTime) !== null && _event_seekTime !== void 0 ? _event_seekTime : 0) * 1e3
106
+ });
107
+ });
108
+ installed = true;
109
+ }
110
+ async function claimNowPlaying(next, info, verb, alive) {
111
+ if (!info.title.trim()) throw new Error(`${verb}: title must not be empty`);
112
+ if (!navigator.mediaSession) throw new Error("Audio: Media Session is unavailable");
113
+ var ticket = ++claim;
114
+ pendingKey = next.key;
115
+ if (info.artworkUri) {
116
+ var artwork = new window.Image();
117
+ artwork.src = info.artworkUri;
118
+ await artwork.decode();
119
+ if (!alive()) throw new Error(`${verb}: playback was replaced`);
120
+ if (ticket !== claim) throw new Error(`${verb}: now playing was claimed or cleared again`);
121
+ }
122
+ if (pendingKey === next.key) pendingKey = void 0;
123
+ var session = navigator.mediaSession;
124
+ setOwner(next);
125
+ session.metadata = new MediaMetadata({
126
+ title: info.title,
127
+ artist: info.artist,
128
+ album: info.albumTitle,
129
+ artwork: info.artworkUri ? [{ src: info.artworkUri }] : []
130
+ });
131
+ install(session);
132
+ sync();
133
+ }
134
+ function releaseNowPlaying(key) {
135
+ if (pendingKey === key) {
136
+ claim++;
137
+ pendingKey = void 0;
138
+ }
139
+ if ((owner === null || owner === void 0 ? void 0 : owner.key) !== key) return;
140
+ setOwner(void 0);
141
+ if (typeof window === "undefined" || !navigator.mediaSession) return;
142
+ var session = navigator.mediaSession;
143
+ if (installed) for (var _i = 0, _iter = [
144
+ "play",
145
+ "pause",
146
+ "seekto"
147
+ ]; _i < _iter.length; _i++) {
148
+ var action = _iter[_i];
149
+ session.setActionHandler(action, null);
150
+ }
151
+ installed = false;
152
+ session.metadata = null;
153
+ session.playbackState = "none";
154
+ }
155
+ function addRemoteListener(onEvent) {
156
+ listeners.add(onEvent);
157
+ return function() {
158
+ listeners.delete(onEvent);
159
+ };
160
+ }
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
23
+ var nowPlaying_exports = {};
24
+ __export(nowPlaying_exports, {
25
+ addRemoteListener: () => addRemoteListener,
26
+ claimNowPlaying: () => claimNowPlaying,
27
+ releaseNowPlaying: () => releaseNowPlaying
28
+ });
29
+ module.exports = __toCommonJS(nowPlaying_exports);
30
+ var listeners = /* @__PURE__ */ new Set();
31
+ var syncEvents = [
32
+ "play",
33
+ "pause",
34
+ "ended"
35
+ ];
36
+ var owner;
37
+ var claim = 0;
38
+ var pendingKey;
39
+ var installed = false;
40
+ function sync() {
41
+ var _navigator_mediaSession;
42
+ if (!owner || !((_navigator_mediaSession = navigator.mediaSession) === null || _navigator_mediaSession === void 0 ? void 0 : _navigator_mediaSession.metadata)) return;
43
+ navigator.mediaSession.playbackState = owner.element.paused || owner.element.ended ? "paused" : "playing";
44
+ }
45
+ function setOwner(next) {
46
+ if ((owner === null || owner === void 0 ? void 0 : owner.element) !== (next === null || next === void 0 ? void 0 : next.element)) {
47
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
48
+ try {
49
+ for (var _iterator = syncEvents[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
50
+ var event = _step.value;
51
+ owner === null || owner === void 0 ? void 0 : owner.element.removeEventListener(event, sync);
52
+ next === null || next === void 0 ? void 0 : next.element.addEventListener(event, sync);
53
+ }
54
+ } catch (err) {
55
+ _didIteratorError = true;
56
+ _iteratorError = err;
57
+ } finally {
58
+ try {
59
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
60
+ _iterator.return();
61
+ }
62
+ } finally {
63
+ if (_didIteratorError) {
64
+ throw _iteratorError;
65
+ }
66
+ }
67
+ }
68
+ }
69
+ owner = next;
70
+ }
71
+ async function remote(event) {
72
+ var _navigator_mediaSession;
73
+ var current = owner;
74
+ if (!current || !((_navigator_mediaSession = navigator.mediaSession) === null || _navigator_mediaSession === void 0 ? void 0 : _navigator_mediaSession.metadata)) return;
75
+ try {
76
+ if (event.type === "play") await current.play();
77
+ else if (event.type === "pause") await current.pause();
78
+ else await current.seek(event.positionMs);
79
+ } catch (unused) {
80
+ return;
81
+ }
82
+ if (owner !== current) return;
83
+ sync();
84
+ var emitted = current.key === "global" ? event : {
85
+ ...event,
86
+ playerId: current.key
87
+ };
88
+ for (var _i = 0, _iter = [...listeners]; _i < _iter.length; _i++) {
89
+ var listener = _iter[_i];
90
+ listener(emitted);
91
+ }
92
+ }
93
+ function install(session) {
94
+ if (installed) return;
95
+ session.setActionHandler("play", function() {
96
+ return remote({ type: "play" });
97
+ });
98
+ session.setActionHandler("pause", function() {
99
+ return remote({ type: "pause" });
100
+ });
101
+ session.setActionHandler("seekto", function(event) {
102
+ var _event_seekTime;
103
+ return remote({
104
+ type: "seek",
105
+ positionMs: ((_event_seekTime = event.seekTime) !== null && _event_seekTime !== void 0 ? _event_seekTime : 0) * 1e3
106
+ });
107
+ });
108
+ installed = true;
109
+ }
110
+ async function claimNowPlaying(next, info, verb, alive) {
111
+ if (!info.title.trim()) throw new Error(`${verb}: title must not be empty`);
112
+ if (!navigator.mediaSession) throw new Error("Audio: Media Session is unavailable");
113
+ var ticket = ++claim;
114
+ pendingKey = next.key;
115
+ if (info.artworkUri) {
116
+ var artwork = new window.Image();
117
+ artwork.src = info.artworkUri;
118
+ await artwork.decode();
119
+ if (!alive()) throw new Error(`${verb}: playback was replaced`);
120
+ if (ticket !== claim) throw new Error(`${verb}: now playing was claimed or cleared again`);
121
+ }
122
+ if (pendingKey === next.key) pendingKey = void 0;
123
+ var session = navigator.mediaSession;
124
+ setOwner(next);
125
+ session.metadata = new MediaMetadata({
126
+ title: info.title,
127
+ artist: info.artist,
128
+ album: info.albumTitle,
129
+ artwork: info.artworkUri ? [{ src: info.artworkUri }] : []
130
+ });
131
+ install(session);
132
+ sync();
133
+ }
134
+ function releaseNowPlaying(key) {
135
+ if (pendingKey === key) {
136
+ claim++;
137
+ pendingKey = void 0;
138
+ }
139
+ if ((owner === null || owner === void 0 ? void 0 : owner.key) !== key) return;
140
+ setOwner(void 0);
141
+ if (typeof window === "undefined" || !navigator.mediaSession) return;
142
+ var session = navigator.mediaSession;
143
+ if (installed) for (var _i = 0, _iter = [
144
+ "play",
145
+ "pause",
146
+ "seekto"
147
+ ]; _i < _iter.length; _i++) {
148
+ var action = _iter[_i];
149
+ session.setActionHandler(action, null);
150
+ }
151
+ installed = false;
152
+ session.metadata = null;
153
+ session.playbackState = "none";
154
+ }
155
+ function addRemoteListener(onEvent) {
156
+ listeners.add(onEvent);
157
+ return function() {
158
+ listeners.delete(onEvent);
159
+ };
160
+ }
161
+
162
+ //# sourceMappingURL=nowPlaying.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nowPlaying.native.js","names":[],"sources":["cjs/platform/audio/nowPlaying.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar nowPlaying_exports = {};\n__export(nowPlaying_exports, {\n addRemoteListener: () => addRemoteListener,\n claimNowPlaying: () => claimNowPlaying,\n releaseNowPlaying: () => releaseNowPlaying\n});\nmodule.exports = __toCommonJS(nowPlaying_exports);\nvar listeners = /* @__PURE__ */ new Set();\nvar syncEvents = [\n \"play\",\n \"pause\",\n \"ended\"\n];\nvar owner;\nvar claim = 0;\nvar pendingKey;\nvar installed = false;\nfunction sync() {\n var _navigator_mediaSession;\n if (!owner || !((_navigator_mediaSession = navigator.mediaSession) === null || _navigator_mediaSession === void 0 ? void 0 : _navigator_mediaSession.metadata)) return;\n navigator.mediaSession.playbackState = owner.element.paused || owner.element.ended ? \"paused\" : \"playing\";\n}\nfunction setOwner(next) {\n if ((owner === null || owner === void 0 ? void 0 : owner.element) !== (next === null || next === void 0 ? void 0 : next.element)) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = syncEvents[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var event = _step.value;\n owner === null || owner === void 0 ? void 0 : owner.element.removeEventListener(event, sync);\n next === null || next === void 0 ? void 0 : next.element.addEventListener(event, sync);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n owner = next;\n}\nasync function remote(event) {\n var _navigator_mediaSession;\n var current = owner;\n if (!current || !((_navigator_mediaSession = navigator.mediaSession) === null || _navigator_mediaSession === void 0 ? void 0 : _navigator_mediaSession.metadata)) return;\n try {\n if (event.type === \"play\") await current.play();\n else if (event.type === \"pause\") await current.pause();\n else await current.seek(event.positionMs);\n } catch (unused) {\n return;\n }\n if (owner !== current) return;\n sync();\n var emitted = current.key === \"global\" ? event : {\n ...event,\n playerId: current.key\n };\n for (var _i = 0, _iter = [\n ...listeners\n ]; _i < _iter.length; _i++) {\n var listener = _iter[_i];\n listener(emitted);\n }\n}\nfunction install(session) {\n if (installed) return;\n session.setActionHandler(\"play\", function() {\n return remote({\n type: \"play\"\n });\n });\n session.setActionHandler(\"pause\", function() {\n return remote({\n type: \"pause\"\n });\n });\n session.setActionHandler(\"seekto\", function(event) {\n var _event_seekTime;\n return remote({\n type: \"seek\",\n positionMs: ((_event_seekTime = event.seekTime) !== null && _event_seekTime !== void 0 ? _event_seekTime : 0) * 1e3\n });\n });\n installed = true;\n}\nasync function claimNowPlaying(next, info, verb, alive) {\n if (!info.title.trim()) throw new Error(`${verb}: title must not be empty`);\n if (!navigator.mediaSession) throw new Error(\"Audio: Media Session is unavailable\");\n var ticket = ++claim;\n pendingKey = next.key;\n if (info.artworkUri) {\n var artwork = new window.Image();\n artwork.src = info.artworkUri;\n await artwork.decode();\n if (!alive()) throw new Error(`${verb}: playback was replaced`);\n if (ticket !== claim) throw new Error(`${verb}: now playing was claimed or cleared again`);\n }\n if (pendingKey === next.key) pendingKey = void 0;\n var session = navigator.mediaSession;\n setOwner(next);\n session.metadata = new MediaMetadata({\n title: info.title,\n artist: info.artist,\n album: info.albumTitle,\n artwork: info.artworkUri ? [\n {\n src: info.artworkUri\n }\n ] : []\n });\n install(session);\n sync();\n}\nfunction releaseNowPlaying(key) {\n if (pendingKey === key) {\n claim++;\n pendingKey = void 0;\n }\n if ((owner === null || owner === void 0 ? void 0 : owner.key) !== key) return;\n setOwner(void 0);\n if (typeof window === \"undefined\" || !navigator.mediaSession) return;\n var session = navigator.mediaSession;\n if (installed) for (var _i = 0, _iter = [\n \"play\",\n \"pause\",\n \"seekto\"\n ]; _i < _iter.length; _i++) {\n var action = _iter[_i];\n session.setActionHandler(action, null);\n }\n installed = false;\n session.metadata = null;\n session.playbackState = \"none\";\n}\nfunction addRemoteListener(onEvent) {\n listeners.add(onEvent);\n return function() {\n listeners.delete(onEvent);\n };\n}\n//# sourceMappingURL=nowPlaying.js.map\n"],"mappings":"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"}
@@ -25,6 +25,7 @@ __export(player_exports, {
25
25
  });
26
26
  module.exports = __toCommonJS(player_exports);
27
27
  var import_events = require("./events.cjs");
28
+ var import_nowPlaying = require("./nowPlaying.cjs");
28
29
  var import_validate = require("./validate.cjs");
29
30
  var AudioPlayer = class {
30
31
  element;
@@ -168,9 +169,23 @@ var AudioPlayer = class {
168
169
  }
169
170
  this.element.load();
170
171
  }
172
+ setNowPlayingInfo(info) {
173
+ this.assertUsable("setNowPlayingInfo");
174
+ return (0, import_nowPlaying.claimNowPlaying)({
175
+ key: this.playerId,
176
+ element: this.element,
177
+ play: async () => this.play(),
178
+ pause: async () => this.pause(),
179
+ seek: (positionMs) => this.seekTo(positionMs / 1e3)
180
+ }, info, "AudioPlayer.setNowPlayingInfo", () => !this.removed);
181
+ }
182
+ async clearNowPlayingInfo() {
183
+ (0, import_nowPlaying.releaseNowPlaying)(this.playerId);
184
+ }
171
185
  remove() {
172
186
  if (this.removed) return;
173
187
  this.removed = true;
188
+ (0, import_nowPlaying.releaseNowPlaying)(this.playerId);
174
189
  this.events.removeAll();
175
190
  this.element.pause();
176
191
  this.element.removeAttribute("src");
@@ -237,6 +237,20 @@ var AudioPlayer = /* @__PURE__ */ (function() {
237
237
  });
238
238
  }
239
239
  },
240
+ {
241
+ key: "setNowPlayingInfo",
242
+ value: function setNowPlayingInfo(info) {
243
+ this.assertUsable("setNowPlayingInfo");
244
+ return native().setPlayerNowPlayingInfo(this.playerId, info).catch(import_nativeError.rethrowNativeError);
245
+ }
246
+ },
247
+ {
248
+ key: "clearNowPlayingInfo",
249
+ value: function clearNowPlayingInfo() {
250
+ if (this.removed) return Promise.resolve();
251
+ return native().clearPlayerNowPlayingInfo(this.playerId).catch(import_nativeError.rethrowNativeError);
252
+ }
253
+ },
240
254
  {
241
255
  key: "remove",
242
256
  value: function remove() {
@@ -237,6 +237,20 @@ var AudioPlayer = /* @__PURE__ */ (function() {
237
237
  });
238
238
  }
239
239
  },
240
+ {
241
+ key: "setNowPlayingInfo",
242
+ value: function setNowPlayingInfo(info) {
243
+ this.assertUsable("setNowPlayingInfo");
244
+ return native().setPlayerNowPlayingInfo(this.playerId, info).catch(import_nativeError.rethrowNativeError);
245
+ }
246
+ },
247
+ {
248
+ key: "clearNowPlayingInfo",
249
+ value: function clearNowPlayingInfo() {
250
+ if (this.removed) return Promise.resolve();
251
+ return native().clearPlayerNowPlayingInfo(this.playerId).catch(import_nativeError.rethrowNativeError);
252
+ }
253
+ },
240
254
  {
241
255
  key: "remove",
242
256
  value: function remove() {