UNPKG

@lxlib/theme

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.1.

315 lines 19.8 kB
/** * @fileoverview added by tsickle * Generated from: src/services/title/title.service.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { __read, __spread } from "tslib"; import { DOCUMENT } from '@angular/common'; import { Inject, Injectable, Injector, Optional } from '@angular/core'; import { Title } from '@angular/platform-browser'; import { ActivatedRoute, Router } from '@angular/router'; import { filter } from 'rxjs/operators'; import { LXLIB_I18N_TOKEN } from '../i18n/i18n'; import { MenuService } from '../menu/menu.service'; import * as i0 from "@angular/core"; import * as i1 from "@angular/platform-browser"; import * as i2 from "../menu/menu.service"; import * as i3 from "../i18n/i18n"; import * as i4 from "@angular/common"; var TitleService = /** @class */ (function () { function TitleService(injector, title, menuSrv, i18nSrv, doc) { var _this = this; this.injector = injector; this.title = title; this.menuSrv = menuSrv; this.i18nSrv = i18nSrv; this.doc = doc; this._prefix = ''; this._suffix = ''; this._separator = ' - '; this._reverse = false; this.DELAY_TIME = 25; /** * 设置默认标题名 */ this.default = "Not Page Name"; this.i18n$ = this.i18nSrv.change.pipe(filter((/** * @return {?} */ function () { return !!_this.i18n$; }))).subscribe((/** * @return {?} */ function () { return _this.setTitle(); })); } Object.defineProperty(TitleService.prototype, "separator", { /** 设置分隔符 */ set: /** * 设置分隔符 * @param {?} value * @return {?} */ function (value) { this._separator = value; }, enumerable: true, configurable: true }); Object.defineProperty(TitleService.prototype, "prefix", { /** 设置前缀 */ set: /** * 设置前缀 * @param {?} value * @return {?} */ function (value) { this._prefix = value; }, enumerable: true, configurable: true }); Object.defineProperty(TitleService.prototype, "suffix", { /** 设置后缀 */ set: /** * 设置后缀 * @param {?} value * @return {?} */ function (value) { this._suffix = value; }, enumerable: true, configurable: true }); Object.defineProperty(TitleService.prototype, "reverse", { /** 设置是否反转 */ set: /** * 设置是否反转 * @param {?} value * @return {?} */ function (value) { this._reverse = value; }, enumerable: true, configurable: true }); /** * @private * @return {?} */ TitleService.prototype.getByElement = /** * @private * @return {?} */ function () { /** @type {?} */ var el = (/** @type {?} */ ((this.doc.querySelector('.lxlib-default__content-title h1') || this.doc.querySelector('.page-header__title')))); if (el) { /** @type {?} */ var text_1 = ''; el.childNodes.forEach((/** * @param {?} val * @return {?} */ function (val) { if (!text_1 && val.nodeType === 3) { text_1 = (/** @type {?} */ (val.textContent)).trim(); } })); return text_1 || (/** @type {?} */ ((/** @type {?} */ (el.firstChild)).textContent)).trim(); } return ''; }; /** * @private * @return {?} */ TitleService.prototype.getByRoute = /** * @private * @return {?} */ function () { /** @type {?} */ var next = this.injector.get(ActivatedRoute); while (next.firstChild) next = next.firstChild; /** @type {?} */ var data = (next.snapshot && next.snapshot.data) || {}; if (data.titleI18n && this.i18nSrv) data.title = this.i18nSrv.fanyi(data.titleI18n); return data.title; }; /** * @private * @return {?} */ TitleService.prototype.getByMenu = /** * @private * @return {?} */ function () { /** @type {?} */ var menus = this.menuSrv.getPathByUrl(this.injector.get(Router).url); if (!menus || menus.length <= 0) return ''; /** @type {?} */ var item = menus[menus.length - 1]; /** @type {?} */ var title; if (item.i18n && this.i18nSrv) title = this.i18nSrv.fanyi(item.i18n); return title || (/** @type {?} */ (item.text)); }; /** * @private * @param {?=} title * @return {?} */ TitleService.prototype._setTitle = /** * @private * @param {?=} title * @return {?} */ function (title) { if (!title) { title = this.getByRoute() || this.getByMenu() || this.getByElement() || this.default; } if (title && !Array.isArray(title)) { title = [title]; } /** @type {?} */ var newTitles = []; if (this._prefix) { newTitles.push(this._prefix); } newTitles.push.apply(newTitles, __spread(((/** @type {?} */ (title))))); if (this._suffix) { newTitles.push(this._suffix); } if (this._reverse) { newTitles = newTitles.reverse(); } this.title.setTitle(newTitles.join(this._separator)); }; /** * Set the document title, will be delay `25ms`, pls refer to [#1261](https://github.com/ng-alain/ng-alain/issues/1261) */ /** * Set the document title, will be delay `25ms`, pls refer to [#1261](https://github.com/ng-alain/ng-alain/issues/1261) * @param {?=} title * @return {?} */ TitleService.prototype.setTitle = /** * Set the document title, will be delay `25ms`, pls refer to [#1261](https://github.com/ng-alain/ng-alain/issues/1261) * @param {?=} title * @return {?} */ function (title) { var _this = this; setTimeout((/** * @return {?} */ function () { return _this._setTitle(title); }), this.DELAY_TIME); }; /** * Set i18n key of the document title */ /** * Set i18n key of the document title * @param {?} key * @param {?=} params * @return {?} */ TitleService.prototype.setTitleByI18n = /** * Set i18n key of the document title * @param {?} key * @param {?=} params * @return {?} */ function (key, params) { this.setTitle(this.i18nSrv.fanyi(key, params)); }; /** * @return {?} */ TitleService.prototype.ngOnDestroy = /** * @return {?} */ function () { this.i18n$.unsubscribe(); }; TitleService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ TitleService.ctorParameters = function () { return [ { type: Injector }, { type: Title }, { type: MenuService }, { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [LXLIB_I18N_TOKEN,] }] }, { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] } ]; }; /** @nocollapse */ TitleService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TitleService_Factory() { return new TitleService(i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i1.Title), i0.ɵɵinject(i2.MenuService), i0.ɵɵinject(i3.LXLIB_I18N_TOKEN, 8), i0.ɵɵinject(i4.DOCUMENT)); }, token: TitleService, providedIn: "root" }); return TitleService; }()); export { TitleService }; if (false) { /** * @type {?} * @private */ TitleService.prototype._prefix; /** * @type {?} * @private */ TitleService.prototype._suffix; /** * @type {?} * @private */ TitleService.prototype._separator; /** * @type {?} * @private */ TitleService.prototype._reverse; /** * @type {?} * @private */ TitleService.prototype.i18n$; /** @type {?} */ TitleService.prototype.DELAY_TIME; /** * 设置默认标题名 * @type {?} */ TitleService.prototype.default; /** * @type {?} * @private */ TitleService.prototype.injector; /** * @type {?} * @private */ TitleService.prototype.title; /** * @type {?} * @private */ TitleService.prototype.menuSrv; /** * @type {?} * @private */ TitleService.prototype.i18nSrv; /** * @type {?} * @private */ TitleService.prototype.doc; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGl0bGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BseGxpYi90aGVtZS8iLCJzb3VyY2VzIjpbInNyYy9zZXJ2aWNlcy90aXRsZS90aXRsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQWEsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQW9CLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7O0FBRW5EO0lBVUUsc0JBQ1UsUUFBa0IsRUFDbEIsS0FBWSxFQUNaLE9BQW9CLEVBR3BCLE9BQXlCLEVBQ1AsR0FBUTtRQVBwQyxpQkFVQztRQVRTLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNaLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFHcEIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFDUCxRQUFHLEdBQUgsR0FBRyxDQUFLO1FBZjVCLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFDckIsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixlQUFVLEdBQVcsS0FBSyxDQUFDO1FBQzNCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFHekIsZUFBVSxHQUFHLEVBQUUsQ0FBQzs7OztRQW1DekIsWUFBTyxHQUFHLGVBQWUsQ0FBQztRQXhCeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMs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O1FBREMsVUFBVTs7O1FBQUMsY0FBTSxPQUFBLEtBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQXJCLENBQXFCLEdBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7T0FFRzs7Ozs7OztJQUNILHFDQUFjOzs7Ozs7SUFBZCxVQUFlLEdBQVcsRUFBRSxNQUFXO1FBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQzs7OztJQUVELGtDQUFXOzs7SUFBWDtRQUNFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7Z0JBbkhGLFVBQVUsU0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7Ozs7Z0JBVEwsUUFBUTtnQkFDNUIsS0FBSztnQkFNTCxXQUFXO2dEQWdCZixRQUFRLFlBQ1IsTUFBTSxTQUFDLGdCQUFnQjtnREFFdkIsTUFBTSxTQUFDLFFBQVE7Ozt1QkEzQnBCO0NBOEhDLEFBcEhELElBb0hDO1NBbkhZLFlBQVk7Ozs7OztJQUN2QiwrQkFBNkI7Ozs7O0lBQzdCLCtCQUE2Qjs7Ozs7SUFDN0Isa0NBQW1DOzs7OztJQUNuQyxnQ0FBa0M7Ozs7O0lBQ2xDLDZCQUE0Qjs7SUFFNUIsa0NBQXlCOzs7OztJQW1DekIsK0JBQTBCOzs7OztJQWhDeEIsZ0NBQTBCOzs7OztJQUMxQiw2QkFBb0I7Ozs7O0lBQ3BCLCtCQUE0Qjs7Ozs7SUFDNUIsK0JBRWlDOzs7OztJQUNqQywyQkFBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTHhsaWJJMThOU2VydmljZSwgTFhMSUJfSTE4Tl9UT0tFTiB9IGZyb20gJy4uL2kxOG4vaTE4bic7XG5pbXBvcnQgeyBNZW51U2VydmljZSB9IGZyb20gJy4uL21lbnUvbWVudS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBUaXRsZVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9wcmVmaXg6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9zdWZmaXg6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9zZXBhcmF0b3I6IHN0cmluZyA9ICcgLSAnO1xuICBwcml2YXRlIF9yZXZlcnNlOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgaTE4biQ6IFN1YnNjcmlwdGlvbjtcblxuICByZWFkb25seSBERUxBWV9USU1FID0gMjU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSB0aXRsZTogVGl0bGUsXG4gICAgcHJpdmF0ZSBtZW51U3J2OiBNZW51U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoTFhMSUJfSTE4Tl9UT0tFTilcbiAgICBwcml2YXRlIGkxOG5TcnY6IEx4bGliSTE4TlNlcnZpY2UsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2M6IGFueSxcbiAgKSB7XG4gICAgdGhpcy5pMThuJCA9IHRoaXMuaTE4blNydi5jaGFuZ2UucGlwZShmaWx0ZXIoKCkgPT4gISF0aGlzLmkxOG4kKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2V0VGl0bGUoKSk7XG4gIH1cblxuICAvKiog6K6+572u5YiG6ZqU56ymICovXG4gIHNldCBzZXBhcmF0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3NlcGFyYXRvciA9IHZhbHVlO1xuICB9XG5cbiAgLyoqIOiuvue9ruWJjee8gCAqL1xuICBzZXQgcHJlZml4KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wcmVmaXggPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKiDorr7nva7lkI7nvIAgKi9cbiAgc2V0IHN1ZmZpeCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fc3VmZml4ID0gdmFsdWU7XG4gIH1cblxuICAvKiog6K6+572u5piv5ZCm5Y+N6L2sICovXG4gIHNldCByZXZlcnNlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmV2ZXJzZSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqIOiuvue9rum7mOiupOagh+mimOWQjSAqL1xuICBkZWZhdWx0ID0gYE5vdCBQYWdlIE5hbWVgO1xuXG4gIHByaXZhdGUgZ2V0QnlFbGVtZW50KCk6IHN0cmluZyB7XG4gICAgY29uc3QgZWwgPSAodGhpcy5kb2MucXVlcnlTZWxlY3RvcignLmx4bGliLWRlZmF1bHRfX2NvbnRlbnQtdGl0bGUgaDEnKSB8fCB0aGlzLmRvYy5xdWVyeVNlbGVjdG9yKCcucGFnZS1oZWFkZXJfX3RpdGxlJykpIGFzIEhUTUxFbGVtZW50O1xuICAgIGlmIChlbCkge1xuICAgICAgbGV0IHRleHQgPSAnJztcbiAgICAgIGVsLmNoaWxkTm9kZXMuZm9yRWFjaCh2YWwgPT4ge1xuICAgICAgICBpZiAoIXRleHQgJiYgdmFsLm5vZGVUeXBlID09PSAzKSB7XG4gICAgICAgICAgdGV4dCA9IHZhbC50ZXh0Q29udGVudCEudHJpbSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0ZXh0IHx8IGVsLmZpcnN0Q2hpbGQhLnRleHRDb250ZW50IS50cmltKCk7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QnlSb3V0ZSgpOiBzdHJpbmcge1xuICAgIGxldCBuZXh0ID0gdGhpcy5pbmplY3Rvci5nZXQoQWN0aXZhdGVkUm91dGUpO1xuICAgIHdoaWxlIChuZXh0LmZpcnN0Q2hpbGQpIG5leHQgPSBuZXh0LmZpcnN0Q2hpbGQ7XG4gICAgY29uc3QgZGF0YSA9IChuZXh0LnNuYXBzaG90ICYmIG5leHQuc25hcHNob3QuZGF0YSkgfHwge307XG4gICAgaWYgKGRhdGEudGl0bGVJMThuICYmIHRoaXMuaTE4blNydikgZGF0YS50aXRsZSA9IHRoaXMuaTE4blNydi5mYW55aShkYXRhLnRpdGxlSTE4bik7XG4gICAgcmV0dXJuIGRhdGEudGl0bGU7XG4gIH1cblxuICBwcml2YXRlIGdldEJ5TWVudSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1lbnVzID0gdGhpcy5tZW51U3J2LmdldFBhdGhCeVVybCh0aGlzLmluamVjdG9yLmdldDxSb3V0ZXI+KFJvdXRlcikudXJsKTtcbiAgICBpZiAoIW1lbnVzIHx8IG1lbnVzLmxlbmd0aCA8PSAwKSByZXR1cm4gJyc7XG5cbiAgICBjb25zdCBpdGVtID0gbWVudXNbbWVudXMubGVuZ3RoIC0gMV07XG4gICAgbGV0IHRpdGxlO1xuICAgIGlmIChpdGVtLmkxOG4gJiYgdGhpcy5pMThuU3J2KSB0aXRsZSA9IHRoaXMuaTE4blNydi5mYW55aShpdGVtLmkxOG4pO1xuICAgIHJldHVybiB0aXRsZSB8fCBpdGVtLnRleHQhO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0VGl0bGUodGl0bGU/OiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgIGlmICghdGl0bGUpIHtcbiAgICAgIHRpdGxlID0gdGhpcy5nZXRCeVJvdXRlKCkgfHwgdGhpcy5nZXRCeU1lbnUoKSB8fCB0aGlzLmdldEJ5RWxlbWVudCgpIHx8IHRoaXMuZGVmYXVsdDtcbiAgICB9XG4gICAgaWYgKHRpdGxlICYmICFBcnJheS5pc0FycmF5KHRpdGxlKSkge1xuICAgICAgdGl0bGUgPSBbdGl0bGVdO1xuICAgIH1cblxuICAgIGxldCBuZXdUaXRsZXM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHRoaXMuX3ByZWZpeCkge1xuICAgICAgbmV3VGl0bGVzLnB1c2godGhpcy5fcHJlZml4KTtcbiAgICB9XG4gICAgbmV3VGl0bGVzLnB1c2goLi4uKHRpdGxlIGFzIHN0cmluZ1tdKSk7XG4gICAgaWYgKHRoaXMuX3N1ZmZpeCkge1xuICAgICAgbmV3VGl0bGVzLnB1c2godGhpcy5fc3VmZml4KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3JldmVyc2UpIHtcbiAgICAgIG5ld1RpdGxlcyA9IG5ld1RpdGxlcy5yZXZlcnNlKCk7XG4gICAgfVxuICAgIHRoaXMudGl0bGUuc2V0VGl0bGUobmV3VGl0bGVzLmpvaW4odGhpcy5fc2VwYXJhdG9yKSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBkb2N1bWVudCB0aXRsZSwgd2lsbCBiZSBkZWxheSBgMjVtc2AsIHBscyByZWZlciB0byBbIzEyNjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1hbGFpbi9uZy1hbGFpbi9pc3N1ZXMvMTI2MSlcbiAgICovXG4gIHNldFRpdGxlKHRpdGxlPzogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX3NldFRpdGxlKHRpdGxlKSwgdGhpcy5ERUxBWV9USU1FKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgaTE4biBrZXkgb2YgdGhlIGRvY3VtZW50IHRpdGxlXG4gICAqL1xuICBzZXRUaXRsZUJ5STE4bihrZXk6IHN0cmluZywgcGFyYW1zPzoge30pIHtcbiAgICB0aGlzLnNldFRpdGxlKHRoaXMuaTE4blNydi5mYW55aShrZXksIHBhcmFtcykpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5pMThuJC51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=