@robotlegsjs/pixi-palidor
Version:
A RobotlegsJS View Manager Extension for PixiJS
93 lines • 4.14 kB
JavaScript
"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.FlowManager = void 0;
var tslib_1 = require("tslib");
var core_1 = require("@robotlegsjs/core");
var eventemitter3_1 = require("@robotlegsjs/eventemitter3");
var IContainerController_1 = require("../api/IContainerController");
var PalidorEvent_1 = require("../events/PalidorEvent");
var FlowViewMapping_1 = require("./FlowViewMapping");
var FlowManager = /** @class */ (function () {
function FlowManager(eventMap, controller, eventDispatcher) {
this._eventMap = eventMap;
this._dispatcher = eventDispatcher;
this._controller = controller;
this._views = new Map();
this._mapPalidorListeners();
}
Object.defineProperty(FlowManager.prototype, "controller", {
get: function () {
return this._controller;
},
enumerable: false,
configurable: true
});
Object.defineProperty(FlowManager.prototype, "dispatcher", {
get: function () {
return this._dispatcher;
},
enumerable: false,
configurable: true
});
Object.defineProperty(FlowManager.prototype, "views", {
get: function () {
return this._views;
},
enumerable: false,
configurable: true
});
FlowManager.prototype.map = function (event) {
var clazz = this._views.get(event);
if (clazz !== undefined) {
return null;
}
return new FlowViewMapping_1.FlowViewMapping(event, this);
};
FlowManager.prototype.mapView = function (eventString, viewClass) {
this._views.set(eventString, viewClass);
this._eventMap.mapListener(this._dispatcher, eventString, this._onChangeView, this);
};
FlowManager.prototype.mapFloatingView = function (eventString, viewClass) {
this._views.set(eventString, viewClass);
this._eventMap.mapListener(this._dispatcher, eventString, this._onAddFloatingView, this);
};
FlowManager.prototype._mapPalidorListeners = function () {
this._eventMap.mapListener(this._dispatcher, PalidorEvent_1.PalidorEvent.REMOVE_CURRENT_VIEW, this._onRemoveCurrentView, this);
this._eventMap.mapListener(this._dispatcher, PalidorEvent_1.PalidorEvent.REMOVE_LAST_FLOATING_VIEW_ADDED, this._onRemoveLastFloatingView, this);
this._eventMap.mapListener(this._dispatcher, PalidorEvent_1.PalidorEvent.REMOVE_ALL_FLOATING_VIEWS, this._onRemoveAllFloatingView, this);
};
FlowManager.prototype._onChangeView = function (e) {
var clazz = this._views.get(e.type);
this._controller.removeCurrentView();
this._controller.changeView(new clazz());
};
FlowManager.prototype._onAddFloatingView = function (e) {
var clazz = this._views.get(e.type);
this._controller.addView(new clazz());
};
FlowManager.prototype._onRemoveCurrentView = function (e) {
this._controller.removeCurrentView();
};
FlowManager.prototype._onRemoveLastFloatingView = function () {
this._controller.removeLastFloatingViewAdded();
};
FlowManager.prototype._onRemoveAllFloatingView = function (e) {
this._controller.removeAllFloatingViews();
};
FlowManager = tslib_1.__decorate([
core_1.injectable(),
tslib_1.__param(0, core_1.inject(eventemitter3_1.IEventEmitterMap)),
tslib_1.__param(1, core_1.inject(IContainerController_1.IContainerController)),
tslib_1.__param(2, core_1.inject(core_1.IEventDispatcher)),
tslib_1.__metadata("design:paramtypes", [Object, Object, Object])
], FlowManager);
return FlowManager;
}());
exports.FlowManager = FlowManager;
//# sourceMappingURL=FlowManager.js.map