@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
JavaScript
/**
* @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=