A server side renderable react canvas.
- Get all items as objects
- Add texts, images, rectangles and circles
- You can draw your own shapes by using lines and brush
- Enable or disable features
You can install this component using yarn or npm
//yarn
$ yarn add react-designer-component
//npm
$ npm install react-designer-component --save
import Designer from 'react-designer-component';
...
class App extends Component {
constructor(props){
super(props);
this.state = {items:[]}
}
handleChangeItems = (items)=>{
this.setState({items})
}
render(){
return (
<Designer
items={items}
onChangeItems={this.handleChangeItems}
fontApiKey="API_KEY"
paperSize={{
height: 300,
width: 600
}}
/>
)
}
}
Please provide following props.
Prop | Description | Type |
---|---|---|
*items | If you want to initialize the designer with a blank page provide an empty array. Otherwise provide an array with DesignerItem s |
Array with ImageItem, CircleItem, RectangleItem, LineItem, TextItem, BrushItem |
*onChangeItems | This callback function will calling when changing items. | (items:DesignerItem)=>void |
className | CSS class name to apply the for the root element | string |
features | You can enable/disable features by passing an object. | Object that containing boolean values for text,brush,image,circle,rectangle,line properties. All properties are optional. |
classes | You can override all CSS classes by passing an Object | Please look at this file to see all CSS classes. All properties are optional. |
fontApiKey | Google Font API Key if you using the text feature. All fonts loading from google. | string |
paperSize | Size of the paper. | Object with width:number and height:number properties. Default values are 300 pixel height and 600 pixel width. |
drawingArea | Supply coordinates of a polygon if you want a custom shape other than a rectangle. | Array of positions. Ex:- [{left:300,right:400},...] |
You can find following properties in an image item.
rotate:number
Current degree valueoutlineColor:string
Color of the outline as a rgba string. `rgba(210,210,120,0.7)outlineWeight:number
Weight of the outline as a pixel value.position: Position
Current position of the image. This object has two properties namedleft
andtop
that contains the coordinate data in pixel values.size:Object
Current size of the image. This object containswidth:number
,height:number
properties in pixel values.data:string
Base 64 encoded original imagenaturalSize:Object
This property is likesize
property. But this object contains size of the original image.
This item containing rotate,outlineColor,outlineWidth,position,size
properties like ImageItem
. And additionally this item has a property called color:string
that contains the fill color as a rgba value.
All properties is similiar to the CircleItem
.
Also LineItem
containing the rotate,position,outlineColor,OutlineWeight
properties and a property called width:number
that containing the width of the line in pixels.
BrushItem
also has the rotate,position,outlineColor,OutlineWeight
properties and an array of brush spot positions in positions:Position[]
property.
TextItem
has rotate,position,color
properties.
text:string
Typed text in the text box.fontName:string
Name of the font family.fontSize:number
Font size in pixels.underline:bool
,italic:bool
,bold:bool
properties containing the font styles.
- Clone the repository
$ git clone https://github.com/whizsid/react-designer-component`
- Install the dependencies
$ cd react-designer-component
$ yarn
- Start the development server
yarn start
Please lint your code before made a PR.
$ yarn lint
Always follow prettier code styles and check before making your PR.
$ yarn prettier
I will reply to all PRs when I have a free time. Issues and stars also welcome.