UNPKG

@robotlegsjs/createjs

Version:
149 lines 6.48 kB
"use strict"; // ------------------------------------------------------------------------------ // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. // // NOTICE: You are permitted to use, modify, and distribute this file // in accordance with the terms of the license agreement accompanying it. // ------------------------------------------------------------------------------ Object.defineProperty(exports, "__esModule", { value: true }); exports.ViewManager = void 0; var tslib_1 = require("tslib"); var core_1 = require("@robotlegsjs/core"); var ContainerRegistry_1 = require("./ContainerRegistry"); var ViewManagerEvent_1 = require("./ViewManagerEvent"); // [Event(name="containerAdd", type="robotlegs.bender.extensions.viewManager.impl.ViewManagerEvent")] // [Event(name="containerRemove", type="robotlegs.bender.extensions.viewManager.impl.ViewManagerEvent")] // [Event(name="handlerAdd", type="robotlegs.bender.extensions.viewManager.impl.ViewManagerEvent")] // [Event(name="handlerRemove", type="robotlegs.bender.extensions.viewManager.impl.ViewManagerEvent")] /** * @private */ var ViewManager = /** @class */ (function (_super) { tslib_1.__extends(ViewManager, _super); /*============================================================================*/ /* Constructor */ /*============================================================================*/ /** * @private */ function ViewManager(containerRegistry) { var _this = _super.call(this) || this; /*============================================================================*/ /* Public Properties */ /*============================================================================*/ _this._containers = []; /*============================================================================*/ /* Private Properties */ /*============================================================================*/ _this._handlers = []; _this._registry = containerRegistry; return _this; } Object.defineProperty(ViewManager.prototype, "containers", { /** * @inheritDoc */ get: function () { return this._containers; }, enumerable: false, configurable: true }); /*============================================================================*/ /* Public Functions */ /*============================================================================*/ /** * @inheritDoc */ ViewManager.prototype.addContainer = function (container) { var _this = this; if (!this._validContainer(container)) { return; } this._containers.push(container); this._handlers.forEach(function (handler) { _this._registry.addContainer(container).addHandler(handler); }); this.dispatchEvent(new ViewManagerEvent_1.ViewManagerEvent(ViewManagerEvent_1.ViewManagerEvent.CONTAINER_ADD, container)); }; /** * @inheritDoc */ ViewManager.prototype.removeContainer = function (container) { var index = this._containers.indexOf(container); if (index === -1) { return; } this._containers.splice(index, 1); var binding = this._registry.getBinding(container); this._handlers.forEach(function (handler) { binding.removeHandler(handler); }); this.dispatchEvent(new ViewManagerEvent_1.ViewManagerEvent(ViewManagerEvent_1.ViewManagerEvent.CONTAINER_REMOVE, container)); }; /** * @inheritDoc */ ViewManager.prototype.addViewHandler = function (handler) { var _this = this; if (this._handlers.indexOf(handler) !== -1) { return; } this._handlers.push(handler); this._containers.forEach(function (container) { _this._registry.addContainer(container).addHandler(handler); }); this.dispatchEvent(new ViewManagerEvent_1.ViewManagerEvent(ViewManagerEvent_1.ViewManagerEvent.HANDLER_ADD, null, handler)); }; /** * @inheritDoc */ ViewManager.prototype.removeViewHandler = function (handler) { var _this = this; var index = this._handlers.indexOf(handler); if (index === -1) { return; } this._handlers.splice(index, 1); this._containers.forEach(function (container) { _this._registry.getBinding(container).removeHandler(handler); }); this.dispatchEvent(new ViewManagerEvent_1.ViewManagerEvent(ViewManagerEvent_1.ViewManagerEvent.HANDLER_REMOVE, null, handler)); }; /** * @inheritDoc */ ViewManager.prototype.removeAllHandlers = function () { var _this = this; var binding = null; this._containers.forEach(function (container) { binding = _this._registry.getBinding(container); _this._handlers.forEach(function (handler) { binding.removeHandler(handler); }); }); }; /*============================================================================*/ /* Private Functions */ /*============================================================================*/ ViewManager.prototype._validContainer = function (container) { var isValid = this._containers.indexOf(container) < 0; if (isValid) { this._containers.forEach(function (registeredContainer) { if (registeredContainer.contains(container) || container.contains(registeredContainer)) { throw new Error("Containers can not be nested"); } }); } return isValid; }; ViewManager = tslib_1.__decorate([ core_1.injectable(), tslib_1.__param(0, core_1.inject(ContainerRegistry_1.ContainerRegistry)), tslib_1.__metadata("design:paramtypes", [ContainerRegistry_1.ContainerRegistry]) ], ViewManager); return ViewManager; }(core_1.EventDispatcher)); exports.ViewManager = ViewManager; //# sourceMappingURL=ViewManager.js.map