Security News
Opengrep Emerges as Open Source Alternative Amid Semgrep Licensing Controversy
Opengrep forks Semgrep to preserve open source SAST in response to controversial licensing changes.
@solid-primitives/audio
Advanced tools
Primitive to manage audio playback in the browser. The primitives are easily composable and extended. To create your own audio element, consider using makeAudioPlayer which allows you to supply a player instance that matches the built-in standard Audio API.
Each primitive also exposes the audio instance for further custom extensions. Within an SSR context this audio primitive performs noops but never interrupts the process. Time values and durations are zero'd and in LOADING state.
npm install @solid-primitives/audio
# or
yarn add @solid-primitives/audio
A foundational primitive with no player controls but exposes the raw player object.
const player = makeAudio("example.mp3");
function makeAudio(src: AudioSource, handlers: AudioEventHandlers = {}): HTMLAudioElement;
Provides a very basic interface for wrapping listeners to a supplied or default audio player.
const { play, pause, seek } = makeAudioPlayer("example.mp3");
function makeAudioPlayer(
src: AudioSource,
handlers: AudioEventHandlers = {}
): {
play: VoidFunction;
pause: VoidFunction;
seek: (time: number) => void;
setVolume: (volume: number) => void;
player: HTMLAudioElement;
};
The seek function falls back to fastSeek when on supporting browsers.
Creates a very basic audio/sound player with reactive properties to control the audio. Be careful not to destructure the properties provided by the primitive as it will likely break reactivity.
const [playing, setPlaying] = createSignal(false);
const [volume, setVolume] = createSignal(false);
const [playhead, setPlayhead] = createSignal(0);
const audio = createAudio("sample.mp3", playing, playhead, volume);
setPlaying(true);
audio.seek(4000);
The audio primitive exports an reactive properties that provides you access to state, duration and playhead location.
Note: Initializing the primitive with playing
as true works, however note that the user has to interact with the page first (on a fresh page load).
function makeAudioPlayer(
src: AudioSource | Accessor<AudioSource>,
playing?: Accessor<boolean>,
volume?: Accessor<number>
): {
seek: (time: number) => void;
state: AudioState;
currentTime: number;
duration: number;
player: HTMLAudioElement;
};
The source property can be a signal as well as a media source. Upon switching the source via a signal it will continue playing from the head.
const [src, setSrc] = createSignal("sample.mp3");
const audio = createAudio(src);
setSrc("sample2.mp3");
createAudio
as well as makeAudio
and makeAudioPlayer
all accept MediaSource as a property.
const media = new MediaSource();
const audio = createAudio(URL.createObjectURL(media));
This allows you to managed streamed or Blob supplied media. In essence the primitives in this package are very flexible and allow direct access to the base browser API.
You may view a working example here: https://codesandbox.io/s/solid-primitives-audio-5c9f3
0.0.100
Pulling an early release of the package together and preparing for 1.0.0 release. No changes.
1.0.0
Minor clean-up, added tests and released.
1.0.1
Added testing and support for srcObject.
1.1.6
Added proper SSR and CJS support.
1.1.8
Updated to Solid 1.3.
1.2.0
Major improvements to bring package in line with project standards.
1.3.0
A major refactor of the audio
package that includes new basic and reactive primitives.
FAQs
Primitives to manage audio and single sounds.
The npm package @solid-primitives/audio receives a total of 613 weekly downloads. As such, @solid-primitives/audio popularity was classified as not popular.
We found that @solid-primitives/audio demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
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.
Security News
Opengrep forks Semgrep to preserve open source SAST in response to controversial licensing changes.
Security News
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
Security News
cURL and Go security teams are publicly rejecting CVSS as flawed for assessing vulnerabilities and are calling for more accurate, context-aware approaches.