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, h, Element, Host, State, Prop, Watch, Event } from '@stencil/core';
import { sanitizeVegaComponent } from '../../utils/component';
import { InjectVegaGlobalSlimmer, InjectVegaSlimmer, methodPlaceholder, } from 'vega-slimmer/core';
import { VegaCalendarRenderer } from './slimmers/common/renderers/vega-calendar-renderer';
import { VegaCalendarSwitchPanelRenderer } from './slimmers/common/renderers/vega-calendar-switch-panel';
import { VegaCalendarViewRenderer } from './slimmers/common/renderers/vega-calendar-view-renderer';
import { VegaCalendarMonthViewRenderer } from './slimmers/month-view/renderers/vega-calendar-month-view-renderer';
import { VegaCalendarViewWithTimeRenderer } from './slimmers/day-view/renderers/vega-calendar-view-with-time-renderer';
import { VegaCalendarTimeLineRenderer } from './slimmers/day-view/renderers/vega-calendar-time-line-renderer';
import { createEventEmitSlimmer, } from '../../helpers/event-manager/slimmers/event-emit-slimmer';
import { VegaChange, VegaDateClick, VegaDateDblClick, VegaEventClick, VegaEventEdit, VegaMoreActionClick, } from '../../helpers/event-manager/event-id/vega-event-id';
import { CalendarDate } from '../../helpers/calendar';
import { VegaCalendarViewController } from './slimmers/common/controllers/vega-calendar-view-controller';
import { VegaCalendarCurrentPeriodController } from './slimmers/common/controllers/vega-calendar-current-period-controller';
import { ChildNodesEventPreventSlimmer } from '../../helpers/event-manager/slimmers/child-nodes-event-prevent-slimmer';
import { VegaCalendarMonthEventRenderer } from './slimmers/month-view/renderers/vega-calendar-month-event-renderer';
import { VegaCalendarEventController } from './slimmers/common/controllers/vega-calendar-event-controller';
import { VegaCalendarEventResponsiveController } from './slimmers/common/controllers/vega-calendar-event-responsive-controller';
import { VegaCalendarFullDayEventRenderer } from './slimmers/day-view/renderers/full-day-event/vega-calendar-full-day-event-renderer';
import { VegaCalendarEventItemRenderer } from './slimmers/common/renderers/vega-calendar-event-item-renderer';
import { VegaCalendarDayViewEventLayoutRenderer } from './slimmers/day-view/renderers/timed-event/vega-calendar-day-event-layout-renderer';
import { VegaCalendarTimedEventRenderer } from './slimmers/day-view/renderers/timed-event/vega-calendar-timed-event-renderer';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
import { VegaCalendarFullDayEventLayoutRenderer } from './slimmers/common/renderers/vega-calendar-full-day-event-layout-renderer';
import { createSubStateNotifySlimmer } from '../../helpers/slimmers/sub-state/sub-state-notify-slimmer';
import { VegaCalendarFullDayEventMoreButtonRenderer } from './slimmers/day-view/renderers/full-day-event/vega-calendar-full-day-event-more-button-renderer';
import { TranslationSlimmer } from '../../helpers/slimmers/translation';
import { VegaCalendarTimeMarkerRenderer } from './slimmers/day-view/renderers/vega-calendar-time-marker-renderer';
import { VegaCalendarPostOperationDateController } from './slimmers/common/controllers/vega-calendar-post-operation-date-controller';
import { VegaCalendarEventPreviewPopoverRenderer } from './slimmers/common/renderers/vega-calendar-event-preview-popover-renderer';
import { VegaCalendarEventPreviewPopoverController } from './slimmers/common/controllers/vega-calendar-event-preivew-popover-controller';
import { getSystemTimezone } from '../../helpers/calendar/utils';
import { VegaCalendarDayViewFocusSlimmer } from './slimmers/common/controllers/vega-calendar-day-view-focus-slimmer';
import { EventPreviewActionsController } from './slimmers/common/controllers/vega-calendar-event-preview-actions-controller';
import { VegaCalendarKeyboardController } from './slimmers/common/controllers/vega-calendar-keyboard-controller';
/**
 * @vegaVersion 2.14.0
 */
