| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- /**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
- import { DOCUMENT } from '@angular/common';
- import { inject, InjectionToken, EventEmitter, Inject, Injectable, Optional, Directive, Output, Input, NgModule, ɵɵdefineInjectable, ɵɵinject } from '@angular/core';
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- /**
- * Injection token used to inject the document into Directionality.
- * This is used so that the value can be faked in tests.
- *
- * We can't use the real document in tests because changing the real `dir` causes geometry-based
- * tests in Safari to fail.
- *
- * We also can't re-provide the DOCUMENT token from platform-brower because the unit tests
- * themselves use things like `querySelector` in test code.
- *
- * This token is defined in a separate file from Directionality as a workaround for
- * https://github.com/angular/angular/issues/22559
- *
- * \@docs-private
- * @type {?}
- */
- const DIR_DOCUMENT = new InjectionToken('cdk-dir-doc', {
- providedIn: 'root',
- factory: DIR_DOCUMENT_FACTORY,
- });
- /**
- * \@docs-private
- * @return {?}
- */
- function DIR_DOCUMENT_FACTORY() {
- return inject(DOCUMENT);
- }
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- /**
- * The directionality (LTR / RTL) context for the application (or a subtree of it).
- * Exposes the current direction and a stream of direction changes.
- */
- class Directionality {
- /**
- * @param {?=} _document
- */
- constructor(_document) {
- /**
- * The current 'ltr' or 'rtl' value.
- */
- this.value = 'ltr';
- /**
- * Stream that emits whenever the 'ltr' / 'rtl' state changes.
- */
- this.change = new EventEmitter();
- if (_document) {
- // TODO: handle 'auto' value -
- // We still need to account for dir="auto".
- // It looks like HTMLElemenet.dir is also "auto" when that's set to the attribute,
- // but getComputedStyle return either "ltr" or "rtl". avoiding getComputedStyle for now
- /** @type {?} */
- const bodyDir = _document.body ? _document.body.dir : null;
- /** @type {?} */
- const htmlDir = _document.documentElement ? _document.documentElement.dir : null;
- /** @type {?} */
- const value = bodyDir || htmlDir;
- this.value = (value === 'ltr' || value === 'rtl') ? value : 'ltr';
- }
- }
- /**
- * @return {?}
- */
- ngOnDestroy() {
- this.change.complete();
- }
- }
- Directionality.decorators = [
- { type: Injectable, args: [{ providedIn: 'root' },] },
- ];
- /** @nocollapse */
- Directionality.ctorParameters = () => [
- { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DIR_DOCUMENT,] }] }
- ];
- /** @nocollapse */ Directionality.ngInjectableDef = ɵɵdefineInjectable({ factory: function Directionality_Factory() { return new Directionality(ɵɵinject(DIR_DOCUMENT, 8)); }, token: Directionality, providedIn: "root" });
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- /**
- * Directive to listen for changes of direction of part of the DOM.
- *
- * Provides itself as Directionality such that descendant directives only need to ever inject
- * Directionality to get the closest direction.
- */
- class Dir {
- constructor() {
- /**
- * Normalized direction that accounts for invalid/unsupported values.
- */
- this._dir = 'ltr';
- /**
- * Whether the `value` has been set to its initial value.
- */
- this._isInitialized = false;
- /**
- * Event emitted when the direction changes.
- */
- this.change = new EventEmitter();
- }
- /**
- * \@docs-private
- * @return {?}
- */
- get dir() { return this._dir; }
- /**
- * @param {?} value
- * @return {?}
- */
- set dir(value) {
- /** @type {?} */
- const old = this._dir;
- /** @type {?} */
- const normalizedValue = value ? value.toLowerCase() : value;
- this._rawDir = value;
- this._dir = (normalizedValue === 'ltr' || normalizedValue === 'rtl') ? normalizedValue : 'ltr';
- if (old !== this._dir && this._isInitialized) {
- this.change.emit(this._dir);
- }
- }
- /**
- * Current layout direction of the element.
- * @return {?}
- */
- get value() { return this.dir; }
- /**
- * Initialize once default value has been set.
- * @return {?}
- */
- ngAfterContentInit() {
- this._isInitialized = true;
- }
- /**
- * @return {?}
- */
- ngOnDestroy() {
- this.change.complete();
- }
- }
- Dir.decorators = [
- { type: Directive, args: [{
- selector: '[dir]',
- providers: [{ provide: Directionality, useExisting: Dir }],
- host: { '[attr.dir]': '_rawDir' },
- exportAs: 'dir',
- },] },
- ];
- Dir.propDecorators = {
- change: [{ type: Output, args: ['dirChange',] }],
- dir: [{ type: Input }]
- };
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- class BidiModule {
- }
- BidiModule.decorators = [
- { type: NgModule, args: [{
- exports: [Dir],
- declarations: [Dir],
- },] },
- ];
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- export { Directionality, DIR_DOCUMENT, Dir, BidiModule, DIR_DOCUMENT_FACTORY as ɵa };
- //# sourceMappingURL=bidi.js.map
|