UNPKG

vue-highlight-words

Version:

Vue component to highlight words within a larger body of text

8 lines (7 loc) 3.61 kB
/*! * vue-highlight-words v3.0.1 * © 2022 Yichang Liu * LICENCE: MIT */ var vueHighlightWords=function(e,t){"use strict";var n={exports:{}};n.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={exports:{},id:i,loaded:!1};return e[i].call(r.exports,r,r.exports,n),r.loaded=!0,r.exports}return n.m=e,n.c=t,n.p="",n(0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var i=n(2);Object.defineProperty(t,"combineChunks",{enumerable:!0,get:function(){return i.combineChunks}}),Object.defineProperty(t,"fillInChunks",{enumerable:!0,get:function(){return i.fillInChunks}}),Object.defineProperty(t,"findAll",{enumerable:!0,get:function(){return i.findAll}}),Object.defineProperty(t,"findChunks",{enumerable:!0,get:function(){return i.findChunks}})},function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.findAll=function(e){var t=e.autoEscape,s=e.caseSensitive,a=void 0!==s&&s,u=e.findChunks,o=void 0===u?i:u,h=e.sanitize,l=e.searchWords,c=e.textToHighlight;return r({chunksToHighlight:n({chunks:o({autoEscape:t,caseSensitive:a,sanitize:h,searchWords:l,textToHighlight:c})}),totalLength:c?c.length:0})};var n=t.combineChunks=function(e){var t=e.chunks;return t=t.sort((function(e,t){return e.start-t.start})).reduce((function(e,t){if(0===e.length)return[t];var n=e.pop();if(t.start<=n.end){var i=Math.max(n.end,t.end);e.push({highlight:!1,start:n.start,end:i})}else e.push(n,t);return e}),[])},i=function(e){var t=e.autoEscape,n=e.caseSensitive,i=e.sanitize,r=void 0===i?s:i,a=e.searchWords,u=e.textToHighlight;return u=r(u),a.filter((function(e){return e})).reduce((function(e,i){i=r(i),t&&(i=i.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"));for(var s=new RegExp(i,n?"g":"gi"),a=void 0;a=s.exec(u);){var o=a.index,h=s.lastIndex;h>o&&e.push({highlight:!1,start:o,end:h}),a.index===s.lastIndex&&s.lastIndex++}return e}),[])};t.findChunks=i;var r=t.fillInChunks=function(e){var t=e.chunksToHighlight,n=e.totalLength,i=[],r=function(e,t,n){t-e>0&&i.push({start:e,end:t,highlight:n})};if(0===t.length)r(0,n,!1);else{var s=0;t.forEach((function(e){r(s,e.start,!1),r(e.start,e.end,!0),s=e.end})),r(s,n,!1)}return i};function s(e){return e}}]);const i=(e,i)=>{const s=function(e,t){let n=-1,i="",s={};const{textToHighlight:a,highlightClassName:u,highlightStyle:o=r,activeIndex:h,activeClassName:l,activeStyle:c=r}=e;return t.map(((e,t)=>{const r=a.substr(e.start,e.end-e.start);if(e.highlight){n++;const a=n===+(h||-1);i=`${u} ${a?l:""}`,s=!0===a&&null!=c?{...o,...c}:o;return{chunk:e,text:r,attrs:{class:i,key:t,style:s,highlightIndex:n}}}return{chunk:e,text:r}}))}(e,n.exports.findAll({autoEscape:e.autoEscape,caseSensitive:e.caseSensitive,findChunks:e.findChunks,sanitize:e.sanitize,searchWords:e.searchWords,textToHighlight:e.textToHighlight})),a=i.slots;return a.default?a.default&&a.default(s):t.h("span",{...i.attrs},s.map((({chunk:e,text:n,attrs:i})=>e.highlight?t.h("mark",i,[n]):n)))},r={};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:e=>e.every((e=>"string"==typeof e)),required:!0},textToHighlight:{type:String,required:!0}};const s=i;return e.VueHighlightWords=s,e.default=s,e.install=function(e,t={name:""}){e.component(t.name||"VueHighlightWords",s)},Object.defineProperty(e,"__esModule",{value:!0}),e}({},Vue); //# sourceMappingURL=vue-highlight-words.global.min.js.map