@capgo/native-audio 4.0.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 (37) hide show
  1. package/CapgoNativeAudio.podspec +16 -0
  2. package/LICENSE +21 -0
  3. package/README.md +394 -0
  4. package/android/build.gradle +55 -0
  5. package/android/src/main/AndroidManifest.xml +5 -0
  6. package/android/src/main/java/ee/forgr/audio/AudioAsset.java +140 -0
  7. package/android/src/main/java/ee/forgr/audio/AudioDispatcher.java +178 -0
  8. package/android/src/main/java/ee/forgr/audio/Constant.java +18 -0
  9. package/android/src/main/java/ee/forgr/audio/NativeAudio.java +471 -0
  10. package/android/src/main/res/layout/bridge_layout_main.xml +15 -0
  11. package/android/src/main/res/values/colors.xml +3 -0
  12. package/android/src/main/res/values/strings.xml +3 -0
  13. package/android/src/main/res/values/styles.xml +3 -0
  14. package/dist/docs.json +279 -0
  15. package/dist/esm/audio-asset.d.ts +4 -0
  16. package/dist/esm/audio-asset.js +6 -0
  17. package/dist/esm/audio-asset.js.map +1 -0
  18. package/dist/esm/definitions.d.ts +53 -0
  19. package/dist/esm/definitions.js +2 -0
  20. package/dist/esm/definitions.js.map +1 -0
  21. package/dist/esm/index.d.ts +4 -0
  22. package/dist/esm/index.js +7 -0
  23. package/dist/esm/index.js.map +1 -0
  24. package/dist/esm/web.d.ts +52 -0
  25. package/dist/esm/web.js +113 -0
  26. package/dist/esm/web.js.map +1 -0
  27. package/dist/plugin.cjs.js +134 -0
  28. package/dist/plugin.cjs.js.map +1 -0
  29. package/dist/plugin.js +137 -0
  30. package/dist/plugin.js.map +1 -0
  31. package/ios/Plugin/AudioAsset.swift +184 -0
  32. package/ios/Plugin/Constant.swift +20 -0
  33. package/ios/Plugin/Info.plist +24 -0
  34. package/ios/Plugin/Plugin.h +10 -0
  35. package/ios/Plugin/Plugin.m +19 -0
  36. package/ios/Plugin/Plugin.swift +276 -0
  37. package/package.json +91 -0
