main.js

/**
 * Основной модуль, предоставляющий элементы для настройки и управления панелями<br>
 * Объявляется глобально и доступен через переменную <b>rb</b>
 * @module MainModule
 */
define(['screenModel', 'rbManager', 'IPlugin', 'IControl', '../css/rb.scss'], function(ScreenModel, RbManager, IPlugin, IControl) {
    "use strict";

    return /** @alias module:MainModule */ Object.create(null, {
        /**
         * Класс модели отображаемого внутри панели контента, модели связываются в граф зависимостей,
         * по которому осуществляется перемещение в панели.
         * @type {ScreenModel}
         */
        Screen: {
            value: ScreenModel
        },
        /**
         * Функция, инициализирующая расположенные в данный момент на странице панели.
         * @type {function}
         * @see {@link module:RbManager.init}
         */
        start: {
            value: RbManager.init
        },
        /**
         * Функция, удаляющая панель со страницы.
         * @type {function}
         * @see {@link module:RbManager.remove}
         */
        remove: {
            value: RbManager.remove
        },
        /**
         * Набор панелей, действующих в данный момент на странице.
         * @type {Moving[]}
         */
        Instances: {
            value: {}
        },
        /**
         * Модуль, позволяющий управлять панелями на странице пакетированно, то есть запускать действия для всех панеляй сразу.
         * @type {module:Batch}
         */
        Batch: {
            value: RbManager.Batch
        },
        /**
         * Интерфейс плагина панели, который можно добавить в панель для расширения ее фунционала.
         * Добавляемые плагины должны быть именно такого типа.
         * @type {IPlugin}
         * @see {@link Moving#addPlugin}
         * @see {@link Moving#removePlugin}
         */
        IPlugin: {
            value: IPlugin
        },
        /**
         * Интерфейс управления панелью. Позволяет переключаться в соседние ячейки панели.
         * Добавляемые плагины управления панелью должны быть именно такого типа.
         * @type {IControl}
         * @see {@link ControlManager#add}
         * @see {@link ControlManager#remove}
         */
        IControl: {
            value: IControl
        }
    });
});