diff --git a/packages/core/src/block_manager/index.ts b/packages/core/src/block_manager/index.ts index 9f942acba..a777dc7cd 100644 --- a/packages/core/src/block_manager/index.ts +++ b/packages/core/src/block_manager/index.ts @@ -36,7 +36,7 @@ import Block, { BlockProperties } from './model/Block'; import Blocks from './model/Blocks'; import Categories from '../abstract/ModuleCategories'; import Category, { getItemsByCategory } from '../abstract/ModuleCategory'; -import { BlocksByCategory, BlocksEvents } from './types'; +import { BlocksByCategory, BlocksCustomData, BlocksEvents } from './types'; import BlocksView from './view/BlocksView'; export type BlockEvent = `${BlocksEvents}`; @@ -90,7 +90,7 @@ export default class BlockManager extends ItemManagerModule {} +export interface BlocksCustomData { + bm: BlockManager; + blocks: Block[]; + container: HTMLElement | undefined; + dragStart: (block: Block, ev?: Event) => void; + drag: (ev: Event) => void; + dragStop: (cancel?: boolean) => void; +} + +export type BlockEvent = `${BlocksEvents}`; + /**{START_EVENTS}*/ export enum BlocksEvents { /** @@ -81,7 +94,14 @@ export enum BlocksEvents { export interface BlocksEventCallback { [BlocksEvents.add]: [Block, AddOptions]; [BlocksEvents.remove]: [Block, RemoveOptions]; + [BlocksEvents.removeBefore]: [Block, () => void, RemoveOptions]; [BlocksEvents.update]: [Block, AddOptions]; + [BlocksEvents.dragStart]: [Block, DragEvent?]; + [BlocksEvents.drag]: [Block, DragEvent?]; + [BlocksEvents.dragEnd]: [Component | undefined, Block]; + [BlocksEvents.categoryUpdate]: [{ category: Category; changes: Partial; options: AddOptions }]; + [BlocksEvents.custom]: [BlocksCustomData]; + [BlocksEvents.all]: [{ event: BlockEvent; model?: Model; options: ObjectAny }]; } // need this to avoid the TS documentation generator to break