angular-instantsearch
Version:
Lightning-fast search for Angular apps, by Algolia.
50 lines • 6.7 kB
JavaScript
import { Input } from '@angular/core';
import { isPlatformBrowser } from '@angular/common';
import { bem, noop } from './utils';
export class TypedBaseWidget {
constructor(widgetName) {
this.updateState = (state, isFirstRendering) => {
if (isFirstRendering) {
Promise.resolve().then(() => {
this.state = state;
});
}
else {
this.state = state;
}
};
this.cx = bem(widgetName);
}
get parent() {
if (this.parentIndex) {
return this.parentIndex;
}
return this.instantSearchInstance;
}
createWidget(connector, options, additionalWidgetProperties = {}) {
this.widget = Object.assign(Object.assign({}, connector(this.updateState, noop)(options)), additionalWidgetProperties);
}
ngOnInit() {
this.parent.addWidgets([this.widget]);
}
ngOnDestroy() {
if (isPlatformBrowser(this.instantSearchInstance.platformId)) {
this.parent.removeWidgets([this.widget]);
}
}
/**
* Helper to generate class names for an item
* @param item element to generate a class name for
*/
getItemClass(item) {
const className = this.cx('item');
if (item.isRefined) {
return `${className} ${this.cx('item', 'selected')}`;
}
return className;
}
}
TypedBaseWidget.propDecorators = {
autoHideContainer: [{ type: Input }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWQtYmFzZS13aWRnZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZWQtYmFzZS13aWRnZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFnQnBDLE1BQU0sT0FBZ0IsZUFBZTtJQVluQyxZQUFzQixVQUFrQjtRQWdDakMsZ0JBQVcsR0FHZCxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxFQUFFO1lBQzlCLElBQUksZ0JBQWdCLEVBQUU7Z0JBQ3BCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDckIsQ0FBQyxDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQzthQUNwQjtRQUNILENBQUMsQ0FBQztRQTFDQSxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUN6QjtRQUNELE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ3BDLENBQUM7SUFFTSxZQUFZLENBQ2pCLFNBQTBELEVBQzFELE9BQXlCLEVBQ3pCLDZCQUF5RCxFQUFFO1FBRTNELElBQUksQ0FBQyxNQUFNLG1DQUNOLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQWlCLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FDdkQsMEJBQTBCLENBQzlCLENBQUM7SUFDSixDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDNUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUMxQztJQUNILENBQUM7SUFlRDs7O09BR0c7SUFDSSxZQUFZLENBQUMsSUFBNkI7UUFDL0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVsQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsT0FBTyxHQUFHLFNBQVMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDO1NBQ3REO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQzs7O2dDQWpFQSxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBiZW0sIG5vb3AgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IE5nQWlzSW5zdGFudFNlYXJjaCB9IGZyb20gJy4vaW5zdGFudHNlYXJjaC9pbnN0YW50c2VhcmNoJztcbmltcG9ydCB7IE5nQWlzSW5kZXggfSBmcm9tICcuL2luZGV4LXdpZGdldC9pbmRleC13aWRnZXQnO1xuaW1wb3J0IHtcbiAgV2lkZ2V0LFxuICBXaWRnZXREZXNjcmlwdGlvbixcbiAgQ29ubmVjdG9yLFxuICBVbm1vdW50ZXIsXG4gIFJlbmRlcmVyLFxuICBVbmtub3duV2lkZ2V0UGFyYW1zLFxufSBmcm9tICdpbnN0YW50c2VhcmNoLmpzL2VzL3R5cGVzJztcblxuZXhwb3J0IHsgV2lkZ2V0LCBDb25uZWN0b3IgfTtcblxudHlwZSBBZGRpdGlvbmFsV2lkZ2V0UHJvcGVydGllcyA9IFBhcnRpYWw8V2lkZ2V0PFdpZGdldERlc2NyaXB0aW9uPj47XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUeXBlZEJhc2VXaWRnZXQ8XG4gIFRXaWRnZXREZXNjcmlwdGlvbiBleHRlbmRzIFdpZGdldERlc2NyaXB0aW9uLFxuICBUQ29ubmVjdG9yUGFyYW1zIGV4dGVuZHMgVW5rbm93bldpZGdldFBhcmFtc1xuPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHVibGljIGF1dG9IaWRlQ29udGFpbmVyPzogYm9vbGVhbjtcblxuICBwdWJsaWMgd2lkZ2V0PzogV2lkZ2V0O1xuICBwdWJsaWMgc3RhdGU/OiBUV2lkZ2V0RGVzY3JpcHRpb25bJ3JlbmRlclN0YXRlJ107XG4gIHB1YmxpYyBjeDogUmV0dXJuVHlwZTx0eXBlb2YgYmVtPjtcbiAgcHVibGljIGFic3RyYWN0IGluc3RhbnRTZWFyY2hJbnN0YW5jZTogTmdBaXNJbnN0YW50U2VhcmNoO1xuICBwdWJsaWMgYWJzdHJhY3QgcGFyZW50SW5kZXg/OiBOZ0Fpc0luZGV4O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcih3aWRnZXROYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLmN4ID0gYmVtKHdpZGdldE5hbWUpO1xuICB9XG5cbiAgZ2V0IHBhcmVudCgpIHtcbiAgICBpZiAodGhpcy5wYXJlbnRJbmRleCkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyZW50SW5kZXg7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmluc3RhbnRTZWFyY2hJbnN0YW5jZTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVXaWRnZXQoXG4gICAgY29ubmVjdG9yOiBDb25uZWN0b3I8VFdpZGdldERlc2NyaXB0aW9uLCBUQ29ubmVjdG9yUGFyYW1zPixcbiAgICBvcHRpb25zOiBUQ29ubmVjdG9yUGFyYW1zLFxuICAgIGFkZGl0aW9uYWxXaWRnZXRQcm9wZXJ0aWVzOiBBZGRpdGlvbmFsV2lkZ2V0UHJvcGVydGllcyA9IHt9XG4gICkge1xuICAgIHRoaXMud2lkZ2V0ID0ge1xuICAgICAgLi4uY29ubmVjdG9yKHRoaXMudXBkYXRlU3RhdGUsIG5vb3AgYXMgVW5tb3VudGVyKShvcHRpb25zKSxcbiAgICAgIC4uLmFkZGl0aW9uYWxXaWRnZXRQcm9wZXJ0aWVzLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wYXJlbnQuYWRkV2lkZ2V0cyhbdGhpcy53aWRnZXRdKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5pbnN0YW50U2VhcmNoSW5zdGFuY2UucGxhdGZvcm1JZCkpIHtcbiAgICAgIHRoaXMucGFyZW50LnJlbW92ZVdpZGdldHMoW3RoaXMud2lkZ2V0XSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZVN0YXRlOiBSZW5kZXJlcjxcbiAgICBUV2lkZ2V0RGVzY3JpcHRpb25bJ3JlbmRlclN0YXRlJ10sXG4gICAgVENvbm5lY3RvclBhcmFtc1xuICA+ID0gKHN0YXRlLCBpc0ZpcnN0UmVuZGVyaW5nKSA9PiB7XG4gICAgaWYgKGlzRmlyc3RSZW5kZXJpbmcpIHtcbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnN0YXRlID0gc3RhdGU7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogSGVscGVyIHRvIGdlbmVyYXRlIGNsYXNzIG5hbWVzIGZvciBhbiBpdGVtXG4gICAqIEBwYXJhbSBpdGVtIGVsZW1lbnQgdG8gZ2VuZXJhdGUgYSBjbGFzcyBuYW1lIGZvclxuICAgKi9cbiAgcHVibGljIGdldEl0ZW1DbGFzcyhpdGVtOiB7IGlzUmVmaW5lZD86IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgY29uc3QgY2xhc3NOYW1lID0gdGhpcy5jeCgnaXRlbScpO1xuXG4gICAgaWYgKGl0ZW0uaXNSZWZpbmVkKSB7XG4gICAgICByZXR1cm4gYCR7Y2xhc3NOYW1lfSAke3RoaXMuY3goJ2l0ZW0nLCAnc2VsZWN0ZWQnKX1gO1xuICAgIH1cblxuICAgIHJldHVybiBjbGFzc05hbWU7XG4gIH1cbn1cbiJdfQ==