1{"version":3,"file":"useLinkToPathProps.js","sourceRoot":"","sources":["../../src/link/useLinkToPathProps.tsx"],"names":[],"mappings":"AACA,OAAO,EAAyB,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAEzD,SAAS,yBAAyB,CAChC,CAA0E;IAE1E,IAAI,CAAC,EAAE,gBAAgB,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;IAED;IACE,yBAAyB;IACzB,QAAQ,IAAI,CAAC;QACb,mCAAmC;QACnC,CAAC,CAAC,CAAC,OAAO;QACV,CAAC,CAAC,CAAC,MAAM;QACT,CAAC,CAAC,CAAC,OAAO;QACV,CAAC,CAAC,CAAC,QAAQ;QACX,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,0BAA0B;QAClE,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,0CAA0C;MACzG;QACA,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,KAA0C;IACnF,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;IAEnC,MAAM,OAAO,GAAG,CAAC,CAA2E,EAAE,EAAE;QAC9F,IAAI,YAAY,GAAG,KAAK,CAAC;QAEzB,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,EAAE;YAC/B,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;SAC/C;aAAM,IAAI,yBAAyB,CAAC,CAAC,CAAC,EAAE;YACvC,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,YAAY,GAAG,IAAI,CAAC;SACrB;QAED,IAAI,YAAY,EAAE;YAChB,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;SAC3D;IACH,CAAC,CAAC;IAEF,OAAO;QACL,yCAAyC;QACzC,IAAI,EAAE,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG;QACnD,IAAI,EAAE,MAAe;QACrB,OAAO;KACR,CAAC;AACJ,CAAC","sourcesContent":["import * as React from 'react';\nimport { GestureResponderEvent, Platform } from 'react-native';\n\nimport { useExpoRouter } from '../global-state/router-store';\nimport { stripGroupSegmentsFromPath } from '../matchers';\n\nfunction eventShouldPreventDefault(\n  e: React.MouseEvent<HTMLAnchorElement, MouseEvent> | GestureResponderEvent\n): boolean {\n  if (e?.defaultPrevented) {\n    return false;\n  }\n\n  if (\n    // Only check MouseEvents\n    'button' in e &&\n    // ignore clicks with modifier keys\n    !e.metaKey &&\n    !e.altKey &&\n    !e.ctrlKey &&\n    !e.shiftKey &&\n    (e.button == null || e.button === 0) && // Only accept left clicks\n    [undefined, null, '', 'self'].includes(e.currentTarget.target) // let browser handle \"target=_blank\" etc.\n  ) {\n    return true;\n  }\n\n  return false;\n}\n\nexport default function useLinkToPathProps(props: { href: string; replace?: boolean }) {\n  const { linkTo } = useExpoRouter();\n\n  const onPress = (e?: React.MouseEvent<HTMLAnchorElement, MouseEvent> | GestureResponderEvent) => {\n    let shouldHandle = false;\n\n    if (Platform.OS !== 'web' || !e) {\n      shouldHandle = e ? !e.defaultPrevented : true;\n    } else if (eventShouldPreventDefault(e)) {\n      e.preventDefault();\n      shouldHandle = true;\n    }\n\n    if (shouldHandle) {\n      linkTo(props.href, props.replace ? 'REPLACE' : undefined);\n    }\n  };\n\n  return {\n    // Ensure there's always a value for href\n    href: stripGroupSegmentsFromPath(props.href) || '/',\n    role: 'link' as const,\n    onPress,\n  };\n}\n"]}