@tiny-codes/react-easy 1.4.9 → 1.4.11

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.
@@ -24,7 +24,7 @@ var AudioPlayer = /*#__PURE__*/function () {
24
24
  var _this = this;
25
25
  _classCallCheck(this, AudioPlayer);
26
26
  _defineProperty(this, "audio", void 0);
27
- _defineProperty(this, "volume", void 0);
27
+ _defineProperty(this, "_volume", void 0);
28
28
  _defineProperty(this, "audioContext", null);
29
29
  _defineProperty(this, "gainNode", null);
30
30
  _defineProperty(this, "sourceNode", null);
@@ -49,8 +49,8 @@ var AudioPlayer = /*#__PURE__*/function () {
49
49
  volume = _ref.volume;
50
50
  this.options = options;
51
51
  this.audio = new Audio();
52
- this.volume = volume != null ? Math.min(1.0, Math.max(0, volume)) : 0.5; // Default volume 50%
53
- this.audio.volume = this.volume;
52
+ this._volume = volume != null ? Math.min(1.0, Math.max(0, volume)) : 0.5; // Default volume 50%
53
+ this.audio.volume = this._volume;
54
54
  if (typeof source === 'function') {
55
55
  var result = source();
56
56
  if (_typeof(result) === 'object' && 'then' in result && typeof result.then === 'function') {
@@ -80,6 +80,33 @@ var AudioPlayer = /*#__PURE__*/function () {
80
80
  var _this$audioContext;
81
81
  return ((_this$audioContext = this.audioContext) === null || _this$audioContext === void 0 ? void 0 : _this$audioContext.state) === 'running';
82
82
  }
83
+ /**
84
+ * - **EN:** Get current playback time (seconds)
85
+ * - **CN:** 获取当前播放时间(秒)
86
+ */
87
+ }, {
88
+ key: "currentTime",
89
+ get: function get() {
90
+ return this.audio.currentTime;
91
+ }
92
+ /**
93
+ * - **EN:** Get total audio duration (seconds)
94
+ * - **CN:** 获取音频总时长(秒)
95
+ */
96
+ }, {
97
+ key: "duration",
98
+ get: function get() {
99
+ return this.audio.duration;
100
+ }
101
+ /**
102
+ * - **EN:** Get current volume value (0-1)
103
+ * - **CN:** 获取当前音量值(0-1)
104
+ */
105
+ }, {
106
+ key: "volume",
107
+ get: function get() {
108
+ return this._volume;
109
+ }
83
110
 
84
111
  /**
85
112
  * - **EN:** Play audio. If previously paused, will resume from the pause position
@@ -127,19 +154,50 @@ var AudioPlayer = /*#__PURE__*/function () {
127
154
  }
128
155
  return play;
129
156
  }()
157
+ /**
158
+ * - **EN:** Seek forward by a certain number of seconds
159
+ * - **CN:** 向前跳转一定秒数
160
+ *
161
+ * @param seconds - number of seconds to seek forward | 要向前跳转的秒数
162
+ */
163
+ )
164
+ }, {
165
+ key: "seekForward",
166
+ value: function seekForward(seconds) {
167
+ if (seconds < 0) {
168
+ return;
169
+ }
170
+ if (!isNaN(this.audio.duration)) {
171
+ this.audio.currentTime = Math.min(this.audio.currentTime + seconds, this.audio.duration);
172
+ } else {
173
+ this.audio.currentTime += seconds;
174
+ }
175
+ }
176
+ /**
177
+ * - **EN:** Seek backward by a certain number of seconds
178
+ * - **CN:** 向后跳转一定秒数
179
+ *
180
+ * @param seconds - number of seconds to seek backward | 要向后跳转的秒数
181
+ */
182
+ }, {
183
+ key: "seekBackward",
184
+ value: function seekBackward(seconds) {
185
+ if (seconds < 0) {
186
+ return;
187
+ }
188
+ this.audio.currentTime = Math.max(this.audio.currentTime - seconds, 0);
189
+ }
130
190
  /**
131
191
  * - **EN:** Set current playback time (in seconds)
132
192
  * - **CN:** 设置当前播放时间(以秒为单位)
133
193
  *
134
194
  * @param time - time in seconds | 时间(秒)
135
195
  */
136
- )
137
196
  }, {
138
- key: "gotoTime",
139
- value: function gotoTime(time) {
197
+ key: "seek",
198
+ value: function seek(time) {
140
199
  // Ensure time is not less than 0
141
200
  var newTime = Math.max(0, time);
142
-
143
201
  // Ensure time is not greater than duration (if known)
144
202
  if (!isNaN(this.audio.duration)) {
145
203
  this.audio.currentTime = Math.min(newTime, this.audio.duration);
@@ -148,27 +206,6 @@ var AudioPlayer = /*#__PURE__*/function () {
148
206
  }
149
207
  }
150
208
 
151
- /**
152
- * - **EN:** Set playback position by percentage
153
- * - **CN:** 按百分比设置播放位置
154
- *
155
- * @param percent - percentage (0-1) | 百分比(0-1)
156
- */
157
- }, {
158
- key: "gotoPercent",
159
- value: function gotoPercent(percent) {
160
- if (isNaN(this.audio.duration)) {
161
- return; // Can't set position if duration is unknown
162
- }
163
-
164
- // Clamp percent to 0-1 range
165
- var clampedPercent = Math.min(1, Math.max(0, percent));
166
-
167
- // Calculate time based on percentage
168
- var newTime = this.audio.duration * clampedPercent;
169
- this.audio.currentTime = newTime;
170
- }
171
-
172
209
  /**
173
210
  * - **EN:** Pause audio playback. When played again, will continue from current position
174
211
  * - **CN:** 暂停音频播放 再次播放时将从当前位置继续
@@ -242,7 +279,7 @@ var AudioPlayer = /*#__PURE__*/function () {
242
279
  key: "volumeUp",
243
280
  value: function volumeUp() {
244
281
  var percent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0.1;
245
- this.volume = Math.min(1.0, this.volume + percent);
282
+ this._volume = Math.min(1.0, this._volume + percent);
246
283
  this.updateVolume();
247
284
  }
248
285
 
@@ -256,7 +293,7 @@ var AudioPlayer = /*#__PURE__*/function () {
256
293
  key: "volumeDown",
257
294
  value: function volumeDown() {
258
295
  var percent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0.1;
259
- this.volume = Math.max(0, this.volume - percent);
296
+ this._volume = Math.max(0, this._volume - percent);
260
297
  this.updateVolume();
261
298
  }
262
299
 
@@ -269,39 +306,9 @@ var AudioPlayer = /*#__PURE__*/function () {
269
306
  }, {
270
307
  key: "setVolume",
271
308
  value: function setVolume(value) {
272
- this.volume = Math.min(1.0, Math.max(0, value));
309
+ this._volume = Math.min(1.0, Math.max(0, value));
273
310
  this.updateVolume();
274
311
  }
275
-
276
- /**
277
- * - **EN:** Get current volume value (0-1)
278
- * - **CN:** 获取当前音量值(0-1)
279
- */
280
- }, {
281
- key: "getVolume",
282
- value: function getVolume() {
283
- return this.volume;
284
- }
285
-
286
- /**
287
- * - **EN:** Get current playback time (seconds)
288
- * - **CN:** 获取当前播放时间(秒)
289
- */
290
- }, {
291
- key: "getCurrentTime",
292
- value: function getCurrentTime() {
293
- return this.audio.currentTime;
294
- }
295
-
296
- /**
297
- * - **EN:** Get total audio duration (seconds)
298
- * - **CN:** 获取音频总时长(秒)
299
- */
300
- }, {
301
- key: "getDuration",
302
- value: function getDuration() {
303
- return this.audio.duration;
304
- }
305
312
  }, {
306
313
  key: "dispose",
307
314
  value:
@@ -329,33 +336,49 @@ var AudioPlayer = /*#__PURE__*/function () {
329
336
  }, {
330
337
  key: "handleStreamSource",
331
338
  value: (function () {
332
- var _handleStreamSource = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(reader) {
333
- var stream, response, blob, url;
339
+ var _handleStreamSource = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(source) {
340
+ var blob, stream, response, url;
334
341
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
335
342
  while (1) switch (_context4.prev = _context4.next) {
336
343
  case 0:
337
- if (reader) {
344
+ if (source) {
338
345
  _context4.next = 2;
339
346
  break;
340
347
  }
341
348
  return _context4.abrupt("return");
342
349
  case 2:
343
350
  _context4.prev = 2;
351
+ if (!(source instanceof Blob)) {
352
+ _context4.next = 7;
353
+ break;
354
+ }
355
+ blob = source;
356
+ _context4.next = 16;
357
+ break;
358
+ case 7:
359
+ if (!(source instanceof ArrayBuffer || source instanceof Uint8Array)) {
360
+ _context4.next = 11;
361
+ break;
362
+ }
363
+ blob = new Blob([source]);
364
+ _context4.next = 16;
365
+ break;
366
+ case 11:
344
367
  // Create a new ReadableStream to read data from the reader
345
368
  stream = new ReadableStream({
346
369
  pull: function pull(controller) {
347
370
  return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
348
- var _yield$reader$read, done, value;
371
+ var _yield$source$read, done, value;
349
372
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
350
373
  while (1) switch (_context3.prev = _context3.next) {
351
374
  case 0:
352
375
  _context3.prev = 0;
353
376
  _context3.next = 3;
354
- return reader.read();
377
+ return source.read();
355
378
  case 3:
356
- _yield$reader$read = _context3.sent;
357
- done = _yield$reader$read.done;
358
- value = _yield$reader$read.value;
379
+ _yield$source$read = _context3.sent;
380
+ done = _yield$source$read.done;
381
+ value = _yield$source$read.value;
359
382
  if (done) {
360
383
  controller.close();
361
384
  } else {
@@ -376,10 +399,11 @@ var AudioPlayer = /*#__PURE__*/function () {
376
399
  }
377
400
  }); // Convert stream to Blob and create URL
378
401
  response = new Response(stream);
379
- _context4.next = 7;
402
+ _context4.next = 15;
380
403
  return response.blob();
381
- case 7:
404
+ case 15:
382
405
  blob = _context4.sent;
406
+ case 16:
383
407
  url = URL.createObjectURL(blob);
384
408
  this.audio.src = url;
385
409
 
@@ -387,17 +411,17 @@ var AudioPlayer = /*#__PURE__*/function () {
387
411
  this.audio.onload = function () {
388
412
  URL.revokeObjectURL(url);
389
413
  };
390
- _context4.next = 16;
414
+ _context4.next = 24;
391
415
  break;
392
- case 13:
393
- _context4.prev = 13;
416
+ case 21:
417
+ _context4.prev = 21;
394
418
  _context4.t0 = _context4["catch"](2);
395
419
  console.error('Error processing audio stream:', _context4.t0);
396
- case 16:
420
+ case 24:
397
421
  case "end":
398
422
  return _context4.stop();
399
423
  }
400
- }, _callee4, this, [[2, 13]]);
424
+ }, _callee4, this, [[2, 21]]);
401
425
  }));
402
426
  function handleStreamSource(_x2) {
403
427
  return _handleStreamSource.apply(this, arguments);
@@ -413,7 +437,7 @@ var AudioPlayer = /*#__PURE__*/function () {
413
437
  this.gainNode = this.audioContext.createGain();
414
438
  this.sourceNode.connect(this.gainNode);
415
439
  this.gainNode.connect(this.audioContext.destination);
416
- this.gainNode.gain.value = this.volume;
440
+ this.gainNode.gain.value = this._volume;
417
441
  }
418
442
 
419
443
  /** Update audio playback volume */
@@ -421,9 +445,9 @@ var AudioPlayer = /*#__PURE__*/function () {
421
445
  key: "updateVolume",
422
446
  value: function updateVolume() {
423
447
  if (this.gainNode) {
424
- this.gainNode.gain.value = this.volume;
448
+ this.gainNode.gain.value = this._volume;
425
449
  } else {
426
- this.audio.volume = this.volume;
450
+ this.audio.volume = this._volume;
427
451
  }
428
452
  }
429
453
  }]);
@@ -1 +1 @@
1
- {"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","_defineProperty","obj","_toPrimitive","String","toPrimitive","Number","AudioPlayer","options","_this","event","listener","audio","addEventListener","removeEventListener","_ref","source","volume","Audio","Math","min","max","result","data","setAudioSource","onPlayEnd","_this$options","_this$options$onPlayE","get","_this$audioContext","audioContext","state","_play","_callee","_this$audioContext2","_this$options2","_this$options2$onPlay","_this$options3","_this$options3$onErro","_callee$","_context","initAudioContext","resume","play","onPlay","t0","console","onError","gotoTime","time","newTime","duration","currentTime","gotoPercent","percent","clampedPercent","pause","_this$options4","_this$options4$onPaus","onPause","_this$options5","_this$options5$onStop","onStop","_setAudioSource","_callee2","_callee2$","_context2","src","handleStreamSource","_x","volumeUp","updateVolume","volumeDown","setVolume","getVolume","getCurrentTime","getDuration","dispose","close","sourceNode","gainNode","_handleStreamSource","_callee4","reader","stream","response","blob","url","_callee4$","_context4","ReadableStream","pull","controller","_callee3","_yield$reader$read","_callee3$","_context3","read","enqueue","Response","URL","createObjectURL","onload","revokeObjectURL","_x2","AudioContext","createMediaElementSource","createGain","connect","destination","gain"],"sources":["../../src/utils/AudioPlayer.ts"],"sourcesContent":["export type AudioSource = string | ReadableStreamDefaultReader<Uint8Array>;\n\nexport interface AudioPlayerInit {\n /**\n * - **EN:** Audio source (URL or streaming data)\n * - **CN:** 音频源(URL或流数据)\n */\n source?: AudioSource | (() => AudioSource | Promise<AudioSource>);\n /**\n * - **EN:** Initial volume level (0-1). Default is `0.5`\n * - **CN:** 初始音量级别(0-1)。默认值为`0.5`\n */\n volume?: number;\n /**\n * - **EN:** Callback when audio starts playing\n * - **CN:** 音频开始播放时的回调\n */\n onPlay?: () => void;\n /**\n * - **EN:** Callback when audio is paused\n * - **CN:** 音频暂停时的回调\n */\n onPause?: () => void;\n /**\n * - **EN:** Callback when audio is stopped\n * - **CN:** 音频停止时的回调\n */\n onStop?: () => void;\n\n /**\n * - **EN:** Callback when audio playback ends\n * - **CN:** 音频播放结束时的回调\n */\n onPlayEnd?: () => void;\n /**\n * - **EN:** Callback when an error occurs\n * - **CN:** 发生错误时的回调\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onError?: (error: any) => void;\n}\n\n/**\n * - **EN:** An audio player class that supports URL or streaming data input\n * - **CN:** 一个音频播放器类,支持URL或流数据输入\n */\nclass AudioPlayer {\n private audio: HTMLAudioElement;\n private volume: number;\n private audioContext: AudioContext | null = null;\n private gainNode: GainNode | null = null;\n private sourceNode: MediaElementAudioSourceNode | null = null;\n private options: AudioPlayerInit | undefined;\n private onPlayEnd: () => void;\n\n /**\n * - **EN:** Creates an audio player instance\n * - **CN:** 创建音频播放器实例\n *\n * @param source - can be a URL string or ReadableStreamDefaultReader |\n * 可以是URL字符串或ReadableStreamDefaultReader\n */\n constructor(options?: AudioPlayerInit) {\n const { source, volume } = options || {};\n this.options = options;\n this.audio = new Audio();\n this.volume = volume != null ? Math.min(1.0, Math.max(0, volume)) : 0.5; // Default volume 50%\n this.audio.volume = this.volume;\n if (typeof source === 'function') {\n const result = source();\n if (typeof result === 'object' && 'then' in result && typeof result.then === 'function') {\n result.then((data) => this.setAudioSource(data));\n } else {\n this.setAudioSource(result as AudioSource);\n }\n } else {\n this.setAudioSource(source);\n }\n this.onPlayEnd = () => {\n this.options?.onPlayEnd?.();\n };\n this.addEventListener('ended', this.onPlayEnd);\n }\n\n /**\n * - **EN:** Check if audio is currently playing\n * - **CN:** 检查音频是否正在播放\n */\n public get isPlaying() {\n return this.audioContext?.state === 'running';\n }\n\n /**\n * - **EN:** Play audio. If previously paused, will resume from the pause position\n * - **CN:** 播放音频 如果之前暂停过,将从暂停位置继续播放\n */\n async play(): Promise<void> {\n if (!this.audioContext) {\n this.initAudioContext();\n }\n\n if (this.audioContext?.state === 'suspended') {\n await this.audioContext.resume();\n }\n\n try {\n await this.audio.play();\n this.options?.onPlay?.();\n } catch (error) {\n console.error('Error playing audio:', error);\n this.options?.onError?.(error);\n }\n }\n\n /**\n * - **EN:** Set current playback time (in seconds)\n * - **CN:** 设置当前播放时间(以秒为单位)\n *\n * @param time - time in seconds | 时间(秒)\n */\n gotoTime(time: number): void {\n // Ensure time is not less than 0\n const newTime = Math.max(0, time);\n\n // Ensure time is not greater than duration (if known)\n if (!isNaN(this.audio.duration)) {\n this.audio.currentTime = Math.min(newTime, this.audio.duration);\n } else {\n this.audio.currentTime = newTime;\n }\n }\n\n /**\n * - **EN:** Set playback position by percentage\n * - **CN:** 按百分比设置播放位置\n *\n * @param percent - percentage (0-1) | 百分比(0-1)\n */\n gotoPercent(percent: number): void {\n if (isNaN(this.audio.duration)) {\n return; // Can't set position if duration is unknown\n }\n\n // Clamp percent to 0-1 range\n const clampedPercent = Math.min(1, Math.max(0, percent));\n\n // Calculate time based on percentage\n const newTime = this.audio.duration * clampedPercent;\n this.audio.currentTime = newTime;\n }\n\n /**\n * - **EN:** Pause audio playback. When played again, will continue from current position\n * - **CN:** 暂停音频播放 再次播放时将从当前位置继续\n */\n pause(): void {\n this.audio.pause();\n this.options?.onPause?.();\n }\n\n /**\n * - **EN:** Stop audio playback. Progress will reset to the beginning\n * - **CN:** 停止音频播放 进度会重置到开始位置\n */\n stop(): void {\n this.audio.pause();\n this.audio.currentTime = 0;\n this.options?.onStop?.();\n }\n\n /**\n * - **EN:** Update audio source\n * - **CN:** 更新音频源\n *\n * @param source - can be a URL `string` or `ReadableStreamDefaultReader` |\n * 可以是URL字符串或`ReadableStreamDefaultReader`\n */\n async setAudioSource(source?: AudioSource) {\n this.audio.pause();\n this.audio.src = '';\n\n if (typeof source === 'string') {\n this.audio.src = source;\n } else {\n await this.handleStreamSource(source);\n }\n }\n\n /**\n * - **EN:** Increase volume (by 10% each time)\n * - **CN:** 增加音量(每次增加10%)\n *\n * @param percent - increase percentage (default 10%) | 增加百分比(默认10%)\n */\n volumeUp(percent = 0.1): void {\n this.volume = Math.min(1.0, this.volume + percent);\n this.updateVolume();\n }\n\n /**\n * - **EN:** Decrease volume (by 10% each time)\n * - **CN:** 降低音量(每次降低10%)\n *\n * @param percent - decrease percentage (default 10%) | 降低百分比(默认10%)\n */\n volumeDown(percent = 0.1): void {\n this.volume = Math.max(0, this.volume - percent);\n this.updateVolume();\n }\n\n /**\n * - **EN:** Set volume to a specific value (0-1)\n * - **CN:** 将音量设置为特定值(0-1)\n *\n * @param value - new volume value (0-1) | 新的音量值(0-1)\n */\n setVolume(value: number): void {\n this.volume = Math.min(1.0, Math.max(0, value));\n this.updateVolume();\n }\n\n /**\n * - **EN:** Get current volume value (0-1)\n * - **CN:** 获取当前音量值(0-1)\n */\n getVolume(): number {\n return this.volume;\n }\n\n /**\n * - **EN:** Get current playback time (seconds)\n * - **CN:** 获取当前播放时间(秒)\n */\n getCurrentTime(): number {\n return this.audio.currentTime;\n }\n\n /**\n * - **EN:** Get total audio duration (seconds)\n * - **CN:** 获取音频总时长(秒)\n */\n getDuration(): number {\n return this.audio.duration;\n }\n\n /**\n * - **EN:** Add audio event listener\n * - **CN:** 添加音频事件监听器\n */\n addEventListener: HTMLAudioElement['addEventListener'] = (\n event: string,\n listener: EventListenerOrEventListenerObject\n ): void => {\n this.audio.addEventListener(event, listener);\n };\n\n /**\n * - **EN:** Remove audio event listener\n * - **CN:** 移除音频事件监听器\n */\n removeEventListener: HTMLAudioElement['removeEventListener'] = (\n event: string,\n listener: EventListenerOrEventListenerObject\n ): void => {\n this.audio.removeEventListener(event, listener);\n };\n\n /**\n * - **EN:** Release resources\n * - **CN:** 释放资源\n */\n dispose(): void {\n this.audio.pause();\n this.audio.src = '';\n this.removeEventListener('ended', this.onPlayEnd);\n\n if (this.audioContext) {\n try {\n this.audioContext.close();\n } catch (error) {\n console.error('Error closing AudioContext:', error);\n }\n this.audioContext = null;\n }\n\n this.sourceNode = null;\n this.gainNode = null;\n }\n\n /** Process streaming data source */\n private async handleStreamSource(reader?: ReadableStreamDefaultReader<Uint8Array>) {\n if (!reader) return;\n try {\n // Create a new ReadableStream to read data from the reader\n const stream = new ReadableStream({\n async pull(controller) {\n try {\n const { done, value } = await reader.read();\n if (done) {\n controller.close();\n } else {\n controller.enqueue(value);\n }\n } catch (err) {\n controller.error(err);\n }\n },\n });\n\n // Convert stream to Blob and create URL\n const response = new Response(stream);\n const blob = await response.blob();\n const url = URL.createObjectURL(blob);\n\n this.audio.src = url;\n\n // Release Blob URL after audio loads\n this.audio.onload = () => {\n URL.revokeObjectURL(url);\n };\n } catch (error) {\n console.error('Error processing audio stream:', error);\n }\n }\n\n /** Initialize Web Audio API for better volume control */\n private initAudioContext() {\n if (this.audioContext) return;\n\n this.audioContext = new AudioContext();\n this.sourceNode = this.audioContext.createMediaElementSource(this.audio);\n this.gainNode = this.audioContext.createGain();\n\n this.sourceNode.connect(this.gainNode);\n this.gainNode.connect(this.audioContext.destination);\n\n this.gainNode.gain.value = this.volume;\n }\n\n /** Update audio playback volume */\n private updateVolume(): void {\n if (this.gainNode) {\n this.gainNode.gain.value = this.volume;\n } else {\n this.audio.volume = this.volume;\n }\n }\n}\n\nexport default AudioPlayer;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","_defineProperty","obj","_toPrimitive","String","toPrimitive","Number","AudioPlayer","options","_this","event","listener","audio","addEventListener","removeEventListener","_ref","source","volume","Audio","_volume","Math","min","max","result","data","setAudioSource","onPlayEnd","_this$options","_this$options$onPlayE","get","_this$audioContext","audioContext","state","currentTime","duration","_play","_callee","_this$audioContext2","_this$options2","_this$options2$onPlay","_this$options3","_this$options3$onErro","_callee$","_context","initAudioContext","resume","play","onPlay","t0","console","onError","seekForward","seconds","seekBackward","seek","time","newTime","pause","_this$options4","_this$options4$onPaus","onPause","_this$options5","_this$options5$onStop","onStop","_setAudioSource","_callee2","_callee2$","_context2","src","handleStreamSource","_x","volumeUp","percent","updateVolume","volumeDown","setVolume","dispose","close","sourceNode","gainNode","_handleStreamSource","_callee4","blob","stream","response","url","_callee4$","_context4","Blob","ArrayBuffer","Uint8Array","ReadableStream","pull","controller","_callee3","_yield$source$read","_callee3$","_context3","read","enqueue","Response","URL","createObjectURL","onload","revokeObjectURL","_x2","AudioContext","createMediaElementSource","createGain","connect","destination","gain"],"sources":["../../src/utils/AudioPlayer.ts"],"sourcesContent":["export type AudioSource = string | ReadableStreamDefaultReader<Uint8Array> | ArrayBuffer | Uint8Array | Blob;\n\nexport interface AudioPlayerInit {\n /**\n * - **EN:** Audio source (URL or streaming data)\n * - **CN:** 音频源(URL或流数据)\n */\n source?: AudioSource | (() => AudioSource | Promise<AudioSource>);\n /**\n * - **EN:** Initial volume level (0-1). Default is `0.5`\n * - **CN:** 初始音量级别(0-1)。默认值为`0.5`\n */\n volume?: number;\n /**\n * - **EN:** Callback when audio starts playing\n * - **CN:** 音频开始播放时的回调\n */\n onPlay?: () => void;\n /**\n * - **EN:** Callback when audio is paused\n * - **CN:** 音频暂停时的回调\n */\n onPause?: () => void;\n /**\n * - **EN:** Callback when audio is stopped\n * - **CN:** 音频停止时的回调\n */\n onStop?: () => void;\n\n /**\n * - **EN:** Callback when audio playback ends\n * - **CN:** 音频播放结束时的回调\n */\n onPlayEnd?: () => void;\n /**\n * - **EN:** Callback when an error occurs\n * - **CN:** 发生错误时的回调\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onError?: (error: any) => void;\n}\n\n/**\n * - **EN:** An audio player class that supports URL or streaming data input\n * - **CN:** 一个音频播放器类,支持URL或流数据输入\n */\nclass AudioPlayer {\n private audio: HTMLAudioElement;\n private _volume: number;\n private audioContext: AudioContext | null = null;\n private gainNode: GainNode | null = null;\n private sourceNode: MediaElementAudioSourceNode | null = null;\n private options: AudioPlayerInit | undefined;\n private onPlayEnd: () => void;\n\n /**\n * - **EN:** Creates an audio player instance\n * - **CN:** 创建音频播放器实例\n *\n * @param source - can be a URL string or ReadableStreamDefaultReader |\n * 可以是URL字符串或ReadableStreamDefaultReader\n */\n constructor(options?: AudioPlayerInit) {\n const { source, volume } = options || {};\n this.options = options;\n this.audio = new Audio();\n this._volume = volume != null ? Math.min(1.0, Math.max(0, volume)) : 0.5; // Default volume 50%\n this.audio.volume = this._volume;\n if (typeof source === 'function') {\n const result = source();\n if (typeof result === 'object' && 'then' in result && typeof result.then === 'function') {\n result.then((data) => this.setAudioSource(data));\n } else {\n this.setAudioSource(result as AudioSource);\n }\n } else {\n this.setAudioSource(source);\n }\n this.onPlayEnd = () => {\n this.options?.onPlayEnd?.();\n };\n this.addEventListener('ended', this.onPlayEnd);\n }\n\n /**\n * - **EN:** Check if audio is currently playing\n * - **CN:** 检查音频是否正在播放\n */\n public get isPlaying() {\n return this.audioContext?.state === 'running';\n }\n /**\n * - **EN:** Get current playback time (seconds)\n * - **CN:** 获取当前播放时间(秒)\n */\n get currentTime(): number {\n return this.audio.currentTime;\n }\n /**\n * - **EN:** Get total audio duration (seconds)\n * - **CN:** 获取音频总时长(秒)\n */\n get duration(): number {\n return this.audio.duration;\n }\n /**\n * - **EN:** Get current volume value (0-1)\n * - **CN:** 获取当前音量值(0-1)\n */\n get volume(): number {\n return this._volume;\n }\n\n /**\n * - **EN:** Play audio. If previously paused, will resume from the pause position\n * - **CN:** 播放音频 如果之前暂停过,将从暂停位置继续播放\n */\n async play(): Promise<void> {\n if (!this.audioContext) {\n this.initAudioContext();\n }\n\n if (this.audioContext?.state === 'suspended') {\n await this.audioContext.resume();\n }\n\n try {\n await this.audio.play();\n this.options?.onPlay?.();\n } catch (error) {\n console.error('Error playing audio:', error);\n this.options?.onError?.(error);\n }\n }\n\n /**\n * - **EN:** Seek forward by a certain number of seconds\n * - **CN:** 向前跳转一定秒数\n *\n * @param seconds - number of seconds to seek forward | 要向前跳转的秒数\n */\n seekForward(seconds: number) {\n if (seconds < 0) {\n return;\n }\n if (!isNaN(this.audio.duration)) {\n this.audio.currentTime = Math.min(this.audio.currentTime + seconds, this.audio.duration);\n } else {\n this.audio.currentTime += seconds;\n }\n }\n /**\n * - **EN:** Seek backward by a certain number of seconds\n * - **CN:** 向后跳转一定秒数\n *\n * @param seconds - number of seconds to seek backward | 要向后跳转的秒数\n */\n seekBackward(seconds: number) {\n if (seconds < 0) {\n return;\n }\n this.audio.currentTime = Math.max(this.audio.currentTime - seconds, 0);\n }\n /**\n * - **EN:** Set current playback time (in seconds)\n * - **CN:** 设置当前播放时间(以秒为单位)\n *\n * @param time - time in seconds | 时间(秒)\n */\n seek(time: number) {\n // Ensure time is not less than 0\n const newTime = Math.max(0, time);\n // Ensure time is not greater than duration (if known)\n if (!isNaN(this.audio.duration)) {\n this.audio.currentTime = Math.min(newTime, this.audio.duration);\n } else {\n this.audio.currentTime = newTime;\n }\n }\n\n /**\n * - **EN:** Pause audio playback. When played again, will continue from current position\n * - **CN:** 暂停音频播放 再次播放时将从当前位置继续\n */\n pause(): void {\n this.audio.pause();\n this.options?.onPause?.();\n }\n\n /**\n * - **EN:** Stop audio playback. Progress will reset to the beginning\n * - **CN:** 停止音频播放 进度会重置到开始位置\n */\n stop(): void {\n this.audio.pause();\n this.audio.currentTime = 0;\n this.options?.onStop?.();\n }\n\n /**\n * - **EN:** Update audio source\n * - **CN:** 更新音频源\n *\n * @param source - can be a URL `string` or `ReadableStreamDefaultReader` |\n * 可以是URL字符串或`ReadableStreamDefaultReader`\n */\n async setAudioSource(source?: AudioSource) {\n this.audio.pause();\n this.audio.src = '';\n\n if (typeof source === 'string') {\n this.audio.src = source;\n } else {\n await this.handleStreamSource(source);\n }\n }\n\n /**\n * - **EN:** Increase volume (by 10% each time)\n * - **CN:** 增加音量(每次增加10%)\n *\n * @param percent - increase percentage (default 10%) | 增加百分比(默认10%)\n */\n volumeUp(percent = 0.1): void {\n this._volume = Math.min(1.0, this._volume + percent);\n this.updateVolume();\n }\n\n /**\n * - **EN:** Decrease volume (by 10% each time)\n * - **CN:** 降低音量(每次降低10%)\n *\n * @param percent - decrease percentage (default 10%) | 降低百分比(默认10%)\n */\n volumeDown(percent = 0.1): void {\n this._volume = Math.max(0, this._volume - percent);\n this.updateVolume();\n }\n\n /**\n * - **EN:** Set volume to a specific value (0-1)\n * - **CN:** 将音量设置为特定值(0-1)\n *\n * @param value - new volume value (0-1) | 新的音量值(0-1)\n */\n setVolume(value: number): void {\n this._volume = Math.min(1.0, Math.max(0, value));\n this.updateVolume();\n }\n\n /**\n * - **EN:** Add audio event listener\n * - **CN:** 添加音频事件监听器\n */\n addEventListener: HTMLAudioElement['addEventListener'] = (\n event: string,\n listener: EventListenerOrEventListenerObject\n ): void => {\n this.audio.addEventListener(event, listener);\n };\n\n /**\n * - **EN:** Remove audio event listener\n * - **CN:** 移除音频事件监听器\n */\n removeEventListener: HTMLAudioElement['removeEventListener'] = (\n event: string,\n listener: EventListenerOrEventListenerObject\n ): void => {\n this.audio.removeEventListener(event, listener);\n };\n\n /**\n * - **EN:** Release resources\n * - **CN:** 释放资源\n */\n dispose(): void {\n this.audio.pause();\n this.audio.src = '';\n this.removeEventListener('ended', this.onPlayEnd);\n\n if (this.audioContext) {\n try {\n this.audioContext.close();\n } catch (error) {\n console.error('Error closing AudioContext:', error);\n }\n this.audioContext = null;\n }\n\n this.sourceNode = null;\n this.gainNode = null;\n }\n\n /** Process streaming data source */\n private async handleStreamSource(source: Exclude<AudioSource, string> | undefined) {\n if (!source) return;\n try {\n let blob: Blob;\n if (source instanceof Blob) {\n blob = source;\n } else if (source instanceof ArrayBuffer || source instanceof Uint8Array) {\n blob = new Blob([source]);\n } else {\n // Create a new ReadableStream to read data from the reader\n const stream = new ReadableStream({\n async pull(controller) {\n try {\n const { done, value } = await source.read();\n if (done) {\n controller.close();\n } else {\n controller.enqueue(value);\n }\n } catch (err) {\n controller.error(err);\n }\n },\n });\n // Convert stream to Blob and create URL\n const response = new Response(stream);\n blob = await response.blob();\n }\n\n const url = URL.createObjectURL(blob);\n\n this.audio.src = url;\n\n // Release Blob URL after audio loads\n this.audio.onload = () => {\n URL.revokeObjectURL(url);\n };\n } catch (error) {\n console.error('Error processing audio stream:', error);\n }\n }\n\n /** Initialize Web Audio API for better volume control */\n private initAudioContext() {\n if (this.audioContext) return;\n\n this.audioContext = new AudioContext();\n this.sourceNode = this.audioContext.createMediaElementSource(this.audio);\n this.gainNode = this.audioContext.createGain();\n\n this.sourceNode.connect(this.gainNode);\n this.gainNode.connect(this.audioContext.destination);\n\n this.gainNode.gain.value = this._volume;\n }\n\n /** Update audio playback volume */\n private updateVolume(): void {\n if (this.gainNode) {\n this.gainNode.gain.value = this._volume;\n } else {\n this.audio.volume = this._volume;\n }\n }\n}\n\nexport default AudioPlayer;\n"],"mappings":"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"}
@@ -24,3 +24,5 @@ export declare function encryptAES(text: string, key: string): Promise<string>;
24
24
  * @returns The decrypted text
25
25
  */
26
26
  export declare function decryptAES(encryptedText: string, key: string): Promise<string>;
27
+ export declare function encryptWithCryptoJS(text: string, key: string): Promise<string>;
28
+ export declare function decryptWithCryptoJS(encryptedText: string, key: string): Promise<string>;