/**
 * Skipped minification because the original files appears to be already minified.
 * Original file: /npm/@orama/highlight@0.1.9/dist/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
var l={WHOLE_WORD_MATCH:"wholeWordMatch",PARTIAL_MATCH:"partialMatch",PARTIAL_MATCH_FULL_WORD:"partialMatchFullWord"},s={caseSensitive:!1,strategy:l.PARTIAL_MATCH,HTMLTag:"mark",CSSClass:"orama-highlight"},M=class{options;_positions=[];_HTML="";_searchTerm="";_originalText="";constructor(t=s){this.options={...s,...t}}highlight(t,e){if(this._searchTerm=e??"",this._originalText=t??"",!this._searchTerm||!this._originalText)return this._positions=[],this._HTML=this._originalText,this;let h=this.options.HTMLTag??s.HTMLTag,r=this.options.CSSClass??s.CSSClass,n=this.options.caseSensitive??s.caseSensitive,o=this.options.strategy??s.strategy,p=n?"g":"gi",c=this.escapeRegExp(n?this._searchTerm:this._searchTerm.toLowerCase()).trim().split(/\s+/).join("|"),i;if(o===l.WHOLE_WORD_MATCH)i=new RegExp(`\\b${c}\\b`,p);else if(o===l.PARTIAL_MATCH)i=new RegExp(c,p);else if(o===l.PARTIAL_MATCH_FULL_WORD)i=new RegExp(`\\b[^\\s]*(${c})[^\\s]*\\b`,p);else throw new Error("Invalid highlighter strategy");let x=[],a=[],g,T=0,H=-1;for(;(g=i.exec(this._originalText))!==null&&i.lastIndex!==H;){H=i.lastIndex;let _=g.index,u=_+g[0].length-1;x.push({start:_,end:u}),a.push(this._originalText.slice(T,_)),a.push(`<${h} class="${r}">${g[0]}</${h}>`),T=u+1}return a.push(this._originalText.slice(T)),this._positions=x,this._HTML=a.join(""),this}trim(t,e=!0){if(this._positions.length===0)return`${this._HTML.substring(0,t)}${e?"...":""}`;if(this._originalText.length<=t)return this._HTML;let h=this._positions[0].start,r=Math.max(h-Math.floor(t/2),0),n=Math.min(r+t,this._originalText.length),o=`${r===0||!e?"":"..."}${this._originalText.slice(r,n)}${n<this._originalText.length&&e?"...":""}`;return this.highlight(o,this._searchTerm),this._HTML}get positions(){return this._positions}get HTML(){return this._HTML}escapeRegExp(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}};export{M as Highlight,l as highlightStrategy};
//# sourceMappingURL=index.js.map