Compare commits

...

34 Commits

Author SHA1 Message Date
avivian
5a19354ab3 chore: release 0.0.26 2021-11-16 14:15:27 +00:00
Arthur Vivian
c4dc027522 bump rive-js to0.7.33 2021-11-16 14:14:25 +00:00
avivian
e54a0d42d3 chore: release 0.0.25 2021-11-12 13:28:02 +00:00
Arthur Vivian
1a597943cb Update rive-js to 0.7.32 to fixed nested artboard speed 2021-11-12 13:27:17 +00:00
avivian
026d097658 chore: release 0.0.24 2021-11-12 12:09:21 +00:00
Arthur Vivian
a4777ec7e3 Update package.json to version 2 2021-11-12 12:08:25 +00:00
avivian
416334ef44 chore: release 0.0.23 2021-11-08 14:13:59 +00:00
Arthur Vivian
f309481a43 Add verticalAlign = top to canvas to prevent canvas growth on resize 2021-11-08 14:12:54 +00:00
avivian
06500e6dcf chore: release 0.0.22 2021-10-15 15:03:55 +00:00
Arthur Vivian
33e34a46e1 Bump rive-js version to 0.7.31 2021-10-15 17:03:08 +02:00
avivian
c8f57f5896 chore: release 0.0.21 2021-09-10 14:03:10 +00:00
Arthur Vivian
5d0822836c Update examples to use latest rive-react 2021-09-10 16:02:20 +02:00
avivian
1c3cc69f40 chore: release 0.0.20 2021-09-07 14:15:50 +00:00
Arthur Vivian
44056eb565 rive-0.7.30: Fix ghosting where aspect ratio of canvas is different to that of artboard 2021-09-07 16:14:51 +02:00
avivian
a9c3233452 chore: release 0.0.19 2021-09-07 09:44:52 +00:00
Arthur Vivian
ce2c7065f5 Update rive-js to 0.7.29 2021-09-07 11:43:21 +02:00
avivian
203faf9ce2 chore: release 0.0.18 2021-08-12 12:40:56 +00:00
Arthur Vivian
fd0efb1b81 Update rive-js version to 0.7.25 2021-08-12 13:40:11 +01:00
avivian
11b6f2e879 chore: release 0.0.17 2021-08-12 08:26:20 +00:00
Arthur Vivian
8a1adf147d Update rive-js version to 0.7.24 2021-08-12 09:25:34 +01:00
avivian
80ffb5ee2d chore: release 0.0.16 2021-08-11 15:26:22 +00:00
Arthur Vivian
cf1baa6661 Update rive-js version to 0.7.23 2021-08-11 16:25:30 +01:00
avivian
f0b1aeb7d8 chore: release 0.0.15 2021-07-30 09:32:03 +00:00
Arthur Vivian
8612e0b15f update rive-js with support for distance and transform constraints 2021-07-30 10:31:19 +01:00
avivian
d7f7eab655 chore: release 0.0.14 2021-07-21 08:47:12 +00:00
Arthur Vivian
29bd502208 chore: bump to 0.0.13 2021-07-21 09:46:24 +01:00
Arthur Vivian
7266fc5d2f chore: bump to 0.0.12 2021-07-21 09:25:36 +01:00
Arthur Vivian
6c80c5311e Bump rive-js to 0.7.19 with support for IK constraints 2021-07-21 09:03:37 +01:00
umberto-sonnino
9db4ee52bf chore: release 0.0.11 2021-07-14 15:57:41 +00:00
Umberto Sonnino
67a955e11b Merge pull request #26 from rive-app/camelCaseParams
Update README with camelCase params
2021-07-14 16:56:50 +01:00
Umberto Sonnino
14b774676b Update README with camel case params 2021-07-12 12:03:04 +01:00
avivian
0b14c4cd4c chore: release 0.0.10 2021-06-28 15:10:18 +00:00
Arthur Vivian
59e8855f51 Merge pull request #23 from rive-app/build-fix
Include types in npm publish
2021-06-28 16:09:34 +01:00
Arthur Vivian
7bd5178ab4 Include types in npm publish 2021-06-28 16:07:50 +01:00
42 changed files with 11056 additions and 169 deletions

View File

@@ -9,9 +9,9 @@
},
"github": {
"release": true,
"releaseName": "Release ${version}"
"releaseName": "${version}"
},
"hooks": {
"after:bump": "npx auto-changelog -p"
"after:bump": ["npx auto-changelog -p", "git add ./CHANGELOG.md"]
}
}

