{"version":3,"file":"dragger.mjs","sources":["../../../../../../packages/components/dialog/src/dragger.ts"],"sourcesContent":["\nimport type { Directive, DirectiveBinding } from 'vue'\n\nexport interface DialogElement extends HTMLDivElement {\n  __dragger__: {\n    offsetX: number\n    offsetY: number\n    cursor: string\n    moveHandler: (e: MouseEvent) => void\n    upHandler: (e: MouseEvent) => void\n    downHandler: (e: MouseEvent) => void\n  }\n}\n\nconst initDialogDragger = (dlg: DialogElement) => {\n  const dragger = dlg.__dragger__\n  const header = dlg.querySelector('.panel-header') as HTMLDivElement\n  header.addEventListener('mousedown', dragger.downHandler)\n  header.style.cursor = 'move'\n\n  dragger.offsetX = 0\n  dragger.offsetY = 0\n}\n\nconst resetDialogDragger = (dlg: DialogElement) => {\n  const dragger = dlg.__dragger__\n  const header = dlg.querySelector('.panel-header') as HTMLDivElement\n  header.removeEventListener('mousedown', dragger.downHandler)\n  header.style.cursor = dragger.cursor\n}\n\nconst DialogDragger: Directive = {\n  beforeMount: (dlg: DialogElement, binding: DirectiveBinding) => {\n    const header = dlg.querySelector('.panel-header') as HTMLDivElement\n    dlg.__dragger__ = Object.assign({\n      cursor: header.style.cursor,\n      moveHandler: (e: MouseEvent) => {\n        const dragger = dlg.__dragger__\n        dlg.style.marginLeft = (e.pageX - dragger.offsetX) + 'px'\n        dlg.style.marginTop = (e.pageY - dragger.offsetY) + 'px'\n      },\n      upHandler: () => {\n        const dragger = dlg.__dragger__\n        removeEventListener('mousemove', dragger.moveHandler)\n        removeEventListener('mouseup', dragger.upHandler)\n      },\n      downHandler: (e: MouseEvent) => {\n        const dragger = dlg.__dragger__\n        dragger.offsetX = (e.pageX - dlg.offsetLeft)\n        dragger.offsetY = (e.pageY - dlg.offsetTop)\n\n        addEventListener('mousemove', dragger.moveHandler)\n        addEventListener('mouseup', dragger.upHandler)\n      },\n    })\n\n    if (!binding.value.canDrag) return\n\n    initDialogDragger(dlg)\n  },\n  updated(dlg: DialogElement, binding: DirectiveBinding) {\n    if (binding.value.canDrag) {\n      initDialogDragger(dlg)\n    } else {\n      resetDialogDragger(dlg)\n    }\n    if (binding.value.showAs === 'drawer' || binding.value.placement === 'fullscreen') {\n      dlg.style.removeProperty('margin-top')\n      dlg.style.removeProperty('margin-left')\n    }\n  },\n  beforeUnmount(dlg: DialogElement) {\n    resetDialogDragger(dlg)\n    dlg.__dragger__ = {} as any\n  },\n}\n\nexport { DialogDragger }\n"],"names":[],"mappings":"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"}