var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  return c > 3 && r && Object.defineProperty(target, key, r), r;
};
import { Component, Host, h, Element, Prop, Listen, Watch, Event, State } from '@stencil/core';
import { MaxStringLengthRule } from '../../helpers/validator/rules/max-string-length-rule';
import { MinStringLengthRule } from '../../helpers/validator/rules/min-string-length-rule';
import { RequiredFieldRule } from '../../helpers/validator/rules/required-field-rule';
import { sanitizeVegaComponent } from '../../utils/component';
import { InjectVegaGlobalSlimmer, InjectVegaSlimmer, methodPlaceholder, } from 'vega-slimmer/core';
import { FormFieldControllerSlimmer } from '../../helpers/slimmers/form-field-controller-slimmer';
import { FORM_ELEMENT_VALUE_CHANGE } from '../../helpers/change-manager/subject/static-subject/static-subject-title';
import ChangeManager from '../../helpers/change-manager/change-manager';
import { createEventEmitSlimmer, } from '../../helpers/event-manager/slimmers/event-emit-slimmer';
import { VegaBlur, VegaChange, VegaLabelButtonClick, } from '../../helpers/event-manager/event-id/vega-event-id';
import { ChildNodesEventPreventSlimmer } from '../../helpers/event-manager/slimmers/child-nodes-event-prevent-slimmer';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
import { VegaTextareaRuntimeMetricsPayloadDefinition } from '../../constants/runtime-metrics-payload-definition/vega-textarea/runtime-metrics-payload-definition';
import { DomNodeSubjectObserverFactory } from '../../helpers/change-manager/subject/dom-node-subject/dom-node-subject-observer-factory';
/**
 * @vegaVersion 1.11.0
 */
