angular-instantsearch
Version:
Lightning-fast search for Angular apps, by Algolia.
34 lines • 3.94 kB
JavaScript
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=