UNPKG

vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

3 lines (2 loc) 1.42 kB
"use strict";const e=require("vue"),i=require("@vexip-ui/config"),g=require("./props.cjs"),h={key:1},d=e.defineComponent({name:"Highlight",__name:"highlight",props:g.highlightProps,setup(a){const u=a,r=i.useProps("highlight",u,{content:{default:"",static:!0},keyWords:{default:()=>[],static:!0},ignoreCase:!1}),o=i.useNameHelper("highlight"),s=e.computed(()=>{var l;const t=(l=r.keyWords)==null?void 0:l.filter(Boolean);return t!=null&&t.length?new RegExp(`(${t.sort((n,c)=>c.length-n.length).join("|")})`,`${r.ignoreCase?"i":""}g`):null}),p=e.computed(()=>!s.value||!r.content?[{isKey:!1,text:r.content}]:r.content.split(s.value).map(t=>({isKey:s.value.test(t),text:t})));return(t,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(o).b(),e.unref(o).bs("vars"),e.unref(r).inherit&&e.unref(o).bm("inherit")])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,(n,c)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:c},[n.isKey?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(e.unref(o).be("key-word"))},[e.renderSlot(t.$slots,"light",{text:n.text},()=>[e.createTextVNode(e.toDisplayString(n.text),1)])],2)):(e.openBlock(),e.createElementBlock("span",h,[e.renderSlot(t.$slots,"default",{text:n.text},()=>[e.createTextVNode(e.toDisplayString(n.text),1)])]))],64))),128))],2))}});module.exports=d; //# sourceMappingURL=highlight.vue2.cjs.map