UNPKG

@opensig/opendesign

Version:

36 lines (35 loc) 997 B
import { ref } from "vue"; import { isClient } from "../_utils/is.mjs"; import { trigger } from "../_utils/event.mjs"; const getPositionByType = { page: (e) => ({ x: e.pageX, y: e.pageY }), client: (e) => ({ x: e.clientX, y: e.clientY }), screen: (e) => ({ x: e.screenX, y: e.screenY }), offset: (e) => ({ x: e.offsetX, y: e.offsetY }) }; const defaultWindow = isClient ? window : null; function useMouse(props = {}) { const { defaultValue = { x: 0, y: 0 }, target = defaultWindow, type = "page" } = props; const x = ref(defaultValue.x); const y = ref(defaultValue.y); const handler = (e) => { const p = getPositionByType[type](e); x.value = p.x; y.value = p.y; }; if (target) { target.addEventListener("mousemove", handler, { passive: true }); trigger(target, "mousemove"); } const destroy = () => { target == null ? void 0 : target.removeEventListener("mousemove", handler); }; return { x, y, destroy }; } export { useMouse };