"use strict";
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
const index = require("../../../hooks/use-namespace/index.js");
const index$1 = require("../../tooltip/index.js");
const useSliderButton = require("./composables/use-slider-button.js");
const button = require("./button.js");
const Vue = require("vue");
const _hoisted_1 = ["tabindex"];
var button_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ Vue.defineComponent({
  name: "ElSliderButton",
  __name: "button",
  props: button.sliderButtonProps,
  emits: button.sliderButtonEmits,
  setup(__props, { expose: __expose, emit: __emit }) {
    const props = __props;
    const emit = __emit;
    const ns = index.useNamespace("slider");
    const initData = Vue.reactive({
      hovering: false,
      dragging: false,
      isClick: false,
      startX: 0,
      currentX: 0,
      startY: 0,
      currentY: 0,
      startPosition: 0,
      newPosition: 0,
      oldValue: props.modelValue
    });
    const tooltipPersistent = Vue.computed(() => !showTooltip.value ? false : persistent.value);
    const { disabled, button: button2, tooltip, showTooltip, persistent, tooltipVisible, wrapperStyle, formatValue, handleMouseEnter, handleMouseLeave, onButtonDown, onKeyDown, setPosition } = useSliderButton.useSliderButton(props, initData, emit);
    const { hovering, dragging } = Vue.toRefs(initData);
    __expose({
      onButtonDown,
      onKeyDown,
      setPosition,
      hovering,
      dragging
    });
    return (_ctx, _cache) => {
      return Vue.openBlock(), Vue.createElementBlock("div", {
        ref_key: "button",
        ref: button2,
        class: Vue.normalizeClass([Vue.unref(ns).e("button-wrapper"), {
          hover: Vue.unref(hovering),
          dragging: Vue.unref(dragging)
        }]),
        style: Vue.normalizeStyle(Vue.unref(wrapperStyle)),
        tabindex: Vue.unref(disabled) ? void 0 : 0,
        onMouseenter: _cache[0] || (_cache[0] = (...args) => Vue.unref(handleMouseEnter) && Vue.unref(handleMouseEnter)(...args)),
        onMouseleave: _cache[1] || (_cache[1] = (...args) => Vue.unref(handleMouseLeave) && Vue.unref(handleMouseLeave)(...args)),
        onMousedown: _cache[2] || (_cache[2] = (...args) => Vue.unref(onButtonDown) && Vue.unref(onButtonDown)(...args)),
        onFocus: _cache[3] || (_cache[3] = (...args) => Vue.unref(handleMouseEnter) && Vue.unref(handleMouseEnter)(...args)),
        onBlur: _cache[4] || (_cache[4] = (...args) => Vue.unref(handleMouseLeave) && Vue.unref(handleMouseLeave)(...args)),
        onKeydown: _cache[5] || (_cache[5] = (...args) => Vue.unref(onKeyDown) && Vue.unref(onKeyDown)(...args))
      }, [Vue.createVNode(Vue.unref(index$1.ElTooltip), {
        ref_key: "tooltip",
        ref: tooltip,
        visible: Vue.unref(tooltipVisible),
        placement: _ctx.placement,
        "fallback-placements": [
          "top",
          "bottom",
          "right",
          "left"
        ],
        "stop-popper-mouse-event": false,
        "popper-class": _ctx.tooltipClass,
        disabled: !Vue.unref(showTooltip),
        persistent: tooltipPersistent.value
      }, {
        content: Vue.withCtx(() => [Vue.createElementVNode("span", null, Vue.toDisplayString(Vue.unref(formatValue)), 1)]),
        default: Vue.withCtx(() => [Vue.createElementVNode("div", { class: Vue.normalizeClass([Vue.unref(ns).e("button"), {
          hover: Vue.unref(hovering),
          dragging: Vue.unref(dragging)
        }]) }, null, 2)]),
        _: 1
      }, 8, [
        "visible",
        "placement",
        "popper-class",
        "disabled",
        "persistent"
      ])], 46, _hoisted_1);
    };
  }
});
exports.default = button_vue_vue_type_script_setup_true_lang_default;
