@algolia/react-instantsearch-widget-loadmore-with-progressbar
Version:
React InstantSearch widget that displays a load more button with a progress bar
2 lines (1 loc) • 4.22 kB
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var M=require("react-instantsearch-core"),L=require("classnames"),m=require("react"),W=require("react-instantsearch-dom");function b(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var p=b(L),u=b(m);function s(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function P(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),t.push.apply(t,n)}return t}function a(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?P(Object(t),!0).forEach(function(n){s(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):P(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function O(e){return y(e)?e.multiIndexContext.targetedIndex:e.ais.mainTargetedIndex}function j(e,r){if(e.results){if(e.results.hits)return e.results;var t=O(r);if(e.results[t])return e.results[t]}return null}function y(e){return e&&e.multiIndexContext}function x(e,r,t,n,i){if(y(t)){var o=O(t);return i?I(e,r,o,n,i):E(e,r,o,n)}else return e.indices&&n&&Object.keys(e.indices).forEach(function(l){e=x(e,{page:1},{multiIndexContext:{targetedIndex:l}},!0,i)}),i?_(e,r,n,i):w(e,r,n)}function E(e,r,t,n){var i=n?{page:1}:void 0,o=e.indices&&e.indices[t]?a(a({},e.indices),{},s({},t,a(a(a({},e.indices[t]),r),i))):a(a({},e.indices),{},s({},t,a(a({},r),i)));return a(a({},e),{},{indices:o})}function w(e,r,t){var n=t?{page:1}:void 0;return a(a(a({},e),r),n)}function I(e,r,t,n,i){var o,l=n?{page:1}:void 0,f=e.indices&&e.indices[t]?a(a({},e.indices),{},s({},t,a(a({},e.indices[t]),{},(o={},s(o,i,a(a({},e.indices[t][i]),r)),s(o,"page",1),o)))):a(a({},e.indices),{},s({},t,a(s({},i,r),l)));return a(a({},e),{},{indices:f})}function _(e,r,t,n){var i=t?{page:1}:void 0;return a(a({},e),{},s({},n,a(a({},e[n]),r)),i)}function $(){return"page"}const h=M.createConnector({displayName:"AlgoliaLoadMoreWithProgressBar",$$type:"ais.loadMoreWithProgressBar",getProvidedProps(e,r,t){const n=j(t,{ais:e.contextValue,multiIndexContext:e.indexContextValue});if(!n)return{nbSeenHits:0,nbTotalHits:0,refineNext:()=>{},isSearchStalled:t.isSearchStalled};const{page:i,nbPages:o,nbHits:l,hitsPerPage:f}=n,g=i+1===o;let d=(i+1)*f;return d+=g?l-d:0,{nbSeenHits:d,nbTotalHits:l,refineNext:()=>this.refine(i+1),isSearchStalled:t.isSearchStalled}},refine(e,r,t){const i={[$()]:t+1},o=!1;return x(r,i,{ais:e.contextValue,multiIndexContext:e.indexContextValue},o,null)},cleanUp(e,r){return r},getSearchParameters(e){return e}}),c=(...e)=>p.default(W.createClassNames("LoadMoreWithProgressBar")(...e)),C=({translations:e,isSearchStalled:r,refineNext:t})=>u.default.createElement("button",{type:"button",className:p.default(c("loadMore"),"ais-InfiniteHits-loadMore"),disabled:r,onClick:t},r?e.searchStalled:e.loadMore),D=({nbSeenHits:e,nbTotalHits:r,isSearchStalled:t,refineNext:n,translate:i,buttonComponent:o,className:l})=>{const f=e<r,g=r>0,d=g?Math.floor(e/r*100):0,v=m.useMemo(()=>({loadMore:i("loadMore"),searchStalled:i("searchStalled"),text:i("text",{nbSeenHits:e,nbTotalHits:r})}),[i,e,r]),B=o!=null?o:C;return u.default.createElement("div",{className:p.default(c(""),l)},g&&u.default.createElement("div",{className:c("progressBar")},u.default.createElement("progress",{className:c("progressBar-bar"),max:"100",value:d},u.default.createElement("div",{className:c("progressBar-fallback")},u.default.createElement("span",{style:{width:`${d}%`}}))),u.default.createElement("div",{className:c("progressBar-text")},v.text)),f&&g&&u.default.createElement(B,{translations:v,isSearchStalled:t,refineNext:n}))},V={loadMore:"Load more",searchStalled:"Loading...",text:({nbSeenHits:e,nbTotalHits:r})=>`You've seen ${e} item${e>1?"s":""} out of ${r}`},N=M.translatable(V)(D),q=h(N,{$$widgetType:"ais.loadMoreWithProgressBar"});exports.LoadMoreWithProgressBar=q;exports.LoadMoreWithProgressBarComponent=N;exports.connectLoadMoreWithProgressBar=h;