UNPKG

theme-lib

Version:

This is a simple example Angular Library published to npm.

198 lines 16.2 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; import { NbLayoutDirectionService } from '../../../services/direction.service'; /** @enum {string} */ var NbGlobalLogicalPosition = { TOP_START: 'top-start', TOP_END: 'top-end', BOTTOM_START: 'bottom-start', BOTTOM_END: 'bottom-end', }; export { NbGlobalLogicalPosition }; /** @enum {string} */ var NbGlobalPhysicalPosition = { TOP_RIGHT: 'top-right', TOP_LEFT: 'top-left', BOTTOM_RIGHT: 'bottom-right', BOTTOM_LEFT: 'bottom-left', }; export { NbGlobalPhysicalPosition }; var NbPositionHelper = /** @class */ (function () { function NbPositionHelper(layoutDirection) { this.layoutDirection = layoutDirection; } /** * @param {?} position * @return {?} */ NbPositionHelper.prototype.toLogicalPosition = /** * @param {?} position * @return {?} */ function (position) { if (Object.values(NbGlobalLogicalPosition).includes(position)) { return (/** @type {?} */ (position)); } if (this.layoutDirection.isLtr()) { return this.toLogicalPositionWhenLtr((/** @type {?} */ (position))); } else { return this.toLogicalPositionWhenRtl((/** @type {?} */ (position))); } }; /** * @param {?} position * @return {?} */ NbPositionHelper.prototype.toPhysicalPosition = /** * @param {?} position * @return {?} */ function (position) { if (Object.values(NbGlobalPhysicalPosition).includes(position)) { return (/** @type {?} */ (position)); } if (this.layoutDirection.isLtr()) { return this.toPhysicalPositionWhenLtr((/** @type {?} */ (position))); } else { return this.toPhysicalPositionWhenRtl((/** @type {?} */ (position))); } }; /** * @param {?} position * @return {?} */ NbPositionHelper.prototype.isTopPosition = /** * @param {?} position * @return {?} */ function (position) { /** @type {?} */ var logicalPosition = this.toLogicalPosition(position); return logicalPosition === NbGlobalLogicalPosition.TOP_END || logicalPosition === NbGlobalLogicalPosition.TOP_START; }; /** * @param {?} position * @return {?} */ NbPositionHelper.prototype.isRightPosition = /** * @param {?} position * @return {?} */ function (position) { /** @type {?} */ var physicalPosition = this.toPhysicalPosition(position); return physicalPosition === NbGlobalPhysicalPosition.TOP_RIGHT || physicalPosition === NbGlobalPhysicalPosition.BOTTOM_RIGHT; }; /** * @protected * @param {?} position * @return {?} */ NbPositionHelper.prototype.toLogicalPositionWhenLtr = /** * @protected * @param {?} position * @return {?} */ function (position) { switch (position) { case NbGlobalPhysicalPosition.TOP_RIGHT: return NbGlobalLogicalPosition.TOP_END; case NbGlobalPhysicalPosition.TOP_LEFT: return NbGlobalLogicalPosition.TOP_START; case NbGlobalPhysicalPosition.BOTTOM_RIGHT: return NbGlobalLogicalPosition.BOTTOM_END; case NbGlobalPhysicalPosition.BOTTOM_LEFT: return NbGlobalLogicalPosition.BOTTOM_START; } }; /** * @protected * @param {?} position * @return {?} */ NbPositionHelper.prototype.toLogicalPositionWhenRtl = /** * @protected * @param {?} position * @return {?} */ function (position) { switch (position) { case NbGlobalPhysicalPosition.TOP_RIGHT: return NbGlobalLogicalPosition.TOP_START; case NbGlobalPhysicalPosition.TOP_LEFT: return NbGlobalLogicalPosition.TOP_END; case NbGlobalPhysicalPosition.BOTTOM_RIGHT: return NbGlobalLogicalPosition.BOTTOM_START; case NbGlobalPhysicalPosition.BOTTOM_LEFT: return NbGlobalLogicalPosition.BOTTOM_END; } }; /** * @protected * @param {?} position * @return {?} */ NbPositionHelper.prototype.toPhysicalPositionWhenLtr = /** * @protected * @param {?} position * @return {?} */ function (position) { switch (position) { case NbGlobalLogicalPosition.TOP_START: return NbGlobalPhysicalPosition.TOP_LEFT; case NbGlobalLogicalPosition.TOP_END: return NbGlobalPhysicalPosition.TOP_RIGHT; case NbGlobalLogicalPosition.BOTTOM_START: return NbGlobalPhysicalPosition.BOTTOM_LEFT; case NbGlobalLogicalPosition.BOTTOM_END: return NbGlobalPhysicalPosition.BOTTOM_RIGHT; } }; /** * @protected * @param {?} position * @return {?} */ NbPositionHelper.prototype.toPhysicalPositionWhenRtl = /** * @protected * @param {?} position * @return {?} */ function (position) { switch (position) { case NbGlobalLogicalPosition.TOP_START: return NbGlobalPhysicalPosition.TOP_RIGHT; case NbGlobalLogicalPosition.TOP_END: return NbGlobalPhysicalPosition.TOP_LEFT; case NbGlobalLogicalPosition.BOTTOM_START: return NbGlobalPhysicalPosition.BOTTOM_RIGHT; case NbGlobalLogicalPosition.BOTTOM_END: return NbGlobalPhysicalPosition.BOTTOM_LEFT; } }; NbPositionHelper.decorators = [ { type: Injectable } ]; /** @nocollapse */ NbPositionHelper.ctorParameters = function () { return [ { type: NbLayoutDirectionService } ]; }; return NbPositionHelper; }()); export { NbPositionHelper }; if (false) { /** * @type {?} * @protected */ NbPositionHelper.prototype.layoutDirection; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24taGVscGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vdGhlbWUtbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvY2RrL292ZXJsYXkvcG9zaXRpb24taGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7SUFJN0UsV0FBWSxXQUFXO0lBQ3ZCLFNBQVUsU0FBUztJQUNuQixjQUFlLGNBQWM7SUFDN0IsWUFBYSxZQUFZOzs7OztJQUl6QixXQUFZLFdBQVc7SUFDdkIsVUFBVyxVQUFVO0lBQ3JCLGNBQWUsY0FBYztJQUM3QixhQUFjLGFBQWE7OztBQUs3QjtJQUVFLDBCQUFzQixlQUF5QztRQUF6QyxvQkFBZSxHQUFmLGVBQWUsQ0FBMEI7SUFDL0QsQ0FBQzs7Ozs7SUFFRCw0Q0FBaUI7Ozs7SUFBakIsVUFBa0IsUUFBMEI7UUFDMUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzdELE9BQU8sbUJBQUEsUUFBUSxFQUEyQixDQUFDO1NBQzVDO1FBRUQsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLG1CQUFBLFFBQVEsRUFBNEIsQ0FBQyxDQUFDO1NBQzVFO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxtQkFBQSxRQUFRLEVBQTRCLENBQUMsQ0FBQztTQUM1RTtJQUNILENBQUM7Ozs7O0lBRUQsNkNBQWtCOzs7O0lBQWxCLFVBQW1CLFFBQTBCO1FBQzNDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM5RCxP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QkFBdUIsQ0FBQyxVQUFVO2dCQUNyQyxPQUFPLHdCQUF3QixDQUFDLFdBQVcsQ0FBQztTQUMvQztJQUNILENBQUM7O2dCQTdGRixVQUFVOzs7O2dCQW5CRix3QkFBd0I7O0lBaUhqQyx1QkFBQztDQUFBLEFBOUZELElBOEZDO1NBN0ZZLGdCQUFnQjs7Ozs7O0lBQ2YsMkNBQW1EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTmJMYXlvdXREaXJlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZGlyZWN0aW9uLnNlcnZpY2UnO1xyXG5cclxuXHJcbmV4cG9ydCBlbnVtIE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uIHtcclxuICBUT1BfU1RBUlQgPSAndG9wLXN0YXJ0JyxcclxuICBUT1BfRU5EID0gJ3RvcC1lbmQnLFxyXG4gIEJPVFRPTV9TVEFSVCA9ICdib3R0b20tc3RhcnQnLFxyXG4gIEJPVFRPTV9FTkQgPSAnYm90dG9tLWVuZCcsXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIE5iR2xvYmFsUGh5c2ljYWxQb3NpdGlvbiB7XHJcbiAgVE9QX1JJR0hUID0gJ3RvcC1yaWdodCcsXHJcbiAgVE9QX0xFRlQgPSAndG9wLWxlZnQnLFxyXG4gIEJPVFRPTV9SSUdIVCA9ICdib3R0b20tcmlnaHQnLFxyXG4gIEJPVFRPTV9MRUZUID0gJ2JvdHRvbS1sZWZ0JyxcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgTmJHbG9iYWxQb3NpdGlvbiA9IE5iR2xvYmFsUGh5c2ljYWxQb3NpdGlvbiB8IE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTmJQb3NpdGlvbkhlbHBlciB7XHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGxheW91dERpcmVjdGlvbjogTmJMYXlvdXREaXJlY3Rpb25TZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICB0b0xvZ2ljYWxQb3NpdGlvbihwb3NpdGlvbjogTmJHbG9iYWxQb3NpdGlvbik6IE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uIHtcclxuICAgIGlmIChPYmplY3QudmFsdWVzKE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uKS5pbmNsdWRlcyhwb3NpdGlvbikpIHtcclxuICAgICAgcmV0dXJuIHBvc2l0aW9uIGFzIE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmxheW91dERpcmVjdGlvbi5pc0x0cigpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRvTG9naWNhbFBvc2l0aW9uV2hlbkx0cihwb3NpdGlvbiBhcyBOYkdsb2JhbFBoeXNpY2FsUG9zaXRpb24pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMudG9Mb2dpY2FsUG9zaXRpb25XaGVuUnRsKHBvc2l0aW9uIGFzIE5iR2xvYmFsUGh5c2ljYWxQb3NpdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b1BoeXNpY2FsUG9zaXRpb24ocG9zaXRpb246IE5iR2xvYmFsUG9zaXRpb24pOiBOYkdsb2JhbFBoeXNpY2FsUG9zaXRpb24ge1xyXG4gICAgaWYgKE9iamVjdC52YWx1ZXMoTmJHbG9iYWxQaHlzaWNhbFBvc2l0aW9uKS5pbmNsdWRlcyhwb3NpdGlvbikpIHtcclxuICAgICAgcmV0dXJuIHBvc2l0aW9uIGFzIE5iR2xvYmFsUGh5c2ljYWxQb3NpdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5sYXlvdXREaXJlY3Rpb24uaXNMdHIoKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy50b1BoeXNpY2FsUG9zaXRpb25XaGVuTHRyKHBvc2l0aW9uIGFzIE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRvUGh5c2ljYWxQb3NpdGlvbldoZW5SdGwocG9zaXRpb24gYXMgTmJHbG9iYWxMb2dpY2FsUG9zaXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNUb3BQb3NpdGlvbihwb3NpdGlvbjogTmJHbG9iYWxQb3NpdGlvbikge1xyXG4gICAgY29uc3QgbG9naWNhbFBvc2l0aW9uID0gdGhpcy50b0xvZ2ljYWxQb3NpdGlvbihwb3NpdGlvbik7XHJcblxyXG4gICAgcmV0dXJuIGxvZ2ljYWxQb3NpdGlvbiA9PT0gTmJHbG9iYWxMb2dpY2FsUG9zaXRpb24uVE9QX0VORFxyXG4gICAgICB8fCBsb2dpY2FsUG9zaXRpb24gPT09IE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uLlRPUF9TVEFSVDtcclxuICB9XHJcblxyXG4gIGlzUmlnaHRQb3NpdGlvbihwb3NpdGlvbjogTmJHbG9iYWxQb3NpdGlvbikge1xyXG4gICAgY29uc3QgcGh5c2ljYWxQb3NpdGlvbiA9IHRoaXMudG9QaHlzaWNhbFBvc2l0aW9uKHBvc2l0aW9uKTtcclxuXHJcbiAgICByZXR1cm4gcGh5c2ljYWxQb3NpdGlvbiA9PT0gTmJHbG9iYWxQaHlzaWNhbFBvc2l0aW9uLlRPUF9SSUdIVFxyXG4gICAgICB8fCBwaHlzaWNhbFBvc2l0aW9uID09PSBOYkdsb2JhbFBoeXNpY2FsUG9zaXRpb24uQk9UVE9NX1JJR0hUO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHRvTG9naWNhbFBvc2l0aW9uV2hlbkx0cihwb3NpdGlvbjogTmJHbG9iYWxQaHlzaWNhbFBvc2l0aW9uKTogTmJHbG9iYWxMb2dpY2FsUG9zaXRpb24ge1xyXG4gICAgc3dpdGNoIChwb3NpdGlvbikge1xyXG4gICAgICBjYXNlIE5iR2xvYmFsUGh5c2ljYWxQb3NpdGlvbi5UT1BfUklHSFQ6XHJcbiAgICAgICAgcmV0dXJuIE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uLlRPUF9FTkQ7XHJcbiAgICAgIGNhc2UgTmJHbG9iYWxQaHlzaWNhbFBvc2l0aW9uLlRPUF9MRUZUOlxyXG4gICAgICAgIHJldHVybiBOYkdsb2JhbExvZ2ljYWxQb3NpdGlvbi5UT1BfU1RBUlQ7XHJcbiAgICAgIGNhc2UgTmJHbG9iYWxQaHlzaWNhbFBvc2l0aW9uLkJPVFRPTV9SSUdIVDpcclxuICAgICAgICByZXR1cm4gTmJHbG9iYWxMb2dpY2FsUG9zaXRpb24uQk9UVE9NX0VORDtcclxuICAgICAgY2FzZSBOYkdsb2JhbFBoeXNpY2FsUG9zaXRpb24uQk9UVE9NX0xFRlQ6XHJcbiAgICAgICAgcmV0dXJuIE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uLkJPVFRPTV9TVEFSVDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB0b0xvZ2ljYWxQb3NpdGlvbldoZW5SdGwocG9zaXRpb246IE5iR2xvYmFsUGh5c2ljYWxQb3NpdGlvbik6IE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uIHtcclxuICAgIHN3aXRjaCAocG9zaXRpb24pIHtcclxuICAgICAgY2FzZSBOYkdsb2JhbFBoeXNpY2FsUG9zaXRpb24uVE9QX1JJR0hUOlxyXG4gICAgICAgIHJldHVybiBOYkdsb2JhbExvZ2ljYWxQb3NpdGlvbi5UT1BfU1RBUlQ7XHJcbiAgICAgIGNhc2UgTmJHbG9iYWxQaHlzaWNhbFBvc2l0aW9uLlRPUF9MRUZUOlxyXG4gICAgICAgIHJldHVybiBOYkdsb2JhbExvZ2ljYWxQb3NpdGlvbi5UT1BfRU5EO1xyXG4gICAgICBjYXNlIE5iR2xvYmFsUGh5c2ljYWxQb3NpdGlvbi5CT1RUT01fUklHSFQ6XHJcbiAgICAgICAgcmV0dXJuIE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uLkJPVFRPTV9TVEFSVDtcclxuICAgICAgY2FzZSBOYkdsb2JhbFBoeXNpY2FsUG9zaXRpb24uQk9UVE9NX0xFRlQ6XHJcbiAgICAgICAgcmV0dXJuIE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uLkJPVFRPTV9FTkQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdG9QaHlzaWNhbFBvc2l0aW9uV2hlbkx0cihwb3NpdGlvbjogTmJHbG9iYWxMb2dpY2FsUG9zaXRpb24pOiBOYkdsb2JhbFBoeXNpY2FsUG9zaXRpb24ge1xyXG4gICAgc3dpdGNoIChwb3NpdGlvbikge1xyXG4gICAgICBjYXNlIE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uLlRPUF9TVEFSVDpcclxuICAgICAgICByZXR1cm4gTmJHbG9iYWxQaHlzaWNhbFBvc2l0aW9uLlRPUF9MRUZUO1xyXG4gICAgICBjYXNlIE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uLlRPUF9FTkQ6XHJcbiAgICAgICAgcmV0dXJuIE5iR2xvYmFsUGh5c2ljYWxQb3NpdGlvbi5UT1BfUklHSFQ7XHJcbiAgICAgIGNhc2UgTmJHbG9iYWxMb2dpY2FsUG9zaXRpb24uQk9UVE9NX1NUQVJUOlxyXG4gICAgICAgIHJldHVybiBOYkdsb2JhbFBoeXNpY2FsUG9zaXRpb24uQk9UVE9NX0xFRlQ7XHJcbiAgICAgIGNhc2UgTmJHbG9iYWxMb2dpY2FsUG9zaXRpb24uQk9UVE9NX0VORDpcclxuICAgICAgICByZXR1cm4gTmJHbG9iYWxQaHlzaWNhbFBvc2l0aW9uLkJPVFRPTV9SSUdIVDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB0b1BoeXNpY2FsUG9zaXRpb25XaGVuUnRsKHBvc2l0aW9uOiBOYkdsb2JhbExvZ2ljYWxQb3NpdGlvbik6IE5iR2xvYmFsUGh5c2ljYWxQb3NpdGlvbiB7XHJcbiAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7XHJcbiAgICAgIGNhc2UgTmJHbG9iYWxMb2dpY2FsUG9zaXRpb24uVE9QX1NUQVJUOlxyXG4gICAgICAgIHJldHVybiBOYkdsb2JhbFBoeXNpY2FsUG9zaXRpb24uVE9QX1JJR0hUO1xyXG4gICAgICBjYXNlIE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uLlRPUF9FTkQ6XHJcbiAgICAgICAgcmV0dXJuIE5iR2xvYmFsUGh5c2ljYWxQb3NpdGlvbi5UT1BfTEVGVDtcclxuICAgICAgY2FzZSBOYkdsb2JhbExvZ2ljYWxQb3NpdGlvbi5CT1RUT01fU1RBUlQ6XHJcbiAgICAgICAgcmV0dXJuIE5iR2xvYmFsUGh5c2ljYWxQb3NpdGlvbi5CT1RUT01fUklHSFQ7XHJcbiAgICAgIGNhc2UgTmJHbG9iYWxMb2dpY2FsUG9zaXRpb24uQk9UVE9NX0VORDpcclxuICAgICAgICByZXR1cm4gTmJHbG9iYWxQaHlzaWNhbFBvc2l0aW9uLkJPVFRPTV9MRUZUO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=