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, Event, Method, Prop, State, Watch } from '@stencil/core';
import { sanitizeVegaComponent } from '../../utils/component';
import { DateRequiredRule } from '../../helpers/validator/rules/date-required-rule';
import { DateRangeRule } from '../../helpers/validator/rules/date-range-rule';
import { MinAndMaxDateRule } from '../../helpers/validator/rules/min-and-max-date-rule';
import { InjectVegaGlobalSlimmer, InjectVegaSlimmer, methodPlaceholder, } from 'vega-slimmer/core';
import { FormFieldControllerSlimmer } from '../../helpers/slimmers/form-field-controller-slimmer';
import { VegaDatePickerRenderer } from './slimmers/renderers/vega-date-picker-renderer';
import { VegaDatePickerSingleInputRenderer } from './slimmers/renderers/vega-date-picker-single-input-renderer';
import { VegaDatePickerRangeInputRenderer } from './slimmers/renderers/vega-date-picker-range-input-renderer';
import { VegaDatePickerCalendarRenderer } from './slimmers/renderers/vega-date-picker-calendar-renderer';
import { VegaDatePickerValueController } from './slimmers/controllers/vega-date-picker-value-controller';
import { VegaDatePickerFormatController } from './slimmers/controllers/vega-date-picker-format-controller';
import { VegaDatePickerKeyboardController } from './slimmers/controllers/vega-date-picker-keyboard-controller';
import { ComponentLoadRequired } from '../../decorators/method-decorators/component-load-required';
import { createEventEmitSlimmer, } from '../../helpers/event-manager/slimmers/event-emit-slimmer';
import { VegaChange, VegaClear, VegaMonthYearChange, } from '../../helpers/event-manager/event-id/vega-event-id';
import { ChildNodesEventPreventSlimmer } from '../../helpers/event-manager/slimmers/child-nodes-event-prevent-slimmer';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
import { VegaDatePickerRuntimeMetricsPayloadDefinition } from '../../constants/runtime-metrics-payload-definition/vega-date-picker/runtime-metrics-payload-definition';
import { TranslationSlimmer } from '../../helpers/slimmers/translation';
import { DeviceType } from '../../types/ui.type';
import { getDeviceType } from '../../utils/ui';
import { VegaDatePickerCalendarOpenStateController } from './slimmers/controllers/vega-date-picker-calendar-open-state-controller';
/**
 * @vegaVersion 1.3.0
 */
