{"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 {Component, ViewEncapsulation} from '@angular/core';\n\n/** Component used to load the structural styles of the text field. */\n@Component({\n  template: '',\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  Service,\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@Service()\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  /**\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  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() {\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","encapsulation","ViewEncapsulation","None","decorators","listenerOptions","passive","AutofillMonitor","_platform","inject","Platform","_ngZone","NgZone","_renderer","RendererFactory2","createRenderer","_styleLoader","_CdkPrivateStyleLoader","_monitoredElements","Map","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","Service","CdkAutofill","_elementRef","ElementRef","_autofillMonitor","cdkAutofill","EventEmitter","ngOnInit","subscribe","emit","Directive","isStandalone","selector","outputs","ngImport","args","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","constructor","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","host","attributes","listeners","classAttribute","exportAs","Input","alias","transform","TextFieldModule","NgModule","ɵmod","ɵɵngDeclareNgModule","exports","imports"],"mappings":"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"}