{"ast":null,"code":"import { useEffect } from 'react';\nexport var onCloseMap = new WeakMap();\nexport function useCloseOnScroll(opts) {\n  var triggerRef = opts.triggerRef,\n    isOpen = opts.isOpen,\n    onClose = opts.onClose;\n  useEffect(function () {\n    if (!isOpen) {\n      return;\n    }\n    var onScroll = function onScroll(e) {\n      var target = e.target;\n      if (!triggerRef.current || !target.contains(triggerRef.current)) {\n        return;\n      }\n      var onCloseHandler = onClose || onCloseMap.get(triggerRef.current);\n      if (onCloseHandler) {\n        onCloseHandler();\n      }\n    };\n    window.addEventListener('scroll', onScroll, true);\n    return function () {\n      window.removeEventListener('scroll', onScroll, true);\n    };\n  }, [isOpen, onClose, triggerRef]);\n}","map":{"version":3,"sources":["useCloseOnScroll.ts"],"names":["useEffect","onCloseMap","WeakMap","useCloseOnScroll","opts","triggerRef","isOpen","onClose","onScroll","e","target","current","contains","onCloseHandler","get","window","addEventListener","removeEventListener"],"mappings":"AAaA,SAAmBA,SAAnB,QAAmC,OAAnC;AAOA,OAAO,IAAMC,UAA4C,GAAG,IAAIC,OAAJ,CAAA,CAArD;AASP,OAAO,SAASC,gBAAT,CAA0BC,IAA1B,EAAsD;EAC3D,IAAKC,UAAD,GAAgCD,IAApC,CAAKC,UAAD;IAAaC,MAAb,GAAgCF,IAApC,CAAiBE,MAAb;IAAqBC,OAAAA,GAAWH,IAApC,CAAyBG,OAAAA;EAEzBP,SAAS,CAAC,YAAM;IACd,IAAI,CAACM,MAAL,EAAa;MACX;IACD;IAED,IAAIE,QAAQ,GAAIC,SAAZD,QAAQ,CAAIC,CAAD,EAAmB;MAEhC,IAAIC,MAAM,GAAGD,CAAC,CAACC,MAAf;MACA,IAAI,CAACL,UAAU,CAACM,OAAZ,IAAuB,CAACD,MAAM,CAACE,QAAPF,CAAgBL,UAAU,CAACM,OAA3BD,CAA5B,EAAiE;QAC/D;MACD;MAED,IAAIG,cAAc,GAAGN,OAAO,IAAIN,UAAU,CAACa,GAAXb,CAAeI,UAAU,CAACM,OAA1BV,CAAhC;MACA,IAAIY,cAAJ,EAAoB;QAClBA,cAAc,CAAA,CAAA;MACf;IACF,CAXD;IAaAE,MAAM,CAACC,gBAAPD,CAAwB,QAAxBA,EAAkCP,QAAlCO,EAA4C,IAA5CA,CAAAA;IACA,OAAO,YAAM;MACXA,MAAM,CAACE,mBAAPF,CAA2B,QAA3BA,EAAqCP,QAArCO,EAA+C,IAA/CA,CAAAA;IACD,CAFD;EAGD,CAtBQ,EAsBN,CAACT,MAAD,EAASC,OAAT,EAAkBF,UAAlB,CAtBM,CAATL;AAuBD","sourcesContent":["//@ts-nocheck\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {RefObject, useEffect} from 'react';\n\n// This behavior moved from useOverlayTrigger to useOverlayPosition.\n// For backward compatibility, where useOverlayTrigger handled hiding the popover on close,\n// it sets a close function here mapped from the trigger element. This way we can avoid\n// forcing users to pass an onClose function to useOverlayPosition which could be considered\n// a breaking change.\nexport const onCloseMap: WeakMap<HTMLElement, () => void> = new WeakMap();\n\ninterface CloseOnScrollOptions {\n  triggerRef: RefObject<HTMLElement>,\n  isOpen?: boolean,\n  onClose?: () => void\n}\n\n/** @private */\nexport function useCloseOnScroll(opts: CloseOnScrollOptions) {\n  let {triggerRef, isOpen, onClose} = opts;\n\n  useEffect(() => {\n    if (!isOpen) {\n      return;\n    }\n\n    let onScroll = (e: MouseEvent) => {\n      // Ignore if scrolling an scrollable region outside the trigger's tree.\n      let target = e.target as HTMLElement;\n      if (!triggerRef.current || !target.contains(triggerRef.current)) {\n        return;\n      }\n\n      let onCloseHandler = onClose || onCloseMap.get(triggerRef.current);\n      if (onCloseHandler) {\n        onCloseHandler();\n      }\n    };\n\n    window.addEventListener('scroll', onScroll, true);\n    return () => {\n      window.removeEventListener('scroll', onScroll, true);\n    };\n  }, [isOpen, onClose, triggerRef]);\n}\n"]},"metadata":{},"sourceType":"module"}