element-plus
Version:
A Component Library for Vue 3
1 lines • 3.13 kB
Source Map (JSON)
{"version":3,"file":"draggable.mjs","sources":["../../../../../../../packages/components/color-picker-panel/src/utils/draggable.ts"],"sourcesContent":["import { isClient } from '@element-plus/utils'\n\nlet isDragging = false\n\nexport interface DraggableOptions {\n drag?: (event: MouseEvent | TouchEvent) => void\n start?: (event: MouseEvent | TouchEvent) => void\n end?: (event: MouseEvent | TouchEvent) => void\n}\n\nexport function draggable(element: HTMLElement, options: DraggableOptions) {\n if (!isClient) return\n\n const moveFn = function (event: MouseEvent | TouchEvent) {\n options.drag?.(event)\n }\n\n const upFn = function (event: MouseEvent | TouchEvent) {\n document.removeEventListener('mousemove', moveFn)\n document.removeEventListener('mouseup', upFn)\n document.removeEventListener('touchmove', moveFn)\n document.removeEventListener('touchend', upFn)\n document.onselectstart = null\n document.ondragstart = null\n\n isDragging = false\n\n options.end?.(event)\n }\n\n const downFn = function (event: MouseEvent | TouchEvent) {\n if (isDragging) return\n document.onselectstart = () => false\n document.ondragstart = () => false\n document.addEventListener('mousemove', moveFn)\n document.addEventListener('mouseup', upFn)\n document.addEventListener('touchmove', moveFn)\n document.addEventListener('touchend', upFn)\n\n isDragging = true\n\n options.start?.(event)\n }\n\n element.addEventListener('mousedown', downFn)\n element.addEventListener('touchstart', downFn, { passive: false })\n}\n"],"names":[],"mappings":";;AAEA,IAAI,UAAa,GAAA,KAAA,CAAA;AAQD,SAAA,SAAA,CAAU,SAAsB,OAA2B,EAAA;AACzE,EAAA,IAAI,CAAC,QAAA;AAAU,IAAA,OAAA;AAEf,EAAM,MAAA,MAAA,GAAS,SAAU,KAAgC,EAAA;AAb3D,IAAA,IAAA,EAAA,CAAA;AAcI,IAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,SAAR,IAAe,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAAA,GACjB,CAAA;AAEA,EAAM,MAAA,IAAA,GAAO,SAAU,KAAgC,EAAA;AAjBzD,IAAA,IAAA,EAAA,CAAA;AAkBI,IAAS,QAAA,CAAA,mBAAA,CAAoB,aAAa,MAAM,CAAA,CAAA;AAChD,IAAS,QAAA,CAAA,mBAAA,CAAoB,WAAW,IAAI,CAAA,CAAA;AAC5C,IAAS,QAAA,CAAA,mBAAA,CAAoB,aAAa,MAAM,CAAA,CAAA;AAChD,IAAS,QAAA,CAAA,mBAAA,CAAoB,YAAY,IAAI,CAAA,CAAA;AAC7C,IAAA,QAAA,CAAS,aAAgB,GAAA,IAAA,CAAA;AACzB,IAAA,QAAA,CAAS,WAAc,GAAA,IAAA,CAAA;AAEvB,IAAa,UAAA,GAAA,KAAA,CAAA;AAEb,IAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,QAAR,IAAc,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAAA,GAChB,CAAA;AAEA,EAAM,MAAA,MAAA,GAAS,SAAU,KAAgC,EAAA;AA9B3D,IAAA,IAAA,EAAA,CAAA;AA+BI,IAAI,IAAA,UAAA;AAAY,MAAA,OAAA;AAChB,IAAA,QAAA,CAAS,gBAAgB,MAAM,KAAA,CAAA;AAC/B,IAAA,QAAA,CAAS,cAAc,MAAM,KAAA,CAAA;AAC7B,IAAS,QAAA,CAAA,gBAAA,CAAiB,aAAa,MAAM,CAAA,CAAA;AAC7C,IAAS,QAAA,CAAA,gBAAA,CAAiB,WAAW,IAAI,CAAA,CAAA;AACzC,IAAS,QAAA,CAAA,gBAAA,CAAiB,aAAa,MAAM,CAAA,CAAA;AAC7C,IAAS,QAAA,CAAA,gBAAA,CAAiB,YAAY,IAAI,CAAA,CAAA;AAE1C,IAAa,UAAA,GAAA,IAAA,CAAA;AAEb,IAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,UAAR,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAAA,GAClB,CAAA;AAEA,EAAQ,OAAA,CAAA,gBAAA,CAAiB,aAAa,MAAM,CAAA,CAAA;AAC5C,EAAA,OAAA,CAAQ,iBAAiB,YAAc,EAAA,MAAA,EAAQ,EAAE,OAAA,EAAS,OAAO,CAAA,CAAA;AACnE;;;;"}