Frontend Enhancements: - Complete React TypeScript frontend with modern UI components - Distributed workflows management interface with real-time updates - Socket.IO integration for live agent status monitoring - Agent management dashboard with cluster visualization - Project management interface with metrics and task tracking - Responsive design with proper error handling and loading states Backend Infrastructure: - Distributed coordinator for multi-agent workflow orchestration - Cluster management API with comprehensive agent operations - Enhanced database models for agents and projects - Project service for filesystem-based project discovery - Performance monitoring and metrics collection - Comprehensive API documentation and error handling Documentation: - Complete distributed development guide (README_DISTRIBUTED.md) - Comprehensive development report with architecture insights - System configuration templates and deployment guides The platform now provides a complete web interface for managing the distributed AI cluster with real-time monitoring, workflow orchestration, and agent coordination capabilities. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
240 lines
5.0 KiB
Markdown
240 lines
5.0 KiB
Markdown
# react-smooth
|
|
|
|
react-smooth is a animation library work on React.
|
|
|
|
[](https://badge.fury.io/js/react-smooth)
|
|
[](https://travis-ci.org/recharts/react-smooth)
|
|
[](https://www.npmjs.com/package/react-smooth)
|
|
[](https://gitter.im/recharts/react-smooth?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
|
|
|
## install
|
|
```
|
|
npm install --save react-smooth
|
|
```
|
|
|
|
## Usage
|
|
simple animation
|
|
|
|
```jsx
|
|
<Animate to="0" from="1" attributeName="opacity">
|
|
<div />
|
|
</Animate>
|
|
```
|
|
steps animation
|
|
|
|
```jsx
|
|
const steps = [{
|
|
style: {
|
|
opacity: 0,
|
|
},
|
|
duration: 400,
|
|
}, {
|
|
style: {
|
|
opacity: 1,
|
|
transform: 'translate(0, 0)',
|
|
},
|
|
duration: 1000,
|
|
}, {
|
|
style: {
|
|
transform: 'translate(100px, 100px)',
|
|
},
|
|
duration: 1200,
|
|
}];
|
|
|
|
<Animate steps={steps}>
|
|
<div />
|
|
</Animate>
|
|
```
|
|
children can be a function
|
|
|
|
```jsx
|
|
<Animate from={{ opacity: 0 }}
|
|
to={{ opacity: 1 }}
|
|
easing="ease-in"
|
|
>
|
|
{
|
|
({ opacity }) => <div style={{ opacity }}></div>
|
|
}
|
|
</Animate>
|
|
```
|
|
|
|
you can configure js timing function
|
|
|
|
```js
|
|
const easing = configureBezier(0.1, 0.1, 0.5, 0.8);
|
|
const easing = configureSpring({ stiff: 170, damping: 20 });
|
|
```
|
|
|
|
group animation
|
|
|
|
```jsx
|
|
const appear = {
|
|
from: 0,
|
|
to: 1,
|
|
attributeName: 'opacity',
|
|
};
|
|
|
|
const leave = {
|
|
steps: [{
|
|
style: {
|
|
transform: 'translateX(0)',
|
|
},
|
|
}, {
|
|
duration: 1000,
|
|
style: {
|
|
transform: 'translateX(300)',
|
|
height: 50,
|
|
},
|
|
}, {
|
|
duration: 2000,
|
|
style: {
|
|
height: 0,
|
|
},
|
|
}]
|
|
}
|
|
|
|
<AnimateGroup appear={appear} leave={leave}>
|
|
{ list }
|
|
</AnimateGroup>
|
|
|
|
/*
|
|
* @description: add compatible prefix in style
|
|
*
|
|
* style = { transform: xxx, ...others };
|
|
*
|
|
* translatedStyle = {
|
|
* WebkitTransform: xxx,
|
|
* MozTransform: xxx,
|
|
* OTransform: xxx,
|
|
* msTransform: xxx,
|
|
* ...others,
|
|
* };
|
|
*/
|
|
|
|
const translatedStyle = translateStyle(style);
|
|
|
|
|
|
```
|
|
|
|
## API
|
|
|
|
### Animate
|
|
|
|
<table class="table table-bordered table-striped">
|
|
<thead>
|
|
<tr>
|
|
<th style="width: 50px">name</th>
|
|
<th style="width: 100px">type</th>
|
|
<th style="width: 50px">default</th>
|
|
<th style="width: 50px">description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>from</td>
|
|
<td>string or object</td>
|
|
<td>''</td>
|
|
<td>set the initial style of the children</td>
|
|
</tr>
|
|
<tr>
|
|
<td>to</td>
|
|
<td>string or object</td>
|
|
<td>''</td>
|
|
<td>set the final style of the children</td>
|
|
</tr>
|
|
<tr>
|
|
<td>canBegin</td>
|
|
<td>boolean</td>
|
|
<td>true</td>
|
|
<td>whether the animation is start</td>
|
|
</tr>
|
|
<tr>
|
|
<td>begin</td>
|
|
<td>number</td>
|
|
<td>0</td>
|
|
<td>animation delay time</td>
|
|
</tr>
|
|
<tr>
|
|
<td>duration</td>
|
|
<td>number</td>
|
|
<td>1000</td>
|
|
<td>animation duration</td>
|
|
</tr>
|
|
<tr>
|
|
<td>steps</td>
|
|
<td>array</td>
|
|
<td>[]</td>
|
|
<td>animation keyframes</td>
|
|
</tr>
|
|
<tr>
|
|
<td>onAnimationEnd</td>
|
|
<td>function</td>
|
|
<td>() => null</td>
|
|
<td>called when animation finished</td>
|
|
</tr>
|
|
<tr>
|
|
<td>attributeName</td>
|
|
<td>string</td>
|
|
<td>''</td>
|
|
<td>style property</td>
|
|
</tr>
|
|
<tr>
|
|
<td>easing</td>
|
|
<td>string</td>
|
|
<td>'ease'</td>
|
|
<td>the animation timing function, support css timing function temporary</td>
|
|
</tr>
|
|
<tr>
|
|
<td>isActive</td>
|
|
<td>boolean</td>
|
|
<td>true</td>
|
|
<td>whether the animation is active</td>
|
|
</tr>
|
|
<tr>
|
|
<td>children</td>
|
|
<td>element</td>
|
|
<td></td>
|
|
<td>support only child temporary</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
### AnimateGroup
|
|
|
|
<table class="table table-bordered table-striped animate-group">
|
|
<thead>
|
|
<tr>
|
|
<th style="width: 40px">name</th>
|
|
<th style="width: 40px">type</th>
|
|
<th style="width: 40px">default</th>
|
|
<th style="width: 100px">description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>appear</td>
|
|
<td>object</td>
|
|
<td>undefined</td>
|
|
<td>configure element appear animation</td>
|
|
</tr>
|
|
<tr>
|
|
<td>enter</td>
|
|
<td>object</td>
|
|
<td>undefined</td>
|
|
<td>configure element appear animation</td>
|
|
</tr>
|
|
<tr>
|
|
<td>leave</td>
|
|
<td>object</td>
|
|
<td>undefined</td>
|
|
<td>configure element appear animation</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
## License
|
|
|
|
[MIT](http://opensource.org/licenses/MIT)
|
|
|
|
Copyright (c) 2015-2021 Recharts Group
|