From a5ac7af6d29ac57b14b37bed15e2a9c3faa0fd20 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Tue, 20 Feb 2024 01:32:58 +0400 Subject: [PATCH] Add types file to Pages module --- src/canvas/model/Canvas.ts | 4 +-- src/editor/config/config.ts | 2 +- src/pages/index.ts | 61 +++++++++---------------------------- src/pages/model/Page.ts | 2 +- src/pages/types.ts | 61 +++++++++++++++++++++++++++++++++++++ 5 files changed, 80 insertions(+), 50 deletions(-) create mode 100644 src/pages/types.ts diff --git a/src/canvas/model/Canvas.ts b/src/canvas/model/Canvas.ts index 6993847b1..0e0cbf061 100644 --- a/src/canvas/model/Canvas.ts +++ b/src/canvas/model/Canvas.ts @@ -2,8 +2,8 @@ import CanvasModule from '..'; import { ModuleModel } from '../../abstract'; import { Coordinates, CoordinatesTypes, DEFAULT_COORDS } from '../../common'; import { evUpdate as evDeviceUpdate } from '../../device_manager'; -import { evPageSelect } from '../../pages'; import Page from '../../pages/model/Page'; +import PagesEvents from '../../pages/types'; import Frames from './Frames'; export default class Canvas extends ModuleModel { @@ -33,7 +33,7 @@ export default class Canvas extends ModuleModel { this.on('change:x change:y', this.onCoordsChange); this.on('change:pointer change:pointerScreen', this.onPointerChange); this.listenTo(em, `change:device ${evDeviceUpdate}`, this.updateDevice); - this.listenTo(em, evPageSelect, this._pageUpdated); + this.listenTo(em, PagesEvents.select, this._pageUpdated); } get frames(): Frames { diff --git a/src/editor/config/config.ts b/src/editor/config/config.ts index 1560006de..d4e8074f4 100644 --- a/src/editor/config/config.ts +++ b/src/editor/config/config.ts @@ -7,7 +7,7 @@ import { DeviceManagerConfig } from '../../device_manager/config/config'; import { I18nConfig } from '../../i18n/config'; import { ModalConfig } from '../../modal_dialog/config/config'; import { LayerManagerConfig } from '../../navigator/config/config'; -import { PageManagerConfig } from '../../pages'; +import { PageManagerConfig } from '../../pages/types'; import { PanelsConfig } from '../../panels/config/config'; import { ParserConfig } from '../../parser/config/config'; import { RichTextEditorConfig } from '../../rich_text_editor/config/config'; diff --git a/src/pages/index.ts b/src/pages/index.ts index 3d71538ec..1d7fc737e 100644 --- a/src/pages/index.ts +++ b/src/pages/index.ts @@ -47,52 +47,19 @@ import { isString, bindAll, unique, flatten } from 'underscore'; import { createId } from '../utils/mixins'; import { ModuleModel } from '../abstract'; -import { ItemManagerModule, ModuleConfig } from '../abstract/Module'; +import { ItemManagerModule } from '../abstract/Module'; import Pages from './model/Pages'; import Page, { PageProperties } from './model/Page'; import EditorModel from '../editor/model/Editor'; import ComponentWrapper from '../dom_components/model/ComponentWrapper'; import { AddOptions, RemoveOptions, SetOptions } from '../common'; +import PagesEvents, { AbortOption, PageManagerConfig, SelectableOption } from './types'; -interface SelectableOption { - /** - * Select the page. - */ - select?: boolean; -} - -interface AbortOption { - abort?: boolean; -} - -export const evAll = 'page'; -export const evPfx = `${evAll}:`; -export const evPageSelect = `${evPfx}select`; -export const evPageSelectBefore = `${evPageSelect}:before`; -export const evPageUpdate = `${evPfx}update`; -export const evPageAdd = `${evPfx}add`; -export const evPageAddBefore = `${evPageAdd}:before`; -export const evPageRemove = `${evPfx}remove`; -export const evPageRemoveBefore = `${evPageRemove}:before`; const chnSel = 'change:selected'; const typeMain = 'main'; -const pageEvents = { - all: evAll, - select: evPageSelect, - selectBefore: evPageSelectBefore, - update: evPageUpdate, - add: evPageAdd, - addBefore: evPageAddBefore, - remove: evPageRemove, - removeBefore: evPageRemoveBefore, -}; - -export interface PageManagerConfig extends ModuleConfig { - pages?: any[]; -} export default class PageManager extends ItemManagerModule { - events!: typeof pageEvents; + events = PagesEvents; storageKey = 'pages'; get pages() { @@ -121,7 +88,7 @@ export default class PageManager extends ItemManagerModule { const page = this.pages.add(new Page(props, { em: this.em, config: this.config }), opts); opts.select && this.select(page); return page; }; - !opts.silent && em.trigger(evPageAddBefore, props, add, opts); + !opts.silent && em.trigger(events.addBefore, props, add, opts); return !opts.abort ? add() : undefined; } @@ -196,13 +164,13 @@ export default class PageManager extends ItemManagerModule { pg && this.pages.remove(pg, opts); return pg; }; - !opts.silent && em.trigger(evPageRemoveBefore, pg, rm, opts); + !opts.silent && em.trigger(events.removeBefore, pg, rm, opts); return !opts.abort && rm(); } @@ -252,10 +220,11 @@ export default class PageManager extends ItemManagerModule { ... }); + */ + add = 'page:add', + addBefore = 'page:add:before', + + /** + * @event `page:remove` Page removed. The page is passed as an argument to the callback. + * @example + * editor.on('page:remove', (page) => { ... }); + */ + remove = 'page:remove', + removeBefore = 'page:remove:before', + + /** + * @event `page:select` New page selected. The newly selected page and the previous one, are passed as arguments to the callback. + * @example + * editor.on('page:select', (page, previousPage) => { ... }); + */ + select = 'page:select', + selectBefore = 'page:select:before', + + /** + * @event `page:update` Page updated. The updated page and the object containing changes are passed as arguments to the callback. + * @example + * editor.on('page:update', (page, changes) => { ... }); + */ + update = 'page:update', + + /** + * @event `page` Catch-all event for all the events mentioned above. An object containing all the available data about the triggered event is passed as an argument to the callback. + * @example + * editor.on('page', ({ event, model, ... }) => { ... }); + */ + all = 'page', +} +/**{END_EVENTS}*/ + +// need this to avoid the TS documentation generator to break +export default PagesEvents;