UNPKG

lvbk-react-fabricjs

Version:

fabricjs implemented by react

66 lines (55 loc) 1.78 kB
'use strict'; import PropTypes from 'prop-types'; import FabricObject from '../base/Object.jsx'; import {fabric} from 'fabric'; export default class Path extends FabricObject { constructor(props, context) { super(props, context); this.state = { object: null, }; this.draw = this.draw.bind(this); this.toString = () => this.state.object && this.state.object.toString(); this.toObject = (propertiesToInclude) => this.state.object && this.state.object.toObject(propertiesToInclude); this.toDatalessObject = (propertiesToInclude) => this.state.object.toDatalessObject(propertiesToInclude); this.toSVG = (reviver) => this.state.object && this.state.object.toSVG(reviver); this.complexity = () => this.state.object && this.state.object.complexity(); } draw(cb) { if (this.props.element instanceof Object) { fabric.Path.fromElement( this.props.element, (instance) => super.draw(instance, cb), this.props ); } else if (this.props.object instanceof Object) { fabric.Path.fromObject( this.props.object, (instance) => super.draw(instance, cb) ); } else { const object = new fabric.Path(this.props.path, this.props); super.draw(object, cb); return object; } } } Path.fromElement = (element, callback, options) => fabric.Path.fromElement(element, callback, options); Path.fromObject = (object, callback) => fabric.Path.fromObject(object, callback); Path.attribute = fabric.Path.ATTRIBUTE_NAMES; Path.propTypes = Object.assign({}, FabricObject.propTypes, { path: PropTypes.oneOfType([PropTypes.array, PropTypes.string]), minX: PropTypes.number, minY: PropTypes.number, }); Path.defaultProps = Object.assign({}, FabricObject.defaultProps, { type: 'path', path: null, minX: 0, minY: 0, });