{"version":3,"file":"picker2.mjs","sources":["../../../../../../../packages/components/time-picker/src/common/picker.vue"],"sourcesContent":["<template>\n  <el-tooltip\n    ref=\"refPopper\"\n    v-model:visible=\"pickerVisible\"\n    effect=\"light\"\n    pure\n    trigger=\"click\"\n    v-bind=\"$attrs\"\n    role=\"dialog\"\n    teleported\n    :transition=\"`${nsDate.namespace.value}-zoom-in-top`\"\n    :popper-class=\"[`${nsDate.namespace.value}-picker__popper`, popperClass]\"\n    :popper-options=\"elPopperOptions\"\n    :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n    :gpu-acceleration=\"false\"\n    :stop-popper-mouse-event=\"false\"\n    :hide-after=\"0\"\n    persistent\n    @before-show=\"onBeforeShow\"\n    @show=\"onShow\"\n    @hide=\"onHide\"\n  >\n    <template #default>\n      <el-input\n        v-if=\"!isRangeInput\"\n        :id=\"id\"\n        ref=\"inputRef\"\n        container-role=\"combobox\"\n        :model-value=\"displayValue\"\n        :name=\"name\"\n        :size=\"pickerSize\"\n        :disabled=\"pickerDisabled\"\n        :placeholder=\"placeholder\"\n        :class=\"[nsDate.b('editor'), nsDate.bm('editor', type), $attrs.class]\"\n        :style=\"$attrs.style\"\n        :readonly=\"!editable || readonly || isDatesPicker || type === 'week'\"\n        :label=\"label\"\n        :tabindex=\"tabindex\"\n        @input=\"onUserInput\"\n        @focus=\"handleFocusInput\"\n        @blur=\"handleBlurInput\"\n        @keydown=\"handleKeydownInput\"\n        @change=\"handleChange\"\n        @mousedown=\"onMouseDownInput\"\n        @mouseenter=\"onMouseEnter\"\n        @mouseleave=\"onMouseLeave\"\n        @touchstart=\"onTouchStartInput\"\n        @click.stop\n      >\n        <template #prefix>\n          <el-icon\n            v-if=\"triggerIcon\"\n            :class=\"nsInput.e('icon')\"\n            @mousedown=\"onMouseDownInput\"\n            @touchstart=\"onTouchStartInput\"\n          >\n            <component :is=\"triggerIcon\" />\n          </el-icon>\n        </template>\n        <template #suffix>\n          <el-icon\n            v-if=\"showClose && clearIcon\"\n            :class=\"`${nsInput.e('icon')} clear-icon`\"\n            @click=\"onClearIconClick\"\n          >\n            <component :is=\"clearIcon\" />\n          </el-icon>\n        </template>\n      </el-input>\n      <div\n        v-else\n        ref=\"inputRef\"\n        :class=\"[\n          nsDate.b('editor'),\n          nsDate.bm('editor', type),\n          nsInput.e('wrapper'),\n          nsDate.is('disabled', pickerDisabled),\n          nsDate.is('active', pickerVisible),\n          nsRange.b('editor'),\n          pickerSize ? nsRange.bm('editor', pickerSize) : '',\n          $attrs.class,\n        ]\"\n        :style=\"$attrs.style\"\n        @click=\"handleFocusInput\"\n        @mousedown=\"onMouseDownInput\"\n        @mouseenter=\"onMouseEnter\"\n        @mouseleave=\"onMouseLeave\"\n        @touchstart=\"onTouchStartInput\"\n        @keydown=\"handleKeydownInput\"\n      >\n        <el-icon\n          v-if=\"triggerIcon\"\n          :class=\"[nsInput.e('icon'), nsRange.e('icon')]\"\n          @mousedown=\"onMouseDownInput\"\n          @touchstart=\"onTouchStartInput\"\n        >\n          <component :is=\"triggerIcon\" />\n        </el-icon>\n        <input\n          :id=\"id && id[0]\"\n          autocomplete=\"off\"\n          :name=\"name && name[0]\"\n          :placeholder=\"startPlaceholder\"\n          :value=\"displayValue && displayValue[0]\"\n          :disabled=\"pickerDisabled\"\n          :readonly=\"!editable || readonly\"\n          :class=\"nsRange.b('input')\"\n          @input=\"handleStartInput\"\n          @change=\"handleStartChange\"\n          @focus=\"handleFocusInput\"\n          @blur=\"handleBlurInput\"\n        />\n        <slot name=\"range-separator\">\n          <span :class=\"nsRange.b('separator')\">{{ rangeSeparator }}</span>\n        </slot>\n        <input\n          :id=\"id && id[1]\"\n          autocomplete=\"off\"\n          :name=\"name && name[1]\"\n          :placeholder=\"endPlaceholder\"\n          :value=\"displayValue && displayValue[1]\"\n          :disabled=\"pickerDisabled\"\n          :readonly=\"!editable || readonly\"\n          :class=\"nsRange.b('input')\"\n          @focus=\"handleFocusInput\"\n          @blur=\"handleBlurInput\"\n          @input=\"handleEndInput\"\n          @change=\"handleEndChange\"\n        />\n        <el-icon\n          v-if=\"clearIcon\"\n          :class=\"[\n            nsInput.e('icon'),\n            nsRange.e('close-icon'),\n            {\n              [nsRange.e('close-icon--hidden')]: !showClose,\n            },\n          ]\"\n          @click=\"onClearIconClick\"\n        >\n          <component :is=\"clearIcon\" />\n        </el-icon>\n      </div>\n    </template>\n    <template #content>\n      <slot\n        :visible=\"pickerVisible\"\n        :actual-visible=\"pickerActualVisible\"\n        :parsed-value=\"parsedValue\"\n        :format=\"format\"\n        :unlink-panels=\"unlinkPanels\"\n        :type=\"type\"\n        :default-value=\"defaultValue\"\n        @pick=\"onPick\"\n        @select-range=\"setSelectionRange\"\n        @set-picker-option=\"onSetPickerOption\"\n        @calendar-change=\"onCalendarChange\"\n        @panel-change=\"onPanelChange\"\n        @keydown=\"onKeydownPopperContent\"\n        @mousedown.stop\n      />\n    </template>\n  </el-tooltip>\n</template>\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  inject,\n  nextTick,\n  provide,\n  ref,\n  unref,\n  watch,\n} from 'vue'\nimport dayjs from 'dayjs'\nimport { isEqual } from 'lodash-unified'\nimport { onClickOutside } from '@vueuse/core'\nimport { useLocale, useNamespace, useSize } from '@element-plus/hooks'\nimport { formContextKey, formItemContextKey } from '@element-plus/tokens'\nimport ElInput from '@element-plus/components/input'\nimport ElIcon from '@element-plus/components/icon'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport { debugWarn, isEmpty } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { Calendar, Clock } from '@element-plus/icons-vue'\nimport { timePickerDefaultProps } from './props'\n\nimport type { Dayjs } from 'dayjs'\nimport type { ComponentPublicInstance } from 'vue'\nimport type { FormContext, FormItemContext } from '@element-plus/tokens'\nimport type { Options } from '@popperjs/core'\n\ninterface PickerOptions {\n  isValidValue: (date: Dayjs) => boolean\n  handleKeydownInput: (event: KeyboardEvent) => void\n  parseUserInput: (value: Dayjs) => dayjs.Dayjs\n  formatToString: (value: Dayjs) => string | string[]\n  getRangeAvailableTime: (date: Dayjs) => dayjs.Dayjs\n  getDefaultValue: () => Dayjs\n  panelReady: boolean\n  handleClear: () => void\n  handleFocusPicker?: () => void\n}\n\n// Date object and string\nconst dateEquals = function (a: Date | any, b: Date | any) {\n  const aIsDate = a instanceof Date\n  const bIsDate = b instanceof Date\n  if (aIsDate && bIsDate) {\n    return a.getTime() === b.getTime()\n  }\n  if (!aIsDate && !bIsDate) {\n    return a === b\n  }\n  return false\n}\n\nconst valueEquals = function (a: Array<Date> | any, b: Array<Date> | any) {\n  const aIsArray = Array.isArray(a)\n  const bIsArray = Array.isArray(b)\n  if (aIsArray && bIsArray) {\n    if (a.length !== b.length) {\n      return false\n    }\n    return (a as Array<Date>).every((item, index) => dateEquals(item, b[index]))\n  }\n  if (!aIsArray && !bIsArray) {\n    return dateEquals(a, b)\n  }\n  return false\n}\n\nconst parser = function (\n  date: string | number | Date,\n  format: string,\n  lang: string\n): Dayjs {\n  const day =\n    isEmpty(format) || format === 'x'\n      ? dayjs(date).locale(lang)\n      : dayjs(date, format).locale(lang)\n  return day.isValid() ? day : undefined\n}\n\nconst formatter = function (\n  date: string | number | Date,\n  format: string,\n  lang: string\n) {\n  if (isEmpty(format)) return date\n  if (format === 'x') return +date\n  return dayjs(date).locale(lang).format(format)\n}\n\nexport default defineComponent({\n  name: 'Picker',\n  components: {\n    ElInput,\n    ElTooltip,\n    ElIcon,\n  },\n  props: timePickerDefaultProps,\n  emits: [\n    'update:modelValue',\n    'change',\n    'focus',\n    'blur',\n    'calendar-change',\n    'panel-change',\n    'visible-change',\n    'keydown',\n  ],\n  setup(props, ctx) {\n    const { lang } = useLocale()\n\n    const nsDate = useNamespace('date')\n    const nsInput = useNamespace('input')\n    const nsRange = useNamespace('range')\n\n    const elForm = inject(formContextKey, {} as FormContext)\n    const elFormItem = inject(formItemContextKey, {} as FormItemContext)\n    const elPopperOptions = inject('ElPopperOptions', {} as Options)\n\n    const refPopper = ref<InstanceType<typeof ElTooltip>>()\n    const inputRef = ref<HTMLElement | ComponentPublicInstance>()\n    const pickerVisible = ref(false)\n    const pickerActualVisible = ref(false)\n    const valueOnOpen = ref(null)\n\n    let hasJustTabExitedInput = false\n    let ignoreFocusEvent = false\n\n    watch(pickerVisible, (val) => {\n      if (!val) {\n        userInput.value = null\n        nextTick(() => {\n          emitChange(props.modelValue)\n        })\n      } else {\n        valueOnOpen.value = props.modelValue\n      }\n    })\n    const emitChange = (val, isClear?: boolean) => {\n      // determine user real change only\n      if (isClear || !valueEquals(val, valueOnOpen.value)) {\n        ctx.emit('change', val)\n        props.validateEvent &&\n          elFormItem.validate?.('change').catch((err) => debugWarn(err))\n      }\n    }\n    const emitInput = (val) => {\n      if (!valueEquals(props.modelValue, val)) {\n        let formatValue\n        if (Array.isArray(val)) {\n          formatValue = val.map((_) =>\n            formatter(_, props.valueFormat, lang.value)\n          )\n        } else if (val) {\n          formatValue = formatter(val, props.valueFormat, lang.value)\n        }\n        ctx.emit('update:modelValue', val ? formatValue : val, lang.value)\n      }\n    }\n    const emitKeydown = (e) => {\n      ctx.emit('keydown', e)\n    }\n    const refInput = computed<HTMLInputElement[]>(() => {\n      if (inputRef.value) {\n        const _r = isRangeInput.value\n          ? inputRef.value\n          : (inputRef.value as any as ComponentPublicInstance).$el\n        return Array.from<HTMLInputElement>(_r.querySelectorAll('input'))\n      }\n      return []\n    })\n    const refStartInput = computed(() => {\n      return refInput?.value[0]\n    })\n    const refEndInput = computed(() => {\n      return refInput?.value[1]\n    })\n\n    const setSelectionRange = (start, end, pos) => {\n      const _inputs = refInput.value\n      if (!_inputs.length) return\n      if (!pos || pos === 'min') {\n        _inputs[0].setSelectionRange(start, end)\n        _inputs[0].focus()\n      } else if (pos === 'max') {\n        _inputs[1].setSelectionRange(start, end)\n        _inputs[1].focus()\n      }\n    }\n\n    const onPick = (date: any = '', visible = false) => {\n      if (!visible) {\n        focus(true, true)\n      }\n      pickerVisible.value = visible\n      let result\n      if (Array.isArray(date)) {\n        result = date.map((_) => _.toDate())\n      } else {\n        // clear btn emit null\n        result = date ? date.toDate() : date\n      }\n      userInput.value = null\n      emitInput(result)\n    }\n\n    const onBeforeShow = () => {\n      pickerActualVisible.value = true\n    }\n\n    const onShow = () => {\n      ctx.emit('visible-change', true)\n    }\n\n    const onKeydownPopperContent = (event: KeyboardEvent) => {\n      if ((event as KeyboardEvent)?.key === EVENT_CODE.esc) {\n        focus(true, true)\n      }\n    }\n\n    const onHide = () => {\n      pickerActualVisible.value = false\n      ignoreFocusEvent = false\n      ctx.emit('visible-change', false)\n    }\n\n    const focus = (focusStartInput = true, isIgnoreFocusEvent = false) => {\n      ignoreFocusEvent = isIgnoreFocusEvent\n      let input = refStartInput.value\n      if (!focusStartInput && isRangeInput.value) {\n        input = refEndInput.value\n      }\n      if (input) {\n        input.focus()\n      }\n    }\n\n    const handleFocusInput = (e) => {\n      if (\n        props.readonly ||\n        pickerDisabled.value ||\n        pickerVisible.value ||\n        ignoreFocusEvent\n      ) {\n        return\n      }\n      pickerVisible.value = true\n      ctx.emit('focus', e)\n    }\n\n    let currentHandleBlurDeferCallback: () => void | undefined\n\n    // Check if document.activeElement is inside popper or any input before popper close\n    const handleBlurInput = (e) => {\n      const handleBlurDefer = async () => {\n        setTimeout(() => {\n          if (currentHandleBlurDeferCallback === handleBlurDefer) {\n            if (\n              !(\n                refPopper.value?.isFocusInsideContent() &&\n                !hasJustTabExitedInput\n              ) &&\n              refInput.value.filter((input) => {\n                return input.contains(document.activeElement)\n              }).length === 0\n            ) {\n              handleChange()\n              pickerVisible.value = false\n              ctx.emit('blur', e)\n              props.validateEvent &&\n                elFormItem.validate?.('blur').catch((err) => debugWarn(err))\n            }\n            hasJustTabExitedInput = false\n          }\n        }, 0)\n      }\n      currentHandleBlurDeferCallback = handleBlurDefer\n      handleBlurDefer()\n    }\n\n    const pickerDisabled = computed(() => {\n      return props.disabled || elForm.disabled\n    })\n\n    const parsedValue = computed(() => {\n      let result\n      if (valueIsEmpty.value) {\n        if (pickerOptions.value.getDefaultValue) {\n          result = pickerOptions.value.getDefaultValue()\n        }\n      } else {\n        if (Array.isArray(props.modelValue)) {\n          result = props.modelValue.map((_) =>\n            parser(_, props.valueFormat, lang.value)\n          )\n        } else {\n          result = parser(props.modelValue, props.valueFormat, lang.value)\n        }\n      }\n\n      if (pickerOptions.value.getRangeAvailableTime) {\n        const availableResult =\n          pickerOptions.value.getRangeAvailableTime(result)\n        if (!isEqual(availableResult, result)) {\n          result = availableResult\n          emitInput(\n            Array.isArray(result)\n              ? result.map((_) => _.toDate())\n              : result.toDate()\n          )\n        }\n      }\n      if (Array.isArray(result) && result.some((_) => !_)) {\n        result = []\n      }\n      return result\n    })\n\n    const displayValue = computed(() => {\n      if (!pickerOptions.value.panelReady) return\n      const formattedValue = formatDayjsToString(parsedValue.value)\n      if (Array.isArray(userInput.value)) {\n        return [\n          userInput.value[0] || (formattedValue && formattedValue[0]) || '',\n          userInput.value[1] || (formattedValue && formattedValue[1]) || '',\n        ]\n      } else if (userInput.value !== null) {\n        return userInput.value\n      }\n      if (!isTimePicker.value && valueIsEmpty.value) return\n      if (!pickerVisible.value && valueIsEmpty.value) return\n      if (formattedValue) {\n        return isDatesPicker.value\n          ? (formattedValue as Array<string>).join(', ')\n          : formattedValue\n      }\n      return ''\n    })\n\n    const isTimeLikePicker = computed(() => props.type.includes('time'))\n\n    const isTimePicker = computed(() => props.type.startsWith('time'))\n\n    const isDatesPicker = computed(() => props.type === 'dates')\n\n    const triggerIcon = computed(\n      () => props.prefixIcon || (isTimeLikePicker.value ? Clock : Calendar)\n    )\n\n    const showClose = ref(false)\n\n    const onClearIconClick = (event) => {\n      if (props.readonly || pickerDisabled.value) return\n      if (showClose.value) {\n        event.stopPropagation()\n        focus(true, true)\n        emitInput(null)\n        emitChange(null, true)\n        showClose.value = false\n        pickerVisible.value = false\n        pickerOptions.value.handleClear && pickerOptions.value.handleClear()\n      }\n    }\n    const valueIsEmpty = computed(() => {\n      return (\n        !props.modelValue ||\n        (Array.isArray(props.modelValue) && !props.modelValue.length)\n      )\n    })\n    const onMouseDownInput = () => {\n      pickerVisible.value = true\n    }\n    const onMouseEnter = () => {\n      if (props.readonly || pickerDisabled.value) return\n      if (!valueIsEmpty.value && props.clearable) {\n        showClose.value = true\n      }\n    }\n    const onMouseLeave = () => {\n      showClose.value = false\n    }\n    const onTouchStartInput = () => {\n      pickerVisible.value = true\n    }\n    const isRangeInput = computed(() => {\n      return props.type.includes('range')\n    })\n\n    const pickerSize = useSize()\n\n    const popperPaneRef = computed(() => {\n      return refPopper.value?.popperRef?.contentRef\n    })\n\n    const popperEl = computed(() => unref(refPopper)?.popperRef?.contentRef)\n    const actualInputRef = computed(() => {\n      if (unref(isRangeInput)) {\n        return unref(inputRef)\n      }\n\n      return (unref(inputRef) as ComponentPublicInstance)?.$el\n    })\n\n    onClickOutside(actualInputRef, (e: PointerEvent) => {\n      const unrefedPopperEl = unref(popperEl)\n      const inputEl = unref(actualInputRef)\n      if (\n        (unrefedPopperEl &&\n          (e.target === unrefedPopperEl ||\n            e.composedPath().includes(unrefedPopperEl))) ||\n        e.target === inputEl ||\n        e.composedPath().includes(inputEl)\n      )\n        return\n      pickerVisible.value = false\n    })\n\n    const userInput = ref(null)\n\n    const handleChange = () => {\n      if (userInput.value) {\n        const value = parseUserInputToDayjs(displayValue.value)\n        if (value) {\n          if (isValidValue(value)) {\n            emitInput(\n              Array.isArray(value)\n                ? value.map((_) => _.toDate())\n                : value.toDate()\n            )\n            userInput.value = null\n          }\n        }\n      }\n      if (userInput.value === '') {\n        emitInput(null)\n        emitChange(null)\n        userInput.value = null\n      }\n    }\n\n    const parseUserInputToDayjs = (value) => {\n      if (!value) return null\n      return pickerOptions.value.parseUserInput(value)\n    }\n\n    const formatDayjsToString = (value) => {\n      if (!value) return null\n      return pickerOptions.value.formatToString(value)\n    }\n\n    const isValidValue = (value) => {\n      return pickerOptions.value.isValidValue(value)\n    }\n\n    const handleKeydownInput = async (event) => {\n      const code = event.code\n      emitKeydown(event)\n      if (code === EVENT_CODE.esc) {\n        if (pickerVisible.value === true) {\n          pickerVisible.value = false\n          event.preventDefault()\n          event.stopPropagation()\n        }\n        return\n      }\n\n      if (code === EVENT_CODE.down) {\n        if (pickerOptions.value.handleFocusPicker) {\n          event.preventDefault()\n          event.stopPropagation()\n        }\n        if (pickerVisible.value === false) {\n          pickerVisible.value = true\n          await nextTick()\n        }\n        if (pickerOptions.value.handleFocusPicker) {\n          pickerOptions.value.handleFocusPicker()\n          return\n        }\n      }\n\n      if (code === EVENT_CODE.tab) {\n        hasJustTabExitedInput = true\n        return\n      }\n\n      if (code === EVENT_CODE.enter || code === EVENT_CODE.numpadEnter) {\n        if (\n          userInput.value === null ||\n          userInput.value === '' ||\n          isValidValue(parseUserInputToDayjs(displayValue.value))\n        ) {\n          handleChange()\n          pickerVisible.value = false\n        }\n        event.stopPropagation()\n        return\n      }\n\n      // if user is typing, do not let picker handle key input\n      if (userInput.value) {\n        event.stopPropagation()\n        return\n      }\n      if (pickerOptions.value.handleKeydownInput) {\n        pickerOptions.value.handleKeydownInput(event)\n      }\n    }\n    const onUserInput = (e) => {\n      userInput.value = e\n    }\n\n    const handleStartInput = (event) => {\n      if (userInput.value) {\n        userInput.value = [event.target.value, userInput.value[1]]\n      } else {\n        userInput.value = [event.target.value, null]\n      }\n    }\n\n    const handleEndInput = (event) => {\n      if (userInput.value) {\n        userInput.value = [userInput.value[0], event.target.value]\n      } else {\n        userInput.value = [null, event.target.value]\n      }\n    }\n\n    const handleStartChange = () => {\n      const value = parseUserInputToDayjs(userInput.value && userInput.value[0])\n      if (value && value.isValid()) {\n        userInput.value = [formatDayjsToString(value), displayValue.value[1]]\n        const newValue = [value, parsedValue.value && parsedValue.value[1]]\n        if (isValidValue(newValue)) {\n          emitInput(newValue)\n          userInput.value = null\n        }\n      }\n    }\n\n    const handleEndChange = () => {\n      const value = parseUserInputToDayjs(userInput.value && userInput.value[1])\n      if (value && value.isValid()) {\n        userInput.value = [displayValue.value[0], formatDayjsToString(value)]\n        const newValue = [parsedValue.value && parsedValue.value[0], value]\n        if (isValidValue(newValue)) {\n          emitInput(newValue)\n          userInput.value = null\n        }\n      }\n    }\n\n    const pickerOptions = ref<Partial<PickerOptions>>({})\n    const onSetPickerOption = <T extends keyof PickerOptions>(\n      e: [T, PickerOptions[T]]\n    ) => {\n      pickerOptions.value[e[0]] = e[1]\n      pickerOptions.value.panelReady = true\n    }\n\n    const onCalendarChange = (e) => {\n      ctx.emit('calendar-change', e)\n    }\n\n    const onPanelChange = (value, mode, view) => {\n      ctx.emit('panel-change', value, mode, view)\n    }\n\n    provide('EP_PICKER_BASE', {\n      props,\n    })\n\n    return {\n      nsDate,\n      nsInput,\n      nsRange,\n      // injected popper options\n      elPopperOptions,\n\n      isDatesPicker,\n      handleEndChange,\n      handleStartChange,\n      handleStartInput,\n      handleEndInput,\n      onUserInput,\n      handleChange,\n      handleKeydownInput,\n      popperPaneRef,\n      onClickOutside,\n      pickerSize,\n      isRangeInput,\n      onMouseDownInput,\n      onMouseLeave,\n      onMouseEnter,\n      onTouchStartInput,\n      onClearIconClick,\n      showClose,\n      triggerIcon,\n      onPick,\n      handleFocusInput,\n      handleBlurInput,\n      pickerVisible,\n      pickerActualVisible,\n      displayValue,\n      parsedValue,\n      setSelectionRange,\n      refPopper,\n      inputRef,\n      pickerDisabled,\n      onSetPickerOption,\n      onCalendarChange,\n      onPanelChange,\n      focus,\n      onShow,\n      onBeforeShow,\n      onHide,\n      onKeydownPopperContent,\n    }\n  },\n})\n</script>\n"],"names":["_resolveComponent","_openBlock","_createBlock","_mergeProps","_withCtx","_normalizeClass","_normalizeStyle","_withModifiers","_resolveDynamicComponent","_createCommentVNode","_createElementBlock","_createElementVNode","_renderSlot","_toDisplayString"],"mappings":"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"}