UNPKG

core-graphics

Version:

A core library for creating shape-based graphic editors

221 lines (180 loc) 10.5 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.SHAPES_DECLARATIONS = exports.RECT_DECLARATION = exports.LINE_DECLARATION = exports.DRAW_2_POINTS = exports.getRectBoundingBox = exports.RECT = exports.LINE = undefined; var _SHAPES_DECLARATIONS; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _react = require('react'); var React = _interopRequireWildcard(_react); var _editorEvents = require('../editor-state/editor-events'); var _shapes = require('../helpers/shapes'); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var LINE = exports.LINE = 'LINE'; var RECT = exports.RECT = 'RECT'; var getRectBoundingBox = exports.getRectBoundingBox = function getRectBoundingBox(shapeData) { var keyPoints = shapeData.keyPoints; var _keyPoints$ = keyPoints[0]; var x1 = _keyPoints$.x; var y1 = _keyPoints$.y; var _keyPoints$2 = keyPoints[1]; var x2 = _keyPoints$2.x; var y2 = _keyPoints$2.y; var width = Math.abs(x1 - x2); var height = Math.abs(y1 - y2); return { x1: x1, y1: y1, x2: x2, y2: y2, width: width, height: height }; }; var DRAW_2_POINTS = exports.DRAW_2_POINTS = regeneratorRuntime.mark(function DRAW_2_POINTS(_ref) { var startX = _ref.startX; var startY = _ref.startY; var mouseCoords, event, _event$payload, x, y, _event$payload2, endX, endY; return regeneratorRuntime.wrap(function DRAW_2_POINTS$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: mouseCoords = { x: startX, y: startY }; case 1: if (!true) { _context.next = 13; break; } _context.next = 4; return [{ x: startX, y: startY }, { x: mouseCoords.x, y: mouseCoords.y }]; case 4: event = _context.sent; if ((0, _editorEvents.isMouseMoveEvent)(event)) { _event$payload = event.payload; x = _event$payload.x; y = _event$payload.y; mouseCoords.x = x; mouseCoords.y = y; } if (!(0, _editorEvents.isMouseUpEvent)(event)) { _context.next = 11; break; } _event$payload2 = event.payload; endX = _event$payload2.x; endY = _event$payload2.y; return _context.abrupt('return', [{ x: startX, y: startY }, { x: endX, y: endY }]); case 11: _context.next = 1; break; case 13: case 'end': return _context.stop(); } } }, DRAW_2_POINTS, this); }); var LineRenderer = function (_React$Component) { _inherits(LineRenderer, _React$Component); function LineRenderer() { _classCallCheck(this, LineRenderer); return _possibleConstructorReturn(this, Object.getPrototypeOf(LineRenderer).apply(this, arguments)); } _createClass(LineRenderer, [{ key: 'render', value: function render() { var _props = this.props; var shapeData = _props.shapeData; var selected = _props.selected; var beingSelectedWithRubberBand = _props.beingSelectedWithRubberBand; var transformed = _props.transformed; var onMouseDown = _props.onMouseDown; var onMouseUp = _props.onMouseUp; // const { graphicalContextData } = shapeData; var cursor = 'pointer'; var keyPoints = shapeData.keyPoints; var _keyPoints$3 = keyPoints[0]; var x1 = _keyPoints$3.x; var y1 = _keyPoints$3.y; var _keyPoints$4 = keyPoints[1]; var x2 = _keyPoints$4.x; var y2 = _keyPoints$4.y; // const strokeColor = graphicalContextData[STROKE_COLOR] || '#000'; var strokeColor = '#000'; return React.createElement( 'g', null, React.createElement('line', _extends({ style: { cursor: cursor } }, { onMouseDown: onMouseDown, onMouseUp: onMouseUp }, { x1: x1, y1: y1, x2: x2, y2: y2 }, { stroke: 'transparent', strokeWidth: '40' })), (selected || transformed || beingSelectedWithRubberBand) && React.createElement('line', _extends({ style: { cursor: cursor } }, { onMouseDown: onMouseDown, onMouseUp: onMouseUp }, { x1: x1, y1: y1, x2: x2, y2: y2 }, { stroke: 'rgba(0, 160, 200, 0.3)', strokeWidth: '8' })), React.createElement('line', _extends({ style: { cursor: cursor } }, { onMouseDown: onMouseDown, onMouseUp: onMouseUp }, { x1: x1, y1: y1, x2: x2, y2: y2 }, { stroke: strokeColor, strokeWidth: '2' })) ); } }]); return LineRenderer; }(React.Component); var RectRenderer = function (_React$Component2) { _inherits(RectRenderer, _React$Component2); function RectRenderer() { _classCallCheck(this, RectRenderer); return _possibleConstructorReturn(this, Object.getPrototypeOf(RectRenderer).apply(this, arguments)); } _createClass(RectRenderer, [{ key: 'render', value: function render() { var _props2 = this.props; var shapeData = _props2.shapeData; var selected = _props2.selected; var beingSelectedWithRubberBand = _props2.beingSelectedWithRubberBand; var transformed = _props2.transformed; var onMouseUp = _props2.onMouseUp; var onMouseDown = _props2.onMouseDown; // const { graphicalContextData } = shapeData; var cursor = 'pointer'; var keyPoints = shapeData.keyPoints; var _keyPoints$5 = keyPoints[0]; var x1 = _keyPoints$5.x; var y1 = _keyPoints$5.y; var _keyPoints$6 = keyPoints[1]; var x2 = _keyPoints$6.x; var y2 = _keyPoints$6.y; var x = Math.min(x1, x2); var y = Math.min(y1, y2); var width = Math.abs(x2 - x1); var height = Math.abs(y2 - y1); // const strokeColor = graphicalContextData[STROKE_COLOR] || '#000'; var strokeColor = '#000'; return React.createElement( 'g', null, React.createElement('rect', _extends({ style: { cursor: cursor } }, { onMouseDown: onMouseDown, onMouseUp: onMouseUp }, { x: x, y: y, width: width, height: height }, { stroke: 'transparent', strokeWidth: '40' })), (selected || transformed || beingSelectedWithRubberBand) && React.createElement('rect', _extends({ style: { cursor: cursor } }, { onMouseDown: onMouseDown, onMouseUp: onMouseUp }, { x: x, y: y, width: width, height: height }, { stroke: 'rgba(0, 160, 200, 0.3)', strokeWidth: '8' })), React.createElement('rect', _extends({ style: { cursor: cursor } }, { onMouseDown: onMouseDown, onMouseUp: onMouseUp }, { x: x, y: y, width: width, height: height }, { stroke: strokeColor, strokeWidth: '2', fill: '#fff' })) ); } }]); return RectRenderer; }(React.Component); var LINE_DECLARATION = exports.LINE_DECLARATION = { type: LINE, displayName: 'Line', draw: DRAW_2_POINTS, graphicalContextParams: [], // drawingModeCanvasCursor: 'crosshair', // base64Cursor(CROSS_CURSOR, 8, 8), minResizeWidth: 0, minResizeHeight: 0, RenderComponent: (0, _shapes.wrapInShapeHelpers)(LineRenderer), getBoundingBox: getRectBoundingBox }; var RECT_DECLARATION = exports.RECT_DECLARATION = { type: RECT, displayName: 'Rectangle', draw: DRAW_2_POINTS, graphicalContextParams: [], // drawingModeCanvasCursor: 'crosshair', minResizeWidth: 0, minResizeHeight: 0, RenderComponent: (0, _shapes.wrapInShapeHelpers)(RectRenderer), getBoundingBox: getRectBoundingBox }; var SHAPES_DECLARATIONS = exports.SHAPES_DECLARATIONS = (_SHAPES_DECLARATIONS = {}, _defineProperty(_SHAPES_DECLARATIONS, LINE, LINE_DECLARATION), _defineProperty(_SHAPES_DECLARATIONS, RECT, RECT_DECLARATION), _SHAPES_DECLARATIONS);