UNPKG

fabric

Version:

Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.

107 lines (95 loc) 2.51 kB
import { RESIZING, ROTATE } from '../constants'; import { changeWidth } from './changeWidth'; import { Control } from './Control'; import { rotationStyleHandler, rotationWithSnapping } from './rotate'; import { scaleCursorStyleHandler, scalingEqually } from './scale'; import { scaleOrSkewActionName, scaleSkewCursorStyleHandler, scalingXOrSkewingY, scalingYOrSkewingX, } from './scaleSkew'; // use this function if you want to generate new controls for every instance export const createObjectDefaultControls = () => ({ ml: new Control({ x: -0.5, y: 0, cursorStyleHandler: scaleSkewCursorStyleHandler, actionHandler: scalingXOrSkewingY, getActionName: scaleOrSkewActionName, }), mr: new Control({ x: 0.5, y: 0, cursorStyleHandler: scaleSkewCursorStyleHandler, actionHandler: scalingXOrSkewingY, getActionName: scaleOrSkewActionName, }), mb: new Control({ x: 0, y: 0.5, cursorStyleHandler: scaleSkewCursorStyleHandler, actionHandler: scalingYOrSkewingX, getActionName: scaleOrSkewActionName, }), mt: new Control({ x: 0, y: -0.5, cursorStyleHandler: scaleSkewCursorStyleHandler, actionHandler: scalingYOrSkewingX, getActionName: scaleOrSkewActionName, }), tl: new Control({ x: -0.5, y: -0.5, cursorStyleHandler: scaleCursorStyleHandler, actionHandler: scalingEqually, }), tr: new Control({ x: 0.5, y: -0.5, cursorStyleHandler: scaleCursorStyleHandler, actionHandler: scalingEqually, }), bl: new Control({ x: -0.5, y: 0.5, cursorStyleHandler: scaleCursorStyleHandler, actionHandler: scalingEqually, }), br: new Control({ x: 0.5, y: 0.5, cursorStyleHandler: scaleCursorStyleHandler, actionHandler: scalingEqually, }), mtr: new Control({ x: 0, y: -0.5, actionHandler: rotationWithSnapping, cursorStyleHandler: rotationStyleHandler, offsetY: -40, withConnection: true, actionName: ROTATE, }), }); export const createResizeControls = () => ({ mr: new Control({ x: 0.5, y: 0, actionHandler: changeWidth, cursorStyleHandler: scaleSkewCursorStyleHandler, actionName: RESIZING, }), ml: new Control({ x: -0.5, y: 0, actionHandler: changeWidth, cursorStyleHandler: scaleSkewCursorStyleHandler, actionName: RESIZING, }), }); export const createTextboxDefaultControls = () => ({ ...createObjectDefaultControls(), ...createResizeControls(), });