UNPKG

@dfsj/ec-hooks

Version:

贵州东方世纪常用 hook。

110 lines (109 loc) 2.94 kB
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 };