laravel-jstools
Version:
JS tools for building front-side of Laravel applications
57 lines (56 loc) • 2.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AppLocator = void 0;
const ServiceContainer_1 = require("../di/ServiceContainer");
const AppServiceProvider_1 = require("./providers/AppServiceProvider");
const JSToolsAbstractMap_1 = require("./JSToolsAbstractMap");
class AppLocator {
constructor(globalData) {
this.providerList = [];
this.globalData = globalData;
this.serviceContainer = new ServiceContainer_1.ServiceContainer();
this.registerProvider(new AppServiceProvider_1.AppServiceProvider());
}
registerProvider(provider) {
provider.setAppData(this.globalData);
provider.register();
this.providerList.push(provider);
this.generateMaps();
}
make(name) {
return this.serviceContainer.make(name);
}
makeEntity(name, entityType, params) {
return this.serviceContainer.makeEntity(name, entityType, params);
}
form(formId, formData, showNoty, componentsOptions, entityType) {
return this.makeEntity(JSToolsAbstractMap_1.JSToolsAbstractMap.FormContract, entityType, {
formId,
formData,
showNoty,
componentsOptions,
});
}
modal(modalId, modalUsage, modalData, showNoty, tools, entityType) {
return this.makeEntity(JSToolsAbstractMap_1.JSToolsAbstractMap.ModalContract, entityType, {
modalId,
modalUsage,
modalData,
showNoty,
tools,
});
}
noty(data) {
this.make(JSToolsAbstractMap_1.JSToolsAbstractMap.NotyServiceContract).show(data);
}
generateMaps() {
let classMap = {};
let aliasMap = {};
this.providerList.forEach((provider, i, arr) => {
classMap = Object.assign(classMap, provider.getClassMap());
aliasMap = Object.assign(aliasMap, provider.getAliasMap());
});
this.serviceContainer.setMaps(classMap, aliasMap);
}
}
exports.AppLocator = AppLocator;