use-canvas-drag 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -0,0 +1,81 @@
1
+ import { computed as e, onUnmounted as t, ref as n, watch as r } from "vue";
2
+ //#region src/useCanvasDrag.ts
3
+ var i = ["right"], a = {
4
+ left: { button: 0 },
5
+ right: { button: 2 },
6
+ middle: { button: 1 },
7
+ "shift-left": {
8
+ button: 0,
9
+ modifiers: { shift: !0 }
10
+ },
11
+ "ctrl-left": {
12
+ button: 0,
13
+ modifiers: { ctrl: !0 }
14
+ },
15
+ "alt-left": {
16
+ button: 0,
17
+ modifiers: { alt: !0 }
18
+ }
19
+ };
20
+ function o(e) {
21
+ return e ? e.map((e) => typeof e == "string" ? a[e] ?? { button: -1 } : e) : i.map((e) => a[e]);
22
+ }
23
+ function s(i) {
24
+ let { container: a, enabled: s = !0, onStartDrag: c, onDrag: l, onEndDrag: u, mode: d } = i, f = n(!1), p = n({
25
+ x: 0,
26
+ y: 0,
27
+ scrollLeft: 0,
28
+ scrollTop: 0
29
+ }), m = e(() => o(Array.isArray(d) ? d : d ? [d] : void 0)), h = () => typeof a == "string" ? document.querySelector(a) : typeof a == "function" ? a() : a instanceof HTMLElement ? a : null, g = (e) => m.value.some((t) => {
30
+ if (t.button !== void 0 && t.button !== e.button) return !1;
31
+ if (t.modifiers) {
32
+ let n = t.modifiers;
33
+ if (n.shift && !e.shiftKey || n.ctrl && !e.ctrlKey || n.alt && !e.altKey || n.meta && !e.metaKey) return !1;
34
+ }
35
+ return !0;
36
+ }), _ = (e) => {
37
+ if (!s || !g(e)) return;
38
+ let t = h();
39
+ t && (p.value = {
40
+ x: e.clientX,
41
+ y: e.clientY,
42
+ scrollLeft: t.scrollLeft,
43
+ scrollTop: t.scrollTop
44
+ }, f.value = !0, t.style.cursor = "grabbing", t.style.userSelect = "none", e.preventDefault(), c?.(e), document.addEventListener("mousemove", v), document.addEventListener("mouseup", y));
45
+ }, v = (e) => {
46
+ if (!f.value) return;
47
+ let t = h();
48
+ if (!t) return;
49
+ let n = e.clientX - p.value.x, r = e.clientY - p.value.y;
50
+ t.scrollLeft = p.value.scrollLeft - n, t.scrollTop = p.value.scrollTop - r, l?.({
51
+ x: n,
52
+ y: r
53
+ });
54
+ }, y = (e) => {
55
+ if (!f.value) return;
56
+ f.value = !1;
57
+ let t = h();
58
+ t && (t.style.cursor = "auto", t.style.userSelect = ""), document.removeEventListener("mousemove", v), document.removeEventListener("mouseup", y), u?.();
59
+ }, b = (e) => {
60
+ !s || !g(e) || e.preventDefault();
61
+ }, x = () => {
62
+ if (!f.value) return;
63
+ f.value = !1;
64
+ let e = h();
65
+ e && (e.style.cursor = "auto", e.style.userSelect = ""), document.removeEventListener("mousemove", v), document.removeEventListener("mouseup", y), u?.();
66
+ };
67
+ return r(() => s, (e) => {
68
+ !e && f.value && x();
69
+ }), t(() => {
70
+ document.removeEventListener("mousemove", v), document.removeEventListener("mouseup", y);
71
+ }), {
72
+ isPanning: f,
73
+ handlers: {
74
+ onMouseDown: _,
75
+ onContextMenu: b
76
+ },
77
+ stopPan: x
78
+ };
79
+ }
80
+ //#endregion
81
+ export { s as useCanvasDrag };
package/dist/index.umd.js CHANGED
@@ -1 +1 @@
1
- (function(e){typeof define==`function`&&define.amd?define([],e):e()})(function(){});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`vue`)):typeof define==`function`&&define.amd?define([`exports`,`vue`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UseCanvasDrag={},e.Vue))})(this,function(e,t){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var n=[`right`],r={left:{button:0},right:{button:2},middle:{button:1},"shift-left":{button:0,modifiers:{shift:!0}},"ctrl-left":{button:0,modifiers:{ctrl:!0}},"alt-left":{button:0,modifiers:{alt:!0}}};function i(e){return e?e.map(e=>typeof e==`string`?r[e]??{button:-1}:e):n.map(e=>r[e])}function a(e){let{container:n,enabled:r=!0,onStartDrag:a,onDrag:o,onEndDrag:s,mode:c}=e,l=(0,t.ref)(!1),u=(0,t.ref)({x:0,y:0,scrollLeft:0,scrollTop:0}),d=(0,t.computed)(()=>i(Array.isArray(c)?c:c?[c]:void 0)),f=()=>typeof n==`string`?document.querySelector(n):typeof n==`function`?n():n instanceof HTMLElement?n:null,p=e=>d.value.some(t=>{if(t.button!==void 0&&t.button!==e.button)return!1;if(t.modifiers){let n=t.modifiers;if(n.shift&&!e.shiftKey||n.ctrl&&!e.ctrlKey||n.alt&&!e.altKey||n.meta&&!e.metaKey)return!1}return!0}),m=e=>{if(!r||!p(e))return;let t=f();t&&(u.value={x:e.clientX,y:e.clientY,scrollLeft:t.scrollLeft,scrollTop:t.scrollTop},l.value=!0,t.style.cursor=`grabbing`,t.style.userSelect=`none`,e.preventDefault(),a?.(e),document.addEventListener(`mousemove`,h),document.addEventListener(`mouseup`,g))},h=e=>{if(!l.value)return;let t=f();if(!t)return;let n=e.clientX-u.value.x,r=e.clientY-u.value.y;t.scrollLeft=u.value.scrollLeft-n,t.scrollTop=u.value.scrollTop-r,o?.({x:n,y:r})},g=e=>{if(!l.value)return;l.value=!1;let t=f();t&&(t.style.cursor=`auto`,t.style.userSelect=``),document.removeEventListener(`mousemove`,h),document.removeEventListener(`mouseup`,g),s?.()},_=e=>{!r||!p(e)||e.preventDefault()},v=()=>{if(!l.value)return;l.value=!1;let e=f();e&&(e.style.cursor=`auto`,e.style.userSelect=``),document.removeEventListener(`mousemove`,h),document.removeEventListener(`mouseup`,g),s?.()};return(0,t.watch)(()=>r,e=>{!e&&l.value&&v()}),(0,t.onUnmounted)(()=>{document.removeEventListener(`mousemove`,h),document.removeEventListener(`mouseup`,g)}),{isPanning:l,handlers:{onMouseDown:m,onContextMenu:_},stopPan:v}}e.useCanvasDrag=a});
@@ -1 +1,12 @@
1
+ /**
2
+ * @description 主入口文件
3
+ * @author lrb
4
+ * @date 2026-05-11 23:21:24
5
+ * @lastModifyTime 2026-05-11 23:21:24
6
+ * @lastModifyAuthor lrb
7
+ * @license MIT
8
+ * @copyright lrb
9
+ * @version 1.0.0
10
+ */
11
+ export { useCanvasDrag } from './useCanvasDrag';
1
12
  export type { DragButtonConfig, CanvasDragOptions, DragTrigger } from './useCanvasDrag';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "use-canvas-drag",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Vue3 画布拖拽组合式函数,支持多种触发方式",
5
5
  "main": "./dist/index.umd.js",
6
6
  "module": "./dist/index.esm.js",