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, Element, Host, Prop, Watch, h, State, Event } from '@stencil/core';
import { sanitizeVegaComponent } from '../../utils/component';
import { InjectVegaGlobalSlimmer, InjectVegaSlimmer, methodPlaceholder, } from 'vega-slimmer/core';
import { VegaInputPhoneNumberRenderer } from './slimmers/renderers/vega-input-phone-number-renderer';
import { CountrySelectRenderer } from './slimmers/renderers/country-select-renderer';
import { PhoneNumberInputRenderer } from './slimmers/renderers/phone-number-input-renderer';
import { getCountryCallingCode } from '../../polyfill/libphonenumber';
import { VegaInputPhoneNumberValueController } from './slimmers/controllers/vega-input-phone-number-value-controller';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
import { AriaAttributesValueMapper } from '../../helpers/slimmers/mutation-observer/aria-attributes-value-mapper';
import { FormFieldControllerSlimmer } from '../../helpers/slimmers/form-field-controller-slimmer';
import { ValidPhoneNumberRule } from '../../helpers/validator/rules/valid-phone-number-rule';
import { CountrySelectController } from './slimmers/controllers/country-select-controller';
import { createEventEmitSlimmer, } from '../../helpers/event-manager/slimmers/event-emit-slimmer';
import { VegaChange, VegaCountryChange } from '../../helpers/event-manager/event-id/vega-event-id';
import { InputPhoneNumberRequiredRule } from '../../helpers/validator/rules/input-phone-number-required-rule';
import { ChildNodesEventPreventSlimmer } from '../../helpers/event-manager/slimmers/child-nodes-event-prevent-slimmer';
/**
 * @vegaVersion 2.18.0
 */