export class VegaDatePicker {
  constructor() {
    this.globalSlimmers = {};
    this.translationSlimmer = new TranslationSlimmer();
    this.calendarOpenStateController = new VegaDatePickerCalendarOpenStateController();
    this.vegaDatePickerValueController = new VegaDatePickerValueController();
    this.vegaDatePickerFormatController = new VegaDatePickerFormatController('single');
    this.startInputFormatController = new VegaDatePickerFormatController('rangeStart');
    this.endInputFormatController = new VegaDatePickerFormatController('rangeEnd');
    this.vegaDatePickerKeyboardController = new VegaDatePickerKeyboardController();
    this.vegaDatePickerRenderer = new VegaDatePickerRenderer();
    this.vegaDatePickerSingleInputRenderer = new VegaDatePickerSingleInputRenderer();
    this.vegaDatePickerRangeInputRenderer = new VegaDatePickerRangeInputRenderer();
    this.vegaDatePickerCalendarRenderer = new VegaDatePickerCalendarRenderer();
    this.formFieldController = new FormFieldControllerSlimmer({
      propertyRules: [
        {
          propertyName: 'required',
          ruleFactory: (isRequired, mode) => isRequired ? new DateRequiredRule({ mode }) : null,
          dependence: 'mode',
        },
        {
          propertyName: 'mode',
          ruleFactory: (mode) => (mode === 'range' ? new DateRangeRule() : null),
        },
        {
          propertyName: 'minDate',
          ruleFactory: (minDate, maxDate) => new MinAndMaxDateRule({ minDate: minDate, maxDate }),
          dependence: 'maxDate',
        },
        {
          propertyName: 'maxDate',
          ruleFactory: (maxDate, minDate) => new MinAndMaxDateRule({ minDate, maxDate: maxDate }),
          dependence: 'minDate',
        },
      ],
      validationRulesName: 'validationRules',
      defaultValue: (target) => (target.mode === 'range' ? ['', ''] : ''),
      attributeGetter: (propertyName) => this[propertyName],
      inputContainerGetter: () => this.vegaDatePickerRenderer.getDatePickerContainer(),
      touchableAreaGetter: () => {
        return [
          this.vegaDatePickerSingleInputRenderer.getSingleDateInputRef(),
          this.vegaDatePickerRangeInputRenderer.getStartDateInputRef(),
          this.vegaDatePickerRangeInputRenderer.getEndDateInputRef(),
        ].filter(Boolean);
      },
    });
    this.changeEventEmitter = createEventEmitSlimmer(VegaDatePicker, VegaChange);
    this.monthYearChangeEventEmitter = createEventEmitSlimmer(VegaDatePicker, VegaMonthYearChange);
    this.inputEventPrevent = new ChildNodesEventPreventSlimmer([VegaChange, VegaClear, VegaMonthYearChange], () => this.vegaDatePickerCalendarRenderer.getCalendarRef());
    this.vegaComponentUsageRuntimeMetricsSlimmer = new VegaComponentUsageRuntimeMetricsSlimmer(VegaDatePickerRuntimeMetricsPayloadDefinition);
    this.isMobileDevice = getDeviceType() === DeviceType.MOBILE;
    this.isCalendarShow = false;
    /**
     * Specifies the selection mode of the date picker.
     *
     *  - Use `single` to allow selecting a single date.
     *  - Use `range` to allow selecting a date range.
     *
     * @vegaVersion 1.3.0
     */
    this.mode = 'single';
    /**
     * Specifies the selected date or date range in the date picker.
     *
     * @vegaVersion 1.3.0
     */
    /* eslint-disable-next-line @stencil/strict-mutable */
    this.value = this.mode === 'range' ? ['', ''] : '';
    /**
     * Determines whether the date picker field is required.
     *
     * Specifies whether a date or range must be selected for
     *    the date picker to pass form validation.
     *
     * @vegaVersion 1.3.0
     */
    this.required = false;
    /**
     * Specifies the validation status of the date picker component.
     *
     * @vegaVersion 1.3.0
     */
    /* eslint-disable-next-line @stencil/strict-mutable */
    this.isValid = null;
    /**
     * Determines whether automatic validation should be implemented
     *    when a date or range is selected.
     *
     * @vegaVersion 1.3.0
     */
    this.autoValidation = true;
    /**
     * Specifies the desired date format.
     *
     * @vegaVersion 1.3.0
     */
    this.format = 'MM/DD/YYYY';
    /**
     * Specifies the size of the date picker field.
     *
     * @vegaVersion 1.3.0
     */
    this.size = 'default';
    /**
     * Specifies custom validation rules for the date picker field.
     *
     * @vegaVersion 1.3.0
     */
    this.validationRules = [];
    /**
     * Specifies whether to display the clear button when the calendar is shown.
     *
     * @vegaVersion 1.3.0
     */
    this.clearButton = false;
    /**
     * Specifies whether the date picker field is set to read-only.
     *
     * If set to `true`, keyboards and touch devices will skip
     *    interacting with this element.
     *
     * @vegaVersion 1.3.0
     */
    this.readOnly = false;
    /**
     * Specifies whether the user is allowed to change either the
     *    start date or end date of an already selected date range
     *    without completely resetting the selected range.
     *
     * @vegaVersion 1.3.0
     */
    this.allowRepick = false;
    /**
     * Specifies the configuration for the calendar dropdown
     *    associated with the date picker.
     *
     * @vegaVersion 1.5.0
     */
    this.dropdownConfig = {};
    /**
     * Determines whether the clear icon should be displayed or hidden.
     *
     * @vegaVersion 2.33.0
     */
    this.showClearIcon = true;
    /**
     * Determines whether to show months and years dropdown in date picker
     * If set to true, date picker calendar will have months and years dropdown
     *
     * @vegaVersion 2.36.0
     */
    this.showYearMonthDropdowns = false;
    /**
     * Specifies whether the date picker field is disabled.
     *
     * @vegaVersion 1.3.0
     */
    this.disabled = false;
    /**
     * Specifies a predicate function that determines whether a given date in the date picker should be disabled (non-interactive).
     *
     * The function is called for each date cell before rendering.
     *
     * Return `true` to disable the cell, or false to keep it selectable.
     * Default behavior: always returns `false` (no cells are disabled).
     *
     * @param date - The `Date` object for the cell being evaluated.
     * @returns `true` if the cell should be disabled; otherwise `false`.
     * @vegaVersion 2.60.0
     */
    this.isDateDisabled = () => false;
  }
  watchIsCalendarShow() {
    methodPlaceholder();
  }
  /*
   * The below method is e2e-test covered in
   * @see{module:vega-date-picker-mode-change}
   */
  /* istanbul ignore next */
  /** Update datePicker settings property of mode is changed */
  watchMode() {
    methodPlaceholder();
  }
  watchValue(newValue, oldValue) {
    methodPlaceholder(newValue, oldValue);
  }
  /*
   * The below method is e2e-test covered in
   * @see{module:vega-date-picker-change-mask-format}
   * @see{module:vega-date-picker-range-mode-change-mask-format}
   */
  /* istanbul ignore next */
  /**
   * It is decorated with the `@MapToComponentMethod` decorator,
   * which indicates that this method should be mapped to a component method called 'format'.
   *
   * @param {string} format - The value of the format.
   */
  watchFormat(format) {
    methodPlaceholder(format);
  }
  watchValidationRules() {
    methodPlaceholder();
  }
  watchMinDate(value) {
    methodPlaceholder(value);
  }
  watchMaxDate(value) {
    methodPlaceholder(value);
  }
  /*
   * The below method is e2e-test covered in
   * @see{module:vega-date-picker-range-mode-repick-start-date-or-end-date}
   */
  /* istanbul ignore next */
  /** Update property of allowRepick when it is changed */
  watchAllowRepick() {
    methodPlaceholder();
  }
  watchShowYearMonthDropdowns() {
    methodPlaceholder();
  }
  watchDisabled() {
    methodPlaceholder();
  }
  /**
   * Invoke this method to close the calendar dropdown
   *    associated with the date picker.
   *
   * @see{module:vega-date-picker-click-call-do-open-close}
   * @vegaVersion 1.3.0
   */
  /* istanbul ignore next */
  async doClose() {
    methodPlaceholder();
  }
  /**
   * Invoke this method to open the calendar dropdown
   *    associated with the date picker.
   *
   * @see{module:vega-date-picker-click-call-do-open-close}
   * @vegaVersion 1.3.0
   */
  /* istanbul ignore next */
  async doOpen() {
    methodPlaceholder();
  }
  render() {
    return sanitizeVegaComponent(this.vegaDatePickerRenderer.render(), this.host);
  }
  static get is() { return "vega-date-picker"; }
  static get encapsulation() { return "shadow"; }
  static get originalStyleUrls() { return {
    "$": ["vega-date-picker.scss"]
  }; }
  static get styleUrls() { return {
    "$": ["vega-date-picker.css"]
  }; }
  static get properties() { return {
    "mode": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "DatePickerModeType",
        "resolved": "\"range\" | \"single\"",
        "references": {
          "DatePickerModeType": {
            "location": "import",
            "path": "./types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.3.0"
          }],
        "text": "Specifies the selection mode of the date picker.\n\n - Use `single` to allow selecting a single date.\n - Use `range` to allow selecting a date range."
      },
      "attribute": "mode",
      "reflect": false,
      "defaultValue": "'single'"
    },
    "value": {
      "type": "string",
      "mutable": true,
      "complexType": {
        "original": "DatePickerValueType<DatePickerModeType>",
        "resolved": "[string, string] | string",
        "references": {
          "DatePickerValueType": {
            "location": "import",
            "path": "./types"
          },
          "DatePickerModeType": {
            "location": "import",
            "path": "./types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.3.0"
          }],
        "text": "Specifies the selected date or date range in the date picker."
      },
      "attribute": "value",
      "reflect": true,
      "defaultValue": "this.mode === 'range' ? ['', ''] : ''"
    },
    "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 date picker field.\n\nIt provides descriptive text that helps identify the\n   purpose or content expected in the date picker field."
      },
      "attribute": "label",
      "reflect": false
    },
    "required": {
      "type": "boolean",
      "mutable": false,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.3.0"
          }],
        "text": "Determines whether the date picker field is required.\n\nSpecifies whether a date or range must be selected for\n   the date picker to pass form validation."
      },
      "attribute": "required",
      "reflect": true,
      "defaultValue": "false"
    },
    "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": "Specifies the validation status of the date picker component."
      },
      "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.3.0"
          }],
        "text": "Determines whether automatic validation should be implemented\n   when a date or range is selected."
      },
      "attribute": "auto-validation",
      "reflect": true,
      "defaultValue": "true"
    },
    "format": {
      "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 desired date format."
      },
      "attribute": "format",
      "reflect": false,
      "defaultValue": "'MM/DD/YYYY'"
    },
    "size": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "'default' | 'small'",
        "resolved": "\"default\" | \"small\"",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.3.0"
          }],
        "text": "Specifies the size of the date picker field."
      },
      "attribute": "size",
      "reflect": false,
      "defaultValue": "'default'"
    },
    "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.3.0"
          }],
        "text": "Specifies custom validation rules for the date picker field."
      },
      "defaultValue": "[]"
    },
    "minDate": {
      "type": "string",
      "mutable": true,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.3.0"
          }],
        "text": "Specifies the minimum selectable date in the date picker."
      },
      "attribute": "min-date",
      "reflect": true
    },
    "maxDate": {
      "type": "string",
      "mutable": true,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.3.0"
          }],
        "text": "Specifies the maximum selectable date in the date picker."
      },
      "attribute": "max-date",
      "reflect": true
    },
    "placeholder": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string | string[]",
        "resolved": "string | string[]",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.3.0"
          }],
        "text": "Specifies a placeholder string that displays as a temporary hint\n   or example inside the date picker field.\n\nIt indicates the expected format or pattern of the date picker field."
      },
      "attribute": "placeholder",
      "reflect": false
    },
    "clearButton": {
      "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 to display the clear button when the calendar is shown."
      },
      "attribute": "clear-button",
      "reflect": false,
      "defaultValue": "false"
    },
    "readOnly": {
      "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 date picker field is set to read-only.\n\nIf set to `true`, keyboards and touch devices will skip\n   interacting with this element."
      },
      "attribute": "read-only",
      "reflect": false,
      "defaultValue": "false"
    },
    "allowRepick": {
      "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 user is allowed to change either the\n   start date or end date of an already selected date range\n   without completely resetting the selected range."
      },
      "attribute": "allow-repick",
      "reflect": false,
      "defaultValue": "false"
    },
    "dropdownConfig": {
      "type": "unknown",
      "mutable": false,
      "complexType": {
        "original": "DropdownConfigForDatePicker",
        "resolved": "{ positionRelativeTo?: string; staticHeight?: boolean; }",
        "references": {
          "DropdownConfigForDatePicker": {
            "location": "import",
            "path": "./types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.5.0"
          }],
        "text": "Specifies the configuration for the calendar dropdown\n   associated with the date picker."
      },
      "defaultValue": "{}"
    },
    "showClearIcon": {
      "type": "boolean",
      "mutable": false,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.33.0"
          }],
        "text": "Determines whether the clear icon should be displayed or hidden."
      },
      "attribute": "show-clear-icon",
      "reflect": false,
      "defaultValue": "true"
    },
    "showYearMonthDropdowns": {
      "type": "boolean",
      "mutable": false,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.36.0"
          }],
        "text": "Determines whether to show months and years dropdown in date picker\nIf set to true, date picker calendar will have months and years dropdown"
      },
      "attribute": "show-year-month-dropdowns",
      "reflect": false,
      "defaultValue": "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 date picker field is disabled."
      },
      "attribute": "disabled",
      "reflect": true,
      "defaultValue": "false"
    },
    "timezone": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.35.0"
          }],
        "text": "Specifies the IANA time zone or Etc/GMT\u00B1n format.\n    It accepts values such as \"America/New_York\" or \"Etc/GMT+12\".\n    For a complete list of IANA time zones, refer to Time Zone DB(https://timezonedb.com/time-zones).\n\t   If not configured, the time zone will default to the system's time zone."
      },
      "attribute": "timezone",
      "reflect": false
    },
    "isDateDisabled": {
      "type": "unknown",
      "mutable": false,
      "complexType": {
        "original": "DisabledDate",
        "resolved": "(date: Date) => boolean",
        "references": {
          "DisabledDate": {
            "location": "import",
            "path": "../vega-calendar/types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "param",
            "text": "date - The `Date` object for the cell being evaluated."
          }, {
            "name": "returns",
            "text": "`true` if the cell should be disabled; otherwise `false`."
          }, {
            "name": "vegaVersion",
            "text": "2.60.0"
          }],
        "text": "Specifies a predicate function that determines whether a given date in the date picker should be disabled (non-interactive).\n\nThe function is called for each date cell before rendering.\n\nReturn `true` to disable the cell, or false to keep it selectable.\nDefault behavior: always returns `false` (no cells are disabled)."
      },
      "defaultValue": "() => false"
    }
  }; }
  static get states() { return {
    "isMobileDevice": {},
    "isCalendarShow": {}
  }; }
  static get events() { return [{
      "method": "vegaChange",
      "name": "vegaChange",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "1.3.0"
          }],
        "text": "An event emitter notifying the change of the value in the date picker,\n   whether triggered programmatically or through user interaction."
      },
      "complexType": {
        "original": "string | string[]",
        "resolved": "string | string[]",
        "references": {}
      }
    }, {
      "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 value in the date picker,\n   whether triggered programmatically or through user interaction."
      },
      "complexType": {
        "original": "string | string[]",
        "resolved": "string | string[]",
        "references": {}
      }
    }, {
      "method": "vegaMonthYearChange",
      "name": "vegaMonthYearChange",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.61.0"
          }],
        "text": "An event emitter notifying the month and year change when the navigation buttons are clicked or the month and year dropdowns are selected in the date picker,\n   whether triggered programmatically or through user interaction."
      },
      "complexType": {
        "original": "DatePickerMonthYearTypes",
        "resolved": "DatePickerMonthYearType[] | { month: string; year: string; }",
        "references": {
          "DatePickerMonthYearTypes": {
            "location": "import",
            "path": "./types"
          }
        }
      }
    }, {
      "method": "monthYearChange",
      "name": "monthYearChange",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventSemantics",
            "text": "namespace:native"
          }, {
            "name": "vegaVersion",
            "text": "2.61.0"
          }],
        "text": "An event emitter notifying the month and year change when the navigation buttons are clicked or the month and year dropdowns are selected in the date picker,"
      },
      "complexType": {
        "original": "DatePickerMonthYearTypes",
        "resolved": "DatePickerMonthYearType[] | { month: string; year: string; }",
        "references": {
          "DatePickerMonthYearTypes": {
            "location": "import",
            "path": "./types"
          }
        }
      }
    }]; }
  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 calendar dropdown\n   associated with the date picker.",
        "tags": [{
            "name": "see",
            "text": "{module :vega-date-picker-click-call-do-open-close}"
          }, {
            "name": "vegaVersion",
            "text": "1.3.0"
          }]
      }
    },
    "doOpen": {
      "complexType": {
        "signature": "() => Promise<void>",
        "parameters": [],
        "references": {
          "Promise": {
            "location": "global"
          }
        },
        "return": "Promise<void>"
      },
      "docs": {
        "text": "Invoke this method to open the calendar dropdown\n   associated with the date picker.",
        "tags": [{
            "name": "see",
            "text": "{module :vega-date-picker-click-call-do-open-close}"
          }, {
            "name": "vegaVersion",
            "text": "1.3.0"
          }]
      }
    }
  }; }
  static get elementRef() { return "host"; }
  static get watchers() { return [{
      "propName": "isCalendarShow",
      "methodName": "watchIsCalendarShow"
    }, {
      "propName": "mode",
      "methodName": "watchMode"
    }, {
      "propName": "value",
      "methodName": "watchValue"
    }, {
      "propName": "format",
      "methodName": "watchFormat"
    }, {
      "propName": "validationRules",
      "methodName": "watchValidationRules"
    }, {
      "propName": "minDate",
      "methodName": "watchMinDate"
    }, {
      "propName": "maxDate",
      "methodName": "watchMaxDate"
    }, {
      "propName": "allowRepick",
      "methodName": "watchAllowRepick"
    }, {
      "propName": "showYearMonthDropdowns",
      "methodName": "watchShowYearMonthDropdowns"
    }, {
      "propName": "disabled",
      "methodName": "watchDisabled"
    }]; }
}
__decorate([
  InjectVegaGlobalSlimmer()
], VegaDatePicker.prototype, "globalSlimmers", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaDatePicker.prototype, "translationSlimmer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaDatePicker.prototype, "calendarOpenStateController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaDatePicker.prototype, "vegaDatePickerValueController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaDatePicker.prototype, "vegaDatePickerFormatController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaDatePicker.prototype, "startInputFormatController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaDatePicker.prototype, "endInputFormatController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaDatePicker.prototype, "vegaDatePickerKeyboardController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaDatePicker.prototype, "vegaDatePickerRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaDatePicker.prototype, "vegaDatePickerSingleInputRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaDatePicker.prototype, "vegaDatePickerRangeInputRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaDatePicker.prototype, "vegaDatePickerCalendarRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaDatePicker.prototype, "formFieldController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaDatePicker.prototype, "changeEventEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaDatePicker.prototype, "monthYearChangeEventEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaDatePicker.prototype, "inputEventPrevent", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaDatePicker.prototype, "vegaComponentUsageRuntimeMetricsSlimmer", void 0);
__decorate([
  ComponentLoadRequired()
], VegaDatePicker.prototype, "watchValue", null);
