{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { useEventListener } from \"@chakra-ui/react-use-event-listener\"\n\nexport interface UseFocusOnMouseDownProps {\n enabled?: boolean\n ref: React.RefObject\n elements?: Array | HTMLElement | null>\n}\n\nfunction isRefObject(val: any): val is { current: any } {\n return \"current\" in val\n}\n\nconst isDom = () => typeof window !== \"undefined\"\nfunction getPlatform() {\n const agent = (navigator as any).userAgentData\n return agent?.platform ?? navigator.platform\n}\nconst vn = (v: RegExp) => isDom() && v.test(navigator.vendor)\nconst pt = (v: RegExp) => isDom() && v.test(getPlatform())\nconst isApple = () => pt(/mac|iphone|ipad|ipod/i)\nconst isSafari = () => isApple() && vn(/apple/i)\n\n/**\n * Polyfill to get `relatedTarget` working correctly consistently\n * across all browsers.\n *\n * It ensures that elements receives focus on pointer down if\n * it's not the active element.\n *\n * @internal\n */\nexport function useFocusOnPointerDown(props: UseFocusOnMouseDownProps) {\n const { ref, elements, enabled } = props\n\n const doc = () => ref.current?.ownerDocument ?? document\n\n useEventListener(doc, \"pointerdown\", (event) => {\n if (!isSafari() || !enabled) return\n const target = event.target as HTMLElement\n\n const els = elements ?? [ref]\n const isValidTarget = els.some((elementOrRef) => {\n const el = isRefObject(elementOrRef) ? elementOrRef.current : elementOrRef\n return el?.contains(target) || el === target\n })\n\n if (doc().activeElement !== target && isValidTarget) {\n event.preventDefault()\n target.focus()\n }\n })\n}\n"],"mappings":";;;AAAA,SAAS,wBAAwB;AAQjC,SAAS,YAAY,KAAmC;AACtD,SAAO,aAAa;AACtB;AAEA,IAAM,QAAQ,MAAM,OAAO,WAAW;AACtC,SAAS,cAAc;AAbvB;AAcE,QAAM,QAAS,UAAkB;AACjC,UAAO,oCAAO,aAAP,YAAmB,UAAU;AACtC;AACA,IAAM,KAAK,CAAC,MAAc,MAAM,KAAK,EAAE,KAAK,UAAU,MAAM;AAC5D,IAAM,KAAK,CAAC,MAAc,MAAM,KAAK,EAAE,KAAK,YAAY,CAAC;AACzD,IAAM,UAAU,MAAM,GAAG,uBAAuB;AAChD,IAAM,WAAW,MAAM,QAAQ,KAAK,GAAG,QAAQ;AAWxC,SAAS,sBAAsB,OAAiC;AACrE,QAAM,EAAE,KAAK,UAAU,QAAQ,IAAI;AAEnC,QAAM,MAAM,MAAG;AAlCjB;AAkCoB,2BAAI,YAAJ,mBAAa,kBAAb,YAA8B;AAAA;AAEhD,mBAAiB,KAAK,eAAe,CAAC,UAAU;AAC9C,QAAI,CAAC,SAAS,KAAK,CAAC;AAAS;AAC7B,UAAM,SAAS,MAAM;AAErB,UAAM,MAAM,8BAAY,CAAC,GAAG;AAC5B,UAAM,gBAAgB,IAAI,KAAK,CAAC,iBAAiB;AAC/C,YAAM,KAAK,YAAY,YAAY,IAAI,aAAa,UAAU;AAC9D,cAAO,yBAAI,SAAS,YAAW,OAAO;AAAA,IACxC,CAAC;AAED,QAAI,IAAI,EAAE,kBAAkB,UAAU,eAAe;AACnD,YAAM,eAAe;AACrB,aAAO,MAAM;AAAA,IACf;AAAA,EACF,CAAC;AACH;","names":[]}