angular-instantsearch
Version:
Lightning-fast search for Angular apps, by Algolia.
49 lines • 6.82 kB
JavaScript
import { Input } from '@angular/core';
import { isPlatformBrowser } from '@angular/common';
import { bem, noop } from './utils';
export class BaseWidget {
constructor(widgetName) {
this.state = {};
this.updateState = (state, isFirstRendering) => {
if (isFirstRendering) {
return Promise.resolve().then(() => {
this.state = state;
});
}
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;
}
}
BaseWidget.propDecorators = {
autoHideContainer: [{ type: Input }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS13aWRnZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmFzZS13aWRnZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFnQnBDLE1BQU0sT0FBZ0IsVUFBVTtJQVU5QixZQUFZLFVBQWtCO1FBTHZCLFVBQUssR0FBWSxFQUFZLENBQUM7UUFxQzlCLGdCQUFXLEdBQUcsQ0FDbkIsS0FBYSxFQUNiLGdCQUF5QixFQUNILEVBQUU7WUFDeEIsSUFBSSxnQkFBZ0IsRUFBRTtnQkFDcEIsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLENBQUMsQ0FBQyxDQUFDO2FBQ0o7WUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNyQixDQUFDLENBQUM7UUExQ0EsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDekI7UUFDRCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNwQyxDQUFDO0lBRU0sWUFBWSxDQUNqQixTQUFvQixFQUNwQixVQUFrQixFQUFFLEVBQ3BCLDZCQUFxQyxFQUFFO1FBRXZDLElBQUksQ0FBQyxNQUFNLG1DQUNOLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUMxQywwQkFBMEIsQ0FDOUIsQ0FBQztJQUNKLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM1RCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQzFDO0lBQ0gsQ0FBQztJQWVEOzs7T0FHRztJQUNJLFlBQVksQ0FBQyxJQUE2QjtRQUMvQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWxDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixPQUFPLEdBQUcsU0FBUyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUM7U0FDdEQ7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDOzs7Z0NBakVBLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGJlbSwgbm9vcCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgTmdBaXNJbnN0YW50U2VhcmNoIH0gZnJvbSAnLi9pbnN0YW50c2VhcmNoL2luc3RhbnRzZWFyY2gnO1xuaW1wb3J0IHsgTmdBaXNJbmRleCB9IGZyb20gJy4vaW5kZXgtd2lkZ2V0L2luZGV4LXdpZGdldCc7XG5pbXBvcnQgeyBXaWRnZXQgYXMgVyB9IGZyb20gJ2luc3RhbnRzZWFyY2guanMvZXMvdHlwZXMnO1xuaW1wb3J0IHsgSW5kZXhXaWRnZXQgfSBmcm9tICdpbnN0YW50c2VhcmNoLmpzL2VzL3dpZGdldHMvaW5kZXgvaW5kZXgnO1xuXG5leHBvcnQgdHlwZSBXaWRnZXQgPSBXIHwgSW5kZXhXaWRnZXQ7XG5cbi8vIFRPRE86IHVzZSBDb25uZWN0b3IgdHlwZSBmcm9tIEluc3RhbnRTZWFyY2guIE5vdCB5ZXQgcG9zc2libGUgbm93LFxuLy8gc2luY2Ugbm9uLXRzIGNvbm5lY3RvcnMgY2FuJ3QgaGF2ZSBnZW5lcmljcyBsaWtlIENvbm5lY3RvciBoYXMsXG4vLyBhcyB3ZWxsIGFzIHNvbWV0aW1lcyBiZWluZyBub3QgYWNjdXJhdGUgZW5vdWdoIC8gbWlzc2luZyBrZXlzLlxuZXhwb3J0IHR5cGUgQ29ubmVjdG9yID0gKFxuICByZW5kZXJGbjogKHN0YXRlOiBvYmplY3QsIGlzRmlyc3RSZW5kZXJpbmc6IGJvb2xlYW4pID0+IHZvaWQsXG4gIHVubW91bnRGbjogKCkgPT4gdm9pZFxuKSA9PiAod2lkZ2V0T3B0aW9ucz86IG9iamVjdCkgPT4gV2lkZ2V0O1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVdpZGdldDxUU3RhdGUgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9PlxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHVibGljIGF1dG9IaWRlQ29udGFpbmVyPzogYm9vbGVhbjtcblxuICBwdWJsaWMgd2lkZ2V0PzogV2lkZ2V0O1xuICBwdWJsaWMgc3RhdGU/OiBUU3RhdGUgPSB7fSBhcyBUU3RhdGU7XG4gIHB1YmxpYyBjeDogUmV0dXJuVHlwZTx0eXBlb2YgYmVtPjtcbiAgcHVibGljIGFic3RyYWN0IGluc3RhbnRTZWFyY2hJbnN0YW5jZTogTmdBaXNJbnN0YW50U2VhcmNoO1xuICBwdWJsaWMgYWJzdHJhY3QgcGFyZW50SW5kZXg/OiBOZ0Fpc0luZGV4O1xuXG4gIGNvbnN0cnVjdG9yKHdpZGdldE5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuY3ggPSBiZW0od2lkZ2V0TmFtZSk7XG4gIH1cblxuICBnZXQgcGFyZW50KCkge1xuICAgIGlmICh0aGlzLnBhcmVudEluZGV4KSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJlbnRJbmRleDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaW5zdGFudFNlYXJjaEluc3RhbmNlO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZVdpZGdldChcbiAgICBjb25uZWN0b3I6IENvbm5lY3RvcixcbiAgICBvcHRpb25zOiBvYmplY3QgPSB7fSxcbiAgICBhZGRpdGlvbmFsV2lkZ2V0UHJvcGVydGllczogb2JqZWN0ID0ge31cbiAgKSB7XG4gICAgdGhpcy53aWRnZXQgPSB7XG4gICAgICAuLi5jb25uZWN0b3IodGhpcy51cGRhdGVTdGF0ZSwgbm9vcCkob3B0aW9ucyksXG4gICAgICAuLi5hZGRpdGlvbmFsV2lkZ2V0UHJvcGVydGllcyxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMucGFyZW50LmFkZFdpZGdldHMoW3RoaXMud2lkZ2V0XSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMuaW5zdGFudFNlYXJjaEluc3RhbmNlLnBsYXRmb3JtSWQpKSB7XG4gICAgICB0aGlzLnBhcmVudC5yZW1vdmVXaWRnZXRzKFt0aGlzLndpZGdldF0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTdGF0ZSA9IChcbiAgICBzdGF0ZTogVFN0YXRlLFxuICAgIGlzRmlyc3RSZW5kZXJpbmc6IGJvb2xlYW5cbiAgKTogUHJvbWlzZTx2b2lkPiB8IHZvaWQgPT4ge1xuICAgIGlmIChpc0ZpcnN0UmVuZGVyaW5nKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgfTtcblxuICAvKipcbiAgICogSGVscGVyIHRvIGdlbmVyYXRlIGNsYXNzIG5hbWVzIGZvciBhbiBpdGVtXG4gICAqIEBwYXJhbSBpdGVtIGVsZW1lbnQgdG8gZ2VuZXJhdGUgYSBjbGFzcyBuYW1lIGZvclxuICAgKi9cbiAgcHVibGljIGdldEl0ZW1DbGFzcyhpdGVtOiB7IGlzUmVmaW5lZD86IGJvb2xlYW4gfSkge1xuICAgIGNvbnN0IGNsYXNzTmFtZSA9IHRoaXMuY3goJ2l0ZW0nKTtcblxuICAgIGlmIChpdGVtLmlzUmVmaW5lZCkge1xuICAgICAgcmV0dXJuIGAke2NsYXNzTmFtZX0gJHt0aGlzLmN4KCdpdGVtJywgJ3NlbGVjdGVkJyl9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3NOYW1lO1xuICB9XG59XG4iXX0=