{"version":3,"file":"text-field.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk/text-field/text-field-style-loader.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk/text-field/autofill.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk/text-field/autosize.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk/text-field/text-field-module.ts"],"sourcesContent":["/**\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.dev/license\n */\n\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n/** Component used to load the structural styles of the text field. */\n@Component({\n  template: '',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  styleUrl: 'text-field-prebuilt.css',\n  host: {'cdk-text-field-style-loader': ''},\n})\nexport class _CdkTextFieldStyleLoader {}\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.dev/license\n */\n\nimport {Platform} from '../platform';\nimport {\n  Directive,\n  ElementRef,\n  EventEmitter,\n  inject,\n  Injectable,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Output,\n  RendererFactory2,\n} from '@angular/core';\nimport {_CdkPrivateStyleLoader} from '../private';\nimport {coerceElement} from '../coercion';\nimport {EMPTY, Observable, Subject} from 'rxjs';\nimport {_CdkTextFieldStyleLoader} from './text-field-style-loader';\n\n/** An event that is emitted when the autofill state of an input changes. */\nexport type AutofillEvent = {\n  /** The element whose autofill state changes. */\n  target: Element;\n  /** Whether the element is currently autofilled. */\n  isAutofilled: boolean;\n};\n\n/** Used to track info about currently monitored elements. */\ntype MonitoredElementInfo = {\n  readonly subject: Subject<AutofillEvent>;\n  unlisten: () => void;\n};\n\n/** Options to pass to the animationstart listener. */\nconst listenerOptions = {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@Injectable({providedIn: 'root'})\nexport class AutofillMonitor implements OnDestroy {\n  private _platform = inject(Platform);\n  private _ngZone = inject(NgZone);\n  private _renderer = inject(RendererFactory2).createRenderer(null, null);\n\n  private _styleLoader = inject(_CdkPrivateStyleLoader);\n  private _monitoredElements = new Map<Element, MonitoredElementInfo>();\n\n  constructor(...args: unknown[]);\n  constructor() {}\n\n  /**\n   * Monitor for changes in the autofill state of the given input element.\n   * @param element The element to monitor.\n   * @return A stream of autofill state changes.\n   */\n  monitor(element: Element): Observable<AutofillEvent>;\n\n  /**\n   * Monitor for changes in the autofill state of the given input element.\n   * @param element The element to monitor.\n   * @return A stream of autofill state changes.\n   */\n  monitor(element: ElementRef<Element>): Observable<AutofillEvent>;\n\n  monitor(elementOrRef: Element | ElementRef<Element>): Observable<AutofillEvent> {\n    if (!this._platform.isBrowser) {\n      return EMPTY;\n    }\n\n    this._styleLoader.load(_CdkTextFieldStyleLoader);\n\n    const element = coerceElement(elementOrRef);\n    const info = this._monitoredElements.get(element);\n\n    if (info) {\n      return info.subject;\n    }\n\n    const subject = new Subject<AutofillEvent>();\n    const cssClass = 'cdk-text-field-autofilled';\n    const listener = (event: AnimationEvent) => {\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 (\n        event.animationName === 'cdk-text-field-autofill-start' &&\n        !element.classList.contains(cssClass)\n      ) {\n        element.classList.add(cssClass);\n        this._ngZone.run(() => subject.next({target: event.target as Element, isAutofilled: true}));\n      } else if (\n        event.animationName === 'cdk-text-field-autofill-end' &&\n        element.classList.contains(cssClass)\n      ) {\n        element.classList.remove(cssClass);\n        this._ngZone.run(() =>\n          subject.next({target: event.target as Element, isAutofilled: false}),\n        );\n      }\n    };\n\n    const unlisten = this._ngZone.runOutsideAngular(() => {\n      element.classList.add('cdk-text-field-autofill-monitored');\n      return this._renderer.listen(element, 'animationstart', listener, listenerOptions);\n    });\n\n    this._monitoredElements.set(element, {subject, unlisten});\n    return subject;\n  }\n\n  /**\n   * Stop monitoring the autofill state of the given input element.\n   * @param element The element to stop monitoring.\n   */\n  stopMonitoring(element: Element): void;\n\n  /**\n   * Stop monitoring the autofill state of the given input element.\n   * @param element The element to stop monitoring.\n   */\n  stopMonitoring(element: ElementRef<Element>): void;\n\n  stopMonitoring(elementOrRef: Element | ElementRef<Element>): void {\n    const element = coerceElement(elementOrRef);\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      this._monitoredElements.delete(element);\n    }\n  }\n\n  ngOnDestroy() {\n    this._monitoredElements.forEach((_info, element) => this.stopMonitoring(element));\n  }\n}\n\n/** A directive that can be used to monitor the autofill state of an input. */\n@Directive({\n  selector: '[cdkAutofill]',\n})\nexport class CdkAutofill implements OnDestroy, OnInit {\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _autofillMonitor = inject(AutofillMonitor);\n\n  /** Emits when the autofill state of the element changes. */\n  @Output() readonly cdkAutofill = new EventEmitter<AutofillEvent>();\n\n  constructor(...args: unknown[]);\n  constructor() {}\n\n  ngOnInit() {\n    this._autofillMonitor\n      .monitor(this._elementRef)\n      .subscribe(event => this.cdkAutofill.emit(event));\n  }\n\n  ngOnDestroy() {\n    this._autofillMonitor.stopMonitoring(this._elementRef);\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.dev/license\n */\n\nimport {NumberInput, coerceNumberProperty} from '../coercion';\nimport {\n  Directive,\n  ElementRef,\n  Input,\n  AfterViewInit,\n  DoCheck,\n  OnDestroy,\n  NgZone,\n  booleanAttribute,\n  inject,\n  Renderer2,\n  DOCUMENT,\n} from '@angular/core';\n\nimport {Platform} from '../platform';\nimport {_CdkPrivateStyleLoader} from '../private';\nimport {auditTime} from 'rxjs/operators';\nimport {Subject} from 'rxjs';\nimport {_CdkTextFieldStyleLoader} from './text-field-style-loader';\n\n/** Directive to automatically resize a textarea to fit its content. */\n@Directive({\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})\nexport class CdkTextareaAutosize implements AfterViewInit, DoCheck, OnDestroy {\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _platform = inject(Platform);\n  private _ngZone = inject(NgZone);\n  private _renderer = inject(Renderer2);\n  private _resizeEvents = new Subject<void>();\n\n  /** Keep track of the previous textarea value to avoid resizing when the value hasn't changed. */\n  private _previousValue?: string;\n  private _initialHeight: string | undefined;\n  private readonly _destroyed = new Subject<void>();\n  private _listenerCleanups: (() => void)[] | undefined;\n\n  private _minRows!: number;\n  private _maxRows!: number;\n  private _enabled: boolean = true;\n\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  private _previousMinRows: number = -1;\n\n  private _textareaElement: HTMLTextAreaElement;\n\n  /** Minimum amount of rows in the textarea. */\n  @Input('cdkAutosizeMinRows')\n  get minRows(): number {\n    return this._minRows;\n  }\n  set minRows(value: NumberInput) {\n    this._minRows = coerceNumberProperty(value);\n    this._setMinHeight();\n  }\n\n  /** Maximum amount of rows in the textarea. */\n  @Input('cdkAutosizeMaxRows')\n  get maxRows(): number {\n    return this._maxRows;\n  }\n  set maxRows(value: NumberInput) {\n    this._maxRows = coerceNumberProperty(value);\n    this._setMaxHeight();\n  }\n\n  /** Whether autosizing is enabled or not */\n  @Input({alias: 'cdkTextareaAutosize', transform: booleanAttribute})\n  get enabled(): boolean {\n    return this._enabled;\n  }\n  set enabled(value: boolean) {\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\n  @Input()\n  get placeholder(): string {\n    return this._textareaElement.placeholder;\n  }\n  set placeholder(value: string) {\n    this._cachedPlaceholderHeight = undefined;\n\n    if (value) {\n      this._textareaElement.setAttribute('placeholder', value);\n    } else {\n      this._textareaElement.removeAttribute('placeholder');\n    }\n\n    this._cacheTextareaPlaceholderHeight();\n  }\n\n  /** Cached height of a textarea with a single row. */\n  private _cachedLineHeight?: number;\n  /** Cached height of a textarea with only the placeholder. */\n  private _cachedPlaceholderHeight?: number;\n\n  /** Used to reference correct document/window */\n  protected _document = inject(DOCUMENT);\n\n  private _hasFocus = false;\n\n  private _isViewInited = false;\n\n  constructor(...args: unknown[]);\n\n  constructor() {\n    const styleLoader = inject(_CdkPrivateStyleLoader);\n    styleLoader.load(_CdkTextFieldStyleLoader);\n    this._textareaElement = this._elementRef.nativeElement as HTMLTextAreaElement;\n  }\n\n  /** Sets the minimum height of the textarea as determined by minRows. */\n  _setMinHeight(): void {\n    const minHeight =\n      this.minRows && this._cachedLineHeight ? `${this.minRows * this._cachedLineHeight}px` : null;\n\n    if (minHeight) {\n      this._textareaElement.style.minHeight = minHeight;\n    }\n  }\n\n  /** Sets the maximum height of the textarea as determined by maxRows. */\n  _setMaxHeight(): void {\n    const maxHeight =\n      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        this._listenerCleanups = [\n          this._renderer.listen('window', 'resize', () => this._resizeEvents.next()),\n          this._renderer.listen(this._textareaElement, 'focus', this._handleFocusEvent),\n          this._renderer.listen(this._textareaElement, 'blur', this._handleFocusEvent),\n        ];\n        this._resizeEvents.pipe(auditTime(16)).subscribe(() => {\n          // Clear the cached heights since the styles can change\n          // when the window is resized (e.g. by media queries).\n          this._cachedLineHeight = this._cachedPlaceholderHeight = undefined;\n          this.resizeToFitContent(true);\n        });\n      });\n\n      this._isViewInited = true;\n      this.resizeToFitContent(true);\n    }\n  }\n\n  ngOnDestroy() {\n    this._listenerCleanups?.forEach(cleanup => cleanup());\n    this._resizeEvents.complete();\n    this._destroyed.next();\n    this._destroyed.complete();\n  }\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  private _cacheTextareaLineHeight(): void {\n    if (this._cachedLineHeight) {\n      return;\n    }\n\n    // Use a clone element because we have to override some styles.\n    const textareaClone = this._textareaElement.cloneNode(false) as HTMLTextAreaElement;\n    const cloneStyles = textareaClone.style;\n    textareaClone.rows = 1;\n\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    cloneStyles.position = 'absolute';\n    cloneStyles.visibility = 'hidden';\n    cloneStyles.border = 'none';\n    cloneStyles.padding = '0';\n    cloneStyles.height = '';\n    cloneStyles.minHeight = '';\n    cloneStyles.maxHeight = '';\n\n    // App styles might be messing with the height through the positioning properties.\n    cloneStyles.top = cloneStyles.bottom = cloneStyles.left = cloneStyles.right = 'auto';\n\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    cloneStyles.overflow = 'hidden';\n\n    this._textareaElement.parentNode!.appendChild(textareaClone);\n    this._cachedLineHeight = textareaClone.clientHeight;\n    textareaClone.remove();\n\n    // Min and max heights have to be re-calculated if the cached line height changes\n    this._setMinHeight();\n    this._setMaxHeight();\n  }\n\n  private _measureScrollHeight(): number {\n    const element = this._textareaElement;\n    const previousMargin = element.style.marginBottom || '';\n    const isFirefox = this._platform.FIREFOX;\n    const needsMarginFiller = this._hasFocus;\n    const measuringClass = isFirefox\n      ? 'cdk-textarea-autosize-measuring-firefox'\n      : 'cdk-textarea-autosize-measuring';\n\n    // In some cases the page might move around while we're measuring the `textarea`. 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 and #23834.\n    if (needsMarginFiller) {\n      element.style.marginBottom = `${element.clientHeight}px`;\n    }\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\n    if (needsMarginFiller) {\n      element.style.marginBottom = previousMargin;\n    }\n\n    return scrollHeight;\n  }\n\n  private _cacheTextareaPlaceholderHeight(): void {\n    if (!this._isViewInited || this._cachedPlaceholderHeight != undefined) {\n      return;\n    }\n    if (!this.placeholder) {\n      this._cachedPlaceholderHeight = 0;\n      return;\n    }\n\n    const value = this._textareaElement.value;\n\n    this._textareaElement.value = this._textareaElement.placeholder;\n    this._cachedPlaceholderHeight = this._measureScrollHeight();\n    this._textareaElement.value = value;\n  }\n\n  /** Handles `focus` and `blur` events. */\n  private _handleFocusEvent = (event: FocusEvent) => {\n    this._hasFocus = event.type === 'focus';\n  };\n\n  ngDoCheck() {\n    if (this._platform.isBrowser) {\n      this.resizeToFitContent();\n    }\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: boolean = false) {\n    // If autosizing is disabled, just skip everything else\n    if (!this._enabled) {\n      return;\n    }\n\n    this._cacheTextareaLineHeight();\n    this._cacheTextareaPlaceholderHeight();\n\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\n    const textarea = this._elementRef.nativeElement as HTMLTextAreaElement;\n    const value = textarea.value;\n\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\n    const scrollHeight = this._measureScrollHeight();\n    const height = Math.max(scrollHeight, this._cachedPlaceholderHeight || 0);\n\n    // Use the scrollHeight to know how large the textarea *would* be if fit its entire value.\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  /**\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\n  _noopInputHandler() {\n    // no-op handler that ensures we're running change detection on input events.\n  }\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  private _scrollToCaretPosition(textarea: HTMLTextAreaElement) {\n    const {selectionStart, selectionEnd} = textarea;\n\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}\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.dev/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {CdkAutofill} from './autofill';\nimport {CdkTextareaAutosize} from './autosize';\n\n@NgModule({\n  imports: [CdkAutofill, CdkTextareaAutosize],\n  exports: [CdkAutofill, CdkTextareaAutosize],\n})\nexport class TextFieldModule {}\n"],"names":["_CdkTextFieldStyleLoader","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isInline","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","template","host","listenerOptions","passive","AutofillMonitor","_platform","inject","Platform","_ngZone","NgZone","_renderer","RendererFactory2","createRenderer","_styleLoader","_CdkPrivateStyleLoader","_monitoredElements","Map","constructor","monitor","elementOrRef","isBrowser","EMPTY","load","element","coerceElement","info","get","subject","Subject","cssClass","listener","event","animationName","classList","contains","add","run","next","isAutofilled","remove","unlisten","runOutsideAngular","listen","set","stopMonitoring","complete","delete","ngOnDestroy","forEach","_info","Injectable","ɵprov","ɵɵngDeclareInjectable","ngImport","providedIn","CdkAutofill","_elementRef","ElementRef","_autofillMonitor","cdkAutofill","EventEmitter","ngOnInit","subscribe","emit","Directive","isStandalone","selector","outputs","Output","CdkTextareaAutosize","Renderer2","_resizeEvents","_previousValue","_initialHeight","_destroyed","_listenerCleanups","_minRows","_maxRows","_enabled","_previousMinRows","_textareaElement","minRows","value","coerceNumberProperty","_setMinHeight","maxRows","_setMaxHeight","enabled","resizeToFitContent","reset","placeholder","_cachedPlaceholderHeight","undefined","setAttribute","removeAttribute","_cacheTextareaPlaceholderHeight","_cachedLineHeight","_document","DOCUMENT","_hasFocus","_isViewInited","styleLoader","nativeElement","minHeight","style","maxHeight","ngAfterViewInit","height","_handleFocusEvent","pipe","auditTime","cleanup","_cacheTextareaLineHeight","textareaClone","cloneNode","cloneStyles","rows","position","visibility","border","padding","top","bottom","left","right","overflow","parentNode","appendChild","clientHeight","_measureScrollHeight","previousMargin","marginBottom","isFirefox","FIREFOX","needsMarginFiller","measuringClass","scrollHeight","ngDoCheck","force","textarea","Math","max","requestAnimationFrame","_scrollToCaretPosition","setTimeout","_noopInputHandler","selectionStart","selectionEnd","isStopped","setSelectionRange","ɵdir","ɵɵngDeclareDirective","booleanAttribute","attributes","listeners","classAttribute","exportAs","Input","alias","transform","TextFieldModule","NgModule","ɵmod","ɵɵngDeclareNgModule","exports","imports"],"mappings":"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"}