{"version":3,"file":"html.vue2.mjs","sources":["../../../../../../packages/components/html/src/html.vue"],"sourcesContent":["<template>\r\n  <span :class=\"bem.b()\" v-html=\"purifiedVal\"></span>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { computed } from 'vue'\r\n\r\nimport { createNamespace } from '@ll-plus/utils'\r\nimport DOMPurify from 'dompurify'\r\nimport { htmlProps } from './html'\r\n\r\n// 1.defineOptions\r\ndefineOptions({\r\n  name: 'LlHtml',\r\n})\r\n// 定义组件props\r\nconst props = defineProps(htmlProps)\r\n\r\nconst bem = createNamespace('html')\r\n\r\n// 自定义配置允许 SVG\r\nconst purifyOptions = computed(() => ({\r\n  USE_PROFILES: { html: true, svg: true },\r\n  ADD_TAGS: ['use', 'svg', 'symbol'],\r\n  ADD_ATTR: ['xlink:href', 'viewBox', 'aria-hidden'],\r\n  FORBID_TAGS: ['script', 'iframe', 'object', 'embed'],\r\n  FORBID_ATTR: ['onerror', 'onload', 'onclick', 'onmouseover'],\r\n  ...props.options,\r\n}))\r\n\r\n// 使用自定义配置过滤 HTML（防止XXS攻击）\r\nconst purifiedVal = computed(() => {\r\n  return DOMPurify.sanitize(props.value, purifyOptions.value)\r\n})\r\n</script>\r\n"],"names":["DOMPurify","_createElementBlock","_normalizeClass","_unref"],"mappings":";;;;;;;;;;;;;;;AAgBA,IAAA,MAAM,KAAA,GAAQ,OAAA;AAEd,IAAA,MAAM,GAAA,GAAM,gBAAgB,MAAM,CAAA;AAGlC,IAAA,MAAM,aAAA,GAAgB,SAAS,OAAO;AAAA,MACpC,YAAA,EAAc,EAAE,IAAA,EAAM,IAAA,EAAM,KAAK,IAAA,EAAK;AAAA,MACtC,QAAA,EAAU,CAAC,KAAA,EAAO,KAAA,EAAO,QAAQ,CAAA;AAAA,MACjC,QAAA,EAAU,CAAC,YAAA,EAAc,SAAA,EAAW,aAAa,CAAA;AAAA,MACjD,WAAA,EAAa,CAAC,QAAA,EAAU,QAAA,EAAU,UAAU,OAAO,CAAA;AAAA,MACnD,WAAA,EAAa,CAAC,SAAA,EAAW,QAAA,EAAU,WAAW,aAAa,CAAA;AAAA,MAC3D,GAAG,KAAA,CAAM;AAAA,KACX,CAAE,CAAA;AAGF,IAAA,MAAM,WAAA,GAAc,SAAS,MAAM;AACjC,MAAA,OAAOA,MAAA,CAAU,QAAA,CAAS,KAAA,CAAM,KAAA,EAAO,cAAc,KAAK,CAAA;AAAA,IAC5D,CAAC,CAAA;;0BAhCCC,kBAAA,CAAmD,MAAA,EAAA;AAAA,QAA5C,OAAKC,cAAA,CAAEC,KAAA,CAAA,GAAA,CAAA,CAAI,GAAC,CAAA;AAAA,QAAI,WAAQ,WAAA,CAAA;AAAA;;;;;;;"}