{"version":3,"file":"interactive-result-7b50bdaf.js","sources":["../../../../src/scripts/coveo/components/interactive-result.tsx"],"sourcesContent":["import { buildInteractiveResult, Result, SearchEngine } from '@coveo/headless';\nimport React, { FunctionComponent, useEffect, PropsWithChildren } from 'react';\nimport { headlessEngine } from '../engine';\n\ninterface LinkProps extends PropsWithChildren {\n  result: Result;\n  target?: string;\n  link: string;\n  className: string;\n  dataLayer?: string;\n  download?: boolean;\n  ariaLabel?: string;\n}\n\n// Filters out dangerous URIs that can create XSS attacks such as `javascript:`.\nfunction filterProtocol(uri: string) {\n  const isAbsolute = /^(https?|ftp|file|mailto|tel):/i.test(uri);\n  const isRelative = /^\\//.test(uri);\n\n  return isAbsolute || isRelative ? uri : '';\n}\n\nexport const ResultLink: FunctionComponent<LinkProps> = props => {\n  const interactiveResult = buildInteractiveResult(\n    headlessEngine as SearchEngine,\n    {\n      options: { result: props.result }\n    }\n  );\n\n  useEffect(() => () => interactiveResult.cancelPendingSelect(), []);\n\n  return (\n    <a\n      href={filterProtocol(props.link)}\n      onClick={() => interactiveResult.select()}\n      onContextMenu={() => interactiveResult.select()}\n      onMouseDown={() => interactiveResult.select()}\n      onMouseUp={() => interactiveResult.select()}\n      onTouchStart={() => interactiveResult.beginDelayedSelect()}\n      onTouchEnd={() => interactiveResult.cancelPendingSelect()}\n      data-layer={props.dataLayer}\n      className={props.className}\n      target={props.target ? props.target : '_blank'}\n      download={props.download ? props.download : undefined}\n      aria-label={props.ariaLabel ? props.ariaLabel : undefined}\n    >\n      {props.children}\n    </a>\n  );\n};\n"],"names":["filterProtocol","uri","isAbsolute","isRelative","ResultLink","props","interactiveResult","buildInteractiveResult","headlessEngine","useEffect","React"],"mappings":"qIAeA,SAASA,EAAeC,EAAa,CAC7B,MAAAC,EAAa,kCAAkC,KAAKD,CAAG,EACvDE,EAAa,MAAM,KAAKF,CAAG,EAE1B,OAAAC,GAAcC,EAAaF,EAAM,EAC1C,CAEO,MAAMG,EAAoDC,GAAA,CAC/D,MAAMC,EAAoBC,EACxBC,EACA,CACE,QAAS,CAAE,OAAQH,EAAM,MAAO,CAClC,CAAA,EAGFI,OAAAA,EAAAA,UAAU,IAAM,IAAMH,EAAkB,oBAAoB,EAAG,CAAE,CAAA,EAG/DI,EAAA,cAAC,IAAA,CACC,KAAMV,EAAeK,EAAM,IAAI,EAC/B,QAAS,IAAMC,EAAkB,OAAO,EACxC,cAAe,IAAMA,EAAkB,OAAO,EAC9C,YAAa,IAAMA,EAAkB,OAAO,EAC5C,UAAW,IAAMA,EAAkB,OAAO,EAC1C,aAAc,IAAMA,EAAkB,mBAAmB,EACzD,WAAY,IAAMA,EAAkB,oBAAoB,EACxD,aAAYD,EAAM,UAClB,UAAWA,EAAM,UACjB,OAAQA,EAAM,OAASA,EAAM,OAAS,SACtC,SAAUA,EAAM,SAAWA,EAAM,SAAW,OAC5C,aAAYA,EAAM,UAAYA,EAAM,UAAY,MAAA,EAE/CA,EAAM,QAAA,CAGb"}