ipyaudio 0.1.23__py3-none-any.whl → 0.1.24__py3-none-any.whl

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 (65) hide show
  1. ipyaudio/_version.py +1 -1
  2. ipyaudio/labextension/install.json +5 -0
  3. ipyaudio/labextension/package.json +1 -1
  4. ipyaudio/labextension/static/122.3700f0454aee82938e32.js +1 -0
  5. ipyaudio/labextension/static/270.783a4728ca957ffe8716.js +1 -0
  6. ipyaudio/labextension/static/509.a9d6860fe38ae60aa71f.js +1 -0
  7. ipyaudio/labextension/static/570.97f2a8196b7f1703e636.js +2 -0
  8. ipyaudio/labextension/static/570.97f2a8196b7f1703e636.js.LICENSE.txt +6 -0
  9. ipyaudio/labextension/static/627.315cb148cc156382df50.js +2 -0
  10. ipyaudio/labextension/static/627.315cb148cc156382df50.js.LICENSE.txt +5 -0
  11. ipyaudio/labextension/static/remoteEntry.be45454fad38fcb60bb9.js +1 -0
  12. ipyaudio/labextension/static/third-party-licenses.json +64 -0
  13. ipyaudio/nbextension/index.js +2 -13499
  14. ipyaudio/nbextension/index.js.map +1 -1
  15. ipyaudio/player.py +2 -0
  16. {ipyaudio-0.1.23.data → ipyaudio-0.1.24.data}/data/share/jupyter/labextensions/ipyaudio/package.json +1 -1
  17. ipyaudio-0.1.24.data/data/share/jupyter/labextensions/ipyaudio/static/122.3700f0454aee82938e32.js +1 -0
  18. ipyaudio-0.1.24.data/data/share/jupyter/labextensions/ipyaudio/static/270.783a4728ca957ffe8716.js +1 -0
  19. ipyaudio-0.1.24.data/data/share/jupyter/labextensions/ipyaudio/static/509.a9d6860fe38ae60aa71f.js +1 -0
  20. ipyaudio-0.1.24.data/data/share/jupyter/labextensions/ipyaudio/static/570.97f2a8196b7f1703e636.js +2 -0
  21. ipyaudio-0.1.24.data/data/share/jupyter/labextensions/ipyaudio/static/570.97f2a8196b7f1703e636.js.LICENSE.txt +6 -0
  22. ipyaudio-0.1.24.data/data/share/jupyter/labextensions/ipyaudio/static/627.315cb148cc156382df50.js +2 -0
  23. ipyaudio-0.1.24.data/data/share/jupyter/labextensions/ipyaudio/static/627.315cb148cc156382df50.js.LICENSE.txt +5 -0
  24. ipyaudio-0.1.24.data/data/share/jupyter/labextensions/ipyaudio/static/remoteEntry.be45454fad38fcb60bb9.js +1 -0
  25. ipyaudio-0.1.24.data/data/share/jupyter/labextensions/ipyaudio/static/third-party-licenses.json +64 -0
  26. ipyaudio-0.1.24.data/data/share/jupyter/nbextensions/ipyaudio/index.js +3 -0
  27. ipyaudio-0.1.24.data/data/share/jupyter/nbextensions/ipyaudio/index.js.map +1 -0
  28. {ipyaudio-0.1.23.dist-info → ipyaudio-0.1.24.dist-info}/METADATA +27 -5
  29. ipyaudio-0.1.24.dist-info/RECORD +52 -0
  30. ipyaudio/labextension/build_log.json +0 -726
  31. ipyaudio/labextension/static/lib_index_js.e0dc1b40eb8d768fd304.js +0 -36
  32. ipyaudio/labextension/static/lib_index_js.e0dc1b40eb8d768fd304.js.map +0 -1
  33. ipyaudio/labextension/static/lib_player_js-lib_recorder_js-data_image_svg_xml_3csvg_xmlns_27http_www_w3_org_2000_svg_27_vi-4e62a2.5626ffcb48021915d5fc.js +0 -1216
  34. ipyaudio/labextension/static/lib_player_js-lib_recorder_js-data_image_svg_xml_3csvg_xmlns_27http_www_w3_org_2000_svg_27_vi-4e62a2.5626ffcb48021915d5fc.js.map +0 -1
  35. ipyaudio/labextension/static/lib_plugin_js.721ea7eaebbdaef9b36c.js +0 -69
  36. ipyaudio/labextension/static/lib_plugin_js.721ea7eaebbdaef9b36c.js.map +0 -1
  37. ipyaudio/labextension/static/remoteEntry.58e9350ee0aa7970ecd3.js +0 -565
  38. ipyaudio/labextension/static/remoteEntry.58e9350ee0aa7970ecd3.js.map +0 -1
  39. ipyaudio/labextension/static/vendors-node_modules_bootstrap_dist_js_bootstrap_bundle_min_js-node_modules_lodash_merge_js-n-f8a88e.73fa57174fc3b67a3760.js +0 -4041
  40. ipyaudio/labextension/static/vendors-node_modules_bootstrap_dist_js_bootstrap_bundle_min_js-node_modules_lodash_merge_js-n-f8a88e.73fa57174fc3b67a3760.js.map +0 -1
  41. ipyaudio/labextension/static/vendors-node_modules_jupyter-dataserializers_lib_index_js.e44af737f0ae9fde402b.js +0 -8001
  42. ipyaudio/labextension/static/vendors-node_modules_jupyter-dataserializers_lib_index_js.e44af737f0ae9fde402b.js.map +0 -1
  43. ipyaudio-0.1.23.data/data/share/jupyter/labextensions/ipyaudio/build_log.json +0 -726
  44. ipyaudio-0.1.23.data/data/share/jupyter/labextensions/ipyaudio/static/lib_index_js.e0dc1b40eb8d768fd304.js +0 -36
  45. ipyaudio-0.1.23.data/data/share/jupyter/labextensions/ipyaudio/static/lib_index_js.e0dc1b40eb8d768fd304.js.map +0 -1
  46. ipyaudio-0.1.23.data/data/share/jupyter/labextensions/ipyaudio/static/lib_player_js-lib_recorder_js-data_image_svg_xml_3csvg_xmlns_27http_www_w3_org_2000_svg_27_vi-4e62a2.5626ffcb48021915d5fc.js +0 -1216
  47. ipyaudio-0.1.23.data/data/share/jupyter/labextensions/ipyaudio/static/lib_player_js-lib_recorder_js-data_image_svg_xml_3csvg_xmlns_27http_www_w3_org_2000_svg_27_vi-4e62a2.5626ffcb48021915d5fc.js.map +0 -1
  48. ipyaudio-0.1.23.data/data/share/jupyter/labextensions/ipyaudio/static/lib_plugin_js.721ea7eaebbdaef9b36c.js +0 -69
  49. ipyaudio-0.1.23.data/data/share/jupyter/labextensions/ipyaudio/static/lib_plugin_js.721ea7eaebbdaef9b36c.js.map +0 -1
  50. ipyaudio-0.1.23.data/data/share/jupyter/labextensions/ipyaudio/static/remoteEntry.58e9350ee0aa7970ecd3.js +0 -565
  51. ipyaudio-0.1.23.data/data/share/jupyter/labextensions/ipyaudio/static/remoteEntry.58e9350ee0aa7970ecd3.js.map +0 -1
  52. ipyaudio-0.1.23.data/data/share/jupyter/labextensions/ipyaudio/static/vendors-node_modules_bootstrap_dist_js_bootstrap_bundle_min_js-node_modules_lodash_merge_js-n-f8a88e.73fa57174fc3b67a3760.js +0 -4041
  53. ipyaudio-0.1.23.data/data/share/jupyter/labextensions/ipyaudio/static/vendors-node_modules_bootstrap_dist_js_bootstrap_bundle_min_js-node_modules_lodash_merge_js-n-f8a88e.73fa57174fc3b67a3760.js.map +0 -1
  54. ipyaudio-0.1.23.data/data/share/jupyter/labextensions/ipyaudio/static/vendors-node_modules_jupyter-dataserializers_lib_index_js.e44af737f0ae9fde402b.js +0 -8001
  55. ipyaudio-0.1.23.data/data/share/jupyter/labextensions/ipyaudio/static/vendors-node_modules_jupyter-dataserializers_lib_index_js.e44af737f0ae9fde402b.js.map +0 -1
  56. ipyaudio-0.1.23.data/data/share/jupyter/nbextensions/ipyaudio/index.js +0 -13500
  57. ipyaudio-0.1.23.data/data/share/jupyter/nbextensions/ipyaudio/index.js.map +0 -1
  58. ipyaudio-0.1.23.dist-info/RECORD +0 -58
  59. {ipyaudio-0.1.23.data → ipyaudio-0.1.24.data}/data/etc/jupyter/nbconfig/notebook.d/ipyaudio.json +0 -0
  60. {ipyaudio-0.1.23.data → ipyaudio-0.1.24.data}/data/share/jupyter/labextensions/ipyaudio/install.json +0 -0
  61. {ipyaudio-0.1.23.data → ipyaudio-0.1.24.data}/data/share/jupyter/labextensions/ipyaudio/static/style.js +0 -0
  62. {ipyaudio-0.1.23.data → ipyaudio-0.1.24.data}/data/share/jupyter/nbextensions/ipyaudio/extension.js +0 -0
  63. {ipyaudio-0.1.23.data → ipyaudio-0.1.24.data}/data/share/jupyter/nbextensions/ipyaudio/index.js.LICENSE.txt +0 -0
  64. {ipyaudio-0.1.23.dist-info → ipyaudio-0.1.24.dist-info}/WHEEL +0 -0
  65. {ipyaudio-0.1.23.dist-info → ipyaudio-0.1.24.dist-info}/licenses/LICENSE.txt +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"lib_player_js-lib_recorder_js-data_image_svg_xml_3csvg_xmlns_27http_www_w3_org_2000_svg_27_vi-4e62a2.5626ffcb48021915d5fc.js","mappings":"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","sources":["webpack://ipyaudio/./css/widget.css?a195","webpack://ipyaudio/./src/chunk_queue.ts","webpack://ipyaudio/./src/player.ts","webpack://ipyaudio/./src/recorder.ts","webpack://ipyaudio/./src/version.ts","webpack://ipyaudio/./src/wavesurfer/pcm_player.ts","webpack://ipyaudio/./src/wavesurfer/player.ts","webpack://ipyaudio/./src/wavesurfer/recorder.ts","webpack://ipyaudio/./src/wavesurfer/reward.ts","webpack://ipyaudio/./src/wavesurfer/utils.ts","webpack://ipyaudio/./css/widget.css"],"sourcesContent":["\n import API from \"!../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../node_modules/css-loader/dist/cjs.js!./widget.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../node_modules/css-loader/dist/cjs.js!./widget.css\";\n export default content && content.locals ? content.locals : undefined;\n","// Copyright (c) Zhendong Peng\n// Distributed under the terms of the Modified BSD License.\n\nclass ChunkQueue {\n private queue: Uint8Array[] = []\n private resolveDequeue: ((value: Uint8Array) => void) | null = null\n private waitingDequeue: Promise<Uint8Array> | null = null\n\n constructor() {}\n\n private mergeAllChunks(): Uint8Array {\n if (this.queue.length === 0) {\n return new Uint8Array(0)\n }\n let totalLength = 0\n for (const chunk of this.queue) {\n totalLength += chunk.length\n }\n\n const merged = new Uint8Array(totalLength)\n let offset = 0\n for (const chunk of this.queue) {\n merged.set(chunk, offset)\n offset += chunk.length\n }\n return merged\n }\n\n public enqueue(chunk: Uint8Array): void {\n this.queue.push(chunk)\n\n if (this.resolveDequeue) {\n const merged = this.mergeAllChunks()\n this.resolveDequeue(merged)\n this.queue.length = 0\n this.resolveDequeue = null\n this.waitingDequeue = null\n }\n }\n\n public async dequeue(timeoutMs: number = 0): Promise<Uint8Array> {\n if (this.queue.length > 0) {\n const merged = this.mergeAllChunks()\n this.queue.length = 0\n return merged\n }\n\n if (!this.waitingDequeue) {\n this.waitingDequeue = new Promise<Uint8Array>((resolve) => {\n this.resolveDequeue = resolve\n })\n\n if (timeoutMs > 0) {\n const timeout = setTimeout(() => {\n if (this.resolveDequeue) {\n this.resolveDequeue(new Uint8Array(0))\n this.resolveDequeue = null\n this.waitingDequeue = null\n }\n }, timeoutMs)\n\n this.waitingDequeue\n .then(() => {\n if (timeout) {\n clearTimeout(timeout)\n }\n })\n .catch(() => {\n if (timeout) {\n clearTimeout(timeout)\n }\n })\n }\n }\n return this.waitingDequeue\n }\n\n public get length(): number {\n return this.queue.length\n }\n}\n\nexport default ChunkQueue\n","// Copyright (c) Zhendong Peng\n// Distributed under the terms of the Modified BSD License.\n\nimport merge from 'lodash/merge'\nimport { DOMWidgetModel, DOMWidgetView, ISerializers } from '@jupyter-widgets/base'\n\nimport { MODULE_NAME, MODULE_VERSION } from './version'\nimport Player from './wavesurfer/player'\n\n// Import the CSS\nimport 'bootstrap/dist/css/bootstrap.min.css'\n\nimport '../css/widget.css'\n\nexport class PlayerModel extends DOMWidgetModel {\n defaults() {\n return {\n ...super.defaults(),\n _model_name: PlayerModel.model_name,\n _model_module: PlayerModel.model_module,\n _model_module_version: PlayerModel.model_module_version,\n _view_name: PlayerModel.view_name,\n _view_module: PlayerModel.view_module,\n _view_module_version: PlayerModel.view_module_version,\n }\n }\n\n static serializers: ISerializers = {\n ...DOMWidgetModel.serializers,\n // Add any extra serializers here\n }\n\n static model_name = 'PlayerModel'\n static model_module = MODULE_NAME\n static model_module_version = MODULE_VERSION\n static view_name = 'PlayerView' // Set to null if no view\n static view_module = MODULE_NAME // Set to null if no view\n static view_module_version = MODULE_VERSION\n}\n\nexport class PlayerView extends DOMWidgetView {\n private _player: Player\n\n render() {\n super.render()\n this.displayed.then(async () => {\n const config = {\n isStreaming: this.model.get('is_streaming'),\n language: this.model.get('language'),\n }\n this._player = Player.create(merge({}, this.model.get('config'), config))\n this.el.appendChild(this._player.el)\n this.model.on('change:audio', () => {\n this._player.sampleRate = this.model.get('rate')\n this._player.load(this.model.get('audio'))\n })\n this.model.on('change:is_done', () => {\n this._player.setDone()\n })\n })\n }\n}\n","// Copyright (c) Zhendong Peng\n// Distributed under the terms of the Modified BSD License.\n\nimport merge from 'lodash/merge'\nimport { simplearray_serialization } from 'jupyter-dataserializers'\nimport { DOMWidgetModel, DOMWidgetView, ISerializers } from '@jupyter-widgets/base'\n\nimport { MODULE_NAME, MODULE_VERSION } from './version'\nimport ChunkQueue from './chunk_queue'\nimport Recorder from './wavesurfer/recorder'\n\n// Import the CSS\nimport 'bootstrap/dist/css/bootstrap.min.css'\n\nimport '../css/widget.css'\n\nexport class RecorderModel extends DOMWidgetModel {\n defaults() {\n return {\n ...super.defaults(),\n _model_name: RecorderModel.model_name,\n _model_module: RecorderModel.model_module,\n _model_module_version: RecorderModel.model_module_version,\n _view_name: RecorderModel.view_name,\n _view_module: RecorderModel.view_module,\n _view_module_version: RecorderModel.view_module_version,\n\n chunk: new Uint8Array(0),\n rate: 16000,\n end: false,\n }\n }\n\n static serializers: ISerializers = {\n ...DOMWidgetModel.serializers,\n // Add any extra serializers here\n chunk: simplearray_serialization as any,\n }\n\n static model_name = 'RecorderModel'\n static model_module = MODULE_NAME\n static model_module_version = MODULE_VERSION\n static view_name = 'RecorderView' // Set to null if no view\n static view_module = MODULE_NAME // Set to null if no view\n static view_module_version = MODULE_VERSION\n}\n\nexport class RecorderView extends DOMWidgetView {\n private _recorder: Recorder\n private _chunks: ChunkQueue = new ChunkQueue()\n private _isFirstChunk = true\n private _isCompleted = false\n\n private async _sendChunk() {\n // 1 seconds maximum wait time\n const chunk = await this._chunks.dequeue(1000 + (this._recorder.timeSlice ?? 20))\n if (chunk.length > 0) {\n this.model.set('chunk', { array: chunk, shape: [chunk.length] })\n this.model.save_changes()\n }\n if (this._isCompleted) {\n this.model.set('completed', true)\n this.model.save_changes()\n }\n }\n\n render() {\n super.render()\n this.displayed.then(async () => {\n const language = this.model.get('language')\n this._recorder = Recorder.create(\n merge({}, this.model.get('config'), { language }),\n merge({}, this.model.get('player_config'), { language }),\n )\n this.el.appendChild(this._recorder.el)\n\n this.model.on('msg:custom', async (msg: any) => {\n if (msg.msg_type === 'chunk_received') {\n this._sendChunk()\n }\n })\n\n this._recorder.onRecordStart(() => {\n this._isCompleted = false\n this._isFirstChunk = true\n this.model.set('completed', false)\n this.model.set('rate', this._recorder.sampleRate)\n this.model.save_changes()\n })\n\n this._recorder.onRecordChunk(async (blob) => {\n this._chunks.enqueue(new Uint8Array(await blob.arrayBuffer()))\n if (this.model.get('sync') && this._isFirstChunk) {\n this._isFirstChunk = false\n this._sendChunk()\n }\n })\n\n this._recorder.onRecordEnd(async (blob) => {\n this._isCompleted = true\n if (!this.model.get('sync')) {\n this.model.set('completed', true)\n this.model.save_changes()\n }\n })\n })\n }\n}\n","// Copyright (c) Zhendong Peng\n// Distributed under the terms of the Modified BSD License.\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst data = require('../package.json')\n\n/**\n * The _model_module_version/_view_module_version this package implements.\n *\n * The html widget manager assumes that this is the same as the npm package\n * version number.\n */\nexport const MODULE_VERSION = data.version\n\n/*\n * The current package name.\n */\nexport const MODULE_NAME = data.name\n","// Copyright (c) Zhendong Peng\n// Distributed under the terms of the Modified BSD License.\n\nimport { createElement, createObjectURL } from './utils'\n\nexport class PCMPlayer {\n public playButton: HTMLButtonElement\n private _isDone: boolean = false\n private _isPlaying: boolean = true\n private _interval: number\n private _samples: Int16Array = new Int16Array(0)\n private _allSamples: Int16Array = new Int16Array(0)\n private _audioCtx: AudioContext\n private _gainNode: GainNode\n private _startTime: number\n private _options: { channels: number; sampleRate: number; flushTime: number; language: string }\n\n constructor(\n options?: Partial<{\n channels: number\n sampleRate: number\n flushTime: number\n language: string\n }>,\n ) {\n this._options = Object.assign({ channels: 1, sampleRate: 16000, flushTime: 100, language: 'en' }, options)\n this.playButton = createElement('button', 'btn btn-danger me-3 my-3', '<i class=\"fa fa-pause\"></i>')\n this.playButton.onclick = () => {\n this._isPlaying = !this._isPlaying\n this._isPlaying ? this.play() : this.pause()\n this.playButton.innerHTML = `<i class=\"fa fa-${this._isPlaying ? 'pause' : 'play'}\"></i>`\n }\n\n this._interval = window.setInterval(this.flush.bind(this), this._options.flushTime)\n this._audioCtx = new (window.AudioContext || (window as any).webkitAudioContext)()\n this._gainNode = this._audioCtx.createGain()\n this._gainNode.gain.value = 1.0\n this._gainNode.connect(this._audioCtx.destination)\n this._startTime = this._audioCtx.currentTime\n }\n\n set sampleRate(rate: number) {\n this._options.sampleRate = rate\n }\n\n setDone() {\n this._isDone = true\n }\n\n feed(base64Data: string) {\n const binaryString = atob(base64Data)\n const buffer = new ArrayBuffer(binaryString.length)\n const bufferView = new Uint8Array(buffer)\n for (let i = 0; i < binaryString.length; i++) {\n bufferView[i] = binaryString.charCodeAt(i)\n }\n const data = new Int16Array(buffer)\n this._samples = new Int16Array([...this._samples, ...data])\n this._allSamples = new Int16Array([...this._allSamples, ...data])\n }\n\n get url() {\n return createObjectURL(this._allSamples.buffer, {\n numChannels: this._options.channels,\n sampleRate: this._options.sampleRate,\n })\n }\n\n private flush() {\n if (!this._samples.length) {\n return\n }\n const isDone = this._isDone\n const bufferSource = this._audioCtx.createBufferSource()\n const length = this._samples.length / this._options.channels\n const audioBuffer = this._audioCtx.createBuffer(this._options.channels, length, this._options.sampleRate)\n\n for (let channel = 0; channel < this._options.channels; channel++) {\n const audioData = audioBuffer.getChannelData(channel)\n let offset = channel\n for (let i = 0; i < length; i++) {\n audioData[i] = this._samples[offset] / 32768\n offset += this._options.channels\n }\n }\n\n this._startTime = Math.max(this._startTime, this._audioCtx.currentTime)\n bufferSource.buffer = audioBuffer\n bufferSource.connect(this._gainNode)\n bufferSource.start(this._startTime)\n bufferSource.onended = () => {\n this.playButton.disabled = isDone ? true : false\n }\n this._startTime += audioBuffer.duration\n this._samples = new Int16Array(0)\n }\n\n async play() {\n await this._audioCtx.resume()\n }\n\n async pause() {\n await this._audioCtx.suspend()\n }\n\n volume(volume: number) {\n this._gainNode.gain.value = volume\n }\n\n destroy() {\n if (this._interval) {\n clearInterval(this._interval)\n }\n this._samples = new Int16Array(0)\n this._audioCtx.close()\n }\n}\n\nexport default PCMPlayer\n","// Copyright (c) Zhendong Peng\n// Distributed under the terms of the Modified BSD License.\n\nimport WaveSurfer, { WaveSurferOptions } from 'wavesurfer.js'\nimport { type GenericPlugin } from 'wavesurfer.js/dist/base-plugin.js'\nimport HoverPlugin, { HoverPluginOptions } from 'wavesurfer.js/dist/plugins/hover.js'\nimport MinimapPlugin, { MinimapPluginOptions } from 'wavesurfer.js/dist/plugins/minimap.js'\nimport SpectrogramPlugin, { SpectrogramPluginOptions } from 'wavesurfer.js/dist/plugins/spectrogram.js'\nimport TimelinePlugin, { TimelinePluginOptions } from 'wavesurfer.js/dist/plugins/timeline.js'\nimport ZoomPlugin, { ZoomPluginOptions } from 'wavesurfer.js/dist/plugins/zoom.js'\n\nimport PCMPlayer from './pcm_player'\nimport { createRewardDropdown } from './reward'\nimport { createElement, createObjectURL, formatTime } from './utils'\n\nexport interface PlayerConfig {\n options: WaveSurferOptions\n isStreaming: boolean\n language?: string\n plugins?: string[]\n pluginOptions?: {\n hover?: HoverPluginOptions\n minimap?: MinimapPluginOptions\n spectrogram?: SpectrogramPluginOptions\n timeline?: TimelinePluginOptions\n zoom?: ZoomPluginOptions\n }\n}\n\nexport default class Player {\n public el: HTMLDivElement\n private _container: HTMLDivElement\n private _duration: HTMLDivElement\n private _currentTime: HTMLDivElement\n private _wavesurfer: WaveSurfer\n private _config: PlayerConfig\n // streaming\n private _pcmPlayer: PCMPlayer\n\n constructor(config: PlayerConfig) {\n this.el = createElement('div', 'lm-Widget')\n this._container = createElement('div', 'waveform')\n this._duration = createElement('div', 'duration', '0:00')\n this._currentTime = createElement('div', 'time', '0:00')\n this._container.append(this._duration, this._currentTime)\n this.el.append(this._container)\n this._config = config\n }\n\n get url() {\n if (this._config.isStreaming) {\n return this._pcmPlayer.url\n } else {\n return createObjectURL(this._wavesurfer.getDecodedData())\n }\n }\n\n set sampleRate(rate: number) {\n if (this._config.isStreaming) {\n this._pcmPlayer.sampleRate = rate\n }\n this._wavesurfer.options.sampleRate = rate\n }\n\n load(url: string) {\n if (this._config.isStreaming) {\n this._pcmPlayer.feed(url)\n this._wavesurfer.load(this.url)\n } else {\n this._wavesurfer.load(url)\n }\n }\n\n setDone() {\n this._pcmPlayer.setDone()\n }\n\n createPCMPlayer() {\n if (this._config.isStreaming) {\n this._pcmPlayer = new PCMPlayer({\n channels: 1,\n sampleRate: this._config.options.sampleRate,\n })\n this.el.append(this._pcmPlayer.playButton)\n }\n }\n\n createDownloadButton() {\n const downloadButton = createElement('button', 'btn btn-success my-3')\n const label = this._config.language === 'zh' ? '下载' : 'Download'\n downloadButton.innerHTML = `${label} <i class=\"fa fa-download\"></i>`\n downloadButton.onclick = () => {\n const link = document.createElement('a')\n link.href = this.url\n link.download = 'audio.wav'\n link.click()\n }\n this.el.append(downloadButton)\n }\n\n static createPlugins(config: PlayerConfig) {\n const pluginMap = {\n hover: () => HoverPlugin.create(config.pluginOptions?.hover),\n minimap: () =>\n MinimapPlugin.create({\n ...config.pluginOptions?.minimap,\n plugins: [\n HoverPlugin.create({\n ...config.pluginOptions?.hover,\n lineWidth: 1,\n }),\n ],\n }),\n spectrogram: () => SpectrogramPlugin.create(config.pluginOptions?.spectrogram),\n timeline: () => TimelinePlugin.create(config.pluginOptions?.timeline),\n zoom: () => ZoomPlugin.create(config.pluginOptions?.zoom),\n }\n return Array.from(config.plugins ?? [])\n .map((plugin) => pluginMap[plugin as keyof typeof pluginMap]?.())\n .filter(Boolean) as GenericPlugin[]\n }\n\n createWaveSurfer() {\n this._wavesurfer = WaveSurfer.create({\n ...this._config.options,\n container: this._container,\n plugins: Player.createPlugins(this._config),\n })\n this._wavesurfer.on('interaction', () => this._wavesurfer.playPause())\n this._wavesurfer.on('decode', (time) => (this._duration.textContent = formatTime(time)))\n this._wavesurfer.on('timeupdate', (time) => (this._currentTime.textContent = formatTime(time)))\n }\n\n static create(config: PlayerConfig) {\n const instance = new Player(config)\n instance.createWaveSurfer()\n instance.createPCMPlayer()\n instance.createDownloadButton()\n instance.el.appendChild(createRewardDropdown(config.language || 'en'))\n return instance\n }\n}\n","// Copyright (c) Zhendong Peng\n// Distributed under the terms of the Modified BSD License.\n\nimport WaveSurfer, { WaveSurferOptions } from 'wavesurfer.js'\nimport RecordPlugin, { RecordPluginOptions } from 'wavesurfer.js/dist/plugins/record.js'\n\nimport Player, { PlayerConfig } from './player'\nimport { createElement, formatTime } from './utils'\n\ninterface RecorderConfig {\n options: WaveSurferOptions\n language?: string\n recordOptions?: RecordPluginOptions\n}\n\nexport default class Recorder {\n public el: HTMLDivElement\n private _container: HTMLDivElement\n private _currentTime: HTMLDivElement\n private _wavesurfer: WaveSurfer\n private _config: RecorderConfig\n private _recorder: RecordPlugin\n private _micSelect: HTMLSelectElement\n private _rateSelect: HTMLSelectElement\n private _recordButton: HTMLButtonElement\n private _pauseButton: HTMLButtonElement\n private _player: Player\n\n constructor(config: RecorderConfig, playerConfig: PlayerConfig) {\n this.el = createElement('div', 'lm-Widget')\n this._container = createElement('div', 'waveform')\n this._currentTime = createElement('div', 'time', '0:00')\n this._container.append(this._currentTime)\n this._config = config\n this._player = Player.create(playerConfig)\n }\n\n get sampleRate() {\n return this._wavesurfer.options.sampleRate\n }\n\n get timeSlice() {\n return this._config.recordOptions?.mediaRecorderTimeslice\n }\n\n set sampleRate(rate: number) {\n this._wavesurfer.options.sampleRate = rate\n this._player.sampleRate = rate\n }\n\n createWaveSurfer() {\n this._wavesurfer = WaveSurfer.create({\n ...this._config.options,\n container: this._container,\n })\n }\n\n createRateSelect() {\n this._rateSelect = createElement('select', 'form-select-sm d-inline-block me-3 my-3 w-25')\n const rates = [8000, 16000, 22050, 24000, 44100, 48000]\n rates.forEach((rate: number) => {\n const option = document.createElement('option')\n option.value = rate.toString()\n option.text = `${rate} Hz`\n if (rate === 16000) {\n option.selected = true\n }\n this._rateSelect.appendChild(option)\n })\n }\n\n createMicSelect() {\n this._micSelect = createElement('select', 'form-select-sm d-inline-block me-3 my-3 w-50')\n navigator.mediaDevices\n .getUserMedia({ audio: true, video: false })\n .then((stream) => {\n RecordPlugin.getAvailableAudioDevices().then((devices: MediaDeviceInfo[]) => {\n devices.forEach((device: MediaDeviceInfo) => {\n const option = document.createElement('option')\n option.value = device.deviceId\n option.text = device.label || device.deviceId\n this._micSelect.appendChild(option)\n })\n })\n })\n .catch((err) => {\n const label = this._config.language === 'zh' ? '访问麦克风失败' : 'Error accessing the microphone: '\n throw new Error(label + (err as Error).message)\n })\n }\n\n createPauseButton() {\n this._pauseButton = createElement('button', 'btn btn-outline-danger me-3 my-3', '<i class=\"fa fa-pause\"></i>')\n this._pauseButton.disabled = true\n this._pauseButton.onclick = () => {\n if (this._recorder.isRecording()) {\n this._recorder.pauseRecording()\n this._pauseButton.innerHTML = '<i class=\"fa fa-play\"></i>'\n this._container.style.display = 'none'\n this._player.el.style.display = 'block'\n } else {\n this._recorder.resumeRecording()\n this._pauseButton.innerHTML = '<i class=\"fa fa-pause\"></i>'\n this._container.style.display = 'block'\n this._player.el.style.display = 'none'\n }\n }\n }\n\n createRecordButton() {\n this._recordButton = createElement('button', 'btn btn-danger me-3 my-3', '<i class=\"fa fa-microphone\"></i>')\n this._recordButton.onclick = () => {\n if (this._recorder.isRecording() || this._recorder.isPaused()) {\n this._recorder.stopRecording()\n this._container.style.display = 'none'\n this._player.el.style.display = 'block'\n } else {\n this._wavesurfer.options.normalize = false\n this.sampleRate = parseInt(this._rateSelect.value)\n this._recorder.startRecording({ deviceId: this._micSelect.value }).then(() => {\n this._pauseButton.disabled = false\n this._rateSelect.disabled = true\n this._micSelect.disabled = true\n this._pauseButton.innerHTML = '<i class=\"fa fa-pause\"></i>'\n this._recordButton.innerHTML = '<i class=\"fa fa-stop\"></i>'\n this._container.style.display = 'block'\n this._player.el.style.display = 'none'\n })\n }\n }\n }\n\n onRecordStart(callback: () => void) {\n this._recorder.on('record-start', () => {\n callback()\n })\n }\n\n onRecordChunk(callback: (blob: Blob) => void) {\n this._recorder.on('record-data-available', (blob) => {\n callback(blob)\n })\n }\n\n onRecordEnd(callback: (blob: Blob) => Promise<void>) {\n this._recorder.on('record-end', async (blob) => {\n this._player.load(URL.createObjectURL(blob))\n this._recordButton.disabled = true\n this._pauseButton.disabled = true\n await callback(blob)\n this._recordButton.disabled = false\n this._pauseButton.disabled = true\n this._rateSelect.disabled = false\n this._micSelect.disabled = false\n this._pauseButton.innerHTML = '<i class=\"fa fa-play\"></i>'\n this._recordButton.innerHTML = '<i class=\"fa fa-microphone\"></i>'\n })\n }\n\n createRecorder() {\n this._wavesurfer.toggleInteraction(false)\n this._recorder = this._wavesurfer.registerPlugin(RecordPlugin.create(this._config.recordOptions))\n this.createRateSelect()\n this.createMicSelect()\n this.createPauseButton()\n this.createRecordButton()\n this._container.style.display = 'none'\n this._player.el.style.display = 'none'\n this.el.append(\n this._recordButton,\n this._pauseButton,\n this._rateSelect,\n this._micSelect,\n this._container,\n this._player.el,\n )\n\n this._recorder.on('record-pause', (blob) => {\n this._player.load(URL.createObjectURL(blob))\n })\n\n this._recorder.on('record-progress', (time) => {\n this._currentTime.textContent = formatTime(time / 1000)\n })\n }\n\n static create(config: RecorderConfig, playerConfig: PlayerConfig) {\n const instance = new Recorder(config, playerConfig)\n instance.createWaveSurfer()\n instance.createRecorder()\n return instance\n }\n}\n","// Copyright (c) Zhendong Peng\n// Distributed under the terms of the Modified BSD License.\n\nimport 'bootstrap/dist/js/bootstrap.bundle.min.js'\nimport { createElement } from './utils'\n\nexport function createRewardDropdown(language: string) {\n const rewardDropdown = createElement('div', 'dropdown my-3 float-end text-end')\n const dropdownButton = createElement('button', 'btn btn-warning dropdown-toggle')\n dropdownButton.setAttribute('data-bs-toggle', 'dropdown')\n dropdownButton.innerHTML =\n language === 'zh' ? '<i class=\"fa fa-thumbs-o-up\"></i> 赞赏' : '<i class=\"fa fa-coffee\"></i> Buy me a coffee'\n\n const dropdownMenu = createElement('ul', 'dropdown-menu p-2')\n const url = 'https://modelscope.cn/models/pengzhendong/pengzhendong/resolve/master/images'\n const rewards = [\n {\n imgSrc: `${url}/wechat-reward.jpg`,\n name: language === 'zh' ? '微信' : 'WeChat',\n },\n {\n imgSrc: `${url}/alipay-reward.jpg`,\n name: language === 'zh' ? '支付宝' : 'AliPay',\n },\n ]\n const table = createElement('table', 'table table-bordered mb-0')\n const tbody = createElement('tbody')\n const imageRow = createElement('tr')\n rewards.forEach((reward) => {\n const cell = createElement('td', 'text-center p-2')\n cell.style.width = `${100 / rewards.length}%`\n const img = createElement('img', 'img-fluid d-block mx-auto') as HTMLImageElement\n img.src = reward.imgSrc\n cell.appendChild(img)\n const name = createElement('div', 'text-center mt-2 fw-bold')\n name.textContent = reward.name\n cell.appendChild(name)\n imageRow.appendChild(cell)\n })\n tbody.appendChild(imageRow)\n table.appendChild(tbody)\n const dropdownItem = createElement('li', '')\n dropdownItem.appendChild(table)\n dropdownMenu.appendChild(dropdownItem)\n\n const link = createElement('a') as HTMLAnchorElement\n link.href = 'https://github.com/pengzhendong/ipyaudio'\n link.target = '_blank'\n const starBadge = createElement('img', 'img-fluid me-3') as HTMLImageElement\n starBadge.src = 'https://img.shields.io/github/stars/pengzhendong/ipyaudio.svg'\n link.appendChild(starBadge)\n\n rewardDropdown.appendChild(link)\n rewardDropdown.appendChild(dropdownButton)\n rewardDropdown.appendChild(dropdownMenu)\n return rewardDropdown\n}\n","// Copyright (c) Zhendong Peng\n// Distributed under the terms of the Modified BSD License.\n\nexport const createElement = <T extends HTMLElement>(\n tagName: keyof HTMLElementTagNameMap,\n className: string = '',\n innerHTML: string = '',\n): T => {\n const element = document.createElement(tagName) as T\n element.className = className\n element.innerHTML = innerHTML\n return element\n}\n\nexport const formatTime = (seconds: number) => {\n const minutes = Math.floor(seconds / 60)\n const secondsRemainder = Math.round(seconds) % 60\n const paddedSeconds = `0${secondsRemainder}`.slice(-2)\n return `${minutes}:${paddedSeconds}`\n}\n\nfunction getWavHeader(options: {\n numFrames: number\n numChannels?: number\n sampleRate?: number\n isFloat?: boolean\n}): Uint8Array {\n const numFrames = options.numFrames\n const numChannels = options.numChannels || 2\n const sampleRate = options.sampleRate || 44100\n const bytesPerSample = options.isFloat ? 4 : 2\n const format = options.isFloat ? 3 : 1\n const blockAlign = numChannels * bytesPerSample\n const byteRate = sampleRate * blockAlign\n const dataSize = numFrames * blockAlign\n const buffer = new ArrayBuffer(44)\n const dv = new DataView(buffer)\n let p = 0\n function writeString(s: string) {\n for (let i = 0; i < s.length; i++) {\n dv.setUint8(p + i, s.charCodeAt(i))\n }\n p += s.length\n }\n function writeUint32(d: number) {\n dv.setUint32(p, d, true)\n p += 4\n }\n function writeUint16(d: number) {\n dv.setUint16(p, d, true)\n p += 2\n }\n writeString('RIFF') // ChunkID\n writeUint32(dataSize + 36) // ChunkSize\n writeString('WAVE') // Format\n writeString('fmt ') // Subchunk1ID\n writeUint32(16) // Subchunk1Size\n writeUint16(format) // AudioFormat https://i.stack.imgur.com/BuSmb.png\n writeUint16(numChannels) // NumChannels\n writeUint32(sampleRate) // SampleRate\n writeUint32(byteRate) // ByteRate\n writeUint16(blockAlign) // BlockAlign\n writeUint16(bytesPerSample * 8) // BitsPerSample\n writeString('data') // Subchunk2ID\n writeUint32(dataSize) // Subchunk2Size\n return new Uint8Array(buffer)\n}\n\nfunction interleaveChannels(buffer: AudioBuffer): Int16Array {\n const { numberOfChannels, length } = buffer\n const pcmData = new Int16Array(length * numberOfChannels)\n for (let channel = 0; channel < numberOfChannels; channel++) {\n const data = buffer.getChannelData(channel)\n const isFloat = data instanceof Float32Array\n for (let i = 0; i < length; i++) {\n // convert float32 to int16\n pcmData[i * numberOfChannels + channel] = isFloat ? data[i] * 32767 : data[i]\n }\n }\n return pcmData\n}\n\nfunction getWavBytes(\n buffer: ArrayBuffer | AudioBuffer | null,\n options: { numChannels: number; sampleRate: number },\n): Uint8Array {\n if (!buffer) {\n return new Uint8Array()\n }\n\n let headerBytes: Uint8Array\n let pcmData: Uint8Array\n\n if (buffer instanceof ArrayBuffer) {\n headerBytes = getWavHeader({\n isFloat: false,\n numChannels: options.numChannels,\n sampleRate: options.sampleRate,\n numFrames: buffer.byteLength / Int16Array.BYTES_PER_ELEMENT,\n })\n pcmData = new Uint8Array(buffer)\n } else {\n headerBytes = getWavHeader({\n isFloat: false,\n numChannels: buffer.numberOfChannels,\n sampleRate: buffer.sampleRate,\n numFrames: buffer.length,\n })\n pcmData = new Uint8Array(interleaveChannels(buffer).buffer)\n }\n const wavBytes = new Uint8Array(headerBytes.length + pcmData.length)\n wavBytes.set(headerBytes, 0)\n wavBytes.set(pcmData, headerBytes.length)\n\n return wavBytes\n}\n\nexport const createObjectURL = (\n buffer: ArrayBuffer | AudioBuffer | null,\n options: { numChannels: number; sampleRate: number } = {\n numChannels: 1,\n sampleRate: 44100,\n },\n): string => {\n let wavBytes: Uint8Array\n\n if (buffer instanceof AudioBuffer) {\n wavBytes = getWavBytes(buffer, {\n numChannels: buffer.numberOfChannels,\n sampleRate: buffer.sampleRate,\n })\n } else {\n wavBytes = getWavBytes(buffer, options)\n }\n\n return URL.createObjectURL(new Blob([wavBytes], { type: 'audio/wav' }))\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.waveform {\n background-color: black;\n cursor: pointer;\n position: relative;\n width: 100%;\n}\n\n.duration, .time {\n background: rgba(0, 0, 0, 0.75);\n color: #DDDD;\n font-size: 11px;\n position: absolute;\n bottom: 0;\n z-index: 11;\n}\n\n.duration { right: 0 }\n\n.time { left: 0 }\n\n.dropdown-menu {\n width: 500px;\n position: relative !important;\n transform: translateY(10px) !important;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./css/widget.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,uBAAuB;EACvB,eAAe;EACf,kBAAkB;EAClB,WAAW;AACb;;AAEA;EACE,+BAA+B;EAC/B,YAAY;EACZ,eAAe;EACf,kBAAkB;EAClB,SAAS;EACT,WAAW;AACb;;AAEA,YAAY,SAAS;;AAErB,QAAQ,QAAQ;;AAEhB;EACE,YAAY;EACZ,6BAA6B;EAC7B,sCAAsC;AACxC\",\"sourcesContent\":[\".waveform {\\n background-color: black;\\n cursor: pointer;\\n position: relative;\\n width: 100%;\\n}\\n\\n.duration, .time {\\n background: rgba(0, 0, 0, 0.75);\\n color: #DDDD;\\n font-size: 11px;\\n position: absolute;\\n bottom: 0;\\n z-index: 11;\\n}\\n\\n.duration { right: 0 }\\n\\n.time { left: 0 }\\n\\n.dropdown-menu {\\n width: 500px;\\n position: relative !important;\\n transform: translateY(10px) !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":[],"sourceRoot":""}
