diff --git a/packages/core/src/asset_manager/index.ts b/packages/core/src/asset_manager/index.ts index 5dd338121..523c3cf5a 100644 --- a/packages/core/src/asset_manager/index.ts +++ b/packages/core/src/asset_manager/index.ts @@ -40,7 +40,7 @@ import { ProjectData } from '../storage_manager'; import defConfig, { AssetManagerConfig } from './config/config'; import Asset from './model/Asset'; import Assets from './model/Assets'; -import AssetsEvents, { AssetAddInput, AssetOpenOptions, AssetProps } from './types'; +import AssetsEvents, { AssetAddInput, AssetOpenOptions, AssetProps, AssetsCustomData } from './types'; import AssetsView from './view/AssetsView'; import FileUploaderView from './view/FileUploader'; @@ -381,7 +381,7 @@ export default class AssetManager extends ItemManagerModule this.close(), remove: (asset: string | Asset, opts?: Record) => this.remove(asset, opts), - select: (asset: Asset, complete: boolean) => { + select: (asset: Asset, complete?: boolean) => { const res = this.add(asset); isFunction(bhv.select) && bhv.select(res, complete); }, diff --git a/packages/core/src/canvas/view/FrameView.ts b/packages/core/src/canvas/view/FrameView.ts index d2b16ea4c..9542b347e 100644 --- a/packages/core/src/canvas/view/FrameView.ts +++ b/packages/core/src/canvas/view/FrameView.ts @@ -11,7 +11,7 @@ import { append, appendVNodes, createCustomEvent, createEl, motionsEv, off, on } import { hasDnd, setViewEl } from '../../utils/mixins'; import Canvas from '../model/Canvas'; import Frame from '../model/Frame'; -import CanvasEvents from '../types'; +import CanvasEvents, { CanvasFrameEventProps } from '../types'; import FrameWrapView from './FrameWrapView'; export default class FrameView extends ModuleView { @@ -252,7 +252,7 @@ export default class FrameView extends ModuleView { renderScripts() { const { el, model, em } = this; const evLoad = 'frame:load'; - const evOpts: ObjectAny = { el, model, view: this }; + const evOpts = { el, model, view: this } as unknown as CanvasFrameEventProps; const canvas = this.getCanvasModel(); const appendScript = (scripts: any[]) => { if (scripts.length > 0) { diff --git a/packages/core/src/commands/view/SelectComponent.ts b/packages/core/src/commands/view/SelectComponent.ts index ce4163d6c..e22849fc8 100644 --- a/packages/core/src/commands/view/SelectComponent.ts +++ b/packages/core/src/commands/view/SelectComponent.ts @@ -3,7 +3,7 @@ import { CanvasSpotBuiltInTypes } from '../../canvas/model/CanvasSpot'; import { CanvasEvents } from '../../canvas/types'; import Component from '../../dom_components/model/Component'; import Toolbar from '../../dom_components/model/Toolbar'; -import { ComponentsEvents } from '../../dom_components/types'; +import { ComponentResizeInitEventData, ComponentsEvents } from '../../dom_components/types'; import ToolbarView from '../../dom_components/view/ToolbarView'; import { isDoc, isTaggableNode, isVisible, off, on } from '../../utils/dom'; import { getComponentModel, getComponentView, hasWin, isObject } from '../../utils/mixins'; @@ -404,7 +404,7 @@ export default { component, hasCustomResize, resizable, - }; + } as ComponentResizeInitEventData; component && em.trigger(ComponentsEvents.resizeInit, initEventOpts); const resizableResult = initEventOpts.resizable; diff --git a/packages/core/src/dom_components/index.ts b/packages/core/src/dom_components/index.ts index 9847c7e9e..f50e9cfa6 100644 --- a/packages/core/src/dom_components/index.ts +++ b/packages/core/src/dom_components/index.ts @@ -618,7 +618,7 @@ export default class ComponentManager extends ItemManagerModule - this.em.trigger(event, component, opts), - ); + [ComponentsEvents.selected, ComponentsEvents.toggled].forEach((event) => this.em.trigger(event, component, opts)); } } diff --git a/packages/core/src/dom_components/model/Symbols.ts b/packages/core/src/dom_components/model/Symbols.ts index 71da66f1f..4332647f0 100644 --- a/packages/core/src/dom_components/model/Symbols.ts +++ b/packages/core/src/dom_components/model/Symbols.ts @@ -50,7 +50,7 @@ export default class Symbols extends Components { const { em, events } = this; const eventType = isInstance ? events.symbolInstance : events.symbolMain; em.trigger(event, props); - em.trigger(eventType, { ...props, event }); + em.trigger(eventType, { ...props, event } as any); this.refreshDbn(); } } diff --git a/packages/core/src/editor/model/Editor.ts b/packages/core/src/editor/model/Editor.ts index 9d519f501..7c0b89815 100644 --- a/packages/core/src/editor/model/Editor.ts +++ b/packages/core/src/editor/model/Editor.ts @@ -46,6 +46,7 @@ import DataSourceManager from '../../data_sources'; import { ComponentsEvents } from '../../dom_components/types'; import { InitEditorConfig } from '../..'; import { EditorEvents, SelectComponentOptions } from '../types'; +import type { EditorEvent, EditorEventCallbacks, EditorEventHandler } from '../types'; Backbone.$ = $; @@ -242,6 +243,25 @@ export default class EditorModel extends Model { return this.get('DataSources'); } + on(event: E, callback: EditorEventHandler, context?: any) { + return super.on(event, callback, context); + } + + once(event: E, callback: EditorEventHandler, context?: any) { + return super.once(event, callback, context); + } + + off(event?: E, callback?: EditorEventHandler, context?: any) { + return super.off(event, callback, context); + } + + trigger( + event: E, + ...args: E extends keyof EditorEventCallbacks ? EditorEventCallbacks[E] : any[] + ) { + return super.trigger(event, ...args); + } + constructor(conf: EditorConfig = {}) { super(); this._config = conf; @@ -288,7 +308,7 @@ export default class EditorModel extends Model { const eventFrom = event.from; const eventTo = event.to; this.listenTo(this, eventFrom, (...args) => { - this.trigger(eventTo, ...args); + this.trigger(eventTo, ...(args as any)); this.logWarning(`The event '${eventFrom}' is deprecated, replace it with '${eventTo}'`); }); }); diff --git a/packages/core/src/keymaps/index.ts b/packages/core/src/keymaps/index.ts index deb4470ea..9e5618847 100644 --- a/packages/core/src/keymaps/index.ts +++ b/packages/core/src/keymaps/index.ts @@ -117,7 +117,9 @@ export default class KeymapsModule extends Module { __onSelect() { const { em, events, state } = this; const { component, traits } = state.attributes; - em.trigger(events.select, { component, traits }); + em.trigger(events.select, { component, traits: traits as Trait[] }); } __trgCustom(opts: TraitCustomData = {}) { diff --git a/packages/core/test/specs/pages/index.ts b/packages/core/test/specs/pages/index.ts index 8be5a9e02..1942ecc56 100644 --- a/packages/core/test/specs/pages/index.ts +++ b/packages/core/test/specs/pages/index.ts @@ -197,7 +197,7 @@ describe('Managing pages', () => { test('Abort add page', () => { em.on(pm.events.addBefore, (p, c, opts) => { - opts.abort = 1; + opts.abort = true; }); pm.add({}); expect(pm.getAll().length).toBe(1); @@ -205,7 +205,7 @@ describe('Managing pages', () => { test('Abort add page and complete', () => { em.on(pm.events.addBefore, (p, complete, opts) => { - opts.abort = 1; + opts.abort = true; complete(); }); pm.add({}); @@ -223,7 +223,7 @@ describe('Managing pages', () => { test('Abort remove page', () => { em.on(pm.events.removeBefore, (p, c, opts) => { - opts.abort = 1; + (opts as any).abort = true; }); const page = pm.add({})!; pm.remove(`${page.id}`); @@ -232,7 +232,7 @@ describe('Managing pages', () => { test('Abort remove page and complete', () => { em.on(pm.events.removeBefore, (p, complete, opts) => { - opts.abort = 1; + (opts as any).abort = true; complete(); }); const page = pm.add({})!;