UNPKG

react-application-core

Version:

A react-based application core for the business applications.

92 lines 3.83 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.AsyncLibManager = void 0; var R = require("ramda"); var BPromise = require("bluebird"); var inversify_1 = require("inversify"); var di_1 = require("../di"); var definition_1 = require("../definition"); var util_1 = require("../util"); var AsyncLibManager = /** @class */ (function () { function AsyncLibManager() { this.scriptsTasks = new Map(); this.registeredLibs = new Map(); } /** * @stable [09.01.2020] * @param {IAsyncLibConfigEntity} cfg */ AsyncLibManager.prototype.registerLib = function (cfg) { var alias = cfg.alias || cfg.url; this.registeredLibs.set(alias, cfg); }; /** * @stable [08.01.2020] * @param {IAsyncLibConfigEntity} cfg * @returns {Promise<HTMLScriptElement>} */ AsyncLibManager.prototype.loadLib = function (cfg) { var _this = this; var alias = cfg.alias || cfg.url; cfg = this.registeredLibs.get(alias) || cfg; var task = this.scriptsTasks.get(alias); if (R.isNil(task)) { var data_1 = { alias: alias }; this.store.dispatch({ type: definition_1.$RAC_ASYNC_LIB_LOAD_ACTION_TYPE, data: data_1 }); this.scriptsTasks.set(alias, task = this.domAccessor .createScript({ src: cfg.url }) .then(function (el) { _this.store.dispatch({ type: definition_1.$RAC_ASYNC_LIB_LOAD_DONE_ACTION_TYPE, data: data_1 }); return el; })); } return task; }; /** * @stable [09.01.2020] * @param {IAsyncLibConfigEntity} cfg * @returns {Bluebird<HTMLScriptElement>} */ AsyncLibManager.prototype.waitForLib = function (cfg) { var _this = this; // This new promise may be canceled, but not the original! return new BPromise(function (resolve) { return _this.loadLib(cfg).then(resolve); }); }; /** * @stable [10.01.2020] * @param {Bluebird<HTMLScriptElement> | AnyT} promise * @returns {boolean} */ AsyncLibManager.prototype.cancelWaiting = function (promise) { return util_1.ifNotNilThanValue(promise, function ($$promise) { if ($$promise.isPending()) { $$promise.cancel(); return true; } return false; }, false); }; __decorate([ di_1.lazyInject(di_1.DI_TYPES.DomAccessor), __metadata("design:type", Object) ], AsyncLibManager.prototype, "domAccessor", void 0); __decorate([ di_1.lazyInject(di_1.DI_TYPES.Store), __metadata("design:type", Object) ], AsyncLibManager.prototype, "store", void 0); AsyncLibManager = __decorate([ inversify_1.injectable() ], AsyncLibManager); return AsyncLibManager; }()); exports.AsyncLibManager = AsyncLibManager; //# sourceMappingURL=async-lib-manager.service.js.map