export class VegaCalendar {
  constructor() {
    this.globalSlimmer = {};
    this.translationSlimmer = new TranslationSlimmer();
    this.vegaComponentUsageRuntimeMetricsSlimmer = new VegaComponentUsageRuntimeMetricsSlimmer();
    this.renderer = new VegaCalendarRenderer();
    this.switchPanelRenderer = new VegaCalendarSwitchPanelRenderer();
    this.dayViewFocusSlimmer = new VegaCalendarDayViewFocusSlimmer();
    this.viewRenderer = new VegaCalendarViewRenderer();
    this.monthViewRenderer = new VegaCalendarMonthViewRenderer();
    this.viewWithTimeRenderer = new VegaCalendarViewWithTimeRenderer();
    this.timeLineRenderer = new VegaCalendarTimeLineRenderer();
    this.timeMarkerRenderer = new VegaCalendarTimeMarkerRenderer();
    this.monthEventRenderer = new VegaCalendarMonthEventRenderer();
    // The current period controller should be before the calendar view controller because the initial current period should be before the initial calendar view
    this.currentPeriodController = new VegaCalendarCurrentPeriodController();
    this.keyboardController = new VegaCalendarKeyboardController();
    this.calendarViewController = new VegaCalendarViewController();
    // Date after recording the operation
    this.postOperationDateController = new VegaCalendarPostOperationDateController();
    this.dayViewFullDayEventRenderer = new VegaCalendarFullDayEventRenderer();
    this.eventPreviewPopoverController = new VegaCalendarEventPreviewPopoverController();
    this.dayViewFullDayEventMoreButtonRenderer = new VegaCalendarFullDayEventMoreButtonRenderer();
    this.dayViewTimedEventRenderer = new VegaCalendarTimedEventRenderer();
    this.eventItemRenderer = new VegaCalendarEventItemRenderer();
    this.dayViewEventLayoutRenderer = new VegaCalendarDayViewEventLayoutRenderer();
    this.fullDayEventLayoutRenderer = new VegaCalendarFullDayEventLayoutRenderer();
    this.eventPreviewPopoverRenderer = new VegaCalendarEventPreviewPopoverRenderer();
    this.calendarEventController = new VegaCalendarEventController();
    this.eventPreviewActionsController = new EventPreviewActionsController();
    this.eventResponsiveController = new VegaCalendarEventResponsiveController();
    this.changeEventEmitter = createEventEmitSlimmer(VegaCalendar, VegaChange);
    this.eventClickEmitter = createEventEmitSlimmer(VegaCalendar, VegaEventClick);
    this.dateDblClickEmitter = createEventEmitSlimmer(VegaCalendar, VegaDateDblClick);
    this.moreActionClickEmitter = createEventEmitSlimmer(VegaCalendar, VegaMoreActionClick);
    this.dateClickEmitter = createEventEmitSlimmer(VegaCalendar, VegaDateClick);
    this.eventEditEmitter = createEventEmitSlimmer(VegaCalendar, VegaEventEdit);
    this.changeEventPrevent = new ChildNodesEventPreventSlimmer([VegaChange], () => this.switchPanelRenderer.getSwitchPanelRef());
    this.timeFormatNotifySlimmer = createSubStateNotifySlimmer(VegaCalendar, 'timeFormat', 'watchTimeFormat');
    this.showEventColorBarNotifySlimmer = createSubStateNotifySlimmer(VegaCalendar, 'showEventColorBar', 'watchShowEventColorBar');
    /**
     * This postOperationDate will record the time after the operation, which will affect the calculation of day/week/month, making the generated interval accurate
     *
     * @type {CalendarDate}
     */
    this.postOperationDate = this.getInitialPostOperationDate();
    this.showAllEventsInDayOrWeekView = false;
    this.calendarEvents = [];
    /**
     * Specifies the current view mode of the calendar.
     *
     * @vegaVersion 2.14.0
     */
    /* eslint-disable-next-line @stencil/strict-mutable */
    this.viewMode = 'month';
    /**
     * Specifies the time format of the calendar.
     *
     * @vegaVersion 2.14.0
     */
    this.timeFormat = '24-hour';
    /**
     * Specifies a predicate function that determines whether a given date in the calendar 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.56.0
     */
    this.isDateDisabled = () => false;
    /**
     * Controls the visibility of the calendar's event color bar.
     *
     * @vegaVersion 2.21.0
     */
    this.showEventColorBar = true;
    /**
     * Controls whether the switch view is displayed.
     *
     * @vegaVersion 2.58.0
     */
    this.showSwitchView = true;
    /**
     * Controls whether clicking on a calendar date triggers the `vegaDateClick` event. When enabled, it disables the `vegaDateDblClick` event to prevent conflicts.
     *
     * @vegaVersion 2.61.0
     */
    this.enableDateClick = false;
    /**
     * Controls the visibility of the weekend columns in the calendar.
     *
     * @vegaVersion 2.28.0
     */
    this.showWeekends = true;
    /**
     * Controls the visibility of the event preview popover while click event.
     *
     * @vegaVersion 2.59.0
     */
    this.enabledEventPreview = true;
    /**
     * Specifies the IANA time zone or Etc/GMT±n format.
     *  It accepts values such as "America/New_York" or "Etc/GMT+12".
     *  If not set, the component defaults to the system's time zone.
     *  For a complete list of IANA time zones, see Time Zone DB(https://timezonedb.com/time-zones).
     *
     * @vegaVersion 2.65.0
     */
    this.timezone = getSystemTimezone();
    /**
     * Controls whether the calendar is editable, allowing users to interact with events and dates.
     * When set to `false`, all interactive features such as clicking on events or dates will be disabled, making the calendar view-only.
     *
     * @vegaVersion __VEGA_VERSION__
     */
    this.eventEditable = true;
  }
  /**
   * Tracks changes to the current period state.
   *
   * @param {CalendarPeriod} newValue Specifies the new calendar period.
   * @param {CalendarPeriod} oldValue Specifies the old calendar period.
   */
  watchCurrentPeriodChange(newValue, oldValue) {
    methodPlaceholder(newValue, oldValue);
  }
  /**
   * Watch the view mode change
   *
   * @param {VegaCalendarViewModeType} newValue the new value of view mode
   */
  watchViewModeChange(newValue) {
    methodPlaceholder(newValue);
  }
  /**
   * Watch the calendar events change
   *
   * @param {VegaCalendarRawEvent[]} newValue
   */
  watchEventsChange(newValue) {
    methodPlaceholder(newValue);
  }
  /**
   * Watches changes in the calendar's time format.
   *
   * @param {TimeFormat} newValue
   */
  watchTimeFormat(newValue) {
    methodPlaceholder(newValue);
  }
  /**
   * Monitors changes in the visibility of the calendar's event color bar.
   *
   * @param {boolean} newValue
   */
  watchShowEventColorBar(newValue) {
    methodPlaceholder(newValue);
  }
  /**
   * Monitors changes in the visibility of the weekend columns in the calendar.
   */
  watchShowWeekendsChange() {
    methodPlaceholder();
  }
  /**
   * Monitors changes in the timezone prop for the calendar.
   */
  watchTimezoneChange() {
    methodPlaceholder();
  }
  render() {
    return sanitizeVegaComponent(h(Host, null, this.renderer.render()), this.host);
  }
  /**
   * Get initial post operation date considering timezone
   */
  getInitialPostOperationDate() {
    return CalendarDate.from(new Date(), this.timezone);
  }
  static get is() { return "vega-calendar"; }
  static get encapsulation() { return "shadow"; }
  static get originalStyleUrls() { return {
    "$": ["vega-calendar.scss"]
  }; }
  static get styleUrls() { return {
    "$": ["vega-calendar.css"]
  }; }
  static get properties() { return {
    "viewMode": {
      "type": "string",
      "mutable": true,
      "complexType": {
        "original": "VegaCalendarViewModeType",
        "resolved": "\"day\" | \"month\" | \"week\"",
        "references": {
          "VegaCalendarViewModeType": {
            "location": "import",
            "path": "./types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.14.0"
          }],
        "text": "Specifies the current view mode of the calendar."
      },
      "attribute": "view-mode",
      "reflect": false,
      "defaultValue": "'month'"
    },
    "events": {
      "type": "unknown",
      "mutable": false,
      "complexType": {
        "original": "VegaCalendarRawEvent[]",
        "resolved": "VegaCalendarRawEvent[]",
        "references": {
          "VegaCalendarRawEvent": {
            "location": "import",
            "path": "./types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.14.0"
          }],
        "text": "Specifies the events of the calendar."
      }
    },
    "timeFormat": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "TimeFormat",
        "resolved": "\"12-hour\" | \"24-hour\"",
        "references": {
          "TimeFormat": {
            "location": "import",
            "path": "../../types/general"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.14.0"
          }],
        "text": "Specifies the time format of the calendar."
      },
      "attribute": "time-format",
      "reflect": false,
      "defaultValue": "'24-hour'"
    },
    "isDateDisabled": {
      "type": "unknown",
      "mutable": false,
      "complexType": {
        "original": "DisabledDate",
        "resolved": "(date: Date) => boolean",
        "references": {
          "DisabledDate": {
            "location": "import",
            "path": "./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.56.0"
          }],
        "text": "Specifies a predicate function that determines whether a given date in the calendar 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"
    },
    "moreActionDropdownProps": {
      "type": "unknown",
      "mutable": false,
      "complexType": {
        "original": "DropdownPropsForCalendar",
        "resolved": "{ matchContainerHeight?: boolean; matchTargetWidth?: boolean; maxHeight?: number; positionRelativeTo?: string; trigger?: \"click\" | \"hover\"; source: (DropdownSourceItem | DropdownSourceGroup)[]; }",
        "references": {
          "DropdownPropsForCalendar": {
            "location": "import",
            "path": "./types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.20.0"
          }],
        "text": "Defines the configuration options for the more action button's dropdown menu."
      }
    },
    "showEventColorBar": {
      "type": "boolean",
      "mutable": false,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.21.0"
          }],
        "text": "Controls the visibility of the calendar's event color bar."
      },
      "attribute": "show-event-color-bar",
      "reflect": false,
      "defaultValue": "true"
    },
    "showSwitchView": {
      "type": "boolean",
      "mutable": false,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.58.0"
          }],
        "text": "Controls whether the switch view is displayed."
      },
      "attribute": "show-switch-view",
      "reflect": false,
      "defaultValue": "true"
    },
    "enableDateClick": {
      "type": "boolean",
      "mutable": false,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.61.0"
          }],
        "text": "Controls whether clicking on a calendar date triggers the `vegaDateClick` event. When enabled, it disables the `vegaDateDblClick` event to prevent conflicts."
      },
      "attribute": "enable-date-click",
      "reflect": false,
      "defaultValue": "false"
    },
    "showWeekends": {
      "type": "boolean",
      "mutable": false,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.28.0"
          }],
        "text": "Controls the visibility of the weekend columns in the calendar."
      },
      "attribute": "show-weekends",
      "reflect": false,
      "defaultValue": "true"
    },
    "enabledEventPreview": {
      "type": "boolean",
      "mutable": false,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.59.0"
          }],
        "text": "Controls the visibility of the event preview popover while click event."
      },
      "attribute": "enabled-event-preview",
      "reflect": false,
      "defaultValue": "true"
    },
    "timezone": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.65.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 If not set, the component defaults to the system's time zone.\n For a complete list of IANA time zones, see Time Zone DB(https://timezonedb.com/time-zones)."
      },
      "attribute": "timezone",
      "reflect": false,
      "defaultValue": "getSystemTimezone()"
    },
    "eventEditable": {
      "type": "boolean",
      "mutable": false,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "__VEGA_VERSION__"
          }],
        "text": "Controls whether the calendar is editable, allowing users to interact with events and dates.\nWhen set to `false`, all interactive features such as clicking on events or dates will be disabled, making the calendar view-only."
      },
      "attribute": "event-editable",
      "reflect": false,
      "defaultValue": "true"
    },
    "getEventPreviewActions": {
      "type": "unknown",
      "mutable": false,
      "complexType": {
        "original": "CalendarEventActionsCallback",
        "resolved": "(event: VegaCalendarRawEvent, date: VegaCalendarDateType) => CalendarEventActions",
        "references": {
          "CalendarEventActionsCallback": {
            "location": "import",
            "path": "./types"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "__VEGA_VERSION__"
          }],
        "text": "A callback function that determines the visibility of action buttons in the event preview popover for each calendar event.\nIt receives the raw event data and the associated date, and should return an object indicating which action buttons should be visible in the popover.\nThis allows for dynamic customization of the event preview based on the specific event being clicked."
      }
    }
  }; }
  static get states() { return {
    "calendarView": {},
    "currentPeriod": {},
    "postOperationDate": {},
    "showAllEventsInDayOrWeekView": {},
    "calendarEvents": {}
  }; }
  static get events() { return [{
      "method": "vegaChange",
      "name": "vegaChange",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.14.0"
          }],
        "text": "An event emitter notifying the component view content change after a switch panel click."
      },
      "complexType": {
        "original": "VegaCalendarChangeEventType",
        "resolved": "{ currentPeriod: VegaCalendarCurrentPeriodType; viewMode: VegaCalendarViewModeType; }",
        "references": {
          "VegaCalendarChangeEventType": {
            "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.14.0"
          }],
        "text": "An event emitter notifying the component view content change after a switch panel click."
      },
      "complexType": {
        "original": "VegaCalendarChangeEventType",
        "resolved": "{ currentPeriod: VegaCalendarCurrentPeriodType; viewMode: VegaCalendarViewModeType; }",
        "references": {
          "VegaCalendarChangeEventType": {
            "location": "import",
            "path": "./types"
          }
        }
      }
    }, {
      "method": "vegaEventClick",
      "name": "vegaEventClick",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.14.0"
          }],
        "text": "An event emitter notifying that a component event item is clicked."
      },
      "complexType": {
        "original": "VegaCalendarEventClickInfo",
        "resolved": "{ rawEvent: VegaCalendarRawEvent; }",
        "references": {
          "VegaCalendarEventClickInfo": {
            "location": "import",
            "path": "./types"
          }
        }
      }
    }, {
      "method": "eventClick",
      "name": "eventClick",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventSemantics",
            "text": "namespace:native"
          }, {
            "name": "vegaVersion",
            "text": "2.14.0"
          }],
        "text": "An event emitter notifying that a component event item is clicked."
      },
      "complexType": {
        "original": "VegaCalendarEventClickInfo",
        "resolved": "{ rawEvent: VegaCalendarRawEvent; }",
        "references": {
          "VegaCalendarEventClickInfo": {
            "location": "import",
            "path": "./types"
          }
        }
      }
    }, {
      "method": "vegaEventEdit",
      "name": "vegaEventEdit",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "__VEGA_VERSION__"
          }],
        "text": "An event emitter notifying that a calendar event edit action is triggered from the event preview popover."
      },
      "complexType": {
        "original": "VegaCalendarEventEditInfo",
        "resolved": "{ rawEvent: VegaCalendarRawEvent; date: VegaCalendarDateType; }",
        "references": {
          "VegaCalendarEventEditInfo": {
            "location": "import",
            "path": "./types"
          }
        }
      }
    }, {
      "method": "eventEdit",
      "name": "eventEdit",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventSemantics",
            "text": "namespace:native"
          }, {
            "name": "vegaVersion",
            "text": "__VEGA_VERSION__"
          }],
        "text": "An event emitter notifying that a calendar event edit action is triggered from the event preview popover."
      },
      "complexType": {
        "original": "VegaCalendarEventEditInfo",
        "resolved": "{ rawEvent: VegaCalendarRawEvent; date: VegaCalendarDateType; }",
        "references": {
          "VegaCalendarEventEditInfo": {
            "location": "import",
            "path": "./types"
          }
        }
      }
    }, {
      "method": "vegaDateDblClick",
      "name": "vegaDateDblClick",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.17.0"
          }],
        "text": "An event emitter notifying that a calendar date item has been double-clicked. The event will not be triggered if `enableDataClick` is set to true to prevent conflicts."
      },
      "complexType": {
        "original": "VegaCalendarDateClickInfo",
        "resolved": "VegaCalendarDateType & { hour: number; mouseEventInfo: VegaMouseEventInfo; }",
        "references": {
          "VegaCalendarDateClickInfo": {
            "location": "import",
            "path": "./types"
          }
        }
      }
    }, {
      "method": "dateDblClick",
      "name": "dateDblClick",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventSemantics",
            "text": "namespace:native"
          }, {
            "name": "vegaVersion",
            "text": "2.17.0"
          }],
        "text": "An event emitter notifying that a calendar date item has been double-clicked. The event will not be triggered if `enableDataClick` is true to prevent conflicts."
      },
      "complexType": {
        "original": "VegaCalendarDateClickInfo",
        "resolved": "VegaCalendarDateType & { hour: number; mouseEventInfo: VegaMouseEventInfo; }",
        "references": {
          "VegaCalendarDateClickInfo": {
            "location": "import",
            "path": "./types"
          }
        }
      }
    }, {
      "method": "vegaDateClick",
      "name": "vegaDateClick",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.61.0"
          }],
        "text": "An event emitter notifying that a calendar date item has been clicked. The event will not be triggered if `enableDataClick` is false."
      },
      "complexType": {
        "original": "VegaCalendarDateClickInfo",
        "resolved": "VegaCalendarDateType & { hour: number; mouseEventInfo: VegaMouseEventInfo; }",
        "references": {
          "VegaCalendarDateClickInfo": {
            "location": "import",
            "path": "./types"
          }
        }
      }
    }, {
      "method": "dateClick",
      "name": "dateClick",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventSemantics",
            "text": "namespace:native"
          }, {
            "name": "vegaVersion",
            "text": "2.61.0"
          }],
        "text": "An event emitter notifying that a calendar date item has been clicked. The event will not be triggered if `enableDataClick` is false."
      },
      "complexType": {
        "original": "VegaCalendarDateClickInfo",
        "resolved": "VegaCalendarDateType & { hour: number; mouseEventInfo: VegaMouseEventInfo; }",
        "references": {
          "VegaCalendarDateClickInfo": {
            "location": "import",
            "path": "./types"
          }
        }
      }
    }, {
      "method": "vegaMoreActionClick",
      "name": "vegaMoreActionClick",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "vegaVersion",
            "text": "2.20.0"
          }],
        "text": "An event emitter notifying that a calendar more action menu item has been clicked."
      },
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      }
    }, {
      "method": "moreActionClick",
      "name": "moreActionClick",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [{
            "name": "eventSemantics",
            "text": "namespace:native"
          }, {
            "name": "vegaVersion",
            "text": "2.20.0"
          }],
        "text": "An event emitter notifying that a calendar more action menu item has been clicked."
      },
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      }
    }]; }
  static get elementRef() { return "host"; }
  static get watchers() { return [{
      "propName": "currentPeriod",
      "methodName": "watchCurrentPeriodChange"
    }, {
      "propName": "viewMode",
      "methodName": "watchViewModeChange"
    }, {
      "propName": "events",
      "methodName": "watchEventsChange"
    }, {
      "propName": "timeFormat",
      "methodName": "watchTimeFormat"
    }, {
      "propName": "showEventColorBar",
      "methodName": "watchShowEventColorBar"
    }, {
      "propName": "showWeekends",
      "methodName": "watchShowWeekendsChange"
    }, {
      "propName": "timezone",
      "methodName": "watchTimezoneChange"
    }]; }
}
__decorate([
  InjectVegaGlobalSlimmer()
], VegaCalendar.prototype, "globalSlimmer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "translationSlimmer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "vegaComponentUsageRuntimeMetricsSlimmer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "renderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "switchPanelRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "dayViewFocusSlimmer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "viewRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "monthViewRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "viewWithTimeRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "timeLineRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "timeMarkerRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "monthEventRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "currentPeriodController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "keyboardController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "calendarViewController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "postOperationDateController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "dayViewFullDayEventRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "eventPreviewPopoverController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "dayViewFullDayEventMoreButtonRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "dayViewTimedEventRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "eventItemRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "dayViewEventLayoutRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "fullDayEventLayoutRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "eventPreviewPopoverRenderer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "calendarEventController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "eventPreviewActionsController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "eventResponsiveController", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "changeEventEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "eventClickEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "dateDblClickEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "moreActionClickEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "dateClickEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "eventEditEmitter", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "changeEventPrevent", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "timeFormatNotifySlimmer", void 0);
__decorate([
  InjectVegaSlimmer()
], VegaCalendar.prototype, "showEventColorBarNotifySlimmer", void 0);