export class VegaInputPhoneNumber {
  constructor() {
    this.globalSlimmers = {};
    this.vegaComponentUsageRuntimeMetricsSlimmer = new VegaComponentUsageRuntimeMetricsSlimmer();
    this.valueController = new VegaInputPhoneNumberValueController();
    this.inputPhoneNumberRenderer = new VegaInputPhoneNumberRenderer();
    this.countrySelectRenderer = new CountrySelectRenderer();
    this.phoneNumberInputRenderer = new PhoneNumberInputRenderer();
    this.countrySelectController = new CountrySelectController();
    this.changeEventEmitter = createEventEmitSlimmer(VegaInputPhoneNumber, VegaChange);
    this.countryChangeEventEmitter = createEventEmitSlimmer(VegaInputPhoneNumber, VegaCountryChange);
    this.ariaAttributesValueMapper = new AriaAttributesValueMapper(() => this.host.shadowRoot.querySelector('vega-input'), {
      'data-aria-label': {
        dependency: ['data-aria-label', 'label'],
        defaultValue: 'No label defined',
      },
    });
    this.inputPhoneNumberEventPrevent = new ChildNodesEventPreventSlimmer([VegaChange], () => this.host, true);
    this.formFieldController = new FormFieldControllerSlimmer({
      propertyRules: [
        {
          propertyName: 'required',
          ruleFactory: (isRequired) => isRequired
            ? new InputPhoneNumberRequiredRule(() => this.phoneNumberInputValue)
            : null,
        },
        {
          propertyName: 'countryCode',
          ruleFactory: (_countryCode, emptyValueEnabled) => new ValidPhoneNumberRule(() => this.countryCode, emptyValueEnabled),
          dependence: 'emptyValueEnabled',
        },
        // TODO: These code should be optimized in VD-5889
        // The below rule is a hook to make sure the above validation rule could be sync up when the property `emptyValueEnabled` modified.
        {
          propertyName: 'emptyValueEnabled',
          ruleFactory: () => null,
        },
      ],
      validationRulesName: 'validationRules',
      defaultValue: undefined,
      attributeGetter: (propertyName) => this[propertyName],
      inputContainerGetter: () => this.inputPhoneNumberRenderer.getInputPhoneNumberContainerRef(),
      touchableAreaGetter: () => [this.phoneNumberInputRenderer.getInputRef()],
    });
    this.phoneNumberInputValue = '';
    /**
     * Specifies the visible label text rendered above the phone number input.
     * The label identifies the purpose of the field and serves as the
     * accessible name for screen readers.
     *
     * @default ''
     * @vegaVersion 2.18.0
     */
    this.label = '';
    /**
     * Controls the visual size of the phone number input field.
     *
     * - `'default'` — Standard height, suitable for most form layouts.
     * - `'small'` — Compact height, useful for dense UIs.
     *
     * @default 'default'
     * @vegaVersion 2.18.0
     */
    this.size = 'default';
    /**
     * Determines whether the phone number input field must have a value before
     * the form can be submitted. When `true`, the built-in
     * `InputPhoneNumberRequiredRule` is applied during validation and a
     * required indicator is shown on the label.
     *
     * @default false
     * @vegaVersion 2.18.0
     */
    /* eslint-disable-next-line @stencil/strict-mutable */
    this.required = false;
    /**
     * Specifies whether the phone number input field is disabled. When `true`,
     * both the country selector and the phone number text field become
     * non-interactive — the user cannot type, select a country, or focus
     * any part of the component.
     *
     * @default false
     * @vegaVersion 2.18.0
     */
    this.disabled = false;
    /**
     * Specifies the currently selected country using a two-letter uppercase
     * ISO 3166-1 alpha-2 code (e.g., `'US'`, `'GB'`, `'CN'`). The country
     * code determines the flag icon and calling code prefix displayed in the
     * country selector. Changing this value updates the phone number prefix
     * accordingly.
     *
     * @default 'US'
     * @vegaVersion 2.18.0
     */
    /* eslint-disable-next-line @stencil/strict-mutable */
    this.countryCode = CountrySelectController.defaultCountryCode;
    /**
     * An array of country codes available for selection in the country
     * dropdown. Each entry must be a two-letter uppercase ISO 3166-1 alpha-2
     * code.
     *
     * By default all 245 supported codes are loaded, but providing a smaller
     * subset improves initial render performance.
     *
     * @default VegaCountryCode[] (all 245 codes)
     * @vegaVersion 2.18.0
     */
    this.allowedCountryCodes = CountrySelectController.defaultAllowedCountryCodes;
    /**
     * Controls whether the `value` property can be an empty string.
     *
     * - `true` — The `value` property is cleared to `''` when the user
     *   deletes all digits from the input field.
     * - `false` — The `value` property always retains at least the country
     *   calling code prefix (e.g., `'+1'` for US) even when no phone number
     *   digits have been entered.
     *
     * @default false
     * @vegaVersion 2.35.0
     */
    this.emptyValueEnabled = false;
    /**
     * The current value of the phone number input in
     * [E.164](https://en.wikipedia.org/wiki/E.164) format (e.g., `'+14155552671'`).
     *
     * This property is mutable and reflected to the host element attribute.
     * It updates as the user types and can be set externally to pre-populate
     * or reset the field. When `emptyValueEnabled` is `false` and no digits
     * have been entered, the value defaults to the country calling code
     * prefix (e.g., `'+1'` for US).
     *
     * @default '+1'
     * @vegaVersion 2.18.0
     */
    /* eslint-disable-next-line @stencil/strict-mutable */
    this.value = `+${getCountryCallingCode(this.countryCode)}`;
    /**
     * An array of custom validation rules applied to the phone number input in
     * addition to the built-in rules (`InputPhoneNumberRequiredRule`,
     * `ValidPhoneNumberRule`). Each rule must implement the
     * `FormFieldValidationRule` interface.
     *
     * Rules are evaluated in order when `autoValidation` is enabled or when
     * validation is triggered programmatically.
     *
     * @default []
     * @vegaVersion 2.18.0
     */
    this.validationRules = [];
    /**
     * Reflects the current validation status of the phone number input.
     *
     * - `true` — the field value passes all validation rules.
     * - `false` — one or more validation rules have failed.
     * - `null` — the field has not been validated yet (initial state).
     *
     * This property is mutable: it is updated automatically when
     * `autoValidation` is enabled, but can also be set manually to override
     * the validation state.
     *
     * @default null
     * @vegaVersion 2.18.0
     */
    /* eslint-disable-next-line @stencil/strict-mutable */
    this.isValid = null;
    /**
     * Determines whether the phone number input should be validated
     * automatically as the user interacts with it. When `true`, validation
     * rules (including `required`, `ValidPhoneNumberRule`, and custom
     * `validationRules`) are evaluated and the `isValid` property is updated
     * accordingly.
     *
     * Set to `false` to handle validation manually.
     *
     * @default true
     * @vegaVersion 2.18.0
     */
    this.autoValidation = true;
    /**
     * Supplementary helper message displayed below the phone number input that
     * assists users in understanding the expected value or provides additional
     * context (e.g., `'We will send a verification code to this number'`).
     *
     * @default ''
     * @vegaVersion 2.18.0
     */
    this.hint = '';
  }
  watchCountryCode(newCountryCode, oldCountryCode) {
    methodPlaceholder(newCountryCode, oldCountryCode);
  }
  watchEmptyValueEnabled() {
    methodPlaceholder();
  }
  watchValue(newValue, oldValue) {
    methodPlaceholder(newValue, oldValue);
  }
  watchValidationRules() {
    methodPlaceholder();
  }
  render() {
    return sanitizeVegaComponent(h(Host, null, this.inputPhoneNumberRenderer.render()), this.host);
  }
  static get is() { return "vega-input-phone-number"; }
  static get encapsulation() { return "shadow"; }
  static get originalStyleUrls() { return {
    "$": ["vega-input-phone-number.scss"]
  }; }
  static get styleUrls() { return {
    "$": ["vega-input-phone-number.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": "2.18.0"
          }],
        "text": "Specifies the visible label text rendered above the phone number input.\nThe label identifies the purpose of the field and serves as the\naccessible name for screen readers."
      },
      "attribute": "label",
      "reflect": false,
      "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": "2.18.0"
          }],
        "text": "Controls the visual size of the phone number input field.\n\n- `'default'` \u2014 Standard height, suitable for most form layouts.\n- `'small'` \u2014 Compact height, useful for dense UIs."
      },
      "attribute": "size",
      "reflect": false,
      "defaultValue": "'default'"
    },
    "required": {
      "type": "boolean",
      "mutable": true,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "false"
          }, {
            "name": "vegaVersion",
            "text": "2.18.0"
          }],
        "text": "Determines whether the phone number input field must have a value before\nthe form can be submitted. When `true`, the built-in\n`InputPhoneNumberRequiredRule` is applied during validation and a\nrequired indicator is shown on the label."
      },
      "attribute": "required",
      "reflect": true,
      "defaultValue": "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": "2.18.0"
          }],
        "text": "Specifies whether the phone number input field is disabled. When `true`,\nboth the country selector and the phone number text field become\nnon-interactive \u2014 the user cannot type, select a country, or focus\nany part of the component."
      },
      "attribute": "disabled",
      "reflect": true,
      "defaultValue": "false"
    },
    "countryCode": {
      "type": "string",
      "mutable": true,
      "complexType": {
        "original": "VegaCountryCode",
        "resolved": "\"AC\" | \"AD\" | \"AE\" | \"AF\" | \"AG\" | \"AI\" | \"AL\" | \"AM\" | \"AO\" | \"AR\" | \"AS\" | \"AT\" | \"AU\" | \"AW\" | \"AX\" | \"AZ\" | \"BA\" | \"BB\" | \"BD\" | \"BE\" | \"BF\" | \"BG\" | \"BH\" | \"BI\" | \"BJ\" | \"BL\" | \"BM\" | \"BN\" | \"BO\" | \"BQ\" | \"BR\" | \"BS\" | \"BT\" | \"BW\" | \"BY\" | \"BZ\" | \"CA\" | \"CC\" | \"CD\" | \"CF\" | \"CG\" | \"CH\" | \"CI\" | \"CK\" | \"CL\" | \"CM\" | \"CN\" | \"CO\" | \"CR\" | \"CU\" | \"CV\" | \"CW\" | \"CX\" | \"CY\" | \"CZ\" | \"DE\" | \"DJ\" | \"DK\" | \"DM\" | \"DO\" | \"DZ\" | \"EC\" | \"EE\" | \"EG\" | \"EH\" | \"ER\" | \"ES\" | \"ET\" | \"FI\" | \"FJ\" | \"FK\" | \"FM\" | \"FO\" | \"FR\" | \"GA\" | \"GB\" | \"GD\" | \"GE\" | \"GF\" | \"GG\" | \"GH\" | \"GI\" | \"GL\" | \"GM\" | \"GN\" | \"GP\" | \"GQ\" | \"GR\" | \"GT\" | \"GU\" | \"GW\" | \"GY\" | \"HK\" | \"HN\" | \"HR\" | \"HT\" | \"HU\" | \"ID\" | \"IE\" | \"IL\" | \"IM\" | \"IN\" | \"IO\" | \"IQ\" | \"IR\" | \"IS\" | \"IT\" | \"JE\" | \"JM\" | \"JO\" | \"JP\" | \"KE\" | \"KG\" | \"KH\" | \"KI\" | \"KM\" | \"KN\" | \"KP\" | \"KR\" | \"KW\" | \"KY\" | \"KZ\" | \"LA\" | \"LB\" | \"LC\" | \"LI\" | \"LK\" | \"LR\" | \"LS\" | \"LT\" | \"LU\" | \"LV\" | \"LY\" | \"MA\" | \"MC\" | \"MD\" | \"ME\" | \"MF\" | \"MG\" | \"MH\" | \"MK\" | \"ML\" | \"MM\" | \"MN\" | \"MO\" | \"MP\" | \"MQ\" | \"MR\" | \"MS\" | \"MT\" | \"MU\" | \"MV\" | \"MW\" | \"MX\" | \"MY\" | \"MZ\" | \"NA\" | \"NC\" | \"NE\" | \"NF\" | \"NG\" | \"NI\" | \"NL\" | \"NO\" | \"NP\" | \"NR\" | \"NU\" | \"NZ\" | \"OM\" | \"PA\" | \"PE\" | \"PF\" | \"PG\" | \"PH\" | \"PK\" | \"PL\" | \"PM\" | \"PR\" | \"PS\" | \"PT\" | \"PW\" | \"PY\" | \"QA\" | \"RE\" | \"RO\" | \"RS\" | \"RU\" | \"RW\" | \"SA\" | \"SB\" | \"SC\" | \"SD\" | \"SE\" | \"SG\" | \"SH\" | \"SI\" | \"SJ\" | \"SK\" | \"SL\" | \"SM\" | \"SN\" | \"SO\" | \"SR\" | \"SS\" | \"ST\" | \"SV\" | \"SX\" | \"SY\" | \"SZ\" | \"TA\" | \"TC\" | \"TD\" | \"TG\" | \"TH\" | \"TJ\" | \"TK\" | \"TL\" | \"TM\" | \"TN\" | \"TO\" | \"TR\" | \"TT\" | \"TV\" | \"TW\" | \"TZ\" | \"UA\" | \"UG\" | \"US\" | \"UY\" | \"UZ\" | \"VA\" | \"VC\" | \"VE\" | \"VG\" | \"VI\" | \"VN\" | \"VU\" | \"WF\" | \"WS\" | \"XK\" | \"YE\" | \"YT\" | \"ZA\" | \"ZM\" | \"ZW\"",
        "references": {
          "VegaCountryCode": {
            "location": "import",
            "path": "../../types/flag.type"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "'US'"
          }, {
            "name": "vegaVersion",
            "text": "2.18.0"
          }],
        "text": "Specifies the currently selected country using a two-letter uppercase\nISO 3166-1 alpha-2 code (e.g., `'US'`, `'GB'`, `'CN'`). The country\ncode determines the flag icon and calling code prefix displayed in the\ncountry selector. Changing this value updates the phone number prefix\naccordingly."
      },
      "attribute": "country-code",
      "reflect": true,
      "defaultValue": "CountrySelectController.defaultCountryCode"
    },
    "allowedCountryCodes": {
      "type": "unknown",
      "mutable": false,
      "complexType": {
        "original": "VegaCountryCode[]",
        "resolved": "VegaCountryCode[]",
        "references": {
          "VegaCountryCode": {
            "location": "import",
            "path": "../../types/flag.type"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "VegaCountryCode[] (all 245 codes)"
          }, {
            "name": "vegaVersion",
            "text": "2.18.0"
          }],
        "text": "An array of country codes available for selection in the country\ndropdown. Each entry must be a two-letter uppercase ISO 3166-1 alpha-2\ncode.\n\nBy default all 245 supported codes are loaded, but providing a smaller\nsubset improves initial render performance."
      },
      "defaultValue": "CountrySelectController.defaultAllowedCountryCodes"
    },
    "emptyValueEnabled": {
      "type": "boolean",
      "mutable": false,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "false"
          }, {
            "name": "vegaVersion",
            "text": "2.35.0"
          }],
        "text": "Controls whether the `value` property can be an empty string.\n\n- `true` \u2014 The `value` property is cleared to `''` when the user\n  deletes all digits from the input field.\n- `false` \u2014 The `value` property always retains at least the country\n  calling code prefix (e.g., `'+1'` for US) even when no phone number\n  digits have been entered."
      },
      "attribute": "empty-value-enabled",
      "reflect": false,
      "defaultValue": "false"
    },
    "value": {
      "type": "string",
      "mutable": true,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "'+1'"
          }, {
            "name": "vegaVersion",
            "text": "2.18.0"
          }],
        "text": "The current value of the phone number input in\n[E.164](https://en.wikipedia.org/wiki/E.164) format (e.g., `'+14155552671'`).\n\nThis property is mutable and reflected to the host element attribute.\nIt updates as the user types and can be set externally to pre-populate\nor reset the field. When `emptyValueEnabled` is `false` and no digits\nhave been entered, the value defaults to the country calling code\nprefix (e.g., `'+1'` for US)."
      },
      "attribute": "value",
      "reflect": true,
      "defaultValue": "`+${getCountryCallingCode(this.countryCode)}`"
    },
    "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": "2.18.0"
          }],
        "text": "An array of custom validation rules applied to the phone number input in\naddition to the built-in rules (`InputPhoneNumberRequiredRule`,\n`ValidPhoneNumberRule`). Each rule must implement the\n`FormFieldValidationRule` interface.\n\nRules are evaluated in order when `autoValidation` is enabled or when\nvalidation is triggered programmatically."
      },
      "defaultValue": "[]"
    },
    "isValid": {
      "type": "boolean",
      "mutable": true,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "null"
          }, {
            "name": "vegaVersion",
            "text": "2.18.0"
          }],
        "text": "Reflects the current validation status of the phone number input.\n\n- `true` \u2014 the field value passes all validation rules.\n- `false` \u2014 one or more validation rules have failed.\n- `null` \u2014 the field has not been validated yet (initial state).\n\nThis property is mutable: it is updated automatically when\n`autoValidation` is enabled, but can also be set manually to override\nthe validation state."
      },
      "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": "2.18.0"
          }],
        "text": "Determines whether the phone number input should be validated\nautomatically as the user interacts with it. When `true`, validation\nrules (including `required`, `ValidPhoneNumberRule`, and custom\n`validationRules`) are evaluated and the `isValid` property is updated\naccordingly.\n\nSet to `false` to handle validation manually."
      },
      "attribute": "auto-validation",
      "reflect": true,
      "defaultValue": "true"
    },
    "placeholder": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "undefined"
          }, {
            "name": "vegaVersion",
            "text": "2.18.0"
          }],
        "text": "Specifies placeholder text displayed inside the phone number text field\nwhen it is empty. The placeholder disappears once the user begins typing\nand is typically used to indicate the expected format\n(e.g., `'(555) 555-5555'`)."
      },
      "attribute": "placeholder",
      "reflect": false
    },
    "hint": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "default",
            "text": "''"
          }, {
            "name": "vegaVersion",
            "text": "2.18.0"
          }],
        "text": "Supplementary helper message displayed below the phone number input that\nassists users in understanding the expected value or provides additional\ncontext (e.g., `'We will send a verification code to this number'`)."
      },
      "attribute": "hint",
      "reflect": false,
      "defaultValue": "''"
    }
  }; }
  static get states() { return {
    "phoneNumberInputValue": {}
  }; }
  static get events() { return [{
      "method": "vegaChange",
      "name": "vegaChange",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventDetail",
            "text": "string"
          }, {
            "name": "vegaVersion",
            "text": "2.18.0"
          }],
        "text": "Fires whenever the phone number value changes \u2014 including typing,\npasting, or programmatic updates. The event detail contains the full\nphone number in E.164 format (e.g., `'+14155552671'`)."
      },
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      }
    }, {
      "method": "change",
      "name": "change",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventDetail",
            "text": "string"
          }, {
            "name": "eventSemantics",
            "text": "namespace:native"
          }, {
            "name": "vegaVersion",
            "text": "2.18.0"
          }],
        "text": "Native-equivalent mirror of `vegaChange`. Fires with the same payload\nand at the same time, allowing consumers to listen using the standard\n`change` event name."
      },
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      }
    }, {
      "method": "vegaCountryChange",
      "name": "vegaCountryChange",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventDetail",
            "text": "VegaCountryType"
          }, {
            "name": "vegaVersion",
            "text": "2.18.0"
          }],
        "text": "Fires whenever the selected country changes via the country dropdown.\nThe event detail contains a `VegaCountryType` object with the country\ncode, calling code, and display name of the newly selected country."
      },
      "complexType": {
        "original": "VegaCountryType",
        "resolved": "{ callingCode: string; countryCode: VegaCountryCode; name: string; }",
        "references": {
          "VegaCountryType": {
            "location": "import",
            "path": "./types"
          }
        }
      }
    }, {
      "method": "countryChange",
      "name": "countryChange",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventDetail",
            "text": "VegaCountryType"
          }, {
            "name": "eventSemantics",
            "text": "namespace:native"
          }, {
            "name": "vegaVersion",
            "text": "2.18.0"
          }],
        "text": "Native-equivalent mirror of `vegaCountryChange`. Fires with the same\npayload and at the same time, allowing consumers to listen using the\nstandard `countryChange` event name."
      },
      "complexType": {
        "original": "VegaCountryType",
        "resolved": "{ callingCode: string; countryCode: VegaCountryCode; name: string; }",
        "references": {
          "VegaCountryType": {
            "location": "import",
            "path": "./types"
          }
        }
      }
    }]; }
  static get elementRef() { return "host"; }
  static get watchers() { return [{
      "propName": "countryCode",
      "methodName": "watchCountryCode"
    }, {
      "propName": "emptyValueEnabled",
      "methodName": "watchEmptyValueEnabled"
    }, {
      "propName": "value",
      "methodName": "watchValue"
    }, {
      "propName": "validationRules",
      "methodName": "watchValidationRules"
    }]; }
}
__decorate([
  InjectVegaGlobalSlimmer()
], VegaInputPhoneNumber.prototype, "globalSlimmers", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputPhoneNumber.prototype, "vegaComponentUsageRuntimeMetricsSlimmer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputPhoneNumber.prototype, "valueController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputPhoneNumber.prototype, "inputPhoneNumberRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputPhoneNumber.prototype, "countrySelectRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputPhoneNumber.prototype, "phoneNumberInputRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputPhoneNumber.prototype, "countrySelectController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputPhoneNumber.prototype, "changeEventEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputPhoneNumber.prototype, "countryChangeEventEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputPhoneNumber.prototype, "ariaAttributesValueMapper", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputPhoneNumber.prototype, "inputPhoneNumberEventPrevent", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaInputPhoneNumber.prototype, "formFieldController", void 0);
