UNPKG

angular-instantsearch

Version:

Lightning-fast search for Angular apps, by Algolia.

54 lines 6.38 kB
import { Component, Input, Inject, forwardRef, Optional, SkipSelf, } from '@angular/core'; import { NgAisInstantSearch } from '../instantsearch/instantsearch'; import indexWidget from 'instantsearch.js/es/widgets/index/index'; import { isPlatformBrowser } from '@angular/common'; export class NgAisIndex { constructor( // public API does not include SkipSelf, but the index widget should accept parents, avoiding itself. parentIndex, instantSearchInstance) { this.parentIndex = parentIndex; this.instantSearchInstance = instantSearchInstance; } get parent() { if (this.parentIndex) { return this.parentIndex; } return this.instantSearchInstance; } createWidget() { this.widget = Object.assign(Object.assign({}, indexWidget({ indexName: this.indexName, indexId: this.indexId, })), { $$widgetType: 'ais.index' }); } addWidgets(widgets) { this.widget.addWidgets(widgets); } removeWidgets(widgets) { this.widget.removeWidgets(widgets); } ngOnInit() { this.createWidget(); this.parent.addWidgets([this.widget]); } ngOnDestroy() { if (isPlatformBrowser(this.instantSearchInstance.platformId)) { this.parent.removeWidgets([this.widget]); } } } NgAisIndex.decorators = [ { type: Component, args: [{ selector: 'ais-index', template: `<ng-content></ng-content>` },] } ]; NgAisIndex.ctorParameters = () => [ { type: NgAisIndex, decorators: [{ type: SkipSelf }, { type: Inject, args: [forwardRef(() => NgAisIndex),] }, { type: Optional }] }, { type: NgAisInstantSearch, decorators: [{ type: Inject, args: [forwardRef(() => NgAisInstantSearch),] }] } ]; NgAisIndex.propDecorators = { indexName: [{ type: Input }], indexId: [{ type: Input }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtd2lkZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2luZGV4LXdpZGdldC9pbmRleC13aWRnZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFVBQVUsRUFDVixRQUFRLEVBQ1IsUUFBUSxHQUdULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sV0FHTixNQUFNLHlDQUF5QyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBTXBELE1BQU0sT0FBTyxVQUFVO0lBTXJCO0lBQ0UscUdBQXFHO0lBSTlGLFdBQXVCLEVBRXZCLHFCQUF5QztRQUZ6QyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUV2QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQW9CO0lBQy9DLENBQUM7SUFFSixJQUFJLE1BQU07UUFDUixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQ3pCO1FBQ0QsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDcEMsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsTUFBTSxtQ0FDTixXQUFXLENBQUM7WUFDYixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3RCLENBQUMsS0FDRixZQUFZLEVBQUUsV0FBVyxHQUMxQixDQUFDO0lBQ0osQ0FBQztJQUVNLFVBQVUsQ0FBQyxPQUFpQjtRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sYUFBYSxDQUFDLE9BQWlCO1FBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUNNLFdBQVc7UUFDaEIsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDNUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUMxQztJQUNILENBQUM7OztZQXJERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLFFBQVEsRUFBRSwyQkFBMkI7YUFDdEM7OztZQVl1QixVQUFVLHVCQUg3QixRQUFRLFlBQ1IsTUFBTSxTQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FDbkMsUUFBUTtZQXJCSixrQkFBa0IsdUJBdUJ0QixNQUFNLFNBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDOzs7d0JBWDdDLEtBQUs7c0JBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIEluamVjdCxcbiAgZm9yd2FyZFJlZixcbiAgT3B0aW9uYWwsXG4gIFNraXBTZWxmLFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXaWRnZXQgfSBmcm9tICdpbnN0YW50c2VhcmNoLmpzL2VzL3R5cGVzJztcbmltcG9ydCB7IE5nQWlzSW5zdGFudFNlYXJjaCB9IGZyb20gJy4uL2luc3RhbnRzZWFyY2gvaW5zdGFudHNlYXJjaCc7XG5pbXBvcnQgaW5kZXhXaWRnZXQsIHtcbiAgSW5kZXhXaWRnZXQsXG4gIEluZGV4V2lkZ2V0UGFyYW1zLFxufSBmcm9tICdpbnN0YW50c2VhcmNoLmpzL2VzL3dpZGdldHMvaW5kZXgvaW5kZXgnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhaXMtaW5kZXgnLFxuICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxufSlcbmV4cG9ydCBjbGFzcyBOZ0Fpc0luZGV4IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwdWJsaWMgaW5kZXhOYW1lOiBJbmRleFdpZGdldFBhcmFtc1snaW5kZXhOYW1lJ107XG4gIEBJbnB1dCgpIHB1YmxpYyBpbmRleElkPzogSW5kZXhXaWRnZXRQYXJhbXNbJ2luZGV4SWQnXTtcblxuICBwdWJsaWMgd2lkZ2V0PzogSW5kZXhXaWRnZXQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLy8gcHVibGljIEFQSSBkb2VzIG5vdCBpbmNsdWRlIFNraXBTZWxmLCBidXQgdGhlIGluZGV4IHdpZGdldCBzaG91bGQgYWNjZXB0IHBhcmVudHMsIGF2b2lkaW5nIGl0c2VsZi5cbiAgICBAU2tpcFNlbGYoKVxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBOZ0Fpc0luZGV4KSlcbiAgICBAT3B0aW9uYWwoKVxuICAgIHB1YmxpYyBwYXJlbnRJbmRleDogTmdBaXNJbmRleCxcbiAgICBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gTmdBaXNJbnN0YW50U2VhcmNoKSlcbiAgICBwdWJsaWMgaW5zdGFudFNlYXJjaEluc3RhbmNlOiBOZ0Fpc0luc3RhbnRTZWFyY2hcbiAgKSB7fVxuXG4gIGdldCBwYXJlbnQoKSB7XG4gICAgaWYgKHRoaXMucGFyZW50SW5kZXgpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmVudEluZGV4O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pbnN0YW50U2VhcmNoSW5zdGFuY2U7XG4gIH1cblxuICBjcmVhdGVXaWRnZXQoKSB7XG4gICAgdGhpcy53aWRnZXQgPSB7XG4gICAgICAuLi5pbmRleFdpZGdldCh7XG4gICAgICAgIGluZGV4TmFtZTogdGhpcy5pbmRleE5hbWUsXG4gICAgICAgIGluZGV4SWQ6IHRoaXMuaW5kZXhJZCxcbiAgICAgIH0pLFxuICAgICAgJCR3aWRnZXRUeXBlOiAnYWlzLmluZGV4JyxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGFkZFdpZGdldHMod2lkZ2V0czogV2lkZ2V0W10pIHtcbiAgICB0aGlzLndpZGdldC5hZGRXaWRnZXRzKHdpZGdldHMpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZVdpZGdldHMod2lkZ2V0czogV2lkZ2V0W10pIHtcbiAgICB0aGlzLndpZGdldC5yZW1vdmVXaWRnZXRzKHdpZGdldHMpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jcmVhdGVXaWRnZXQoKTtcbiAgICB0aGlzLnBhcmVudC5hZGRXaWRnZXRzKFt0aGlzLndpZGdldF0pO1xuICB9XG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5pbnN0YW50U2VhcmNoSW5zdGFuY2UucGxhdGZvcm1JZCkpIHtcbiAgICAgIHRoaXMucGFyZW50LnJlbW92ZVdpZGdldHMoW3RoaXMud2lkZ2V0XSk7XG4gICAgfVxuICB9XG59XG4iXX0=