@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
1 lines • 1.64 kB
Source Map (JSON)
{"version":3,"file":"use-delayed-hover.mjs","names":[],"sources":["../../../src/utils/Floating/use-delayed-hover.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\ninterface UseDelayedHoverInput {\n open: () => void;\n close: () => void;\n openDelay: number | undefined;\n closeDelay: number | undefined;\n}\n\nexport function useDelayedHover({ open, close, openDelay, closeDelay }: UseDelayedHoverInput) {\n const openTimeout = useRef(-1);\n const closeTimeout = useRef(-1);\n\n const clearTimeouts = () => {\n window.clearTimeout(openTimeout.current);\n window.clearTimeout(closeTimeout.current);\n };\n\n const openDropdown = () => {\n clearTimeouts();\n\n if (openDelay === 0 || openDelay === undefined) {\n open();\n } else {\n openTimeout.current = window.setTimeout(open, openDelay);\n }\n };\n\n const closeDropdown = () => {\n clearTimeouts();\n\n if (closeDelay === 0 || closeDelay === undefined) {\n close();\n } else {\n closeTimeout.current = window.setTimeout(close, closeDelay);\n }\n };\n\n useEffect(() => clearTimeouts, []);\n\n return { openDropdown, closeDropdown };\n}\n"],"mappings":";;;AASA,SAAgB,gBAAgB,EAAE,MAAM,OAAO,WAAW,cAAoC;CAC5F,MAAM,cAAc,OAAO,EAAE;CAC7B,MAAM,eAAe,OAAO,EAAE;CAE9B,MAAM,sBAAsB;EAC1B,OAAO,aAAa,YAAY,OAAO;EACvC,OAAO,aAAa,aAAa,OAAO;CAC1C;CAEA,MAAM,qBAAqB;EACzB,cAAc;EAEd,IAAI,cAAc,KAAK,cAAc,KAAA,GACnC,KAAK;OAEL,YAAY,UAAU,OAAO,WAAW,MAAM,SAAS;CAE3D;CAEA,MAAM,sBAAsB;EAC1B,cAAc;EAEd,IAAI,eAAe,KAAK,eAAe,KAAA,GACrC,MAAM;OAEN,aAAa,UAAU,OAAO,WAAW,OAAO,UAAU;CAE9D;CAEA,gBAAgB,eAAe,CAAC,CAAC;CAEjC,OAAO;EAAE;EAAc;CAAc;AACvC"}