Browse Source

Move editor events

data-source-schema
Artur Arseniev 5 months ago
parent
commit
61b49569b2
  1. 7
      packages/core/src/block_manager/types.ts
  2. 73
      packages/core/src/editor/index.ts
  3. 45
      packages/core/src/editor/types.ts

7
packages/core/src/block_manager/types.ts

@ -1,4 +1,5 @@
import { ItemsByCategory } from '../abstract/ModuleCategory';
import { AddOptions, RemoveOptions } from '../common';
import Block from './model/Block';
export interface BlocksByCategory extends ItemsByCategory<Block> {}
@ -77,5 +78,11 @@ export enum BlocksEvents {
}
/**{END_EVENTS}*/
export interface BlocksEventCallback {
[BlocksEvents.add]: [Block, AddOptions];
[BlocksEvents.remove]: [Block, RemoveOptions];
[BlocksEvents.update]: [Block, AddOptions];
}
// need this to avoid the TS documentation generator to break
export default BlocksEvents;

73
packages/core/src/editor/index.ts

@ -44,43 +44,49 @@
*/
import { IBaseModule } from '../abstract/Module';
import AssetManager from '../asset_manager';
import { AssetEvent } from '../asset_manager/types';
import BlockManager, { BlockEvent } from '../block_manager';
import CanvasModule, { CanvasEvent } from '../canvas';
import BlockManager from '../block_manager';
import CanvasModule from '../canvas';
import CodeManagerModule from '../code_manager';
import CommandsModule, { CommandEvent } from '../commands';
import { AddOptions, EventHandler, LiteralUnion } from '../common';
import CommandsModule from '../commands';
import { AddOptions, EventHandler } from '../common';
import CssComposer from '../css_composer';
import CssRule from '../css_composer/model/CssRule';
import CssRules from '../css_composer/model/CssRules';
import DataSourceManager from '../data_sources';
import DeviceManager from '../device_manager';
import ComponentManager, { ComponentEvent } from '../dom_components';
import ComponentManager from '../dom_components';
import Component from '../dom_components/model/Component';
import Components from '../dom_components/model/Components';
import ComponentWrapper from '../dom_components/model/ComponentWrapper';
import { AddComponentsOption, ComponentAdd, DragMode } from '../dom_components/model/types';
import StyleableModel from '../domain_abstract/model/StyleableModel';
import I18nModule from '../i18n';
import KeymapsModule, { KeymapEvent } from '../keymaps';
import ModalModule, { ModalEvent } from '../modal_dialog';
import KeymapsModule from '../keymaps';
import ModalModule from '../modal_dialog';
import LayerManager from '../navigator';
import PageManager from '../pages';
import PanelManager from '../panels';
import ParserModule from '../parser';
import { CustomParserCss } from '../parser/config/config';
import RichTextEditorModule, { RichTextEditorEvent } from '../rich_text_editor';
import RichTextEditorModule from '../rich_text_editor';
import { CustomRTE } from '../rich_text_editor/config/config';
import SelectorManager, { SelectorEvent } from '../selector_manager';
import StorageManager, { ProjectData, StorageEvent, StorageOptions } from '../storage_manager';
import StyleManager, { StyleManagerEvent } from '../style_manager';
import SelectorManager from '../selector_manager';
import StorageManager, { ProjectData, StorageOptions } from '../storage_manager';
import StyleManager from '../style_manager';
import TraitManager from '../trait_manager';
import UndoManagerModule from '../undo_manager';
import UtilsModule from '../utils';
import html from '../utils/html';
import defConfig, { EditorConfig, EditorConfigKeys } from './config/config';
import EditorModel, { EditorLoadOptions } from './model/Editor';
import { EditorEvents } from './types';
import {
EditorConfigType,
EditorEvent,
EditorEventCallbacks,
EditorEventHandler,
EditorEvents,
EditorModelParam,
} from './types';
import EditorView from './view/EditorView';
export type ParsedRule = {
@ -90,28 +96,6 @@ export type ParsedRule = {
params?: string;
};
type GeneralEvent = 'canvasScroll' | 'undo' | 'redo' | 'load' | 'update';
type EditorBuiltInEvents =
| ComponentEvent
| BlockEvent
| AssetEvent
| KeymapEvent
| StyleManagerEvent
| StorageEvent
| CanvasEvent
| SelectorEvent
| RichTextEditorEvent
| ModalEvent
| CommandEvent
| GeneralEvent;
type EditorEvent = LiteralUnion<EditorBuiltInEvents, string>;
type EditorConfigType = EditorConfig & { pStylePrefix?: string };
type EditorModelParam<T extends keyof EditorModel, N extends number> = Parameters<EditorModel[T]>[N];
export type EditorParam<T extends keyof Editor, N extends number> = Parameters<Editor[T]>[N];
export default class Editor implements IBaseModule<EditorConfig> {
@ -733,8 +717,8 @@ export default class Editor implements IBaseModule<EditorConfig> {
* @param {Function} callback Callback function
* @return {this}
*/
on(event: EditorEvent, callback: EventHandler) {
this.em.on(event, callback);
on<E extends EditorEvent>(event: E, callback: EditorEventHandler<E>) {
this.em.on(event as string, callback);
return this;
}
@ -744,8 +728,8 @@ export default class Editor implements IBaseModule<EditorConfig> {
* @param {Function} callback Callback function
* @return {this}
*/
once(event: EditorEvent, callback: EventHandler) {
this.em.once(event, callback);
once<E extends EditorEvent>(event: E, callback: EditorEventHandler<E>) {
this.em.once(event as string, callback);
return this;
}
@ -755,8 +739,8 @@ export default class Editor implements IBaseModule<EditorConfig> {
* @param {Function} callback Callback function
* @return {this}
*/
off(event: EditorEvent, callback: EventHandler) {
this.em.off(event, callback);
off<E extends EditorEvent>(event: E, callback: EditorEventHandler<E>) {
this.em.off(event as string, callback);
return this;
}
@ -765,8 +749,11 @@ export default class Editor implements IBaseModule<EditorConfig> {
* @param {string} event Event to trigger
* @return {this}
*/
trigger(event: EditorEvent, ...args: any[]) {
this.em.trigger.apply(this.em, [event, ...args]);
trigger<E extends EditorEvent>(
event: E,
...args: E extends keyof EditorEventCallbacks ? EditorEventCallbacks[E] : any[]
) {
this.em.trigger.apply(this.em, [event as string, ...args]);
return this;
}

45
packages/core/src/editor/types.ts

@ -1,3 +1,48 @@
import { AssetEvent } from '../asset_manager/types';
import { BlockEvent } from '../block_manager';
import { BlocksEventCallback } from '../block_manager/types';
import { CanvasEvent } from '../canvas';
import { CommandEvent } from '../commands';
import { LiteralUnion } from '../common';
import { ComponentEvent } from '../dom_components';
import { KeymapEvent } from '../keymaps';
import { ModalEvent } from '../modal_dialog';
import { RichTextEditorEvent } from '../rich_text_editor';
import { SelectorEvent } from '../selector_manager';
import { StyleManagerEvent } from '../style_manager';
import { EditorConfig } from './config/config';
import EditorModel from './model/Editor';
type GeneralEvent = 'canvasScroll' | 'undo' | 'redo' | 'load' | 'update';
type EditorBuiltInEvents =
| ComponentEvent
| BlockEvent
| AssetEvent
| KeymapEvent
| StyleManagerEvent
| StorageEvent
| CanvasEvent
| SelectorEvent
| RichTextEditorEvent
| ModalEvent
| CommandEvent
| GeneralEvent;
export type EditorEvent = LiteralUnion<EditorBuiltInEvents, string>;
export type EditorConfigType = EditorConfig & { pStylePrefix?: string };
export type EditorModelParam<T extends keyof EditorModel, N extends number> = Parameters<EditorModel[T]>[N];
export interface EditorEventCallbacks extends BlocksEventCallback {
[key: string]: any[];
}
export type EditorEventHandler<E extends EditorEvent> = E extends keyof EditorEventCallbacks
? (...args: EditorEventCallbacks[E]) => void
: (...args: any[]) => void;
/**{START_EVENTS}*/
export enum EditorEvents {
/**

Loading…
Cancel
Save