Lottie Web Player as a solid.js component
npm install lottie-solidThis is a Solid.js component for the Lottie Web Player.
Based on the Lottie Player Web Component.
1. Install package using npm or yarn.
``shell`
npm install lottie-solid
2. Import package in your code.
`javascript`
import { Player, Buttons, Theme } from 'lottie-solid';
Add the element Player and set the src prop to a URL pointing to a valid Lottie JSON.
`javascript`
loop
controls
src="https://assets3.lottiefiles.com/packages/lf20_UJNc2t.json"
style={{ height: '300px', width: '300px' }}
buttons={[Buttons.Play, Buttons.Repeat, Buttons.Frame]}
theme={Theme.Transparent}
/>
| Prop | Description | Type | Default |
|----------------------|------------------------------------------------------------------------|---------------------|-------------|
| lottieRef | Get lottie animation object | function | undefined |onEvent
| | Listen for events | function | undefined |onStateChange
| | Play state changes | function | undefined |onBackgroundChange
| | Listen for bg changes | function | undefined |autoplay
| | Autoplay animation on load. | boolean | false |background
| | Background color. | string | undefined |controls
| | Show controls. | boolean | false |direction
| | Direction of animation. | number | 1 |hover
| | Whether to play on mouse hover. | boolean | false |click
| | Whether to play on mouse click. | boolean | false |keepLastFrame
| | Stop animation on the last frame.Has no effect if loop is true. | boolean | false |loop
| | Whether to loop animation. | boolean | false |renderer
| | Renderer to use. | "svg" \| "canvas" | 'svg' |speed
| | Animation speed. | number | 1 |style
| | The style for the container. | object | undefined |buttons
| | The buttons to show. | Buttons[] | undefined |theme
| | The theme to use. | Theme | undefined |src
| _(required)_ | Bodymovin JSON data or URL to JSON. | object | string |
To call methods on the instance of the Player component. You may get a reference to the component and call the methods
on ref.current. That's a solid way of doing a document.getElementById(); You may then use this ref i.e.: player
in the example below to call methods that are described in this documentation.
`typescript jsx
import { createSignal, createEffect } from 'solid-js';
import { Player } from 'lottie-solid';
export default function App() {
const [playerRef, setPlayerRef] = createSignal
return (
loop
src="https://assets3.lottiefiles.com/packages/lf20_XZ3pkn.json"
style={{ height: '300px', width: '300px' }}
/>
);
}
`
The lottieRef prop returns the Lottie instance which you can use to set data and call methods as described in the
bodymovin documentation.
`typescript jsx
import { createSignal, createEffect } from 'solid-js';
import { Player, AnimationItem } from 'lottie-solid';
export default function App() {
const [lottieRef, setLottieRef] = createSignal
// example of calling a method on the lottie instance
// this will pause the animation after 1 second
createEffect(() => {
const lottie = lottieRef();
if (lottie) {
setTimeout(() => lottie.pause(), 1000);
}
});
return (
loop
src="https://assets3.lottiefiles.com/packages/lf20_XZ3pkn.json"
style={{ height: '300px', width: '300px' }}
/>
);
}
`
`typescript jsx
import { createSignal, createEffect } from 'solid-js';
import { Player, AnimationItem } from 'lottie-solid';
export default function App() {
const [lottieRef, setLottieRef] = createSignal
const doSomething = () => {
lottieRef()?.play(); // make use of the lottie instance and call methods
}
return (
// check event type and do something
if (event === 'load') {
this.doSomething();
}
}}
lottieRef={setLottieRef}
loop
src="https://assets3.lottiefiles.com/packages/lf20_XZ3pkn.json"
style={{ height: '300px', width: '300px' }}
/>
);
}
`
The following events are exposed and can be listened to via addEventListener calls.
| Name | Description |
|------------|---------------------------------------------------------------------------|
| load | Animation data is loaded. |error
| | An animation source cannot be parsed, fails to load or has format errors. |ready
| | Animation data is loaded and player is ready. |play
| | Animation starts playing. |pause
| | Animation is paused. |stop
| | Animation is stopped. |loop
| | An animation loop is completed. |complete
| | Animation is complete (all loops completed). |frame
| | A new frame is entered. |
Pause animation play.
#### Returns
Type: void
Start playing animation.
#### Returns
Type: void
Animation play direction.
#### Parameters
| Name | Type | Description |
|---------|----------|-------------------|
| value | number | Direction values. |
#### Returns
Type: void
Sets animation play speed.
#### Parameters
| Name | Type | Description |
|---------|----------|-----------------|
| value | number | Playback speed. |
#### Returns
Type: void
Stops animation play.
#### Returns
Type: void
Seek to a given frame.
#### Returns
Type: void`
MIT License © Neulen.dev