{"version":3,"file":"slider-trigger.vue2.mjs","sources":["../../../components/slider/slider-trigger.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { Tooltip } from '@/components/tooltip'\r\n\r\nimport { computed, ref } from 'vue'\r\n\r\nimport { useHoverDelay, useNameHelper } from '@vexip-ui/config'\r\nimport { useModifier, useSetTimeout } from '@vexip-ui/hooks'\r\n\r\nimport type { PropType } from 'vue'\r\nimport type { TooltipExposed } from '@/components/tooltip'\r\nimport type { SliderTipProps } from './symbol'\r\n\r\ndefineOptions({ name: 'SliderTrigger' })\r\n\r\nconst props = defineProps({\r\n  value: {\r\n    type: Number,\r\n    default: 0,\r\n  },\r\n  tipTransfer: {\r\n    type: [Boolean, String],\r\n    default: false,\r\n  },\r\n  hideTip: {\r\n    type: Boolean,\r\n    default: false,\r\n  },\r\n  vertical: {\r\n    type: Boolean,\r\n    default: false,\r\n  },\r\n  min: {\r\n    type: Number,\r\n    default: 0,\r\n  },\r\n  max: {\r\n    type: Number,\r\n    default: 100,\r\n  },\r\n  disabled: {\r\n    type: Boolean,\r\n    default: false,\r\n  },\r\n  loading: {\r\n    type: Boolean,\r\n    default: false,\r\n  },\r\n  reverse: {\r\n    type: Boolean,\r\n    default: false,\r\n  },\r\n  sliding: {\r\n    type: Boolean,\r\n    default: false,\r\n  },\r\n  tipHover: {\r\n    type: Boolean,\r\n    default: false,\r\n  },\r\n  tipProps: {\r\n    type: Object as PropType<SliderTipProps>,\r\n    default: () => ({}),\r\n  },\r\n})\r\n\r\nconst emit = defineEmits(['key-minus', 'key-plus'])\r\n\r\ndefineSlots<{ default: () => any, tip: () => any }>()\r\n\r\nconst nh = useNameHelper('slider')\r\nconst hoverDelay = useHoverDelay()\r\n\r\nconst isTipShow = ref(false)\r\n\r\nconst tooltip = ref<(InstanceType<typeof Tooltip> & TooltipExposed) | null>(null)\r\nconst handler = ref<HTMLElement>()\r\n\r\nconst { timer } = useSetTimeout()\r\nconst { target: wrapper } = useModifier({\r\n  passive: false,\r\n  onKeyDown: (event, modifier) => {\r\n    if (modifier.up || modifier.down || modifier.left || modifier.right) {\r\n      disableEvent(event)\r\n\r\n      const extraType = event.ctrlKey\r\n        ? 'ctrl'\r\n        : event.shiftKey\r\n          ? 'shift'\r\n          : event.altKey\r\n            ? 'alt'\r\n            : undefined\r\n\r\n      if (modifier.up || modifier.left) {\r\n        emit('key-minus', extraType)\r\n      } else {\r\n        emit('key-plus', extraType)\r\n      }\r\n    }\r\n  },\r\n})\r\n\r\nconst tipClass = computed(() => [nh.be('tip'), props.tipProps?.tipClass])\r\n\r\ndefineExpose({ updateTooltip, focus, blur })\r\n\r\nfunction showTooltip() {\r\n  clearTimeout(timer.hover)\r\n\r\n  if (!props.disabled) {\r\n    timer.hover = setTimeout(() => {\r\n      isTipShow.value = true\r\n    }, hoverDelay.value)\r\n  }\r\n}\r\n\r\nfunction hideTooltip() {\r\n  clearTimeout(timer.hover)\r\n\r\n  timer.hover = setTimeout(() => {\r\n    isTipShow.value = false\r\n  }, hoverDelay.value)\r\n}\r\n\r\nfunction disableEvent<E extends Event>(event: E) {\r\n  if (event.cancelable) {\r\n    event.stopPropagation()\r\n    event.preventDefault()\r\n  }\r\n}\r\n\r\nfunction updateTooltip() {\r\n  if (tooltip.value) {\r\n    tooltip.value.updatePopper()\r\n  }\r\n}\r\n\r\nfunction focus(options?: FocusOptions) {\r\n  handler.value?.focus(options)\r\n}\r\n\r\nfunction blur() {\r\n  handler.value?.blur()\r\n}\r\n</script>\r\n\r\n<template>\r\n  <div\r\n    ref=\"wrapper\"\r\n    :class=\"nh.be('trigger')\"\r\n    tabindex=\"-1\"\r\n    @touchstart=\"disableEvent\"\r\n  >\r\n    <Tooltip\r\n      ref=\"tooltip\"\r\n      :placement=\"vertical ? 'right' : 'top'\"\r\n      v-bind=\"tipProps\"\r\n      trigger=\"custom\"\r\n      :transfer=\"tipTransfer\"\r\n      :visible=\"isTipShow || sliding\"\r\n      :tip-class=\"tipClass\"\r\n      :disabled=\"hideTip\"\r\n      :no-hover=\"!tipHover\"\r\n      @tip-enter=\"showTooltip\"\r\n      @tip-leave=\"hideTooltip\"\r\n    >\r\n      <template #trigger>\r\n        <div\r\n          ref=\"handler\"\r\n          :class=\"{\r\n            [nh.be('button')]: true,\r\n            [nh.bem('button', 'loading')]: loading,\r\n            [nh.bem('button', 'sliding')]: sliding\r\n          }\"\r\n          role=\"slider\"\r\n          tabindex=\"0\"\r\n          :aria-valuenow=\"value\"\r\n          :aria-valuemin=\"min\"\r\n          :aria-valuemax=\"max\"\r\n          :aria-disabled=\"disabled\"\r\n          @mouseenter=\"showTooltip\"\r\n          @mouseleave=\"hideTooltip\"\r\n        >\r\n          <slot>\r\n            <div :class=\"nh.be('handler')\"></div>\r\n          </slot>\r\n        </div>\r\n      </template>\r\n      <slot name=\"tip\">\r\n        {{ value }}\r\n      </slot>\r\n    </Tooltip>\r\n  </div>\r\n</template>\r\n"],"names":["props","__props","emit","__emit","nh","useNameHelper","hoverDelay","useHoverDelay","isTipShow","ref","tooltip","handler","timer","useSetTimeout","wrapper","useModifier","event","modifier","disableEvent","extraType","tipClass","computed","_a","__expose","updateTooltip","focus","blur","showTooltip","hideTooltip","options","_createElementBlock","_normalizeClass","_unref","_createVNode","_mergeProps","_createElementVNode","_renderSlot","_ctx"],"mappings":"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"}