import { UPDATE_MODEL_EVENT } from "../../../constants/event.mjs";
import { PICKER_POPPER_OPTIONS_INJECTION_KEY, DEFAULT_FORMATS_TIME } from "./constants.mjs";
import { timePickerDefaultProps } from "./common/props.mjs";
import picker_default from "./common/picker.mjs";
import panel_time_pick_default from "./time-picker-com/panel-time-pick.mjs";
import panel_time_range_default from "./time-picker-com/panel-time-range.mjs";
import { defineComponent, ref, provide, createVNode, mergeProps } from "vue";
import dayjs from "../../../../../../_virtual/dayjs.min.mjs";
import customParseFormat from "../../../../../../_virtual/customParseFormat.mjs";
dayjs.extend(customParseFormat);
var time_picker_default = /* @__PURE__ */ defineComponent({
  name: "ElTimePicker",
  install: null,
  props: {
    ...timePickerDefaultProps,
    isRange: Boolean
  },
  emits: [UPDATE_MODEL_EVENT],
  setup(props, ctx) {
    const commonPicker = ref();
    const [type, Panel] = props.isRange ? ["timerange", panel_time_range_default] : ["time", panel_time_pick_default];
    const modelUpdater = (value) => ctx.emit(UPDATE_MODEL_EVENT, value);
    provide(PICKER_POPPER_OPTIONS_INJECTION_KEY, props.popperOptions);
    ctx.expose({
      focus: () => {
        var _a;
        (_a = commonPicker.value) == null ? void 0 : _a.focus();
      },
      blur: () => {
        var _a;
        (_a = commonPicker.value) == null ? void 0 : _a.blur();
      },
      handleOpen: () => {
        var _a;
        (_a = commonPicker.value) == null ? void 0 : _a.handleOpen();
      },
      handleClose: () => {
        var _a;
        (_a = commonPicker.value) == null ? void 0 : _a.handleClose();
      }
    });
    return () => {
      const format = props.format ?? DEFAULT_FORMATS_TIME;
      return createVNode(picker_default, mergeProps(props, {
        "ref": commonPicker,
        "type": type,
        "format": format,
        "onUpdate:modelValue": modelUpdater
      }), { default: (props2) => createVNode(Panel, props2, null) });
    };
  }
});
export {
  time_picker_default as default
};
