Spaces:
Running
Running
| import commandFactory from '@/factory/command'; | |
| import { componentNames, commandNames } from '@/consts'; | |
| const { SHAPE } = componentNames; | |
| const command = { | |
| name: commandNames.ADD_SHAPE, | |
| /** | |
| * Add a shape | |
| * @param {Graphics} graphics - Graphics instance | |
| * @param {string} type - Shape type (ex: 'rect', 'circle', 'triangle') | |
| * @param {Object} options - Shape options | |
| * @param {string} [options.fill] - Shape foreground color (ex: '#fff', 'transparent') | |
| * @param {string} [options.stroke] - Shape outline color | |
| * @param {number} [options.strokeWidth] - Shape outline width | |
| * @param {number} [options.width] - Width value (When type option is 'rect', this options can use) | |
| * @param {number} [options.height] - Height value (When type option is 'rect', this options can use) | |
| * @param {number} [options.rx] - Radius x value (When type option is 'circle', this options can use) | |
| * @param {number} [options.ry] - Radius y value (When type option is 'circle', this options can use) | |
| * @param {number} [options.left] - Shape x position | |
| * @param {number} [options.top] - Shape y position | |
| * @param {number} [options.isRegular] - Whether resizing shape has 1:1 ratio or not | |
| * @returns {Promise} | |
| */ | |
| execute(graphics, type, options) { | |
| const shapeComp = graphics.getComponent(SHAPE); | |
| return shapeComp.add(type, options).then((objectProps) => { | |
| const { id } = objectProps; | |
| this.undoData.object = graphics.getObject(id); | |
| return objectProps; | |
| }); | |
| }, | |
| /** | |
| * @param {Graphics} graphics - Graphics instance | |
| * @returns {Promise} | |
| */ | |
| undo(graphics) { | |
| graphics.remove(this.undoData.object); | |
| return Promise.resolve(); | |
| }, | |
| }; | |
| commandFactory.register(command); | |
| export default command; | |