{"version":3,"file":"event.mjs","sources":["../../../../../../packages/utils/dom/event.ts"],"sourcesContent":["import { unref } from 'vue'\n\nimport type { Ref } from 'vue'\n\nexport const composeEventHandlers = <E>(\n  theirsHandler?: (event: E) => boolean | void,\n  oursHandler?: (event: E) => void,\n  { checkForDefaultPrevented = true } = {}\n) => {\n  const handleEvent = (event: E) => {\n    const shouldPrevent = theirsHandler?.(event)\n\n    if (checkForDefaultPrevented === false || !shouldPrevent) {\n      return oursHandler?.(event)\n    }\n  }\n  return handleEvent\n}\n\ntype WhenMouseHandler = (e: PointerEvent) => any\nexport const whenMouse = (handler: WhenMouseHandler): WhenMouseHandler => {\n  return (e: PointerEvent) =>\n    e.pointerType === 'mouse' ? handler(e) : undefined\n}\n\nexport const stopPropagation = (event: Event) => event.stopPropagation()\n\nexport function preventDefault(event: Event, isStopPropagation?: boolean) {\n  /* istanbul ignore else */\n  if (typeof event.cancelable !== 'boolean' || event.cancelable) {\n    event.preventDefault()\n  }\n\n  if (isStopPropagation) {\n    stopPropagation(event)\n  }\n}\n\nexport function isHidden(\n  elementRef: HTMLElement | Ref<HTMLElement | undefined>\n) {\n  const el = unref(elementRef)\n  if (!el) {\n    return false\n  }\n\n  const style = window.getComputedStyle(el)\n  const hidden = style.display === 'none'\n\n  // offsetParent returns null in the following situations:\n  // 1. The element or its parent element has the display property set to none.\n  // 2. The element has the position property set to fixed\n  const parentHidden = el.offsetParent === null && style.position !== 'fixed'\n\n  return hidden || parentHidden\n}\n\nfunction isContainingBlock(el: Element) {\n  const css = window.getComputedStyle(el)\n\n  return (\n    css.transform !== 'none' ||\n    css.perspective !== 'none' ||\n    ['transform', 'perspective', 'filter'].some((value) =>\n      (css.willChange || '').includes(value)\n    )\n  )\n}\n\nexport function getContainingBlock(el: Element) {\n  let node = el.parentElement\n\n  while (node) {\n    if (\n      node &&\n      node.tagName !== 'HTML' &&\n      node.tagName !== 'BODY' &&\n      isContainingBlock(node)\n    ) {\n      return node\n    }\n\n    node = node.parentElement\n  }\n\n  return null\n}\n"],"names":[],"mappings":";;AAIa,MAAA,oBAAA,GAAuB,CAClC,aACA,EAAA,WAAA,EACA,EAAE,wBAA2B,GAAA,IAAA,EAAS,GAAA,EACnC,KAAA;AACH,EAAM,MAAA,WAAA,GAAc,CAAC,KAAa,KAAA;AAChC,IAAA,MAAM,gBAAgB,aAAgB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAA,KAAA,CAAA,CAAA;AAEtC,IAAI,IAAA,wBAAA,KAA6B,KAAS,IAAA,CAAC,aAAe,EAAA;AACxD,MAAA,OAAO,WAAc,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAA,KAAA,CAAA,CAAA;AAAA,KACvB;AAAA,GACF,CAAA;AACA,EAAO,OAAA,WAAA,CAAA;AACT,EAAA;AAGa,MAAA,SAAA,GAAY,CAAC,OAAgD,KAAA;AACxE,EAAA,OAAO,CAAC,CACN,KAAA,CAAA,CAAE,gBAAgB,OAAU,GAAA,OAAA,CAAQ,CAAC,CAAI,GAAA,KAAA,CAAA,CAAA;AAC7C,EAAA;AAEO,MAAM,eAAkB,GAAA,CAAC,KAAiB,KAAA,KAAA,CAAM,eAAgB,GAAA;AAEvD,SAAA,cAAA,CAAe,OAAc,iBAA6B,EAAA;AAExE,EAAA,IAAI,OAAO,KAAA,CAAM,UAAe,KAAA,SAAA,IAAa,MAAM,UAAY,EAAA;AAC7D,IAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AAAA,GACvB;AAEA,EAAA,IAAI,iBAAmB,EAAA;AACrB,IAAA,eAAA,CAAgB,KAAK,CAAA,CAAA;AAAA,GACvB;AACF,CAAA;AAEO,SAAS,SACd,UACA,EAAA;AACA,EAAM,MAAA,EAAA,GAAK,MAAM,UAAU,CAAA,CAAA;AAC3B,EAAA,IAAI,CAAC,EAAI,EAAA;AACP,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAEA,EAAM,MAAA,KAAA,GAAQ,MAAO,CAAA,gBAAA,CAAiB,EAAE,CAAA,CAAA;AACxC,EAAM,MAAA,MAAA,GAAS,MAAM,OAAY,KAAA,MAAA,CAAA;AAKjC,EAAA,MAAM,YAAe,GAAA,EAAA,CAAG,YAAiB,KAAA,IAAA,IAAQ,MAAM,QAAa,KAAA,OAAA,CAAA;AAEpE,EAAA,OAAO,MAAU,IAAA,YAAA,CAAA;AACnB,CAAA;AAEA,SAAS,kBAAkB,EAAa,EAAA;AACtC,EAAM,MAAA,GAAA,GAAM,MAAO,CAAA,gBAAA,CAAiB,EAAE,CAAA,CAAA;AAEtC,EACE,OAAA,GAAA,CAAI,SAAc,KAAA,MAAA,IAClB,GAAI,CAAA,WAAA,KAAgB,UACpB,CAAC,WAAA,EAAa,aAAe,EAAA,QAAQ,CAAE,CAAA,IAAA;AAAA,IAAK,CAAC,KAC1C,KAAA,CAAA,GAAA,CAAI,UAAc,IAAA,EAAA,EAAI,SAAS,KAAK,CAAA;AAAA,GACvC,CAAA;AAEJ,CAAA;AAEO,SAAS,mBAAmB,EAAa,EAAA;AAC9C,EAAA,IAAI,OAAO,EAAG,CAAA,aAAA,CAAA;AAEd,EAAA,OAAO,IAAM,EAAA;AACX,IACE,IAAA,IAAA,IACA,KAAK,OAAY,KAAA,MAAA,IACjB,KAAK,OAAY,KAAA,MAAA,IACjB,iBAAkB,CAAA,IAAI,CACtB,EAAA;AACA,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAEA,IAAA,IAAA,GAAO,IAAK,CAAA,aAAA,CAAA;AAAA,GACd;AAEA,EAAO,OAAA,IAAA,CAAA;AACT;;;;"}