export class VegaTextarea {
  constructor() {
    this.globalSlimmers = {};
    this.formFieldController = new FormFieldControllerSlimmer({
      propertyRules: [
        {
          propertyName: 'required',
          ruleFactory: (isRequired) => (isRequired ? new RequiredFieldRule() : null),
        },
        {
          propertyName: 'minLength',
          ruleFactory: (minLength) => minLength ? new MinStringLengthRule({ minStrLength: minLength }) : null,
        },
        {
          propertyName: 'maxLength',
          ruleFactory: (maxLength) => maxLength ? new MaxStringLengthRule({ maxStrLength: maxLength }) : null,
        },
      ],
      validationRulesName: 'validationRules',
      defaultValue: '',
      attributeGetter: (propertyName) => this[propertyName],
      inputContainerGetter: () => this.inputContainerRef,
      touchableAreaGetter: () => [this.textareaRef],
    });
    this.changeEventEmitter = createEventEmitSlimmer(VegaTextarea, VegaChange);
    this.blurEventEmitter = createEventEmitSlimmer(VegaTextarea, VegaBlur);
    this.labelButtonClickEventEmitter = createEventEmitSlimmer(VegaTextarea, VegaLabelButtonClick);
    this.textareaEventPrevent = new ChildNodesEventPreventSlimmer([VegaChange], () => this.inputContainerRef);
    this.vegaComponentUsageRuntimeMetricsSlimmer = new VegaComponentUsageRuntimeMetricsSlimmer(VegaTextareaRuntimeMetricsPayloadDefinition);
    this.currentCharCount = 0;
    /**
     * Specifies a placeholder string that displays as a temporary hint or
     * example within the text area. The placeholder text is shown when the
     * field is empty and disappears once the user begins typing.
     *
     * Use this to indicate the expected format or content of the input,
     * for example `'Enter your comments here...'`.
     *
     * @default ''
     * @vegaVersion 1.11.0
     */
    this.placeholder = '';
    /**
     * Provides a supplementary helper message displayed below the text area
     * that assists users in understanding the expected value or format.
     *
     * The hint is visible at all times (not just on focus) and is typically
     * used for guidance such as character requirements or formatting rules.
     *
     * @default ''
     * @vegaVersion 1.11.0
     */
    this.hint = '';
    /**
     * Specifies whether the text area is disabled. When `true`, the text area
     * is non-interactive — the user cannot type, focus, or select the field.
     * The disabled state is reflected as an HTML attribute for CSS styling.
     *
     * @default false
     * @vegaVersion 1.11.0
     */
    this.disabled = false;
    /**
     * Specifies the visible label text rendered above the text area. The label
     * helps identify the purpose or content expected within the field and also
     * serves as the accessible `aria-label` for screen readers when present.
     *
     * Clicking the label will focus the text area.
     *
     * @default ''
     * @vegaVersion 1.11.0
     */
    this.label = '';
    /**
     * Configuration object for an optional suffix button rendered beside the
     * field label. Use this to provide an inline action (e.g., a help or info
     * button) next to the label text.
     *
     * When the button is clicked, the `vegaLabelButtonClick` event is emitted.
     * Set to `null` to hide the suffix button.
     *
     * @default null
     * @vegaVersion 2.68.0
     */
    this.labelSuffixButtonConfig = null;
    /**
     * Determines whether to display a live character counter below the text area.
     *
     * When `true`, the counter shows the current character count. If `maxLength`
     * is also set, the counter displays in the format `current/max` and visually
     * highlights when the limit is exceeded.
     *
     * @default false
     * @vegaVersion 1.11.0
     */
    this.showCounter = false;
    /**
     * The current value (content) of the text area field.
     *
     * This property is mutable and will be updated programmatically when the
     * user types into the text area. It can also be set externally to
     * pre-populate or reset the field. Changes to this property trigger the
     * `vegaChange` event and update the character counter if `showCounter`
     * is enabled. Supports two-way binding in framework wrappers.
     *
     * @default ''
     * @vegaVersion 1.11.0
     */
    /* eslint-disable-next-line @stencil/strict-mutable */
    this.value = '';
    /**
     * Reflects the current validation status of the text area.
     *
     * - `true` — the field value passes all validation rules.
     * - `false` — one or more validation rules have failed.
     * - `null` — the field has not been validated yet (initial state).
     *
     * This property is mutable: it is updated automatically when
     * `autoValidation` is enabled, but can also be set manually to override
     * the validation state. The value is reflected as an HTML attribute.
     *
     * @default null
     * @vegaVersion 1.11.0
     */
    /* eslint-disable-next-line @stencil/strict-mutable */
    this.isValid = null;
    /**
     * Determines whether the text area should be validated automatically as the
     * user types. When `true`, validation rules (including `required`, `minLength`,
     * `maxLength`, and custom `validationRules`) are evaluated on blur and the
     * `isValid` property is updated accordingly.
     *
     * Set to `false` to handle validation manually.
     *
     * @default true
     * @vegaVersion 1.11.0
     */
    this.autoValidation = true;
    /**
     * Determines whether the text area must have a non-empty value before the
     * form can be submitted. When `true`, a required-field indicator is shown
     * on the label and the built-in `RequiredFieldRule` is applied during
     * validation.
     *
     * @default false
     * @vegaVersion 1.11.0
     */
    /* eslint-disable-next-line @stencil/strict-mutable */
    this.required = false;
    /**
     * Specifies the maximum number of characters (UTF-16 code units) that the
     * user can enter in the text area. The native `maxlength` attribute is
     * applied to the inner `<textarea>` element.
     *
     * When `showCounter` is `true`, the maximum value is displayed alongside
     * the current character count (e.g., `42/200`). Exceeding this limit
     * triggers a visual warning on the counter and fails the
     * `MaxStringLengthRule` during validation.
     *
     * Set to `null` to allow unlimited input.
     *
     * @default null
     * @vegaVersion 1.11.0
     */
    this.maxLength = null;
    /**
     * Specifies the minimum number of characters (UTF-16 code units) that the
     * user must enter in the text area for the value to be considered valid.
     * The native `minlength` attribute is applied to the inner `<textarea>`
     * element.
     *
     * When set, the `MinStringLengthRule` is applied during validation. Set to
     * `null` to impose no minimum length.
     *
     * @default null
     * @vegaVersion 1.11.0
     */
    this.minLength = null;
    /**
     * Determines whether the user can vertically resize the text area by
     * dragging its bottom-right corner. When `false`, the resize handle is
     * hidden via CSS and the text area height is fixed.
     *
     * @default true
     * @vegaVersion 2.19.0
     */
    this.resizable = true;
    /**
     * Specifies the number of visible text lines in the text area, controlling
     * its initial height. Accepts integers ≥ 2. For optimal display, values
     * below 2 are internally adjusted to 4 rows.
     *
     * @default 5
     * @vegaVersion 2.63.0
     */
    this.rows = 5;
    /**
     * An array of custom validation rules applied to the text area in addition
     * to the built-in rules (`RequiredFieldRule`, `MinStringLengthRule`,
     * `MaxStringLengthRule`). Each rule must implement the
     * `FormFieldValidationRule` interface.
     *
     * Rules are evaluated in order when `autoValidation` is enabled or when
     * validation is triggered programmatically.
     *
     * @default []
     * @vegaVersion 1.11.0
     */
    this.validationRules = [];
    this.renderTextareaContainer = () => {
      return (h("div", { class: { 'vega-textarea-container': true, 'vega-textarea-not-resizable': !this.resizable }, ref: (e) => (this.inputContainerRef = e) },
        h("textarea", { rows: this.rows >= 2 ? this.rows - 1 : 4, placeholder: this.placeholder, disabled: this.disabled, required: this.required, ref: this.setTextareaRef, maxLength: this.maxLength, minLength: this.minLength, value: this.value, onBlur: this.handleTextareaBlur, "aria-label": this.label || 'No label defined' }),
        this.showCounter && this.renderCharacterCounter()));
    };
    this.renderHintMessage = () => {
      return h("vega-text", null, this.hint);
    };
    this.renderCharacterCounter = () => {
      return (h("div", { class: {
          'vega-textarea-counter': true,
          'counter-exceed-max-length': this.isExceedMaxLength(this.value, this.maxLength),
        } },
        h("span", { id: "current" }, this.currentCharCount),
        this.maxLength != null && this.renderMaxLengthNumber()));
    };
    this.renderMaxLengthNumber = () => {
      return h("span", { id: "maximum" },
        "/",
        this.maxLength);
    };
    this.setTextareaRef = (textareaRef) => {
      if (textareaRef && this.textareaRef !== textareaRef) {
        this.textareaRef = textareaRef;
      }
    };
    /**
     * The below method is e2e-test covered in
     * @see{module:vega-textarea-focus-e2e}
     */
    /* istanbul ignore next */
    this.inputFocus = () => {
      this.textareaRef.focus();
    };
    this.handleTextareaBlur = (e) => {
      this.blurEventEmitter.emit(undefined, e);
    };
    this.isExceedMaxLength = (value, maxLength) => {
      return maxLength != null ? value.length > maxLength : false;
    };
    this.handleLabelButtonClick = () => {
      this.labelButtonClickEventEmitter.emit();
    };
  }
  watchValue(value) {
    this.changeEventEmitter.emit(value);
    if (this.textareaRef.value !== this.value) {
      this.textareaRef.value = this.value;
    }
    if (value) {
      this.currentCharCount = value.length;
    }
    ChangeManager.notify(FORM_ELEMENT_VALUE_CHANGE, {
      host: this.host,
      detail: value,
    });
  }
  watchValidationRules() {
    methodPlaceholder();
  }
  componentWillLoad() {
    this.currentCharCount = this.value.length;
  }
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-textarea-on-value-input}
   */
  /* istanbul ignore next */
  handleValueTextarea() {
    this.value = this.textareaRef.value;
    this.currentCharCount = this.value.length;
  }
  render() {
    return sanitizeVegaComponent(h(Host, { class: {
        disabled: this.disabled,
      } },
      this.renderLabelDom(),
      this.renderTextareaContainer(),
      this.hint && this.renderHintMessage()), this.host);
  }
  renderLabelDom() {
    return (h("vega-field-label", { onClick: this.inputFocus, "is-field-required": this.required, disabled: this.disabled, label: this.label, suffixButtonConfig: this.labelSuffixButtonConfig, ref: (node) => {
        DomNodeSubjectObserverFactory.addUniqueObserverToNode(node, VegaLabelButtonClick, this.handleLabelButtonClick);
      } }));
  }
  static get is() { return "vega-textarea"; }
  static get encapsulation() { return "shadow"; }
  static get originalStyleUrls() { return {
    "$": ["vega-textarea.scss"]
  }; }
  static get styleUrls() { return {
    "$": ["vega-textarea.css"]
  }; }
  static get properties() { return {
    "placeholder": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "''"
          }, {
            "name": "vegaVersion",
            "text": "1.11.0"
          }],
        "text": "Specifies a placeholder string that displays as a temporary hint or\nexample within the text area. The placeholder text is shown when the\nfield is empty and disappears once the user begins typing.\n\nUse this to indicate the expected format or content of the input,\nfor example `'Enter your comments here...'`."
      },
      "attribute": "placeholder",
      "reflect": false,
      "defaultValue": "''"
    },
    "hint": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "''"
          }, {
            "name": "vegaVersion",
            "text": "1.11.0"
          }],
        "text": "Provides a supplementary helper message displayed below the text area\nthat assists users in understanding the expected value or format.\n\nThe hint is visible at all times (not just on focus) and is typically\nused for guidance such as character requirements or formatting rules."
      },
      "attribute": "hint",
      "reflect": false,
      "defaultValue": "''"
    },
    "disabled": {
      "type": "boolean",
      "mutable": false,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "false"
          }, {
            "name": "vegaVersion",
            "text": "1.11.0"
          }],
        "text": "Specifies whether the text area is disabled. When `true`, the text area\nis non-interactive \u2014 the user cannot type, focus, or select the field.\nThe disabled state is reflected as an HTML attribute for CSS styling."
      },
      "attribute": "disabled",
      "reflect": true,
      "defaultValue": "false"
    },
    "label": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "''"
          }, {
            "name": "vegaVersion",
            "text": "1.11.0"
          }],
        "text": "Specifies the visible label text rendered above the text area. The label\nhelps identify the purpose or content expected within the field and also\nserves as the accessible `aria-label` for screen readers when present.\n\nClicking the label will focus the text area."
      },
      "attribute": "label",
      "reflect": false,
      "defaultValue": "''"
    },
    "labelSuffixButtonConfig": {
      "type": "unknown",
      "mutable": false,
      "complexType": {
        "original": "Nullable<LabelSuffixButtonConfig>",
        "resolved": "{ icon: string; } & Partial<Pick<HTMLVegaTooltipElement, \"size\" | \"trigger\" | \"minWidth\" | \"maxWidth\" | \"text\" | \"placement\" | \"alignment\">>",
        "references": {
          "Nullable": {
            "location": "import",
            "path": "../../types/general"
          },
          "LabelSuffixButtonConfig": {
            "location": "import",
            "path": "../vega-field-label/types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "null"
          }, {
            "name": "vegaVersion",
            "text": "2.68.0"
          }],
        "text": "Configuration object for an optional suffix button rendered beside the\nfield label. Use this to provide an inline action (e.g., a help or info\nbutton) next to the label text.\n\nWhen the button is clicked, the `vegaLabelButtonClick` event is emitted.\nSet to `null` to hide the suffix button."
      },
      "defaultValue": "null"
    },
    "showCounter": {
      "type": "boolean",
      "mutable": false,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "false"
          }, {
            "name": "vegaVersion",
            "text": "1.11.0"
          }],
        "text": "Determines whether to display a live character counter below the text area.\n\nWhen `true`, the counter shows the current character count. If `maxLength`\nis also set, the counter displays in the format `current/max` and visually\nhighlights when the limit is exceeded."
      },
      "attribute": "show-counter",
      "reflect": false,
      "defaultValue": "false"
    },
    "value": {
      "type": "string",
      "mutable": true,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "''"
          }, {
            "name": "vegaVersion",
            "text": "1.11.0"
          }],
        "text": "The current value (content) of the text area field.\n\nThis property is mutable and will be updated programmatically when the\nuser types into the text area. It can also be set externally to\npre-populate or reset the field. Changes to this property trigger the\n`vegaChange` event and update the character counter if `showCounter`\nis enabled. Supports two-way binding in framework wrappers."
      },
      "attribute": "value",
      "reflect": true,
      "defaultValue": "''"
    },
    "isValid": {
      "type": "boolean",
      "mutable": true,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "null"
          }, {
            "name": "vegaVersion",
            "text": "1.11.0"
          }],
        "text": "Reflects the current validation status of the text area.\n\n- `true` \u2014 the field value passes all validation rules.\n- `false` \u2014 one or more validation rules have failed.\n- `null` \u2014 the field has not been validated yet (initial state).\n\nThis property is mutable: it is updated automatically when\n`autoValidation` is enabled, but can also be set manually to override\nthe validation state. The value is reflected as an HTML attribute."
      },
      "attribute": "is-valid",
      "reflect": true,
      "defaultValue": "null"
    },
    "autoValidation": {
      "type": "boolean",
      "mutable": false,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "true"
          }, {
            "name": "vegaVersion",
            "text": "1.11.0"
          }],
        "text": "Determines whether the text area should be validated automatically as the\nuser types. When `true`, validation rules (including `required`, `minLength`,\n`maxLength`, and custom `validationRules`) are evaluated on blur and the\n`isValid` property is updated accordingly.\n\nSet to `false` to handle validation manually."
      },
      "attribute": "auto-validation",
      "reflect": true,
      "defaultValue": "true"
    },
    "required": {
      "type": "boolean",
      "mutable": true,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "false"
          }, {
            "name": "vegaVersion",
            "text": "1.11.0"
          }],
        "text": "Determines whether the text area must have a non-empty value before the\nform can be submitted. When `true`, a required-field indicator is shown\non the label and the built-in `RequiredFieldRule` is applied during\nvalidation."
      },
      "attribute": "required",
      "reflect": true,
      "defaultValue": "false"
    },
    "maxLength": {
      "type": "number",
      "mutable": false,
      "complexType": {
        "original": "number",
        "resolved": "number",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "null"
          }, {
            "name": "vegaVersion",
            "text": "1.11.0"
          }],
        "text": "Specifies the maximum number of characters (UTF-16 code units) that the\nuser can enter in the text area. The native `maxlength` attribute is\napplied to the inner `<textarea>` element.\n\nWhen `showCounter` is `true`, the maximum value is displayed alongside\nthe current character count (e.g., `42/200`). Exceeding this limit\ntriggers a visual warning on the counter and fails the\n`MaxStringLengthRule` during validation.\n\nSet to `null` to allow unlimited input."
      },
      "attribute": "max-length",
      "reflect": true,
      "defaultValue": "null"
    },
    "minLength": {
      "type": "number",
      "mutable": false,
      "complexType": {
        "original": "number",
        "resolved": "number",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "null"
          }, {
            "name": "vegaVersion",
            "text": "1.11.0"
          }],
        "text": "Specifies the minimum number of characters (UTF-16 code units) that the\nuser must enter in the text area for the value to be considered valid.\nThe native `minlength` attribute is applied to the inner `<textarea>`\nelement.\n\nWhen set, the `MinStringLengthRule` is applied during validation. Set to\n`null` to impose no minimum length."
      },
      "attribute": "min-length",
      "reflect": true,
      "defaultValue": "null"
    },
    "resizable": {
      "type": "boolean",
      "mutable": false,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "true"
          }, {
            "name": "vegaVersion",
            "text": "2.19.0"
          }],
        "text": "Determines whether the user can vertically resize the text area by\ndragging its bottom-right corner. When `false`, the resize handle is\nhidden via CSS and the text area height is fixed."
      },
      "attribute": "resizable",
      "reflect": false,
      "defaultValue": "true"
    },
    "rows": {
      "type": "number",
      "mutable": false,
      "complexType": {
        "original": "number",
        "resolved": "number",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "5"
          }, {
            "name": "vegaVersion",
            "text": "2.63.0"
          }],
        "text": "Specifies the number of visible text lines in the text area, controlling\nits initial height. Accepts integers \u2265 2. For optimal display, values\nbelow 2 are internally adjusted to 4 rows."
      },
      "attribute": "rows",
      "reflect": false,
      "defaultValue": "5"
    },
    "validationRules": {
      "type": "unknown",
      "mutable": false,
      "complexType": {
        "original": "FormFieldValidationRule<unknown>[]",
        "resolved": "FormFieldValidationRule<unknown>[]",
        "references": {
          "FormFieldValidationRule": {
            "location": "import",
            "path": "../../helpers/validator/rules/form-field-validation-rule"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "[]"
          }, {
            "name": "vegaVersion",
            "text": "1.11.0"
          }],
        "text": "An array of custom validation rules applied to the text area in addition\nto the built-in rules (`RequiredFieldRule`, `MinStringLengthRule`,\n`MaxStringLengthRule`). Each rule must implement the\n`FormFieldValidationRule` interface.\n\nRules are evaluated in order when `autoValidation` is enabled or when\nvalidation is triggered programmatically."
      },
      "defaultValue": "[]"
    }
  }; }
  static get states() { return {
    "currentCharCount": {}
  }; }
  static get events() { return [{
      "method": "vegaChange",
      "name": "vegaChange",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventDetail",
            "text": "string \u2014 The updated text area value."
          }, {
            "name": "vegaVersion",
            "text": "1.11.0"
          }],
        "text": "Fired whenever the text area value changes, whether by user input or\nprogrammatic update of the `value` property. This is the primary event\nfor reacting to content changes and implementing two-way binding."
      },
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      }
    }, {
      "method": "change",
      "name": "change",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventDetail",
            "text": "string \u2014 The updated text area value."
          }, {
            "name": "eventSemantics",
            "text": "namespace:native"
          }, {
            "name": "vegaVersion",
            "text": "2.0.0"
          }],
        "text": "Native-namespace mirror of `vegaChange`. Fired whenever the text area\nvalue changes. Provided for compatibility with standard DOM event\nlisteners."
      },
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      }
    }, {
      "method": "vegaBlur",
      "name": "vegaBlur",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventDetail",
            "text": "undefined \u2014 No payload; signals the blur occurrence only."
          }, {
            "name": "vegaVersion",
            "text": "1.11.0"
          }],
        "text": "Fired when the inner `<textarea>` element loses focus (blur). Use this\nevent to trigger validation or save actions when the user leaves the\ntext area."
      },
      "complexType": {
        "original": "undefined",
        "resolved": "undefined",
        "references": {}
      }
    }, {
      "method": "blur",
      "name": "blur",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventDetail",
            "text": "undefined \u2014 No payload; signals the blur occurrence only."
          }, {
            "name": "eventSemantics",
            "text": "namespace:native"
          }, {
            "name": "vegaVersion",
            "text": "2.0.0"
          }],
        "text": "Native-namespace mirror of `vegaBlur`. Fired when the inner `<textarea>`\nelement loses focus. Provided for compatibility with standard DOM event\nlisteners."
      },
      "complexType": {
        "original": "undefined",
        "resolved": "undefined",
        "references": {}
      }
    }, {
      "method": "vegaLabelButtonClick",
      "name": "vegaLabelButtonClick",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventDetail",
            "text": "void"
          }, {
            "name": "vegaVersion",
            "text": "2.68.0"
          }],
        "text": "Fired when the suffix button configured via `labelSuffixButtonConfig` is\nclicked. Listen for this event to handle inline label actions such as\nopening a help dialog or toggling additional information."
      },
      "complexType": {
        "original": "any",
        "resolved": "any",
        "references": {}
      }
    }, {
      "method": "labelButtonClick",
      "name": "labelButtonClick",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventDetail",
            "text": "void"
          }, {
            "name": "eventSemantics",
            "text": "namespace:native"
          }, {
            "name": "vegaVersion",
            "text": "2.68.0"
          }],
        "text": "Native-namespace mirror of `vegaLabelButtonClick`. Fired when the label\nsuffix button is clicked. Provided for compatibility with standard DOM\nevent listeners."
      },
      "complexType": {
        "original": "any",
        "resolved": "any",
        "references": {}
      }
    }]; }
  static get elementRef() { return "host"; }
  static get watchers() { return [{
      "propName": "value",
      "methodName": "watchValue"
    }, {
      "propName": "validationRules",
      "methodName": "watchValidationRules"
    }]; }
  static get listeners() { return [{
      "name": "input",
      "method": "handleValueTextarea",
      "target": undefined,
      "capture": false,
      "passive": false
    }]; }
}
__decorate([
  InjectVegaGlobalSlimmer()
], VegaTextarea.prototype, "globalSlimmers", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaTextarea.prototype, "formFieldController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaTextarea.prototype, "changeEventEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaTextarea.prototype, "blurEventEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaTextarea.prototype, "labelButtonClickEventEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaTextarea.prototype, "textareaEventPrevent", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaTextarea.prototype, "vegaComponentUsageRuntimeMetricsSlimmer", void 0);
