{"version":3,"file":"index.js","names":["useDraggable","React","useId","useRef","baseClass","DraggableWithClick","as","children","className","disabled","onClick","onKeyDown","ref","thresholdPixels","id","attributes","listeners","setNodeRef","initialPos","x","y","isDragging","handlePointerDown","e","current","clientX","clientY","handlePointerMove","moveEvent","deltaX","Math","abs","deltaY","onPointerDown","window","removeEventListener","cleanup","handlePointerUp","upEvent","addEventListener","Component","_jsx","role","tabIndex","filter","Boolean","join","undefined","node"],"sources":["../../../../src/elements/FolderView/DraggableWithClick/index.tsx"],"sourcesContent":["import { useDraggable } from '@dnd-kit/core'\nimport React, { useId, useRef } from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'draggable-with-click'\n\ntype Props = {\n readonly as?: React.ElementType\n readonly children?: React.ReactNode\n readonly className?: string\n readonly disabled?: boolean\n readonly onClick: (e: React.MouseEvent) => void\n readonly onKeyDown?: (e: React.KeyboardEvent) => void\n readonly ref?: React.RefObject\n readonly thresholdPixels?: number\n}\n\nexport const DraggableWithClick = ({\n as = 'div',\n children,\n className,\n disabled = false,\n onClick,\n onKeyDown,\n ref,\n thresholdPixels = 3,\n}: Props) => {\n const id = useId()\n const { attributes, listeners, setNodeRef } = useDraggable({ id, disabled })\n const initialPos = useRef({ x: 0, y: 0 })\n const isDragging = useRef(false)\n\n const handlePointerDown = (e) => {\n initialPos.current = { x: e.clientX, y: e.clientY }\n isDragging.current = false\n\n const handlePointerMove = (moveEvent) => {\n const deltaX = Math.abs(moveEvent.clientX - initialPos.current.x)\n const deltaY = Math.abs(moveEvent.clientY - initialPos.current.y)\n if (deltaX > thresholdPixels || deltaY > thresholdPixels) {\n isDragging.current = true\n if (listeners?.onPointerDown) {\n listeners.onPointerDown(e)\n // when the user starts dragging\n // - call the click handler\n // - remove the pointermove listener\n onClick(moveEvent)\n }\n window.removeEventListener('pointermove', handlePointerMove)\n }\n }\n\n const cleanup = () => {\n window.removeEventListener('pointermove', handlePointerMove)\n window.removeEventListener('pointerup', handlePointerUp)\n }\n\n const handlePointerUp = (upEvent) => {\n cleanup()\n if (!isDragging.current) {\n // if the user did not drag the element\n // - call the click handler\n onClick(upEvent)\n }\n }\n\n window.addEventListener('pointermove', handlePointerMove)\n window.addEventListener('pointerup', handlePointerUp)\n }\n\n const Component = as || 'div'\n\n return (\n {\n if (disabled) {\n return\n }\n setNodeRef(node)\n if (ref) {\n ref.current = node\n }\n }}\n >\n {children}\n \n )\n}\n"],"mappings":";AAAA,SAASA,YAAY,QAAQ;AAC7B,OAAOC,KAAA,IAASC,KAAK,EAAEC,MAAM,QAAQ;AAErC,OAAO;AAEP,MAAMC,SAAA,GAAY;AAalB,OAAO,MAAMC,kBAAA,GAAqBA,CAAC;EACjCC,EAAA,GAAK,KAAK;EACVC,QAAQ;EACRC,SAAS;EACTC,QAAA,GAAW,KAAK;EAChBC,OAAO;EACPC,SAAS;EACTC,GAAG;EACHC,eAAA,GAAkB;AAAC,CACb;EACN,MAAMC,EAAA,GAAKZ,KAAA;EACX,MAAM;IAAEa,UAAU;IAAEC,SAAS;IAAEC;EAAU,CAAE,GAAGjB,YAAA,CAAa;IAAEc,EAAA;IAAIL;EAAS;EAC1E,MAAMS,UAAA,GAAaf,MAAA,CAAO;IAAEgB,CAAA,EAAG;IAAGC,CAAA,EAAG;EAAE;EACvC,MAAMC,UAAA,GAAalB,MAAA,CAAO;EAE1B,MAAMmB,iBAAA,GAAqBC,CAAA;IACzBL,UAAA,CAAWM,OAAO,GAAG;MAAEL,CAAA,EAAGI,CAAA,CAAEE,OAAO;MAAEL,CAAA,EAAGG,CAAA,CAAEG;IAAQ;IAClDL,UAAA,CAAWG,OAAO,GAAG;IAErB,MAAMG,iBAAA,GAAqBC,SAAA;MACzB,MAAMC,MAAA,GAASC,IAAA,CAAKC,GAAG,CAACH,SAAA,CAAUH,OAAO,GAAGP,UAAA,CAAWM,OAAO,CAACL,CAAC;MAChE,MAAMa,MAAA,GAASF,IAAA,CAAKC,GAAG,CAACH,SAAA,CAAUF,OAAO,GAAGR,UAAA,CAAWM,OAAO,CAACJ,CAAC;MAChE,IAAIS,MAAA,GAAShB,eAAA,IAAmBmB,MAAA,GAASnB,eAAA,EAAiB;QACxDQ,UAAA,CAAWG,OAAO,GAAG;QACrB,IAAIR,SAAA,EAAWiB,aAAA,EAAe;UAC5BjB,SAAA,CAAUiB,aAAa,CAACV,CAAA;UACxB;UACA;UACA;UACAb,OAAA,CAAQkB,SAAA;QACV;QACAM,MAAA,CAAOC,mBAAmB,CAAC,eAAeR,iBAAA;MAC5C;IACF;IAEA,MAAMS,OAAA,GAAUA,CAAA;MACdF,MAAA,CAAOC,mBAAmB,CAAC,eAAeR,iBAAA;MAC1CO,MAAA,CAAOC,mBAAmB,CAAC,aAAaE,eAAA;IAC1C;IAEA,MAAMA,eAAA,GAAmBC,OAAA;MACvBF,OAAA;MACA,IAAI,CAACf,UAAA,CAAWG,OAAO,EAAE;QACvB;QACA;QACAd,OAAA,CAAQ4B,OAAA;MACV;IACF;IAEAJ,MAAA,CAAOK,gBAAgB,CAAC,eAAeZ,iBAAA;IACvCO,MAAA,CAAOK,gBAAgB,CAAC,aAAaF,eAAA;EACvC;EAEA,MAAMG,SAAA,GAAYlC,EAAA,IAAM;EAExB,oBACEmC,IAAA,CAACD,SAAA;IACCE,IAAA,EAAK;IACLC,QAAA,EAAU;IACT,GAAG5B,UAAU;IACdP,SAAA,EAAW,CAACJ,SAAA,EAAWI,SAAA,EAAWC,QAAA,GAAW,GAAGL,SAAA,YAAqB,GAAG,GAAG,CACxEwC,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;IACRnC,SAAA,EAAWF,QAAA,GAAWsC,SAAA,GAAYpC,SAAA;IAClCsB,aAAA,EAAexB,QAAA,GAAWsC,SAAA,GAAYrC,OAAA,GAAUY,iBAAA,GAAoByB,SAAA;IACpEnC,GAAA,EAAMoC,IAAA;MACJ,IAAIvC,QAAA,EAAU;QACZ;MACF;MACAQ,UAAA,CAAW+B,IAAA;MACX,IAAIpC,GAAA,EAAK;QACPA,GAAA,CAAIY,OAAO,GAAGwB,IAAA;MAChB;IACF;cAECzC;;AAGP","ignoreList":[]}