UNPKG

theme-lib

Version:

This is a simple example Angular Library published to npm.

163 lines 15.1 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} */ const NbGlobalLogicalPosition = { TOP_START: 'top-start', TOP_END: 'top-end', BOTTOM_START: 'bottom-start', BOTTOM_END: 'bottom-end', }; export { NbGlobalLogicalPosition }; /** @enum {string} */ const NbGlobalPhysicalPosition = { TOP_RIGHT: 'top-right', TOP_LEFT: 'top-left', BOTTOM_RIGHT: 'bottom-right', BOTTOM_LEFT: 'bottom-left', }; export { NbGlobalPhysicalPosition }; export class NbPositionHelper { /** * @param {?} layoutDirection */ constructor(layoutDirection) { this.layoutDirection = layoutDirection; } /** * @param {?} position * @return {?} */ toLogicalPosition(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 {?} */ toPhysicalPosition(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 {?} */ isTopPosition(position) { /** @type {?} */ const logicalPosition = this.toLogicalPosition(position); return logicalPosition === NbGlobalLogicalPosition.TOP_END || logicalPosition === NbGlobalLogicalPosition.TOP_START; } /** * @param {?} position * @return {?} */ isRightPosition(position) { /** @type {?} */ const physicalPosition = this.toPhysicalPosition(position); return physicalPosition === NbGlobalPhysicalPosition.TOP_RIGHT || physicalPosition === NbGlobalPhysicalPosition.BOTTOM_RIGHT; } /** * @protected * @param {?} position * @return {?} */ toLogicalPositionWhenLtr(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 {?} */ toLogicalPositionWhenRtl(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 {?} */ toPhysicalPositionWhenLtr(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 {?} */ toPhysicalPositionWhenRtl(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 = () => [ { type: NbLayoutDirectionService } ]; if (false) { /** * @type {?} * @protected */ NbPositionHelper.prototype.layoutDirection; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24taGVscGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vdGhlbWUtbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvY2RrL292ZXJsYXkvcG9zaXRpb24taGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7SUFJN0UsV0FBWSxXQUFXO0lBQ3ZCLFNBQVUsU0FBUztJQUNuQixjQUFlLGNBQWM7SUFDN0IsWUFBYSxZQUFZOzs7OztJQUl6QixXQUFZLFdBQVc7SUFDdkIsVUFBVyxVQUFVO0lBQ3JCLGNBQWUsY0FBYztJQUM3QixhQUFjLGFBQWE7OztBQU03QixNQUFNLE9BQU8sZ0JBQWdCOzs7O0lBQzNCLFlBQXNCLGVBQXlDO1FBQXpDLG9CQUFlLEdBQWYsZUFBZSxDQUEwQjtJQUMvRCxDQUFDOzs7OztJQUVELGlCQUFpQixDQUFDLFFBQTBCO1FBQzFDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM3RCxPQUFPLG1CQUFBLFFBQVEsRUFBMkIsQ0FBQztTQUM1QztRQUVELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNoQyxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxtQkFBQSxRQUFRLEVBQTRCLENBQUMsQ0FBQztTQUM1RTthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsbUJBQUEsUUFBUSxFQUE0QixDQUFDLENBQUM7U0FDNUU7SUFDSCxDQUFDOzs7OztJQUVELGtCQUFrQixDQUFDLFFBQTBCO1FBQzNDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM5RCxP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QUM7OztZQTdGRixVQUFVOzs7O1lBbkJGLHdCQUF3Qjs7Ozs7OztJQXFCbkIsMkNBQW1EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTmJMYXlvdXREaXJlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZGlyZWN0aW9uLnNlcnZpY2UnO1xyXG5cclxuXHJcbmV4cG9ydCBlbnVtIE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uIHtcclxuICBUT1BfU1RBUlQgPSAndG9wLXN0YXJ0JyxcclxuICBUT1BfRU5EID0gJ3RvcC1lbmQnLFxyXG4gIEJPVFRPTV9TVEFSVCA9ICdib3R0b20tc3RhcnQnLFxyXG4gIEJPVFRPTV9FTkQgPSAnYm90dG9tLWVuZCcsXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIE5iR2xvYmFsUGh5c2ljYWxQb3NpdGlvbiB7XHJcbiAgVE9QX1JJR0hUID0gJ3RvcC1yaWdodCcsXHJcbiAgVE9QX0xFRlQgPSAndG9wLWxlZnQnLFxyXG4gIEJPVFRPTV9SSUdIVCA9ICdib3R0b20tcmlnaHQnLFxyXG4gIEJPVFRPTV9MRUZUID0gJ2JvdHRvbS1sZWZ0JyxcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgTmJHbG9iYWxQb3NpdGlvbiA9IE5iR2xvYmFsUGh5c2ljYWxQb3NpdGlvbiB8IE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTmJQb3NpdGlvbkhlbHBlciB7XHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGxheW91dERpcmVjdGlvbjogTmJMYXlvdXREaXJlY3Rpb25TZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICB0b0xvZ2ljYWxQb3NpdGlvbihwb3NpdGlvbjogTmJHbG9iYWxQb3NpdGlvbik6IE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uIHtcclxuICAgIGlmIChPYmplY3QudmFsdWVzKE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uKS5pbmNsdWRlcyhwb3NpdGlvbikpIHtcclxuICAgICAgcmV0dXJuIHBvc2l0aW9uIGFzIE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmxheW91dERpcmVjdGlvbi5pc0x0cigpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRvTG9naWNhbFBvc2l0aW9uV2hlbkx0cihwb3NpdGlvbiBhcyBOYkdsb2JhbFBoeXNpY2FsUG9zaXRpb24pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMudG9Mb2dpY2FsUG9zaXRpb25XaGVuUnRsKHBvc2l0aW9uIGFzIE5iR2xvYmFsUGh5c2ljYWxQb3NpdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b1BoeXNpY2FsUG9zaXRpb24ocG9zaXRpb246IE5iR2xvYmFsUG9zaXRpb24pOiBOYkdsb2JhbFBoeXNpY2FsUG9zaXRpb24ge1xyXG4gICAgaWYgKE9iamVjdC52YWx1ZXMoTmJHbG9iYWxQaHlzaWNhbFBvc2l0aW9uKS5pbmNsdWRlcyhwb3NpdGlvbikpIHtcclxuICAgICAgcmV0dXJuIHBvc2l0aW9uIGFzIE5iR2xvYmFsUGh5c2ljYWxQb3NpdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5sYXlvdXREaXJlY3Rpb24uaXNMdHIoKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy50b1BoeXNpY2FsUG9zaXRpb25XaGVuTHRyKHBvc2l0aW9uIGFzIE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRvUGh5c2ljYWxQb3NpdGlvbldoZW5SdGwocG9zaXRpb24gYXMgTmJHbG9iYWxMb2dpY2FsUG9zaXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNUb3BQb3NpdGlvbihwb3NpdGlvbjogTmJHbG9iYWxQb3NpdGlvbikge1xyXG4gICAgY29uc3QgbG9naWNhbFBvc2l0aW9uID0gdGhpcy50b0xvZ2ljYWxQb3NpdGlvbihwb3NpdGlvbik7XHJcblxyXG4gICAgcmV0dXJuIGxvZ2ljYWxQb3NpdGlvbiA9PT0gTmJHbG9iYWxMb2dpY2FsUG9zaXRpb24uVE9QX0VORFxyXG4gICAgICB8fCBsb2dpY2FsUG9zaXRpb24gPT09IE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uLlRPUF9TVEFSVDtcclxuICB9XHJcblxyXG4gIGlzUmlnaHRQb3NpdGlvbihwb3NpdGlvbjogTmJHbG9iYWxQb3NpdGlvbikge1xyXG4gICAgY29uc3QgcGh5c2ljYWxQb3NpdGlvbiA9IHRoaXMudG9QaHlzaWNhbFBvc2l0aW9uKHBvc2l0aW9uKTtcclxuXHJcbiAgICByZXR1cm4gcGh5c2ljYWxQb3NpdGlvbiA9PT0gTmJHbG9iYWxQaHlzaWNhbFBvc2l0aW9uLlRPUF9SSUdIVFxyXG4gICAgICB8fCBwaHlzaWNhbFBvc2l0aW9uID09PSBOYkdsb2JhbFBoeXNpY2FsUG9zaXRpb24uQk9UVE9NX1JJR0hUO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHRvTG9naWNhbFBvc2l0aW9uV2hlbkx0cihwb3NpdGlvbjogTmJHbG9iYWxQaHlzaWNhbFBvc2l0aW9uKTogTmJHbG9iYWxMb2dpY2FsUG9zaXRpb24ge1xyXG4gICAgc3dpdGNoIChwb3NpdGlvbikge1xyXG4gICAgICBjYXNlIE5iR2xvYmFsUGh5c2ljYWxQb3NpdGlvbi5UT1BfUklHSFQ6XHJcbiAgICAgICAgcmV0dXJuIE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uLlRPUF9FTkQ7XHJcbiAgICAgIGNhc2UgTmJHbG9iYWxQaHlzaWNhbFBvc2l0aW9uLlRPUF9MRUZUOlxyXG4gICAgICAgIHJldHVybiBOYkdsb2JhbExvZ2ljYWxQb3NpdGlvbi5UT1BfU1RBUlQ7XHJcbiAgICAgIGNhc2UgTmJHbG9iYWxQaHlzaWNhbFBvc2l0aW9uLkJPVFRPTV9SSUdIVDpcclxuICAgICAgICByZXR1cm4gTmJHbG9iYWxMb2dpY2FsUG9zaXRpb24uQk9UVE9NX0VORDtcclxuICAgICAgY2FzZSBOYkdsb2JhbFBoeXNpY2FsUG9zaXRpb24uQk9UVE9NX0xFRlQ6XHJcbiAgICAgICAgcmV0dXJuIE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uLkJPVFRPTV9TVEFSVDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB0b0xvZ2ljYWxQb3NpdGlvbldoZW5SdGwocG9zaXRpb246IE5iR2xvYmFsUGh5c2ljYWxQb3NpdGlvbik6IE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uIHtcclxuICAgIHN3aXRjaCAocG9zaXRpb24pIHtcclxuICAgICAgY2FzZSBOYkdsb2JhbFBoeXNpY2FsUG9zaXRpb24uVE9QX1JJR0hUOlxyXG4gICAgICAgIHJldHVybiBOYkdsb2JhbExvZ2ljYWxQb3NpdGlvbi5UT1BfU1RBUlQ7XHJcbiAgICAgIGNhc2UgTmJHbG9iYWxQaHlzaWNhbFBvc2l0aW9uLlRPUF9MRUZUOlxyXG4gICAgICAgIHJldHVybiBOYkdsb2JhbExvZ2ljYWxQb3NpdGlvbi5UT1BfRU5EO1xyXG4gICAgICBjYXNlIE5iR2xvYmFsUGh5c2ljYWxQb3NpdGlvbi5CT1RUT01fUklHSFQ6XHJcbiAgICAgICAgcmV0dXJuIE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uLkJPVFRPTV9TVEFSVDtcclxuICAgICAgY2FzZSBOYkdsb2JhbFBoeXNpY2FsUG9zaXRpb24uQk9UVE9NX0xFRlQ6XHJcbiAgICAgICAgcmV0dXJuIE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uLkJPVFRPTV9FTkQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdG9QaHlzaWNhbFBvc2l0aW9uV2hlbkx0cihwb3NpdGlvbjogTmJHbG9iYWxMb2dpY2FsUG9zaXRpb24pOiBOYkdsb2JhbFBoeXNpY2FsUG9zaXRpb24ge1xyXG4gICAgc3dpdGNoIChwb3NpdGlvbikge1xyXG4gICAgICBjYXNlIE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uLlRPUF9TVEFSVDpcclxuICAgICAgICByZXR1cm4gTmJHbG9iYWxQaHlzaWNhbFBvc2l0aW9uLlRPUF9MRUZUO1xyXG4gICAgICBjYXNlIE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uLlRPUF9FTkQ6XHJcbiAgICAgICAgcmV0dXJuIE5iR2xvYmFsUGh5c2ljYWxQb3NpdGlvbi5UT1BfUklHSFQ7XHJcbiAgICAgIGNhc2UgTmJHbG9iYWxMb2dpY2FsUG9zaXRpb24uQk9UVE9NX1NUQVJUOlxyXG4gICAgICAgIHJldHVybiBOYkdsb2JhbFBoeXNpY2FsUG9zaXRpb24uQk9UVE9NX0xFRlQ7XHJcbiAgICAgIGNhc2UgTmJHbG9iYWxMb2dpY2FsUG9zaXRpb24uQk9UVE9NX0VORDpcclxuICAgICAgICByZXR1cm4gTmJHbG9iYWxQaHlzaWNhbFBvc2l0aW9uLkJPVFRPTV9SSUdIVDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB0b1BoeXNpY2FsUG9zaXRpb25XaGVuUnRsKHBvc2l0aW9uOiBOYkdsb2JhbExvZ2ljYWxQb3NpdGlvbik6IE5iR2xvYmFsUGh5c2ljYWxQb3NpdGlvbiB7XHJcbiAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7XHJcbiAgICAgIGNhc2UgTmJHbG9iYWxMb2dpY2FsUG9zaXRpb24uVE9QX1NUQVJUOlxyXG4gICAgICAgIHJldHVybiBOYkdsb2JhbFBoeXNpY2FsUG9zaXRpb24uVE9QX1JJR0hUO1xyXG4gICAgICBjYXNlIE5iR2xvYmFsTG9naWNhbFBvc2l0aW9uLlRPUF9FTkQ6XHJcbiAgICAgICAgcmV0dXJuIE5iR2xvYmFsUGh5c2ljYWxQb3NpdGlvbi5UT1BfTEVGVDtcclxuICAgICAgY2FzZSBOYkdsb2JhbExvZ2ljYWxQb3NpdGlvbi5CT1RUT01fU1RBUlQ6XHJcbiAgICAgICAgcmV0dXJuIE5iR2xvYmFsUGh5c2ljYWxQb3NpdGlvbi5CT1RUT01fUklHSFQ7XHJcbiAgICAgIGNhc2UgTmJHbG9iYWxMb2dpY2FsUG9zaXRpb24uQk9UVE9NX0VORDpcclxuICAgICAgICByZXR1cm4gTmJHbG9iYWxQaHlzaWNhbFBvc2l0aW9uLkJPVFRPTV9MRUZUO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=