Browse Source

Move layer events

data-source-schema
Artur Arseniev 11 months ago
parent
commit
560928b30f
  1. 40
      packages/core/src/navigator/index.ts
  2. 39
      packages/core/src/navigator/types.ts

40
packages/core/src/navigator/index.ts

@ -15,9 +15,7 @@
* const layers = editor.Layers; * const layers = editor.Layers;
* ``` * ```
* *
* ## Available Events * {REPLACE_EVENTS}
* * `layer:root` - Root layer changed. The new root component is passed as an argument to the callback.
* * `layer:component` - Component layer is updated. The updated component is passed as an argument to the callback.
* *
* ## Methods * ## Methods
* * [setRoot](#setroot) * * [setRoot](#setroot)
@ -39,38 +37,18 @@
* @module Layers * @module Layers
*/ */
import { isString, bindAll } from 'underscore'; import { bindAll, isString } from 'underscore';
import { ModuleModel } from '../abstract'; import { ModuleModel } from '../abstract';
import Module from '../abstract/Module'; import Module from '../abstract/Module';
import Component from '../dom_components/model/Component'; import Component from '../dom_components/model/Component';
import { ComponentsEvents } from '../dom_components/types';
import EditorModel from '../editor/model/Editor'; import EditorModel from '../editor/model/Editor';
import { hasWin, isComponent, isDef } from '../utils/mixins'; import { hasWin, isComponent, isDef } from '../utils/mixins';
import defConfig, { LayerManagerConfig } from './config/config'; import defConfig, { LayerManagerConfig } from './config/config';
import { LayerData, LayerEvents } from './types';
import View from './view/ItemView'; import View from './view/ItemView';
import { ComponentsEvents } from '../dom_components/types';
interface LayerData { export type LayerEvent = `${LayerEvents}`;
name: string;
open: boolean;
selected: boolean;
hovered: boolean;
visible: boolean;
locked: boolean;
components: Component[];
}
export const evAll = 'layer';
export const evPfx = `${evAll}:`;
export const evRoot = `${evPfx}root`;
export const evComponent = `${evPfx}component`;
export const evCustom = `${evPfx}custom`;
const events = {
all: evAll,
root: evRoot,
component: evComponent,
custom: evCustom,
};
const styleOpts = { mediaText: '' }; const styleOpts = { mediaText: '' };
@ -88,7 +66,7 @@ export default class LayerManager extends Module<LayerManagerConfig> {
view?: View; view?: View;
events = events; events = LayerEvents;
constructor(em: EditorModel) { constructor(em: EditorModel) {
super(em, 'LayerManager', defConfig()); super(em, 'LayerManager', defConfig());
@ -358,9 +336,10 @@ export default class LayerManager extends Module<LayerManagerConfig> {
} }
__onRootChange() { __onRootChange() {
const { em, events } = this;
const root = this.getRoot(); const root = this.getRoot();
this.view?.setRoot(root); this.view?.setRoot(root);
this.em.trigger(evRoot, root); em.trigger(events.root, root);
this.__trgCustom(); this.__trgCustom();
} }
@ -390,6 +369,7 @@ export default class LayerManager extends Module<LayerManagerConfig> {
} }
updateLayer(component: Component, opts?: any) { updateLayer(component: Component, opts?: any) {
this.em.trigger(evComponent, component, opts); const { em, events } = this;
em.trigger(events.component, component, opts);
} }
} }

39
packages/core/src/navigator/types.ts

@ -0,0 +1,39 @@
import Component from '../dom_components/model/Component';
export interface LayerData {
name: string;
open: boolean;
selected: boolean;
hovered: boolean;
visible: boolean;
locked: boolean;
components: Component[];
}
/**{START_EVENTS}*/
export enum LayerEvents {
/**
* @event `layer:root` Root layer changed. The new root component is passed as an argument to the callback.
* @example
* editor.on('layer:root', (component) => { ... });
*/
root = 'layer:root',
/**
* @event `layer:component` Component layer is updated. The updated component is passed as an argument to the callback.
* @example
* editor.on('layer:component', (component, opts) => { ... });
*/
component = 'layer:component',
/**
* @event `layer:custom` Custom layer event. Object with container and root is passed as an argument to the callback.
* @example
* editor.on('layer:custom', ({ container, root }) => { ... });
*/
custom = 'layer:custom',
}
/**{END_EVENTS}*/
// need this to avoid the TS documentation generator to break
export default LayerEvents;
Loading…
Cancel
Save