@opensig/opendesign
Version:
<p align="center"><img src="../docs/public/opendesign-logo-light.png"/></p> <h1 align="center">opendesign</h1> <p align="center">一个 Vue 3 组件库</p> <p align="center"><b>皮肤可定制,使用 TypeScript</b></p>
36 lines (35 loc) • 1.1 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const vue = require("vue");
const is = require("../_utils/is.js");
const event = require("../_utils/event.js");
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 = is.isClient ? window : null;
function useMouse(props = {}) {
const { defaultValue = { x: 0, y: 0 }, target = defaultWindow, type = "page" } = props;
const x = vue.ref(defaultValue.x);
const y = vue.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 });
event.trigger(target, "mousemove");
}
const destroy = () => {
target == null ? void 0 : target.removeEventListener("mousemove", handler);
};
return {
x,
y,
destroy
};
}
exports.useMouse = useMouse;