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, Prop, Element, State, Method, Watch, Event } from '@stencil/core';
import { RequiredFieldRule } from '../../helpers/validator/rules/required-field-rule';
import { sanitizeVegaComponent } from '../../utils/component';
import { getCurrentBreakpoint } from '../../utils/breakpoints';
import { VegaInputSelectRenderer } from './slimmers/renderers/vega-input-select-renderer';
import { InjectVegaGlobalSlimmer, InjectVegaSlimmer, methodPlaceholder, } from 'vega-slimmer/core';
import { VegaInputSelectDropdownController } from './slimmers/controllers/vega-input-select-dropdown-controller';
import { VegaInputSelectValueController } from './slimmers/controllers/vega-input-select-value-controller';
import { VegaInputSelectItemController } from './slimmers/controllers/vega-input-select-item-controller';
import { VegaInputSelectDropdownRenderer } from './slimmers/renderers/vega-input-select-dropdown-renderer';
import { FormFieldControllerSlimmer } from '../../helpers/slimmers/form-field-controller-slimmer';
import { PageResizeObserverSlimmer } from '../../helpers/slimmers/page-resize-observer-slimmer';
import { createEventEmitSlimmer, } from '../../helpers/event-manager/slimmers/event-emit-slimmer';
import { VegaChange, VegaHide, VegaLabelButtonClick, VegaSearch, VegaSearchTrigger, VegaShow, } from '../../helpers/event-manager/event-id/vega-event-id';
import { ChildNodesEventPreventSlimmer } from '../../helpers/event-manager/slimmers/child-nodes-event-prevent-slimmer';
import { VegaInputSelectLazyLoadController } from './slimmers/controllers/vega-input-select-lazy-load-controller';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
import { VegaInputSelectRuntimeMetricsPayloadDefinition } from '../../constants/runtime-metrics-payload-definition/vega-input-select/runtime-metrics-payload-definition';
import { VegaInputSelectSourceController } from './slimmers/controllers/vega-input-select-source-controller';
import { VegaInputSelectItemsSlotController } from './slimmers/controllers/vega-input-select-items-slot-controler';
import { TranslationSlimmer } from '../../helpers/slimmers/translation';
import { VegaInputSelectPrefixIconRenderer } from './slimmers/renderers/vega-input-select-prefix-icon-renderer';
import { InputSelectValueInSourceRule } from '../../helpers/validator/rules/input-select-value-in-source-rule';
import { VegaInternalTranslation } from '../../helpers/translation/internal-translation-controller';
/**
 * @vegaVersion 1.0.7
 */