package/dist/docs.json ADDED
@@ -0,0 +1,279 @@
1
+ {
2
+ "api": {
3
+ "name": "NativeAudio",
4
+ "slug": "nativeaudio",
5
+ "docs": "",
6
+ "tags": [],
7
+ "methods": [
8
+ {
9
+ "name": "configure",
10
+ "signature": "(options: ConfigureOptions) => Promise<void>",
11
+ "parameters": [
12
+ {
13
+ "name": "options",
14
+ "docs": "",
15
+ "type": "ConfigureOptions"
16
+ }
17
+ ],
18
+ "returns": "Promise<void>",
19
+ "tags": [],
20
+ "docs": "",
21
+ "complexTypes": [
22
+ "ConfigureOptions"
23
+ ],
24
+ "slug": "configure"
25
+ },
26
+ {
27
+ "name": "preload",
28
+ "signature": "(options: PreloadOptions) => Promise<void>",
29
+ "parameters": [
30
+ {
31
+ "name": "options",
32
+ "docs": "",
33
+ "type": "PreloadOptions"
34
+ }
35
+ ],
36
+ "returns": "Promise<void>",
37
+ "tags": [],
38
+ "docs": "",
39
+ "complexTypes": [
40
+ "PreloadOptions"
41
+ ],
42
+ "slug": "preload"
43
+ },
44
+ {
45
+ "name": "play",
46
+ "signature": "(options: { assetId: string; time: number; }) => Promise<void>",
47
+ "parameters": [
48
+ {
49
+ "name": "options",
50
+ "docs": "",
51
+ "type": "{ assetId: string; time: number; }"
52
+ }
53
+ ],
54
+ "returns": "Promise<void>",
55
+ "tags": [],
56
+ "docs": "",
57
+ "complexTypes": [],
58
+ "slug": "play"
59
+ },
60
+ {
61
+ "name": "pause",
62
+ "signature": "(options: { assetId: string; }) => Promise<void>",
63
+ "parameters": [
64
+ {
65
+ "name": "options",
66
+ "docs": "",
67
+ "type": "{ assetId: string; }"
68
+ }
69
+ ],
70
+ "returns": "Promise<void>",
71
+ "tags": [],
72
+ "docs": "",
73
+ "complexTypes": [],
74
+ "slug": "pause"
75
+ },
76
+ {
77
+ "name": "resume",
78
+ "signature": "(options: { assetId: string; }) => Promise<void>",
79
+ "parameters": [
80
+ {
81
+ "name": "options",
82
+ "docs": "",
83
+ "type": "{ assetId: string; }"
84
+ }
85
+ ],
86
+ "returns": "Promise<void>",
87
+ "tags": [],
88
+ "docs": "",
89
+ "complexTypes": [],
90
+ "slug": "resume"
91
+ },
92
+ {
93
+ "name": "loop",
94
+ "signature": "(options: { assetId: string; }) => Promise<void>",
95
+ "parameters": [
96
+ {
97
+ "name": "options",
98
+ "docs": "",
99
+ "type": "{ assetId: string; }"
100
+ }
101
+ ],
102
+ "returns": "Promise<void>",
103
+ "tags": [],
104
+ "docs": "",
105
+ "complexTypes": [],
106
+ "slug": "loop"
107
+ },
108
+ {
109
+ "name": "stop",
110
+ "signature": "(options: { assetId: string; }) => Promise<void>",
111
+ "parameters": [
112
+ {
113
+ "name": "options",
114
+ "docs": "",
115
+ "type": "{ assetId: string; }"
116
+ }
117
+ ],
118
+ "returns": "Promise<void>",
119
+ "tags": [],
120
+ "docs": "",
121
+ "complexTypes": [],
122
+ "slug": "stop"
123
+ },
124
+ {
125
+ "name": "unload",
126
+ "signature": "(options: { assetId: string; }) => Promise<void>",
127
+ "parameters": [
128
+ {
129
+ "name": "options",
130
+ "docs": "",
131
+ "type": "{ assetId: string; }"
132
+ }
133
+ ],
134
+ "returns": "Promise<void>",
135
+ "tags": [],
136
+ "docs": "",
137
+ "complexTypes": [],
138
+ "slug": "unload"
139
+ },
140
+ {
141
+ "name": "setVolume",
142
+ "signature": "(options: { assetId: string; volume: number; }) => Promise<void>",
143
+ "parameters": [
144
+ {
145
+ "name": "options",
146
+ "docs": "",
147
+ "type": "{ assetId: string; volume: number; }"
148
+ }
149
+ ],
150
+ "returns": "Promise<void>",
151
+ "tags": [],
152
+ "docs": "",
153
+ "complexTypes": [],
154
+ "slug": "setvolume"
155
+ },
156
+ {
157
+ "name": "getCurrentTime",
158
+ "signature": "(options: { assetId: string; }) => Promise<{ currentTime: number; }>",
159
+ "parameters": [
160
+ {
161
+ "name": "options",
162
+ "docs": "",
163
+ "type": "{ assetId: string; }"
164
+ }
165
+ ],
166
+ "returns": "Promise<{ currentTime: number; }>",
167
+ "tags": [],
168
+ "docs": "",
169
+ "complexTypes": [],
170
+ "slug": "getcurrenttime"
171
+ },
172
+ {
173
+ "name": "getDuration",
174
+ "signature": "(options: { assetId: string; }) => Promise<{ duration: number; }>",
175
+ "parameters": [
176
+ {
177
+ "name": "options",
178
+ "docs": "",
179
+ "type": "{ assetId: string; }"
180
+ }
181
+ ],
182
+ "returns": "Promise<{ duration: number; }>",
183
+ "tags": [],
184
+ "docs": "",
185
+ "complexTypes": [],
186
+ "slug": "getduration"
187
+ },
188
+ {
189
+ "name": "isPlaying",
190
+ "signature": "(options: { assetId: string; }) => Promise<{ isPlaying: boolean; }>",
191
+ "parameters": [
192
+ {
193
+ "name": "options",
194
+ "docs": "",
195
+ "type": "{ assetId: string; }"
196
+ }
197
+ ],
198
+ "returns": "Promise<{ isPlaying: boolean; }>",
199
+ "tags": [],
200
+ "docs": "",
201
+ "complexTypes": [],
202
+ "slug": "isplaying"
203
+ }
204
+ ],
205
+ "properties": []
206
+ },
207
+ "interfaces": [
208
+ {
209
+ "name": "ConfigureOptions",
210
+ "slug": "configureoptions",
211
+ "docs": "",
212
+ "tags": [],
213
+ "methods": [],
214
+ "properties": [
215
+ {
216
+ "name": "fade",
217
+ "tags": [],
218
+ "docs": "",
219
+ "complexTypes": [],
220
+ "type": "boolean | undefined"
221
+ },
222
+ {
223
+ "name": "focus",
224
+ "tags": [],
225
+ "docs": "",
226
+ "complexTypes": [],
227
+ "type": "boolean | undefined"
228
+ }
229
+ ]
230
+ },
231
+ {
232
+ "name": "PreloadOptions",
233
+ "slug": "preloadoptions",
234
+ "docs": "",
235
+ "tags": [],
236
+ "methods": [],
237
+ "properties": [
238
+ {
239
+ "name": "assetPath",
240
+ "tags": [],
241
+ "docs": "",
242
+ "complexTypes": [],
243
+ "type": "string"
244
+ },
245
+ {
246
+ "name": "assetId",
247
+ "tags": [],
248
+ "docs": "",
249
+ "complexTypes": [],
250
+ "type": "string"
251
+ },
252
+ {
253
+ "name": "volume",
254
+ "tags": [],
255
+ "docs": "",
256
+ "complexTypes": [],
257
+ "type": "number | undefined"
258
+ },
259
+ {
260
+ "name": "audioChannelNum",
261
+ "tags": [],
262
+ "docs": "",
263
+ "complexTypes": [],
264
+ "type": "number | undefined"
265
+ },
266
+ {
267
+ "name": "isUrl",
268
+ "tags": [],
269
+ "docs": "",
270
+ "complexTypes": [],
271
+ "type": "boolean | undefined"
272
+ }
273
+ ]
274
+ }
275
+ ],
276
+ "enums": [],
277
+ "typeAliases": [],
278
+ "pluginConfigs": []
279
+ }
@@ -0,0 +1,4 @@
1
+ export declare class AudioAsset {
2
+ readonly audio: HTMLAudioElement;
3
+ constructor(audio: HTMLAudioElement);
4
+ }
@@ -0,0 +1,6 @@
1
+ export class AudioAsset {
2
+ constructor(audio) {
3
+ this.audio = audio;
4
+ }
5
+ }
6
+ //# sourceMappingURL=audio-asset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-asset.js","sourceRoot":"","sources":["../../src/audio-asset.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAU;IAGrB,YAAY,KAAuB;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF"}
@@ -0,0 +1,53 @@
1
+ export interface NativeAudio {
2
+ configure(options: ConfigureOptions): Promise<void>;
3
+ preload(options: PreloadOptions): Promise<void>;
4
+ play(options: {
5
+ assetId: string;
6
+ time: number;
7
+ }): Promise<void>;
8
+ pause(options: {
9
+ assetId: string;
10
+ }): Promise<void>;
11
+ resume(options: {
12
+ assetId: string;
13
+ }): Promise<void>;
14
+ loop(options: {
15
+ assetId: string;
16
+ }): Promise<void>;
17
+ stop(options: {
18
+ assetId: string;
19
+ }): Promise<void>;
20
+ unload(options: {
21
+ assetId: string;
22
+ }): Promise<void>;
23
+ setVolume(options: {
24
+ assetId: string;
25
+ volume: number;
26
+ }): Promise<void>;
27
+ getCurrentTime(options: {
28
+ assetId: string;
29
+ }): Promise<{
30
+ currentTime: number;
31
+ }>;
32
+ getDuration(options: {
33
+ assetId: string;
34
+ }): Promise<{
35
+ duration: number;
36
+ }>;
37
+ isPlaying(options: {
38
+ assetId: string;
39
+ }): Promise<{
40
+ isPlaying: boolean;
41
+ }>;
42
+ }
43
+ export interface ConfigureOptions {
44
+ fade?: boolean;
45
+ focus?: boolean;
46
+ }
47
+ export interface PreloadOptions {
48
+ assetPath: string;
49
+ assetId: string;
50
+ volume?: number;
51
+ audioChannelNum?: number;
52
+ isUrl?: boolean;
53
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { NativeAudio } from './definitions';
2
+ declare const NativeAudio: NativeAudio;
3
+ export * from './definitions';
4
+ export { NativeAudio };
@@ -0,0 +1,7 @@
1
+ import { registerPlugin } from '@capacitor/core';
2
+ const NativeAudio = registerPlugin('NativeAudio', {
3
+ web: () => import('./web').then((m) => new m.NativeAudioWeb()),
4
+ });
5
+ export * from './definitions';
6
+ export { NativeAudio };
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIjD,MAAM,WAAW,GAAG,cAAc,CAAc,aAAa,EAAE;IAC7D,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;CAC/D,CAAC,CAAC;AAEH,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { WebPlugin } from '@capacitor/core';
2
+ import type { ConfigureOptions, PreloadOptions } from './definitions';
3
+ import { NativeAudio } from './definitions';
4
+ export declare class NativeAudioWeb extends WebPlugin implements NativeAudio {
5
+ private static readonly FILE_LOCATION;
6
+ private static readonly AUDIO_ASSET_BY_ASSET_ID;
7
+ constructor();
8
+ resume(options: {
9
+ assetId: string;
10
+ }): Promise<void>;
11
+ pause(options: {
12
+ assetId: string;
13
+ }): Promise<void>;
14
+ getCurrentTime(options: {
15
+ assetId: string;
16
+ }): Promise<{
17
+ currentTime: number;
18
+ }>;
19
+ getDuration(options: {
20
+ assetId: string;
21
+ }): Promise<{
22
+ duration: number;
23
+ }>;
24
+ configure(options: ConfigureOptions): Promise<void>;
25
+ preload(options: PreloadOptions): Promise<void>;
26
+ play(options: {
27
+ assetId: string;
28
+ time?: number;
29
+ }): Promise<void>;
30
+ loop(options: {
31
+ assetId: string;
32
+ }): Promise<void>;
33
+ stop(options: {
34
+ assetId: string;
35
+ }): Promise<void>;
36
+ unload(options: {
37
+ assetId: string;
38
+ }): Promise<void>;
39
+ setVolume(options: {
40
+ assetId: string;
41
+ volume: number;
42
+ }): Promise<void>;
43
+ isPlaying(options: {
44
+ assetId: string;
45
+ }): Promise<{
46
+ isPlaying: boolean;
47
+ }>;
48
+ private getAudioAsset;
49
+ private checkAssetId;
50
+ }
51
+ declare const NativeAudio: NativeAudioWeb;
52
+ export { NativeAudio };
@@ -0,0 +1,113 @@
1
+ import { WebPlugin } from '@capacitor/core';
2
+ import { AudioAsset } from './audio-asset';
3
+ export class NativeAudioWeb extends WebPlugin {
4
+ constructor() {
5
+ super({
6
+ name: 'NativeAudio',
7
+ platforms: ['web'],
8
+ });
9
+ }
10
+ async resume(options) {
11
+ const audio = this.getAudioAsset(options.assetId).audio;
12
+ if (audio.paused) {
13
+ return audio.play();
14
+ }
15
+ }
16
+ async pause(options) {
17
+ const audio = this.getAudioAsset(options.assetId).audio;
18
+ return audio.pause();
19
+ }
20
+ async getCurrentTime(options) {
21
+ const audio = this.getAudioAsset(options.assetId).audio;
22
+ return { currentTime: audio.currentTime };
23
+ }
24
+ async getDuration(options) {
25
+ const audio = this.getAudioAsset(options.assetId).audio;
26
+ if (Number.isNaN(audio.duration)) {
27
+ throw 'no duration available';
28
+ }
29
+ if (!Number.isFinite(audio.duration)) {
30
+ throw 'duration not available => media resource is streaming';
31
+ }
32
+ return { duration: audio.duration };
33
+ }
34
+ async configure(options) {
35
+ throw `configure is not supported for web: ${JSON.stringify(options)}`;
36
+ }
37
+ async preload(options) {
38
+ var _a;
39
+ if (NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.has(options.assetId)) {
40
+ throw 'AssetId already exists. Unload first if like to change!';
41
+ }
42
+ if (!((_a = options.assetPath) === null || _a === void 0 ? void 0 : _a.length)) {
43
+ throw 'no assetPath provided';
44
+ }
45
+ if (!options.isUrl && !new RegExp('^/?' + NativeAudioWeb.FILE_LOCATION).test(options.assetPath)) {
46
+ const slashPrefix = options.assetPath.startsWith('/') ? '' : '/';
47
+ options.assetPath = `${NativeAudioWeb.FILE_LOCATION}${slashPrefix}${options.assetPath}`;
48
+ }
49
+ const audio = new Audio(options.assetPath);
50
+ audio.autoplay = false;
51
+ audio.loop = false;
52
+ audio.preload = 'auto';
53
+ if (options.volume) {
54
+ audio.volume = options.volume;
55
+ }
56
+ NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.set(options.assetId, new AudioAsset(audio));
57
+ }
58
+ async play(options) {
59
+ var _a;
60
+ const audio = this.getAudioAsset(options.assetId).audio;
61
+ await this.stop(options);
62
+ audio.loop = false;
63
+ audio.currentTime = (_a = options.time) !== null && _a !== void 0 ? _a : 0;
64
+ return audio.play();
65
+ }
66
+ async loop(options) {
67
+ const audio = this.getAudioAsset(options.assetId).audio;
68
+ await this.stop(options);
69
+ audio.loop = true;
70
+ return audio.play();
71
+ }
72
+ async stop(options) {
73
+ const audio = this.getAudioAsset(options.assetId).audio;
74
+ audio.pause();
75
+ audio.loop = false;
76
+ audio.currentTime = 0;
77
+ }
78
+ async unload(options) {
79
+ await this.stop(options);
80
+ NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.delete(options.assetId);
81
+ }
82
+ async setVolume(options) {
83
+ if (typeof (options === null || options === void 0 ? void 0 : options.volume) !== 'number') {
84
+ throw 'no volume provided';
85
+ }
86
+ const audio = this.getAudioAsset(options.assetId).audio;
87
+ audio.volume = options.volume;
88
+ }
89
+ async isPlaying(options) {
90
+ const audio = this.getAudioAsset(options.assetId).audio;
91
+ return { isPlaying: !audio.paused };
92
+ }
93
+ getAudioAsset(assetId) {
94
+ this.checkAssetId(assetId);
95
+ if (!NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.has(assetId)) {
96
+ throw `no asset for assetId "${assetId}" available. Call preload first!`;
97
+ }
98
+ return NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.get(assetId);
99
+ }
100
+ checkAssetId(assetId) {
101
+ if (typeof assetId !== 'string') {
102
+ throw 'assetId must be a string';
103
+ }
104
+ if (!(assetId === null || assetId === void 0 ? void 0 : assetId.length)) {
105
+ throw 'no assetId provided';
106
+ }
107
+ }
108
+ }
109
+ NativeAudioWeb.FILE_LOCATION = 'assets/sounds';
110
+ NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID = new Map();
111
+ const NativeAudio = new NativeAudioWeb();
112
+ export { NativeAudio };
113
+ //# sourceMappingURL=web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var core = require('@capacitor/core');
6
+
7
+ const NativeAudio$1 = core.registerPlugin('NativeAudio', {
8
+ web: () => Promise.resolve().then(function () { return web; }).then((m) => new m.NativeAudioWeb()),
9
+ });
10
+
11
+ class AudioAsset {
12
+ constructor(audio) {
13
+ this.audio = audio;
14
+ }
15
+ }
16
+
17
+ class NativeAudioWeb extends core.WebPlugin {
18
+ constructor() {
19
+ super({
20
+ name: 'NativeAudio',
21
+ platforms: ['web'],
22
+ });
23
+ }
24
+ async resume(options) {
25
+ const audio = this.getAudioAsset(options.assetId).audio;
26
+ if (audio.paused) {
27
+ return audio.play();
28
+ }
29
+ }
30
+ async pause(options) {
31
+ const audio = this.getAudioAsset(options.assetId).audio;
32
+ return audio.pause();
33
+ }
34
+ async getCurrentTime(options) {
35
+ const audio = this.getAudioAsset(options.assetId).audio;
36
+ return { currentTime: audio.currentTime };
37
+ }
38
+ async getDuration(options) {
39
+ const audio = this.getAudioAsset(options.assetId).audio;
40
+ if (Number.isNaN(audio.duration)) {
41
+ throw 'no duration available';
42
+ }
43
+ if (!Number.isFinite(audio.duration)) {
44
+ throw 'duration not available => media resource is streaming';
45
+ }
46
+ return { duration: audio.duration };
47
+ }
48
+ async configure(options) {
49
+ throw `configure is not supported for web: ${JSON.stringify(options)}`;
50
+ }
51
+ async preload(options) {
52
+ var _a;
53
+ if (NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.has(options.assetId)) {
54
+ throw 'AssetId already exists. Unload first if like to change!';
55
+ }
56
+ if (!((_a = options.assetPath) === null || _a === void 0 ? void 0 : _a.length)) {
57
+ throw 'no assetPath provided';
58
+ }
59
+ if (!options.isUrl && !new RegExp('^/?' + NativeAudioWeb.FILE_LOCATION).test(options.assetPath)) {
60
+ const slashPrefix = options.assetPath.startsWith('/') ? '' : '/';
61
+ options.assetPath = `${NativeAudioWeb.FILE_LOCATION}${slashPrefix}${options.assetPath}`;
62
+ }
63
+ const audio = new Audio(options.assetPath);
64
+ audio.autoplay = false;
65
+ audio.loop = false;
66
+ audio.preload = 'auto';
67
+ if (options.volume) {
68
+ audio.volume = options.volume;
69
+ }
70
+ NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.set(options.assetId, new AudioAsset(audio));
71
+ }
72
+ async play(options) {
73
+ var _a;
74
+ const audio = this.getAudioAsset(options.assetId).audio;
75
+ await this.stop(options);
76
+ audio.loop = false;
77
+ audio.currentTime = (_a = options.time) !== null && _a !== void 0 ? _a : 0;
78
+ return audio.play();
79
+ }
80
+ async loop(options) {
81
+ const audio = this.getAudioAsset(options.assetId).audio;
82
+ await this.stop(options);
83
+ audio.loop = true;
84
+ return audio.play();
85
+ }
86
+ async stop(options) {
87
+ const audio = this.getAudioAsset(options.assetId).audio;
88
+ audio.pause();
89
+ audio.loop = false;
90
+ audio.currentTime = 0;
91
+ }
92
+ async unload(options) {
93
+ await this.stop(options);
94
+ NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.delete(options.assetId);
95
+ }
96
+ async setVolume(options) {
97
+ if (typeof (options === null || options === void 0 ? void 0 : options.volume) !== 'number') {
98
+ throw 'no volume provided';
99
+ }
100
+ const audio = this.getAudioAsset(options.assetId).audio;
101
+ audio.volume = options.volume;
102
+ }
103
+ async isPlaying(options) {
104
+ const audio = this.getAudioAsset(options.assetId).audio;
105
+ return { isPlaying: !audio.paused };
106
+ }
107
+ getAudioAsset(assetId) {
108
+ this.checkAssetId(assetId);
109
+ if (!NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.has(assetId)) {
110
+ throw `no asset for assetId "${assetId}" available. Call preload first!`;
111
+ }
112
+ return NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.get(assetId);
113
+ }
114
+ checkAssetId(assetId) {
115
+ if (typeof assetId !== 'string') {
116
+ throw 'assetId must be a string';
117
+ }
118
+ if (!(assetId === null || assetId === void 0 ? void 0 : assetId.length)) {
119
+ throw 'no assetId provided';
120
+ }
121
+ }
122
+ }
123
+ NativeAudioWeb.FILE_LOCATION = 'assets/sounds';
124
+ NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID = new Map();
125
+ const NativeAudio = new NativeAudioWeb();
126
+
127
+ var web = /*#__PURE__*/Object.freeze({
128
+ __proto__: null,
129
+ NativeAudioWeb: NativeAudioWeb,
130
+ NativeAudio: NativeAudio
131
+ });
132
+
133
+ exports.NativeAudio = NativeAudio$1;
134
+ //# sourceMappingURL=plugin.cjs.js.map