vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 3.23 kB
Source Map (JSON)
{"version":3,"file":"highlight.vue2.cjs","sources":["../../../components/highlight/highlight.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nimport { useNameHelper, useProps } from '@vexip-ui/config'\nimport { highlightProps } from './props'\n\ndefineOptions({ name: 'Highlight' })\n\nconst _props = defineProps(highlightProps)\nconst props = useProps('highlight', _props, {\n content: {\n default: '',\n static: true,\n },\n keyWords: {\n default: () => [],\n static: true,\n },\n ignoreCase: false,\n})\n\nconst nh = useNameHelper('highlight')\n\nconst splitRE = computed(() => {\n const keyWords = props.keyWords?.filter(Boolean)\n\n if (!keyWords?.length) {\n return null\n }\n\n return new RegExp(\n `(${keyWords.sort((p, n) => n.length - p.length).join('|')})`,\n `${props.ignoreCase ? 'i' : ''}g`,\n )\n})\nconst renderTexts = computed(() => {\n if (!splitRE.value || !props.content) {\n return [{ isKey: false, text: props.content }]\n }\n\n return props.content.split(splitRE.value).map(text => {\n return { isKey: splitRE.value!.test(text), text }\n })\n})\n</script>\n\n<template>\n <div :class=\"[nh.b(), nh.bs('vars'), props.inherit && nh.bm('inherit')]\">\n <template v-for=\"(item, index) in renderTexts\" :key=\"index\">\n <span v-if=\"item.isKey\" :class=\"nh.be('key-word')\">\n <slot name=\"light\" :text=\"item.text\">\n {{ item.text }}\n </slot>\n </span>\n <span v-else>\n <slot :text=\"item.text\">\n {{ item.text }}\n </slot>\n </span>\n </template>\n </div>\n</template>\n"],"names":["_props","__props","props","useProps","nh","useNameHelper","splitRE","computed","keyWords","_a","p","n","renderTexts","text","_createElementBlock","_normalizeClass","_unref","_openBlock","_Fragment","_renderList","item","index","_renderSlot","_ctx","_createTextVNode","_toDisplayString","_hoisted_1"],"mappings":"8LAQA,MAAMA,EAASC,EACTC,EAAQC,EAAAA,SAAS,YAAaH,EAAQ,CAC1C,QAAS,CACP,QAAS,GACT,OAAQ,EACV,EACA,SAAU,CACR,QAAS,IAAM,CAAC,EAChB,OAAQ,EACV,EACA,WAAY,EAAA,CACb,EAEKI,EAAKC,gBAAc,WAAW,EAE9BC,EAAUC,EAAAA,SAAS,IAAM,OAC7B,MAAMC,GAAWC,EAAAP,EAAM,WAAN,YAAAO,EAAgB,OAAO,SAEpC,OAACD,GAAA,MAAAA,EAAU,OAIR,IAAI,OACT,IAAIA,EAAS,KAAK,CAACE,EAAGC,IAAMA,EAAE,OAASD,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,IAC1D,GAAGR,EAAM,WAAa,IAAM,EAAE,GAChC,EANS,IAMT,CACD,EACKU,EAAcL,EAAAA,SAAS,IACvB,CAACD,EAAQ,OAAS,CAACJ,EAAM,QACpB,CAAC,CAAE,MAAO,GAAO,KAAMA,EAAM,QAAS,EAGxCA,EAAM,QAAQ,MAAMI,EAAQ,KAAK,EAAE,IAAYO,IAC7C,CAAE,MAAOP,EAAQ,MAAO,KAAKO,CAAI,EAAG,KAAAA,CAAK,EACjD,CACF,8BAICC,EAAA,mBAaM,MAAA,CAbA,MAAQC,EAAAA,eAAA,CAAAC,QAAAZ,CAAA,EAAG,IAAKY,QAAEZ,CAAA,EAAC,GAAE,MAAA,EAAUY,EAAAA,SAAM,SAAWA,EAAA,MAAAZ,CAAA,EAAG,GAAE,SAAA,CAAA,CAAA,CAAA,IACzDa,EAAAA,UAAA,EAAA,EAAAH,EAWW,mBAAAI,WAXuB,KAAAC,EAAA,WAAAP,EAAA,MAAhB,CAAAQ,EAAMC,wDAA6BA,GAAK,CAC5CD,EAAK,qBAAjBN,EAAAA,mBAIO,OAAA,OAJkB,MAAKC,EAAE,eAAAC,EAAA,MAAEZ,CAAA,EAAC,GAAE,UAAA,CAAA,CAAA,GACnCkB,aAEOC,EAAA,OAAA,QAAA,CAFa,KAAMH,EAAK,IAAA,EAA/B,IAEO,CADFI,EAAAA,gBAAAC,EAAA,gBAAAL,EAAK,IAAI,EAAA,CAAA,wBAGhBN,EAAAA,mBAIO,OAAAY,EAAA,CAHLJ,aAEOC,EAAA,OAAA,UAAA,CAFA,KAAMH,EAAK,IAAA,EAAlB,IAEO,CADFI,EAAAA,gBAAAC,EAAA,gBAAAL,EAAK,IAAI,EAAA,CAAA"}