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, Prop, Element, Method, Event, Watch, State } from '@stencil/core';
import { EmailFieldRule } from '../../helpers/validator/rules/email-field-rule';
import { MaxNumberRule } from '../../helpers/validator/rules/max-number-rule';
import { MaxStringLengthRule } from '../../helpers/validator/rules/max-string-length-rule';
import { MinNumberRule } from '../../helpers/validator/rules/min-number-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 { ComponentLoadRequired } from '../../decorators/method-decorators/component-load-required';
import { InjectVegaGlobalSlimmer, InjectVegaSlimmer, methodPlaceholder, slotPlaceholder, } from 'vega-slimmer/core';
import { FormFieldControllerSlimmer } from '../../helpers/slimmers/form-field-controller-slimmer';
import { createEventEmitSlimmer, } from '../../helpers/event-manager/slimmers/event-emit-slimmer';
import { VegaBlur, VegaChange, VegaFocus, VegaLabelButtonClick, VegaNativeInputChange, VegaPaste, VegaSuggestionItemClick, } from '../../helpers/event-manager/event-id/vega-event-id';
import { VegaInputCopyPasteController } from './slimmers/controllers/vega-input-copy-paste-controller';
import { VegaInputPrefixSlotRenderer } from './slimmers/renderers/vega-input-prefix-slot-renderer';
import { VegaInputMaskConfigController } from './slimmers/controllers/vega-input-mask-config-controller';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
import { VegaInputRuntimeMetricsPayloadDefinition } from '../../constants/runtime-metrics-payload-definition/vega-input/runtime-metrics-payload-definition';
import { VegaInputCompactWidthController } from './slimmers/controllers/vega-input-compact-width-controller';
import { PageResizeObserverSlimmer } from '../../helpers/slimmers/page-resize-observer-slimmer';
import { VegaInputStateController } from './slimmers/controllers/vega-input-state-controller';
import { VegaInputPasswordEyeRenderer } from './slimmers/renderers/vega-input-password-eye-renderer';
import { VegaInputInputContainerRenderer } from './slimmers/renderers/vega-input-input-container-renderer';
import { VegaInputInputRenderer } from './slimmers/renderers/vega-input-input-renderer';
import { VegaInputRenderer } from './slimmers/renderers/vega-input-renderer';
import { VegaInputValueController } from './slimmers/controllers/vega-input-value-controller';
import { VegaInputInputSuggestionsRenderer } from './slimmers/renderers/vega-input-input-suggestions-renderer';
import { VegaInputRenderModeController } from './slimmers/controllers/vega-input-render-mode-controller';
import { AriaAttributesValueMapper } from '../../helpers/slimmers/mutation-observer/aria-attributes-value-mapper';
import { DataTabIndexValueMapper } from '../../helpers/slimmers/mutation-observer/data-tab-index-value-mapper';
/**
 * @vegaVersion 1.0.5
 */
