react-use-drag 0.0.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/README.md +25 -0
- package/dist/index.cjs +62 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.mjs +60 -0
- package/dist/index.mjs.map +1 -0
- package/dist/useDrag.d.ts +9 -0
- package/package.json +49 -0
package/README.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# React ripple click [](https://www.npmjs.com/package/react-use-drag) 
|
|
2
|
+
|
|
3
|
+
Drag interactions made easier. Try interactive [CodeSandbox demo](https://codesandbox.io/s/react-use-drag?file=/src/App.js).
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install react-use-drag
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## How to use
|
|
14
|
+
|
|
15
|
+
```jsx
|
|
16
|
+
import { useDrag } from 'react-use-drag'
|
|
17
|
+
|
|
18
|
+
const App = () => {
|
|
19
|
+
const drag = useDrag()
|
|
20
|
+
|
|
21
|
+
// @TODO
|
|
22
|
+
|
|
23
|
+
return <button>Drag me</button>
|
|
24
|
+
}
|
|
25
|
+
```
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react = require('react');
|
|
4
|
+
|
|
5
|
+
var useDrag = function (onRelativePositionChange, onEnd, onStart) {
|
|
6
|
+
var _a = react.useState(false), isMoving = _a[0], setIsMoving = _a[1];
|
|
7
|
+
var startPosition = react.useRef({ x: 0, y: 0, scrollX: 0, scrollY: 0 });
|
|
8
|
+
var _b = react.useState({ x: 0, y: 0 }), offsetPosition = _b[0], setOffsetPosition = _b[1];
|
|
9
|
+
var onPointerDown = react.useCallback(function (event) {
|
|
10
|
+
event.preventDefault();
|
|
11
|
+
startPosition.current = {
|
|
12
|
+
x: event.clientX,
|
|
13
|
+
y: event.clientY,
|
|
14
|
+
scrollX: window.scrollX, // @TODO: handle any parent scroll
|
|
15
|
+
scrollY: window.scrollY, // @TODO: handle any parent scroll
|
|
16
|
+
};
|
|
17
|
+
event.currentTarget.setPointerCapture(event.pointerId);
|
|
18
|
+
setIsMoving(true);
|
|
19
|
+
onStart();
|
|
20
|
+
}, [onStart]);
|
|
21
|
+
var onPointerUp = react.useMemo(function () {
|
|
22
|
+
if (!isMoving) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
return function (event) {
|
|
26
|
+
event.preventDefault();
|
|
27
|
+
setIsMoving(false);
|
|
28
|
+
event.currentTarget.releasePointerCapture(event.pointerId);
|
|
29
|
+
onEnd(offsetPosition.x, offsetPosition.y);
|
|
30
|
+
setOffsetPosition({ x: 0, y: 0 });
|
|
31
|
+
};
|
|
32
|
+
}, [isMoving, onEnd]);
|
|
33
|
+
var onPointerMove = react.useMemo(function () {
|
|
34
|
+
if (!isMoving) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
return function (event) {
|
|
38
|
+
event.preventDefault();
|
|
39
|
+
var newOffsetPosition = {
|
|
40
|
+
x: event.clientX +
|
|
41
|
+
window.scrollX -
|
|
42
|
+
(startPosition.current.x + startPosition.current.scrollX),
|
|
43
|
+
y: event.clientY +
|
|
44
|
+
window.scrollY -
|
|
45
|
+
(startPosition.current.y + startPosition.current.scrollY),
|
|
46
|
+
};
|
|
47
|
+
setOffsetPosition(newOffsetPosition);
|
|
48
|
+
};
|
|
49
|
+
}, [isMoving]);
|
|
50
|
+
react.useEffect(function () {
|
|
51
|
+
onRelativePositionChange(offsetPosition.x, offsetPosition.y);
|
|
52
|
+
}, [offsetPosition.x, offsetPosition.y, onRelativePositionChange]);
|
|
53
|
+
var elementProps = react.useMemo(function () { return ({
|
|
54
|
+
onPointerDown: onPointerDown,
|
|
55
|
+
onPointerUp: onPointerUp,
|
|
56
|
+
onPointerMove: onPointerMove,
|
|
57
|
+
}); }, [onPointerDown, onPointerMove, onPointerUp]);
|
|
58
|
+
return react.useMemo(function () { return ({ isMoving: isMoving, elementProps: elementProps }); }, [isMoving, elementProps]);
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
exports.useDrag = useDrag;
|
|
62
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/useDrag.ts"],"sourcesContent":["import {\n\tPointerEvent,\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from 'react'\n\nexport const useDrag = (\n\tonRelativePositionChange: (x: number, y: number) => void,\n\tonEnd: (x: number, y: number) => void,\n\tonStart: () => void,\n) => {\n\tconst [isMoving, setIsMoving] = useState(false)\n\tconst startPosition = useRef({ x: 0, y: 0, scrollX: 0, scrollY: 0 })\n\tconst [offsetPosition, setOffsetPosition] = useState({ x: 0, y: 0 })\n\n\tconst onPointerDown = useCallback(\n\t\t(event: PointerEvent<HTMLElement>) => {\n\t\t\tevent.preventDefault()\n\t\t\tstartPosition.current = {\n\t\t\t\tx: event.clientX,\n\t\t\t\ty: event.clientY,\n\t\t\t\tscrollX: window.scrollX, // @TODO: handle any parent scroll\n\t\t\t\tscrollY: window.scrollY, // @TODO: handle any parent scroll\n\t\t\t}\n\t\t\tevent.currentTarget.setPointerCapture(event.pointerId)\n\t\t\tsetIsMoving(true)\n\t\t\tonStart()\n\t\t},\n\t\t[onStart],\n\t)\n\n\tconst onPointerUp = useMemo(() => {\n\t\tif (!isMoving) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (event: PointerEvent<HTMLElement>) => {\n\t\t\tevent.preventDefault()\n\t\t\tsetIsMoving(false)\n\t\t\tevent.currentTarget.releasePointerCapture(event.pointerId)\n\t\t\tonEnd(offsetPosition.x, offsetPosition.y)\n\t\t\tsetOffsetPosition({ x: 0, y: 0 })\n\t\t}\n\t}, [isMoving, onEnd])\n\n\tconst onPointerMove = useMemo(() => {\n\t\tif (!isMoving) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (event: PointerEvent<HTMLElement>) => {\n\t\t\tevent.preventDefault()\n\t\t\tconst newOffsetPosition = {\n\t\t\t\tx:\n\t\t\t\t\tevent.clientX +\n\t\t\t\t\twindow.scrollX -\n\t\t\t\t\t(startPosition.current.x + startPosition.current.scrollX),\n\t\t\t\ty:\n\t\t\t\t\tevent.clientY +\n\t\t\t\t\twindow.scrollY -\n\t\t\t\t\t(startPosition.current.y + startPosition.current.scrollY),\n\t\t\t}\n\t\t\tsetOffsetPosition(newOffsetPosition)\n\t\t}\n\t}, [isMoving])\n\n\tuseEffect(() => {\n\t\tonRelativePositionChange(offsetPosition.x, offsetPosition.y)\n\t}, [offsetPosition.x, offsetPosition.y, onRelativePositionChange])\n\n\tconst elementProps = useMemo(\n\t\t() => ({\n\t\t\tonPointerDown,\n\t\t\tonPointerUp,\n\t\t\tonPointerMove,\n\t\t}),\n\t\t[onPointerDown, onPointerMove, onPointerUp],\n\t)\n\n\treturn useMemo(() => ({ isMoving, elementProps }), [isMoving, elementProps])\n}\n"],"names":["useState","useRef","useCallback","useMemo","useEffect"],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useDrag';
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { useState, useRef, useCallback, useMemo, useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
var useDrag = function (onRelativePositionChange, onEnd, onStart) {
|
|
4
|
+
var _a = useState(false), isMoving = _a[0], setIsMoving = _a[1];
|
|
5
|
+
var startPosition = useRef({ x: 0, y: 0, scrollX: 0, scrollY: 0 });
|
|
6
|
+
var _b = useState({ x: 0, y: 0 }), offsetPosition = _b[0], setOffsetPosition = _b[1];
|
|
7
|
+
var onPointerDown = useCallback(function (event) {
|
|
8
|
+
event.preventDefault();
|
|
9
|
+
startPosition.current = {
|
|
10
|
+
x: event.clientX,
|
|
11
|
+
y: event.clientY,
|
|
12
|
+
scrollX: window.scrollX, // @TODO: handle any parent scroll
|
|
13
|
+
scrollY: window.scrollY, // @TODO: handle any parent scroll
|
|
14
|
+
};
|
|
15
|
+
event.currentTarget.setPointerCapture(event.pointerId);
|
|
16
|
+
setIsMoving(true);
|
|
17
|
+
onStart();
|
|
18
|
+
}, [onStart]);
|
|
19
|
+
var onPointerUp = useMemo(function () {
|
|
20
|
+
if (!isMoving) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
return function (event) {
|
|
24
|
+
event.preventDefault();
|
|
25
|
+
setIsMoving(false);
|
|
26
|
+
event.currentTarget.releasePointerCapture(event.pointerId);
|
|
27
|
+
onEnd(offsetPosition.x, offsetPosition.y);
|
|
28
|
+
setOffsetPosition({ x: 0, y: 0 });
|
|
29
|
+
};
|
|
30
|
+
}, [isMoving, onEnd]);
|
|
31
|
+
var onPointerMove = useMemo(function () {
|
|
32
|
+
if (!isMoving) {
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
return function (event) {
|
|
36
|
+
event.preventDefault();
|
|
37
|
+
var newOffsetPosition = {
|
|
38
|
+
x: event.clientX +
|
|
39
|
+
window.scrollX -
|
|
40
|
+
(startPosition.current.x + startPosition.current.scrollX),
|
|
41
|
+
y: event.clientY +
|
|
42
|
+
window.scrollY -
|
|
43
|
+
(startPosition.current.y + startPosition.current.scrollY),
|
|
44
|
+
};
|
|
45
|
+
setOffsetPosition(newOffsetPosition);
|
|
46
|
+
};
|
|
47
|
+
}, [isMoving]);
|
|
48
|
+
useEffect(function () {
|
|
49
|
+
onRelativePositionChange(offsetPosition.x, offsetPosition.y);
|
|
50
|
+
}, [offsetPosition.x, offsetPosition.y, onRelativePositionChange]);
|
|
51
|
+
var elementProps = useMemo(function () { return ({
|
|
52
|
+
onPointerDown: onPointerDown,
|
|
53
|
+
onPointerUp: onPointerUp,
|
|
54
|
+
onPointerMove: onPointerMove,
|
|
55
|
+
}); }, [onPointerDown, onPointerMove, onPointerUp]);
|
|
56
|
+
return useMemo(function () { return ({ isMoving: isMoving, elementProps: elementProps }); }, [isMoving, elementProps]);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export { useDrag };
|
|
60
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/useDrag.ts"],"sourcesContent":["import {\n\tPointerEvent,\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from 'react'\n\nexport const useDrag = (\n\tonRelativePositionChange: (x: number, y: number) => void,\n\tonEnd: (x: number, y: number) => void,\n\tonStart: () => void,\n) => {\n\tconst [isMoving, setIsMoving] = useState(false)\n\tconst startPosition = useRef({ x: 0, y: 0, scrollX: 0, scrollY: 0 })\n\tconst [offsetPosition, setOffsetPosition] = useState({ x: 0, y: 0 })\n\n\tconst onPointerDown = useCallback(\n\t\t(event: PointerEvent<HTMLElement>) => {\n\t\t\tevent.preventDefault()\n\t\t\tstartPosition.current = {\n\t\t\t\tx: event.clientX,\n\t\t\t\ty: event.clientY,\n\t\t\t\tscrollX: window.scrollX, // @TODO: handle any parent scroll\n\t\t\t\tscrollY: window.scrollY, // @TODO: handle any parent scroll\n\t\t\t}\n\t\t\tevent.currentTarget.setPointerCapture(event.pointerId)\n\t\t\tsetIsMoving(true)\n\t\t\tonStart()\n\t\t},\n\t\t[onStart],\n\t)\n\n\tconst onPointerUp = useMemo(() => {\n\t\tif (!isMoving) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (event: PointerEvent<HTMLElement>) => {\n\t\t\tevent.preventDefault()\n\t\t\tsetIsMoving(false)\n\t\t\tevent.currentTarget.releasePointerCapture(event.pointerId)\n\t\t\tonEnd(offsetPosition.x, offsetPosition.y)\n\t\t\tsetOffsetPosition({ x: 0, y: 0 })\n\t\t}\n\t}, [isMoving, onEnd])\n\n\tconst onPointerMove = useMemo(() => {\n\t\tif (!isMoving) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (event: PointerEvent<HTMLElement>) => {\n\t\t\tevent.preventDefault()\n\t\t\tconst newOffsetPosition = {\n\t\t\t\tx:\n\t\t\t\t\tevent.clientX +\n\t\t\t\t\twindow.scrollX -\n\t\t\t\t\t(startPosition.current.x + startPosition.current.scrollX),\n\t\t\t\ty:\n\t\t\t\t\tevent.clientY +\n\t\t\t\t\twindow.scrollY -\n\t\t\t\t\t(startPosition.current.y + startPosition.current.scrollY),\n\t\t\t}\n\t\t\tsetOffsetPosition(newOffsetPosition)\n\t\t}\n\t}, [isMoving])\n\n\tuseEffect(() => {\n\t\tonRelativePositionChange(offsetPosition.x, offsetPosition.y)\n\t}, [offsetPosition.x, offsetPosition.y, onRelativePositionChange])\n\n\tconst elementProps = useMemo(\n\t\t() => ({\n\t\t\tonPointerDown,\n\t\t\tonPointerUp,\n\t\t\tonPointerMove,\n\t\t}),\n\t\t[onPointerDown, onPointerMove, onPointerUp],\n\t)\n\n\treturn useMemo(() => ({ isMoving, elementProps }), [isMoving, elementProps])\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { PointerEvent } from 'react';
|
|
2
|
+
export declare const useDrag: (onRelativePositionChange: (x: number, y: number) => void, onEnd: (x: number, y: number) => void, onStart: () => void) => {
|
|
3
|
+
isMoving: boolean;
|
|
4
|
+
elementProps: {
|
|
5
|
+
onPointerDown: (event: PointerEvent<HTMLElement>) => void;
|
|
6
|
+
onPointerUp: ((event: PointerEvent<HTMLElement>) => void) | undefined;
|
|
7
|
+
onPointerMove: ((event: PointerEvent<HTMLElement>) => void) | undefined;
|
|
8
|
+
};
|
|
9
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "react-use-drag",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Drag interactions made easier.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.cjs",
|
|
7
|
+
"module": "./dist/index.mjs",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"scripts": {
|
|
10
|
+
"start": "rollup -c -w",
|
|
11
|
+
"build": "rollup -c",
|
|
12
|
+
"prepare": "npm run build"
|
|
13
|
+
},
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "https://github.com/FilipChalupa/react-use-drag.git"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"typescript",
|
|
20
|
+
"react",
|
|
21
|
+
"hook",
|
|
22
|
+
"drag"
|
|
23
|
+
],
|
|
24
|
+
"author": {
|
|
25
|
+
"name": "Filip Chalupa",
|
|
26
|
+
"email": "chalupa.filip@gmail.com",
|
|
27
|
+
"url": "https://www.npmjs.com/~onset"
|
|
28
|
+
},
|
|
29
|
+
"license": "ISC",
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@rollup/plugin-commonjs": "^25.0.7",
|
|
32
|
+
"@rollup/plugin-node-resolve": "^15.2.3",
|
|
33
|
+
"@types/react": "^18.0.10",
|
|
34
|
+
"prettier": "^3.0.3",
|
|
35
|
+
"react": "^18.1.0",
|
|
36
|
+
"rollup": "^4.2.0",
|
|
37
|
+
"rollup-plugin-delete": "^2.0.0",
|
|
38
|
+
"rollup-plugin-peer-deps-external": "^2.2.4",
|
|
39
|
+
"rollup-plugin-typescript2": "^0.36.0",
|
|
40
|
+
"typescript": "^5.2.2",
|
|
41
|
+
"typescript-plugin-css-modules": "^5.0.2"
|
|
42
|
+
},
|
|
43
|
+
"peerDependencies": {
|
|
44
|
+
"react": "18"
|
|
45
|
+
},
|
|
46
|
+
"files": [
|
|
47
|
+
"/dist/"
|
|
48
|
+
]
|
|
49
|
+
}
|