GithubHelp home page GithubHelp logo

vinyl's Introduction

Vinyl Audio

What is this?

A simple audio player block for WordPress Gutenberg.

When should I use this?

This is currently a work in progress. You shouldn't use it yet on a production site. Though if you are interested in this, please try it out and submit feedback and/or a pull request.

The goal of this block is to create a customizable audio player that builds on the functionality of the core/audio block.

Goals

  • Replicate the functionality of core/audio.
  • Provide transforms to and from core/audio.
  • Fully translatable
  • Accessible UI
  • Customizable UI
  • Playlists

Inspiration

  • Gutenberg core/audio block from @wordpress/block-library

License

Vinyl Audio is free software, and is released under the terms of the GNU General Public License version 2. See LICENSE.md for complete license.

vinyl's People

Contributors

johnhooks avatar

Stargazers

 avatar Huub avatar Erik Golinelli avatar

Watchers

Erik Golinelli avatar

vinyl's Issues

Fix layout in mobile

The player is layout in a single row, when the container gets too small it should separate the playhead track from other controls and layout in two rows.

On small screens the layout compresses so much the buttons shrink to be too small to see.

compressed-layout

Add a global player

Problem

The current implementation of the audio player block is standalone, each has it's own source and player controller. This means the details of what is playing are lost when the element is scrolled away from, also it would need to be found again in order to mute or pause (there are some browser controls for this, though not super intuitive).

Solution

Add a global player that would remain at a fixed location on the screen and would follow the user, providing information about what is playing and access to player controls.

Thoughts

  • This would require adding a more complex player state.

  • Allows adding playlists and player queue.

  • If the player were to use the Interactivity API, and the website use the interactive navigation, the player state would remain consistent between page navigation, allowing an uninterrupted experience.

  • This could allow the player to queue "up next" or push the new audio in front, keeping the location of the previous audio for when it is resumed.

References

Fix plugin review issues

  • Use exact wording for license in readme.txt and plugin header.
  • Include the composer.json file.
  • Add links to source code in the readme.txt.
  • Include links to media-chrome in readme.txt.

Add translatable labels to the audio player

Problem

The aria-label and aria-valuetext of the media-chrome web components are not accessible from outside the web components, making them unable to use gettext functions.

Solution

Use custom versions of the media-chrome web components, to provide access to the labels.

Support custom colors

Problem

The default look of the audio player is very basic.

Solution

Add block editor controls to customize the colors of the audio player.

The default should be the theme colors, with the ability to override with a custom selection. They should be global attributes for the player blocks, and used site wide.

Possible issues

The media-chrome library uses custom properties for most customizations. This makes it tricky to use the default blocks supports for color, because they are assigned as background and color styles on the block itself, and we need to assign them to custom properties.

Todo

  • Research if there is a filter for block supports color, and if how it applies the colors can be overridden.

Relates to #10

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.