UNPKG

vue-instantsearch

Version:

👀 Lightning-fast Algolia search for Vue apps

2 lines (1 loc) • 2.12 kB
import{_ as t}from"@swc/helpers/_/_to_consumable_array";import e from"instantsearch.js/es/index.js";import{waitForResults as r,getInitialResults as n}from"instantsearch.js/es/lib/server.js";import"@swc/helpers/_/_type_of";import{createSSRApp as s}from"vue";import{warn as o}from"./warn.js";function i(e){var r,n=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).mixins,o=void 0===n?[]:n,i={serverPrefetch:void 0,fetch:void 0,_base:void 0,name:"ais-ssr-root-component"},a=Object.assign({},e.$options,i);return a.mixins=t(o).concat(t(a.mixins||[])),r=s(a),e.$router&&r.use(e.$router),e.$store&&r.use(e.$store),e.$i18n&&r.use(e.$i18n),r.$slots=e.$slots,r.$root=e.$root,r}function a(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=t.$cloneComponent,a=function(t,s){var i,a=e(t);return a.findResultsState=function(t){var e,o,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=s(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(){(o=this.instantsearch).start(),o.started=!1}}]})}).then(function(){return c(e)}).then(function(){return r(o)}).then(function(t){return i=n(o.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 r=e.getResults();if(null!==r){var n=r._state,s=e.getHelper();s.state=n,t.render({helper:s,results:r,scopedResults:e.getScopedResults(),parent:e,state:n,templatesConfig:{},createURL:e.createURL,instantSearchInstance:a,searchMetadata:{isSearchStalled:!1}})}},a.hydrate=function(t){t?(a._initialResults=t,a.start(),a.started=!1):o("The result of `findResultsState()` needs to be passed to `hydrate()`.")},a}(t,void 0===s?i:s);return{provide:function(){return{$_ais_ssrInstantSearchInstance:this.instantsearch}},data:function(){return{instantsearch:a}}}}export{a as createServerRootMixin};