|
1 | | -import type { Annotation } from "@openctx/schema"; |
2 | | -import { renderHoverToHTML } from "@openctx/ui-common"; |
3 | | -import DOMPurify from "dompurify"; |
4 | | -import type { FunctionComponent } from "react"; |
5 | | -import { BaseChip } from "./BaseChip.js"; |
| 1 | +import type { Annotation } from '@openctx/schema' |
| 2 | +import { renderHoverToHTML } from '@openctx/ui-common' |
| 3 | +import DOMPurify from 'dompurify' |
| 4 | +import type { FunctionComponent } from 'react' |
| 5 | +import { BaseChip } from './BaseChip.js' |
6 | 6 | /** |
7 | 7 | * A single OpenCtx annotation, displayed as a "chip". |
8 | 8 | */ |
9 | 9 | export const Chip: FunctionComponent<{ |
10 | | - annotation: Annotation; |
11 | | - className?: string; |
12 | | - popoverClassName?: string; |
| 10 | + annotation: Annotation |
| 11 | + className?: string |
| 12 | + popoverClassName?: string |
13 | 13 | }> = ({ annotation: { item }, className, popoverClassName }) => { |
14 | | - const renderedHover = renderHoverToHTML(item.ui?.hover); |
15 | | - return ( |
16 | | - <BaseChip |
17 | | - title={item.title} |
18 | | - url={item.url} |
19 | | - className={className} |
20 | | - popover={ |
21 | | - renderedHover ? ( |
22 | | - renderedHover.format === "text" ? ( |
23 | | - <div>{renderedHover.value}</div> |
24 | | - ) : ( |
25 | | - /* biome-ignore lint/security/noDangerouslySetInnerHtml: input is sanitized by renderHoverToHTML */ |
26 | | - <div |
27 | | - dangerouslySetInnerHTML={{ |
28 | | - __html: DOMPurify.sanitize(renderedHover.value), |
29 | | - }} |
30 | | - /> |
31 | | - ) |
32 | | - ) : null |
33 | | - } |
34 | | - popoverClassName={popoverClassName} |
35 | | - /> |
36 | | - ); |
37 | | -}; |
| 14 | + const renderedHover = renderHoverToHTML(item.ui?.hover) |
| 15 | + return ( |
| 16 | + <BaseChip |
| 17 | + title={item.title} |
| 18 | + url={item.url} |
| 19 | + className={className} |
| 20 | + popover={ |
| 21 | + renderedHover ? ( |
| 22 | + renderedHover.format === 'text' ? ( |
| 23 | + <div>{renderedHover.value}</div> |
| 24 | + ) : ( |
| 25 | + <div |
| 26 | + dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(renderedHover.value) }} |
| 27 | + /> |
| 28 | + ) |
| 29 | + ) : null |
| 30 | + } |
| 31 | + popoverClassName={popoverClassName} |
| 32 | + /> |
| 33 | + ) |
| 34 | +} |
0 commit comments