Giter Site home page Giter Site logo

leonardomso / roover Goto Github PK

View Code? Open in Web Editor NEW
90.0 4.0 8.0 15.29 MB

๐Ÿฑ A lightweight audio library for React apps.

Home Page: https://roover.vercel.app

License: MIT License

HTML 0.73% TypeScript 99.27%
react audio player audio-player sound hooks reactjs react-hook html5-audio-api html5-audio-player

roover's Introduction


Roover

Manage audio in React with ease

Build Status Build Size Version License: MIT

Motivation

Modern applications are using audio all the time. Audio can turn a boring application into an interesting one, adding emotion to the content. Most of the modern applications that we use daily are using audio for at least in some part.

Work with audio in React applications is painful. There are not too many good libraries to manage audio and most of the time we need to create our solutions. Manage audio in a modern application is important and should be made by using the best tools and libraries.

The idea to create this library was to provide a powerful and lightweight audio library for React apps. A custom React Hook that is easy to integrate with and has a ton of features to help speed up development without having to worry about anything.

Installation

yarn add roover

Usage

All you need to do is import the useRoover hook and use it on your React component.

import React from 'react';
import useRoover from 'roover';

const src =
  'https://storage.googleapis.com/media-session/elephants-dream/the-wires.mp3';

const App = () => {
  const {
    initial,
    loading,
    ready,
    playing,
    paused,
    onPlay,
    onPause,
  } = useRoover({
    src,
    autoplay: true,
  });

  return (
    <div>
      <p>Loading: {loading ? 'true' : 'false'}</p>
      <p>Ready: {ready ? 'true' : 'false'}</p>
      <button onClick={onPlay}>Play</button>
      <button onClick={onPause}>Pause</button>
    </div>
  );
};

Example

To run the example do the following steps:

  1. git clone the repository
  2. cd roover/example
  3. yarn install
  4. yarn start

Contributing

Your contributions are welcome! If you have any questions or want to start to contribute to this library in any form, please open an issue. Feel free to open PR.

If there are any questions about this library or about any other topic, please contact me on Twitter @leonardomso and I'll gladly answer it.

License

MIT License ยฉ 2021 Leonardo Maldonado

roover's People

Contributors

dependabot-preview[bot] avatar dependabot[bot] avatar leonardomso avatar moorscode avatar wendelfreitas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

roover's Issues

Preload

Right now the library is loading the audio by default. Create a parameter on the useRehawk hook called preload so the user can choose when to load the audio. Also, provide a method called load or loadAudio.

Event Status Constants

Maybe is a good alternative create constants to manage this data

like a file with all exported constants

//src/utils/constants.ts

export default { 
 PAUSE: 'PAUSE'
}

//src/hooks/useRoover/useRoover.ts

import ROOVER from 'utils/constants'; 

service.send(ROOVER.PAUSE);

service.send('PAUSE');

What do you think @leonardomso ?

Callback props

Create callback props that would be very useful, for example:

  • onLoading - called when audio is loading.
  • onReady - called when audio is ready to play.
  • onError - called when there was an error.
  • onPlaying - called when audio is playing.
  • onPaused - called when audio is paused.
  • onStopped - called when audio is stopped.
  • onMute - called when the mute value is changed.
  • onLoop - called when the loop value is changed.
  • onEnd - called when audio is ended.

Move away from Howler

The current bundle size of the package is now 39.3 kB, I am working in a POC to move away from Howler and use only the Audio API.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.