{"version":3,"file":"ng-select-ng-option-highlight.mjs","sources":["../../../src/ng-option-highlight/lib/utils.ts","../../../src/ng-option-highlight/lib/ng-option-highlight.directive.ts","../../../src/ng-option-highlight/public-api.ts","../../../src/ng-option-highlight/ng-select-ng-option-highlight.ts"],"sourcesContent":["export function isDefined(value: any) {\n    return value !== undefined && value !== null;\n}\n\nexport function escapeRegExp(str: string): string {\n    return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}","import { afterNextRender, computed, effect, inject, input, signal, Directive, ElementRef, Renderer2 } from '@angular/core';\nimport { escapeRegExp, isDefined } from './utils';\n\n@Directive({\n\tselector: '[ngOptionHighlight]',\n\tstandalone: true,\n})\nexport class NgOptionHighlightDirective {\n\n\t// Dependencies\n\tprivate readonly element = inject(ElementRef<HTMLElement>).nativeElement;\n\tprivate readonly renderer = inject(Renderer2);\n\n\t// Signals\n\tprivate readonly label = signal<string>('');\n\n\t// Inputs\n\tpublic readonly term = input<string>('', { alias: 'ngOptionHighlight' });\n\n\t// Computed properties\n\tprivate readonly canHighlight = computed(\n\t\t() => isDefined(this.term()) && isDefined(this.label()) && this.label() !== '');\n\n\t// Update innerHTML using effect\n\t_effectUpdateInnerHtml = effect(() => {\n\t\tif (!this.canHighlight()) {\n\t\t\treturn;\n\t\t}\n\t\tthis._highlightLabel();\n\t});\n\n\t_ = afterNextRender(() => {\n\t\tthis.label.set(this.element.innerHTML);\n\t\t// 1st label highlight triggers from here\n\t\tthis._highlightLabel();\n\t});\n\n\tprivate _highlightLabel() {\n\t\tconst label = this.label();\n\t\tif (!this.term()) {\n\t\t\tthis._setInnerHtml(label);\n\t\t\treturn;\n\t\t}\n\n\t\tconst alternationString = escapeRegExp(this.term()).replace(' ', '|');\n\t\tconst termRegex = new RegExp(alternationString, 'gi');\n\t\tthis._setInnerHtml(label.replace(termRegex, `<span class=\\\"highlighted\\\">$&</span>`));\n\t}\n\n\tprivate _setInnerHtml(html) {\n\t\tthis.renderer.setProperty(this.element, 'innerHTML', html);\n\t}\n}","/*\n * Public API Surface of ng-option-highlight\n */\n\nexport * from './lib/ng-option-highlight.directive';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAAM,SAAU,SAAS,CAAC,KAAU,EAAA;AAChC,IAAA,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;AAChD;AAEM,SAAU,YAAY,CAAC,GAAW,EAAA;IACpC,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;AACrD;;MCCa,0BAA0B,CAAA;AAJvC,IAAA,WAAA,GAAA;;QAOkB,IAAA,CAAA,OAAO,GAAG,MAAM,EAAC,UAAuB,EAAC,CAAC,aAAa;AACvD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;;AAG5B,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAS,EAAE,4EAAC;;QAG3B,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,EAAE,4EAAI,KAAK,EAAE,mBAAmB,EAAA,CAAG;;AAGvD,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CACvC,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,mFAAC;;AAGhF,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,MAAK;AACpC,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;gBACzB;YACD;YACA,IAAI,CAAC,eAAe,EAAE;AACvB,QAAA,CAAC,6FAAC;AAEF,QAAA,IAAA,CAAA,CAAC,GAAG,eAAe,CAAC,MAAK;YACxB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;;YAEtC,IAAI,CAAC,eAAe,EAAE;AACvB,QAAA,CAAC,CAAC;AAiBF,IAAA;IAfQ,eAAe,GAAA;AACtB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YACzB;QACD;AAEA,QAAA,MAAM,iBAAiB,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;QACrE,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,iBAAiB,EAAE,IAAI,CAAC;AACrD,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAA,qCAAA,CAAuC,CAAC,CAAC;IACtF;AAEQ,IAAA,aAAa,CAAC,IAAI,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC;IAC3D;8GA5CY,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,iBAAA;;;ACND;;AAEG;;ACFH;;AAEG;;;;"}