@robotlegsjs/createjs
Version:
CreateJS View Integration with RobotlegsJS
149 lines • 6.48 kB
JavaScript
;
// ------------------------------------------------------------------------------
// 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