react-easy-sort
Advanced tools
Comparing version 0.1.1 to 0.1.2
18
index.js
@@ -70,2 +70,17 @@ 'use strict'; | ||
var preventDefault = function preventDefault(event) { | ||
event.preventDefault(); | ||
}; | ||
var disableContextMenu = function disableContextMenu() { | ||
window.addEventListener('contextmenu', preventDefault, { | ||
capture: true, | ||
passive: false | ||
}); | ||
}; | ||
var enableContextMenu = function enableContextMenu() { | ||
window.removeEventListener('contextmenu', preventDefault); | ||
}; | ||
var useDrag = function useDrag(_a) { | ||
@@ -180,2 +195,3 @@ var onStart = _a.onStart, | ||
document.removeEventListener('touchend', onTouchEnd); | ||
enableContextMenu(); | ||
@@ -204,2 +220,3 @@ if (callbacksRef.current.onEnd) { | ||
document.addEventListener('touchend', onTouchEnd); | ||
disableContextMenu(); | ||
@@ -256,2 +273,3 @@ if (callbacksRef.current.onStart) { | ||
document.removeEventListener('touchend', onTouchEnd); | ||
enableContextMenu(); | ||
cancelTouchStart(); | ||
@@ -258,0 +276,0 @@ }; |
@@ -61,2 +61,17 @@ import { __rest, __assign } from 'tslib'; | ||
var preventDefault = function preventDefault(event) { | ||
event.preventDefault(); | ||
}; | ||
var disableContextMenu = function disableContextMenu() { | ||
window.addEventListener('contextmenu', preventDefault, { | ||
capture: true, | ||
passive: false | ||
}); | ||
}; | ||
var enableContextMenu = function enableContextMenu() { | ||
window.removeEventListener('contextmenu', preventDefault); | ||
}; | ||
var useDrag = function useDrag(_a) { | ||
@@ -171,2 +186,3 @@ var onStart = _a.onStart, | ||
document.removeEventListener('touchend', onTouchEnd); | ||
enableContextMenu(); | ||
@@ -195,2 +211,3 @@ if (callbacksRef.current.onEnd) { | ||
document.addEventListener('touchend', onTouchEnd); | ||
disableContextMenu(); | ||
@@ -247,2 +264,3 @@ if (callbacksRef.current.onStart) { | ||
document.removeEventListener('touchend', onTouchEnd); | ||
enableContextMenu(); | ||
cancelTouchStart(); | ||
@@ -249,0 +267,0 @@ }; |
{ | ||
"name": "react-easy-sort", | ||
"version": "0.1.1", | ||
"version": "0.1.2", | ||
"description": "A React component to sort items in lists or grids", | ||
@@ -5,0 +5,0 @@ "homepage": "https://ricardo-ch.github.io/react-easy-sort/", |
@@ -93,1 +93,5 @@ # react-easy-sort | ||
[MIT](https://github.com/ricardo-ch/react-easy-sort/blob/master/LICENSE) | ||
## Alternatives | ||
- https://github.com/clauderic/react-sortable-hoc : before creating this library, I was using it and it was also supporting grid layouts. However, we had a lot of errors reported to our Sentry and this project was not maintained anymore. | ||
- https://github.com/atlassian/react-beautiful-dnd: another great library for sorting items. However, it doesn't support grid layouts (as of 2021-02-05). |
@@ -68,2 +68,17 @@ (function (global, factory) { | ||
var preventDefault = function preventDefault(event) { | ||
event.preventDefault(); | ||
}; | ||
var disableContextMenu = function disableContextMenu() { | ||
window.addEventListener('contextmenu', preventDefault, { | ||
capture: true, | ||
passive: false | ||
}); | ||
}; | ||
var enableContextMenu = function enableContextMenu() { | ||
window.removeEventListener('contextmenu', preventDefault); | ||
}; | ||
var useDrag = function useDrag(_a) { | ||
@@ -178,2 +193,3 @@ var onStart = _a.onStart, | ||
document.removeEventListener('touchend', onTouchEnd); | ||
enableContextMenu(); | ||
@@ -202,2 +218,3 @@ if (callbacksRef.current.onEnd) { | ||
document.addEventListener('touchend', onTouchEnd); | ||
disableContextMenu(); | ||
@@ -254,2 +271,3 @@ if (callbacksRef.current.onStart) { | ||
document.removeEventListener('touchend', onTouchEnd); | ||
enableContextMenu(); | ||
cancelTouchStart(); | ||
@@ -256,0 +274,0 @@ }; |
@@ -1,2 +0,2 @@ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("tslib"),require("array-move"),require("react")):"function"==typeof define&&define.amd?define(["exports","tslib","array-move","react"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ReactEasySort={},e.tslib,e.arrayMove,e.React)}(this,(function(e,t,n,r){"use strict";function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=u(n),c=u(r),a=function(e,t,n){for(var r=e.x,u=e.y,o=(void 0===n?{}:n).fallbackToClosest,c=void 0!==o&&o,a=1e4,i=-1,l=0;l<t.length;l+=1){var d=t[l];if(r>=d.left&&r<d.right&&u>=d.top&&u<d.bottom)return l;if(c){var f=(d.left+d.right)/2,s=(d.top+d.bottom)/2,v=Math.sqrt(Math.pow(r-f,2)+Math.pow(u-s,2));v<a&&(a=v,i=l)}}return i},i=function(e){return{x:Number(e.clientX),y:Number(e.clientY)}},l=function(e){return{x:Number(e.clientX),y:Number(e.clientY)}},d=function(e,t){return{x:e.x-t.x,y:e.y-t.y}},f=c.default.createContext(void 0);e.SortableItem=function(e){var t=e.children,n=c.default.useContext(f);if(!n)throw new Error("SortableItem must be a child of SortableList");var r=n.registerItem,u=n.removeItem,o=c.default.useRef(null);return c.default.useEffect((function(){var e=o.current;return e&&r(e),function(){e&&u(e)}}),[r,u]),c.default.cloneElement(t,{ref:o})},e.default=function(e){var n=e.children,r=e.onSortEnd,u=e.draggedItemClassName,s=t.__rest(e,["children","onSortEnd","draggedItemClassName"]),v=c.default.useRef([]),m=c.default.useRef([]),p=c.default.useRef(null),h=c.default.useRef(null),E=c.default.useRef(void 0),y=c.default.useRef(void 0);c.default.useEffect((function(){return function(){h.current&&document.body.removeChild(h.current)}}),[]);var b=function(e){h.current&&(h.current.style.transform="translate(-50%, -50%) translate3d("+e.x+"px, "+e.y+"px, 0px)")},x=c.default.useCallback((function(e){if(p.current){var t=v.current[e],n=m.current[e],r=t.cloneNode(!0);u&&u.split(" ").forEach((function(e){return r.classList.add(e)})),r.style.width=n.width+"px",r.style.height=n.height+"px";var o=p.current.getBoundingClientRect();r.style.position="fixed",r.style.top=o.top+"px",r.style.left=o.left+"px",document.body.appendChild(r),h.current=r}}),[u]),C=function(e){var t=e.onStart,n=e.onMove,r=e.onEnd,u=e.containerRef,o=c.default.useRef({x:0,y:0}),a=c.default.useRef(void 0),f=c.default.useRef(!1),s=c.default.useRef({onStart:t,onMove:n,onEnd:r}),v=c.default.useState(!1),m=v[0],p=v[1];c.default.useEffect((function(){s.current={onStart:t,onMove:n,onEnd:r}}),[t,n,r]);var h=function(){a.current&&window.clearTimeout(a.current)},E=c.default.useCallback((function(){if(u.current){var e=u.current.getBoundingClientRect();o.current={x:e.left,y:e.top}}}),[u]),y=c.default.useCallback((function(e){var t=d(e,o.current);s.current.onMove&&s.current.onMove({pointInWindow:e,point:t})}),[]),b=c.default.useCallback((function(e){if(f.current){f.current=!1;var t=i(e),n=d(t,o.current);s.current.onStart&&s.current.onStart({point:n,pointInWindow:t})}else y(i(e))}),[y]),x=c.default.useCallback((function(e){e.cancelable?(e.preventDefault(),y(l(e.touches[0]))):(document.removeEventListener("touchmove",x),s.current.onEnd&&s.current.onEnd())}),[y]),C=c.default.useCallback((function(){f.current=!1,document.removeEventListener("mousemove",b),document.removeEventListener("mouseup",C),s.current.onEnd&&s.current.onEnd()}),[b]),L=c.default.useCallback((function(){document.removeEventListener("touchmove",x),document.removeEventListener("touchend",L),s.current.onEnd&&s.current.onEnd()}),[x]),g=c.default.useCallback((function(e){0===e.button&&(document.addEventListener("mousemove",b),document.addEventListener("mouseup",C),E(),f.current=!0)}),[b,C,E]),R=c.default.useCallback((function(e,t){document.addEventListener("touchmove",x,{capture:!1,passive:!1}),document.addEventListener("touchend",L),s.current.onStart&&s.current.onStart({point:e,pointInWindow:t})}),[L,x]),k=c.default.useCallback((function(e){E();var t=l(e.touches[0]),n=d(t,o.current);a.current=window.setTimeout((function(){return R(n,t)}),120)}),[R,E]),w=c.default.useCallback((function(){p(!0),document.removeEventListener("touchstart",w)}),[]),S=c.default.useCallback((function(){h()}),[]);return c.default.useLayoutEffect((function(){if(m){var e=u.current;return null==e||e.addEventListener("touchstart",k,{capture:!0,passive:!1}),document.addEventListener("touchmove",S,{capture:!1,passive:!1}),document.addEventListener("touchend",S,{capture:!1,passive:!1}),function(){null==e||e.removeEventListener("touchstart",k),document.removeEventListener("touchmove",S),document.removeEventListener("touchend",S),document.removeEventListener("touchmove",x),document.removeEventListener("touchend",L),h()}}return document.addEventListener("touchstart",w),function(){document.removeEventListener("touchstart",w),document.removeEventListener("mousemove",b),document.removeEventListener("mouseup",C)}}),[m,w,b,x,S,L,C,u,k]),m?{}:{onMouseDown:g}}({containerRef:p,onStart:function(e){var t=e.point,n=e.pointInWindow;if(p.current){m.current=v.current.map((function(e){return e.getBoundingClientRect()}));var r=a(n,m.current);if(-1!==r){E.current=r,x(r),b(t);var u=v.current[r];u.style.opacity="0",u.style.visibility="hidden"}}},onMove:function(e){var t=e.point,n=e.pointInWindow;b(t);var r=E.current;if(void 0!==r){var u=a(n,m.current,{fallbackToClosest:!0});if(-1!==u){y.current=u;for(var o=r<u,c=0;c<v.current.length;c+=1){var i=v.current[c],l=m.current[c];if(o&&c>=r&&c<=u||!o&&c>=u&&c<=r){var d=m.current[o?c-1:c+1];if(d){var f=d.left-l.left,s=d.top-l.top;i.style.transform="translate3d("+f+"px, "+s+"px, 0px)"}}else i.style.transform="translate3d(0,0,0)";i.style.transitionDuration="300ms"}}}},onEnd:function(){for(var e=0;e<v.current.length;e+=1){var t=v.current[e];t.style.transform="",t.style.transitionDuration=""}var n=E.current;if(void 0!==n){var u=v.current[n];u&&(u.style.opacity="1",u.style.visibility="");var c=y.current;void 0!==c&&n!==c&&(v.current=o.default(v.current,n,c),r(n,c))}E.current=void 0,y.current=void 0,h.current&&(document.body.removeChild(h.current),h.current=null)}}),L=c.default.useCallback((function(e){v.current.push(e)}),[]),g=c.default.useCallback((function(e){var t=v.current.indexOf(e);-1!==t&&v.current.splice(t,1)}),[]),R=c.default.useMemo((function(){return{registerItem:L,removeItem:g}}),[L,g]);return c.default.createElement("div",t.__assign({},C,s,{ref:p}),c.default.createElement(f.Provider,{value:R},n))},Object.defineProperty(e,"__esModule",{value:!0})})); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("tslib"),require("array-move"),require("react")):"function"==typeof define&&define.amd?define(["exports","tslib","array-move","react"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ReactEasySort={},e.tslib,e.arrayMove,e.React)}(this,(function(e,t,n,r){"use strict";function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=u(n),c=u(r),a=function(e,t,n){for(var r=e.x,u=e.y,o=(void 0===n?{}:n).fallbackToClosest,c=void 0!==o&&o,a=1e4,i=-1,l=0;l<t.length;l+=1){var d=t[l];if(r>=d.left&&r<d.right&&u>=d.top&&u<d.bottom)return l;if(c){var f=(d.left+d.right)/2,s=(d.top+d.bottom)/2,v=Math.sqrt(Math.pow(r-f,2)+Math.pow(u-s,2));v<a&&(a=v,i=l)}}return i},i=function(e){return{x:Number(e.clientX),y:Number(e.clientY)}},l=function(e){return{x:Number(e.clientX),y:Number(e.clientY)}},d=function(e,t){return{x:e.x-t.x,y:e.y-t.y}},f=function(e){e.preventDefault()},s=function(){window.removeEventListener("contextmenu",f)},v=function(e){var t=e.onStart,n=e.onMove,r=e.onEnd,u=e.containerRef,o=c.default.useRef({x:0,y:0}),a=c.default.useRef(void 0),v=c.default.useRef(!1),m=c.default.useRef({onStart:t,onMove:n,onEnd:r}),p=c.default.useState(!1),h=p[0],E=p[1];c.default.useEffect((function(){m.current={onStart:t,onMove:n,onEnd:r}}),[t,n,r]);var y=function(){a.current&&window.clearTimeout(a.current)},b=c.default.useCallback((function(){if(u.current){var e=u.current.getBoundingClientRect();o.current={x:e.left,y:e.top}}}),[u]),x=c.default.useCallback((function(e){var t=d(e,o.current);m.current.onMove&&m.current.onMove({pointInWindow:e,point:t})}),[]),L=c.default.useCallback((function(e){if(v.current){v.current=!1;var t=i(e),n=d(t,o.current);m.current.onStart&&m.current.onStart({point:n,pointInWindow:t})}else x(i(e))}),[x]),C=c.default.useCallback((function(e){e.cancelable?(e.preventDefault(),x(l(e.touches[0]))):(document.removeEventListener("touchmove",C),m.current.onEnd&&m.current.onEnd())}),[x]),g=c.default.useCallback((function(){v.current=!1,document.removeEventListener("mousemove",L),document.removeEventListener("mouseup",g),m.current.onEnd&&m.current.onEnd()}),[L]),w=c.default.useCallback((function(){document.removeEventListener("touchmove",C),document.removeEventListener("touchend",w),s(),m.current.onEnd&&m.current.onEnd()}),[C]),R=c.default.useCallback((function(e){0===e.button&&(document.addEventListener("mousemove",L),document.addEventListener("mouseup",g),b(),v.current=!0)}),[L,g,b]),k=c.default.useCallback((function(e,t){document.addEventListener("touchmove",C,{capture:!1,passive:!1}),document.addEventListener("touchend",w),window.addEventListener("contextmenu",f,{capture:!0,passive:!1}),m.current.onStart&&m.current.onStart({point:e,pointInWindow:t})}),[w,C]),S=c.default.useCallback((function(e){b();var t=l(e.touches[0]),n=d(t,o.current);a.current=window.setTimeout((function(){return k(n,t)}),120)}),[k,b]),I=c.default.useCallback((function(){E(!0),document.removeEventListener("touchstart",I)}),[]),M=c.default.useCallback((function(){y()}),[]);return c.default.useLayoutEffect((function(){if(h){var e=u.current;return null==e||e.addEventListener("touchstart",S,{capture:!0,passive:!1}),document.addEventListener("touchmove",M,{capture:!1,passive:!1}),document.addEventListener("touchend",M,{capture:!1,passive:!1}),function(){null==e||e.removeEventListener("touchstart",S),document.removeEventListener("touchmove",M),document.removeEventListener("touchend",M),document.removeEventListener("touchmove",C),document.removeEventListener("touchend",w),s(),y()}}return document.addEventListener("touchstart",I),function(){document.removeEventListener("touchstart",I),document.removeEventListener("mousemove",L),document.removeEventListener("mouseup",g)}}),[h,I,L,C,M,w,g,u,S]),h?{}:{onMouseDown:R}},m=c.default.createContext(void 0);e.SortableItem=function(e){var t=e.children,n=c.default.useContext(m);if(!n)throw new Error("SortableItem must be a child of SortableList");var r=n.registerItem,u=n.removeItem,o=c.default.useRef(null);return c.default.useEffect((function(){var e=o.current;return e&&r(e),function(){e&&u(e)}}),[r,u]),c.default.cloneElement(t,{ref:o})},e.default=function(e){var n=e.children,r=e.onSortEnd,u=e.draggedItemClassName,i=t.__rest(e,["children","onSortEnd","draggedItemClassName"]),l=c.default.useRef([]),d=c.default.useRef([]),f=c.default.useRef(null),s=c.default.useRef(null),p=c.default.useRef(void 0),h=c.default.useRef(void 0);c.default.useEffect((function(){return function(){s.current&&document.body.removeChild(s.current)}}),[]);var E=function(e){s.current&&(s.current.style.transform="translate(-50%, -50%) translate3d("+e.x+"px, "+e.y+"px, 0px)")},y=c.default.useCallback((function(e){if(f.current){var t=l.current[e],n=d.current[e],r=t.cloneNode(!0);u&&u.split(" ").forEach((function(e){return r.classList.add(e)})),r.style.width=n.width+"px",r.style.height=n.height+"px";var o=f.current.getBoundingClientRect();r.style.position="fixed",r.style.top=o.top+"px",r.style.left=o.left+"px",document.body.appendChild(r),s.current=r}}),[u]),b=v({containerRef:f,onStart:function(e){var t=e.point,n=e.pointInWindow;if(f.current){d.current=l.current.map((function(e){return e.getBoundingClientRect()}));var r=a(n,d.current);if(-1!==r){p.current=r,y(r),E(t);var u=l.current[r];u.style.opacity="0",u.style.visibility="hidden"}}},onMove:function(e){var t=e.point,n=e.pointInWindow;E(t);var r=p.current;if(void 0!==r){var u=a(n,d.current,{fallbackToClosest:!0});if(-1!==u){h.current=u;for(var o=r<u,c=0;c<l.current.length;c+=1){var i=l.current[c],f=d.current[c];if(o&&c>=r&&c<=u||!o&&c>=u&&c<=r){var s=d.current[o?c-1:c+1];if(s){var v=s.left-f.left,m=s.top-f.top;i.style.transform="translate3d("+v+"px, "+m+"px, 0px)"}}else i.style.transform="translate3d(0,0,0)";i.style.transitionDuration="300ms"}}}},onEnd:function(){for(var e=0;e<l.current.length;e+=1){var t=l.current[e];t.style.transform="",t.style.transitionDuration=""}var n=p.current;if(void 0!==n){var u=l.current[n];u&&(u.style.opacity="1",u.style.visibility="");var c=h.current;void 0!==c&&n!==c&&(l.current=o.default(l.current,n,c),r(n,c))}p.current=void 0,h.current=void 0,s.current&&(document.body.removeChild(s.current),s.current=null)}}),x=c.default.useCallback((function(e){l.current.push(e)}),[]),L=c.default.useCallback((function(e){var t=l.current.indexOf(e);-1!==t&&l.current.splice(t,1)}),[]),C=c.default.useMemo((function(){return{registerItem:x,removeItem:L}}),[x,L]);return c.default.createElement("div",t.__assign({},b,i,{ref:f}),c.default.createElement(m.Provider,{value:C},n))},Object.defineProperty(e,"__esModule",{value:!0})})); | ||
//# sourceMappingURL=react-easy-sort.min.js.map |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
211799
1387
97