{"ast":null,"code":"import { getModality } from \"../modality\";\nimport useEvent from \"../useEvent\";\nimport useLayoutEffect from \"../useLayoutEffect\";\nvar emptyObject = {};\nvar opts = {\n  passive: true\n};\nvar lockEventType = 'react-gui:hover:lock';\nvar unlockEventType = 'react-gui:hover:unlock';\n\nvar supportsPointerEvent = function supportsPointerEvent() {\n  return !!(typeof window !== 'undefined' && window.PointerEvent != null);\n};\n\nfunction dispatchCustomEvent(target, type, payload) {\n  var event = document.createEvent('CustomEvent');\n\n  var _ref = payload || emptyObject,\n      _ref$bubbles = _ref.bubbles,\n      bubbles = _ref$bubbles === void 0 ? true : _ref$bubbles,\n      _ref$cancelable = _ref.cancelable,\n      cancelable = _ref$cancelable === void 0 ? true : _ref$cancelable,\n      detail = _ref.detail;\n\n  event.initCustomEvent(type, bubbles, cancelable, detail);\n  target.dispatchEvent(event);\n}\n\nfunction getPointerType(event) {\n  var pointerType = event.pointerType;\n  return pointerType != null ? pointerType : getModality();\n}\n\nexport default function useHover(targetRef, config) {\n  var contain = config.contain,\n      disabled = config.disabled,\n      onHoverStart = config.onHoverStart,\n      onHoverChange = config.onHoverChange,\n      onHoverUpdate = config.onHoverUpdate,\n      onHoverEnd = config.onHoverEnd;\n  var canUsePE = supportsPointerEvent();\n  var addMoveListener = useEvent(canUsePE ? 'pointermove' : 'mousemove', opts);\n  var addEnterListener = useEvent(canUsePE ? 'pointerenter' : 'mouseenter', opts);\n  var addLeaveListener = useEvent(canUsePE ? 'pointerleave' : 'mouseleave', opts);\n  var addLockListener = useEvent(lockEventType, opts);\n  var addUnlockListener = useEvent(unlockEventType, opts);\n  useLayoutEffect(function () {\n    var target = targetRef.current;\n\n    if (target !== null) {\n      var hoverEnd = function hoverEnd(e) {\n        if (onHoverEnd != null) {\n          onHoverEnd(e);\n        }\n\n        if (onHoverChange != null) {\n          onHoverChange(false);\n        }\n\n        addMoveListener(target, null);\n        addLeaveListener(target, null);\n      };\n\n      var leaveListener = function leaveListener(e) {\n        var target = targetRef.current;\n\n        if (target != null && getPointerType(e) !== 'touch') {\n          if (contain) {\n            dispatchCustomEvent(target, unlockEventType);\n          }\n\n          hoverEnd(e);\n        }\n      };\n\n      var moveListener = function moveListener(e) {\n        if (getPointerType(e) !== 'touch') {\n          if (onHoverUpdate != null) {\n            if (e.x == null) {\n              e.x = e.clientX;\n            }\n\n            if (e.y == null) {\n              e.y = e.clientY;\n            }\n\n            onHoverUpdate(e);\n          }\n        }\n      };\n\n      var hoverStart = function hoverStart(e) {\n        if (onHoverStart != null) {\n          onHoverStart(e);\n        }\n\n        if (onHoverChange != null) {\n          onHoverChange(true);\n        }\n\n        if (onHoverUpdate != null) {\n          addMoveListener(target, !disabled ? moveListener : null);\n        }\n\n        addLeaveListener(target, !disabled ? leaveListener : null);\n      };\n\n      var enterListener = function enterListener(e) {\n        var target = targetRef.current;\n\n        if (target != null && getPointerType(e) !== 'touch') {\n          if (contain) {\n            dispatchCustomEvent(target, lockEventType);\n          }\n\n          hoverStart(e);\n\n          var lockListener = function lockListener(lockEvent) {\n            if (lockEvent.target !== target) {\n              hoverEnd(e);\n            }\n          };\n\n          var unlockListener = function unlockListener(lockEvent) {\n            if (lockEvent.target !== target) {\n              hoverStart(e);\n            }\n          };\n\n          addLockListener(target, !disabled ? lockListener : null);\n          addUnlockListener(target, !disabled ? unlockListener : null);\n        }\n      };\n\n      addEnterListener(target, !disabled ? enterListener : null);\n    }\n  }, [addEnterListener, addMoveListener, addLeaveListener, addLockListener, addUnlockListener, contain, disabled, onHoverStart, onHoverChange, onHoverUpdate, onHoverEnd, targetRef]);\n}","map":{"version":3,"sources":["/Users/rohitsingh/Documents/projects/new-nativebase-setup/NativeBase/example/node_modules/react-native-web/dist/modules/useHover/index.js"],"names":["getModality","useEvent","useLayoutEffect","emptyObject","opts","passive","lockEventType","unlockEventType","supportsPointerEvent","window","PointerEvent","dispatchCustomEvent","target","type","payload","event","document","createEvent","_ref","_ref$bubbles","bubbles","_ref$cancelable","cancelable","detail","initCustomEvent","dispatchEvent","getPointerType","pointerType","useHover","targetRef","config","contain","disabled","onHoverStart","onHoverChange","onHoverUpdate","onHoverEnd","canUsePE","addMoveListener","addEnterListener","addLeaveListener","addLockListener","addUnlockListener","current","hoverEnd","e","leaveListener","moveListener","x","clientX","y","clientY","hoverStart","enterListener","lockListener","lockEvent","unlockListener"],"mappings":"AAQA,SAASA,WAAT;AACA,OAAOC,QAAP;AACA,OAAOC,eAAP;AAQA,IAAIC,WAAW,GAAG,EAAlB;AACA,IAAIC,IAAI,GAAG;AACTC,EAAAA,OAAO,EAAE;AADA,CAAX;AAGA,IAAIC,aAAa,GAAG,sBAApB;AACA,IAAIC,eAAe,GAAG,wBAAtB;;AAEA,IAAIC,oBAAoB,GAAG,SAASA,oBAAT,GAAgC;AACzD,SAAO,CAAC,EAAE,OAAOC,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAACC,YAAP,IAAuB,IAA1D,CAAR;AACD,CAFD;;AAIA,SAASC,mBAAT,CAA6BC,MAA7B,EAAqCC,IAArC,EAA2CC,OAA3C,EAAoD;AAClD,MAAIC,KAAK,GAAGC,QAAQ,CAACC,WAAT,CAAqB,aAArB,CAAZ;;AAEA,MAAIC,IAAI,GAAGJ,OAAO,IAAIX,WAAtB;AAAA,MACIgB,YAAY,GAAGD,IAAI,CAACE,OADxB;AAAA,MAEIA,OAAO,GAAGD,YAAY,KAAK,KAAK,CAAtB,GAA0B,IAA1B,GAAiCA,YAF/C;AAAA,MAGIE,eAAe,GAAGH,IAAI,CAACI,UAH3B;AAAA,MAIIA,UAAU,GAAGD,eAAe,KAAK,KAAK,CAAzB,GAA6B,IAA7B,GAAoCA,eAJrD;AAAA,MAKIE,MAAM,GAAGL,IAAI,CAACK,MALlB;;AAOAR,EAAAA,KAAK,CAACS,eAAN,CAAsBX,IAAtB,EAA4BO,OAA5B,EAAqCE,UAArC,EAAiDC,MAAjD;AACAX,EAAAA,MAAM,CAACa,aAAP,CAAqBV,KAArB;AACD;;AAGD,SAASW,cAAT,CAAwBX,KAAxB,EAA+B;AAC7B,MAAIY,WAAW,GAAGZ,KAAK,CAACY,WAAxB;AACA,SAAOA,WAAW,IAAI,IAAf,GAAsBA,WAAtB,GAAoC3B,WAAW,EAAtD;AACD;;AAED,eAAe,SAAS4B,QAAT,CAAkBC,SAAlB,EAA6BC,MAA7B,EAAqC;AAClD,MAAIC,OAAO,GAAGD,MAAM,CAACC,OAArB;AAAA,MACIC,QAAQ,GAAGF,MAAM,CAACE,QADtB;AAAA,MAEIC,YAAY,GAAGH,MAAM,CAACG,YAF1B;AAAA,MAGIC,aAAa,GAAGJ,MAAM,CAACI,aAH3B;AAAA,MAIIC,aAAa,GAAGL,MAAM,CAACK,aAJ3B;AAAA,MAKIC,UAAU,GAAGN,MAAM,CAACM,UALxB;AAMA,MAAIC,QAAQ,GAAG7B,oBAAoB,EAAnC;AACA,MAAI8B,eAAe,GAAGrC,QAAQ,CAACoC,QAAQ,GAAG,aAAH,GAAmB,WAA5B,EAAyCjC,IAAzC,CAA9B;AACA,MAAImC,gBAAgB,GAAGtC,QAAQ,CAACoC,QAAQ,GAAG,cAAH,GAAoB,YAA7B,EAA2CjC,IAA3C,CAA/B;AACA,MAAIoC,gBAAgB,GAAGvC,QAAQ,CAACoC,QAAQ,GAAG,cAAH,GAAoB,YAA7B,EAA2CjC,IAA3C,CAA/B;AAEA,MAAIqC,eAAe,GAAGxC,QAAQ,CAACK,aAAD,EAAgBF,IAAhB,CAA9B;AACA,MAAIsC,iBAAiB,GAAGzC,QAAQ,CAACM,eAAD,EAAkBH,IAAlB,CAAhC;AACAF,EAAAA,eAAe,CAAC,YAAY;AAC1B,QAAIU,MAAM,GAAGiB,SAAS,CAACc,OAAvB;;AAEA,QAAI/B,MAAM,KAAK,IAAf,EAAqB;AAInB,UAAIgC,QAAQ,GAAG,SAASA,QAAT,CAAkBC,CAAlB,EAAqB;AAClC,YAAIT,UAAU,IAAI,IAAlB,EAAwB;AACtBA,UAAAA,UAAU,CAACS,CAAD,CAAV;AACD;;AAED,YAAIX,aAAa,IAAI,IAArB,EAA2B;AACzBA,UAAAA,aAAa,CAAC,KAAD,CAAb;AACD;;AAGDI,QAAAA,eAAe,CAAC1B,MAAD,EAAS,IAAT,CAAf;AACA4B,QAAAA,gBAAgB,CAAC5B,MAAD,EAAS,IAAT,CAAhB;AACD,OAZD;;AAkBA,UAAIkC,aAAa,GAAG,SAASA,aAAT,CAAuBD,CAAvB,EAA0B;AAC5C,YAAIjC,MAAM,GAAGiB,SAAS,CAACc,OAAvB;;AAEA,YAAI/B,MAAM,IAAI,IAAV,IAAkBc,cAAc,CAACmB,CAAD,CAAd,KAAsB,OAA5C,EAAqD;AACnD,cAAId,OAAJ,EAAa;AACXpB,YAAAA,mBAAmB,CAACC,MAAD,EAASL,eAAT,CAAnB;AACD;;AAEDqC,UAAAA,QAAQ,CAACC,CAAD,CAAR;AACD;AACF,OAVD;;AAgBA,UAAIE,YAAY,GAAG,SAASA,YAAT,CAAsBF,CAAtB,EAAyB;AAC1C,YAAInB,cAAc,CAACmB,CAAD,CAAd,KAAsB,OAA1B,EAAmC;AACjC,cAAIV,aAAa,IAAI,IAArB,EAA2B;AAEzB,gBAAIU,CAAC,CAACG,CAAF,IAAO,IAAX,EAAiB;AACfH,cAAAA,CAAC,CAACG,CAAF,GAAMH,CAAC,CAACI,OAAR;AACD;;AAED,gBAAIJ,CAAC,CAACK,CAAF,IAAO,IAAX,EAAiB;AACfL,cAAAA,CAAC,CAACK,CAAF,GAAML,CAAC,CAACM,OAAR;AACD;;AAEDhB,YAAAA,aAAa,CAACU,CAAD,CAAb;AACD;AACF;AACF,OAfD;;AAqBA,UAAIO,UAAU,GAAG,SAASA,UAAT,CAAoBP,CAApB,EAAuB;AACtC,YAAIZ,YAAY,IAAI,IAApB,EAA0B;AACxBA,UAAAA,YAAY,CAACY,CAAD,CAAZ;AACD;;AAED,YAAIX,aAAa,IAAI,IAArB,EAA2B;AACzBA,UAAAA,aAAa,CAAC,IAAD,CAAb;AACD;;AAGD,YAAIC,aAAa,IAAI,IAArB,EAA2B;AACzBG,UAAAA,eAAe,CAAC1B,MAAD,EAAS,CAACoB,QAAD,GAAYe,YAAZ,GAA2B,IAApC,CAAf;AACD;;AAEDP,QAAAA,gBAAgB,CAAC5B,MAAD,EAAS,CAACoB,QAAD,GAAYc,aAAZ,GAA4B,IAArC,CAAhB;AACD,OAfD;;AAqBA,UAAIO,aAAa,GAAG,SAASA,aAAT,CAAuBR,CAAvB,EAA0B;AAC5C,YAAIjC,MAAM,GAAGiB,SAAS,CAACc,OAAvB;;AAEA,YAAI/B,MAAM,IAAI,IAAV,IAAkBc,cAAc,CAACmB,CAAD,CAAd,KAAsB,OAA5C,EAAqD;AACnD,cAAId,OAAJ,EAAa;AACXpB,YAAAA,mBAAmB,CAACC,MAAD,EAASN,aAAT,CAAnB;AACD;;AAED8C,UAAAA,UAAU,CAACP,CAAD,CAAV;;AAEA,cAAIS,YAAY,GAAG,SAASA,YAAT,CAAsBC,SAAtB,EAAiC;AAClD,gBAAIA,SAAS,CAAC3C,MAAV,KAAqBA,MAAzB,EAAiC;AAC/BgC,cAAAA,QAAQ,CAACC,CAAD,CAAR;AACD;AACF,WAJD;;AAMA,cAAIW,cAAc,GAAG,SAASA,cAAT,CAAwBD,SAAxB,EAAmC;AACtD,gBAAIA,SAAS,CAAC3C,MAAV,KAAqBA,MAAzB,EAAiC;AAC/BwC,cAAAA,UAAU,CAACP,CAAD,CAAV;AACD;AACF,WAJD;;AAMAJ,UAAAA,eAAe,CAAC7B,MAAD,EAAS,CAACoB,QAAD,GAAYsB,YAAZ,GAA2B,IAApC,CAAf;AACAZ,UAAAA,iBAAiB,CAAC9B,MAAD,EAAS,CAACoB,QAAD,GAAYwB,cAAZ,GAA6B,IAAtC,CAAjB;AACD;AACF,OAzBD;;AA2BAjB,MAAAA,gBAAgB,CAAC3B,MAAD,EAAS,CAACoB,QAAD,GAAYqB,aAAZ,GAA4B,IAArC,CAAhB;AACD;AACF,GAhHc,EAgHZ,CAACd,gBAAD,EAAmBD,eAAnB,EAAoCE,gBAApC,EAAsDC,eAAtD,EAAuEC,iBAAvE,EAA0FX,OAA1F,EAAmGC,QAAnG,EAA6GC,YAA7G,EAA2HC,aAA3H,EAA0IC,aAA1I,EAAyJC,UAAzJ,EAAqKP,SAArK,CAhHY,CAAf;AAiHD","sourcesContent":["/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nimport { getModality } from '../modality';\nimport useEvent from '../useEvent';\nimport useLayoutEffect from '../useLayoutEffect';\n/**\n * Types\n */\n\n/**\n * Implementation\n */\nvar emptyObject = {};\nvar opts = {\n  passive: true\n};\nvar lockEventType = 'react-gui:hover:lock';\nvar unlockEventType = 'react-gui:hover:unlock';\n\nvar supportsPointerEvent = function supportsPointerEvent() {\n  return !!(typeof window !== 'undefined' && window.PointerEvent != null);\n};\n\nfunction dispatchCustomEvent(target, type, payload) {\n  var event = document.createEvent('CustomEvent');\n\n  var _ref = payload || emptyObject,\n      _ref$bubbles = _ref.bubbles,\n      bubbles = _ref$bubbles === void 0 ? true : _ref$bubbles,\n      _ref$cancelable = _ref.cancelable,\n      cancelable = _ref$cancelable === void 0 ? true : _ref$cancelable,\n      detail = _ref.detail;\n\n  event.initCustomEvent(type, bubbles, cancelable, detail);\n  target.dispatchEvent(event);\n} // This accounts for the non-PointerEvent fallback events.\n\n\nfunction getPointerType(event) {\n  var pointerType = event.pointerType;\n  return pointerType != null ? pointerType : getModality();\n}\n\nexport default function useHover(targetRef, config) {\n  var contain = config.contain,\n      disabled = config.disabled,\n      onHoverStart = config.onHoverStart,\n      onHoverChange = config.onHoverChange,\n      onHoverUpdate = config.onHoverUpdate,\n      onHoverEnd = config.onHoverEnd;\n  var canUsePE = supportsPointerEvent();\n  var addMoveListener = useEvent(canUsePE ? 'pointermove' : 'mousemove', opts);\n  var addEnterListener = useEvent(canUsePE ? 'pointerenter' : 'mouseenter', opts);\n  var addLeaveListener = useEvent(canUsePE ? 'pointerleave' : 'mouseleave', opts); // These custom events are used to implement the \"contain\" prop.\n\n  var addLockListener = useEvent(lockEventType, opts);\n  var addUnlockListener = useEvent(unlockEventType, opts);\n  useLayoutEffect(function () {\n    var target = targetRef.current;\n\n    if (target !== null) {\n      /**\n       * End the hover gesture\n       */\n      var hoverEnd = function hoverEnd(e) {\n        if (onHoverEnd != null) {\n          onHoverEnd(e);\n        }\n\n        if (onHoverChange != null) {\n          onHoverChange(false);\n        } // Remove the listeners once finished.\n\n\n        addMoveListener(target, null);\n        addLeaveListener(target, null);\n      };\n      /**\n       * Leave element\n       */\n\n\n      var leaveListener = function leaveListener(e) {\n        var target = targetRef.current;\n\n        if (target != null && getPointerType(e) !== 'touch') {\n          if (contain) {\n            dispatchCustomEvent(target, unlockEventType);\n          }\n\n          hoverEnd(e);\n        }\n      };\n      /**\n       * Move within element\n       */\n\n\n      var moveListener = function moveListener(e) {\n        if (getPointerType(e) !== 'touch') {\n          if (onHoverUpdate != null) {\n            // Not all browsers have these properties\n            if (e.x == null) {\n              e.x = e.clientX;\n            }\n\n            if (e.y == null) {\n              e.y = e.clientY;\n            }\n\n            onHoverUpdate(e);\n          }\n        }\n      };\n      /**\n       * Start the hover gesture\n       */\n\n\n      var hoverStart = function hoverStart(e) {\n        if (onHoverStart != null) {\n          onHoverStart(e);\n        }\n\n        if (onHoverChange != null) {\n          onHoverChange(true);\n        } // Set the listeners needed for the rest of the hover gesture.\n\n\n        if (onHoverUpdate != null) {\n          addMoveListener(target, !disabled ? moveListener : null);\n        }\n\n        addLeaveListener(target, !disabled ? leaveListener : null);\n      };\n      /**\n       * Enter element\n       */\n\n\n      var enterListener = function enterListener(e) {\n        var target = targetRef.current;\n\n        if (target != null && getPointerType(e) !== 'touch') {\n          if (contain) {\n            dispatchCustomEvent(target, lockEventType);\n          }\n\n          hoverStart(e);\n\n          var lockListener = function lockListener(lockEvent) {\n            if (lockEvent.target !== target) {\n              hoverEnd(e);\n            }\n          };\n\n          var unlockListener = function unlockListener(lockEvent) {\n            if (lockEvent.target !== target) {\n              hoverStart(e);\n            }\n          };\n\n          addLockListener(target, !disabled ? lockListener : null);\n          addUnlockListener(target, !disabled ? unlockListener : null);\n        }\n      };\n\n      addEnterListener(target, !disabled ? enterListener : null);\n    }\n  }, [addEnterListener, addMoveListener, addLeaveListener, addLockListener, addUnlockListener, contain, disabled, onHoverStart, onHoverChange, onHoverUpdate, onHoverEnd, targetRef]);\n}"]},"metadata":{},"sourceType":"module"}