hongluan-business-ui
Version:
Hongluan Business Component Library for Vue 3
1 lines • 5.29 kB
Source Map (JSON)
{"version":3,"file":"resizer.mjs","sources":["../../../../../../packages/components/modeless-dialog/src/resizer.ts"],"sourcesContent":["import type { Directive, DirectiveBinding } from 'vue'\n\nexport interface DialogElement extends HTMLDivElement {\n __resizer__: {\n offset: [number, number]\n area: [number, number]\n moveHandler: (e: MouseEvent) => void\n upHandler: (e: MouseEvent) => void\n downHandler: (e: MouseEvent) => void\n }\n}\n\nconst initModelessDialogResizer = (dlg: DialogElement) => {\n if (dlg.querySelector('.panel-resizer')) return\n\n const resizerEle = document.createElement('span')\n resizerEle.className = 'panel-resizer'\n resizerEle.addEventListener('mousedown', dlg.__resizer__.downHandler)\n dlg.appendChild(resizerEle)\n}\n\nconst resetModelessDialogResizer = (dlg: DialogElement) => {\n const resizerEle = dlg.querySelector('.panel-resizer') as HTMLElement\n if (resizerEle) {\n resizerEle.removeEventListener('mousedown', dlg.__resizer__.downHandler)\n dlg.removeChild(resizerEle)\n }\n}\n\nconst ModelessDialogResizer: Directive = {\n beforeMount: (dlg: DialogElement, binding: DirectiveBinding<boolean>) => {\n dlg.__resizer__ = Object.assign({\n moveHandler: (e: MouseEvent) => {\n e.preventDefault()\n\n const __resizer__ = dlg.__resizer__\n const X = e.clientX - __resizer__.offset[0] ,Y = e.clientY - __resizer__.offset[1]\n const width = __resizer__.area[0] + X + 'px', height = __resizer__.area[1] + Y + 'px'\n dlg.style.width = width\n dlg.style.height = height\n\n binding.instance.$emit('resize', dlg)\n },\n upHandler: () => {\n const __resizer__ = dlg.__resizer__\n removeEventListener('mousemove', __resizer__.moveHandler)\n removeEventListener('mouseup', __resizer__.upHandler)\n\n document.body.style.cursor = ''\n },\n downHandler: (e: MouseEvent) => {\n e.preventDefault()\n\n const __resizer__ = dlg.__resizer__\n __resizer__.offset = [e.clientX, e.clientY]\n __resizer__.area = [dlg.getBoundingClientRect().width, dlg.getBoundingClientRect().height]\n addEventListener('mousemove', __resizer__.moveHandler)\n addEventListener('mouseup', __resizer__.upHandler)\n\n document.body.style.cursor = 'se-resize'\n },\n })\n\n binding.value && initModelessDialogResizer(dlg)\n },\n updated(dlg: DialogElement, binding: DirectiveBinding<boolean>) {\n if (binding.value) {\n initModelessDialogResizer(dlg)\n } else {\n resetModelessDialogResizer(dlg)\n }\n },\n beforeUnmount(dlg: DialogElement) {\n resetModelessDialogResizer(dlg)\n dlg.__resizer__ = null\n },\n}\n\nexport { ModelessDialogResizer }\n"],"names":[],"mappings":"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"}