UNPKG

@lxlib/theme

Version:

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

260 lines 17.5 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 { 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"; export class TitleService { /** * @param {?} injector * @param {?} title * @param {?} menuSrv * @param {?} i18nSrv * @param {?} doc */ constructor(injector, title, menuSrv, i18nSrv, doc) { 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 {?} */ () => !!this.i18n$))).subscribe((/** * @return {?} */ () => this.setTitle())); } /** * 设置分隔符 * @param {?} value * @return {?} */ set separator(value) { this._separator = value; } /** * 设置前缀 * @param {?} value * @return {?} */ set prefix(value) { this._prefix = value; } /** * 设置后缀 * @param {?} value * @return {?} */ set suffix(value) { this._suffix = value; } /** * 设置是否反转 * @param {?} value * @return {?} */ set reverse(value) { this._reverse = value; } /** * @private * @return {?} */ getByElement() { /** @type {?} */ const el = (/** @type {?} */ ((this.doc.querySelector('.lxlib-default__content-title h1') || this.doc.querySelector('.page-header__title')))); if (el) { /** @type {?} */ let text = ''; el.childNodes.forEach((/** * @param {?} val * @return {?} */ val => { if (!text && val.nodeType === 3) { text = (/** @type {?} */ (val.textContent)).trim(); } })); return text || (/** @type {?} */ ((/** @type {?} */ (el.firstChild)).textContent)).trim(); } return ''; } /** * @private * @return {?} */ getByRoute() { /** @type {?} */ let next = this.injector.get(ActivatedRoute); while (next.firstChild) next = next.firstChild; /** @type {?} */ const data = (next.snapshot && next.snapshot.data) || {}; if (data.titleI18n && this.i18nSrv) data.title = this.i18nSrv.fanyi(data.titleI18n); return data.title; } /** * @private * @return {?} */ getByMenu() { /** @type {?} */ const menus = this.menuSrv.getPathByUrl(this.injector.get(Router).url); if (!menus || menus.length <= 0) return ''; /** @type {?} */ const item = menus[menus.length - 1]; /** @type {?} */ let title; if (item.i18n && this.i18nSrv) title = this.i18nSrv.fanyi(item.i18n); return title || (/** @type {?} */ (item.text)); } /** * @private * @param {?=} title * @return {?} */ _setTitle(title) { if (!title) { title = this.getByRoute() || this.getByMenu() || this.getByElement() || this.default; } if (title && !Array.isArray(title)) { title = [title]; } /** @type {?} */ let newTitles = []; if (this._prefix) { newTitles.push(this._prefix); } newTitles.push(...((/** @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) * @param {?=} title * @return {?} */ setTitle(title) { setTimeout((/** * @return {?} */ () => this._setTitle(title)), this.DELAY_TIME); } /** * Set i18n key of the document title * @param {?} key * @param {?=} params * @return {?} */ setTitleByI18n(key, params) { this.setTitle(this.i18nSrv.fanyi(key, params)); } /** * @return {?} */ ngOnDestroy() { this.i18n$.unsubscribe(); } } TitleService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ TitleService.ctorParameters = () => [ { 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" }); 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGl0bGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BseGxpYi90aGVtZS8iLCJzb3VyY2VzIjpbInNyYy9zZXJ2aWNlcy90aXRsZS90aXRsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBYSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFBb0IsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7QUFHbkQsTUFBTSxPQUFPLFlBQVk7Ozs7Ozs7O0lBU3ZCLFlBQ1UsUUFBa0IsRUFDbEIsS0FBWSxFQUNaLE9BQW9CLEVBR3BCLE9BQXlCLEVBQ1AsR0FBUTtRQU4xQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFVBQUssR0FBTCxLQUFLLENBQU87UUFDWixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBR3BCLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBQ1AsUUFBRyxHQUFILEdBQUcsQ0FBSztRQWY1QixZQUFPLEdBQVcsRUFBRSxDQUFDO1FBQ3JCLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFDckIsZUFBVSxHQUFXLEtBQUssQ0FBQztRQUMzQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBR3pCLGVBQVUsR0FBRyxFQUFFLENBQUM7Ozs7UUFtQ3pCLFlBQU8sR0FBRyxlQUFlLENBQUM7UUF4QnhCLElBQUksQ0FBQyxLQUFLLEdBQUcs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LElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7Ozs7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzQixDQUFDOzs7WUFuSEYsVUFBVSxTQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7OztZQVRMLFFBQVE7WUFDNUIsS0FBSztZQU1MLFdBQVc7NENBZ0JmLFFBQVEsWUFDUixNQUFNLFNBQUMsZ0JBQWdCOzRDQUV2QixNQUFNLFNBQUMsUUFBUTs7Ozs7Ozs7SUFmbEIsK0JBQTZCOzs7OztJQUM3QiwrQkFBNkI7Ozs7O0lBQzdCLGtDQUFtQzs7Ozs7SUFDbkMsZ0NBQWtDOzs7OztJQUNsQyw2QkFBNEI7O0lBRTVCLGtDQUF5Qjs7Ozs7SUFtQ3pCLCtCQUEwQjs7Ozs7SUFoQ3hCLGdDQUEwQjs7Ozs7SUFDMUIsNkJBQW9COzs7OztJQUNwQiwrQkFBNEI7Ozs7O0lBQzVCLCtCQUVpQzs7Ozs7SUFDakMsMkJBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgT25EZXN0cm95LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEx4bGliSTE4TlNlcnZpY2UsIExYTElCX0kxOE5fVE9LRU4gfSBmcm9tICcuLi9pMThuL2kxOG4nO1xuaW1wb3J0IHsgTWVudVNlcnZpY2UgfSBmcm9tICcuLi9tZW51L21lbnUuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVGl0bGVTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfcHJlZml4OiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfc3VmZml4OiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfc2VwYXJhdG9yOiBzdHJpbmcgPSAnIC0gJztcbiAgcHJpdmF0ZSBfcmV2ZXJzZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIGkxOG4kOiBTdWJzY3JpcHRpb247XG5cbiAgcmVhZG9ubHkgREVMQVlfVElNRSA9IDI1O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgdGl0bGU6IFRpdGxlLFxuICAgIHByaXZhdGUgbWVudVNydjogTWVudVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KExYTElCX0kxOE5fVE9LRU4pXG4gICAgcHJpdmF0ZSBpMThuU3J2OiBMeGxpYkkxOE5TZXJ2aWNlLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jOiBhbnksXG4gICkge1xuICAgIHRoaXMuaTE4biQgPSB0aGlzLmkxOG5TcnYuY2hhbmdlLnBpcGUoZmlsdGVyKCgpID0+ICEhdGhpcy5pMThuJCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNldFRpdGxlKCkpO1xuICB9XG5cbiAgLyoqIOiuvue9ruWIhumalOespiAqL1xuICBzZXQgc2VwYXJhdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXBhcmF0b3IgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKiDorr7nva7liY3nvIAgKi9cbiAgc2V0IHByZWZpeCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcHJlZml4ID0gdmFsdWU7XG4gIH1cblxuICAvKiog6K6+572u5ZCO57yAICovXG4gIHNldCBzdWZmaXgodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3N1ZmZpeCA9IHZhbHVlO1xuICB9XG5cbiAgLyoqIOiuvue9ruaYr+WQpuWPjei9rCAqL1xuICBzZXQgcmV2ZXJzZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JldmVyc2UgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKiDorr7nva7pu5jorqTmoIfpopjlkI0gKi9cbiAgZGVmYXVsdCA9IGBOb3QgUGFnZSBOYW1lYDtcblxuICBwcml2YXRlIGdldEJ5RWxlbWVudCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVsID0gKHRoaXMuZG9jLnF1ZXJ5U2VsZWN0b3IoJy5seGxpYi1kZWZhdWx0X19jb250ZW50LXRpdGxlIGgxJykgfHwgdGhpcy5kb2MucXVlcnlTZWxlY3RvcignLnBhZ2UtaGVhZGVyX190aXRsZScpKSBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAoZWwpIHtcbiAgICAgIGxldCB0ZXh0ID0gJyc7XG4gICAgICBlbC5jaGlsZE5vZGVzLmZvckVhY2godmFsID0+IHtcbiAgICAgICAgaWYgKCF0ZXh0ICYmIHZhbC5ub2RlVHlwZSA9PT0gMykge1xuICAgICAgICAgIHRleHQgPSB2YWwudGV4dENvbnRlbnQhLnRyaW0oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gdGV4dCB8fCBlbC5maXJzdENoaWxkIS50ZXh0Q29udGVudCEudHJpbSgpO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwcml2YXRlIGdldEJ5Um91dGUoKTogc3RyaW5nIHtcbiAgICBsZXQgbmV4dCA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFjdGl2YXRlZFJvdXRlKTtcbiAgICB3aGlsZSAobmV4dC5maXJzdENoaWxkKSBuZXh0ID0gbmV4dC5maXJzdENoaWxkO1xuICAgIGNvbnN0IGRhdGEgPSAobmV4dC5zbmFwc2hvdCAmJiBuZXh0LnNuYXBzaG90LmRhdGEpIHx8IHt9O1xuICAgIGlmIChkYXRhLnRpdGxlSTE4biAmJiB0aGlzLmkxOG5TcnYpIGRhdGEudGl0bGUgPSB0aGlzLmkxOG5TcnYuZmFueWkoZGF0YS50aXRsZUkxOG4pO1xuICAgIHJldHVybiBkYXRhLnRpdGxlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCeU1lbnUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBtZW51cyA9IHRoaXMubWVudVNydi5nZXRQYXRoQnlVcmwodGhpcy5pbmplY3Rvci5nZXQ8Um91dGVyPihSb3V0ZXIpLnVybCk7XG4gICAgaWYgKCFtZW51cyB8fCBtZW51cy5sZW5ndGggPD0gMCkgcmV0dXJuICcnO1xuXG4gICAgY29uc3QgaXRlbSA9IG1lbnVzW21lbnVzLmxlbmd0aCAtIDFdO1xuICAgIGxldCB0aXRsZTtcbiAgICBpZiAoaXRlbS5pMThuICYmIHRoaXMuaTE4blNydikgdGl0bGUgPSB0aGlzLmkxOG5TcnYuZmFueWkoaXRlbS5pMThuKTtcbiAgICByZXR1cm4gdGl0bGUgfHwgaXRlbS50ZXh0ITtcbiAgfVxuXG4gIHByaXZhdGUgX3NldFRpdGxlKHRpdGxlPzogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICBpZiAoIXRpdGxlKSB7XG4gICAgICB0aXRsZSA9IHRoaXMuZ2V0QnlSb3V0ZSgpIHx8IHRoaXMuZ2V0QnlNZW51KCkgfHwgdGhpcy5nZXRCeUVsZW1lbnQoKSB8fCB0aGlzLmRlZmF1bHQ7XG4gICAgfVxuICAgIGlmICh0aXRsZSAmJiAhQXJyYXkuaXNBcnJheSh0aXRsZSkpIHtcbiAgICAgIHRpdGxlID0gW3RpdGxlXTtcbiAgICB9XG5cbiAgICBsZXQgbmV3VGl0bGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmICh0aGlzLl9wcmVmaXgpIHtcbiAgICAgIG5ld1RpdGxlcy5wdXNoKHRoaXMuX3ByZWZpeCk7XG4gICAgfVxuICAgIG5ld1RpdGxlcy5wdXNoKC4uLih0aXRsZSBhcyBzdHJpbmdbXSkpO1xuICAgIGlmICh0aGlzLl9zdWZmaXgpIHtcbiAgICAgIG5ld1RpdGxlcy5wdXNoKHRoaXMuX3N1ZmZpeCk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9yZXZlcnNlKSB7XG4gICAgICBuZXdUaXRsZXMgPSBuZXdUaXRsZXMucmV2ZXJzZSgpO1xuICAgIH1cbiAgICB0aGlzLnRpdGxlLnNldFRpdGxlKG5ld1RpdGxlcy5qb2luKHRoaXMuX3NlcGFyYXRvcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZG9jdW1lbnQgdGl0bGUsIHdpbGwgYmUgZGVsYXkgYDI1bXNgLCBwbHMgcmVmZXIgdG8gWyMxMjYxXShodHRwczovL2dpdGh1Yi5jb20vbmctYWxhaW4vbmctYWxhaW4vaXNzdWVzLzEyNjEpXG4gICAqL1xuICBzZXRUaXRsZSh0aXRsZT86IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLl9zZXRUaXRsZSh0aXRsZSksIHRoaXMuREVMQVlfVElNRSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGkxOG4ga2V5IG9mIHRoZSBkb2N1bWVudCB0aXRsZVxuICAgKi9cbiAgc2V0VGl0bGVCeUkxOG4oa2V5OiBzdHJpbmcsIHBhcmFtcz86IHt9KSB7XG4gICAgdGhpcy5zZXRUaXRsZSh0aGlzLmkxOG5TcnYuZmFueWkoa2V5LCBwYXJhbXMpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaTE4biQudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19