UNPKG

vue-instantsearch-ssr

Version:

👀 Lightning-fast Algolia search for Vue apps

3 lines (2 loc) • 2.8 kB
import{Vue2 as e}from"./vue-compat/index-vue2.js";import{warn as t}from"./warn.js";import n from"instantsearch.js/es/index.js";function r(t,n){void 0===n&&(n={});var r=n.mixins;void 0===r&&(r=[]);var o,s={serverPrefetch:void 0,fetch:void 0,_base:void 0,name:"ais-ssr-root-component"};return s.router=t.$router,s.store=t.$store,(o=new(t.$vnode?t.$vnode.componentOptions.Ctor.extend(s):e.component(s.name,Object.assign({},t.$options,s)))({propsData:t.$options.propsData,mixins:[].concat(r)})).$slots=t.$slots,o.$root=t.$root,o.$options.serverPrefetch=[],o}function o(e){var o=e.$cloneComponent;void 0===o&&(o=r);var s,i=n(e);return i.findResultsState=function(e){var t,n,r=e.component,a=e.renderToString;if(!a)throw new Error("findResultsState requires `renderToString: (component) => Promise<string>` in the first argument.");return Promise.resolve().then(function(){t=o(r,{mixins:[{beforeCreate:function(){var e=Object.getOwnPropertyDescriptor(this,"$nuxt"),t=!!e&&(e.writable||e.set);r.$nuxt&&t&&(this.$nuxt=r.$nuxt)},created:function(){(n=this.instantsearch).start(),n.started=!1}}]})}).then(function(){return a(t)}).then(function(){return e=n.mainHelper,new Promise(function(t,n){e.searchOnlyWithDerivedHelpers(),e.derivedHelpers[0].on("result",function(){t()}),e.derivedHelpers.forEach(function(e){return e.on("error",function(e){n(e)})})});var e}).then(function(){return s={},function e(t,n){return n(t),t.getWidgets().forEach(function(t){"ais.index"===t.$$type&&(n(t),e(t,n))})}(n.mainIndex,function(e){var t=e.getResults(),n=t._state,r=t._rawResults;s[e.getIndexId()]={state:Object.keys(n).reduce(function(e,t){return e[t]=n[t],e},{}),results:r}}),i.hydrate(s),i.getState()})},i.getState=function(){if(!s)throw new Error("You need to wait for findResultsState to finish");return s},i.__forceRender=function(e,t){var n=t.getResults();if(null!==n){var r=n._state,o=t.getHelper();o.state=r,e.render({helper:o,results:n,scopedResults:t.getScopedResults(),parent:t,state:r,templatesConfig:{},createURL:t.createURL,instantSearchInstance:i,searchMetadata:{isSearchStalled:!1}})}},i.hydrate=function(e){e?(i._initialResults=e,i.start(),i.started=!1):t("The result of `findResultsState()` needs to be passed to `hydrate()`.")},i}function s(e){if(void 0===e&&(e={}),!e.searchClient)throw new Error("The `searchClient` option is required.\n\nSee documentation: https://www.algolia.com/doc/api-reference/widgets/instantsearch/js/");if(!e.indexName)throw new Error("The `indexName` option is required.\n\nSee documentation: https://www.algolia.com/doc/api-reference/widgets/instantsearch/js/");return{provide:function(){return{$_ais_ssrInstantSearchInstance:this.instantsearch}},data:function(){return{instantsearch:o(e)}}}}export{s as createServerRootMixin}; //# sourceMappingURL=createServerRootMixin.js.map