View File

@@ -4,9 +4,81 @@ All notable changes to this project will be documented in this file. Dates are d
Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
#### [v0.0.26](https://github.com/rive-app/rive-react/compare/v0.0.20...v0.0.26)
- bump rive-js to0.7.33 [`c4dc027`](https://github.com/rive-app/rive-react/commit/c4dc027522502f6aaa0f85392a5e90396c8b719d)
#### [v0.0.20](https://github.com/rive-app/rive-react/compare/v0.0.19...v0.0.20)
> 7 September 2021
- chore: release 0.0.20 [`1c3cc69`](https://github.com/rive-app/rive-react/commit/1c3cc69f401b91810105b16ccce1dd7612da037a)
- rive-0.7.30: Fix ghosting where aspect ratio of canvas is different to that of artboard [`44056eb`](https://github.com/rive-app/rive-react/commit/44056eb5654e90de6ba10ed4892a4e2a5ebf6716)
#### [v0.0.19](https://github.com/rive-app/rive-react/compare/v0.0.18...v0.0.19)
> 7 September 2021
- chore: release 0.0.19 [`a9c3233`](https://github.com/rive-app/rive-react/commit/a9c3233452d9f6465c761cda0763d314ba712267)
- Update rive-js to 0.7.29 [`ce2c706`](https://github.com/rive-app/rive-react/commit/ce2c7065f567e43cfcca4c8f98e98aaf6e92f4c3)
#### [v0.0.18](https://github.com/rive-app/rive-react/compare/v0.0.17...v0.0.18)
> 12 August 2021
- chore: release 0.0.18 [`203faf9`](https://github.com/rive-app/rive-react/commit/203faf9ce22ee307af815ebdc2790f6bacbe0016)
- Update rive-js version to 0.7.25 [`fd0efb1`](https://github.com/rive-app/rive-react/commit/fd0efb1b815ae833e3b50b643b00464542f6f800)
#### [v0.0.17](https://github.com/rive-app/rive-react/compare/v0.0.16...v0.0.17)
> 12 August 2021
- chore: release 0.0.17 [`11b6f2e`](https://github.com/rive-app/rive-react/commit/11b6f2e8792781ad38dce745f080b69a94c35c3a)
- Update rive-js version to 0.7.24 [`8a1adf1`](https://github.com/rive-app/rive-react/commit/8a1adf147d25f4616ef048a84986314e9397ad43)
#### [v0.0.16](https://github.com/rive-app/rive-react/compare/v0.0.15...v0.0.16)
> 11 August 2021
- chore: release 0.0.16 [`80ffb5e`](https://github.com/rive-app/rive-react/commit/80ffb5ee2d3b3dd22d1c229e1f4e772e7fe763b3)
- Update rive-js version to 0.7.23 [`cf1baa6`](https://github.com/rive-app/rive-react/commit/cf1baa6661f643996e37b26a5a9a6dd9a9950e06)
#### [v0.0.15](https://github.com/rive-app/rive-react/compare/v0.0.14...v0.0.15)
> 30 July 2021
- chore: release 0.0.15 [`f0b1aeb`](https://github.com/rive-app/rive-react/commit/f0b1aeb7d850103b61310c9251a827f835fadf58)
- update rive-js with support for distance and transform constraints [`8612e0b`](https://github.com/rive-app/rive-react/commit/8612e0b15f6c93d4e5c276c95e7f36543466e4d6)
#### [v0.0.14](https://github.com/rive-app/rive-react/compare/v0.0.11...v0.0.14)
> 21 July 2021
- Bump rive-js to 0.7.19 with support for IK constraints [`6c80c53`](https://github.com/rive-app/rive-react/commit/6c80c5311e99ee47e9f4fc3c5f35ab908ddfa326)
- chore: release 0.0.14 [`d7f7eab`](https://github.com/rive-app/rive-react/commit/d7f7eab65577732fa1e9f792bc14f10d89c0ccaf)
- chore: bump to 0.0.13 [`29bd502`](https://github.com/rive-app/rive-react/commit/29bd502208efa6928ffb47f06b5e548f071a8ade)
#### [v0.0.11](https://github.com/rive-app/rive-react/compare/v0.0.10...v0.0.11)
> 14 July 2021
- Update README with camelCase params [`#26`](https://github.com/rive-app/rive-react/pull/26)
- Update README with camel case params [`14b7746`](https://github.com/rive-app/rive-react/commit/14b774676b41fa3082cb6554ee2062aa7d773da9)
- chore: release 0.0.11 [`9db4ee5`](https://github.com/rive-app/rive-react/commit/9db4ee52bf919add026c4c5487a5ca399cc0b823)
#### [v0.0.10](https://github.com/rive-app/rive-react/compare/v0.0.9...v0.0.10)
> 28 June 2021
- Include types in npm publish [`#23`](https://github.com/rive-app/rive-react/pull/23)
- chore: release 0.0.10 [`0b14c4c`](https://github.com/rive-app/rive-react/commit/0b14c4cd4cc49f6b7b1567b23752688092ca73b4)
#### [v0.0.9](https://github.com/rive-app/rive-react/compare/v0.0.8...v0.0.9)
> 28 June 2021
- Fix build automation and only include dist files [`#22`](https://github.com/rive-app/rive-react/pull/22)
- chore: release 0.0.9 [`2ec726c`](https://github.com/rive-app/rive-react/commit/2ec726cf12361254403539b30ebafb9adef9254d)
#### v0.0.8

View File

@@ -73,7 +73,7 @@ export default Example;
#### Parameters
- `riveParams`: Set of parameters that are passed to the Rive.js `Rive` class constructor. `null` and `undefined` can be passed to conditionally display the .rive file.
- `riveParams`: Set of parameters that are passed to the Rive.js `Rive` class constructor. `null` and `undefined` can be passed to conditionally display the .riv file.
- `opts`: Rive React specific options.
#### Return Values
@@ -94,13 +94,13 @@ export default Example;
- `stateMachines?`: _(optional)_ Name of list of names of state machines to load.
- `layout?`: _(optional)_ Layout object to define how animations are displayed on the canvas. See [Rive.js](https://github.com/rive-app/rive-wasm#layout) for more details.
- `autoplay?`: _(optional)_ If `true`, the animation will automatically start playing when loaded. Defaults to false.
- `onload?`: _(optional)_ Callback that get's fired when the .rive file loads .
- `onloaderror?`: _(optional)_ Callback that get's fired when an error occurs loading the .riv file.
- `onplay?`: _(optional)_ Callback that get's fired when the animation starts playing.
- `onpause?`: _(optional)_ Callback that get's fired when the animation pauses.
- `onstop?`: _(optional)_ Callback that get's fired when the animation stops playing.
- `onloop?`: _(optional)_ Callback that get's fired when the animation completes a loop.
- `onstatechange?`: _(optional)_ Callback that get's fired when a state change occurs.
- `onLoad?`: _(optional)_ Callback that get's fired when the .rive file loads .
- `onLoadError?`: _(optional)_ Callback that get's fired when an error occurs loading the .riv file.
- `onPlay?`: _(optional)_ Callback that get's fired when the animation starts playing.
- `onPause?`: _(optional)_ Callback that get's fired when the animation pauses.
- `onStop?`: _(optional)_ Callback that get's fired when the animation stops playing.
- `onLoop?`: _(optional)_ Callback that get's fired when the animation completes a loop.
- `onStateChange?`: _(optional)_ Callback that get's fired when a state change occurs.
#### opts
@@ -115,20 +115,30 @@ The `useStateMachineInput` hook is provided to make it easier to interact with s
import { useRive, useStateMachineInput } from 'rive-react';
function Example() {
const STATE_MACHINE_NAME = 'button';
const INPUT_NAME = 'onClick';
const { RiveComponent, rive } = useRive({
src: 'button.riv',
stateMachines: 'button',
stateMachines: STATE_MACHINE_NAME,
autoplay: true,
});
const onClickInput = useStateMachineInput(rive, 'button', 'onClick');
const onClickInput = useStateMachineInput(
rive,
STATE_MACHINE_NAME,
INPUT_NAME
);
return <RiveComponent onClick={() => onClickInput && onClickInput.fire())} />;
// This example is using a state machine with a trigger input.
return <RiveComponent onClick={() => onClickInput.fire()} />;
}
export default Example;
```
See our [examples](examples) folder for working examples of [Boolean](examples/state-machine-boolean-input) and [Number](examples/state-machine-number-input) inputs.
#### Parameters
- `rive`: A `Rive` object. This is returned by the `useRive` hook.
@@ -141,4 +151,4 @@ A Rive.js `stateMachineInput` object.
## Examples
The `examples` shows a number of different ways to use Rive React. See the instructions for each example to run locally.
The [examples](examples) shows a number of different ways to use Rive React. See the instructions for each example to run locally.

View File

@@ -13,7 +13,7 @@
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "4.0.3",
"rive-react": "0.0.1",
"rive-react": "latest",
"typescript": "^4.3.2",
"web-vitals": "^1.1.2"
},

View File

@@ -1,8 +1,8 @@
import { useRive, UseRiveParameters } from "rive-react";
import { useRive, UseRiveParameters } from 'rive-react';
function App() {
const params: UseRiveParameters = {
src: "poison-loader.riv",
src: 'poison-loader.riv',
autoplay: true,
};
@@ -10,7 +10,7 @@ function App() {
return (
// The animation will fit to the parent element.
<div style={{ height: "500px", width: "500px" }}>
<div style={{ height: '500px', width: '500px' }}>
<RiveComponent />
</div>
);

View File

@@ -1,10 +1,10 @@
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById("root")
document.getElementById('root')
);

View File

@@ -9,7 +9,7 @@
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "4.0.3",
"rive-react": "0.0.1",
"rive-react": "latest",
"web-vitals": "^1.1.2"
},
"scripts": {

View File

@@ -1,8 +1,8 @@
import { useRive } from "rive-react";
import { useRive } from 'rive-react';
function App() {
const params = {
src: "poison-loader.riv",
src: 'poison-loader.riv',
autoplay: true,
};
@@ -10,7 +10,7 @@ function App() {
return (
// The animation will fit to the parent element.
<div style={{ height: "500px", width: "500px" }}>
<div style={{ height: '500px', width: '500px' }}>
<RiveComponent />
</div>
);

View File

@@ -1,10 +1,10 @@
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById("root")
document.getElementById('root')
);

View File

@@ -9,7 +9,7 @@
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "4.0.3",
"rive-react": "0.0.1",
"rive-react": "latest",
"web-vitals": "^1.1.2"
},
"scripts": {

View File

@@ -1,9 +1,9 @@
import Rive from "rive-react";
import Rive from 'rive-react';
function App() {
return (
// The animation will fit to the parent element.
<div style={{ height: "500px", width: "500px" }}>
<div style={{ height: '500px', width: '500px' }}>
<Rive src="poison-loader.riv" autoplay />
</div>
);

View File

@@ -1,10 +1,10 @@
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById("root")
document.getElementById('root')
);

View File

@@ -9,7 +9,7 @@
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "4.0.3",
"rive-react": "0.0.1",
"rive-react": "latest",
"web-vitals": "^1.1.2"
},
"scripts": {

View File

@@ -1,8 +1,8 @@
import { useRive } from "rive-react";
import { useRive } from 'rive-react';
function App() {
const params = {
src: "poison-loader.riv",
src: 'poison-loader.riv',
autoplay: false,
};
@@ -23,7 +23,7 @@ function App() {
}
return (
<div style={{ height: "600px", width: "600px" }}>
<div style={{ height: '600px', width: '600px' }}>
<RiveComponent onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave} />
</div>
);

View File

@@ -1,10 +1,10 @@
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById("root")
document.getElementById('root')
);

View File

@@ -9,7 +9,7 @@
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "4.0.3",
"rive-react": "0.0.1",
"rive-react": "latest",
"web-vitals": "^1.1.2"
},
"scripts": {

View File

@@ -8,7 +8,7 @@
name="description"
content="Web site created using create-react-app"
/>
<title>Rive React - Basic with Hook</title>
<title>Rive React - Play/Pause Button</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>

View File

@@ -1,10 +1,10 @@
import { useEffect, useState } from "react";
import { useRive } from "rive-react";
import { useEffect, useState } from 'react';
import { useRive } from 'rive-react';
function App() {
const [buttonText, setButtonText] = useState("Pause");
const [buttonText, setButtonText] = useState('Pause');
const { RiveComponent, rive } = useRive({
src: "poison-loader.riv",
src: 'poison-loader.riv',
autoplay: true,
});
@@ -12,13 +12,13 @@ function App() {
if (rive) {
// "play" event is fired when the animation starts to play, so we update
// button text on this event.
rive.on("play", () => {
setButtonText("Pause");
rive.on('play', () => {
setButtonText('Pause');
});
// As above, the "pause" event is fired when the animation pauses.
rive.on("pause", () => {
setButtonText("Play");
rive.on('pause', () => {
setButtonText('Play');
});
}
// We listen for changes to the rive object. The rive object will be null
@@ -40,7 +40,7 @@ function App() {
return (
// The animation will fit to the parent element, so we set a large height
// and width for this example.
<div style={{ height: "500px", width: "500px" }}>
<div style={{ height: '500px', width: '500px' }}>
<RiveComponent />
<button onClick={onButtonClick}>{buttonText}</button>
</div>

View File

@@ -1,10 +1,10 @@
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById("root")
document.getElementById('root')
);

View File

@@ -1,4 +1,4 @@
# State Machine Button
# State Machine Boolean Input
This example shows how to interact with a state machine, using various onMouse\* callbacks to trigger transations.

View File

@@ -0,0 +1,36 @@
{
"name": "state-machine-boolean-input",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.13.0",
"@testing-library/react": "^11.2.7",
"@testing-library/user-event": "^12.8.3",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "4.0.3",
"rive-react": "latest",
"web-vitals": "^1.1.2"
},
"scripts": {
"start": "SKIP_PREFLIGHT_CHECK=true react-scripts start"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}

View File

@@ -0,0 +1,17 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Web site created using create-react-app"
/>
<title>Rive React - State Machine Boolean Input</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
</body>
</html>

View File

@@ -0,0 +1,58 @@
import { useRive, useStateMachineInput } from 'rive-react';
function App() {
const STATE_MACHINE_NAME = 'State Machine 1';
const ON_HOVER_INPUT_NAME = 'Hover';
const ON_PRESSED_INPUT_NAME = 'Pressed';
const { RiveComponent, rive } = useRive({
src: 'like.riv',
stateMachines: STATE_MACHINE_NAME,
artboard: 'New Artboard',
autoplay: true,
});
// Both onHoverInput and onPressedInput are boolean inputs. To transition
// states we need to set the value property to true or false.
const onHoverInput = useStateMachineInput(
rive,
STATE_MACHINE_NAME,
ON_HOVER_INPUT_NAME
);
const onPressedInput = useStateMachineInput(
rive,
STATE_MACHINE_NAME,
ON_PRESSED_INPUT_NAME
);
function onMouseEnter() {
onHoverInput.value = true;
}
function onMouseLeave() {
onHoverInput.value = false;
}
function onMouseDown() {
onPressedInput.value = true;
}
function onMouseUp() {
onPressedInput.value = false;
}
return (
// The animation will fit to the parent element, so we set a large height
// and width for this example.
<div style={{ height: '500px', width: '500px' }}>
<RiveComponent
onMouseEnter={onMouseEnter}
onMouseLeave={onMouseLeave}
onMouseDown={onMouseDown}
onMouseUp={onMouseUp}
/>
</div>
);
}
export default App;

View File

@@ -0,0 +1,10 @@
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);

View File

@@ -1,54 +0,0 @@
import { useRive, useStateMachineInput } from "rive-react";
function App() {
const { RiveComponent, rive } = useRive({
src: "like.riv",
stateMachines: "State Machine 1",
artboard: "New Artboard",
autoplay: true,
});
const hoverInput = useStateMachineInput(rive, "State Machine 1", "Hover");
const pressedInput = useStateMachineInput(rive, "State Machine 1", "Pressed");
function onMouseEnter() {
// state machine inputs will be null until the rive file has loaded, so we
// put these guards in place to avoid any errors.
if (hoverInput) {
hoverInput.value = true;
}
}
function onMouseLeave() {
if (hoverInput) {
hoverInput.value = false;
}
}
function onMouseDown() {
if (pressedInput) {
pressedInput.value = true;
}
}
function onMouseUp() {
if (pressedInput) {
pressedInput.value = false;
}
}
return (
// The animation will fit to the parent element, so we set a large height
// and width for this example.
<div style={{ height: "500px", width: "500px" }}>
<RiveComponent
onMouseEnter={onMouseEnter}
onMouseLeave={onMouseLeave}
onMouseDown={onMouseDown}
onMouseUp={onMouseUp}
/>
</div>
);
}
export default App;

View File

@@ -1,10 +0,0 @@
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById("root")
);

View File

@@ -0,0 +1,14 @@
# State Machine Number Input
This example shows how to interact with a state machine with number inputs. We trigger the transistions by changing the value of a number input.
## To Run
This example is created using [Create React App](https://reactjs.org/docs/create-a-new-react-app.html).
To install and run:
```
npm install
npm start
```

View File

@@ -1,5 +1,5 @@
{
"name": "state-machine-button",
"name": "state-machine-number-input",
"version": "0.1.0",
"private": true,
"dependencies": {
@@ -9,7 +9,7 @@
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "4.0.3",
"rive-react": "0.0.1",
"rive-react": "latest",
"web-vitals": "^1.1.2"
},
"scripts": {

View File

@@ -8,7 +8,7 @@
name="description"
content="Web site created using create-react-app"
/>
<title>Rive React - Basic with Hook</title>
<title>Rive React - State Machine Number Input</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>

View File

Binary file not shown.

View File

@@ -0,0 +1,34 @@
import { useRive, useStateMachineInput } from 'rive-react';
function App() {
const STATE_MACHINE_NAME = 'State Machine ';
const INPUT_NAME = 'Level';
const { RiveComponent, rive } = useRive({
src: 'skills.riv',
stateMachines: STATE_MACHINE_NAME,
artboard: 'New Artboard',
autoplay: true,
});
// levelInput is a number state machine input. To transition the state machine,
// we need to set the value to a number. For this state machine input, we need
// to set to 0, 1 or 2 for a state transition to occur.
const levelInput = useStateMachineInput(rive, STATE_MACHINE_NAME, INPUT_NAME);
return (
// The animation will fit to the parent element, so we set a large height
// and width for this example.
<div style={{ height: '500px', width: '500px' }}>
<RiveComponent />
<div>
Level:
<button onClick={() => (levelInput.value = 0)}>0</button>
<button onClick={() => (levelInput.value = 1)}>1</button>
<button onClick={() => (levelInput.value = 2)}>2</button>
</div>
</div>
);
}
export default App;

View File

@@ -0,0 +1,10 @@
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);

View File

@@ -0,0 +1,14 @@
# State Machine Trigger Input
This example shows how to interact with a state machine with a trigger input. We call the `fire()` function on the state machine input to transition the state when the animation is clicked.
## To Run
This example is created using [Create React App](https://reactjs.org/docs/create-a-new-react-app.html).
To install and run:
```
npm install
npm start
```

View File

@@ -0,0 +1,36 @@
{
"name": "state-machine-trigger-input",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.13.0",
"@testing-library/react": "^11.2.7",
"@testing-library/user-event": "^12.8.3",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "4.0.3",
"rive-react": "latest",
"web-vitals": "^1.1.2"
},
"scripts": {
"start": "SKIP_PREFLIGHT_CHECK=true react-scripts start"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}

View File

@@ -0,0 +1,17 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Web site created using create-react-app"
/>
<title>Rive React - State Machine Trigger Input</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
</body>
</html>

View File

Binary file not shown.

View File

@@ -0,0 +1,31 @@
import { useRive, useStateMachineInput } from 'rive-react';
function App() {
const STATE_MACHINE_NAME = 'State Machine 1';
const INPUT_NAME = 'Pressed';
const { RiveComponent, rive } = useRive({
src: 'piggy-bank.riv',
stateMachines: STATE_MACHINE_NAME,
artboard: 'New Artboard',
autoplay: true,
});
// pressedInput in a trigger state machine input. To transition the state
// we need to call the `fire()` method on the input.
const pressedInput = useStateMachineInput(
rive,
STATE_MACHINE_NAME,
INPUT_NAME
);
return (
// The animation will fit to the parent element, so we set a large height
// and width for this example.
<div style={{ height: '500px', width: '500px' }}>
<RiveComponent onClick={() => pressedInput.fire()} />
</div>
);
}
export default App;

View File

@@ -0,0 +1,10 @@
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);

10656
package-lock.json generated
View File

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +1,11 @@
{
"name": "rive-react",
"version": "0.0.9",
"version": "0.0.26",
"description": "React wrapper around the rive-js library",
"main": "dist/index.js",
"typings": "dist/types/index.d.ts",
"files": [
"./dist/**"
"dist/**"
],
"scripts": {
"test": "jest",
@@ -26,7 +26,7 @@
},
"homepage": "https://github.com/rive-app/rive-react#readme",
"dependencies": {
"rive-js": "0.7.15"
"rive-js": "0.7.33"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0"

View File

@@ -36,7 +36,7 @@ function RiveComponent({
style={'className' in rest ? undefined : containerStyle}
{...rest}
>
<canvas ref={setCanvasRef} />
<canvas ref={setCanvasRef} style={{ verticalAlign: 'top' }} />
</div>
);
}