{"version":3,"file":"eui-components-eui-textarea.mjs","sources":["../../eui-textarea/auto-resize.directive.ts","../../eui-textarea/eui-textarea.component.ts","../../eui-textarea/index.ts","../../eui-textarea/eui-components-eui-textarea.ts"],"sourcesContent":["/* eslint-disable @angular-eslint/directive-selector */\nimport {\n\tDirective,\n\tOnInit,\n\tOnDestroy,\n\tElementRef,\n\tHostListener,\n\tAfterViewInit,\n\tRenderer2,\n\tbooleanAttribute,\n\tnumberAttribute,\n\tinject,\n\tinput,\n\teffect,\n} from '@angular/core';\nimport { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, startWith, takeUntil } from 'rxjs/operators';\nimport { NgControl } from '@angular/forms';\n\n/**\n * A directive that automatically adjusts the height of a textarea based on its content.\n *\n * @directive\n * @selector textarea[autoResize]\n * @description\n * The AutoResizeDirective automatically adjusts the height of a textarea element as the user types,\n * ensuring that all content is visible without requiring manual resizing or scrolling.\n * It supports minimum and maximum row constraints and can be enabled/disabled dynamically.\n *\n * @example\n * ```html\n * <textarea autoResize [minRows]=\"2\" [maxRows]=\"5\"></textarea>\n * ```\n */\n@Directive({\n    selector: 'textarea[autoResize]',\n})\nexport class AutoResizeDirective implements OnInit, AfterViewInit, OnDestroy {\n    /**\n     * @description\n     * Controls whether the auto-resize functionality is enabled.\n     * When true, the textarea will automatically adjust its height based on content.\n     * When false, the textarea will behave normally.\n     *\n     * @default true\n     */\n\tautoResize = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n    /**\n     * @description\n     * Sets the minimum number of rows for the textarea.\n     * This value determines the initial height of the textarea.\n     *\n     * @param minRows - The minimum number of rows to display\n\t * @default 1\n     */\n\tminRows = input<number, NumberInput>(1, { transform: numberAttribute });\n    /**\n     * @description\n     * Sets the maximum number of rows for the textarea.\n     * When set to a value greater than 0, the textarea will not grow beyond this number of rows\n     * and will show scrollbars if necessary.\n     * When set to 0, there is no maximum limit.\n     *\n     * @default 0\n     */\n\tmaxRows = input<number, NumberInput>(0, { transform: numberAttribute });\n\n    protected el = inject(ElementRef);\n    protected renderer = inject(Renderer2);\n    protected control = inject(NgControl, { optional: true })!;\n    private destroy$: Subject<boolean> = new Subject<boolean>();\n    private observer: MutationObserver;\n\n\tconstructor() {\n\t\t/**\n\t\t * Handles changes to the directive's autoResize input property.\n\t\t * Updates the textarea's appearance and behavior accordingly.\n\t\t */\n\t\teffect(() => {\n\t\t\tconst enable = this.autoResize();\n\t\t\tthis.renderer.setProperty(this.el.nativeElement, 'rows', this.minRows());\n\t\t\tthis.renderer.setStyle(this.el.nativeElement, 'overflow', enable ? 'hidden' : '');\n\t\t\tthis.renderer.setStyle(this.el.nativeElement, 'resize', enable ? 'none' : '');\n\t\t\tif (enable) {\n\t\t\t\tthis.resize();\n\t\t\t}\n\t\t});\n    }\n\n    /**\n     * Event handler for input events on the textarea.\n     * Triggers the resize calculation when the content changes.\n     *\n     * @internal\n     */\n    @HostListener('input')\n    onInput(): void {\n        this.resize();\n    }\n\n    /**\n     * Initializes the directive by setting up window resize event handling\n     * and mutation observer for readonly attribute changes.\n     *\n     * @internal\n     */\n    ngOnInit(): void {\n        fromEvent(window, 'resize')\n            .pipe(takeUntil(this.destroy$), debounceTime(300))\n            .subscribe(() => this.resize());\n\n        // Create an observer instance linked to the callback function\n        this.observer = new MutationObserver(this.readonlyMutationObserver.bind(this));\n\n        // Start observing the target node for configured mutations\n        this.observer.observe(this.el.nativeElement, { attributes: true });\n    }\n\n    /**\n     * Performs initial resize after view initialization and sets up form control value change handling if applicable.\n     *\n     * @internal\n     */\n    ngAfterViewInit(): void {\n        if (this.autoResize()) {\n            if (this.control) {\n                this.handleFormControlChanges();\n            } else {\n                this.resize();\n            }\n        }\n    }\n\n    /**\n     * Cleans up subscriptions and disconnects observers when the directive is destroyed.\n     *\n     * @internal\n     */\n    ngOnDestroy(): void {\n        this.destroy$.complete();\n        this.destroy$.unsubscribe();\n        this.observer.disconnect();\n    }\n\n    /**\n     * Calculates and sets the appropriate height for the textarea based on its content.\n     * This method creates a temporary clone of the textarea to measure the required height,\n     * taking into account minRows and maxRows constraints.\n     *\n     * The calculation process:\n     * 1. Creates a hidden clone of the textarea\n     * 2. Sets the clone's width to match the original\n     * 3. Measures the required height based on content\n     * 4. Applies maxRows constraint if specified\n     * 5. Updates the original textarea's height\n     *\n     * @public\n     */\n    public resize(): void {\n        if (this.autoResize()) {\n            // clone element\n            const clone = this.el.nativeElement.cloneNode(true);\n            const parent = this.el.nativeElement.parentNode;\n            clone.style.width = this.el.nativeElement.offsetWidth + 'px';\n            clone.style.visibility = 'hidden';\n            clone.style.position = 'absolute';\n            clone.textContent = this.el.nativeElement.value;\n            parent.appendChild(clone);\n            clone.style['overflow-y'] = 'hidden';\n            clone.style.height = 'auto';\n            const cloneHeight = clone.scrollHeight;\n\n            this.renderer.setStyle(clone, 'height', cloneHeight);\n            // calculate height\n            const { offsetHeight } = clone;\n            let { scrollHeight } = clone;\n            // Enforce maxRows limit if set\n            if (this.maxRows() > 0) {\n                const lineHeight = parseInt(getComputedStyle(clone).lineHeight, 10);\n                const maxHeight = lineHeight * this.maxRows();\n                scrollHeight = Math.min(scrollHeight, maxHeight);\n                if(scrollHeight >= maxHeight) {\n                    this.renderer.removeStyle(this.el.nativeElement, 'overflow'); // Restore overflow behavior\n                } else {\n                    this.renderer.setStyle(this.el.nativeElement, 'overflow', 'hidden'); // Hide scrollbars during adjustment\n                }\n            }\n            let height = offsetHeight > scrollHeight ? offsetHeight : scrollHeight;\n            height = height <= 0 ? 'auto' : `${height}px`;\n            // remove clone\n            parent.removeChild(clone);\n            // set height\n            this.renderer.setStyle(this.el.nativeElement, 'height', height);\n        }\n    }\n\n    /**\n     * Sets up subscription to form control value changes to trigger resize when the value\n     * is changed programmatically through the form control.\n     *\n     * @protected\n     */\n    protected handleFormControlChanges(): void {\n        // in case value changed manually through control, call resize()\n        // startWith is being used to cause resize to be called in case of late subscription after value has changed\n        this.control.valueChanges.pipe(takeUntil(this.destroy$), startWith('')).subscribe(() => this.resize());\n    }\n\n    /**\n     * Mutation observer callback that handles changes to the readonly attribute\n     * and triggers resize when necessary.\n     *\n     * @param mutationsList - List of mutations that occurred\n     * @private\n     */\n    private readonlyMutationObserver(mutationsList: MutationRecord[]): void {\n        // Use traditional 'for loops' for IE 11\n        for (const mutation of mutationsList) {\n            if (mutation.type === 'attributes' && mutation.attributeName === 'readonly') {\n                this.resize();\n            }\n        }\n    }\n}\n","import {\n\tComponent,\n\tElementRef,\n\tHostListener,\n\tOnInit,\n\tRenderer2,\n\tViewEncapsulation,\n\tOnDestroy,\n\tDoCheck,\n\tInjector,\n\tforwardRef,\n\tbooleanAttribute,\n\tsignal,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n\tlinkedSignal,\n} from '@angular/core';\nimport {\n    NG_VALUE_ACCESSOR,\n    ControlValueAccessor,\n    NgControl,\n    FormControl,\n    FormControlDirective,\n    FormGroupDirective,\n    FormControlName,\n} from '@angular/forms';\nimport { BaseStatesDirective } from '@eui/components/shared';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * @description\n * Multiline text input field for entering longer text content.\n * `euiTextArea` provides an enhanced textarea component with full Angular forms integration, validation state handling, readonly display mode, and optional automatic height adjustment.\n * It is designed to be used as an attribute selector on a `textarea` element.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <!-- Simple textarea -->\n * <textarea euiTextArea placeholder=\"Enter description\"></textarea>\n *\n * <!-- With reactive forms -->\n * <form [formGroup]=\"form\">\n *   <textarea euiTextArea formControlName=\"description\"></textarea>\n * </form>\n *\n * <!-- Readonly mode -->\n * <textarea euiTextArea [readonly]=\"true\" [value]=\"content\"></textarea>\n * ```\n *\n * ```typescript\n * form = new FormGroup({\n *   description: new FormControl('', [Validators.required, Validators.maxLength(500)])\n * });\n * ```\n *\n * ### Accessibility\n * - Associate with label using for/id attributes\n * - Provide placeholder text as guidance, not as label replacement\n * - Use aria-describedby for helper text or error messages\n * - Ensure sufficient color contrast in all states\n *\n * ### Notes\n * - Automatically tracks number of text rows via rowsChange event\n * - Validation state (invalid/danger) syncs with form control\n * - Readonly mode displays content in a styled container\n * - Disabled state prevents all user interaction\n */\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: 'textarea[euiTextArea]',\n    styleUrl: './eui-textarea.scss',\n    template: '<ng-content />',\n    encapsulation: ViewEncapsulation.None,\n    providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EuiTextareaComponent), multi: true }],\n    hostDirectives: [\n        {\n            directive: BaseStatesDirective,\n            inputs: ['euiDisabled', 'euiDanger'],\n        },\n    ],\n\thost: {\n\t\t'[attr.id]': 'id()',\n\t\t'[attr.data-e2e]': 'e2eAttr()',\n\t\t'[attr.disabled]': 'innerDisabled() ? true : null',\n\t\t'[class]': 'class',\n\t},\n})\nexport class EuiTextareaComponent implements OnInit, OnDestroy, DoCheck, ControlValueAccessor {\n    /**\n     * Static counter used to generate unique IDs for textarea instances\n     * @static\n     */\n    static idCounter = 0;\n\n    /**\n     * Event emitter that fires when the number of text rows in the textarea changes\n     */\n    rowsChange = output<number>();\n\n    public get class(): string {\n\t\treturn [\n\t\t\tthis.isInvalid() ? 'eui-textarea--invalid' : '',\n\t\t\tthis.baseStatesDirective.getCssClasses('eui-textarea'),\n\t\t].join(' ').trim()\n\t}\n\n    /**\n     * The disabled state of the textarea\n     * @description When set to true, prevents user interaction with the textarea.\n     * This can be controlled either directly or through form control binding.\n     */\n    disabled = input<boolean, BooleanInput>(undefined, { transform: booleanAttribute });\n\n    /**\n     * The readonly state of the textarea\n     * @description When true, displays the textarea content in a read-only format\n     * with special styling.\n     */\n\treadonly = input<boolean, BooleanInput>(undefined, { transform: booleanAttribute });\n\t/**\n     * Unique identifier for the textarea\n     * @default eui-textarea_{increment}\n     */\n\tid = input<string>(`eui-textarea_${EuiTextareaComponent.idCounter++}`);\n\n    /**\n     * Flag indicating if the textarea is in an invalid state\n     * @description When true, applies error styling to the textarea.\n     * This can be set manually or automatically through form validation.\n     */\n    isInvalid = input<boolean, BooleanInput>(undefined, { transform: booleanAttribute });\n\t/**\n     * @description\n     * Data attribute for end-to-end testing\n     * @default eui-textarea\n     */\n\te2eAttr = input<string>('eui-textarea');\n\n    protected hostEl: HTMLTextAreaElement;\n\n    protected hostParentEl: HTMLElement;\n    protected hostWrapperEl: HTMLDivElement;\n    protected valueContainerEl: HTMLDivElement;\n\tprotected innerDisabled = linkedSignal<boolean, boolean>({\n\t\tsource: this.disabled,\n\t\tcomputation: () => this.disabled(),\n\t});\n\tprivate innerIsInvalid = linkedSignal<boolean, boolean>({\n\t\tsource: this.isInvalid,\n\t\tcomputation: () => {\n\t\t\treturn this.isInvalid();\n\t\t},\n\t});\n    private destroy$: Subject<boolean> = new Subject<boolean>();\n    private control: FormControl | NgControl;\n    private rows = signal(0);\n    private injector = inject(Injector);\n    private _elementRef = inject(ElementRef);\n    private _renderer = inject(Renderer2);\n    private baseStatesDirective = inject(BaseStatesDirective);\n\n    constructor() {\n        effect(() => {\n            this.rowsChange.emit(this.rows());\n        });\n\n\t\teffect(() => {\n\t\t\tthis.baseStatesDirective.euiDanger = this.innerIsInvalid();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tthis.baseStatesDirective.euiDisabled = this.innerDisabled();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst readonly = this.readonly();\n\n\t\t\tif(!readonly) {\n\t\t\t\tthis._renderer.removeAttribute(this.hostEl, 'readonly');\n\t\t\t}\n\n\t\t\tif (this.hostWrapperEl && this.valueContainerEl) {\n\t\t\t\tthis.hostWrapperEl.classList.toggle('eui-textarea__wrapper--readonly', !!readonly);\n\t\t\t}\n\t\t\tif (this.hostEl && this.valueContainerEl) {\n\t\t\t\tthis.hostEl.classList.toggle('eui-textarea--readonly', !!readonly);\n\t\t\t\tthis.valueContainerEl.innerText = this.hostEl.value;\n\t\t\t}\n\t\t});\n    }\n\n    /**\n     * Handles input changes in the textarea\n     * @param {string} value - The new value of the textarea\n     * @description Updates the number of rows and triggers change detection\n     */\n    @HostListener('input', ['$any($event.target).value'])\n    public onInputChange(value: string): void {\n        // signal rows update\n        this.rows.set(this.hostEl?.value.split('\\n').length)\n        this.onChange(value);\n    }\n\n    /**\n     * Handles blur events on the textarea\n     * @param {string} value - The current value of the textarea\n     * @description Marks the control as touched and triggers validation\n     */\n    @HostListener('blur', ['$any($event.target).value'])\n    public onBlur(value: string): void {\n        this.onTouched(value);\n    }\n\n    /**\n     * @description\n     * Lifecycle hook that initializes the component. Sets up DOM elements,\n     * initializes form control integration, and establishes state management\n     */\n    ngOnInit(): void {\n        this.hostEl = this._elementRef.nativeElement;\n        this.hostParentEl = this.hostEl.parentElement;\n        this.hostWrapperEl = this.createHostWrapperContainer();\n        this.valueContainerEl = this.createValueContainer();\n\n        this.handleMarkup();\n        // extract the FormControl or NgControl\n        this.control = (this.injector as Injector).get(NgControl, null, { optional: true });\n        if (this.control instanceof FormControlName) {\n            this.control = (this.injector as Injector).get(FormGroupDirective).getControl(this.control);\n        } else if (this.control instanceof FormControlDirective) {\n            this.control = this.control.form as FormControl;\n        }\n        // sets invalid state if control is present\n        if (this.control instanceof FormControl || this.control instanceof NgControl) {\n            this.innerDisabled.set(this.control.disabled);\n            // this.isInvalid = this.control.dirty && this.control.touched && this.control.invalid;\n\t\t\tthis.innerIsInvalid.set(this.control.dirty && this.control.touched && this.control.invalid);\n            if (this.control instanceof FormControl) {\n                this.control.statusChanges.pipe(takeUntil(this.destroy$)).subscribe((status) => {\n\t\t\t\t\tthis.innerIsInvalid.set(status === 'INVALID')\n                    this.innerDisabled.set(status === 'DISABLED');\n                });\n            }\n        }\n    }\n\n    /**\n     * @description\n     * Lifecycle hook that checks for changes in form control state\n     * Updates invalid state based on form control validation\n     */\n    ngDoCheck(): void {\n        if (this.control instanceof NgControl || this.control instanceof FormControl) {\n            // TODO: Delete when https://github.com/angular/angular/issues/30275 is resolved\n\t\t\tthis.innerIsInvalid.set(this.control.invalid && this.control.touched)\n        }\n    }\n\n    /**\n     * @description\n     * Lifecycle hook that cleans up component resources\n     * Completes observables and removes generated DOM elements\n     */\n    ngOnDestroy(): void {\n        this.destroy$.complete();\n        this.destroy$.unsubscribe();\n        // cleanup DOM leftovers\n        if (this.valueContainerEl) {\n            try {\n                this._renderer.removeChild(this.hostEl.parentElement, this.valueContainerEl);\n            } catch (e) {\n                console.error(e);\n            }\n        }\n        if (this.hostWrapperEl) {\n            try {\n                this._renderer.removeChild(this.hostParentEl, this.hostWrapperEl);\n            } catch (e) {\n                console.error(e);\n            }\n        }\n    }\n\n    /**\n     * @description\n     * ControlValueAccessor implementation for writing values\n     * @param {unknown} obj - The value to write to the textarea\n     */\n    writeValue(obj: unknown): void {\n        if (this.valueContainerEl) {\n            this._renderer.setProperty(this.valueContainerEl, 'innerText', obj || null);\n        }\n        this._renderer.setProperty(this._elementRef.nativeElement, 'value', obj || null);\n        // signal rows update\n        this.rows.set(this.hostEl?.value.split('\\n').length)\n    }\n\n    /**\n     * @description\n     * Registers the callback function for change events\n     * @param {Function} fn - The callback function\n     */\n    registerOnChange(fn: () => void): void {\n        this.onChange = fn;\n    }\n\n    /**\n     * @description\n     * Registers the callback function for touched events\n     * @param {Function} fn - The callback function\n     */\n    registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    /**\n     * @description\n     * Sets the disabled state of the textarea\n     * @param {boolean} isDisabled - The disabled state to set\n     */\n    setDisabledState(isDisabled: boolean): void {\n        if (this.hostEl) {\n            this._renderer.setProperty(this.hostEl, 'disabled', isDisabled);\n        }\n    }\n\n    protected onChange(_: unknown): void {\n        this.writeValue(_);\n    }\n\n    protected onTouched(_: unknown): void {\n        if (this.control) {\n\t\t\tthis.innerIsInvalid.set(this.control.invalid);\n        }\n    }\n\n    /**\n     * @description\n     * Creates the container for the textarea element\n     * @returns {HTMLDivElement} The created wrapper container element\n     * @private\n     */\n    private createHostWrapperContainer(): HTMLDivElement {\n        const wrapper = this._renderer.createElement('div');\n        this._renderer.addClass(wrapper, 'eui-textarea__wrapper');\n        if (this.readonly()) {\n            this._renderer.addClass(wrapper, 'eui-textarea__wrapper--readonly');\n            this._renderer.addClass(this.hostEl, 'eui-textarea--readonly');\n        } else {\n            this._renderer.removeClass(wrapper, 'eui-textarea__wrapper--readonly');\n            this._renderer.removeClass(this.hostEl, 'eui-textarea--readonly');\n        }\n\n        return wrapper;\n    }\n\n    /**\n     * @description\n     * Creates the container for displaying readonly values\n     * @returns {HTMLDivElement} The created value container element\n     * @private\n     */\n    private createValueContainer(): HTMLDivElement {\n        const valueContainer = this._renderer.createElement('div');\n        this._renderer.addClass(valueContainer, 'eui-textarea__value-container');\n        this._renderer.setProperty(valueContainer, 'innerText', this.hostEl.value);\n        return valueContainer;\n    }\n\n    /**\n     * @description\n     * Handles the DOM manipulation for the textarea structure\n     * Wraps the textarea in necessary containers and adds\n     * the readonly value display element\n     *\n     * @private\n     */\n    private handleMarkup(): void {\n        if (this.hostParentEl != null) {\n            this.hostParentEl.replaceChild(this.hostWrapperEl, this.hostEl);\n            this.hostWrapperEl.appendChild(this.hostEl);\n            this.hostWrapperEl.appendChild(this.valueContainerEl);\n        }\n    }\n}\n","import { AutoResizeDirective } from './auto-resize.directive';\nimport { EuiTextareaComponent } from './eui-textarea.component';\n\nexport * from './eui-textarea.component';\nexport * from './auto-resize.directive';\n\nexport const EUI_TEXTAREA = [\n    EuiTextareaComponent,\n    AutoResizeDirective,\n] as const; ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}