vue-instantsearch
Version:
👀 Lightning-fast Algolia search for Vue apps
2 lines (1 loc) • 2.19 kB
JavaScript
import{_ as t}from"@swc/helpers/_/_to_consumable_array";import e from"instantsearch.js/es/index.js";import{waitForResults as n,getInitialResults as r}from"instantsearch.js/es/lib/server.js";import{Vue2 as o}from"./vue-compat/index-vue2.js";import{warn as s}from"./warn.js";function i(e){var n,r=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).mixins,s=void 0===r?[]:r,i={serverPrefetch:void 0,fetch:void 0,_base:void 0,name:"ais-ssr-root-component"};return i.router=e.$router,i.store=e.$store,i.i18n=e.$i18n,(n=new(e.$vnode?e.$vnode.componentOptions.Ctor.extend(i):o.component(i.name,Object.assign({},e.$options,i)))({propsData:e.$options.propsData,mixins:t(s)})).$slots=e.$slots,n.$root=e.$root,n.$options.serverPrefetch=[],n}function a(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=t.$cloneComponent,a=function(t,o){var i,a=e(t);return a.findResultsState=function(t){var e,s,u=t.component,c=t.renderToString;if(!c)throw new Error("findResultsState requires `renderToString: (component) => Promise<string>` in the first argument.");return Promise.resolve().then(function(){e=o(u,{mixins:[{beforeCreate:function(){var t=Object.getOwnPropertyDescriptor(u,"$nuxt"),e=!!t&&(t.writable||t.set);u.$nuxt&&e&&(this.$nuxt=u.$nuxt)},created:function(){(s=this.instantsearch).start(),s.started=!1}}]})}).then(function(){return c(e)}).then(function(){return n(s)}).then(function(t){return i=r(s.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):s("The result of `findResultsState()` needs to be passed to `hydrate()`.")},a}(t,void 0===o?i:o);return{provide:function(){return{$_ais_ssrInstantSearchInstance:this.instantsearch}},data:function(){return{instantsearch:a}}}}export{a as createServerRootMixin};