UNPKG

@appbaseio/reactivesearch-vue

Version:

A Vue UI components library for building search experiences

72 lines (69 loc) 2.42 kB
import { a as _extends } from './_rollupPluginBabelHelpers-5e8399d7.js'; import { h } from 'vue'; import { b as getCamelCase } from './index-3af85a74.js'; var deepValue = function deepValue(o, p) { return p.split('.').reduce(function (a, v) { return a ? a[v] : null; }, o); }; /** * PreferencesConsumer reads the preferences from SearchPreferencesContext * and set the props from preferences to the component * */ var PreferencesConsumer = function PreferencesConsumer(component) { return { name: 'PreferencesConsumer', inject: { $searchPreferences: { "default": null } }, render: function render() { var _this = this; var userProps = Object.keys(this.$attrs).reduce(function (result, key) { var _extends2; return _extends({}, result, (_extends2 = {}, _extends2[getCamelCase(key)] = _this.$attrs[key], _extends2)); }, {}); var context = this.$searchPreferences; if (!userProps || !userProps.componentId) { throw Error('ReactiveSearch: componentId is required'); } var componentId = userProps.componentId; var preferencesPath = userProps.preferencesPath; var preferences; if (context) { if (preferencesPath) { // read preferences from path preferences = deepValue(context, preferencesPath); } else { preferences = deepValue(context, ['componentSettings', componentId].join('.')); // read preferences from componentSettings } } // Retrieve component specific preferences var componentProps = userProps; if (preferences) { if (preferences.rsConfig) { componentProps = _extends({}, preferences.rsConfig, componentProps); } else { componentProps = _extends({}, preferences, componentProps); } if (preferences.enabled !== undefined && !preferences.enabled) { return null; } } // Parse component props Object.keys(componentProps).forEach(function (p) { if (typeof componentProps[p] === 'string') { if (['defaultQuery', 'customQuery', 'setOption'].includes(p)) { // eslint-disable-next-line componentProps[p] = eval(componentProps[p]); } } }); return h(component, componentProps, this.$slots); } }; }; export { PreferencesConsumer as P };