element-plus
Version:
A Component Library for Vue 3
1 lines • 2.23 kB
Source Map (JSON)
{"version":3,"file":"draggable.mjs","names":[],"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"],"mappings":";;;AAEA,IAAI,aAAa;AAQjB,SAAgB,UAAU,SAAsB,SAA2B;AACzE,KAAI,CAAC,SAAU;CAEf,MAAM,SAAS,SAAU,OAAgC;AACvD,UAAQ,OAAO,MAAM;;CAGvB,MAAM,OAAO,SAAU,OAAgC;AACrD,WAAS,oBAAoB,aAAa,OAAO;AACjD,WAAS,oBAAoB,WAAW,KAAK;AAC7C,WAAS,oBAAoB,aAAa,OAAO;AACjD,WAAS,oBAAoB,YAAY,KAAK;AAC9C,WAAS,gBAAgB;AACzB,WAAS,cAAc;AAEvB,eAAa;AAEb,UAAQ,MAAM,MAAM;;CAGtB,MAAM,SAAS,SAAU,OAAgC;AACvD,MAAI,WAAY;AAChB,WAAS,sBAAsB;AAC/B,WAAS,oBAAoB;AAC7B,WAAS,iBAAiB,aAAa,OAAO;AAC9C,WAAS,iBAAiB,WAAW,KAAK;AAC1C,WAAS,iBAAiB,aAAa,OAAO;AAC9C,WAAS,iBAAiB,YAAY,KAAK;AAE3C,eAAa;AAEb,UAAQ,QAAQ,MAAM;;AAGxB,SAAQ,iBAAiB,aAAa,OAAO;AAC7C,SAAQ,iBAAiB,cAAc,QAAQ,EAAE,SAAS,OAAO,CAAC"}