UNPKG

vue-instantsearch

Version:

👀 Lightning-fast Algolia search for Vue apps

3 lines (2 loc) • 2.12 kB
import{Vue2 as t}from"./vue-compat/index-vue2.js";import{warn as e}from"./warn.js";import n from"instantsearch.js/es/index.js";import{waitForResults as r,getInitialResults as o}from"instantsearch.js/es/lib/server.js";function s(e,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=e.$router,s.store=e.$store,s.i18n=e.$i18n,(o=new(e.$vnode?e.$vnode.componentOptions.Ctor.extend(s):t.component(s.name,Object.assign({},e.$options,s)))({propsData:e.$options.propsData,mixins:[].concat(r)})).$slots=e.$slots,o.$root=e.$root,o.$options.serverPrefetch=[],o}function i(t){void 0===t&&(t={});var i=t.$cloneComponent;void 0===i&&(i=s);var a=function(t,s){var i,a=n(t);return a.findResultsState=function(t){var e,n,c=t.component,u=t.renderToString;if(!u)throw new Error("findResultsState requires `renderToString: (component) => Promise<string>` in the first argument.");return Promise.resolve().then(function(){e=s(c,{mixins:[{beforeCreate:function(){var t=Object.getOwnPropertyDescriptor(c,"$nuxt"),e=!!t&&(t.writable||t.set);c.$nuxt&&e&&(this.$nuxt=c.$nuxt)},created:function(){(n=this.instantsearch).start(),n.started=!1}}]})}).then(function(){return u(e)}).then(function(){return r(n)}).then(function(t){return i=o(n.mainIndex,t),a.hydrate(i),a.getState()})},a.getState=function(){if(!i)throw new Error("You need to wait for findResultsState to finish");return i},a.__forceRender=function(t,e){var n=e.getResults();if(null!==n){var r=n._state,o=e.getHelper();o.state=r,t.render({helper:o,results:n,scopedResults:e.getScopedResults(),parent:e,state:r,templatesConfig:{},createURL:e.createURL,instantSearchInstance:a,searchMetadata:{isSearchStalled:!1}})}},a.hydrate=function(t){t?(a._initialResults=t,a.start(),a.started=!1):e("The result of `findResultsState()` needs to be passed to `hydrate()`.")},a}(t,i);return{provide:function(){return{$_ais_ssrInstantSearchInstance:this.instantsearch}},data:function(){return{instantsearch:a}}}}export{i as createServerRootMixin}; //# sourceMappingURL=createServerRootMixin.js.map