source: trip-planner-front/node_modules/.cache/babel-webpack/b4e498c40d763a82231cd83ef0b0da6f.json@ 76712b2

Last change on this file since 76712b2 was 59329aa, checked in by Ema <ema_spirova@…>, 3 years ago

adding photos

  • Property mode set to 100644
File size: 56.0 KB
RevLine 
[59329aa]1{"ast":null,"code":"import * as i1 from '@angular/cdk/platform';\nimport { normalizePassiveListenerOptions, PlatformModule } from '@angular/cdk/platform';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Output, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { coerceElement, coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { EMPTY, Subject, fromEvent } from 'rxjs';\nimport { auditTime, takeUntil } from 'rxjs/operators';\nimport { DOCUMENT } from '@angular/common';\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Options to pass to the animationstart listener. */\n\nconst listenerOptions = normalizePassiveListenerOptions({\n passive: true\n});\n/**\n * An injectable service that can be used to monitor the autofill state of an input.\n * Based on the following blog post:\n * https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7\n */\n\nclass AutofillMonitor {\n constructor(_platform, _ngZone) {\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._monitoredElements = new Map();\n }\n\n monitor(elementOrRef) {\n if (!this._platform.isBrowser) {\n return EMPTY;\n }\n\n const element = coerceElement(elementOrRef);\n\n const info = this._monitoredElements.get(element);\n\n if (info) {\n return info.subject;\n }\n\n const result = new Subject();\n const cssClass = 'cdk-text-field-autofilled';\n\n const listener = event => {\n // Animation events fire on initial element render, we check for the presence of the autofill\n // CSS class to make sure this is a real change in state, not just the initial render before\n // we fire off events.\n if (event.animationName === 'cdk-text-field-autofill-start' && !element.classList.contains(cssClass)) {\n element.classList.add(cssClass);\n\n this._ngZone.run(() => result.next({\n target: event.target,\n isAutofilled: true\n }));\n } else if (event.animationName === 'cdk-text-field-autofill-end' && element.classList.contains(cssClass)) {\n element.classList.remove(cssClass);\n\n this._ngZone.run(() => result.next({\n target: event.target,\n isAutofilled: false\n }));\n }\n };\n\n this._ngZone.runOutsideAngular(() => {\n element.addEventListener('animationstart', listener, listenerOptions);\n element.classList.add('cdk-text-field-autofill-monitored');\n });\n\n this._monitoredElements.set(element, {\n subject: result,\n unlisten: () => {\n element.removeEventListener('animationstart', listener, listenerOptions);\n }\n });\n\n return result;\n }\n\n stopMonitoring(elementOrRef) {\n const element = coerceElement(elementOrRef);\n\n const info = this._monitoredElements.get(element);\n\n if (info) {\n info.unlisten();\n info.subject.complete();\n element.classList.remove('cdk-text-field-autofill-monitored');\n element.classList.remove('cdk-text-field-autofilled');\n\n this._monitoredElements.delete(element);\n }\n }\n\n ngOnDestroy() {\n this._monitoredElements.forEach((_info, element) => this.stopMonitoring(element));\n }\n\n}\n\nAutofillMonitor.ɵfac = function AutofillMonitor_Factory(t) {\n return new (t || AutofillMonitor)(i0.ɵɵinject(i1.Platform), i0.ɵɵinject(i0.NgZone));\n};\n\nAutofillMonitor.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: AutofillMonitor,\n factory: AutofillMonitor.ɵfac,\n providedIn: 'root'\n});\n\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(AutofillMonitor, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], function () {\n return [{\n type: i1.Platform\n }, {\n type: i0.NgZone\n }];\n }, null);\n})();\n/** A directive that can be used to monitor the autofill state of an input. */\n\n\nclass CdkAutofill {\n constructor(_elementRef, _autofillMonitor) {\n this._elementRef = _elementRef;\n this._autofillMonitor = _autofillMonitor;\n /** Emits when the autofill state of the element changes. */\n\n this.cdkAutofill = new EventEmitter();\n }\n\n ngOnInit() {\n this._autofillMonitor.monitor(this._elementRef).subscribe(event => this.cdkAutofill.emit(event));\n }\n\n ngOnDestroy() {\n this._autofillMonitor.stopMonitoring(this._elementRef);\n }\n\n}\n\nCdkAutofill.ɵfac = function CdkAutofill_Factory(t) {\n return new (t || CdkAutofill)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(AutofillMonitor));\n};\n\nCdkAutofill.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkAutofill,\n selectors: [[\"\", \"cdkAutofill\", \"\"]],\n outputs: {\n cdkAutofill: \"cdkAutofill\"\n }\n});\n\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkAutofill, [{\n type: Directive,\n args: [{\n selector: '[cdkAutofill]'\n }]\n }], function () {\n return [{\n type: i0.ElementRef\n }, {\n type: AutofillMonitor\n }];\n }, {\n cdkAutofill: [{\n type: Output\n }]\n });\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Directive to automatically resize a textarea to fit its content. */\n\n\nclass CdkTextareaAutosize {\n constructor(_elementRef, _platform, _ngZone,\n /** @breaking-change 11.0.0 make document required */\n document) {\n this._elementRef = _elementRef;\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._destroyed = new Subject();\n this._enabled = true;\n /**\n * Value of minRows as of last resize. If the minRows has decreased, the\n * height of the textarea needs to be recomputed to reflect the new minimum. The maxHeight\n * does not have the same problem because it does not affect the textarea's scrollHeight.\n */\n\n this._previousMinRows = -1;\n this._isViewInited = false;\n /** Handles `focus` and `blur` events. */\n\n this._handleFocusEvent = event => {\n this._hasFocus = event.type === 'focus';\n };\n\n this._document = document;\n this._textareaElement = this._elementRef.nativeElement;\n }\n /** Minimum amount of rows in the textarea. */\n\n\n get minRows() {\n return this._minRows;\n }\n\n set minRows(value) {\n this._minRows = coerceNumberProperty(value);\n\n this._setMinHeight();\n }\n /** Maximum amount of rows in the textarea. */\n\n\n get maxRows() {\n return this._maxRows;\n }\n\n set maxRows(value) {\n this._maxRows = coerceNumberProperty(value);\n\n this._setMaxHeight();\n }\n /** Whether autosizing is enabled or not */\n\n\n get enabled() {\n return this._enabled;\n }\n\n set enabled(value) {\n value = coerceBooleanProperty(value); // Only act if the actual value changed. This specifically helps to not run\n // resizeToFitContent too early (i.e. before ngAfterViewInit)\n\n if (this._enabled !== value) {\n (this._enabled = value) ? this.resizeToFitContent(true) : this.reset();\n }\n }\n\n get placeholder() {\n return this._textareaElement.placeholder;\n }\n\n set placeholder(value) {\n this._cachedPlaceholderHeight = undefined;\n this._textareaElement.placeholder = value;\n\n this._cacheTextareaPlaceholderHeight();\n }\n /** Sets the minimum height of the textarea as determined by minRows. */\n\n\n _setMinHeight() {\n const minHeight = this.minRows && this._cachedLineHeight ? `${this.minRows * this._cachedLineHeight}px` : null;\n\n if (minHeight) {\n this._textareaElement.style.minHeight = minHeight;\n }\n }\n /** Sets the maximum height of the textarea as determined by maxRows. */\n\n\n _setMaxHeight() {\n const maxHeight = this.maxRows && this._cachedLineHeight ? `${this.maxRows * this._cachedLineHeight}px` : null;\n\n if (maxHeight) {\n this._textareaElement.style.maxHeight = maxHeight;\n }\n }\n\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n // Remember the height which we started with in case autosizing is disabled\n this._initialHeight = this._textareaElement.style.height;\n this.resizeToFitContent();\n\n this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n\n fromEvent(window, 'resize').pipe(auditTime(16), takeUntil(this._destroyed)).subscribe(() => this.resizeToFitContent(true));\n\n this._textareaElement.addEventListener('focus', this._handleFocusEvent);\n\n this._textareaElement.addEventListener('blur', this._handleFocusEvent);\n });\n\n this._isViewInited = true;\n this.resizeToFitContent(true);\n }\n }\n\n ngOnDestroy() {\n this._textareaElement.removeEventListener('focus', this._handleFocusEvent);\n\n this._textareaElement.removeEventListener('blur', this._handleFocusEvent);\n\n this._destroyed.next();\n\n this._destroyed.complete();\n }\n /**\n * Cache the height of a single-row textarea if it has not already been cached.\n *\n * We need to know how large a single \"row\" of a textarea is in order to apply minRows and\n * maxRows. For the initial version, we will assume that the height of a single line in the\n * textarea does not ever change.\n */\n\n\n _cacheTextareaLineHeight() {\n if (this._cachedLineHeight) {\n return;\n } // Use a clone element because we have to override some styles.\n\n\n let textareaClone = this._textareaElement.cloneNode(false);\n\n textareaClone.rows = 1; // Use `position: absolute` so that this doesn't cause a browser layout and use\n // `visibility: hidden` so that nothing is rendered. Clear any other styles that\n // would affect the height.\n\n textareaClone.style.position = 'absolute';\n textareaClone.style.visibility = 'hidden';\n textareaClone.style.border = 'none';\n textareaClone.style.padding = '0';\n textareaClone.style.height = '';\n textareaClone.style.minHeight = '';\n textareaClone.style.maxHeight = ''; // In Firefox it happens that textarea elements are always bigger than the specified amount\n // of rows. This is because Firefox tries to add extra space for the horizontal scrollbar.\n // As a workaround that removes the extra space for the scrollbar, we can just set overflow\n // to hidden. This ensures that there is no invalid calculation of the line height.\n // See Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=33654\n\n textareaClone.style.overflow = 'hidden';\n\n this._textareaElement.parentNode.appendChild(textareaClone);\n\n this._cachedLineHeight = textareaClone.clientHeight;\n textareaClone.remove(); // Min and max heights have to be re-calculated if the cached line height changes\n\n this._setMinHeight();\n\n this._setMaxHeight();\n }\n\n _measureScrollHeight() {\n const element = this._textareaElement;\n const previousMargin = element.style.marginBottom || '';\n const isFirefox = this._platform.FIREFOX;\n const needsMarginFiller = isFirefox && this._hasFocus;\n const measuringClass = isFirefox ? 'cdk-textarea-autosize-measuring-firefox' : 'cdk-textarea-autosize-measuring'; // In some cases the page might move around while we're measuring the `textarea` on Firefox. We\n // work around it by assigning a temporary margin with the same height as the `textarea` so that\n // it occupies the same amount of space. See #23233.\n\n if (needsMarginFiller) {\n element.style.marginBottom = `${element.clientHeight}px`;\n } // Reset the textarea height to auto in order to shrink back to its default size.\n // Also temporarily force overflow:hidden, so scroll bars do not interfere with calculations.\n\n\n element.classList.add(measuringClass); // The measuring class includes a 2px padding to workaround an issue with Chrome,\n // so we account for that extra space here by subtracting 4 (2px top + 2px bottom).\n\n const scrollHeight = element.scrollHeight - 4;\n element.classList.remove(measuringClass);\n\n if (needsMarginFiller) {\n element.style.marginBottom = previousMargin;\n }\n\n return scrollHeight;\n }\n\n _cacheTextareaPlaceholderHeight() {\n if (!this._isViewInited || this._cachedPlaceholderHeight != undefined) {\n return;\n }\n\n if (!this.placeholder) {\n this._cachedPlaceholderHeight = 0;\n return;\n }\n\n const value = this._textareaElement.value;\n this._textareaElement.value = this._textareaElement.placeholder;\n this._cachedPlaceholderHeight = this._measureScrollHeight();\n this._textareaElement.value = value;\n }\n\n ngDoCheck() {\n if (this._platform.isBrowser) {\n this.resizeToFitContent();\n }\n }\n /**\n * Resize the textarea to fit its content.\n * @param force Whether to force a height recalculation. By default the height will be\n * recalculated only if the value changed since the last call.\n */\n\n\n resizeToFitContent(force = false) {\n // If autosizing is disabled, just skip everything else\n if (!this._enabled) {\n return;\n }\n\n this._cacheTextareaLineHeight();\n\n this._cacheTextareaPlaceholderHeight(); // If we haven't determined the line-height yet, we know we're still hidden and there's no point\n // in checking the height of the textarea.\n\n\n if (!this._cachedLineHeight) {\n return;\n }\n\n const textarea = this._elementRef.nativeElement;\n const value = textarea.value; // Only resize if the value or minRows have changed since these calculations can be expensive.\n\n if (!force && this._minRows === this._previousMinRows && value === this._previousValue) {\n return;\n }\n\n const scrollHeight = this._measureScrollHeight();\n\n const height = Math.max(scrollHeight, this._cachedPlaceholderHeight || 0); // Use the scrollHeight to know how large the textarea *would* be if fit its entire value.\n\n textarea.style.height = `${height}px`;\n\n this._ngZone.runOutsideAngular(() => {\n if (typeof requestAnimationFrame !== 'undefined') {\n requestAnimationFrame(() => this._scrollToCaretPosition(textarea));\n } else {\n setTimeout(() => this._scrollToCaretPosition(textarea));\n }\n });\n\n this._previousValue = value;\n this._previousMinRows = this._minRows;\n }\n /**\n * Resets the textarea to its original size\n */\n\n\n reset() {\n // Do not try to change the textarea, if the initialHeight has not been determined yet\n // This might potentially remove styles when reset() is called before ngAfterViewInit\n if (this._initialHeight !== undefined) {\n this._textareaElement.style.height = this._initialHeight;\n }\n }\n\n _noopInputHandler() {// no-op handler that ensures we're running change detection on input events.\n }\n /** Access injected document if available or fallback to global document reference */\n\n\n _getDocument() {\n return this._document || document;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n\n\n _getWindow() {\n const doc = this._getDocument();\n\n return doc.defaultView || window;\n }\n /**\n * Scrolls a textarea to the caret position. On Firefox resizing the textarea will\n * prevent it from scrolling to the caret position. We need to re-set the selection\n * in order for it to scroll to the proper position.\n */\n\n\n _scrollToCaretPosition(textarea) {\n const {\n selectionStart,\n selectionEnd\n } = textarea; // IE will throw an \"Unspecified error\" if we try to set the selection range after the\n // element has been removed from the DOM. Assert that the directive hasn't been destroyed\n // between the time we requested the animation frame and when it was executed.\n // Also note that we have to assert that the textarea is focused before we set the\n // selection range. Setting the selection range on a non-focused textarea will cause\n // it to receive focus on IE and Edge.\n\n if (!this._destroyed.isStopped && this._hasFocus) {\n textarea.setSelectionRange(selectionStart, selectionEnd);\n }\n }\n\n}\n\nCdkTextareaAutosize.ɵfac = function CdkTextareaAutosize_Factory(t) {\n return new (t || CdkTextareaAutosize)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(DOCUMENT, 8));\n};\n\nCdkTextareaAutosize.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkTextareaAutosize,\n selectors: [[\"textarea\", \"cdkTextareaAutosize\", \"\"]],\n hostAttrs: [\"rows\", \"1\", 1, \"cdk-textarea-autosize\"],\n hostBindings: function CdkTextareaAutosize_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"input\", function CdkTextareaAutosize_input_HostBindingHandler() {\n return ctx._noopInputHandler();\n });\n }\n },\n inputs: {\n minRows: [\"cdkAutosizeMinRows\", \"minRows\"],\n maxRows: [\"cdkAutosizeMaxRows\", \"maxRows\"],\n enabled: [\"cdkTextareaAutosize\", \"enabled\"],\n placeholder: \"placeholder\"\n },\n exportAs: [\"cdkTextareaAutosize\"]\n});\n\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkTextareaAutosize, [{\n type: Directive,\n args: [{\n selector: 'textarea[cdkTextareaAutosize]',\n exportAs: 'cdkTextareaAutosize',\n host: {\n 'class': 'cdk-textarea-autosize',\n // Textarea elements that have the directive applied should have a single row by default.\n // Browsers normally show two rows by default and therefore this limits the minRows binding.\n 'rows': '1',\n '(input)': '_noopInputHandler()'\n }\n }]\n }], function () {\n return [{\n type: i0.ElementRef\n }, {\n type: i1.Platform\n }, {\n type: i0.NgZone\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }]\n }];\n }, {\n minRows: [{\n type: Input,\n args: ['cdkAutosizeMinRows']\n }],\n maxRows: [{\n type: Input,\n args: ['cdkAutosizeMaxRows']\n }],\n enabled: [{\n type: Input,\n args: ['cdkTextareaAutosize']\n }],\n placeholder: [{\n type: Input\n }]\n });\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nclass TextFieldModule {}\n\nTextFieldModule.ɵfac = function TextFieldModule_Factory(t) {\n return new (t || TextFieldModule)();\n};\n\nTextFieldModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: TextFieldModule\n});\nTextFieldModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [[PlatformModule]]\n});\n\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TextFieldModule, [{\n type: NgModule,\n args: [{\n declarations: [CdkAutofill, CdkTextareaAutosize],\n imports: [PlatformModule],\n exports: [CdkAutofill, CdkTextareaAutosize]\n }]\n }], null, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { AutofillMonitor, CdkAutofill, CdkTextareaAutosize, TextFieldModule };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/fesm2020/text-field.mjs"],"names":["i1","normalizePassiveListenerOptions","PlatformModule","i0","Injectable","EventEmitter","Directive","Output","Optional","Inject","Input","NgModule","coerceElement","coerceNumberProperty","coerceBooleanProperty","EMPTY","Subject","fromEvent","auditTime","takeUntil","DOCUMENT","listenerOptions","passive","AutofillMonitor","constructor","_platform","_ngZone","_monitoredElements","Map","monitor","elementOrRef","isBrowser","element","info","get","subject","result","cssClass","listener","event","animationName","classList","contains","add","run","next","target","isAutofilled","remove","runOutsideAngular","addEventListener","set","unlisten","removeEventListener","stopMonitoring","complete","delete","ngOnDestroy","forEach","_info","ɵfac","Platform","NgZone","ɵprov","type","args","providedIn","CdkAutofill","_elementRef","_autofillMonitor","cdkAutofill","ngOnInit","subscribe","emit","ElementRef","ɵdir","selector","CdkTextareaAutosize","document","_destroyed","_enabled","_previousMinRows","_isViewInited","_handleFocusEvent","_hasFocus","_document","_textareaElement","nativeElement","minRows","_minRows","value","_setMinHeight","maxRows","_maxRows","_setMaxHeight","enabled","resizeToFitContent","reset","placeholder","_cachedPlaceholderHeight","undefined","_cacheTextareaPlaceholderHeight","minHeight","_cachedLineHeight","style","maxHeight","ngAfterViewInit","_initialHeight","height","window","_getWindow","pipe","_cacheTextareaLineHeight","textareaClone","cloneNode","rows","position","visibility","border","padding","overflow","parentNode","appendChild","clientHeight","_measureScrollHeight","previousMargin","marginBottom","isFirefox","FIREFOX","needsMarginFiller","measuringClass","scrollHeight","ngDoCheck","force","textarea","_previousValue","Math","max","requestAnimationFrame","_scrollToCaretPosition","setTimeout","_noopInputHandler","_getDocument","doc","defaultView","selectionStart","selectionEnd","isStopped","setSelectionRange","exportAs","host","decorators","TextFieldModule","ɵmod","ɵinj","declarations","imports","exports"],"mappings":"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","sourcesContent":["import * as i1 from '@angular/cdk/platform';\nimport { normalizePassiveListenerOptions, PlatformModule } from '@angular/cdk/platform';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Output, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { coerceElement, coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { EMPTY, Subject, fromEvent } from 'rxjs';\nimport { auditTime, takeUntil } from 'rxjs/operators';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Options to pass to the animationstart listener. */\nconst listenerOptions = normalizePassiveListenerOptions({ passive: true });\n/**\n * An injectable service that can be used to monitor the autofill state of an input.\n * Based on the following blog post:\n * https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7\n */\nclass AutofillMonitor {\n constructor(_platform, _ngZone) {\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._monitoredElements = new Map();\n }\n monitor(elementOrRef) {\n if (!this._platform.isBrowser) {\n return EMPTY;\n }\n const element = coerceElement(elementOrRef);\n const info = this._monitoredElements.get(element);\n if (info) {\n return info.subject;\n }\n const result = new Subject();\n const cssClass = 'cdk-text-field-autofilled';\n const listener = ((event) => {\n // Animation events fire on initial element render, we check for the presence of the autofill\n // CSS class to make sure this is a real change in state, not just the initial render before\n // we fire off events.\n if (event.animationName === 'cdk-text-field-autofill-start' &&\n !element.classList.contains(cssClass)) {\n element.classList.add(cssClass);\n this._ngZone.run(() => result.next({ target: event.target, isAutofilled: true }));\n }\n else if (event.animationName === 'cdk-text-field-autofill-end' &&\n element.classList.contains(cssClass)) {\n element.classList.remove(cssClass);\n this._ngZone.run(() => result.next({ target: event.target, isAutofilled: false }));\n }\n });\n this._ngZone.runOutsideAngular(() => {\n element.addEventListener('animationstart', listener, listenerOptions);\n element.classList.add('cdk-text-field-autofill-monitored');\n });\n this._monitoredElements.set(element, {\n subject: result,\n unlisten: () => {\n element.removeEventListener('animationstart', listener, listenerOptions);\n },\n });\n return result;\n }\n stopMonitoring(elementOrRef) {\n const element = coerceElement(elementOrRef);\n const info = this._monitoredElements.get(element);\n if (info) {\n info.unlisten();\n info.subject.complete();\n element.classList.remove('cdk-text-field-autofill-monitored');\n element.classList.remove('cdk-text-field-autofilled');\n this._monitoredElements.delete(element);\n }\n }\n ngOnDestroy() {\n this._monitoredElements.forEach((_info, element) => this.stopMonitoring(element));\n }\n}\nAutofillMonitor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: AutofillMonitor, deps: [{ token: i1.Platform }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nAutofillMonitor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: AutofillMonitor, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: AutofillMonitor, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.NgZone }]; } });\n/** A directive that can be used to monitor the autofill state of an input. */\nclass CdkAutofill {\n constructor(_elementRef, _autofillMonitor) {\n this._elementRef = _elementRef;\n this._autofillMonitor = _autofillMonitor;\n /** Emits when the autofill state of the element changes. */\n this.cdkAutofill = new EventEmitter();\n }\n ngOnInit() {\n this._autofillMonitor\n .monitor(this._elementRef)\n .subscribe(event => this.cdkAutofill.emit(event));\n }\n ngOnDestroy() {\n this._autofillMonitor.stopMonitoring(this._elementRef);\n }\n}\nCdkAutofill.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkAutofill, deps: [{ token: i0.ElementRef }, { token: AutofillMonitor }], target: i0.ɵɵFactoryTarget.Directive });\nCdkAutofill.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkAutofill, selector: \"[cdkAutofill]\", outputs: { cdkAutofill: \"cdkAutofill\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkAutofill, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkAutofill]',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: AutofillMonitor }]; }, propDecorators: { cdkAutofill: [{\n type: Output\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Directive to automatically resize a textarea to fit its content. */\nclass CdkTextareaAutosize {\n constructor(_elementRef, _platform, _ngZone, \n /** @breaking-change 11.0.0 make document required */\n document) {\n this._elementRef = _elementRef;\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._destroyed = new Subject();\n this._enabled = true;\n /**\n * Value of minRows as of last resize. If the minRows has decreased, the\n * height of the textarea needs to be recomputed to reflect the new minimum. The maxHeight\n * does not have the same problem because it does not affect the textarea's scrollHeight.\n */\n this._previousMinRows = -1;\n this._isViewInited = false;\n /** Handles `focus` and `blur` events. */\n this._handleFocusEvent = (event) => {\n this._hasFocus = event.type === 'focus';\n };\n this._document = document;\n this._textareaElement = this._elementRef.nativeElement;\n }\n /** Minimum amount of rows in the textarea. */\n get minRows() {\n return this._minRows;\n }\n set minRows(value) {\n this._minRows = coerceNumberProperty(value);\n this._setMinHeight();\n }\n /** Maximum amount of rows in the textarea. */\n get maxRows() {\n return this._maxRows;\n }\n set maxRows(value) {\n this._maxRows = coerceNumberProperty(value);\n this._setMaxHeight();\n }\n /** Whether autosizing is enabled or not */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n value = coerceBooleanProperty(value);\n // Only act if the actual value changed. This specifically helps to not run\n // resizeToFitContent too early (i.e. before ngAfterViewInit)\n if (this._enabled !== value) {\n (this._enabled = value) ? this.resizeToFitContent(true) : this.reset();\n }\n }\n get placeholder() {\n return this._textareaElement.placeholder;\n }\n set placeholder(value) {\n this._cachedPlaceholderHeight = undefined;\n this._textareaElement.placeholder = value;\n this._cacheTextareaPlaceholderHeight();\n }\n /** Sets the minimum height of the textarea as determined by minRows. */\n _setMinHeight() {\n const minHeight = this.minRows && this._cachedLineHeight ? `${this.minRows * this._cachedLineHeight}px` : null;\n if (minHeight) {\n this._textareaElement.style.minHeight = minHeight;\n }\n }\n /** Sets the maximum height of the textarea as determined by maxRows. */\n _setMaxHeight() {\n const maxHeight = this.maxRows && this._cachedLineHeight ? `${this.maxRows * this._cachedLineHeight}px` : null;\n if (maxHeight) {\n this._textareaElement.style.maxHeight = maxHeight;\n }\n }\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n // Remember the height which we started with in case autosizing is disabled\n this._initialHeight = this._textareaElement.style.height;\n this.resizeToFitContent();\n this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n fromEvent(window, 'resize')\n .pipe(auditTime(16), takeUntil(this._destroyed))\n .subscribe(() => this.resizeToFitContent(true));\n this._textareaElement.addEventListener('focus', this._handleFocusEvent);\n this._textareaElement.addEventListener('blur', this._handleFocusEvent);\n });\n this._isViewInited = true;\n this.resizeToFitContent(true);\n }\n }\n ngOnDestroy() {\n this._textareaElement.removeEventListener('focus', this._handleFocusEvent);\n this._textareaElement.removeEventListener('blur', this._handleFocusEvent);\n this._destroyed.next();\n this._destroyed.complete();\n }\n /**\n * Cache the height of a single-row textarea if it has not already been cached.\n *\n * We need to know how large a single \"row\" of a textarea is in order to apply minRows and\n * maxRows. For the initial version, we will assume that the height of a single line in the\n * textarea does not ever change.\n */\n _cacheTextareaLineHeight() {\n if (this._cachedLineHeight) {\n return;\n }\n // Use a clone element because we have to override some styles.\n let textareaClone = this._textareaElement.cloneNode(false);\n textareaClone.rows = 1;\n // Use `position: absolute` so that this doesn't cause a browser layout and use\n // `visibility: hidden` so that nothing is rendered. Clear any other styles that\n // would affect the height.\n textareaClone.style.position = 'absolute';\n textareaClone.style.visibility = 'hidden';\n textareaClone.style.border = 'none';\n textareaClone.style.padding = '0';\n textareaClone.style.height = '';\n textareaClone.style.minHeight = '';\n textareaClone.style.maxHeight = '';\n // In Firefox it happens that textarea elements are always bigger than the specified amount\n // of rows. This is because Firefox tries to add extra space for the horizontal scrollbar.\n // As a workaround that removes the extra space for the scrollbar, we can just set overflow\n // to hidden. This ensures that there is no invalid calculation of the line height.\n // See Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=33654\n textareaClone.style.overflow = 'hidden';\n this._textareaElement.parentNode.appendChild(textareaClone);\n this._cachedLineHeight = textareaClone.clientHeight;\n textareaClone.remove();\n // Min and max heights have to be re-calculated if the cached line height changes\n this._setMinHeight();\n this._setMaxHeight();\n }\n _measureScrollHeight() {\n const element = this._textareaElement;\n const previousMargin = element.style.marginBottom || '';\n const isFirefox = this._platform.FIREFOX;\n const needsMarginFiller = isFirefox && this._hasFocus;\n const measuringClass = isFirefox\n ? 'cdk-textarea-autosize-measuring-firefox'\n : 'cdk-textarea-autosize-measuring';\n // In some cases the page might move around while we're measuring the `textarea` on Firefox. We\n // work around it by assigning a temporary margin with the same height as the `textarea` so that\n // it occupies the same amount of space. See #23233.\n if (needsMarginFiller) {\n element.style.marginBottom = `${element.clientHeight}px`;\n }\n // Reset the textarea height to auto in order to shrink back to its default size.\n // Also temporarily force overflow:hidden, so scroll bars do not interfere with calculations.\n element.classList.add(measuringClass);\n // The measuring class includes a 2px padding to workaround an issue with Chrome,\n // so we account for that extra space here by subtracting 4 (2px top + 2px bottom).\n const scrollHeight = element.scrollHeight - 4;\n element.classList.remove(measuringClass);\n if (needsMarginFiller) {\n element.style.marginBottom = previousMargin;\n }\n return scrollHeight;\n }\n _cacheTextareaPlaceholderHeight() {\n if (!this._isViewInited || this._cachedPlaceholderHeight != undefined) {\n return;\n }\n if (!this.placeholder) {\n this._cachedPlaceholderHeight = 0;\n return;\n }\n const value = this._textareaElement.value;\n this._textareaElement.value = this._textareaElement.placeholder;\n this._cachedPlaceholderHeight = this._measureScrollHeight();\n this._textareaElement.value = value;\n }\n ngDoCheck() {\n if (this._platform.isBrowser) {\n this.resizeToFitContent();\n }\n }\n /**\n * Resize the textarea to fit its content.\n * @param force Whether to force a height recalculation. By default the height will be\n * recalculated only if the value changed since the last call.\n */\n resizeToFitContent(force = false) {\n // If autosizing is disabled, just skip everything else\n if (!this._enabled) {\n return;\n }\n this._cacheTextareaLineHeight();\n this._cacheTextareaPlaceholderHeight();\n // If we haven't determined the line-height yet, we know we're still hidden and there's no point\n // in checking the height of the textarea.\n if (!this._cachedLineHeight) {\n return;\n }\n const textarea = this._elementRef.nativeElement;\n const value = textarea.value;\n // Only resize if the value or minRows have changed since these calculations can be expensive.\n if (!force && this._minRows === this._previousMinRows && value === this._previousValue) {\n return;\n }\n const scrollHeight = this._measureScrollHeight();\n const height = Math.max(scrollHeight, this._cachedPlaceholderHeight || 0);\n // Use the scrollHeight to know how large the textarea *would* be if fit its entire value.\n textarea.style.height = `${height}px`;\n this._ngZone.runOutsideAngular(() => {\n if (typeof requestAnimationFrame !== 'undefined') {\n requestAnimationFrame(() => this._scrollToCaretPosition(textarea));\n }\n else {\n setTimeout(() => this._scrollToCaretPosition(textarea));\n }\n });\n this._previousValue = value;\n this._previousMinRows = this._minRows;\n }\n /**\n * Resets the textarea to its original size\n */\n reset() {\n // Do not try to change the textarea, if the initialHeight has not been determined yet\n // This might potentially remove styles when reset() is called before ngAfterViewInit\n if (this._initialHeight !== undefined) {\n this._textareaElement.style.height = this._initialHeight;\n }\n }\n _noopInputHandler() {\n // no-op handler that ensures we're running change detection on input events.\n }\n /** Access injected document if available or fallback to global document reference */\n _getDocument() {\n return this._document || document;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n const doc = this._getDocument();\n return doc.defaultView || window;\n }\n /**\n * Scrolls a textarea to the caret position. On Firefox resizing the textarea will\n * prevent it from scrolling to the caret position. We need to re-set the selection\n * in order for it to scroll to the proper position.\n */\n _scrollToCaretPosition(textarea) {\n const { selectionStart, selectionEnd } = textarea;\n // IE will throw an \"Unspecified error\" if we try to set the selection range after the\n // element has been removed from the DOM. Assert that the directive hasn't been destroyed\n // between the time we requested the animation frame and when it was executed.\n // Also note that we have to assert that the textarea is focused before we set the\n // selection range. Setting the selection range on a non-focused textarea will cause\n // it to receive focus on IE and Edge.\n if (!this._destroyed.isStopped && this._hasFocus) {\n textarea.setSelectionRange(selectionStart, selectionEnd);\n }\n }\n}\nCdkTextareaAutosize.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkTextareaAutosize, deps: [{ token: i0.ElementRef }, { token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkTextareaAutosize.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkTextareaAutosize, selector: \"textarea[cdkTextareaAutosize]\", inputs: { minRows: [\"cdkAutosizeMinRows\", \"minRows\"], maxRows: [\"cdkAutosizeMaxRows\", \"maxRows\"], enabled: [\"cdkTextareaAutosize\", \"enabled\"], placeholder: \"placeholder\" }, host: { attributes: { \"rows\": \"1\" }, listeners: { \"input\": \"_noopInputHandler()\" }, classAttribute: \"cdk-textarea-autosize\" }, exportAs: [\"cdkTextareaAutosize\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkTextareaAutosize, decorators: [{\n type: Directive,\n args: [{\n selector: 'textarea[cdkTextareaAutosize]',\n exportAs: 'cdkTextareaAutosize',\n host: {\n 'class': 'cdk-textarea-autosize',\n // Textarea elements that have the directive applied should have a single row by default.\n // Browsers normally show two rows by default and therefore this limits the minRows binding.\n 'rows': '1',\n '(input)': '_noopInputHandler()',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.Platform }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, propDecorators: { minRows: [{\n type: Input,\n args: ['cdkAutosizeMinRows']\n }], maxRows: [{\n type: Input,\n args: ['cdkAutosizeMaxRows']\n }], enabled: [{\n type: Input,\n args: ['cdkTextareaAutosize']\n }], placeholder: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass TextFieldModule {\n}\nTextFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: TextFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTextFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: TextFieldModule, declarations: [CdkAutofill, CdkTextareaAutosize], imports: [PlatformModule], exports: [CdkAutofill, CdkTextareaAutosize] });\nTextFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: TextFieldModule, imports: [[PlatformModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: TextFieldModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [CdkAutofill, CdkTextareaAutosize],\n imports: [PlatformModule],\n exports: [CdkAutofill, CdkTextareaAutosize],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AutofillMonitor, CdkAutofill, CdkTextareaAutosize, TextFieldModule };\n"]},"metadata":{},"sourceType":"module"}
Note: See TracBrowser for help on using the repository browser.