UNPKG

hongluan-ui

Version:
1 lines 5.02 kB
{"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":"AAAA,MAAM,iBAAiB,GAAG,CAAC,GAAG,KAAK;AACnC,EAAE,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC;AAClC,EAAE,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;AACpD,EAAE,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;AAC5D,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC/B,EAAE,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;AACtB,EAAE,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;AACtB,CAAC,CAAC;AACF,MAAM,kBAAkB,GAAG,CAAC,GAAG,KAAK;AACpC,EAAE,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC;AAClC,EAAE,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;AACpD,EAAE,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;AAC/D,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AACvC,CAAC,CAAC;AACG,MAAC,aAAa,GAAG;AACtB,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK;AACjC,IAAI,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;AACtD,IAAI,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,MAAM,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;AACjC,MAAM,WAAW,EAAE,CAAC,CAAC,KAAK;AAC1B,QAAQ,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC;AACxC,QAAQ,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;AAChE,QAAQ,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;AAC/D,OAAO;AACP,MAAM,SAAS,EAAE,MAAM;AACvB,QAAQ,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC;AACxC,QAAQ,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;AAC9D,QAAQ,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;AAC1D,OAAO;AACP,MAAM,WAAW,EAAE,CAAC,CAAC,KAAK;AAC1B,QAAQ,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC;AACxC,QAAQ,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC;AACnD,QAAQ,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC;AAClD,QAAQ,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;AAC3D,QAAQ,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;AACvD,OAAO;AACP,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO;AAC9B,MAAM,OAAO;AACb,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC3B,GAAG;AACH,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE;AACxB,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE;AAC/B,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC7B,KAAK,MAAM;AACX,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC;AAC9B,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,KAAK,YAAY,EAAE;AACvF,MAAM,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;AAC7C,MAAM,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;AAC9C,KAAK;AACL,GAAG;AACH,EAAE,aAAa,CAAC,GAAG,EAAE;AACrB,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC;AAC5B,IAAI,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC;AACzB,GAAG;AACH;;;;"}