import DOMPurify from 'dompurify';

const config = {
  ADD_TAGS: ['iframe'],
  ADD_ATTR: ['allowFullscreen'],
};

DOMPurify.addHook('uponSanitizeAttribute', (node) => {
  if (!('target' in node)) { return; }

  node.setAttribute('target', '_blank');
});
DOMPurify.addHook('uponSanitizeElement', (node, data) => {
  if (data.tagName !== 'iframe') { return; }

  const src = node.getAttribute('src');
  if (src?.startsWith('https://www.youtube.com/embed/')) {
    return;
  }

  return node.parentNode?.removeChild(node);
});

export function sanitizeHTML(source: string | Node): string {
  return DOMPurify.sanitize(source, config);
}