UNPKG

angular-instantsearch

Version:

Lightning-fast search for Angular apps, by Algolia.

34 lines 3.94 kB
import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { highlight } from 'instantsearch.js/es/helpers'; import { getPropertyByPath } from 'instantsearch.js/es/lib/utils'; export class NgAisHighlight { constructor() { this.tagName = 'mark'; } get content() { const highlightAttributeResult = getPropertyByPath(this.hit._highlightResult, this.attribute); const fallback = getPropertyByPath(this.hit, this.attribute); // @MAJOR drop this custom fallback once it is implemented directly in instantsearch.js v5 if (!highlightAttributeResult && fallback) { return fallback; } return highlight({ attribute: this.attribute, highlightedTagName: this.tagName, hit: this.hit, }); } } NgAisHighlight.decorators = [ { type: Component, args: [{ selector: 'ais-highlight', changeDetection: ChangeDetectionStrategy.OnPush, template: `<span class="ais-Highlight" [innerHtml]="content"></span>` },] } ]; NgAisHighlight.propDecorators = { attribute: [{ type: Input }], hit: [{ type: Input }], tagName: [{ type: Input }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlnaGxpZ2h0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hpZ2hsaWdodC9oaWdobGlnaHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBT2xFLE1BQU0sT0FBTyxjQUFjO0lBTDNCO1FBUVcsWUFBTyxHQUFXLE1BQU0sQ0FBQztJQW9CcEMsQ0FBQztJQWxCQyxJQUFJLE9BQU87UUFDVCxNQUFNLHdCQUF3QixHQUFHLGlCQUFpQixDQUNoRCxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUN6QixJQUFJLENBQUMsU0FBUyxDQUNmLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU3RCwwRkFBMEY7UUFDMUYsSUFBSSxDQUFDLHdCQUF3QixJQUFJLFFBQVEsRUFBRTtZQUN6QyxPQUFPLFFBQVEsQ0FBQztTQUNqQjtRQUVELE9BQU8sU0FBUyxDQUFDO1lBQ2YsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ2hDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztTQUNkLENBQUMsQ0FBQztJQUNMLENBQUM7OztZQTNCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUMvQyxRQUFRLEVBQUUsMkRBQTJEO2FBQ3RFOzs7d0JBRUUsS0FBSztrQkFDTCxLQUFLO3NCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBIaXQgfSBmcm9tICdpbnN0YW50c2VhcmNoLmpzJztcblxuaW1wb3J0IHsgaGlnaGxpZ2h0IH0gZnJvbSAnaW5zdGFudHNlYXJjaC5qcy9lcy9oZWxwZXJzJztcbmltcG9ydCB7IGdldFByb3BlcnR5QnlQYXRoIH0gZnJvbSAnaW5zdGFudHNlYXJjaC5qcy9lcy9saWIvdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhaXMtaGlnaGxpZ2h0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgPHNwYW4gY2xhc3M9XCJhaXMtSGlnaGxpZ2h0XCIgW2lubmVySHRtbF09XCJjb250ZW50XCI+PC9zcGFuPmAsXG59KVxuZXhwb3J0IGNsYXNzIE5nQWlzSGlnaGxpZ2h0IHtcbiAgQElucHV0KCkgYXR0cmlidXRlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGhpdDogUGFydGlhbDxIaXQ+O1xuICBASW5wdXQoKSB0YWdOYW1lOiBzdHJpbmcgPSAnbWFyayc7XG5cbiAgZ2V0IGNvbnRlbnQoKSB7XG4gICAgY29uc3QgaGlnaGxpZ2h0QXR0cmlidXRlUmVzdWx0ID0gZ2V0UHJvcGVydHlCeVBhdGgoXG4gICAgICB0aGlzLmhpdC5faGlnaGxpZ2h0UmVzdWx0LFxuICAgICAgdGhpcy5hdHRyaWJ1dGVcbiAgICApO1xuICAgIGNvbnN0IGZhbGxiYWNrID0gZ2V0UHJvcGVydHlCeVBhdGgodGhpcy5oaXQsIHRoaXMuYXR0cmlidXRlKTtcblxuICAgIC8vIEBNQUpPUiBkcm9wIHRoaXMgY3VzdG9tIGZhbGxiYWNrIG9uY2UgaXQgaXMgaW1wbGVtZW50ZWQgZGlyZWN0bHkgaW4gaW5zdGFudHNlYXJjaC5qcyB2NVxuICAgIGlmICghaGlnaGxpZ2h0QXR0cmlidXRlUmVzdWx0ICYmIGZhbGxiYWNrKSB7XG4gICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhpZ2hsaWdodCh7XG4gICAgICBhdHRyaWJ1dGU6IHRoaXMuYXR0cmlidXRlLFxuICAgICAgaGlnaGxpZ2h0ZWRUYWdOYW1lOiB0aGlzLnRhZ05hbWUsXG4gICAgICBoaXQ6IHRoaXMuaGl0LFxuICAgIH0pO1xuICB9XG59XG4iXX0=