@elastic/react-search-ui
Version:
A React library for building search experiences
2 lines (1 loc) • 10.6 kB
JavaScript
var Le=Object.create;var N=Object.defineProperty,je=Object.defineProperties,Ue=Object.getOwnPropertyDescriptor,_e=Object.getOwnPropertyDescriptors,qe=Object.getOwnPropertyNames,Q=Object.getOwnPropertySymbols,ze=Object.getPrototypeOf,H=Object.prototype.hasOwnProperty,oe=Object.prototype.propertyIsEnumerable;var re=(t,e,r)=>e in t?N(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,o=(t,e)=>{for(var r in e||(e={}))H.call(e,r)&&re(t,r,e[r]);if(Q)for(var r of Q(e))oe.call(e,r)&&re(t,r,e[r]);return t},W=(t,e)=>je(t,_e(e));var p=(t,e)=>{var r={};for(var n in t)H.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(t!=null&&Q)for(var n of Q(t))e.indexOf(n)<0&&oe.call(t,n)&&(r[n]=t[n]);return r};var Xe=(t,e)=>{for(var r in e)N(t,r,{get:e[r],enumerable:!0})},ne=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of qe(e))!H.call(t,a)&&a!==r&&N(t,a,{get:()=>e[a],enumerable:!(n=Ue(e,a))||n.enumerable});return t};var g=(t,e,r)=>(r=t!=null?Le(ze(t)):{},ne(e||!t||!t.__esModule?N(r,"default",{value:t,enumerable:!0}):r,t)),Ge=t=>ne(N({},"__esModule",{value:!0}),t);var St={};Xe(St,{ErrorBoundary:()=>me,Facet:()=>Pe,Paging:()=>ve,PagingInfo:()=>Te,Result:()=>L,Results:()=>ke,ResultsPerPage:()=>Ae,SearchBox:()=>Be,SearchContext:()=>w,SearchProvider:()=>pe,Sorting:()=>Me,WithSearch:()=>ce,useSearch:()=>f,withSearch:()=>$});module.exports=Ge(St);var K=g(require("react"));var ae=g(require("react")),He=ae.default.createContext(null),w=He;function Ke(t){return o(o({},t.driver.getState()),t.driver.getActions())}function se(t,e,r){return(r.mapContextToProps||e)(t,r)||{}}function Ze(t){if(!t)throw"withSearch requires a function to be provided which returns an object with at least one value.";return function(e){var r;return r=class extends K.default.PureComponent{constructor(a,c){super(a);this.subscription=a=>{this.mounted&&this.setState(c=>se(o(o({},c),a),t,this.props))};this.mounted=!1,this.state=o({},se(Ke(c),t,a))}componentDidMount(){this.mounted=!0,this.context.driver.subscribeToStateChanges(this.subscription)}componentWillUnmount(){this.mounted=!1,this.context.driver.unsubscribeToStateChanges(this.subscription)}render(){let a=p(this.props,[]);return K.default.createElement(e,o(o({},this.state),a))}},r.contextType=w,r}}var $=Ze;var ie=g(require("react"));function Ye({mapContextToProps:t,children:e}){let r=$(t)(n=>e(n));return ie.default.createElement(r,null)}var ce=Ye;var y=g(require("react")),le=require("@elastic/search-ui");var et={moreFilters:({visibleOptionsCount:t,showingAll:e})=>{let r=e?"All ":"";return r+=`${t} options shown.`,r}},ue=et;var tt=({children:t,config:e,driver:r})=>{let[n,a]=(0,y.useState)(null);if((0,y.useEffect)(()=>{let u=r||new le.SearchDriver(W(o({},e),{a11yNotificationMessages:o(o({},ue),e.a11yNotificationMessages)}));return a(u),()=>{u.tearDown()}},[]),(0,y.useEffect)(()=>{n&&n.setSearchQuery(e.searchQuery)},[e.searchQuery]),(0,y.useEffect)(()=>{n&&n.setAutocompleteQuery(e.autocompleteQuery)},[e.autocompleteQuery]),!n)return null;let c={driver:n};return y.default.createElement(w.Provider,{value:c},t)},pe=tt;var fe=g(require("react")),he=require("@elastic/react-search-ui-views");var I=require("react");function f(t){let e=(0,I.useContext)(w);if(!e)throw new Error("useSearch must be used within a SearchProvider");let[r,n]=(0,I.useState)(()=>t?t(o(o({},e.driver.getState()),e.driver.getActions())):o(o({},e.driver.getState()),e.driver.getActions()));return(0,I.useEffect)(()=>{let a=c=>{n(u=>{let l=o(o({},u),c);return t?t(l):l})};return e.driver.subscribeToStateChanges(a),()=>{e.driver.unsubscribeToStateChanges(a)}},[e.driver,t]),r}var rt=a=>{var c=a,{children:t,className:e,view:r}=c,n=p(c,["children","className","view"]);let{error:u}=f(),l=r||he.ErrorBoundary,h=o({className:e,children:t,error:u},n);return fe.default.createElement(l,o({},h))},me=rt;var de=require("@elastic/react-search-ui-views"),Se=require("@elastic/search-ui"),ge=g(require("react")),Z=require("react");var J=t=>typeof t=="string"?t.normalize("NFD").replace(/[\u0300-\u036f]/g,""):"";var{markSelectedFacetValuesFromFilters:ot}=Se.helpers,nt=d=>{var m=d,{className:t,field:e,filterType:r="all",label:n,view:a,isFilterable:c=!1,show:u=5,persistent:l=!1}=m,h=p(m,["className","field","filterType","label","view","isFilterable","show","persistent"]);let{filters:P,facets:C,addFilter:T,removeFilter:b,setFilter:R,a11yNotify:M}=f(),[B,V]=(0,Z.useState)(""),[k,_]=(0,Z.useState)(u),q=s=>{let S=k+10,F=S>=s;F&&(S=s),M("moreFilters",{visibleOptionsCount:S,showingAll:F}),_(S)},z=s=>{V(s)},D=C[e];if(!D)return null;let X=D[0],x=ot(X,P,e,r).data,O=x.filter(s=>s.selected).map(s=>s.value);if(!x.length&&!O.length)return null;B.trim()&&(x=x.filter(s=>{var F;let S;switch(typeof s.value){case"string":S=J(s.value).toLowerCase();break;case"number":S=s.value.toString();break;case"object":S=typeof((F=s==null?void 0:s.value)==null?void 0:F.name)=="string"?J(s.value.name).toLowerCase():"";break;default:S="";break}return S.includes(J(B).toLowerCase())}));let G=a||de.MultiCheckboxFacet,E=o({className:t,label:n,onMoreClick:q.bind(void 0,x.length),onRemove:s=>{b(e,s,r)},onChange:s=>{R(e,s,r,l)},onSelect:s=>{T(e,s,r,l)},options:x.slice(0,k),showMore:x.length>k,values:O,showSearch:c,onSearch:s=>{z(s)},searchPlaceholder:`Filter ${n}`},h);return ge.default.createElement(G,o({},E))},Pe=nt;var Ce=g(require("react")),xe=require("@elastic/react-search-ui-views");var at=n=>{var a=n,{className:t,view:e}=a,r=p(a,["className","view"]);let{current:c,resultsPerPage:u,totalPages:l,setCurrent:h}=f();if(l===0)return null;let d=e||xe.Paging,m=o({className:t,current:c,resultsPerPage:u,totalPages:l,onChange:h},r);return Ce.default.createElement(d,o({},m))},ve=at;var we=g(require("react")),ye=require("@elastic/react-search-ui-views");var st=n=>{var a=n,{className:t,view:e}=a,r=p(a,["className","view"]);let{pagingStart:c,pagingEnd:u,resultSearchTerm:l,totalResults:h}=f(),d=e||ye.PagingInfo,m=o({className:t,searchTerm:l,start:c,end:u,totalResults:h},r);return we.default.createElement(d,o({},m))},Te=st;var be=g(require("react")),Re=require("@elastic/react-search-ui-views");var it=c=>{var u=c,{result:t,shouldTrackClickThrough:e=!0,clickThroughTags:r=[],view:n}=u,a=p(u,["result","shouldTrackClickThrough","clickThroughTags","view"]);let{trackClickThrough:l}=f(),h=C=>{e&&l(C,r)},d=n||Re.Result,m=t.id.raw,P=o({result:t,key:`result-${m}`,onClickLink:()=>h(m)},a);return be.default.createElement(d,o({},P))},L=it;var Y=g(require("react")),j=require("@elastic/react-search-ui-views");function ct(t,e){if(!(!t[e]||!t[e].raw))return t[e].raw}var ut=h=>{var d=h,{clickThroughTags:t=[],resultView:e,shouldTrackClickThrough:r=!0,titleField:n,urlField:a,thumbnailField:c,view:u}=d,l=p(d,["clickThroughTags","resultView","shouldTrackClickThrough","titleField","urlField","thumbnailField","view"]);let{results:m}=f(),P=u||j.Results,C=e||j.Result,T=m.map(R=>Y.default.createElement(L,{key:`result-${ct(R,"id")}`,titleField:n,urlField:a,thumbnailField:c,view:C,shouldTrackClickThrough:r,clickThroughTags:t,result:R})),b=o({children:T},l);return Y.default.createElement(P,o({},b))},ke=ut;var Fe=g(require("react")),Ve=require("@elastic/react-search-ui-views");var lt=a=>{var c=a,{className:t,options:e=[20,40,60],view:r}=c,n=p(c,["className","options","view"]);let{resultsPerPage:u,setResultsPerPage:l}=f(),h=r||Ve.ResultsPerPage,d=o({className:t,onChange:m=>{l(m)},options:e,value:u},n);return Fe.default.createElement(h,o({},d))},Ae=lt;var U=g(require("react")),Ie=require("@elastic/react-search-ui-views");var pt=b=>{var R=b,{autocompleteMinimumCharacters:t=0,autocompleteResults:e,autocompleteSuggestions:r,className:n,autocompleteView:a,inputProps:c,inputView:u,onSelectAutocomplete:l,shouldClearFilters:h=!0,onSubmit:d,searchAsYouType:m,debounceLength:P,view:C}=R,T=p(R,["autocompleteMinimumCharacters","autocompleteResults","autocompleteSuggestions","className","autocompleteView","inputProps","inputView","onSelectAutocomplete","shouldClearFilters","onSubmit","searchAsYouType","debounceLength","view"]);let{autocompletedResults:M,autocompletedSuggestions:B,searchTerm:V,setSearchTerm:k,trackAutocompleteClickThrough:_,trackAutocompleteSuggestionClickThrough:q}=f(),[z,D]=(0,U.useState)(!1),X=()=>{D(!0)},x=()=>{D(!1)},O=i=>{i.preventDefault(),k(V,{shouldClearFilters:h})},G=i=>{let v=W(o({autocompleteMinimumCharacters:t},(e||r||m)&&{debounce:P||200}),{shouldClearFilters:h,refresh:!!m,autocompleteResults:!!e,autocompleteSuggestions:!!r});k(i,v)},E=i=>{var v;if(e){let A=e===!0?{clickThroughTags:[],shouldTrackClickThrough:!0}:e;if(!i.suggestion&&A.shouldTrackClickThrough!==!1){let{clickThroughTags:$e=[]}=A,Je=(v=i.id)==null?void 0:v.raw;_(Je,$e)}i.suggestion&&q(i.suggestion,i.index,[])}},s=i=>{k(i,{shouldClearFilters:h})},S=i=>{if(i)if(E(i),!i.suggestion&&typeof e!="boolean"){let v=i[e.urlField]?i[e.urlField].raw:"";if(v){let A=typeof e!="boolean"&&e.linkTarget||"_self";window.open(v,A)}}else s(i.suggestion)},F=C||Ie.SearchBox,Oe=(!!e||!!r)&&V.length>=t,ee=Object.entries(B).reduce((i,[v,A])=>i+A.length,0),Qe=ee+M.length,te;l&&(te=i=>{l(i,{notifyAutocompleteSelected:E,completeSuggestion:s,autocompleteResults:e},S)});let We=o({allAutocompletedItemsCount:Qe,autocompleteView:a,autocompleteResults:e,autocompleteSuggestions:r,autocompletedResults:M,autocompletedSuggestions:B,className:n,autocompletedSuggestionsCount:ee,completeSuggestion:s,isFocused:z,notifyAutocompleteSelected:E,onChange:i=>G(i),onSelectAutocomplete:te||S,onSubmit:d?i=>{i.preventDefault(),d(V)}:O,useAutocomplete:Oe,value:V,inputProps:o({onFocus:X,onBlur:x},c),inputView:u},T);return U.default.createElement(F,o({},We))},Be=pt;var De=g(require("react")),Ee=require("@elastic/react-search-ui-views");function ft(t,e){if(e.indexOf("|||")===-1)return t.find(a=>JSON.stringify(a.value)===e);let[r,n]=e.split("|||");return t.find(a=>a.value===r&&a.direction===n)}function Ne(t,e,r){return r&&r.length>0?JSON.stringify(r):`${t}|||${e}`}function ht(t){return Array.isArray(t.value)?JSON.stringify(t.value):Ne(t.value,t.direction,null)}function mt(t){return{label:t.name,value:ht(t)}}var dt=c=>{var u=c,{className:t,label:e,sortOptions:r,view:n}=u,a=p(u,["className","label","sortOptions","view"]);let{sortDirection:l,sortField:h,sortList:d,setSort:m}=f(),P=n||Ee.Sorting,C=o({className:t,label:e,onChange:T=>{let b=ft(r,T);m(b.value,b.direction)},options:r.map(mt),value:Ne(h,l,d)},a);return De.default.createElement(P,o({},C))},Me=dt;0&&(module.exports={ErrorBoundary,Facet,Paging,PagingInfo,Result,Results,ResultsPerPage,SearchBox,SearchContext,SearchProvider,Sorting,WithSearch,useSearch,withSearch});