@@ -1,69 +0,0 @@
1
- "use strict";
2
- (self["webpackChunkipyaudio"] = self["webpackChunkipyaudio"] || []).push([["lib_plugin_js"],{
3
-
4
- /***/ "./lib/plugin.js":
5
- /*!***********************!*\
6
- !*** ./lib/plugin.js ***!
7
- \***********************/
8
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
9
-
10
-
11
- // Copyright (c) Zhendong Peng
12
- // Distributed under the terms of the Modified BSD License.
13
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- var desc = Object.getOwnPropertyDescriptor(m, k);
16
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
- desc = { enumerable: true, get: function() { return m[k]; } };
18
- }
19
- Object.defineProperty(o, k2, desc);
20
- }) : (function(o, m, k, k2) {
21
- if (k2 === undefined) k2 = k;
22
- o[k2] = m[k];
23
- }));
24
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
- Object.defineProperty(o, "default", { enumerable: true, value: v });
26
- }) : function(o, v) {
27
- o["default"] = v;
28
- });
29
- var __importStar = (this && this.__importStar) || function (mod) {
30
- if (mod && mod.__esModule) return mod;
31
- var result = {};
32
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
- __setModuleDefault(result, mod);
34
- return result;
35
- };
36
- Object.defineProperty(exports, "__esModule", ({ value: true }));
37
- const base_1 = __webpack_require__(/*! @jupyter-widgets/base */ "webpack/sharing/consume/default/@jupyter-widgets/base?ea51");
38
- const playerExports = __importStar(__webpack_require__(/*! ./player */ "./lib/player.js"));
39
- const recorderExports = __importStar(__webpack_require__(/*! ./recorder */ "./lib/recorder.js"));
40
- const version_1 = __webpack_require__(/*! ./version */ "./lib/version.js");
41
- const EXTENSION_ID = 'ipyaudio:plugin';
42
- /**
43
- * The example plugin.
44
- */
45
- const examplePlugin = {
46
- id: EXTENSION_ID,
47
- requires: [base_1.IJupyterWidgetRegistry],
48
- activate: activateWidgetExtension,
49
- autoStart: true,
50
- };
51
- // the "as unknown as ..." typecast above is solely to support JupyterLab 1
52
- // and 2 in the same codebase and should be removed when we migrate to Lumino.
53
- exports["default"] = examplePlugin;
54
- /**
55
- * Activate the widget extension.
56
- */
57
- function activateWidgetExtension(app, registry) {
58
- registry.registerWidget({
59
- name: version_1.MODULE_NAME,
60
- version: version_1.MODULE_VERSION,
61
- exports: Object.assign(Object.assign({}, playerExports), recorderExports),
62
- });
63
- }
64
-
65
-
66
- /***/ })
67
-
68
- }]);
69
- //# sourceMappingURL=lib_plugin_js.721ea7eaebbdaef9b36c.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lib_plugin_js.721ea7eaebbdaef9b36c.js","mappings":";;;;;;;;;;AAAA,8BAA8B;AAC9B,2DAA2D;;;;;;;;;;;;;;;;;;;;;;;;;AAI3D,8HAA8D;AAE9D,2FAAyC;AACzC,iGAA6C;AAC7C,2EAAuD;AAEvD,MAAM,YAAY,GAAG,iBAAiB;AAEtC;;GAEG;AACH,MAAM,aAAa,GAAuC;IACxD,EAAE,EAAE,YAAY;IAChB,QAAQ,EAAE,CAAC,6BAAsB,CAAC;IAClC,QAAQ,EAAE,uBAAuB;IACjC,SAAS,EAAE,IAAI;CACiC;AAClD,2EAA2E;AAC3E,8EAA8E;AAE9E,qBAAe,aAAa;AAE5B;;GAEG;AACH,SAAS,uBAAuB,CAAC,GAAwB,EAAE,QAAgC;IACzF,QAAQ,CAAC,cAAc,CAAC;QACtB,IAAI,EAAE,qBAAW;QACjB,OAAO,EAAE,wBAAc;QACvB,OAAO,kCACF,aAAa,GACb,eAAe,CACnB;KACF,CAAC;AACJ,CAAC","sources":["webpack://ipyaudio/./src/plugin.ts"],"sourcesContent":["// Copyright (c) Zhendong Peng\n// Distributed under the terms of the Modified BSD License.\n\nimport { Application, IPlugin } from '@lumino/application'\nimport { Widget } from '@lumino/widgets'\nimport { IJupyterWidgetRegistry } from '@jupyter-widgets/base'\n\nimport * as playerExports from './player'\nimport * as recorderExports from './recorder'\nimport { MODULE_NAME, MODULE_VERSION } from './version'\n\nconst EXTENSION_ID = 'ipyaudio:plugin'\n\n/**\n * The example plugin.\n */\nconst examplePlugin: IPlugin<Application<Widget>, void> = {\n id: EXTENSION_ID,\n requires: [IJupyterWidgetRegistry],\n activate: activateWidgetExtension,\n autoStart: true,\n} as unknown as IPlugin<Application<Widget>, void>\n// the \"as unknown as ...\" typecast above is solely to support JupyterLab 1\n// and 2 in the same codebase and should be removed when we migrate to Lumino.\n\nexport default examplePlugin\n\n/**\n * Activate the widget extension.\n */\nfunction activateWidgetExtension(app: Application<Widget>, registry: IJupyterWidgetRegistry): void {\n registry.registerWidget({\n name: MODULE_NAME,\n version: MODULE_VERSION,\n exports: {\n ...playerExports,\n ...recorderExports,\n },\n })\n}\n"],"names":[],"sourceRoot":""}