From bb32c93b8abd8e13812a36aa85f8f9f88d440c89 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Tue, 15 Aug 2023 13:14:45 +0400 Subject: [PATCH] Move events --- src/canvas/index.ts | 30 +++------------ src/canvas/types.ts | 55 ++++++++++++++++++++++++++++ src/commands/view/SelectComponent.ts | 16 +++++++- 3 files changed, 75 insertions(+), 26 deletions(-) create mode 100644 src/canvas/types.ts diff --git a/src/canvas/index.ts b/src/canvas/index.ts index 13d725725..c91a31516 100644 --- a/src/canvas/index.ts +++ b/src/canvas/index.ts @@ -55,34 +55,14 @@ import EditorModel from '../editor/model/Editor'; import { getElement, getViewEl } from '../utils/mixins'; import defaults, { CanvasConfig } from './config/config'; import Canvas from './model/Canvas'; +import CanvasSpot, { CanvasSpotProps } from './model/CanvasSpot'; +import CanvasSpots from './model/CanvasSpots'; import Frame from './model/Frame'; +import { CanvasEvents } from './types'; import CanvasView, { FitViewportOptions } from './view/CanvasView'; import FrameView from './view/FrameView'; -import CanvasSpots from './model/CanvasSpots'; -import CanvasSpot, { CanvasSpotProps } from './model/CanvasSpot'; -export type CanvasEvent = - | 'canvas:dragenter' - | 'canvas:dragover' - | 'canvas:drop' - | 'canvas:dragend' - | 'canvas:dragdata' - | 'canvas:spot' - | 'canvas:spot:add' - | 'canvas:spot:update' - | 'canvas:spot:remove'; - -const canvasEvents = { - dragEnter: 'canvas:dragenter', - dragOver: 'canvas:dragover', - dragEnd: 'canvas:dragend', - dragData: 'canvas:dragdata', - drop: 'canvas:drop', - spot: 'canvas:spot', - spotAdd: 'canvas:spot:add', - spotUpdate: 'canvas:spot:update', - spotRemove: 'canvas:spot:remove', -} as const; +export type CanvasEvent = `${CanvasEvents}`; export interface ToWorldOption { toWorld?: boolean; @@ -108,7 +88,7 @@ export default class CanvasModule extends Module { canvas: Canvas; model: Canvas; spots: CanvasSpots; - events = canvasEvents; + events = CanvasEvents; private canvasView?: CanvasView; /** diff --git a/src/canvas/types.ts b/src/canvas/types.ts new file mode 100644 index 000000000..409192083 --- /dev/null +++ b/src/canvas/types.ts @@ -0,0 +1,55 @@ +export enum CanvasEvents { + /** + * Something is dragged inside the canvas, `DataTransfer` instance passed as an argument. + */ + dragEnter = 'canvas:dragenter', + /** + * Something is dragging on the canvas, `DataTransfer` instance passed as an argument. + */ + dragOver = 'canvas:dragover', + /** + * When a drag operation is ended, `DataTransfer` instance passed as an argument. + */ + dragEnd = 'canvas:dragend', + /** + * On any dataTransfer parse, `DataTransfer` instance and the `result` are passed as arguments. + * By changing `result.content` you're able to customize what is dropped. + */ + dragData = 'canvas:dragdata', + /** + * Something is dropped in canvas, `DataTransfer` instance and the dropped model are passed as arguments. + */ + drop = 'canvas:drop', + /** + * Spots updated. + * @example + * editor.on('canvas:spot', () => { + * console.log('Spots', editor.Canvas.getSpots()); + * }); + */ + spot = 'canvas:spot', + /** + * New canvas spot added. + * @example + * editor.on('canvas:spot:add', ({ spot }) => { + * console.log('Spot added', spot); + * }); + */ + spotAdd = 'canvas:spot:add', + /** + * Canvas spot updated. + * @example + * editor.on('canvas:spot:update', ({ spot }) => { + * console.log('Spot updated', spot); + * }); + */ + spotUpdate = 'canvas:spot:update', + /** + * Canvas spot removed. + * @example + * editor.on('canvas:spot:remove', ({ spot }) => { + * console.log('Spot removed', spot); + * }); + */ + spotRemove = 'canvas:spot:remove', +} diff --git a/src/commands/view/SelectComponent.ts b/src/commands/view/SelectComponent.ts index ac2fcbd9b..315ed33ad 100644 --- a/src/commands/view/SelectComponent.ts +++ b/src/commands/view/SelectComponent.ts @@ -30,7 +30,16 @@ let showOffsets: boolean; */ export default { init() { - bindAll(this, 'onHover', 'onOut', 'onClick', 'onFrameScroll', 'onFrameUpdated', 'onContainerChange'); + bindAll( + this, + 'onHover', + 'onOut', + 'onClick', + 'onFrameScroll', + 'onFrameResize', + 'onFrameUpdated', + 'onContainerChange' + ); }, enable() { @@ -73,6 +82,7 @@ export default { methods[method](body, 'click', this.onClick); // @ts-ignore methods[method](win, 'scroll', this.onFrameScroll, true); + methods[method](win, 'resize', this.onFrameResize); }; methods[method](window, 'resize', this.onFrameUpdated); methods[method](listenToEl, 'scroll', this.onContainerChange); @@ -549,6 +559,10 @@ export default { this.canvas.refreshSpots(); }, + onFrameResize() { + this.canvas.refreshSpots(); + }, + updateTools() { this.updateLocalPos(); this.updateGlobalPos();