var Secra; (function (Secra) { var FeWoCM; (function (FeWoCM) { var AllowedModules; (function (AllowedModules) { AllowedModules["SEARCH"] = "search"; AllowedModules["OBJECT"] = "object"; AllowedModules["BOOKING"] = "booking"; })(AllowedModules || (AllowedModules = {})); var FrontendLoader = /** @class */ (function () { function FrontendLoader(config, module) { this.config = config; module && this.render(module); } Object.defineProperty(FrontendLoader, "moduleRender", { get: function () { return this._moduleRender; }, set: function (value) { if (!this._moduleRender) { this._moduleRender = value; } }, enumerable: true, configurable: true }); /** * Render an OP Module * @param name Module name */ FrontendLoader.prototype.render = function (name) { var _this = this; if (!this.isAllowedModule(name)) { throw new Error('Module not supported'); } this.init(function () { var module = name; var op_client_config = { useCookies: true, hasOwnCookieInfo: true, languageSwitcherEnabled: !!_this.config.language, limit: { ToNr: [120], }, }; if (name === AllowedModules.SEARCH) { module = 'suche'; if (_this.config.requestId) { op_client_config.limit.GaGeNr = _this.config.requestId.split(','). map(function (item) { return Number(item); }); } if (_this.config.objMetaNrFilter) { op_client_config.limit.ObjMetaNr = _this.config.objMetaNrFilter.split(',').map(function (item) { return Number(item); }); } } else { // trigger route after module rendered (except for search) FrontendLoader.moduleRender = secra_op_client.moduleRender; secra_op_client.moduleRender = function (module) { FrontendLoader.moduleRender.call(secra_op_client, module); window.location.hash = "#!m/" + name + "/" + _this.config.requestId; }; } secra_op_client.loadModule('op-frontend-' + module, _this.config.renderToId || 'op_content_box', op_client_config); }); }; FrontendLoader.prototype.init = function (callback) { if (typeof secra_op_client === 'undefined') { var head = document.querySelector('head'); var script = document.createElement('script'); var query = []; var params = { secratoid: this.config.toId, op_client_language: this.config.language || '', }; for (var a in params) { // exclude some types from being added to the query string if (['', undefined].indexOf(params[a]) === -1) { query.push(a + "=" + encodeURIComponent(params[a])); } } script.type = 'text/javascript'; script.onload = function () { return callback(); }; script.src = "https://ssl.optimale-praesentation.de/frontend/js/bin/boot?" + query.join('&'); script.async = true; head.appendChild(script); } else { callback(); } }; /** * Check if module is on the whitelist * * @param name */ FrontendLoader.prototype.isAllowedModule = function (name) { for (var module in AllowedModules) { if (AllowedModules[module] === name) { return true; } } return false; }; return FrontendLoader; }()); FeWoCM.FrontendLoader = FrontendLoader; function injectModule(module, config) { var _a; var script = document.querySelector("script[src*=\"fewo-channelmanager.de\"]"); if (((_a = script) === null || _a === void 0 ? void 0 : _a.async) === true) { var wrapper = document.createElement('div'); wrapper.id = 'op_content_box'; script.parentNode.insertBefore(wrapper, script.nextSibling); new Secra.FeWoCM.FrontendLoader(config, module); } else { console.warn("Fehlerhafte Einbindung des FeWo-Channelmanagers"); } } FeWoCM.injectModule = injectModule; })(FeWoCM = Secra.FeWoCM || (Secra.FeWoCM = {})); })(Secra || (Secra = {})); Secra.FeWoCM.injectModule("booking", { toId: "c9b4715ee", requestId: "153642", language: "", objMetaNrFilter: "" });