Socket
Book a DemoInstallSign in
Socket

@indevstudio/wavesurfer-react

Package Overview
Dependencies
Maintainers
2
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@indevstudio/wavesurfer-react

react wrapper for @indevstudio/wavesurfer.js

latest
Source
npmnpm
Version
2.1.4
Version published
Maintainers
2
Created
Source

Wavesurfer React

A simple wrapper around an awesome library called wavesurfer.js.

The purpose of the package is to provide an abstraction over wavesurfer.js API and to do it as close to react style of doing things as its maintainer(-s) can provide.

// Plugins prop format
// now you have to pass always an array of objects, where each can contain three properties,
// only one of them is required - plugin;
// plugin property is a plugin class, imported from wavesurfer.js
// example:
import RegionsPlugin from "wavesurfer.js/dist/plugin/wavesurfer.regions.min";
import TimelinePlugin from "wavesurfer.js/dist/plugin/wavesurfer.timeline.min";
import CursorPlugin from "wavesurfer.js/dist/plugin/wavesurfer.cursor.min";

const plugins = [
  {
    plugin: RegionsPlugin,
    options: { dragSelection: true }
  },
  {
    plugin: TimelinePlugin,
    options: {
      container: "#timeline"
    }
  },
  {
    plugin: CursorPlugin
  }
];

User Guide

Components

Package provides the following set of components:

  • WaveSurfer
  • WaveForm
  • Region

WaveSurfer

Core component of the package.
It creates wavesurfer instance and watches for changes in plugins list.
It accepts the following props set:

  • plugins
  • onMount
Plugins Prop

It is a list of plugins to use by WaveSurfer and has the following format:

import { WaveSurfer } from 'wavesurfer-react';
import MyCustomPlugin from 'my-custom-plugin-path'; 

const myPlugin = {
    plugin: MyCustomPlugin,
    options: {
        someGreatOption: 'someGreatValue'
    },
    creator: 'myCustomCreate'
};

const plugins = [myPlugin];

<WaveSurfer plugins={plugins} />

The plugins prop is watched inside WaveSurfer.
If plugin was disabled (it's not enlisted in plugins prop) it will be destroyed, otherwise added to wavesurfer plugins list and immediately initialized.

onMount prop

It is a function, that is called after WaveSurfer instance has been mounted.
It has only one argument - WaveSurfer instance.

WaveForm

It is used to configure WaveForm.

It accepts all options, passed into WaveSurfer.create, but except plugins.
Read the full list of available options.

Region

Think of it as a some kind of helper component. It can be used to imperatively control regions, appearing on WaveForm if you're using RegionsPlugin.
If region is already present of WaveForm it creation will be avoided and existing instance is used. On mount, it will try to find region with the same region identifier and then attaches itself to it.
If region component did not find appropriate region, then it creates a region itself.

It accepts the following props:

  • onOver - is called when mouse enters a region
  • onLeave - is called when moused leaves a region
  • onClick - is called on a mouse click on a region
  • onDoubleClick - is called on double click
  • onIn - is called when playback enters a region
  • onOut - is called when playback leaves a region
  • onRemove - is called just before region remove
  • onUpdate - is called on each region's options update
  • onUpdateEnd - is called when dragging or resizing are finished

Rest passed props are passed as region's data into wavesurfer.

Marker

Can be used to imperatively control markers. For now, only time is updatable and is watched for further updates, that are coming from outside of component.

It accepts the following props:

  • onClick is emitted when marker is clicked
  • onDrag is emitted when drag operation is started
  • onDrop is emitted when element is released after drag

Rest passed props are used as marker's data

Known Issues and Workaround

Demo

You can see how this package is intended to be used here

Roadmap

  • Easy plugin add and remove after mount*
  • Typings: PropTypes vs Flow vs TypeScript
  • TypeScript is coming, maybe...
  • Reduce amount of spelling mistakes in readme.

P.S. Tasks that are marked with start are in theory possible.

Keywords

react

FAQs

Package last updated on 24 Mar 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.