export class VegaInputSelect {
  constructor() {
    this.globalSlimmers = {};
    this.translationSlimmer = new TranslationSlimmer();
    this.sourceController = new VegaInputSelectSourceController();
    this.vegaInputSelectRenderer = new VegaInputSelectRenderer();
    this.vegaInputSelectPrefixIconRenderer = new VegaInputSelectPrefixIconRenderer();
    this.vegaInputSelectDropdownController = new VegaInputSelectDropdownController();
    this.vegaInputSelectValueController = new VegaInputSelectValueController();
    this.vegaInputSelectDropdownRenderer = new VegaInputSelectDropdownRenderer();
    this.vegaInputSelectItemsSlotController = new VegaInputSelectItemsSlotController();
    this.vegaInputSelectItemController = new VegaInputSelectItemController();
    this.formFieldControllerSlimmer = new FormFieldControllerSlimmer({
      propertyRules: [
        {
          propertyName: 'required',
          ruleFactory: (isRequired) => (isRequired ? new RequiredFieldRule() : null),
        },
        {
          propertyName: 'data-source',
          ruleFactory: () => {
            return new InputSelectValueInSourceRule(() => this.source);
          },
        },
      ],
      validationRulesName: 'validationRules',
      defaultValue: (target) => (target.selectType === 'multiple' ? [] : ''),
      attributeGetter: (propertyName) => this[propertyName],
      inputContainerGetter: () => this.vegaInputSelectDropdownRenderer.getDropdownRef(),
      touchableAreaGetter: () => [this.vegaInputSelectDropdownRenderer.getInputSelectContainerRef()],
    });
    this.pageResizeObserverSlimmer = new PageResizeObserverSlimmer();
    this.lazyLoadController = new VegaInputSelectLazyLoadController();
    this.changeEventEmitter = createEventEmitSlimmer(VegaInputSelect, VegaChange);
    this.searchEventEmitter = createEventEmitSlimmer(VegaInputSelect, VegaSearch);
    this.searchTriggerEventEmitter = createEventEmitSlimmer(VegaInputSelect, VegaSearchTrigger);
    this.showEventEmitter = createEventEmitSlimmer(VegaInputSelect, VegaShow);
    this.hideEventEmitter = createEventEmitSlimmer(VegaInputSelect, VegaHide);
    this.labelButtonClickEventEmitter = createEventEmitSlimmer(VegaInputSelect, VegaLabelButtonClick);
    this.eventPrevent = new ChildNodesEventPreventSlimmer([VegaSearch, VegaSearchTrigger, VegaShow, VegaHide], () => this.host, true);
    this.vegaComponentUsageRuntimeMetricsSlimmer = new VegaComponentUsageRuntimeMetricsSlimmer(VegaInputSelectRuntimeMetricsPayloadDefinition);
    this.isDropdownShow = false;
    this.currentBreakpoint = getCurrentBreakpoint();
    this.isLazyLoading = false;
    /**
     * Specifies the label or title for the input field.
     *
     * It provides descriptive text that helps identify the purpose or
     *    content expected in the input select field.
     *
     * @vegaVersion 1.3.0
     */
    this.label = '';
    /**
     * Specifies the properties for the suffix button associated with the input.
     *
     * It provides essential information and functionality
     *  related to the suffix button's role and behavior.
     *
     * @vegaVersion 2.68.0
     */
    this.labelSuffixButtonConfig = null;
    /**
     * Determines whether the input select field is required.
     *
     * @vegaVersion 1.0.7
     */
    this.required = false;
    /**
     * Allows customization of the text displayed within the
     *    select field when single or multiple items are selected.
     *    The default format for the selected label is
     *    `{0} Selected` for multiple mode only.
     *
     *	To enable all modes, use the `SelectedLabelTypeForAllModes` type.
     * 		For single mode, the default format is the `displayName` of the selected item if not set
     * 		For multiple mode, the default format is `{0} Selected` if not set
     *
     * @vegaVersion 1.35.0
     */
    this.selectedLabel = (value) => VegaInternalTranslation.t(`{0} Selected`, value.length);
    /**
     * Controls the selection capabilities of the associated dropdown menu.
     *
     * @vegaVersion 1.35.0
     */
    this.selectType = 'single';
    /**
     * Specifies the dataset used to populate the options
     *    available in the select input dropdown menu.
     *
     * @vegaVersion 1.0.7
     */
    /* eslint-disable-next-line @stencil/strict-mutable */
    this.source = [];
    /**
     * Specifies the ID of the item selected from the source data
     *    in the dropdown menu.
     *
     * The ID should be unique within the source collection to
     *    correctly associate the chosen option with its
     *    corresponding data entry.
     *
     * @vegaVersion 1.0.7
     */
    /* eslint-disable-next-line @stencil/strict-mutable */
    this.value = this.selectType === 'multiple' ? [] : '';
    /**
     * Indicates the current validation status of the user's selection
     *    from the dropdown menu.
     *
     * @vegaVersion 1.3.0
     */
    /* eslint-disable-next-line @stencil/strict-mutable */
    this.isValid = null;
    /**
     * Specifies whether the system should automatically carry out
     *    validation checks on the user's selection in real-time,
     *    ensuring that the input adheres to predefined criteria before
     *    submission or proceeding further.
     *
     * @vegaVersion 1.0.11
     */
    this.autoValidation = true;
    /**
     * Allows setting custom criteria or constraints that
     *    the user's selection in the dropdown menu must
     *    comply with.
     *
     * @vegaVersion 1.0.11
     */
    this.validationRules = [];
    /**
     * Specifies whether the input select field is disabled.
     *
     * @vegaVersion 1.3.0
     */
    this.disabled = false;
    /**
     * Specifies a placeholder string that displays as a temporary hint or
     *    example inside the input select field.
     *
     * It indicates the expected format or pattern of the input.
     *
     * @vegaVersion 1.0.7
     */
    this.placeholder = 'Please select';
    /**
     * Provides partial properties for the `vega-dropdown` component used
     *    in the input select element.
     *
     * You can specify custom properties and their corresponding values as needed.
     *
     * @vegaVersion 1.3.0
     */
    this.vegaDropdownProps = {};
    /**
     * Provides tooltip configuration for the selected label text.
     *
     * Use this to control tooltip placement, width, and other display properties.
     *
     * @vegaVersion 2.82.0
     */
    this.selectedLabelTooltipProps = {};
    /**
     * Provides tooltip configuration for dropdown items.
     *
     * Use this to control tooltip placement and width for long item labels.
     *
     * @vegaVersion 2.82.0
     */
    this.dropdownItemTooltipProps = {};
    /**
     * Defines the size of the input select field.
     *
     * @vegaVersion 1.18.0
     */
    this.size = 'default';
  }
  watchSelectType() {
    methodPlaceholder();
  }
  watchSource() {
    methodPlaceholder();
  }
  watchValue(newValue, oldValue) {
    methodPlaceholder(newValue, oldValue);
  }
  watchValidationRules() {
    methodPlaceholder();
  }
  watchVegaDropdownProps() {
    methodPlaceholder();
  }
  watchSelectedLabelTooltipProps() {
    methodPlaceholder();
  }
  watchDropdownItemTooltipProps() {
    methodPlaceholder();
  }
  componentWillLoad() {
    methodPlaceholder();
  }
  /**
   * Invoke this method to close the select dropdown and clear
   *    the dropdown element reference.
   *
   * @vegaVersion 1.0.7
   */
  async doClose() {
    await this.vegaInputSelectDropdownRenderer.hide();
  }
  /**
   * Invoke this method to open the select dropdown.
   *
   * @vegaVersion 1.0.7
   */
  async doOpen() {
    await this.vegaInputSelectDropdownRenderer.show();
  }
  /**
   * Invoke this method to change the ID of the select source item.
   *
   * @vegaVersion 1.0.7
   */
  async doChange(value) {
    this.vegaInputSelectValueController.setValue(value);
  }
  render() {
    return sanitizeVegaComponent(this.vegaInputSelectRenderer.render(), this.host);
  }
  static get is() { return "vega-input-select"; }
  static get encapsulation() { return "shadow"; }
  static get originalStyleUrls() { return {
    "$": ["./vega-input-select.scss"]
  }; }
  static get styleUrls() { return {
    "$": ["vega-input-select.css"]
  }; }
  static get properties() { return {
    "label": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.3.0"
          }],
        "text": "Specifies the label or title for the input field.\n\nIt provides descriptive text that helps identify the purpose or\n   content expected in the input select field."
      },
      "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": "vegaVersion",
            "text": "2.68.0"
          }],
        "text": "Specifies the properties for the suffix button associated with the input.\n\nIt provides essential information and functionality\n related to the suffix button's role and behavior."
      },
      "defaultValue": "null"
    },
    "required": {
      "type": "boolean",
      "mutable": false,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.0.7"
          }],
        "text": "Determines whether the input select field is required."
      },
      "attribute": "required",
      "reflect": true,
      "defaultValue": "false"
    },
    "selectedLabel": {
      "type": "unknown",
      "mutable": false,
      "complexType": {
        "original": "SelectedLabelType | SelectedLabelTypeForAllModes",
        "resolved": "((value: string[]) => string) | ({ single?: (value: string, selectedItem?: SelectSourceItem) => string; multiple?: (value: string[], selectedItem?: SelectSourceItem[]) => string; })",
        "references": {
          "SelectedLabelType": {
            "location": "import",
            "path": "./types"
          },
          "SelectedLabelTypeForAllModes": {
            "location": "import",
            "path": "./types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.35.0"
          }],
        "text": "Allows customization of the text displayed within the\n   select field when single or multiple items are selected.\n   The default format for the selected label is\n   `{0} Selected` for multiple mode only.\n\nTo enable all modes, use the `SelectedLabelTypeForAllModes` type.\n\t\tFor single mode, the default format is the `displayName` of the selected item if not set\n\t\tFor multiple mode, the default format is `{0} Selected` if not set"
      },
      "defaultValue": "(value: string[]) =>\n\t\tVegaInternalTranslation.t<'dynamic'>(`{0} Selected`, value.length)"
    },
    "selectType": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "SelectType",
        "resolved": "\"multiple\" | \"single\"",
        "references": {
          "SelectType": {
            "location": "import",
            "path": "./types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.35.0"
          }],
        "text": "Controls the selection capabilities of the associated dropdown menu."
      },
      "attribute": "select-type",
      "reflect": false,
      "defaultValue": "'single'"
    },
    "source": {
      "type": "unknown",
      "mutable": true,
      "complexType": {
        "original": "SelectSourceItem[]",
        "resolved": "SelectSourceItem[]",
        "references": {
          "SelectSourceItem": {
            "location": "import",
            "path": "./types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.0.7"
          }],
        "text": "Specifies the dataset used to populate the options\n   available in the select input dropdown menu."
      },
      "defaultValue": "[]"
    },
    "value": {
      "type": "string",
      "mutable": true,
      "complexType": {
        "original": "SelectValueType<SelectType>",
        "resolved": "string | string[]",
        "references": {
          "SelectValueType": {
            "location": "import",
            "path": "./types"
          },
          "SelectType": {
            "location": "import",
            "path": "./types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.0.7"
          }],
        "text": "Specifies the ID of the item selected from the source data\n   in the dropdown menu.\n\nThe ID should be unique within the source collection to\n   correctly associate the chosen option with its\n   corresponding data entry."
      },
      "attribute": "value",
      "reflect": true,
      "defaultValue": "this.selectType === 'multiple' ? [] : ''"
    },
    "isValid": {
      "type": "boolean",
      "mutable": true,
      "complexType": {
        "original": "boolean | null",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.3.0"
          }],
        "text": "Indicates the current validation status of the user's selection\n   from the dropdown menu."
      },
      "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": "vegaVersion",
            "text": "1.0.11"
          }],
        "text": "Specifies whether the system should automatically carry out\n   validation checks on the user's selection in real-time,\n   ensuring that the input adheres to predefined criteria before\n   submission or proceeding further."
      },
      "attribute": "auto-validation",
      "reflect": false,
      "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": "vegaVersion",
            "text": "1.0.11"
          }],
        "text": "Allows setting custom criteria or constraints that\n   the user's selection in the dropdown menu must\n   comply with."
      },
      "defaultValue": "[]"
    },
    "prefixIcon": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.3.0"
          }],
        "text": "Specifies a prefix icon for visual context or aesthetic enhancement."
      },
      "attribute": "prefix-icon",
      "reflect": false
    },
    "disabled": {
      "type": "boolean",
      "mutable": false,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.3.0"
          }],
        "text": "Specifies whether the input select field is disabled."
      },
      "attribute": "disabled",
      "reflect": true,
      "defaultValue": "false"
    },
    "placeholder": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.0.7"
          }],
        "text": "Specifies a placeholder string that displays as a temporary hint or\n   example inside the input select field.\n\nIt indicates the expected format or pattern of the input."
      },
      "attribute": "placeholder",
      "reflect": false,
      "defaultValue": "'Please select'"
    },
    "hint": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.3.0"
          }],
        "text": "Provides a supplementary prompt message that assists users in\n   understanding the expected value for the input select field."
      },
      "attribute": "hint",
      "reflect": false
    },
    "vegaDropdownProps": {
      "type": "unknown",
      "mutable": false,
      "complexType": {
        "original": "VegaDropdownPropsForSelect",
        "resolved": "{ size?: ResponsiveType<SizeType>; matchTargetWidth?: boolean; maxHeight?: number; positionRelativeTo?: string; searchable?: boolean; itemDisplayRule?: \"ellipsis\" | \"newline\"; resettable?: boolean; matchContainerHeight?: boolean; isScreenPosition?: boolean; caseSensitive?: boolean; useDefaultFilter?: boolean; searchTriggerBy?: VegaDropdownSearchTriggerByType; preserveValueIfNotInSource?: boolean; }",
        "references": {
          "VegaDropdownPropsForSelect": {
            "location": "import",
            "path": "./types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.3.0"
          }],
        "text": "Provides partial properties for the `vega-dropdown` component used\n   in the input select element.\n\nYou can specify custom properties and their corresponding values as needed."
      },
      "defaultValue": "{}"
    },
    "selectedLabelTooltipProps": {
      "type": "unknown",
      "mutable": false,
      "complexType": {
        "original": "VegaInputSelectTooltipProps",
        "resolved": "{ minWidth?: ResponsiveType<SizeType>; maxWidth?: ResponsiveType<SizeType>; placement?: ElementAppenderPlacementType; }",
        "references": {
          "VegaInputSelectTooltipProps": {
            "location": "import",
            "path": "./types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.82.0"
          }],
        "text": "Provides tooltip configuration for the selected label text.\n\nUse this to control tooltip placement, width, and other display properties."
      },
      "defaultValue": "{}"
    },
    "dropdownItemTooltipProps": {
      "type": "unknown",
      "mutable": false,
      "complexType": {
        "original": "VegaInputSelectDropdownTooltipProps",
        "resolved": "{ minWidth?: ResponsiveType<SizeType>; maxWidth?: ResponsiveType<SizeType>; placement?: ElementAppenderPlacementType; }",
        "references": {
          "VegaInputSelectDropdownTooltipProps": {
            "location": "import",
            "path": "./types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.82.0"
          }],
        "text": "Provides tooltip configuration for dropdown items.\n\nUse this to control tooltip placement and width for long item labels."
      },
      "defaultValue": "{}"
    },
    "size": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "ResponsiveType<VegaInputSelectSize>",
        "resolved": "\"default\" | \"small\" | { S?: VegaInputSelectSize; M?: VegaInputSelectSize; L?: VegaInputSelectSize; XL?: VegaInputSelectSize; default?: VegaInputSelectSize; }",
        "references": {
          "ResponsiveType": {
            "location": "import",
            "path": "../../types/ui.type"
          },
          "VegaInputSelectSize": {
            "location": "import",
            "path": "./types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.18.0"
          }],
        "text": "Defines the size of the input select field."
      },
      "attribute": "size",
      "reflect": false,
      "defaultValue": "'default'"
    },
    "sourceLazyLoadCallback": {
      "type": "unknown",
      "mutable": false,
      "complexType": {
        "original": "VegaInputSelectSourceLazyLoadCallback",
        "resolved": "(endIndex: number) => Promise<VegaInputSourceLazyLoadResponse>",
        "references": {
          "VegaInputSelectSourceLazyLoadCallback": {
            "location": "import",
            "path": "./types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.3.0"
          }],
        "text": "Specifies the callback function for source lazy loading, which returns new data to load.\n\nWhen the dropdown reaches the bottom, this function is triggered and\n    receives the current end index as a parameter."
      }
    }
  }; }
  static get states() { return {
    "isDropdownShow": {},
    "currentBreakpoint": {},
    "isLazyLoading": {},
    "selectedItem": {}
  }; }
  static get events() { return [{
      "method": "vegaChange",
      "name": "vegaChange",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.0.11"
          }],
        "text": "An event emitter notifying the change of the select value."
      },
      "complexType": {
        "original": "SelectValueType<SelectType>",
        "resolved": "string | string[]",
        "references": {
          "SelectValueType": {
            "location": "import",
            "path": "./types"
          },
          "SelectType": {
            "location": "import",
            "path": "./types"
          }
        }
      }
    }, {
      "method": "change",
      "name": "change",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventSemantics",
            "text": "namespace:native"
          }, {
            "name": "vegaVersion",
            "text": "2.0.0"
          }],
        "text": "An event emitter notifying the change of the select value."
      },
      "complexType": {
        "original": "SelectValueType<SelectType>",
        "resolved": "string | string[]",
        "references": {
          "SelectValueType": {
            "location": "import",
            "path": "./types"
          },
          "SelectType": {
            "location": "import",
            "path": "./types"
          }
        }
      }
    }, {
      "method": "vegaSearch",
      "name": "vegaSearch",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.50.0"
          }],
        "text": "An event emitter notifying the search of the dropdown."
      },
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      }
    }, {
      "method": "search",
      "name": "search",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventSemantics",
            "text": "namespace:native"
          }, {
            "name": "vegaVersion",
            "text": "2.0.0"
          }],
        "text": "An event emitter notifying the search of the dropdown."
      },
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      }
    }, {
      "method": "vegaSearchTrigger",
      "name": "vegaSearchTrigger",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.30.0"
          }],
        "text": "An event emitter notifying the search event triggered within the dropdown,\n   but only if `useDefaultFilter` is set to `false`.\nUnlike the Vegasearch event, this event includes the details of the user who triggered it.\nIt can be triggered in two ways: by pressing \"Enter\" or through user input."
      },
      "complexType": {
        "original": "VegaDropdownSearchTriggerEventDetail",
        "resolved": "{ searchBy: VegaDropdownSearchTriggerByType; value: string; }",
        "references": {
          "VegaDropdownSearchTriggerEventDetail": {
            "location": "import",
            "path": "../vega-dropdown/types"
          }
        }
      }
    }, {
      "method": "searchTrigger",
      "name": "searchTrigger",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventSemantics",
            "text": "namespace:native"
          }, {
            "name": "vegaVersion",
            "text": "2.30.0"
          }],
        "text": "An event emitter notifying the search event triggered within the dropdown,\nUnlike the Vegasearch event, this event includes the details of the user who triggered it.\nIt can be triggered in two ways: by pressing \"Enter\" or through user input."
      },
      "complexType": {
        "original": "VegaDropdownSearchTriggerEventDetail",
        "resolved": "{ searchBy: VegaDropdownSearchTriggerByType; value: string; }",
        "references": {
          "VegaDropdownSearchTriggerEventDetail": {
            "location": "import",
            "path": "../vega-dropdown/types"
          }
        }
      }
    }, {
      "method": "vegaShow",
      "name": "vegaShow",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.32.0"
          }],
        "text": "An event emitter notifying that the input-select has been opened,\n   either programmatically or via user interaction."
      },
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      }
    }, {
      "method": "vegaHide",
      "name": "vegaHide",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.32.0"
          }],
        "text": "Event emitter notifying that the input-select has been dismissed,\n   either programmatically or via user interaction."
      },
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      }
    }, {
      "method": "vegaLabelButtonClick",
      "name": "vegaLabelButtonClick",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.68.0"
          }],
        "text": "An event emitter notifying that the suffix button associated with the field label has been clicked."
      },
      "complexType": {
        "original": "any",
        "resolved": "any",
        "references": {}
      }
    }, {
      "method": "labelButtonClick",
      "name": "labelButtonClick",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventSemantics",
            "text": "namespace:native"
          }, {
            "name": "vegaVersion",
            "text": "2.68.0"
          }],
        "text": "An event emitter notifying that the suffix button associated with the field label has been clicked."
      },
      "complexType": {
        "original": "any",
        "resolved": "any",
        "references": {}
      }
    }]; }
  static get methods() { return {
    "doClose": {
      "complexType": {
        "signature": "() => Promise<void>",
        "parameters": [],
        "references": {
          "Promise": {
            "location": "global"
          }
        },
        "return": "Promise<void>"
      },
      "docs": {
        "text": "Invoke this method to close the select dropdown and clear\n   the dropdown element reference.",
        "tags": [{
            "name": "vegaVersion",
            "text": "1.0.7"
          }]
      }
    },
    "doOpen": {
      "complexType": {
        "signature": "() => Promise<void>",
        "parameters": [],
        "references": {
          "Promise": {
            "location": "global"
          }
        },
        "return": "Promise<void>"
      },
      "docs": {
        "text": "Invoke this method to open the select dropdown.",
        "tags": [{
            "name": "vegaVersion",
            "text": "1.0.7"
          }]
      }
    },
    "doChange": {
      "complexType": {
        "signature": "(value: SelectValueType<SelectType>) => Promise<void>",
        "parameters": [{
            "tags": [],
            "text": ""
          }],
        "references": {
          "Promise": {
            "location": "global"
          },
          "SelectValueType": {
            "location": "import",
            "path": "./types"
          },
          "SelectType": {
            "location": "import",
            "path": "./types"
          }
        },
        "return": "Promise<void>"
      },
      "docs": {
        "text": "Invoke this method to change the ID of the select source item.",
        "tags": [{
            "name": "vegaVersion",
            "text": "1.0.7"
          }]
      }
    }
  }; }
  static get elementRef() { return "host"; }
  static get watchers() { return [{
      "propName": "selectType",
      "methodName": "watchSelectType"
    }, {
      "propName": "source",
      "methodName": "watchSource"
    }, {
      "propName": "value",
      "methodName": "watchValue"
    }, {
      "propName": "validationRules",
      "methodName": "watchValidationRules"
    }, {
      "propName": "vegaDropdownProps",
      "methodName": "watchVegaDropdownProps"
    }, {
      "propName": "selectedLabelTooltipProps",
      "methodName": "watchSelectedLabelTooltipProps"
    }, {
      "propName": "dropdownItemTooltipProps",
      "methodName": "watchDropdownItemTooltipProps"
    }]; }
}
__decorate([
  InjectVegaGlobalSlimmer()
], VegaInputSelect.prototype, "globalSlimmers", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputSelect.prototype, "translationSlimmer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputSelect.prototype, "sourceController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputSelect.prototype, "vegaInputSelectRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputSelect.prototype, "vegaInputSelectPrefixIconRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputSelect.prototype, "vegaInputSelectDropdownController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputSelect.prototype, "vegaInputSelectValueController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputSelect.prototype, "vegaInputSelectDropdownRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputSelect.prototype, "vegaInputSelectItemsSlotController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputSelect.prototype, "vegaInputSelectItemController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputSelect.prototype, "formFieldControllerSlimmer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputSelect.prototype, "pageResizeObserverSlimmer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputSelect.prototype, "lazyLoadController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputSelect.prototype, "changeEventEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputSelect.prototype, "searchEventEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputSelect.prototype, "searchTriggerEventEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputSelect.prototype, "showEventEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputSelect.prototype, "hideEventEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputSelect.prototype, "labelButtonClickEventEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputSelect.prototype, "eventPrevent", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputSelect.prototype, "vegaComponentUsageRuntimeMetricsSlimmer", void 0);
