21128: fixed unwanted rowselects on other operational clicks Arvados-DCO-1.1-Signed...
[arvados.git] / src / common / html-sanitize.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import DOMPurify from 'dompurify';
6
7 type TDomPurifyConfig = {
8     ALLOWED_TAGS: string[];
9     ALLOWED_ATTR: string[];
10 };
11
12 const domPurifyConfig: TDomPurifyConfig = {
13     ALLOWED_TAGS: [
14         'a',
15         'b',
16         'blockquote',
17         'br',
18         'code',
19         'del',
20         'dd',
21         'dl',
22         'dt',
23         'em',
24         'h1',
25         'h2',
26         'h3',
27         'h4',
28         'h5',
29         'h6',
30         'hr',
31         'i',
32         'img',
33         'kbd',
34         'li',
35         'ol',
36         'p',
37         'pre',
38         's',
39         'del',
40         'section',
41         'span',
42         'strong',
43         'sub',
44         'sup',
45         'ul',
46     ],
47     ALLOWED_ATTR: ['src', 'width', 'height', 'href', 'alt', 'title', 'style' ],
48 };
49
50 export const sanitizeHTML = (dirtyString: string): string => DOMPurify.sanitize(dirtyString, domPurifyConfig);
51