export class VegaInput {
  constructor() {
    this.globalSlimmers = {};
    this.ariaAttributesValueMapper = new AriaAttributesValueMapper(() => {
      return this.host.shadowRoot.querySelector('input');
    }, {
      'aria-label': {
        dependency: ['data-aria-label', 'label'],
        defaultValue: 'No label defined',
      },
      'aria-hidden': {
        dependency: ['data-aria-hidden'],
        defaultValue: null,
      },
    });
    this.dataTabIndexValueMapper = new DataTabIndexValueMapper(() => {
      return this.host.shadowRoot.querySelector('input');
    });
    this.formFieldController = new FormFieldControllerSlimmer({
      propertyRules: [
        {
          propertyName: 'required',
          ruleFactory: (isRequired) => (isRequired ? new RequiredFieldRule() : null),
        },
        {
          propertyName: 'min',
          ruleFactory: (min) => typeof min === 'number' ? new MinNumberRule({ minValue: min }) : null,
        },
        {
          propertyName: 'max',
          ruleFactory: (max) => typeof max === 'number' ? new MaxNumberRule({ maxValue: max }) : null,
        },
        {
          propertyName: 'minLength',
          ruleFactory: (minLength) => minLength ? new MinStringLengthRule({ minStrLength: minLength }) : null,
        },
        {
          propertyName: 'maxLength',
          ruleFactory: (maxLength) => maxLength ? new MaxStringLengthRule({ maxStrLength: maxLength }) : null,
        },
        {
          propertyName: 'email',
          ruleFactory: (email) => (email ? new EmailFieldRule() : null),
        },
        {
          propertyName: 'type',
          ruleFactory: (type) => (type === 'email' ? new EmailFieldRule() : null),
        },
      ],
      validationRulesName: 'validationRules',
      defaultValue: '',
      attributeGetter: (propertyName) => this[propertyName],
      inputContainerGetter: () => this.inputContainerRenderer.getInputContainerRef(),
      touchableAreaGetter: () => [this.inputRenderer.getInputRef()],
    });
    this.pageResizeObserverSlimmer = new PageResizeObserverSlimmer({
      /*
       * The below method is e2e-test covered in
       * @see{module:vega-input-auto-width-e2e}
       */
      callback: /* istanbul ignore next */ () => this.compactWidthController.setInputAutoWidth(),
    });
    this.renderModeController = new VegaInputRenderModeController();
    this.copyPasteController = new VegaInputCopyPasteController();
    this.compactWidthController = new VegaInputCompactWidthController();
    this.stateController = new VegaInputStateController();
    this.maskConfigController = new VegaInputMaskConfigController();
    this.valueController = new VegaInputValueController();
    this.prefixSlotRenderer = new VegaInputPrefixSlotRenderer();
    this.renderer = new VegaInputRenderer();
    this.inputContainerRenderer = new VegaInputInputContainerRenderer();
    this.inputRenderer = new VegaInputInputRenderer();
    this.inputSuggestionsRenderer = new VegaInputInputSuggestionsRenderer();
    this.changeEventEmitter = createEventEmitSlimmer(VegaInput, VegaChange);
    this.nativeInputChangeEventEmitter = createEventEmitSlimmer(VegaInput, VegaNativeInputChange);
    this.focusEventEmitter = createEventEmitSlimmer(VegaInput, VegaFocus);
    this.blurEventEmitter = createEventEmitSlimmer(VegaInput, VegaBlur);
    this.labelButtonClickEventEmitter = createEventEmitSlimmer(VegaInput, VegaLabelButtonClick);
    this.suggestionItemClickEventEmitter = createEventEmitSlimmer(VegaInput, VegaSuggestionItemClick);
    this.pasteEventEmitter = createEventEmitSlimmer(VegaInput, VegaPaste);
    this.vegaComponentUsageRuntimeMetricsSlimmer = new VegaComponentUsageRuntimeMetricsSlimmer(VegaInputRuntimeMetricsPayloadDefinition);
    this.passwordEyeRenderer = new VegaInputPasswordEyeRenderer();
    /**
     * Specifies the visible label text displayed above the input field.
     *
     * The label provides an accessible, descriptive title that helps users identify
     * the purpose or content expected in the input field. It is rendered as a
     * `<vega-field-label>` element and is associated with the native `<input>` for
     * accessibility (screen readers, click-to-focus).
     *
     * When set to an empty string, no label is rendered.
     *
     * @default ''
     * @vegaVersion 1.0.5
     */
    this.label = '';
    /**
     * @deprecated Please use `labelSuffixButtonConfig` instead.
     *
     * Configures an optional action button displayed at the trailing end of the
     * field label. This can be used to provide contextual actions such as a
     * "Forgot password?" link or an info tooltip trigger.
     *
     * @default null
     * @vegaVersion 2.25.0
     */
    this.labelSuffixButtonProps = null;
    /**
     * Configures an optional action button displayed at the trailing end of the
     * field label. Use this to provide contextual actions such as a
     * "Forgot password?" link, a help tooltip trigger, or any custom label-level action.
     *
     * When clicked, the `vegaLabelButtonClick` event is emitted.
     *
     * @default null
     * @vegaVersion 2.68.0
     */
    this.labelSuffixButtonConfig = null;
    /**
     * The current value of the input field.
     *
     * Use this property to programmatically set or read the input's value.
     * The value is two-way bound — it updates when the user types and can be
     * set externally to pre-fill or reset the field.
     *
     * When a `maskConfig` is applied, the displayed value may differ from the
     * raw value (e.g., formatted phone numbers). The `vegaChange` event emits
     * the current value whenever it changes.
     *
     * @default ''
     * @vegaVersion 1.0.5
     */
    /* eslint-disable-next-line @stencil/strict-mutable */
    this.value = '';
    /**
     * Controls when the `vegaChange` event is emitted, allowing you to choose
     * between real-time updates and committed-value updates.
     *
     * - `'input'` — Fires on every keystroke as the user types (real-time).
     * - `'change'` — Fires only when the input loses focus or the user presses Enter,
     *   similar to the native HTML `change` event behavior.
     *
     * Use `'change'` for expensive operations (e.g., API calls) where you only need
     * the final committed value. Use `'input'` for live search or filtering scenarios.
     *
     * @default 'input'
     * @vegaVersion 2.24.0
     */
    this.valueUpdateTrigger = 'input';
    /**
     * Sets the HTML input type, which controls the browser's input behavior,
     * on-screen keyboard layout, and built-in validation.
     *
     * - `'text'` — Standard single-line text input.
     * - `'email'` — Optimized for email entry; triggers email validation automatically.
     * - `'password'` — Masks the entered characters; displays a show/hide toggle icon.
     * - `'number'` — Restricts input to numeric values; may show increment/decrement controls.
     * - `'hidden'` — Renders the input as invisible (useful for programmatic form values).
     *
     * @default 'text'
     * @vegaVersion 1.0.9
     */
    this.type = 'text';
    /**
     * Sets the `name` attribute on the underlying native `<input>` element.
     *
     * This is used to identify the field when submitting form data and is also
     * used by the browser's autocomplete feature to recall previously entered values.
     *
     * @default ''
     * @vegaVersion 1.0.5
     */
    this.name = '';
    /**
     * Controls the browser's autofill and autocomplete behavior for this input.
     *
     * Set to a semantic token (e.g., `'email'`, `'tel'`, `'street-address'`) to help
     * the browser suggest previously saved values. Set to `'off'` to disable
     * autocomplete suggestions entirely.
     *
     * See the full list of valid tokens:
     * https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/autocomplete
     *
     * @default 'off'
     * @vegaVersion 1.0.5
     */
    this.autocomplete = 'off';
    /**
     * Sets the input field as read-only, preventing direct keyboard input.
     *
     * When set to `true`, prevents manual keyboard text entry in the input field on
     *    all platforms. On touch devices, this typically suppresses the virtual keyboard.
     *
     * @default false
     * @vegaVersion 2.79.0
     */
    this.readOnly = false;
    /**
     * When `true`, enforces email format validation on the input value.
     *
     * The validation checks that the entered text conforms to standard email
     * formatting rules (e.g., `user@domain.com`). An invalid email will cause
     * `isValid` to be set to `false` when validation is triggered.
     *
     * @deprecated Please use `type='email'` instead, which provides the same
     * validation along with optimized mobile keyboard and browser autofill support.
     * @default false
     * @vegaVersion 1.0.5
     */
    this.email = false;
    /**
     * Marks the input field as required for form submission.
     *
     * When `true`, a required-field validation rule is automatically applied.
     * If `autoValidation` is enabled, the field will display a validation error
     * when the user leaves it empty. A visual required indicator (asterisk) is
     * shown next to the label.
     *
     * @default false
     * @vegaVersion 1.0.5
     */
    /* eslint-disable-next-line @stencil/strict-mutable */
    this.required = false;
    /**
     * Sets the minimum allowable numeric value for the input.
     *
     * When set, a `MinNumberRule` validation is applied automatically.
     * If the user enters a number below this threshold, the field will
     * be marked as invalid. Only applies when the input value is numeric.
     *
     * @default null
     * @vegaVersion 1.0.5
     */
    this.min = null;
    /**
     * Sets the maximum allowable numeric value for the input.
     *
     * When set, a `MaxNumberRule` validation is applied automatically.
     * If the user enters a number above this threshold, the field will
     * be marked as invalid. Only applies when the input value is numeric.
     *
     * @default null
     * @vegaVersion 1.0.5
     */
    this.max = null;
    /**
     * Sets the minimum character length required for the input value.
     *
     * When set, a `MinStringLengthRule` validation is applied automatically.
     * If the user enters fewer characters than specified, the field will be
     * marked as invalid when validation is triggered.
     *
     * @default null
     * @vegaVersion 1.0.5
     */
    this.minLength = null;
    /**
     * Sets the maximum character length allowed for the input value.
     *
     * When set, a `MaxStringLengthRule` validation is applied automatically.
     * If the user enters more characters than specified, the field will be
     * marked as invalid when validation is triggered.
     *
     * @default null
     * @vegaVersion 1.0.5
     */
    this.maxLength = null;
    /**
     * Controls whether a clear (✕) icon button is displayed inside the input
     * when the field has a non-empty value.
     *
     * When `true`, clicking the clear icon resets the input value to an empty
     * string and emits a `vegaChange` event. Set to `false` to hide the icon
     * (e.g., for inputs where clearing is not desired, such as read-only displays).
     *
     * @default true
     * @vegaVersion 1.3.0
     */
    this.showClearIcon = true;
    /**
     * Reflects the current validation state of the input field.
     *
     * - `true` — The field value passes all validation rules; no error styling is shown.
     * - `false` — The field value is invalid; error styling and messages are displayed.
     * - `null` — Validation has not yet been triggered (initial state).
     *
     * This property is automatically updated when `autoValidation` is `true`.
     * It can also be set programmatically to force a specific validation state
     * (e.g., after server-side validation).
     *
     * @default null
     * @vegaVersion 1.3.0
     */
    /* eslint-disable-next-line @stencil/strict-mutable */
    this.isValid = null;
    /**
     * Enables or disables automatic validation as the user interacts with the input.
     *
     * When `true`, the component validates the input value in real-time against
     * all configured validation rules (`required`, `min`, `max`, `minLength`,
     * `maxLength`, `email`, and custom `validationRules`). Validation is triggered
     * on blur and during input, updating the `isValid` property accordingly.
     *
     * Set to `false` when you need to manage validation manually (e.g., only on
     * form submission).
     *
     * @default true
     * @vegaVersion 1.0.10
     */
    this.autoValidation = true;
    /**
     * An array of custom validation rules applied to the input field in addition
     * to the built-in rules derived from `required`, `min`, `max`, `minLength`,
     * `maxLength`, and `email` props.
     *
     * Each rule is a `FormFieldValidationRule` object that defines a validation
     * function and an associated error message. Rules are evaluated in order;
     * the first failing rule's message is displayed.
     *
     * @default []
     * @vegaVersion 1.0.10
     */
    this.validationRules = [];
    /**
     * Sets the visual size variant of the input field, affecting its height
     * and internal padding.
     *
     * - `'default'` — Standard height (40px), suitable for most form layouts.
     * - `'small'` — Compact height (32px), useful in dense or inline
     *   layouts. Such as table cells or toolbars.
     *
     * @default 'default'
     * @vegaVersion 1.3.0
     */
    this.size = 'default';
    /**
     * When `true`, disables the input field, preventing user interaction.
     *
     * A disabled input cannot receive focus, does not respond to click or keyboard
     * events, and is visually styled with reduced opacity to indicate its inactive
     * state. Disabled fields are excluded from form validation.
     *
     * @default false
     * @vegaVersion 1.3.0
     */
    this.disabled = false;
    /**
     * Displays a helper text message below the input field.
     *
     * Use this to provide additional guidance about the expected input, such as
     * format requirements (e.g., `'Must be at least 8 characters'`) or contextual
     * tips. The hint is rendered via the `<vega-hint>` sub-component and is
     * replaced by an error message when validation fails.
     *
     * @default ''
     * @vegaVersion 1.3.0
     */
    this.hint = '';
    /**
     * When `true`, disables the ability to copy from or paste into the input field.
     *
     * This is useful for security-sensitive fields (e.g., password confirmation)
     * where you want to prevent users from pasting values. Both keyboard shortcuts
     * and context menu copy/paste actions are blocked.
     *
     * @default false
     * @vegaVersion 2.1.0
     */
    this.disableCopyPaste = false;
  }
  watchSuffixText() {
    methodPlaceholder();
  }
  /**
   * The input component is embedded in other components.
   *
   * If modifying the input value does not meet the requirements
   *    of other components, such as limiting the maximum value, etc.,
   *    you need to modify the value of the input component and
   *    display it in real time.
   *
   * Since the value of `inputRef` is still the old value retained,
   *    when the value changes, which needs to be updated manually.
   */
  watchValue(value) {
    methodPlaceholder(value);
  }
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-input-on-type-change}
   */
  /* istanbul ignore next */
  watchTypeChange(newType, oldType) {
    methodPlaceholder(newType, oldType);
  }
  watchValidationRules() {
    methodPlaceholder();
  }
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-input-mask-change-with-custom-e2e}
   * For the ComponentLoadRequired, the test can not be added in e2e at now, we will add it while have better solution,
   * releated issue: https://gitlab.com/heartland1/vega/tiger/-/issues/646
   */
  /* istanbul ignore next */
  watchMaskChange(newValue, oldValue) {
    methodPlaceholder(newValue, oldValue);
  }
  watchSuggestionsDropdownSource() {
    methodPlaceholder();
  }
  /**
   * Programmatically sets focus on the underlying native `<input>` element.
   *
   * Use this method when you need to direct the user's attention to this input
   * (e.g., after form validation fails or on page load). Calling this method
   * triggers the `vegaFocus` event.
   *
   * @returns A promise that resolves once focus has been applied.
   * @vegaVersion 1.12.0
   */
  async doFocus() {
    methodPlaceholder();
  }
  /**
   * Programmatically removes focus from the underlying native `<input>` element.
   *
   * Use this method when you need to dismiss the keyboard on mobile or move
   * focus away from the input programmatically. Calling this method triggers
   * the `vegaBlur` event and, if `autoValidation` is enabled, validation
   * will be executed.
   *
   * @returns A promise that resolves once blur has been applied.
   * @vegaVersion 1.12.0
   */
  async doBlur() {
    methodPlaceholder();
  }
  /**
   * Programmatically opens the suggestions dropdown.
   *
   * Use this method when you need to display the dropdown independently of
   * user input — for example, to show all available suggestions on focus
   * or in response to an external trigger. Requires `suggestionsDropdownSource`
   * to be set.
   *
   * @param dropdownConfig - Optional configuration to customize the dropdown
   * behavior (e.g., itemDisplayRule, caseSensitive).
   * @returns A promise that resolves once the dropdown is displayed.
   * @vegaVersion 2.75.0
   */
  async showSuggestionsDropdown(dropdownConfig) {
    methodPlaceholder(dropdownConfig);
  }
  /**
   * Programmatically closes the suggestions dropdown.
   *
   * Use this method when you need to dismiss the dropdown in response to an
   * external event (e.g., pressing Escape, clicking outside, or completing
   * a selection workflow).
   *
   * @returns A promise that resolves once the dropdown is hidden.
   * @vegaVersion 2.75.0
   */
  async hideSuggestionsDropdown() {
    methodPlaceholder();
  }
  render() {
    slotPlaceholder(h("slot", null));
    return sanitizeVegaComponent(h(Host, { class: this.type === 'hidden' ? 'vega-input-hidden' : 'vega-input-inline-block' }, this.renderer.render()), this.host);
  }
  static get is() { return "vega-input"; }
  static get encapsulation() { return "shadow"; }
  static get originalStyleUrls() { return {
    "$": ["vega-input.scss"]
  }; }
  static get styleUrls() { return {
    "$": ["vega-input.css"]
  }; }
  static get properties() { return {
    "label": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "''"
          }, {
            "name": "vegaVersion",
            "text": "1.0.5"
          }],
        "text": "Specifies the visible label text displayed above the input field.\n\nThe label provides an accessible, descriptive title that helps users identify\nthe purpose or content expected in the input field. It is rendered as a\n`<vega-field-label>` element and is associated with the native `<input>` for\naccessibility (screen readers, click-to-focus).\n\nWhen set to an empty string, no label is rendered."
      },
      "attribute": "label",
      "reflect": true,
      "defaultValue": "''"
    },
    "labelSuffixButtonProps": {
      "type": "unknown",
      "mutable": false,
      "complexType": {
        "original": "Nullable<LabelSuffixButtonProps>",
        "resolved": "{ icon: string; tooltipText?: string; trigger?: \"click\" | \"hover\"; }",
        "references": {
          "Nullable": {
            "location": "import",
            "path": "../../types/general"
          },
          "LabelSuffixButtonProps": {
            "location": "import",
            "path": "../vega-field-label/types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "deprecated",
            "text": "Please use `labelSuffixButtonConfig` instead.\n\nConfigures an optional action button displayed at the trailing end of the\nfield label. This can be used to provide contextual actions such as a\n\"Forgot password?\" link or an info tooltip trigger."
          }, {
            "name": "default",
            "text": "null"
          }, {
            "name": "vegaVersion",
            "text": "2.25.0"
          }],
        "text": ""
      },
      "defaultValue": "null"
    },
    "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": "Configures an optional action button displayed at the trailing end of the\nfield label. Use this to provide contextual actions such as a\n\"Forgot password?\" link, a help tooltip trigger, or any custom label-level action.\n\nWhen clicked, the `vegaLabelButtonClick` event is emitted."
      },
      "defaultValue": "null"
    },
    "value": {
      "type": "string",
      "mutable": true,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "''"
          }, {
            "name": "vegaVersion",
            "text": "1.0.5"
          }],
        "text": "The current value of the input field.\n\nUse this property to programmatically set or read the input's value.\nThe value is two-way bound \u2014 it updates when the user types and can be\nset externally to pre-fill or reset the field.\n\nWhen a `maskConfig` is applied, the displayed value may differ from the\nraw value (e.g., formatted phone numbers). The `vegaChange` event emits\nthe current value whenever it changes."
      },
      "attribute": "value",
      "reflect": true,
      "defaultValue": "''"
    },
    "valueUpdateTrigger": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "InputValueUpdateTriggeredBy",
        "resolved": "\"change\" | \"input\"",
        "references": {
          "InputValueUpdateTriggeredBy": {
            "location": "import",
            "path": "./types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "'input'"
          }, {
            "name": "vegaVersion",
            "text": "2.24.0"
          }],
        "text": "Controls when the `vegaChange` event is emitted, allowing you to choose\nbetween real-time updates and committed-value updates.\n\n- `'input'` \u2014 Fires on every keystroke as the user types (real-time).\n- `'change'` \u2014 Fires only when the input loses focus or the user presses Enter,\n  similar to the native HTML `change` event behavior.\n\nUse `'change'` for expensive operations (e.g., API calls) where you only need\nthe final committed value. Use `'input'` for live search or filtering scenarios."
      },
      "attribute": "value-update-trigger",
      "reflect": false,
      "defaultValue": "'input'"
    },
    "type": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "InputType",
        "resolved": "\"email\" | \"hidden\" | \"number\" | \"password\" | \"text\"",
        "references": {
          "InputType": {
            "location": "import",
            "path": "./types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "'text'"
          }, {
            "name": "vegaVersion",
            "text": "1.0.9"
          }],
        "text": "Sets the HTML input type, which controls the browser's input behavior,\non-screen keyboard layout, and built-in validation.\n\n- `'text'` \u2014 Standard single-line text input.\n- `'email'` \u2014 Optimized for email entry; triggers email validation automatically.\n- `'password'` \u2014 Masks the entered characters; displays a show/hide toggle icon.\n- `'number'` \u2014 Restricts input to numeric values; may show increment/decrement controls.\n- `'hidden'` \u2014 Renders the input as invisible (useful for programmatic form values)."
      },
      "attribute": "type",
      "reflect": true,
      "defaultValue": "'text'"
    },
    "name": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "''"
          }, {
            "name": "vegaVersion",
            "text": "1.0.5"
          }],
        "text": "Sets the `name` attribute on the underlying native `<input>` element.\n\nThis is used to identify the field when submitting form data and is also\nused by the browser's autocomplete feature to recall previously entered values."
      },
      "attribute": "name",
      "reflect": false,
      "defaultValue": "''"
    },
    "autocomplete": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "InputAutocompleteTypes",
        "resolved": "\"email\" | \"on\" | \"off\" | \"name\" | \"honorific-prefix\" | \"given-name\" | \"additional-name\" | \"family-name\" | \"honorific-suffix\" | \"nickname\" | \"username\" | \"new-password\" | \"current-password\" | \"one-time-code\" | \"organization-title\" | \"organization\" | \"street-address\" | \"address-line1\" | \"address-line2\" | \"address-line3\" | \"address-level4\" | \"address-level3\" | \"address-level2\" | \"address-level1\" | \"country\" | \"country-name\" | \"postal-code\" | \"cc-name\" | \"cc-given-name\" | \"cc-additional-name\" | \"cc-family-name\" | \"cc-number\" | \"cc-exp\" | \"cc-exp-month\" | \"cc-exp-year\" | \"cc-csc\" | \"cc-type\" | \"transaction-currency\" | \"transaction-amount\" | \"language\" | \"bday\" | \"bday-day\" | \"bday-month\" | \"bday-year\" | \"sex\" | \"tel\" | \"tel-country-code\" | \"tel-national\" | \"tel-area-code\" | \"tel-local\" | \"tel-extension\" | \"impp\" | \"url\" | \"photo\"",
        "references": {
          "InputAutocompleteTypes": {
            "location": "import",
            "path": "./types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "'off'"
          }, {
            "name": "vegaVersion",
            "text": "1.0.5"
          }],
        "text": "Controls the browser's autofill and autocomplete behavior for this input.\n\nSet to a semantic token (e.g., `'email'`, `'tel'`, `'street-address'`) to help\nthe browser suggest previously saved values. Set to `'off'` to disable\nautocomplete suggestions entirely.\n\nSee the full list of valid tokens:\nhttps://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/autocomplete"
      },
      "attribute": "autocomplete",
      "reflect": false,
      "defaultValue": "'off'"
    },
    "inputmode": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "'text' | 'numeric'",
        "resolved": "\"numeric\" | \"text\"",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.71.0"
          }],
        "text": "Provides a hint to the browser about the type of virtual keyboard to display\non mobile devices, independent of the `type` attribute.\n\n- `'text'` \u2014 Standard text keyboard.\n- `'numeric'` \u2014 Numeric keypad (digits only), useful for PIN codes or quantities.\n\nSee https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/inputmode for more details."
      },
      "attribute": "inputmode",
      "reflect": false
    },
    "enterkeyhint": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "InputEnterKeyHintTypes",
        "resolved": "\"done\" | \"enter\" | \"go\" | \"next\" | \"previous\" | \"search\" | \"send\"",
        "references": {
          "InputEnterKeyHintTypes": {
            "location": "import",
            "path": "./types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.81.0"
          }],
        "text": "Configures the action label (or icon) to present for the enter key on virtual keyboards.\n\n- `'enter'` \u2014 Insert a new line.\n- `'done'` \u2014 Nothing more to input, close the virtual keyboard.\n- `'go'` \u2014 Navigate to the target of the typed text.\n- `'next'` \u2014 Move to the next field that will accept text.\n- `'previous'` \u2014 Move to the previous field that will accept text.\n- `'search'` \u2014 Execute a search query.\n- `'send'` \u2014 Deliver the content (e.g. a message).\n\nSee https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/enterkeyhint for more details."
      },
      "attribute": "enterkeyhint",
      "reflect": false
    },
    "readOnly": {
      "type": "boolean",
      "mutable": false,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "false"
          }, {
            "name": "vegaVersion",
            "text": "2.79.0"
          }],
        "text": "Sets the input field as read-only, preventing direct keyboard input.\n\nWhen set to `true`, prevents manual keyboard text entry in the input field on\n   all platforms. On touch devices, this typically suppresses the virtual keyboard."
      },
      "attribute": "read-only",
      "reflect": false,
      "defaultValue": "false"
    },
    "prefixIcon": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.0.5"
          }],
        "text": "Displays a Vega icon at the leading (left) side of the input field,\nproviding visual context about the expected input.\n\nPass a valid Vega icon name (e.g., `'search'`, `'email'`, `'lock'`).\nThe icon is rendered inside the input container and does not affect\nthe input's value or validation."
      },
      "attribute": "prefix-icon",
      "reflect": true
    },
    "email": {
      "type": "boolean",
      "mutable": false,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "deprecated",
            "text": "Please use `type='email'` instead, which provides the same\nvalidation along with optimized mobile keyboard and browser autofill support."
          }, {
            "name": "default",
            "text": "false"
          }, {
            "name": "vegaVersion",
            "text": "1.0.5"
          }],
        "text": "When `true`, enforces email format validation on the input value.\n\nThe validation checks that the entered text conforms to standard email\nformatting rules (e.g., `user@domain.com`). An invalid email will cause\n`isValid` to be set to `false` when validation is triggered."
      },
      "attribute": "email",
      "reflect": true,
      "defaultValue": "false"
    },
    "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.0.5"
          }],
        "text": "Marks the input field as required for form submission.\n\nWhen `true`, a required-field validation rule is automatically applied.\nIf `autoValidation` is enabled, the field will display a validation error\nwhen the user leaves it empty. A visual required indicator (asterisk) is\nshown next to the label."
      },
      "attribute": "required",
      "reflect": true,
      "defaultValue": "false"
    },
    "min": {
      "type": "number",
      "mutable": false,
      "complexType": {
        "original": "number | null",
        "resolved": "number",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "null"
          }, {
            "name": "vegaVersion",
            "text": "1.0.5"
          }],
        "text": "Sets the minimum allowable numeric value for the input.\n\nWhen set, a `MinNumberRule` validation is applied automatically.\nIf the user enters a number below this threshold, the field will\nbe marked as invalid. Only applies when the input value is numeric."
      },
      "attribute": "min",
      "reflect": true,
      "defaultValue": "null"
    },
    "max": {
      "type": "number",
      "mutable": false,
      "complexType": {
        "original": "number | null",
        "resolved": "number",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "null"
          }, {
            "name": "vegaVersion",
            "text": "1.0.5"
          }],
        "text": "Sets the maximum allowable numeric value for the input.\n\nWhen set, a `MaxNumberRule` validation is applied automatically.\nIf the user enters a number above this threshold, the field will\nbe marked as invalid. Only applies when the input value is numeric."
      },
      "attribute": "max",
      "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.0.5"
          }],
        "text": "Sets the minimum character length required for the input value.\n\nWhen set, a `MinStringLengthRule` validation is applied automatically.\nIf the user enters fewer characters than specified, the field will be\nmarked as invalid when validation is triggered."
      },
      "attribute": "min-length",
      "reflect": true,
      "defaultValue": "null"
    },
    "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.0.5"
          }],
        "text": "Sets the maximum character length allowed for the input value.\n\nWhen set, a `MaxStringLengthRule` validation is applied automatically.\nIf the user enters more characters than specified, the field will be\nmarked as invalid when validation is triggered."
      },
      "attribute": "max-length",
      "reflect": true,
      "defaultValue": "null"
    },
    "showClearIcon": {
      "type": "boolean",
      "mutable": false,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "true"
          }, {
            "name": "vegaVersion",
            "text": "1.3.0"
          }],
        "text": "Controls whether a clear (\u2715) icon button is displayed inside the input\nwhen the field has a non-empty value.\n\nWhen `true`, clicking the clear icon resets the input value to an empty\nstring and emits a `vegaChange` event. Set to `false` to hide the icon\n(e.g., for inputs where clearing is not desired, such as read-only displays)."
      },
      "attribute": "show-clear-icon",
      "reflect": false,
      "defaultValue": "true"
    },
    "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.3.0"
          }],
        "text": "Reflects the current validation state of the input field.\n\n- `true` \u2014 The field value passes all validation rules; no error styling is shown.\n- `false` \u2014 The field value is invalid; error styling and messages are displayed.\n- `null` \u2014 Validation has not yet been triggered (initial state).\n\nThis property is automatically updated when `autoValidation` is `true`.\nIt can also be set programmatically to force a specific validation state\n(e.g., after server-side validation)."
      },
      "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.0.10"
          }],
        "text": "Enables or disables automatic validation as the user interacts with the input.\n\nWhen `true`, the component validates the input value in real-time against\nall configured validation rules (`required`, `min`, `max`, `minLength`,\n`maxLength`, `email`, and custom `validationRules`). Validation is triggered\non blur and during input, updating the `isValid` property accordingly.\n\nSet to `false` when you need to manage validation manually (e.g., only on\nform submission)."
      },
      "attribute": "auto-validation",
      "reflect": true,
      "defaultValue": "true"
    },
    "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.0.10"
          }],
        "text": "An array of custom validation rules applied to the input field in addition\nto the built-in rules derived from `required`, `min`, `max`, `minLength`,\n`maxLength`, and `email` props.\n\nEach rule is a `FormFieldValidationRule` object that defines a validation\nfunction and an associated error message. Rules are evaluated in order;\nthe first failing rule's message is displayed."
      },
      "defaultValue": "[]"
    },
    "size": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "'default' | 'small'",
        "resolved": "\"default\" | \"small\"",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "'default'"
          }, {
            "name": "vegaVersion",
            "text": "1.3.0"
          }],
        "text": "Sets the visual size variant of the input field, affecting its height\nand internal padding.\n\n- `'default'` \u2014 Standard height (40px), suitable for most form layouts.\n- `'small'` \u2014 Compact height (32px), useful in dense or inline\n  layouts. Such as table cells or toolbars."
      },
      "attribute": "size",
      "reflect": false,
      "defaultValue": "'default'"
    },
    "placeholder": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.3.0"
          }],
        "text": "Sets the placeholder text displayed inside the input when the value is empty.\n\nUse this to provide a short hint about the expected input format or content\n(e.g., `'Enter your email'`, `'MM/DD/YYYY'`). The placeholder text disappears\nas soon as the user begins typing.\n\n**Note:** Placeholder text is not a substitute for a `label` \u2014 always provide\na descriptive label for accessibility."
      },
      "attribute": "placeholder",
      "reflect": false
    },
    "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.3.0"
          }],
        "text": "When `true`, disables the input field, preventing user interaction.\n\nA disabled input cannot receive focus, does not respond to click or keyboard\nevents, and is visually styled with reduced opacity to indicate its inactive\nstate. Disabled fields are excluded from form validation."
      },
      "attribute": "disabled",
      "reflect": true,
      "defaultValue": "false"
    },
    "hint": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "''"
          }, {
            "name": "vegaVersion",
            "text": "1.3.0"
          }],
        "text": "Displays a helper text message below the input field.\n\nUse this to provide additional guidance about the expected input, such as\nformat requirements (e.g., `'Must be at least 8 characters'`) or contextual\ntips. The hint is rendered via the `<vega-hint>` sub-component and is\nreplaced by an error message when validation fails."
      },
      "attribute": "hint",
      "reflect": false,
      "defaultValue": "''"
    },
    "maskConfig": {
      "type": "unknown",
      "mutable": false,
      "complexType": {
        "original": "MaskConfigType | MaskConfigType[]",
        "resolved": "MaskConfigType[] | ({ type: \"number\" | \"phone\" | \"zipcode\" | \"taxId\" | \"custom\" | \"thousand-comma\" | \"custom-formatter\"; options?: MaskConfig | NumberMaskConfig; overrideValue?: boolean; trigger?: \"input\" | \"blur\"; formatter?: (value: string) => string; resetCaretPosition?: boolean; strategy?: () => StringFormatStrategy; })",
        "references": {
          "MaskConfigType": {
            "location": "import",
            "path": "./types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.3.0"
          }],
        "text": "Configures input masking to automatically format the user's input according\nto a predefined pattern.\n\nSupports built-in mask types (`'phone'`, `'zipcode'`, `'taxId'`,\n`'thousand-comma'`, `'number'`) as well as custom masks via `'custom'` or\n`'custom-formatter'` strategies.\n\nPass a single `MaskConfigType` object or an array of configs to apply\nmultiple masks. Each config specifies the mask `type`, optional formatting\n`options`, and a `trigger` (`'input'` or `'blur'`) to control when\nformatting is applied."
      }
    },
    "disableCopyPaste": {
      "type": "boolean",
      "mutable": false,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "false"
          }, {
            "name": "vegaVersion",
            "text": "2.1.0"
          }],
        "text": "When `true`, disables the ability to copy from or paste into the input field.\n\nThis is useful for security-sensitive fields (e.g., password confirmation)\nwhere you want to prevent users from pasting values. Both keyboard shortcuts\nand context menu copy/paste actions are blocked."
      },
      "attribute": "disable-copy-paste",
      "reflect": false,
      "defaultValue": "false"
    },
    "suggestionsDropdownSource": {
      "type": "unknown",
      "mutable": false,
      "complexType": {
        "original": "VegaDropdownSourceItem[]",
        "resolved": "VegaDropdownSourceItem[]",
        "references": {
          "VegaDropdownSourceItem": {
            "location": "import",
            "path": "../vega-dropdown/types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.75.0"
          }],
        "text": "Provides the data source for the input's autocomplete suggestion dropdown.\n\nPass an array of `VegaDropdownSourceItem` objects to enable the suggestions\nfeature. The dropdown appears as the user types, filtering items that match\nthe current input value. When the user selects a suggestion, the\n`vegaSuggestionItemClick` event is emitted.\n\n**Important:** You must set this property to at least an empty array (`[]`)\nto enable the suggestion dropdown. If left `undefined`, the feature is disabled."
      }
    }
  }; }
  static get states() { return {
    "prefixText": {},
    "suffixText": {},
    "isCompactInputWidth": {},
    "isPasswordDisplay": {},
    "suggestionsDropdownConfig": {}
  }; }
  static get events() { return [{
      "method": "vegaChange",
      "name": "vegaChange",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventDetail",
            "text": "`string` \u2014 The current input value after the change."
          }, {
            "name": "vegaVersion",
            "text": "1.0.10"
          }],
        "text": "Emitted when the input value changes.\n\nThe timing of this event depends on the `valueUpdateTrigger` prop:\n- When `valueUpdateTrigger` is `'input'` (default), fires on every keystroke.\n- When `valueUpdateTrigger` is `'change'`, fires on blur or when the user presses Enter.\n\nAlso fires when the user clicks the clear icon or when the value is\nprogrammatically updated."
      },
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      }
    }, {
      "method": "change",
      "name": "change",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventDetail",
            "text": "`string` \u2014 The current input value after the change."
          }, {
            "name": "eventSemantics",
            "text": "namespace:native"
          }, {
            "name": "vegaVersion",
            "text": "2.0.0"
          }],
        "text": "Native-namespace alias for the `vegaChange` event.\n\nEmitted at the same time and under the same conditions as `vegaChange`.\nUse this event when integrating with frameworks that expect native-style\nevent names (e.g., `@change` in Vue or Angular)."
      },
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      }
    }, {
      "method": "vegaNativeInputChange",
      "name": "vegaNativeInputChange",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventDetail",
            "text": "`string` \u2014 The raw value from the native input element."
          }, {
            "name": "vegaVersion",
            "text": "2.75.0"
          }],
        "text": "Emitted on every native `input` event from the underlying `<input>` element,\nregardless of the `valueUpdateTrigger` setting.\n\nThis event fires on every keystroke and provides the raw input value.\nUse this for real-time monitoring (e.g., driving a suggestions dropdown)\nwhile keeping `vegaChange` set to `'change'` trigger for the main value binding."
      },
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      }
    }, {
      "method": "nativeInputChange",
      "name": "nativeInputChange",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventDetail",
            "text": "`string` \u2014 The raw value from the native input element."
          }, {
            "name": "eventSemantics",
            "text": "namespace:native"
          }, {
            "name": "vegaVersion",
            "text": "2.75.0"
          }],
        "text": "Native-namespace alias for the `vegaNativeInputChange` event.\n\nEmitted at the same time and under the same conditions as\n`vegaNativeInputChange`. Use this event when integrating with frameworks\nthat expect native-style event names."
      },
      "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; listen for the event occurrence only."
          }, {
            "name": "vegaVersion",
            "text": "1.3.0"
          }],
        "text": "Emitted when the input field loses focus.\n\nThis event fires after the underlying native `<input>` element's `blur`\nevent. Useful for triggering validation, saving state, or updating UI\nwhen the user navigates away from the field."
      },
      "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; listen for the event occurrence only."
          }, {
            "name": "eventSemantics",
            "text": "namespace:native"
          }, {
            "name": "vegaVersion",
            "text": "2.0.0"
          }],
        "text": "Native-namespace alias for the `vegaBlur` event.\n\nEmitted at the same time and under the same conditions as `vegaBlur`.\nUse this event when integrating with frameworks that expect native-style\nevent names."
      },
      "complexType": {
        "original": "undefined",
        "resolved": "undefined",
        "references": {}
      }
    }, {
      "method": "vegaFocus",
      "name": "vegaFocus",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventDetail",
            "text": "`undefined` \u2014 No payload; listen for the event occurrence only."
          }, {
            "name": "vegaVersion",
            "text": "1.12.0"
          }],
        "text": "Emitted when the input field receives focus.\n\nThis event fires after the underlying native `<input>` element's `focus`\nevent, including when focus is set programmatically via the `doFocus()` method.\nUseful for highlighting the field, showing contextual help, or opening\na suggestions dropdown."
      },
      "complexType": {
        "original": "undefined",
        "resolved": "undefined",
        "references": {}
      }
    }, {
      "method": "focus",
      "name": "focus",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventDetail",
            "text": "`undefined` \u2014 No payload; listen for the event occurrence only."
          }, {
            "name": "eventSemantics",
            "text": "namespace:native"
          }, {
            "name": "vegaVersion",
            "text": "2.0.0"
          }],
        "text": "Native-namespace alias for the `vegaFocus` event.\n\nEmitted at the same time and under the same conditions as `vegaFocus`.\nUse this event when integrating with frameworks that expect native-style\nevent names."
      },
      "complexType": {
        "original": "undefined",
        "resolved": "undefined",
        "references": {}
      }
    }, {
      "method": "vegaLabelButtonClick",
      "name": "vegaLabelButtonClick",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventDetail",
            "text": "`void` \u2014 No payload."
          }, {
            "name": "vegaVersion",
            "text": "2.25.0"
          }],
        "text": "Emitted when the user clicks the suffix button in the field label.\n\nThis event only fires when a `labelSuffixButtonConfig` (or the deprecated\n`labelSuffixButtonProps`) is provided. Use it to handle contextual actions\nsuch as opening a tooltip, navigating to a help page, or triggering a\n\"Forgot password?\" flow."
      },
      "complexType": {
        "original": "any",
        "resolved": "any",
        "references": {}
      }
    }, {
      "method": "labelButtonClick",
      "name": "labelButtonClick",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventDetail",
            "text": "`void` \u2014 No payload."
          }, {
            "name": "eventSemantics",
            "text": "namespace:native"
          }, {
            "name": "vegaVersion",
            "text": "2.25.0"
          }],
        "text": "Native-namespace alias for the `vegaLabelButtonClick` event.\n\nEmitted at the same time and under the same conditions as\n`vegaLabelButtonClick`. Use this event when integrating with frameworks\nthat expect native-style event names."
      },
      "complexType": {
        "original": "any",
        "resolved": "any",
        "references": {}
      }
    }, {
      "method": "vegaPaste",
      "name": "vegaPaste",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventDetail",
            "text": "`DataTransferType` \u2014 An object containing the pasted data,\nincluding the MIME type and raw text content from the clipboard."
          }, {
            "name": "vegaVersion",
            "text": "2.66.0"
          }],
        "text": "Emitted when the user pastes content into the input field.\n\nThis event fires regardless of the `disableCopyPaste` setting \u2014 the paste\naction is blocked visually, but the event still propagates for tracking\npurposes. Use this to inspect or transform pasted data before it is applied."
      },
      "complexType": {
        "original": "DataTransferType",
        "resolved": "DataTransfer",
        "references": {
          "DataTransferType": {
            "location": "import",
            "path": "./types"
          }
        }
      }
    }, {
      "method": "paste",
      "name": "paste",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventDetail",
            "text": "`DataTransferType` \u2014 An object containing the pasted data,\nincluding the MIME type and raw text content from the clipboard."
          }, {
            "name": "eventSemantics",
            "text": "namespace:native"
          }, {
            "name": "vegaVersion",
            "text": "2.66.0"
          }],
        "text": "Native-namespace alias for the `vegaPaste` event.\n\nEmitted at the same time and under the same conditions as `vegaPaste`.\nUse this event when integrating with frameworks that expect native-style\nevent names."
      },
      "complexType": {
        "original": "DataTransferType",
        "resolved": "DataTransfer",
        "references": {
          "DataTransferType": {
            "location": "import",
            "path": "./types"
          }
        }
      }
    }, {
      "method": "vegaSuggestionItemClick",
      "name": "vegaSuggestionItemClick",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventDetail",
            "text": "`VegaDropdownSourceItem` \u2014 The full data object of the selected\nsuggestion item, including its `label`, `value`, and any custom properties."
          }, {
            "name": "vegaVersion",
            "text": "2.75.0"
          }],
        "text": "Emitted when the user selects an item from the suggestions dropdown.\n\nThis event only fires when the `suggestionsDropdownSource` prop is set.\nUse it to respond to the user's selection \u2014 for example, to populate\nrelated fields, navigate to a detail page, or trigger a search."
      },
      "complexType": {
        "original": "VegaDropdownSourceItem",
        "resolved": "{ label: string; key: string; children: DropdownSourceItem[]; } | { label: string; key: string; count?: number; prefixIcon?: string; disabled?: boolean; danger?: boolean; }",
        "references": {
          "VegaDropdownSourceItem": {
            "location": "import",
            "path": "../vega-dropdown/types"
          }
        }
      }
    }, {
      "method": "suggestionItemClick",
      "name": "suggestionItemClick",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventDetail",
            "text": "`VegaDropdownSourceItem` \u2014 The full data object of the selected\nsuggestion item, including its `label`, `value`, and any custom properties."
          }, {
            "name": "eventSemantics",
            "text": "namespace:native"
          }, {
            "name": "vegaVersion",
            "text": "2.75.0"
          }],
        "text": "Native-namespace alias for the `vegaSuggestionItemClick` event.\n\nEmitted at the same time and under the same conditions as\n`vegaSuggestionItemClick`. Use this event when integrating with frameworks\nthat expect native-style event names."
      },
      "complexType": {
        "original": "VegaDropdownSourceItem",
        "resolved": "{ label: string; key: string; children: DropdownSourceItem[]; } | { label: string; key: string; count?: number; prefixIcon?: string; disabled?: boolean; danger?: boolean; }",
        "references": {
          "VegaDropdownSourceItem": {
            "location": "import",
            "path": "../vega-dropdown/types"
          }
        }
      }
    }]; }
  static get methods() { return {
    "doFocus": {
      "complexType": {
        "signature": "() => Promise<void>",
        "parameters": [],
        "references": {
          "Promise": {
            "location": "global"
          }
        },
        "return": "Promise<void>"
      },
      "docs": {
        "text": "Programmatically sets focus on the underlying native `<input>` element.\n\nUse this method when you need to direct the user's attention to this input\n(e.g., after form validation fails or on page load). Calling this method\ntriggers the `vegaFocus` event.",
        "tags": [{
            "name": "returns",
            "text": "A promise that resolves once focus has been applied."
          }, {
            "name": "vegaVersion",
            "text": "1.12.0"
          }]
      }
    },
    "doBlur": {
      "complexType": {
        "signature": "() => Promise<void>",
        "parameters": [],
        "references": {
          "Promise": {
            "location": "global"
          }
        },
        "return": "Promise<void>"
      },
      "docs": {
        "text": "Programmatically removes focus from the underlying native `<input>` element.\n\nUse this method when you need to dismiss the keyboard on mobile or move\nfocus away from the input programmatically. Calling this method triggers\nthe `vegaBlur` event and, if `autoValidation` is enabled, validation\nwill be executed.",
        "tags": [{
            "name": "returns",
            "text": "A promise that resolves once blur has been applied."
          }, {
            "name": "vegaVersion",
            "text": "1.12.0"
          }]
      }
    },
    "showSuggestionsDropdown": {
      "complexType": {
        "signature": "(dropdownConfig?: VegaInputSuggestionsDropdownConfig) => Promise<void>",
        "parameters": [{
            "tags": [{
                "name": "param",
                "text": "dropdownConfig - Optional configuration to customize the dropdown\nbehavior (e.g., itemDisplayRule, caseSensitive)."
              }],
            "text": "- Optional configuration to customize the dropdown\nbehavior (e.g., itemDisplayRule, caseSensitive)."
          }],
        "references": {
          "Promise": {
            "location": "global"
          },
          "VegaInputSuggestionsDropdownConfig": {
            "location": "import",
            "path": "./types"
          }
        },
        "return": "Promise<void>"
      },
      "docs": {
        "text": "Programmatically opens the suggestions dropdown.\n\nUse this method when you need to display the dropdown independently of\nuser input \u2014 for example, to show all available suggestions on focus\nor in response to an external trigger. Requires `suggestionsDropdownSource`\nto be set.",
        "tags": [{
            "name": "param",
            "text": "dropdownConfig - Optional configuration to customize the dropdown\nbehavior (e.g., itemDisplayRule, caseSensitive)."
          }, {
            "name": "returns",
            "text": "A promise that resolves once the dropdown is displayed."
          }, {
            "name": "vegaVersion",
            "text": "2.75.0"
          }]
      }
    },
    "hideSuggestionsDropdown": {
      "complexType": {
        "signature": "() => Promise<void>",
        "parameters": [],
        "references": {
          "Promise": {
            "location": "global"
          }
        },
        "return": "Promise<void>"
      },
      "docs": {
        "text": "Programmatically closes the suggestions dropdown.\n\nUse this method when you need to dismiss the dropdown in response to an\nexternal event (e.g., pressing Escape, clicking outside, or completing\na selection workflow).",
        "tags": [{
            "name": "returns",
            "text": "A promise that resolves once the dropdown is hidden."
          }, {
            "name": "vegaVersion",
            "text": "2.75.0"
          }]
      }
    }
  }; }
  static get elementRef() { return "host"; }
  static get watchers() { return [{
      "propName": "suffixText",
      "methodName": "watchSuffixText"
    }, {
      "propName": "value",
      "methodName": "watchValue"
    }, {
      "propName": "type",
      "methodName": "watchTypeChange"
    }, {
      "propName": "validationRules",
      "methodName": "watchValidationRules"
    }, {
      "propName": "maskConfig",
      "methodName": "watchMaskChange"
    }, {
      "propName": "suggestionsDropdownSource",
      "methodName": "watchSuggestionsDropdownSource"
    }]; }
}
__decorate([
  InjectVegaGlobalSlimmer()
], VegaInput.prototype, "globalSlimmers", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "ariaAttributesValueMapper", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "dataTabIndexValueMapper", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "formFieldController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "pageResizeObserverSlimmer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "renderModeController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "copyPasteController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "compactWidthController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "stateController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "maskConfigController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "valueController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "prefixSlotRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "renderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "inputContainerRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "inputRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "inputSuggestionsRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "changeEventEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "nativeInputChangeEventEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "focusEventEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "blurEventEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "labelButtonClickEventEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "suggestionItemClickEventEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "pasteEventEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "vegaComponentUsageRuntimeMetricsSlimmer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInput.prototype, "passwordEyeRenderer", void 0);
__decorate([
  ComponentLoadRequired()
], VegaInput.prototype, "watchMaskChange", null);
