@capgo/native-audio 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/CapgoNativeAudio.podspec +16 -0
- package/LICENSE +21 -0
- package/README.md +394 -0
- package/android/build.gradle +55 -0
- package/android/src/main/AndroidManifest.xml +5 -0
- package/android/src/main/java/ee/forgr/audio/AudioAsset.java +140 -0
- package/android/src/main/java/ee/forgr/audio/AudioDispatcher.java +178 -0
- package/android/src/main/java/ee/forgr/audio/Constant.java +18 -0
- package/android/src/main/java/ee/forgr/audio/NativeAudio.java +471 -0
- package/android/src/main/res/layout/bridge_layout_main.xml +15 -0
- package/android/src/main/res/values/colors.xml +3 -0
- package/android/src/main/res/values/strings.xml +3 -0
- package/android/src/main/res/values/styles.xml +3 -0
- package/dist/docs.json +279 -0
- package/dist/esm/audio-asset.d.ts +4 -0
- package/dist/esm/audio-asset.js +6 -0
- package/dist/esm/audio-asset.js.map +1 -0
- package/dist/esm/definitions.d.ts +53 -0
- package/dist/esm/definitions.js +2 -0
- package/dist/esm/definitions.js.map +1 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/web.d.ts +52 -0
- package/dist/esm/web.js +113 -0
- package/dist/esm/web.js.map +1 -0
- package/dist/plugin.cjs.js +134 -0
- package/dist/plugin.cjs.js.map +1 -0
- package/dist/plugin.js +137 -0
- package/dist/plugin.js.map +1 -0
- package/ios/Plugin/AudioAsset.swift +184 -0
- package/ios/Plugin/Constant.swift +20 -0
- package/ios/Plugin/Info.plist +24 -0
- package/ios/Plugin/Plugin.h +10 -0
- package/ios/Plugin/Plugin.m +19 -0
- package/ios/Plugin/Plugin.swift +276 -0
- 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 @@
|
|
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 @@
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":""}
|
@@ -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 };
|
package/dist/esm/web.js
ADDED
@@ -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
|