Browse Source

Up types

type-event-callbacks
Artur Arseniev 1 month ago
parent
commit
8583c60e3c
  1. 6
      packages/core/src/asset_manager/index.ts
  2. 4
      packages/core/src/canvas/view/FrameView.ts
  3. 4
      packages/core/src/commands/view/SelectComponent.ts
  4. 6
      packages/core/src/dom_components/index.ts
  5. 2
      packages/core/src/dom_components/model/Symbols.ts
  6. 22
      packages/core/src/editor/model/Editor.ts
  7. 2
      packages/core/src/keymaps/index.ts
  8. 2
      packages/core/src/parser/index.ts
  9. 2
      packages/core/src/trait_manager/index.ts
  10. 8
      packages/core/test/specs/pages/index.ts

6
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<AssetManagerConfig,
this.em.trigger(this.events.custom, this.__customData());
}
__customData() {
__customData(): AssetsCustomData {
const bhv = this.__getBehaviour();
return {
am: this as AssetManager,
@ -391,7 +391,7 @@ export default class AssetManager extends ItemManagerModule<AssetManagerConfig,
container: bhv.container,
close: () => this.close(),
remove: (asset: string | Asset, opts?: Record<string, any>) => 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);
},

4
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<Frame, HTMLIFrameElement> {
@ -252,7 +252,7 @@ export default class FrameView extends ModuleView<Frame, HTMLIFrameElement> {
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) {

4
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;

6
packages/core/src/dom_components/index.ts

@ -618,7 +618,7 @@ export default class ComponentManager extends ItemManagerModule<DomComponentsCon
}
const event = compType ? ComponentsEvents.typeUpdate : ComponentsEvents.typeAdd;
em?.trigger(event, compType || methods);
em?.trigger(event, (compType || methods) as any);
return this;
}
@ -670,9 +670,7 @@ export default class ComponentManager extends ItemManagerModule<DomComponentsCon
component.set({
status: 'selected',
});
[ComponentsEvents.selected, ComponentsEvents.toggled].forEach((event) =>
this.em.trigger(event, component, opts),
);
[ComponentsEvents.selected, ComponentsEvents.toggled].forEach((event) => this.em.trigger(event, component, opts));
}
}

2
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();
}
}

22
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<E extends EditorEvent>(event: E, callback: EditorEventHandler<E>, context?: any) {
return super.on(event, callback, context);
}
once<E extends EditorEvent>(event: E, callback: EditorEventHandler<E>, context?: any) {
return super.once(event, callback, context);
}
off<E extends EditorEvent>(event?: E, callback?: EditorEventHandler<E>, context?: any) {
return super.off(event, callback, context);
}
trigger<E extends EditorEvent>(
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}'`);
});
});

2
packages/core/src/keymaps/index.ts

@ -117,7 +117,9 @@ export default class KeymapsModule extends Module<KeymapsConfig & { name?: strin
opts.prevent && canvas.getCanvasView()?.preventDefault(e);
isFunction(handlerRes) ? handlerRes(editor, 0, opt) : cmd.runCommand(handlerRes, opt);
const args = [id, h.shortcut, e];
// @ts-ignore
em.trigger(events.emit, ...args);
// @ts-ignore
em.trigger(`${events.emitId}${id}`, ...args);
}
},

2
packages/core/src/parser/index.ts

@ -96,7 +96,7 @@ export default class ParserModule extends Module<ParserConfig & { name?: string
__emitEvent(event: string, data: ObjectAny) {
const { em, events } = this;
em.trigger(event, data);
em.trigger(events.all, { event, ...data });
em.trigger(events.all, { event, ...data } as any);
}
destroy() {}

2
packages/core/src/trait_manager/index.ts

@ -227,7 +227,7 @@ export default class TraitManager extends Module<TraitManagerConfigModule> {
__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 = {}) {

8
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({})!;

Loading…
Cancel
Save