UNPKG

@dimanoid/ngx-dm-tour

Version:

1,052 lines 96 kB
/** * @fileoverview added by tsickle * Generated from: lib/dm-tour.service.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { __read, __spread, __values } from "tslib"; import { Injectable, Inject, Optional, RendererFactory2 } from '@angular/core'; import { DOCUMENT } from '@angular/common'; import { HttpClient } from '@angular/common/http'; import { DmTourConfig, DM_TOUR_CONF } from './models'; import { isElemVisible } from './utils'; import { Observable, Subject } from 'rxjs'; import { GLOBAL_STYLES } from './dm-tour.styles'; import { debounceTime } from 'rxjs/operators'; import ResizeObserver from 'resize-observer-polyfill'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common/http"; import * as i2 from "@angular/common"; import * as i3 from "./models/dm-tour-config"; var DmTourService = /** @class */ (function () { function DmTourService(_rendererFactory, _http, document, cfg) { var _this = this; this._rendererFactory = _rendererFactory; this._http = _http; this.document = document; this._controls = {}; this._hlVisible = null; this._cfg = new DmTourConfig(cfg); this._r2 = this._rendererFactory.createRenderer(null, null); if (this._cfg.loadIndexOnStart) { this._addGlobalStyles(); this._loadSections().subscribe((/** * @return {?} */ function () { }), (/** * @param {?} err * @return {?} */ function (err) { return _this._handleLoadError(err); })); } if (ResizeObserver) { /** @type {?} */ var resized_1 = new Subject(); new ResizeObserver((/** * @return {?} */ function () { return resized_1.next(); })).observe(this.document.body); resized_1.pipe(debounceTime(500)).subscribe((/** * @return {?} */ function () { return _this._resized(); })); } } /** * @private * @return {?} */ DmTourService.prototype._resized = /** * @private * @return {?} */ function () { this._L('_resized', this._hlVisible); if (this._r2 && this._root && this._hlVisible && this._hlVisible.type == 'controls') { /** @type {?} */ var bd = this.document.querySelector('#ngxDmTourRoot'); this._L('_resized, bd:', bd); if (bd) { bd.remove(); this._root = null; } if (this._onClickRemove) { this._onClickRemove(); this._onClickRemove = null; } if (this._onKeyupRemove) { this._onKeyupRemove(); this._onKeyupRemove = null; } /** @type {?} */ var sid = this._hlVisible.sectionId; this._hlVisible = null; this._showControlsHelp(sid); } }; /** * @param {?} sectionId * @param {?} id * @param {?} el * @return {?} */ DmTourService.prototype.registerControl = /** * @param {?} sectionId * @param {?} id * @param {?} el * @return {?} */ function (sectionId, id, el) { if (!sectionId || !id || !el) { return; } this._L("registerControl, sectionId: " + sectionId + ", is: " + id + ", el:", el); if (!this._controls[sectionId]) { this._controls[sectionId] = {}; } if (!this._controls[sectionId][id]) { this._controls[sectionId][id] = { id: id }; } this._controls[sectionId][id].el = el.nativeElement; }; /** * @param {?} sectionId * @param {?} id * @return {?} */ DmTourService.prototype.unregisterControl = /** * @param {?} sectionId * @param {?} id * @return {?} */ function (sectionId, id) { if (!this._controls[sectionId] || this._controls[sectionId][id]) { return; } this._L("unregisterControl, sectionId: " + sectionId + ", is: " + id); delete this._controls[sectionId][id].el; }; /** * @param {?} sectionId * @return {?} */ DmTourService.prototype.showControlsHelp = /** * @param {?} sectionId * @return {?} */ function (sectionId) { var _this = this; if (this._hlVisible) { return; } if (!this._sections) { this._addGlobalStyles(); this._loadSections().subscribe((/** * @return {?} */ function () { _this._loadSectionControls(sectionId).subscribe((/** * @return {?} */ function () { return _this._showControlsHelp(sectionId); }), (/** * @param {?} err * @return {?} */ function (err) { return _this._handleLoadError(err); })); }), (/** * @param {?} err * @return {?} */ function (err) { return _this._handleLoadError(err); })); } else if (!this._sections[sectionId]) { this._handleLoadError("There is no a section \"" + sectionId + "\" defined."); } else if (this._sections[sectionId] && !this._sections[sectionId].controlsLoaded) { this._loadSectionControls(sectionId).subscribe((/** * @return {?} */ function () { return _this._showControlsHelp(sectionId); }), (/** * @param {?} err * @return {?} */ function (err) { return _this._handleLoadError(err); })); } else { this._showControlsHelp(sectionId); } }; /** * @param {?} sectionId * @return {?} */ DmTourService.prototype.showHelp = /** * @param {?} sectionId * @return {?} */ function (sectionId) { var _this = this; if (this._hlVisible) { return; } if (!this._sections) { this._addGlobalStyles(); this._loadSections().subscribe((/** * @return {?} */ function () { _this._loadSectionHtml(sectionId).subscribe((/** * @return {?} */ function () { return _this._showHelp(sectionId); }), (/** * @param {?} err * @return {?} */ function (err) { return _this._handleLoadError(err); })); }), (/** * @param {?} err * @return {?} */ function (err) { return _this._handleLoadError(err); })); } else if (!this._sections[sectionId]) { this._handleLoadError("There is no a section \"" + sectionId + "\" defined."); } else if (this._sections[sectionId] && !this._sections[sectionId].controlsLoaded) { this._loadSectionHtml(sectionId).subscribe((/** * @return {?} */ function () { return _this._showHelp(sectionId); }), (/** * @param {?} err * @return {?} */ function (err) { return _this._handleLoadError(err); })); } else { this._showHelp(sectionId); } }; /** * @private * @return {?} */ DmTourService.prototype._loadSections = /** * @private * @return {?} */ function () { var _this = this; this._showLoading(); return new Observable((/** * @param {?} obs * @return {?} */ function (obs) { _this._http.get(_this._cfg.rootPath + '/index.json').subscribe((/** * @param {?} res * @return {?} */ function (res) { var e_1, _a; _this._hideLoading(); if (res && res.sections) { _this._sections = {}; try { for (var _b = __values(res.sections), _c = _b.next(); !_c.done; _c = _b.next()) { var section = _c.value; _this._sections[section.id] = section; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_1) throw e_1.error; } } obs.next(); } else { obs.error('Wrong data format in ${this._cfg.rootPath}/index.json'); } }), (/** * @param {?} err * @return {?} */ function (err) { _this._hideLoading(); obs.error(err); })); })); }; /** * @private * @param {?} sectionId * @return {?} */ DmTourService.prototype._loadSectionControls = /** * @private * @param {?} sectionId * @return {?} */ function (sectionId) { var _this = this; this._showLoading(); if (!this._controls[sectionId]) { this._controls[sectionId] = {}; } return new Observable((/** * @param {?} obs * @return {?} */ function (obs) { _this._http.get(_this._cfg.rootPath + "/" + sectionId + "/index.json").subscribe((/** * @param {?} res * @return {?} */ function (res) { var e_2, _a; _this._hideLoading(); if (res && res.controls) { try { for (var _b = __values(res.controls), _c = _b.next(); !_c.done; _c = _b.next()) { var ctrl = _c.value; /** @type {?} */ var c = _this._controls[sectionId][ctrl.id]; _this._controls[sectionId][ctrl.id] = ctrl; _this._controls[sectionId][ctrl.id].el = c ? c.el : null; } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_2) throw e_2.error; } } obs.next(); } else { obs.error('${this._cfg.rootPath}/${sectionId}/index.json'); } }), (/** * @param {?} err * @return {?} */ function (err) { _this._hideLoading(); obs.error(err); })); })); }; /** * @private * @param {?} sectionId * @return {?} */ DmTourService.prototype._loadSectionHtml = /** * @private * @param {?} sectionId * @return {?} */ function (sectionId) { var _this = this; this._showLoading(); return new Observable((/** * @param {?} obs * @return {?} */ function (obs) { _this._http.get(_this._cfg.rootPath + "/" + sectionId + "/index.html", { responseType: 'text' }).subscribe((/** * @param {?} res * @return {?} */ function (res) { _this._L('section html:', res); _this._hideLoading(); _this._sections[sectionId].html = res; obs.next(); }), (/** * @param {?} err * @return {?} */ function (err) { _this._hideLoading(); obs.error(err); })); })); }; /** * @private * @param {?} sectionId * @return {?} */ DmTourService.prototype._showControlsHelp = /** * @private * @param {?} sectionId * @return {?} */ function (sectionId) { var e_3, _a, e_4, _b, e_5, _c; var _this = this; /** @type {?} */ var ids = this._controls[sectionId] ? Object.keys(this._controls[sectionId]) : []; if (!ids || ids.length == 0) { this._W("There are no visible controls registered for the section \"" + sectionId + "\""); return; } /** @type {?} */ var R = this._r2; /** @type {?} */ var bd = this.document.querySelector('#ngxDmTourRoot'); if (bd) { R.removeChild(this.document.body, bd); } /** @type {?} */ var svg = R.createElement('svg', 'svg'); /** @type {?} */ var defs = R.createElement('defs', 'svg'); /** @type {?} */ var stop; /** @type {?} */ var rgr = R.createElement('radialGradient', 'svg'); R.setAttribute(rgr, 'id', 'ngxDmTourGradientR'); stop = R.createElement('stop', 'svg'); R.setAttribute(stop, 'offset', '90%'); R.setAttribute(stop, 'stop-color', 'black'); R.appendChild(rgr, stop); stop = R.createElement('stop', 'svg'); R.setAttribute(stop, 'offset', '100%'); R.setAttribute(stop, 'stop-color', 'transparent'); R.appendChild(rgr, stop); R.appendChild(defs, rgr); /** @type {?} */ var mask = R.createElement('mask', 'svg'); R.setAttribute(mask, 'id', 'ngxDmTourControlsMask'); /** @type {?} */ var mrect = R.createElement('rect', 'svg'); R.setAttribute(mrect, 'width', '10000'); R.setAttribute(mrect, 'height', '10000'); R.setAttribute(mrect, 'fill', 'white'); R.appendChild(mask, mrect); /** @type {?} */ var tts = []; try { for (var ids_1 = __values(ids), ids_1_1 = ids_1.next(); !ids_1_1.done; ids_1_1 = ids_1.next()) { var id = ids_1_1.value; /** @type {?} */ var c = this._controls[sectionId][id]; if (c && c.el) { if (!c.children && c.text) { /** @type {?} */ var tt = this._addControlHl(c, mask); if (tt) { tts.push(tt); } } else if (c.children) { try { for (var _d = (e_4 = void 0, __values(c.children)), _e = _d.next(); !_e.done; _e = _d.next()) { var ch = _e.value; if (ch.text) { /** @type {?} */ var tt = this._addControlHl(ch, mask); if (tt) { tts.push(tt); } } } } catch (e_4_1) { e_4 = { error: e_4_1 }; } finally { try { if (_e && !_e.done && (_b = _d.return)) _b.call(_d); } finally { if (e_4) throw e_4.error; } } } } } } catch (e_3_1) { e_3 = { error: e_3_1 }; } finally { try { if (ids_1_1 && !ids_1_1.done && (_a = ids_1.return)) _a.call(ids_1); } finally { if (e_3) throw e_3.error; } } if (tts.length == 0) { this._W("There are no visible controls registered for the section \"" + sectionId + "\""); return; } R.appendChild(defs, mask); R.appendChild(svg, defs); /** @type {?} */ var rect = R.createElement('rect', 'svg'); R.setAttribute(rect, 'width', '10000'); R.setAttribute(rect, 'height', '10000'); R.setAttribute(rect, 'x', '0'); R.setAttribute(rect, 'y', '0'); R.setAttribute(rect, 'fill', 'var(--ngx-dm-tour-backdrop-color, black)'); R.setAttribute(rect, 'mask', 'url(#ngxDmTourControlsMask)'); R.appendChild(svg, rect); R.setAttribute(svg, 'width', '10000px'); R.setAttribute(svg, 'height', '10000px'); this._root = R.createElement('div'); R.setAttribute(this._root, 'id', 'ngxDmTourRoot'); if (this._cfg.customCssClass) { R.addClass(this._root, this._cfg.customCssClass); } /** @type {?} */ var root = R.createElement('div'); R.appendChild(this._root, root); R.setAttribute(root, 'id', 'ngxDmTourBackdrop'); R.appendChild(root, svg); try { for (var tts_1 = __values(tts), tts_1_1 = tts_1.next(); !tts_1_1.done; tts_1_1 = tts_1.next()) { var tt = tts_1_1.value; R.appendChild(this._root, tt); } } catch (e_5_1) { e_5 = { error: e_5_1 }; } finally { try { if (tts_1_1 && !tts_1_1.done && (_c = tts_1.return)) _c.call(tts_1); } finally { if (e_5) throw e_5.error; } } this.document.activeElement.blur(); this._hlVisible = { type: 'controls', sectionId: sectionId }; R.appendChild(this.document.body, this._root); setTimeout((/** * @return {?} */ function () { R.addClass(_this._root, 'ngx-dm-tour-show'); _this._onClickRemove = R.listen(_this.document, 'click', (/** * @param {?} e * @return {?} */ function (e) { return _this.hideControlsHelp(e); })); _this._onKeyupRemove = R.listen(_this.document, 'keyup', (/** * @param {?} e * @return {?} */ function (e) { return _this.hideControlsHelp(e); })); }), 300); }; /** * @private * @param {?} c * @param {?} mask * @return {?} */ DmTourService.prototype._addControlHl = /** * @private * @param {?} c * @param {?} mask * @return {?} */ function (c, mask) { /** @type {?} */ var dr = this.document.body.getBoundingClientRect(); /** @type {?} */ var MR = Math.round; /** @type {?} */ var R = this._r2; /** @type {?} */ var el = typeof c.el === 'string' ? this.document.querySelector(c.el) : c.el; /** @type {?} */ var b = this._getBoundaries(el); /** @type {?} */ var vis = isElemVisible(el); this._L('control:', c, '\nelem:', el, '\nboundaries:', b, '\nisVisible:', vis); if (!vis || !b || b.width == 0 || b.height == 0) { return null; } /** @type {?} */ var shape = c.shape ? c.shape : this._cfg.defaultShape == 'auto' ? (b.width > 200 || b.height > 200 ? 'square' : 'circle') : this._cfg.defaultShape; if (shape == 'square') { /** @type {?} */ var hl = R.createElement('rect', 'svg'); R.setAttribute(hl, 'x', '' + MR(b.left - 10)); R.setAttribute(hl, 'y', '' + MR(b.top - 10)); R.setAttribute(hl, 'width', '' + MR(b.width + 20)); R.setAttribute(hl, 'height', '' + MR(b.height + 20)); R.setAttribute(hl, 'rx', '8'); R.setAttribute(hl, 'fill', 'black'); R.setAttribute(hl, 'stroke', 'black'); R.setAttribute(hl, 'stroke-width', 'var(--ngx-dm-tour-hl-stroke-width, 15)'); R.setAttribute(hl, 'stroke-opacity', 'var(--ngx-dm-tour-hl-stroke-opacity, .3)'); R.appendChild(mask, hl); } else { /** @type {?} */ var hl = R.createElement('circle', 'svg'); /** @type {?} */ var r = b.width > b.height ? b.width / 2 : b.height / 2; R.setAttribute(hl, 'cx', '' + MR(b.left + b.width / 2)); R.setAttribute(hl, 'cy', '' + MR(b.top + b.height / 2)); R.setAttribute(hl, 'r', '' + MR(r + 10)); R.setAttribute(hl, 'fill', 'black'); R.setAttribute(hl, 'stroke', 'black'); R.setAttribute(hl, 'stroke-width', 'var(--ngx-dm-tour-hl-stroke-width, 15)'); R.setAttribute(hl, 'stroke-opacity', 'var(--ngx-dm-tour-hl-stroke-opacity, .3)'); R.appendChild(mask, hl); } /** @type {?} */ var tt = R.createElement('div'); R.addClass(tt, 'ngx-dm-tour-text'); /** @type {?} */ var tti = R.createElement('div'); R.addClass(tti, 'ngx-dm-tour-text-inner'); R.appendChild(tti, R.createText(c.text)); R.appendChild(tt, tti); /** @type {?} */ var pos = c.pos && c.pos != 'auto' ? c.pos.split('-') : null; if (!pos) { if (b.top > 250) { pos = ['top', 'center']; } else if (dr.width - b.right > 250) { pos = ['right', 'center']; } else if (dr.height - b.bottom > 250) { pos = ['bottom', 'center']; } else if (b.left > 250) { pos = ['left', 'center']; } else { pos = ['center', 'center']; } } else if (pos.length == 1) { pos.push('center'); } /** @type {?} */ var x = MR(b.left + b.width / 2); /** @type {?} */ var y = MR(b.top + b.height / 2); /** @type {?} */ var tx = -50; /** @type {?} */ var ty = -50; if (pos[0] == 'top') { ty = -100; y = b.top - 20; if (pos[1] == 'left') { tx = 0; x = b.left; } else if (pos[1] == 'right') { tx = -100; x = b.right; } } else if (pos[0] == 'bottom') { ty = 0; y = b.bottom + 20; if (pos[1] == 'left') { tx = 0; x = b.left; } else if (pos[1] == 'right') { tx = -100; x = b.right; } } else if (pos[0] == 'left') { tx = -100; x = b.left - 20; if (pos[1] == 'top') { ty = 0; y = b.top; } else if (pos[1] == 'bottom') { ty = -100; y = b.bottom; } } else if (pos[0] == 'right') { tx = 0; x = b.right + 20; if (pos[1] == 'top') { ty = 0; y = b.top; } else if (pos[1] == 'bottom') { ty = -100; y = b.bottom; } } // console.log(`[${c.id}] pos:`, pos, '\n\tb:', b, `-> ${x}x${y}`, '\n\tc:', c); R.setStyle(tt, 'top', y + "px"); R.setStyle(tt, 'left', x + "px"); R.setStyle(tt, 'transform', "translate(" + tx + "%, " + ty + "%) scale(1)"); R.addClass(tt, "ngx-dm-tour-text-" + pos[0] + "-" + pos[1]); return tt; }; /** * @private * @param {?} sectionId * @return {?} */ DmTourService.prototype._showHelp = /** * @private * @param {?} sectionId * @return {?} */ function (sectionId) { var _this = this; /** @type {?} */ var sec = this._sections[sectionId]; /** @type {?} */ var R = this._r2; /** @type {?} */ var obd = this.document.querySelector('ngxDmTourRoot'); if (obd) { obd.remove(); } this._root = R.createElement('div'); R.setAttribute(this._root, 'id', 'ngxDmTourRoot'); if (this._cfg.customCssClass) { R.addClass(this._root, this._cfg.customCssClass); } /** @type {?} */ var root = R.createElement('div'); R.appendChild(this._root, root); R.setAttribute(root, 'id', 'ngxDmTourBackdrop'); R.addClass(root, 'ngx-dm-tour-dialog'); /** @type {?} */ var dc = R.createElement('div'); R.appendChild(this._root, dc); R.setAttribute(dc, 'id', 'ngxDmTourDialogContainer'); /** @type {?} */ var d = R.createElement('div'); R.appendChild(dc, d); R.setAttribute(d, 'id', 'ngxDmTourDialog'); R.addClass(d, "ngx-dm-tour-section-" + sec.id); /** @type {?} */ var btnClose = R.createElement('button'); R.appendChild(d, btnClose); R.setAttribute(btnClose, 'id', 'ngxDmTourDialogBtnClose'); R.addClass(btnClose, 'ngx-dm-tour-button'); /** @type {?} */ var btnControls = R.createElement('button'); R.appendChild(d, btnControls); R.setAttribute(btnControls, 'id', 'ngxDmTourDialogBtnControls'); R.addClass(btnControls, 'ngx-dm-tour-button'); R.listen(btnControls, 'click', (/** * @param {?} e * @return {?} */ function (e) { return _this.hideHelp(e, (/** * @return {?} */ function () { return _this.showControlsHelp(sectionId); })); })); /** @type {?} */ var dt = R.createElement('div'); R.appendChild(d, dt); R.setAttribute(dt, 'id', 'ngxDmTourDialogTitle'); R.appendChild(dt, R.createText("Section \"" + sec.title + "\"")); /** @type {?} */ var dd = R.createElement('div'); R.appendChild(d, dd); R.setAttribute(dd, 'id', 'ngxDmTourDialogDesc'); /** @type {?} */ var ddi = R.createElement('div'); R.appendChild(dd, ddi); R.setAttribute(ddi, 'id', 'ngxDmTourDialogDescInner'); ddi.innerHTML = sec.html; this.document.activeElement.blur(); this._hlVisible = { type: 'help', sectionId: sectionId }; R.appendChild(this.document.body, this._root); this._L('_showHelp, root:', this._root); setTimeout((/** * @return {?} */ function () { R.addClass(_this._root, 'ngx-dm-tour-show'); _this._onClickRemove = R.listen(_this.document, 'click', (/** * @param {?} e * @return {?} */ function (e) { return _this.hideControlsHelp(e); })); _this._onKeyupRemove = R.listen(_this.document, 'keyup', (/** * @param {?} e * @return {?} */ function (e) { return _this.hideControlsHelp(e); })); })); }; /** * @param {?=} e * @return {?} */ DmTourService.prototype.hideControlsHelp = /** * @param {?=} e * @return {?} */ function (e) { this.hideHelp(e); }; /** * @param {?=} e * @param {?=} cb * @return {?} */ DmTourService.prototype.hideHelp = /** * @param {?=} e * @param {?=} cb * @return {?} */ function (e, cb) { var _this = this; this._L('hideHelp'); if (e) { e.stopImmediatePropagation(); e.preventDefault(); } if (this._onClickRemove) { this._onClickRemove(); this._onClickRemove = null; } if (this._onKeyupRemove) { this._onKeyupRemove(); this._onKeyupRemove = null; } if (this._root && this._r2) { this._r2.removeClass(this._root, 'ngx-dm-tour-show'); setTimeout((/** * @return {?} */ function () { if (_this._root) { _this._root.remove(); } _this._hlVisible = null; if (cb) { cb(); } }), 500); } else { this._hlVisible = null; if (cb) { cb(); } } }; /** * @private * @param {?} el * @return {?} */ DmTourService.prototype._getBoundaries = /** * @private * @param {?} el * @return {?} */ function (el) { if (!el || !el.getBoundingClientRect) { return null; } return el.getBoundingClientRect(); }; /** * @private * @return {?} */ DmTourService.prototype._showLoading = /** * @private * @return {?} */ function () { /** @type {?} */ var R = this._r2; /** @type {?} */ var obd = this.document.querySelector('#ngxDmTourLoading'); if (obd) { obd.remove(); } /** @type {?} */ var root = R.createElement('div'); R.setAttribute(root, 'id', 'ngxDmTourLoading'); if (this._cfg.customCssClass) { R.addClass(root, this._cfg.customCssClass); } root.innerHTML = this._cfg.loaderHtml; this.document.activeElement.blur(); R.appendChild(this.document.body, root); setTimeout((/** * @return {?} */ function () { return R.setStyle(root, 'background-color', 'var(--ngx-dm-tour-loading-bg-color, rgba(0,0,0,.3))'); })); }; /** * @private * @return {?} */ DmTourService.prototype._hideLoading = /** * @private * @return {?} */ function () { /** @type {?} */ var R = this._r2; /** @type {?} */ var obd = this.document.querySelector('#ngxDmTourLoading'); if (obd) { obd.remove(); } }; /** * @private * @param {?} err * @return {?} */ DmTourService.prototype._handleLoadError = /** * @private * @param {?} err * @return {?} */ function (err) { this._W('[ngx-dm-tour] load error:', err); }; /** * @private * @return {?} */ DmTourService.prototype._addGlobalStyles = /** * @private * @return {?} */ function () { /** @type {?} */ var obd = this.document.head.querySelector('#ngxDmTourStyles'); if (!obd) { /** @type {?} */ var R = this._r2; /** @type {?} */ var root = R.createElement('style'); R.setAttribute(root, 'id', 'ngxDmTourStyles'); root.innerHTML = GLOBAL_STYLES; R.appendChild(this.document.head, root); } }; /** * @private * @param {...?} args * @return {?} */ DmTourService.prototype._L = /** * @private * @param {...?} args * @return {?} */ function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (this._cfg.debug > 0) { console.log.apply(console, __spread(['[ngx-dm-tour]'], args)); } }; /** * @private * @param {...?} args * @return {?} */ DmTourService.prototype._W = /** * @private * @param {...?} args * @return {?} */ function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (this._cfg.debug > 1) { console.warn.apply(console, __spread(['[ngx-dm-tour]'], args)); } }; DmTourService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ DmTourService.ctorParameters = function () { return [ { type: RendererFactory2 }, { type: HttpClient }, { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }, { type: DmTourConfig, decorators: [{ type: Inject, args: [DM_TOUR_CONF,] }, { type: Optional }] } ]; }; /** @nocollapse */ DmTourService.ɵprov = i0.ɵɵdefineInjectable({ factory: function DmTourService_Factory() { return new DmTourService(i0.ɵɵinject(i0.RendererFactory2), i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.DOCUMENT), i0.ɵɵinject(i3.DM_TOUR_CONF, 8)); }, token: DmTourService, providedIn: "root" }); return DmTourService; }()); export { DmTourService }; if (false) { /** * @type {?} * @private */ DmTourService.prototype._cfg; /** * @type {?} * @private */ DmTourService.prototype._sections; /** * @type {?} * @private */ DmTourService.prototype._controls; /** * @type {?} * @private */ DmTourService.prototype._r2; /** * @type {?} * @private */ DmTourService.prototype._root; /** * @type {?} * @private */ DmTourService.prototype._onClickRemove; /** * @type {?} * @private */ DmTourService.prototype._onKeyupRemove; /** * @type {?} * @private */ DmTourService.prototype._hlVisible; /** * @type {?} * @private */ DmTourService.prototype._rendererFactory; /** * @type {?} * @private */ DmTourService.prototype._http; /** * @type {?} * @private */ DmTourService.prototype.document; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG0tdG91ci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGRpbWFub2lkL25neC1kbS10b3VyLyIsInNvdXJjZXMiOlsibGliL2RtLXRvdXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFjLE1BQU0sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsWUFBWSxFQUFnQyxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sY0FBYyxNQUFNLDBCQUEwQixDQUFDOzs7OztBQUV0RDtJQWdCSSx1QkFDWSxnQkFBa0MsRUFDbEMsS0FBaUIsRUFDQyxRQUFRLEVBQ0EsR0FBaUI7UUFKdkQsaUJBb0JDO1FBbkJXLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNDLGFBQVEsR0FBUixRQUFRLENBQUE7UUFaOUIsY0FBUyxHQUE2RCxFQUFFLENBQUM7UUFPekUsZUFBVSxHQUFxRCxJQUFJLENBQUM7UUFReEUsSUFBSSxDQUFDLElBQUksR0FBSSxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFB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