@dfsj/ec-hooks
Version:
贵州东方世纪常用 hook。
110 lines (109 loc) • 2.94 kB
JavaScript
import { defaults as D } from "lodash-es";
import { ref as b, watch as M, isRef as X, readonly as Y } from "vue";
function q(e) {
return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
}
var p, T;
function w() {
return T || (T = 1, p = function(e, m, a) {
var f, v, l, d, n = !1, i = !1, r = {}, s = 0, o = 0, u = {
sensitivity: 7,
interval: 100,
timeout: 0,
handleFocus: !1
};
function g(t, c) {
return o && (o = clearTimeout(o)), s = 0, i ? void 0 : a.call(t, c);
}
function h(t) {
f = t.clientX, v = t.clientY;
}
function E(t, c) {
if (o && (o = clearTimeout(o)), Math.abs(l - f) + Math.abs(d - v) < u.sensitivity)
return s = 1, i ? void 0 : m.call(t, c);
l = f, d = v, o = setTimeout(function() {
E(t, c);
}, u.interval);
}
r.options = function(t) {
var c = t.handleFocus !== u.handleFocus;
return u = Object.assign({}, u, t), c && (u.handleFocus ? j() : H()), r;
};
function L(t) {
return n = !0, o && (o = clearTimeout(o)), e.removeEventListener("mousemove", h, !1), s !== 1 && (l = t.clientX, d = t.clientY, e.addEventListener("mousemove", h, !1), o = setTimeout(function() {
E(e, t);
}, u.interval)), this;
}
function y(t) {
return n = !1, o && (o = clearTimeout(o)), e.removeEventListener("mousemove", h, !1), s === 1 && (o = setTimeout(function() {
g(e, t);
}, u.timeout)), this;
}
function F(t) {
n || (i = !0, m.call(e, t));
}
function O(t) {
!n && i && (i = !1, a.call(e, t));
}
function j() {
e.addEventListener("focus", F, !1), e.addEventListener("blur", O, !1);
}
function H() {
e.removeEventListener("focus", F, !1), e.removeEventListener("blur", O, !1);
}
return r.remove = function() {
e && (e.removeEventListener("mouseover", L, !1), e.removeEventListener("mouseout", y, !1), H());
}, e && (e.addEventListener("mouseover", L, !1), e.addEventListener("mouseout", y, !1)), r;
}), p;
}
var C = w();
const I = /* @__PURE__ */ q(C), R = {
in: (e) => {
},
out: (e) => {
}
}, _ = {
sensitivity: 7,
interval: 100,
timeout: 0
};
function B(e = R, m = _) {
const a = b(!1), f = b(null), v = D(m, _);
M(
f,
(n, i) => {
n && n !== i && l(n);
},
{ flush: "post" }
);
function l(n) {
const i = X(n) ? n.value : n;
if (!i) return;
const { in: r, out: s } = e;
I(
i,
() => {
r == null || r(i), a.value = !0;
},
() => {
s == null || s(i), a.value = !1;
}
).options(v);
}
return {
isHover: Y(a),
setHoverEle: d
};
function d(n, ...i) {
let r = null;
try {
r = JSON.stringify(i);
} catch {
r = "";
}
r && n && (n.dataset.attachData = r), f.value = n;
}
}
export {
B as useHover
};