Skip to content
Snippets Groups Projects
SafeHTML.ts 660 B
Newer Older
import { defineComponent, h, PropType } from 'vue'
import { sanitizeHTML } from '@/util'

export default defineComponent({
  props: {
    html: { type: String as PropType<string>, required: true },
    sanitizePreset: {
      type: String as PropType<'inline-noninteractive' | 'safe-html' | 'strip'>,
      required: false,
      default: 'strip',
    },
    as: { type: String as PropType<string | undefined>, required: false, default: undefined },
  },
  setup(props) {
    return () =>
      h(props.as ? props.as : props.sanitizePreset === 'safe-html' ? 'div' : 'span', {
        innerHTML: sanitizeHTML(props.html, props.sanitizePreset),
      })
  },
})