{"version":3,"file":"primeng-textarea.mjs","sources":["../../src/textarea/style/textareastyle.ts","../../src/textarea/textarea.ts","../../src/textarea/primeng-textarea.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { style } from '@primeuix/styles/textarea';\nimport { BaseStyle } from 'primeng/base';\n\nconst classes = {\n    root: ({ instance }) => [\n        'p-textarea p-component',\n        {\n            'p-filled': instance.$filled(),\n            'p-textarea-resizable ': instance.autoResize(),\n            'p-variant-filled': instance.$variant() === 'filled',\n            'p-textarea-fluid': instance.hasFluid,\n            'p-inputfield-sm p-textarea-sm': instance.pSize() === 'small',\n            'p-textarea-lg p-inputfield-lg': instance.pSize() === 'large',\n            'p-invalid': instance.invalid()\n        }\n    ]\n};\n\n@Injectable()\nexport class TextareaStyle extends BaseStyle {\n    name = 'textarea';\n\n    style = style;\n\n    classes = classes;\n}\n\n/**\n *\n * Textarea is a multi-line text input element.\n *\n * [Live Demo](https://www.primeng.org/textarea/)\n *\n * @module textareastyle\n *\n */\nexport enum TextareaClasses {\n    /**\n     * Class name of the root element\n     */\n    root = 'p-textarea'\n}\n\nexport interface TextareaStyle extends BaseStyle {}\n","import { booleanAttribute, computed, DestroyRef, Directive, effect, HostListener, inject, InjectionToken, input, NgModule, output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NgControl } from '@angular/forms';\nimport { PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { BaseModelHolder } from 'primeng/basemodelholder';\nimport { Bind } from 'primeng/bind';\nimport { Fluid } from 'primeng/fluid';\nimport type { InputSize, InputVariant } from 'primeng/types/shared';\nimport type { TextareaPassThrough } from 'primeng/types/textarea';\nimport { TextareaStyle } from './style/textareastyle';\n\nconst TEXTAREA_INSTANCE = new InjectionToken<Textarea>('TEXTAREA_INSTANCE');\n\n/**\n * Textarea adds styling and autoResize functionality to standard textarea element.\n * @group Components\n */\n@Directive({\n    selector: '[pTextarea], [pInputTextarea]',\n    standalone: true,\n    host: {\n        '[class]': \"cx('root')\"\n    },\n    providers: [TextareaStyle, { provide: TEXTAREA_INSTANCE, useExisting: Textarea }, { provide: PARENT_INSTANCE, useExisting: Textarea }],\n    hostDirectives: [Bind]\n})\nexport class Textarea extends BaseModelHolder<TextareaPassThrough> {\n    componentName = 'Textarea';\n\n    bindDirectiveInstance = inject(Bind, { self: true });\n\n    $pcTextarea: Textarea | undefined = inject(TEXTAREA_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n    /**\n     * Used to pass attributes to DOM elements inside the Textarea component.\n     * @defaultValue undefined\n     * @group Props\n     */\n    pTextareaPT = input<TextareaPassThrough>();\n    /**\n     * Indicates whether the component should be rendered without styles.\n     * @defaultValue undefined\n     * @group Props\n     */\n    pTextareaUnstyled = input<boolean | undefined>();\n\n    /**\n     * When present, textarea size changes as being typed.\n     * @group Props\n     */\n    autoResize = input(false, { transform: booleanAttribute });\n    /**\n     * Defines the size of the component.\n     * @group Props\n     */\n    pSize = input<InputSize>();\n    /**\n     * Specifies the input variant of the component.\n     * @defaultValue undefined\n     * @group Props\n     */\n    variant = input<InputVariant>();\n    /**\n     * Spans 100% width of the container when enabled.\n     * @defaultValue undefined\n     * @group Props\n     */\n    fluid = input(false, { transform: booleanAttribute });\n    /**\n     * When present, it specifies that the component should have invalid state style.\n     * @defaultValue false\n     * @group Props\n     */\n    invalid = input(false, { transform: booleanAttribute });\n\n    $variant = computed(() => this.variant() || this.config.inputVariant());\n    /**\n     * Callback to invoke on textarea resize.\n     * @param {(Event | {})} event - Custom resize event.\n     * @group Emits\n     */\n    onResize = output<Event | {}>();\n\n    get hasFluid() {\n        return this.fluid() ?? !!this.pcFluid;\n    }\n\n    _componentStyle = inject(TextareaStyle);\n\n    ngControl = inject(NgControl, { optional: true, self: true });\n\n    pcFluid: Fluid | null = inject(Fluid, { optional: true, host: true, skipSelf: true });\n\n    destroyRef = inject(DestroyRef);\n\n    constructor() {\n        super();\n        effect(() => {\n            const pt = this.pTextareaPT();\n            pt && this.directivePT.set(pt);\n        });\n\n        effect(() => {\n            this.pTextareaUnstyled() && this.directiveUnstyled.set(this.pTextareaUnstyled());\n        });\n    }\n\n    onInit() {\n        if (this.ngControl && (this.ngControl as any).valueChanges) {\n            (this.ngControl as any).valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n                this.updateState();\n            });\n        }\n    }\n\n    onAfterViewInit() {\n        if (this.autoResize()) this.resize();\n\n        this.cd.detectChanges();\n    }\n\n    onAfterViewChecked() {\n        this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n        if (this.autoResize()) {\n            this.resize();\n        }\n        this.writeModelValue(this.ngControl?.value ?? this.el.nativeElement.value);\n    }\n\n    @HostListener('input', ['$event'])\n    onInput(e: Event) {\n        this.writeModelValue((e.target as HTMLTextAreaElement)?.value);\n        this.updateState();\n    }\n\n    resize(event?: Event) {\n        this.el.nativeElement.style.height = 'auto';\n        this.el.nativeElement.style.height = this.el.nativeElement.scrollHeight + 'px';\n\n        if (parseFloat(this.el.nativeElement.style.height) >= parseFloat(this.el.nativeElement.style.maxHeight)) {\n            this.el.nativeElement.style.overflowY = 'scroll';\n            this.el.nativeElement.style.height = this.el.nativeElement.style.maxHeight;\n        } else {\n            this.el.nativeElement.style.overflow = 'hidden';\n        }\n\n        this.onResize.emit(event || {});\n    }\n\n    updateState() {\n        if (this.autoResize()) {\n            this.resize();\n        }\n    }\n}\n\n@NgModule({\n    imports: [Textarea],\n    exports: [Textarea]\n})\nexport class TextareaModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}