{"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\n    var onScroll = function onScroll(e) {\n      var target = e.target;\n\n      if (!triggerRef.current || !target.contains(triggerRef.current)) {\n        return;\n      }\n\n      var onCloseHandler = onClose || onCloseMap.get(triggerRef.current);\n\n      if (onCloseHandler) {\n        onCloseHandler();\n      }\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":["onCloseMap","onClose","useEffect","onScroll","e","target","triggerRef","onCloseHandler","window"],"mappings":"AAaA,SAAA,SAAA,QAAA,OAAA;AAOA,OAAO,IAAMA,UAA4C,GAAG,IAArD,OAAqD,EAArD;AASP,OAAO,SAAA,gBAAA,CAAA,IAAA,EAAsD;AAAA,MACvD,UADuD,GAC3D,IAD2D,CACvD,UADuD;AAAA,MACvD,MADuD,GAC3D,IAD2D,CACvD,MADuD;AAAA,MAClCC,OADkC,GAC3D,IAD2D,CAClCA,OADkC;AAG3DC,EAAAA,SAAS,CAAC,YAAM;AACd,QAAI,CAAJ,MAAA,EAAa;AACX;AACD;;AAED,QAAIC,QAAQ,GAAIC,SAAZD,QAAYC,CAAAA,CAAD,EAAmB;AAEhC,UAAIC,MAAM,GAAGD,CAAC,CAAd,MAAA;;AACA,UAAI,CAACE,UAAU,CAAX,OAAA,IAAuB,CAACD,MAAM,CAANA,QAAAA,CAAgBC,UAAU,CAAtD,OAA4BD,CAA5B,EAAiE;AAC/D;AACD;;AAED,UAAIE,cAAc,GAAGN,OAAO,IAAID,UAAU,CAAVA,GAAAA,CAAeM,UAAU,CAAzD,OAAgCN,CAAhC;;AACA,UAAA,cAAA,EAAoB;AAClBO,QAAAA,cAAc;AACf;AAVH,KAAA;;AAaAC,IAAAA,MAAM,CAANA,gBAAAA,CAAAA,QAAAA,EAAAA,QAAAA,EAAAA,IAAAA;AACA,WAAO,YAAM;AACXA,MAAAA,MAAM,CAANA,mBAAAA,CAAAA,QAAAA,EAAAA,QAAAA,EAAAA,IAAAA;AADF,KAAA;AAnBO,GAAA,EAsBN,CAAA,MAAA,EAAA,OAAA,EAtBHN,UAsBG,CAtBM,CAATA;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"}