vue-highlight-words
Version:
Vue component to highlight words within a larger body of text
8 lines (7 loc) • 1.45 kB
JavaScript
/*!
* vue-highlight-words v3.0.1
* © 2022 Yichang Liu
* LICENCE: MIT
*/
import{findAll as t}from"highlight-words-core";import{h as e}from"vue";const i=(i,s)=>{const n=function(t,e){let i=-1,s="",n={};const{textToHighlight:h,highlightClassName:r,highlightStyle:o=a,activeIndex:l,activeClassName:c,activeStyle:u=a}=t;return e.map(((t,e)=>{const a=h.substr(t.start,t.end-t.start);if(t.highlight){i++;const h=i===+(l||-1);s=`${r} ${h?c:""}`,n=!0===h&&null!=u?{...o,...u}:o;return{chunk:t,text:a,attrs:{class:s,key:e,style:n,highlightIndex:i}}}return{chunk:t,text:a}}))}(i,t({autoEscape:i.autoEscape,caseSensitive:i.caseSensitive,findChunks:i.findChunks,sanitize:i.sanitize,searchWords:i.searchWords,textToHighlight:i.textToHighlight})),h=s.slots;return h.default?h.default&&h.default(n):e("span",{...s.attrs},n.map((({chunk:t,text:i,attrs:a})=>t.highlight?e("mark",a,[i]):i)))},a={};i.props={activeClassName:String,activeIndex:Number,activeStyle:Object,autoEscape:Boolean,caseSensitive:{type:Boolean,defualt:!1},findChunks:Function,custom:{type:Boolean,default:!1},highlightClassName:String,highlightStyle:Object,sanitize:Function,searchWords:{type:Array,validator:t=>t.every((t=>"string"==typeof t)),required:!0},textToHighlight:{type:String,required:!0}};const s=i;function n(t,e={name:""}){t.component(e.name||"VueHighlightWords",s)}export{s as VueHighlightWords,s as default,n as install};
//# sourceMappingURL=vue-highlight-words.esm.min.js.map