gitextract_apdo23lc/ ├── .editorconfig ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report.md │ │ └── question.md │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows/ │ ├── build/ │ │ └── action.yml │ ├── e2e.yml │ ├── label-sponsors.yml │ ├── lint.yml │ ├── release.yml │ ├── unit-tests.yml │ └── yarn/ │ └── action.yml ├── .gitignore ├── .prettierrc ├── AGENTS.md ├── AI_OVERVIEW.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── cypress/ │ ├── e2e/ │ │ ├── abort.cy.js │ │ ├── basic.cy.js │ │ ├── envelope.cy.js │ │ ├── error.cy.js │ │ ├── hover.cy.js │ │ ├── index.html │ │ ├── options.cy.js │ │ ├── regions-no-audio.cy.js │ │ ├── regions.cy.js │ │ ├── spectrogram.cy.js │ │ ├── umd.cy.js │ │ ├── umd.html │ │ └── webaudio.cy.js │ └── support/ │ ├── commands.ts │ └── e2e.ts ├── cypress.config.js ├── eslint.config.js ├── examples/ │ ├── _preview.js │ ├── all-options.js │ ├── audio/ │ │ └── reed.sh │ ├── bars.js │ ├── basic.js │ ├── custom-render.js │ ├── envelope.js │ ├── events.js │ ├── fm-synth.js │ ├── gradient.js │ ├── hover.js │ ├── minimap.js │ ├── multitrack.js │ ├── phase-vocoder/ │ │ └── index.js │ ├── pitch-worker.js │ ├── pitch.js │ ├── predecoded.js │ ├── react-global-player.js │ ├── react.js │ ├── record-sync.js │ ├── record.js │ ├── regions.js │ ├── silence.js │ ├── soundcloud.js │ ├── spectrogram-windowed.js │ ├── spectrogram.js │ ├── speed.js │ ├── split-channels.js │ ├── styling.js │ ├── timeline-custom.js │ ├── timeline.js │ ├── video.js │ ├── vowels.js │ ├── webaudio-shim.js │ ├── webaudio.js │ ├── zoom-plugin.js │ └── zoom.js ├── index.html ├── jest.config.js ├── package.json ├── rollup.config.js ├── scripts/ │ ├── clean.cjs │ ├── plugin.sh │ └── plugin.ts.template ├── src/ │ ├── __tests__/ │ │ ├── base-plugin.test.ts │ │ ├── dom.test.ts │ │ ├── draggable.test.ts │ │ ├── event-emitter.test.ts │ │ ├── fetcher.test.ts │ │ ├── memory-leaks.test.ts │ │ ├── minimap.test.ts │ │ ├── player.test.ts │ │ ├── regions.test.ts │ │ ├── renderer-utils.test.ts │ │ ├── renderer.test.ts │ │ ├── timeline.test.ts │ │ ├── timer.test.ts │ │ └── wavesurfer.test.ts │ ├── base-plugin.ts │ ├── decoder.ts │ ├── dom.ts │ ├── draggable.ts │ ├── event-emitter.ts │ ├── fetcher.ts │ ├── fft.ts │ ├── player.ts │ ├── plugins/ │ │ ├── envelope.ts │ │ ├── hover.ts │ │ ├── minimap.ts │ │ ├── record.ts │ │ ├── regions.ts │ │ ├── spectrogram-windowed.ts │ │ ├── spectrogram-worker.ts │ │ ├── spectrogram.ts │ │ ├── timeline.ts │ │ └── zoom.ts │ ├── reactive/ │ │ ├── README.md │ │ ├── __tests__/ │ │ │ ├── drag-stream.test.ts │ │ │ ├── event-stream-emitter.test.ts │ │ │ ├── event-streams.test.ts │ │ │ ├── media-event-bridge.test.ts │ │ │ ├── render-scheduler.test.ts │ │ │ ├── scroll-stream.test.ts │ │ │ ├── state-event-emitter.test.ts │ │ │ └── store.test.ts │ │ ├── drag-stream.ts │ │ ├── event-stream-emitter.ts │ │ ├── event-streams.ts │ │ ├── media-event-bridge.ts │ │ ├── render-scheduler.ts │ │ ├── scroll-stream.ts │ │ ├── state-event-emitter.ts │ │ └── store.ts │ ├── renderer-utils.ts │ ├── renderer.ts │ ├── state/ │ │ ├── __tests__/ │ │ │ └── wavesurfer-state.test.ts │ │ └── wavesurfer-state.ts │ ├── timer.ts │ ├── wavesurfer.ts │ └── webaudio.ts ├── tsconfig.json └── tsconfig.test.json