UNPKG

coveo-search-ui

Version:

Coveo JavaScript Search Framework

44 lines (38 loc) 1.39 kB
import { sanitize } from 'dompurify'; import { IQuestionAnswerResponse, IRelatedQuestionAnswerResponse } from '../../rest/QuestionAnswerResponse'; import { Dom } from '../../utils/Dom'; import { bindAnalyticsToLink } from '../ResultLink/ResultLinkCommon'; export const getDefaultSnippetStyle = (contentClassName: string) => ` body { font-family: "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif, sans-serif; } .${contentClassName} > :first-child { margin-top: 0; } .${contentClassName} > :last-child { margin-bottom: 0; } `; export function getSanitizedAnswerSnippet(questionAnswer: IQuestionAnswerResponse | IRelatedQuestionAnswerResponse) { if (!questionAnswer.answerSnippet) { return ''; } // dompurify can fail to execute in some environment (salesforce locker service) try { return sanitize(questionAnswer.answerSnippet, { USE_PROFILES: { html: true } }); } catch (e) { return questionAnswer.answerSnippet; } } export const transformSnippetLinks = ( renderedSnippetParent: HTMLElement, alwaysOpenInNewWindow: boolean, logAnalytics: (link: HTMLAnchorElement) => void ) => { Dom.nodeListToArray(renderedSnippetParent.querySelectorAll('a')).forEach((link: HTMLAnchorElement) => { bindAnalyticsToLink(link, () => logAnalytics(link)); link.target = alwaysOpenInNewWindow ? '_blank' : '_top'; }); };