@ncdai/react-swipe-actions 0.1.0 → 0.1.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.js CHANGED
@@ -1 +1 @@
1
- "use strict";"use client";var pe=Object.create;var D=Object.defineProperty,ue=Object.defineProperties,fe=Object.getOwnPropertyDescriptor,Se=Object.getOwnPropertyDescriptors,Re=Object.getOwnPropertyNames,M=Object.getOwnPropertySymbols,we=Object.getPrototypeOf,W=Object.prototype.hasOwnProperty,F=Object.prototype.propertyIsEnumerable;var B=(t,e,n)=>e in t?D(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,w=(t,e)=>{for(var n in e||(e={}))W.call(e,n)&&B(t,n,e[n]);if(M)for(var n of M(e))F.call(e,n)&&B(t,n,e[n]);return t},y=(t,e)=>ue(t,Se(e));var E=(t,e)=>{var n={};for(var o in t)W.call(t,o)&&e.indexOf(o)<0&&(n[o]=t[o]);if(t!=null&&M)for(var o of M(t))e.indexOf(o)<0&&F.call(t,o)&&(n[o]=t[o]);return n};var me=(t,e)=>{for(var n in e)D(t,n,{get:e[n],enumerable:!0})},Z=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Re(e))!W.call(t,r)&&r!==n&&D(t,r,{get:()=>e[r],enumerable:!(o=fe(e,r))||o.enumerable});return t};var $=(t,e,n)=>(n=t!=null?pe(we(t)):{},Z(e||!t||!t.__esModule?D(n,"default",{value:t,enumerable:!0}):n,t)),ge=t=>Z(D({},"__esModule",{value:!0}),t);var xe={};me(xe,{SwipeAction:()=>oe,SwipeActions:()=>ne,SwipeContent:()=>re,SwipeItem:()=>te,SwipeRoot:()=>X});module.exports=ge(xe);var s=$(require("react")),v=require("motion/react");var h=$(require("react"));function A({defaultTagName:t,props:e,render:n,state:o={},stateAttributesMapping:r}){let i=P(ye(o,r),e);if(!n)return h.createElement(t,i);if(typeof n=="function")return n(i,o);if(!h.isValidElement(n))return null;let c=n.props,f=P(i,c),l=y(w({},f),{ref:q(i.ref,c.ref)});return h.cloneElement(n,l)}function P(...t){let e={};for(let n of t){if(!n)continue;let o=n;for(let r of Object.keys(o)){let i=o[r];if(i===void 0)continue;let c=e[r];r==="className"?e[r]=[c,i].filter(Boolean).join(" "):r==="style"?e[r]=w(w({},c),i):r==="ref"?e[r]=q(c,i):Ee(r)&&typeof c=="function"&&typeof i=="function"?e[r]=ve(i,c):e[r]=i}}return e}function ye(t,e){var o;let n={};for(let r of Object.keys(t)){let i=t[r],c=(o=e==null?void 0:e[r])==null?void 0:o.call(e,i);if(c){Object.assign(n,c);continue}if(r==="slot"){n["data-slot"]=i;continue}let f=`data-${String(r).replace(/[A-Z]/g,l=>`-${l.toLowerCase()}`)}`;typeof i=="boolean"?n[f]=i?"":void 0:i!=null&&(n[f]=String(i))}return n}function ve(t,e){return function(o){t(o),o.defaultPrevented||e(o)}}function Ee(t){return/^on[A-Z]/.test(t)}function q(...t){let e=t.filter(Boolean);if(e.length!==0)return n=>{for(let o of e)typeof o=="function"?o(n):o&&(o.current=n)}}var L=require("react/jsx-runtime"),Pe={position:"relative",isolation:"isolate",overflow:"hidden"},Te={position:"absolute",top:0,bottom:0,zIndex:0,display:"flex"},Ce={position:"relative",zIndex:1},J={type:"spring",stiffness:500,damping:45,mass:.8},be=y(w({},J),{damping:36}),he=4,Q=s.createContext(null);function X(n){var o=n,{render:t}=o,e=E(o,["render"]);let r=s.useRef(new Map),i=s.useMemo(()=>({register(f,l){return r.current.set(f,l),()=>{r.current.delete(f)}},notifyOpen(f){for(let[l,p]of r.current)l!==f&&p()}}),[]),c=A({defaultTagName:"div",render:t,props:P({"data-slot":"swipe-root"},e)});return(0,L.jsx)(Q.Provider,{value:i,children:c})}var ee=s.createContext(null);function N(){let t=s.useContext(ee);if(!t)throw new Error("Swipe parts must be used within SwipeItem");return t}function te(f){var l=f,{render:t,threshold:e=.5,velocityFactor:n=.2,disabled:o=!1,closeOnScroll:r=!1,onOpenChange:i}=l,c=E(l,["render","threshold","velocityFactor","disabled","closeOnScroll","onOpenChange"]);let p=s.useId(),S=s.useContext(Q),U=(0,v.useReducedMotion)(),O=s.useRef(null),[u,se]=s.useState({left:0,right:0}),[T,ie]=s.useState("closed"),[I,V]=s.useState(!1),C=s.useRef("closed"),x=s.useRef(!1),m=(0,v.useMotionValue)(0),_=s.useCallback((a,d)=>{se(R=>R[a]===d?R:y(w({},R),{[a]:d}))},[]),g=s.useCallback((a,d)=>{let R=a==="left"?u.left:a==="right"?-u.right:0;(0,v.animate)(m,R,U?{duration:0}:d===void 0?J:y(w({},be),{velocity:d})),a!=="closed"&&(S==null||S.notifyOpen(p)),C.current!==a&&(C.current=a,ie(a),i==null||i(a))},[u,m,U,S,p,i]),b=s.useCallback(()=>g("closed"),[g]),k=s.useRef(()=>{});s.useEffect(()=>{k.current=b},[b]),s.useEffect(()=>S==null?void 0:S.register(p,()=>k.current()),[S,p]),s.useEffect(()=>{C.current==="left"&&m.set(u.left),C.current==="right"&&m.set(-u.right)},[u,m]);let K=s.useCallback(()=>{x.current=!1,V(!0),S==null||S.notifyOpen(p)},[S,p]),j=s.useCallback((a,d)=>{Math.abs(d.offset.x)>he&&(x.current=!0)},[]),G=s.useCallback((a,d)=>{V(!1);let R=m.get()+d.velocity.x*n;u.right>0&&R<=-u.right*e?g("right",d.velocity.x):u.left>0&&R>=u.left*e?g("left",d.velocity.x):g("closed",d.velocity.x)},[m,n,u,e,g]),z=s.useCallback(a=>{if(!(!x.current&&C.current==="closed")){if(a.preventDefault(),a.stopPropagation(),x.current){x.current=!1;return}b()}},[b]);s.useEffect(()=>{if(T==="closed")return;let a=H=>{var Y;(Y=O.current)!=null&&Y.contains(H.target)||k.current()},d=H=>{H.key==="Escape"&&k.current()},R=()=>k.current();return document.addEventListener("pointerdown",a,!0),document.addEventListener("keydown",d),r&&window.addEventListener("scroll",R,!0),()=>{document.removeEventListener("pointerdown",a,!0),document.removeEventListener("keydown",d),r&&window.removeEventListener("scroll",R,!0)}},[T,r]);let ae=s.useCallback(a=>{if(o||a.key!=="ArrowLeft"&&a.key!=="ArrowRight")return;let[d,R]=a.key==="ArrowLeft"?["left","right"]:["right","left"];if(C.current===d)g("closed");else if(u[R]>0)g(R);else return;a.preventDefault()},[o,u,g]),ce=s.useMemo(()=>({state:T,disabled:o,dragging:I}),[T,o,I]),de=s.useMemo(()=>({state:T,disabled:o,dragging:I,x:m,leftWidth:u.left,rightWidth:u.right,setStripWidth:_,close:b,onDragStart:K,onDrag:j,onDragEnd:G,onClickCapture:z}),[T,o,I,m,u,_,b,K,j,G,z]),le=A({defaultTagName:"div",render:t,state:ce,props:P({"data-slot":"swipe-item",ref:O,style:Pe,onKeyDown:ae},c)});return(0,L.jsx)(ee.Provider,{value:de,children:le})}function ne(o){var r=o,{render:t,side:e}=r,n=E(r,["render","side"]);let{state:i,setStripWidth:c}=N(),f=s.useRef(null);return s.useEffect(()=>{let l=f.current;if(!l)return;let p=new ResizeObserver(()=>c(e,l.offsetWidth));return p.observe(l),()=>{p.disconnect(),c(e,0)}},[e,c]),A({defaultTagName:"div",render:t,props:P({"data-slot":"swipe-actions","data-side":e,ref:f,style:y(w({},Te),{[e]:0}),inert:i!==e},n)})}function oe(o){var r=o,{render:t,closeOnClick:e=!0}=r,n=E(r,["render","closeOnClick"]);let{close:i}=N();return A({defaultTagName:"button",render:t,props:P({"data-slot":"swipe-action",type:"button",onClick:()=>{e&&i()}},n)})}function re(n){var o=n,{style:t}=o,e=E(o,["style"]);let S=N(),{x:r,disabled:i,dragging:c,leftWidth:f,rightWidth:l}=S,p=E(S,["x","disabled","dragging","leftWidth","rightWidth"]);return(0,L.jsx)(v.motion.div,y(w({"data-slot":"swipe-content"},e),{"data-dragging":c||void 0,style:y(w(w({},Ce),t),{x:r}),drag:i?!1:"x",dragConstraints:{left:-l,right:f},dragElastic:.2,dragMomentum:!1,onDragStart:p.onDragStart,onDrag:p.onDrag,onDragEnd:p.onDragEnd,onClickCapture:p.onClickCapture}))}0&&(module.exports={SwipeAction,SwipeActions,SwipeContent,SwipeItem,SwipeRoot});
1
+ "use strict";"use client";var pe=Object.create;var D=Object.defineProperty,ue=Object.defineProperties,fe=Object.getOwnPropertyDescriptor,Se=Object.getOwnPropertyDescriptors,Re=Object.getOwnPropertyNames,M=Object.getOwnPropertySymbols,we=Object.getPrototypeOf,W=Object.prototype.hasOwnProperty,F=Object.prototype.propertyIsEnumerable;var B=(t,e,n)=>e in t?D(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,w=(t,e)=>{for(var n in e||(e={}))W.call(e,n)&&B(t,n,e[n]);if(M)for(var n of M(e))F.call(e,n)&&B(t,n,e[n]);return t},y=(t,e)=>ue(t,Se(e));var E=(t,e)=>{var n={};for(var o in t)W.call(t,o)&&e.indexOf(o)<0&&(n[o]=t[o]);if(t!=null&&M)for(var o of M(t))e.indexOf(o)<0&&F.call(t,o)&&(n[o]=t[o]);return n};var me=(t,e)=>{for(var n in e)D(t,n,{get:e[n],enumerable:!0})},Z=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Re(e))!W.call(t,r)&&r!==n&&D(t,r,{get:()=>e[r],enumerable:!(o=fe(e,r))||o.enumerable});return t};var $=(t,e,n)=>(n=t!=null?pe(we(t)):{},Z(e||!t||!t.__esModule?D(n,"default",{value:t,enumerable:!0}):n,t)),ge=t=>Z(D({},"__esModule",{value:!0}),t);var xe={};me(xe,{SwipeAction:()=>oe,SwipeActions:()=>ne,SwipeContent:()=>re,SwipeItem:()=>te,SwipeRoot:()=>X});module.exports=ge(xe);var s=$(require("react")),v=require("motion/react");var h=$(require("react"));function A({defaultTagName:t,props:e,render:n,state:o={},stateAttributesMapping:r}){let i=P(ye(o,r),e);if(!n)return h.createElement(t,i);if(typeof n=="function")return n(i,o);if(!h.isValidElement(n))return null;let c=n.props,f=P(i,c),l=y(w({},f),{ref:q(i.ref,c.ref)});return h.cloneElement(n,l)}function P(...t){let e={};for(let n of t){if(!n)continue;let o=n;for(let r of Object.keys(o)){let i=o[r];if(i===void 0)continue;let c=e[r];r==="className"?e[r]=[c,i].filter(Boolean).join(" "):r==="style"?e[r]=w(w({},c),i):r==="ref"?e[r]=q(c,i):Ee(r)&&typeof c=="function"&&typeof i=="function"?e[r]=ve(i,c):e[r]=i}}return e}function ye(t,e){var o;let n={};for(let r of Object.keys(t)){let i=t[r],c=(o=e==null?void 0:e[r])==null?void 0:o.call(e,i);if(c){Object.assign(n,c);continue}if(r==="slot"){n["data-slot"]=i;continue}let f=`data-${String(r).replace(/[A-Z]/g,l=>`-${l.toLowerCase()}`)}`;typeof i=="boolean"?n[f]=i?"":void 0:i!=null&&(n[f]=String(i))}return n}function ve(t,e){return function(o){t(o),o.defaultPrevented||e(o)}}function Ee(t){return/^on[A-Z]/.test(t)}function q(...t){let e=t.filter(Boolean);if(e.length!==0)return n=>{for(let o of e)typeof o=="function"?o(n):o&&(o.current=n)}}var L=require("react/jsx-runtime"),Pe={position:"relative",isolation:"isolate",overflow:"clip"},Te={position:"absolute",top:0,bottom:0,zIndex:0,display:"flex"},Ce={position:"relative",zIndex:1},J={type:"spring",stiffness:500,damping:45,mass:.8},be=y(w({},J),{damping:36}),he=4,Q=s.createContext(null);function X(n){var o=n,{render:t}=o,e=E(o,["render"]);let r=s.useRef(new Map),i=s.useMemo(()=>({register(f,l){return r.current.set(f,l),()=>{r.current.delete(f)}},notifyOpen(f){for(let[l,p]of r.current)l!==f&&p()}}),[]),c=A({defaultTagName:"div",render:t,props:P({"data-slot":"swipe-root"},e)});return(0,L.jsx)(Q.Provider,{value:i,children:c})}var ee=s.createContext(null);function N(){let t=s.useContext(ee);if(!t)throw new Error("Swipe parts must be used within SwipeItem");return t}function te(f){var l=f,{render:t,threshold:e=.5,velocityFactor:n=.2,disabled:o=!1,closeOnScroll:r=!1,onOpenChange:i}=l,c=E(l,["render","threshold","velocityFactor","disabled","closeOnScroll","onOpenChange"]);let p=s.useId(),S=s.useContext(Q),U=(0,v.useReducedMotion)(),O=s.useRef(null),[u,se]=s.useState({left:0,right:0}),[T,ie]=s.useState("closed"),[I,V]=s.useState(!1),C=s.useRef("closed"),x=s.useRef(!1),m=(0,v.useMotionValue)(0),_=s.useCallback((a,d)=>{se(R=>R[a]===d?R:y(w({},R),{[a]:d}))},[]),g=s.useCallback((a,d)=>{let R=a==="left"?u.left:a==="right"?-u.right:0;(0,v.animate)(m,R,U?{duration:0}:d===void 0?J:y(w({},be),{velocity:d})),a!=="closed"&&(S==null||S.notifyOpen(p)),C.current!==a&&(C.current=a,ie(a),i==null||i(a))},[u,m,U,S,p,i]),b=s.useCallback(()=>g("closed"),[g]),k=s.useRef(()=>{});s.useEffect(()=>{k.current=b},[b]),s.useEffect(()=>S==null?void 0:S.register(p,()=>k.current()),[S,p]),s.useEffect(()=>{C.current==="left"&&m.set(u.left),C.current==="right"&&m.set(-u.right)},[u,m]);let K=s.useCallback(()=>{x.current=!1,V(!0),S==null||S.notifyOpen(p)},[S,p]),j=s.useCallback((a,d)=>{Math.abs(d.offset.x)>he&&(x.current=!0)},[]),G=s.useCallback((a,d)=>{V(!1);let R=m.get()+d.velocity.x*n;u.right>0&&R<=-u.right*e?g("right",d.velocity.x):u.left>0&&R>=u.left*e?g("left",d.velocity.x):g("closed",d.velocity.x)},[m,n,u,e,g]),z=s.useCallback(a=>{if(!(!x.current&&C.current==="closed")){if(a.preventDefault(),a.stopPropagation(),x.current){x.current=!1;return}b()}},[b]);s.useEffect(()=>{if(T==="closed")return;let a=H=>{var Y;(Y=O.current)!=null&&Y.contains(H.target)||k.current()},d=H=>{H.key==="Escape"&&k.current()},R=()=>k.current();return document.addEventListener("pointerdown",a,!0),document.addEventListener("keydown",d),r&&window.addEventListener("scroll",R,!0),()=>{document.removeEventListener("pointerdown",a,!0),document.removeEventListener("keydown",d),r&&window.removeEventListener("scroll",R,!0)}},[T,r]);let ae=s.useCallback(a=>{if(o||a.key!=="ArrowLeft"&&a.key!=="ArrowRight")return;let[d,R]=a.key==="ArrowLeft"?["left","right"]:["right","left"];if(C.current===d)g("closed");else if(u[R]>0)g(R);else return;a.preventDefault()},[o,u,g]),ce=s.useMemo(()=>({state:T,disabled:o,dragging:I}),[T,o,I]),de=s.useMemo(()=>({state:T,disabled:o,dragging:I,x:m,leftWidth:u.left,rightWidth:u.right,setStripWidth:_,close:b,onDragStart:K,onDrag:j,onDragEnd:G,onClickCapture:z}),[T,o,I,m,u,_,b,K,j,G,z]),le=A({defaultTagName:"div",render:t,state:ce,props:P({"data-slot":"swipe-item",ref:O,style:Pe,onKeyDown:ae},c)});return(0,L.jsx)(ee.Provider,{value:de,children:le})}function ne(o){var r=o,{render:t,side:e}=r,n=E(r,["render","side"]);let{state:i,setStripWidth:c}=N(),f=s.useRef(null);return s.useEffect(()=>{let l=f.current;if(!l)return;let p=new ResizeObserver(()=>c(e,l.offsetWidth));return p.observe(l),()=>{p.disconnect(),c(e,0)}},[e,c]),A({defaultTagName:"div",render:t,props:P({"data-slot":"swipe-actions","data-side":e,ref:f,style:y(w({},Te),{[e]:0}),inert:i!==e},n)})}function oe(o){var r=o,{render:t,closeOnClick:e=!0}=r,n=E(r,["render","closeOnClick"]);let{close:i}=N();return A({defaultTagName:"button",render:t,props:P({"data-slot":"swipe-action",type:"button",onClick:()=>{e&&i()}},n)})}function re(n){var o=n,{style:t}=o,e=E(o,["style"]);let S=N(),{x:r,disabled:i,dragging:c,leftWidth:f,rightWidth:l}=S,p=E(S,["x","disabled","dragging","leftWidth","rightWidth"]);return(0,L.jsx)(v.motion.div,y(w({"data-slot":"swipe-content"},e),{"data-dragging":c||void 0,style:y(w(w({},Ce),t),{x:r}),drag:i?!1:"x",dragConstraints:{left:-l,right:f},dragElastic:.2,dragMomentum:!1,onDragStart:p.onDragStart,onDrag:p.onDrag,onDragEnd:p.onDragEnd,onClickCapture:p.onClickCapture}))}0&&(module.exports={SwipeAction,SwipeActions,SwipeContent,SwipeItem,SwipeRoot});
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- "use client";var ne=Object.defineProperty,oe=Object.defineProperties;var re=Object.getOwnPropertyDescriptors;var A=Object.getOwnPropertySymbols;var z=Object.prototype.hasOwnProperty,Y=Object.prototype.propertyIsEnumerable;var G=(t,e,n)=>e in t?ne(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,w=(t,e)=>{for(var n in e||(e={}))z.call(e,n)&&G(t,n,e[n]);if(A)for(var n of A(e))Y.call(e,n)&&G(t,n,e[n]);return t},y=(t,e)=>oe(t,re(e));var v=(t,e)=>{var n={};for(var o in t)z.call(t,o)&&e.indexOf(o)<0&&(n[o]=t[o]);if(t!=null&&A)for(var o of A(t))e.indexOf(o)<0&&Y.call(t,o)&&(n[o]=t[o]);return n};import*as r from"react";import{animate as ce,motion as de,useMotionValue as le,useReducedMotion as pe}from"motion/react";import*as b from"react";function k({defaultTagName:t,props:e,render:n,state:o={},stateAttributesMapping:s}){let i=E(se(o,s),e);if(!n)return b.createElement(t,i);if(typeof n=="function")return n(i,o);if(!b.isValidElement(n))return null;let c=n.props,f=E(i,c),l=y(w({},f),{ref:B(i.ref,c.ref)});return b.cloneElement(n,l)}function E(...t){let e={};for(let n of t){if(!n)continue;let o=n;for(let s of Object.keys(o)){let i=o[s];if(i===void 0)continue;let c=e[s];s==="className"?e[s]=[c,i].filter(Boolean).join(" "):s==="style"?e[s]=w(w({},c),i):s==="ref"?e[s]=B(c,i):ae(s)&&typeof c=="function"&&typeof i=="function"?e[s]=ie(i,c):e[s]=i}}return e}function se(t,e){var o;let n={};for(let s of Object.keys(t)){let i=t[s],c=(o=e==null?void 0:e[s])==null?void 0:o.call(e,i);if(c){Object.assign(n,c);continue}if(s==="slot"){n["data-slot"]=i;continue}let f=`data-${String(s).replace(/[A-Z]/g,l=>`-${l.toLowerCase()}`)}`;typeof i=="boolean"?n[f]=i?"":void 0:i!=null&&(n[f]=String(i))}return n}function ie(t,e){return function(o){t(o),o.defaultPrevented||e(o)}}function ae(t){return/^on[A-Z]/.test(t)}function B(...t){let e=t.filter(Boolean);if(e.length!==0)return n=>{for(let o of e)typeof o=="function"?o(n):o&&(o.current=n)}}import{jsx as L}from"react/jsx-runtime";var ue={position:"relative",isolation:"isolate",overflow:"hidden"},fe={position:"absolute",top:0,bottom:0,zIndex:0,display:"flex"},Se={position:"relative",zIndex:1},F={type:"spring",stiffness:500,damping:45,mass:.8},Re=y(w({},F),{damping:36}),we=4,Z=r.createContext(null);function me(n){var o=n,{render:t}=o,e=v(o,["render"]);let s=r.useRef(new Map),i=r.useMemo(()=>({register(f,l){return s.current.set(f,l),()=>{s.current.delete(f)}},notifyOpen(f){for(let[l,p]of s.current)l!==f&&p()}}),[]),c=k({defaultTagName:"div",render:t,props:E({"data-slot":"swipe-root"},e)});return L(Z.Provider,{value:i,children:c})}var $=r.createContext(null);function M(){let t=r.useContext($);if(!t)throw new Error("Swipe parts must be used within SwipeItem");return t}function ge(f){var l=f,{render:t,threshold:e=.5,velocityFactor:n=.2,disabled:o=!1,closeOnScroll:s=!1,onOpenChange:i}=l,c=v(l,["render","threshold","velocityFactor","disabled","closeOnScroll","onOpenChange"]);let p=r.useId(),S=r.useContext(Z),H=pe(),W=r.useRef(null),[u,q]=r.useState({left:0,right:0}),[P,J]=r.useState("closed"),[D,N]=r.useState(!1),T=r.useRef("closed"),h=r.useRef(!1),m=le(0),U=r.useCallback((a,d)=>{q(R=>R[a]===d?R:y(w({},R),{[a]:d}))},[]),g=r.useCallback((a,d)=>{let R=a==="left"?u.left:a==="right"?-u.right:0;ce(m,R,H?{duration:0}:d===void 0?F:y(w({},Re),{velocity:d})),a!=="closed"&&(S==null||S.notifyOpen(p)),T.current!==a&&(T.current=a,J(a),i==null||i(a))},[u,m,H,S,p,i]),C=r.useCallback(()=>g("closed"),[g]),x=r.useRef(()=>{});r.useEffect(()=>{x.current=C},[C]),r.useEffect(()=>S==null?void 0:S.register(p,()=>x.current()),[S,p]),r.useEffect(()=>{T.current==="left"&&m.set(u.left),T.current==="right"&&m.set(-u.right)},[u,m]);let O=r.useCallback(()=>{h.current=!1,N(!0),S==null||S.notifyOpen(p)},[S,p]),V=r.useCallback((a,d)=>{Math.abs(d.offset.x)>we&&(h.current=!0)},[]),_=r.useCallback((a,d)=>{N(!1);let R=m.get()+d.velocity.x*n;u.right>0&&R<=-u.right*e?g("right",d.velocity.x):u.left>0&&R>=u.left*e?g("left",d.velocity.x):g("closed",d.velocity.x)},[m,n,u,e,g]),K=r.useCallback(a=>{if(!(!h.current&&T.current==="closed")){if(a.preventDefault(),a.stopPropagation(),h.current){h.current=!1;return}C()}},[C]);r.useEffect(()=>{if(P==="closed")return;let a=I=>{var j;(j=W.current)!=null&&j.contains(I.target)||x.current()},d=I=>{I.key==="Escape"&&x.current()},R=()=>x.current();return document.addEventListener("pointerdown",a,!0),document.addEventListener("keydown",d),s&&window.addEventListener("scroll",R,!0),()=>{document.removeEventListener("pointerdown",a,!0),document.removeEventListener("keydown",d),s&&window.removeEventListener("scroll",R,!0)}},[P,s]);let Q=r.useCallback(a=>{if(o||a.key!=="ArrowLeft"&&a.key!=="ArrowRight")return;let[d,R]=a.key==="ArrowLeft"?["left","right"]:["right","left"];if(T.current===d)g("closed");else if(u[R]>0)g(R);else return;a.preventDefault()},[o,u,g]),X=r.useMemo(()=>({state:P,disabled:o,dragging:D}),[P,o,D]),ee=r.useMemo(()=>({state:P,disabled:o,dragging:D,x:m,leftWidth:u.left,rightWidth:u.right,setStripWidth:U,close:C,onDragStart:O,onDrag:V,onDragEnd:_,onClickCapture:K}),[P,o,D,m,u,U,C,O,V,_,K]),te=k({defaultTagName:"div",render:t,state:X,props:E({"data-slot":"swipe-item",ref:W,style:ue,onKeyDown:Q},c)});return L($.Provider,{value:ee,children:te})}function ye(o){var s=o,{render:t,side:e}=s,n=v(s,["render","side"]);let{state:i,setStripWidth:c}=M(),f=r.useRef(null);return r.useEffect(()=>{let l=f.current;if(!l)return;let p=new ResizeObserver(()=>c(e,l.offsetWidth));return p.observe(l),()=>{p.disconnect(),c(e,0)}},[e,c]),k({defaultTagName:"div",render:t,props:E({"data-slot":"swipe-actions","data-side":e,ref:f,style:y(w({},fe),{[e]:0}),inert:i!==e},n)})}function ve(o){var s=o,{render:t,closeOnClick:e=!0}=s,n=v(s,["render","closeOnClick"]);let{close:i}=M();return k({defaultTagName:"button",render:t,props:E({"data-slot":"swipe-action",type:"button",onClick:()=>{e&&i()}},n)})}function Ee(n){var o=n,{style:t}=o,e=v(o,["style"]);let S=M(),{x:s,disabled:i,dragging:c,leftWidth:f,rightWidth:l}=S,p=v(S,["x","disabled","dragging","leftWidth","rightWidth"]);return L(de.div,y(w({"data-slot":"swipe-content"},e),{"data-dragging":c||void 0,style:y(w(w({},Se),t),{x:s}),drag:i?!1:"x",dragConstraints:{left:-l,right:f},dragElastic:.2,dragMomentum:!1,onDragStart:p.onDragStart,onDrag:p.onDrag,onDragEnd:p.onDragEnd,onClickCapture:p.onClickCapture}))}export{ve as SwipeAction,ye as SwipeActions,Ee as SwipeContent,ge as SwipeItem,me as SwipeRoot};
1
+ "use client";var ne=Object.defineProperty,oe=Object.defineProperties;var re=Object.getOwnPropertyDescriptors;var A=Object.getOwnPropertySymbols;var z=Object.prototype.hasOwnProperty,Y=Object.prototype.propertyIsEnumerable;var G=(t,e,n)=>e in t?ne(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,w=(t,e)=>{for(var n in e||(e={}))z.call(e,n)&&G(t,n,e[n]);if(A)for(var n of A(e))Y.call(e,n)&&G(t,n,e[n]);return t},y=(t,e)=>oe(t,re(e));var v=(t,e)=>{var n={};for(var o in t)z.call(t,o)&&e.indexOf(o)<0&&(n[o]=t[o]);if(t!=null&&A)for(var o of A(t))e.indexOf(o)<0&&Y.call(t,o)&&(n[o]=t[o]);return n};import*as r from"react";import{animate as ce,motion as de,useMotionValue as le,useReducedMotion as pe}from"motion/react";import*as b from"react";function k({defaultTagName:t,props:e,render:n,state:o={},stateAttributesMapping:s}){let i=E(se(o,s),e);if(!n)return b.createElement(t,i);if(typeof n=="function")return n(i,o);if(!b.isValidElement(n))return null;let c=n.props,f=E(i,c),l=y(w({},f),{ref:B(i.ref,c.ref)});return b.cloneElement(n,l)}function E(...t){let e={};for(let n of t){if(!n)continue;let o=n;for(let s of Object.keys(o)){let i=o[s];if(i===void 0)continue;let c=e[s];s==="className"?e[s]=[c,i].filter(Boolean).join(" "):s==="style"?e[s]=w(w({},c),i):s==="ref"?e[s]=B(c,i):ae(s)&&typeof c=="function"&&typeof i=="function"?e[s]=ie(i,c):e[s]=i}}return e}function se(t,e){var o;let n={};for(let s of Object.keys(t)){let i=t[s],c=(o=e==null?void 0:e[s])==null?void 0:o.call(e,i);if(c){Object.assign(n,c);continue}if(s==="slot"){n["data-slot"]=i;continue}let f=`data-${String(s).replace(/[A-Z]/g,l=>`-${l.toLowerCase()}`)}`;typeof i=="boolean"?n[f]=i?"":void 0:i!=null&&(n[f]=String(i))}return n}function ie(t,e){return function(o){t(o),o.defaultPrevented||e(o)}}function ae(t){return/^on[A-Z]/.test(t)}function B(...t){let e=t.filter(Boolean);if(e.length!==0)return n=>{for(let o of e)typeof o=="function"?o(n):o&&(o.current=n)}}import{jsx as L}from"react/jsx-runtime";var ue={position:"relative",isolation:"isolate",overflow:"clip"},fe={position:"absolute",top:0,bottom:0,zIndex:0,display:"flex"},Se={position:"relative",zIndex:1},F={type:"spring",stiffness:500,damping:45,mass:.8},Re=y(w({},F),{damping:36}),we=4,Z=r.createContext(null);function me(n){var o=n,{render:t}=o,e=v(o,["render"]);let s=r.useRef(new Map),i=r.useMemo(()=>({register(f,l){return s.current.set(f,l),()=>{s.current.delete(f)}},notifyOpen(f){for(let[l,p]of s.current)l!==f&&p()}}),[]),c=k({defaultTagName:"div",render:t,props:E({"data-slot":"swipe-root"},e)});return L(Z.Provider,{value:i,children:c})}var $=r.createContext(null);function M(){let t=r.useContext($);if(!t)throw new Error("Swipe parts must be used within SwipeItem");return t}function ge(f){var l=f,{render:t,threshold:e=.5,velocityFactor:n=.2,disabled:o=!1,closeOnScroll:s=!1,onOpenChange:i}=l,c=v(l,["render","threshold","velocityFactor","disabled","closeOnScroll","onOpenChange"]);let p=r.useId(),S=r.useContext(Z),H=pe(),W=r.useRef(null),[u,q]=r.useState({left:0,right:0}),[P,J]=r.useState("closed"),[D,N]=r.useState(!1),T=r.useRef("closed"),h=r.useRef(!1),m=le(0),U=r.useCallback((a,d)=>{q(R=>R[a]===d?R:y(w({},R),{[a]:d}))},[]),g=r.useCallback((a,d)=>{let R=a==="left"?u.left:a==="right"?-u.right:0;ce(m,R,H?{duration:0}:d===void 0?F:y(w({},Re),{velocity:d})),a!=="closed"&&(S==null||S.notifyOpen(p)),T.current!==a&&(T.current=a,J(a),i==null||i(a))},[u,m,H,S,p,i]),C=r.useCallback(()=>g("closed"),[g]),x=r.useRef(()=>{});r.useEffect(()=>{x.current=C},[C]),r.useEffect(()=>S==null?void 0:S.register(p,()=>x.current()),[S,p]),r.useEffect(()=>{T.current==="left"&&m.set(u.left),T.current==="right"&&m.set(-u.right)},[u,m]);let O=r.useCallback(()=>{h.current=!1,N(!0),S==null||S.notifyOpen(p)},[S,p]),V=r.useCallback((a,d)=>{Math.abs(d.offset.x)>we&&(h.current=!0)},[]),_=r.useCallback((a,d)=>{N(!1);let R=m.get()+d.velocity.x*n;u.right>0&&R<=-u.right*e?g("right",d.velocity.x):u.left>0&&R>=u.left*e?g("left",d.velocity.x):g("closed",d.velocity.x)},[m,n,u,e,g]),K=r.useCallback(a=>{if(!(!h.current&&T.current==="closed")){if(a.preventDefault(),a.stopPropagation(),h.current){h.current=!1;return}C()}},[C]);r.useEffect(()=>{if(P==="closed")return;let a=I=>{var j;(j=W.current)!=null&&j.contains(I.target)||x.current()},d=I=>{I.key==="Escape"&&x.current()},R=()=>x.current();return document.addEventListener("pointerdown",a,!0),document.addEventListener("keydown",d),s&&window.addEventListener("scroll",R,!0),()=>{document.removeEventListener("pointerdown",a,!0),document.removeEventListener("keydown",d),s&&window.removeEventListener("scroll",R,!0)}},[P,s]);let Q=r.useCallback(a=>{if(o||a.key!=="ArrowLeft"&&a.key!=="ArrowRight")return;let[d,R]=a.key==="ArrowLeft"?["left","right"]:["right","left"];if(T.current===d)g("closed");else if(u[R]>0)g(R);else return;a.preventDefault()},[o,u,g]),X=r.useMemo(()=>({state:P,disabled:o,dragging:D}),[P,o,D]),ee=r.useMemo(()=>({state:P,disabled:o,dragging:D,x:m,leftWidth:u.left,rightWidth:u.right,setStripWidth:U,close:C,onDragStart:O,onDrag:V,onDragEnd:_,onClickCapture:K}),[P,o,D,m,u,U,C,O,V,_,K]),te=k({defaultTagName:"div",render:t,state:X,props:E({"data-slot":"swipe-item",ref:W,style:ue,onKeyDown:Q},c)});return L($.Provider,{value:ee,children:te})}function ye(o){var s=o,{render:t,side:e}=s,n=v(s,["render","side"]);let{state:i,setStripWidth:c}=M(),f=r.useRef(null);return r.useEffect(()=>{let l=f.current;if(!l)return;let p=new ResizeObserver(()=>c(e,l.offsetWidth));return p.observe(l),()=>{p.disconnect(),c(e,0)}},[e,c]),k({defaultTagName:"div",render:t,props:E({"data-slot":"swipe-actions","data-side":e,ref:f,style:y(w({},fe),{[e]:0}),inert:i!==e},n)})}function ve(o){var s=o,{render:t,closeOnClick:e=!0}=s,n=v(s,["render","closeOnClick"]);let{close:i}=M();return k({defaultTagName:"button",render:t,props:E({"data-slot":"swipe-action",type:"button",onClick:()=>{e&&i()}},n)})}function Ee(n){var o=n,{style:t}=o,e=v(o,["style"]);let S=M(),{x:s,disabled:i,dragging:c,leftWidth:f,rightWidth:l}=S,p=v(S,["x","disabled","dragging","leftWidth","rightWidth"]);return L(de.div,y(w({"data-slot":"swipe-content"},e),{"data-dragging":c||void 0,style:y(w(w({},Se),t),{x:s}),drag:i?!1:"x",dragConstraints:{left:-l,right:f},dragElastic:.2,dragMomentum:!1,onDragStart:p.onDragStart,onDrag:p.onDrag,onDragEnd:p.onDragEnd,onClickCapture:p.onClickCapture}))}export{ve as SwipeAction,ye as SwipeActions,Ee as SwipeContent,ge as SwipeItem,me as SwipeRoot};
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@ncdai/react-swipe-actions",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Unstyled swipe actions for React. Swipe a row in a list to reveal actions on the left or right.",
5
5
  "publishConfig": {
6
- "access": "public"
6
+ "access": "public",
7
+ "provenance": true
7
8
  },
8
9
  "type": "commonjs",
9
10
  "main": "./dist/index.js",
@@ -37,15 +38,6 @@
37
38
  "dts": true,
38
39
  "outDir": "./dist"
39
40
  },
40
- "scripts": {
41
- "dev": "tsup --watch",
42
- "build": "tsup --minify",
43
- "check-types": "tsc --noEmit",
44
- "lint": "eslint .",
45
- "lint:fix": "eslint . --fix",
46
- "format:check": "prettier --check \"**/*.{ts,tsx}\" --cache",
47
- "format:write": "prettier --write \"**/*.{ts,tsx}\" --cache"
48
- },
49
41
  "keywords": [
50
42
  "react",
51
43
  "swipe actions",
@@ -90,5 +82,14 @@
90
82
  "peerDependencies": {
91
83
  "motion": ">=12",
92
84
  "react": "^18.0.0 || ^19.0.0"
85
+ },
86
+ "scripts": {
87
+ "dev": "tsup --watch",
88
+ "build": "tsup --minify",
89
+ "check-types": "tsc --noEmit",
90
+ "lint": "eslint .",
91
+ "lint:fix": "eslint . --fix",
92
+ "format:check": "prettier --check \"**/*.{ts,tsx}\" --cache",
93
+ "format:write": "prettier --write \"**/*.{ts,tsx}\" --cache"
93
94
  }
94
- }
95
+ }