{"version":3,"file":"index.mjs","names":[],"sources":["../../../../../packages/hooks/use-same-target/index.ts"],"sourcesContent":["import { NOOP } from '@element-plus/utils'\n\nexport const useSameTarget = (handleClick?: (e: MouseEvent) => void) => {\n  if (!handleClick) {\n    return { onClick: NOOP, onMousedown: NOOP, onMouseup: NOOP }\n  }\n\n  let mousedownTarget = false\n  let mouseupTarget = false\n  // refer to this https://javascript.info/mouse-events-basics\n  // events fired in the order: mousedown -> mouseup -> click\n  // we need to set the mousedown handle to false after click fired.\n  const onClick = (e: MouseEvent) => {\n    // if and only if\n    if (mousedownTarget && mouseupTarget) {\n      handleClick(e)\n    }\n    mousedownTarget = mouseupTarget = false\n  }\n\n  const onMousedown = (e: MouseEvent) => {\n    // marking current mousedown target.\n    mousedownTarget = e.target === e.currentTarget\n  }\n  const onMouseup = (e: MouseEvent) => {\n    // marking current mouseup target.\n    mouseupTarget = e.target === e.currentTarget\n  }\n\n  return { onClick, onMousedown, onMouseup }\n}\n"],"mappings":";;;AAEA,MAAa,iBAAiB,gBAA0C;AACtE,KAAI,CAAC,YACH,QAAO;EAAE,SAAS;EAAM,aAAa;EAAM,WAAW;EAAM;CAG9D,IAAI,kBAAkB;CACtB,IAAI,gBAAgB;CAIpB,MAAM,WAAW,MAAkB;AAEjC,MAAI,mBAAmB,cACrB,aAAY,EAAE;AAEhB,oBAAkB,gBAAgB;;CAGpC,MAAM,eAAe,MAAkB;AAErC,oBAAkB,EAAE,WAAW,EAAE;;CAEnC,MAAM,aAAa,MAAkB;AAEnC,kBAAgB,EAAE,WAAW,EAAE;;AAGjC,QAAO;EAAE;EAAS;EAAa;EAAW"}