@211la/search-client 0.16.1 → 0.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js
CHANGED
|
@@ -62,7 +62,7 @@ function __generator(thisArg, body) {
|
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
var version = "0.
|
|
65
|
+
var version = "0.17.1";
|
|
66
66
|
|
|
67
67
|
var INDEX_NAME = 'instant_search';
|
|
68
68
|
var DEFAULT_HITS_PER_PAGE = 20;
|
|
@@ -246,36 +246,51 @@ var facetFilters = (function (facetFilters) {
|
|
|
246
246
|
return null;
|
|
247
247
|
}
|
|
248
248
|
var parsedFilters = parseFilters(facetFilters);
|
|
249
|
-
|
|
250
|
-
|
|
249
|
+
var specialQueries = [];
|
|
250
|
+
var remainingFilters = parsedFilters;
|
|
251
|
+
if (remainingFilters.includes('metadata.serviceConditions:')) {
|
|
252
|
+
var match = remainingFilters.match(/metadata\.serviceConditions:"([^"]+)"/);
|
|
253
|
+
if (match) {
|
|
254
|
+
var conditionValue = match[1];
|
|
255
|
+
specialQueries.push({
|
|
256
|
+
query_string: {
|
|
257
|
+
query: "\"".concat(conditionValue, "\""),
|
|
258
|
+
fields: ['metadata.serviceConditions.*'],
|
|
259
|
+
},
|
|
260
|
+
});
|
|
261
|
+
remainingFilters = remainingFilters
|
|
262
|
+
.replace(/\(metadata\.serviceConditions:"[^"]+"\)\s+AND\s+/g, '')
|
|
263
|
+
.replace(/\s+AND\s+\(metadata\.serviceConditions:"[^"]+"\)/g, '')
|
|
264
|
+
.replace(/\(metadata\.serviceConditions:"[^"]+"\)/g, '')
|
|
265
|
+
.trim();
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
if (remainingFilters.includes('metadata.serviceAreaZipCodes')) {
|
|
269
|
+
var match = remainingFilters.match(/metadata\.serviceAreaZipCodes:"([^"]+)"/);
|
|
251
270
|
if (match) {
|
|
252
271
|
var zipCode = match[1].toUpperCase().trim();
|
|
253
|
-
|
|
254
|
-
|
|
272
|
+
specialQueries.push(buildZipCodeTermQuery(zipCode));
|
|
273
|
+
remainingFilters = remainingFilters
|
|
255
274
|
.replace(/\(metadata\.serviceAreaZipCodes:"[^"]+"\)\s+AND\s+/g, '')
|
|
256
275
|
.replace(/\s+AND\s+\(metadata\.serviceAreaZipCodes:"[^"]+"\)/g, '')
|
|
257
276
|
.replace(/\(metadata\.serviceAreaZipCodes:"[^"]+"\)/g, '')
|
|
258
277
|
.trim();
|
|
259
|
-
if (remainingFilters) {
|
|
260
|
-
return {
|
|
261
|
-
bool: {
|
|
262
|
-
must: [
|
|
263
|
-
{
|
|
264
|
-
query_string: {
|
|
265
|
-
query: remainingFilters,
|
|
266
|
-
},
|
|
267
|
-
},
|
|
268
|
-
zipCodeQuery,
|
|
269
|
-
],
|
|
270
|
-
},
|
|
271
|
-
};
|
|
272
|
-
}
|
|
273
|
-
return zipCodeQuery;
|
|
274
278
|
}
|
|
275
279
|
}
|
|
280
|
+
var allQueries = [];
|
|
281
|
+
if (remainingFilters) {
|
|
282
|
+
allQueries.push({ query_string: { query: remainingFilters } });
|
|
283
|
+
}
|
|
284
|
+
allQueries.push.apply(allQueries, specialQueries);
|
|
285
|
+
if (allQueries.length === 0) {
|
|
286
|
+
return null;
|
|
287
|
+
}
|
|
288
|
+
if (allQueries.length === 1) {
|
|
289
|
+
return allQueries[0];
|
|
290
|
+
}
|
|
276
291
|
return {
|
|
277
|
-
|
|
278
|
-
|
|
292
|
+
bool: {
|
|
293
|
+
must: allQueries,
|
|
279
294
|
},
|
|
280
295
|
};
|
|
281
296
|
});
|
|
@@ -340,7 +355,7 @@ var buildQueryParams = function (settings, instantSearchParams) {
|
|
|
340
355
|
.split(',', 2)
|
|
341
356
|
.map(function (elem) { return parseFloat(elem.trim()); }), lat = _a[0], lng = _a[1];
|
|
342
357
|
query.distance = Number(instantSearchParams.aroundRadius);
|
|
343
|
-
query.distanceUnit = 'mi';
|
|
358
|
+
query.distanceUnit = settings.distanceUnit || 'mi';
|
|
344
359
|
query.lat = lat;
|
|
345
360
|
query.lon = lng;
|
|
346
361
|
}
|
|
@@ -797,14 +812,17 @@ var placeAutocomplete = function (opts) {
|
|
|
797
812
|
};
|
|
798
813
|
};
|
|
799
814
|
|
|
800
|
-
var
|
|
815
|
+
var renderDistanceItem = function (n, unitLabel) { return "<li class=\"ais-RefinementList-item\">\n <label class=\"ais-RefinementList-label\">\n <input class=\"ais-RefinementList-checkbox\" type=\"checkbox\" value=".concat(n, " />\n <span class=\"ais-RefinementList-labelText\">").concat(n, " ").concat(unitLabel, "</span>\n </label>\n </li>"); };
|
|
801
816
|
var renderContainer = function (children) { return "<div class=\"ais-RefinementList\">\n <ul class=\"ais-RefinementList-list\">\n ".concat(children, "\n </ul>\n </div>"); };
|
|
802
817
|
var locationDistanceFilter = function (props) {
|
|
803
818
|
var container = props.container;
|
|
804
819
|
var miles = props.miles || [5, 10, 20, 50];
|
|
820
|
+
var unitLabel = props.distanceUnit === 'km' ? 'km' : 'miles';
|
|
805
821
|
var init = function (options) {
|
|
806
822
|
var helper = options.helper;
|
|
807
|
-
var milesRender = miles
|
|
823
|
+
var milesRender = miles
|
|
824
|
+
.map(function (n) { return renderDistanceItem(n, unitLabel); })
|
|
825
|
+
.join('\n');
|
|
808
826
|
container.innerHTML = renderContainer(milesRender);
|
|
809
827
|
var checkboxes = container.querySelectorAll('input[type=checkbox]');
|
|
810
828
|
checkboxes.forEach(function (cb) {
|
|
@@ -12,4 +12,4 @@ var SearchWidget=function(e){"use strict";
|
|
|
12
12
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
13
13
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
14
14
|
PERFORMANCE OF THIS SOFTWARE.
|
|
15
|
-
***************************************************************************** */var t=function(){return t=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},t.apply(this,arguments)};function n(e,t,n,r){return new(n||(n=Promise))((function(a,i){function o(e){try{s(r.next(e))}catch(e){i(e)}}function c(e){try{s(r.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,c)}s((r=r.apply(e,t||[])).next())}))}function r(e,t){var n,r,a,i,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(i){return function(c){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(a=2&i[0]?r.return:i[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,i[1])).done)return a;switch(r=0,a&&(i=[2&i[0],a.value]),i[0]){case 0:case 1:a=i;break;case 4:return o.label++,{value:i[1],done:!1};case 5:o.label++,r=i[1],i=[0];continue;case 7:i=o.ops.pop(),o.trys.pop();continue;default:if(!(a=o.trys,(a=a.length>0&&a[a.length-1])||6!==i[0]&&2!==i[0])){o=0;continue}if(3===i[0]&&(!a||i[1]>a[0]&&i[1]<a[3])){o.label=i[1];break}if(6===i[0]&&o.label<a[1]){o.label=a[1],a=i;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(i);break}a[2]&&o.ops.pop(),o.trys.pop();continue}i=t.call(e,o)}catch(e){i=[6,e],r=0}finally{n=a=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}}var a=function(e){var t=e.indexOf(".");return-1===t?[e]:[e.slice(0,t),e.slice(t+1)]},i=function(e,t,n){var r=a(t);if(1!==r.length){var o=r[0],c=r[1];e[o]||(e[o]={}),i(e[o],c,n)}else e[r[0]]=n},o=function(e,t){var n=a(t);if(1===n.length){var r=e[n[0]];return void 0===r?null:r}var i=n[0],c=n[1],s=e[i];return s?o(s,c):null},c=function(e){return["+","&&","||","!","(",")","{","}","[","]","^","~","*","?",":","/","&",","].forEach((function(t){e=e.split(t).join(" ")})),e.replace(/\s+/g," ")};function s(e){return e.replace(/ - /g," ").split(" ").filter(Boolean).map((function(e){return"".concat(c(e),"*")})).join(" ")}var u=function(e,n){var r;if(!e.query)return null;var a=e.query.split(":"),i=a.length>1?"".concat(a[0],":").concat(s(a[1])):s(e.query),o=(e.restrictSearchableAttributes?e.restrictSearchableAttributes:null!==(r=n.keywordSearchFields)&&void 0!==r?r:[]).map((function(e){return n.fieldSettings&&n.fieldSettings[e]?"".concat(e,"^").concat(n.fieldSettings[e].boost):e}));return{query_string:t({query:i,default_operator:"AND"},o.length&&{fields:o})}},l=function(e){var t=e.indexOf(":");if(-1===t)return e;var n=e.substring(0,t),r=e.substring(t+1),a=c(r);return a=a.replace(/ - /g," ").split(" ").filter(Boolean).map((function(e){return"".concat(e)})).join(" "),"".concat(n,":").concat(a)},f=function(e){if(!e||!e.length)return null;var t,n="string"==typeof(t=e)?t:t.map((function(e){if("string"==typeof e)return l(e);var t=e.map((function(e){return l(e)}));return"(".concat(t.join(" OR "),")")})).join(" AND ");if(n.includes("metadata.serviceAreaZipCodes")){var r=n.match(/metadata\.serviceAreaZipCodes:"([^"]+)"/);if(r){var a=function(e){var t,n=(t=e.match(/^([A-Z]\d[A-Z])[\s-]?(\d[A-Z]\d)$/))?"".concat(t[1]," ").concat(t[2]):null;if(n){var r=n[0],a=n[1],i=n[2];return{bool:{should:[{term:{"metadata.serviceAreaZipCodes.keyword":n}},{term:{"metadata.serviceAreaZipCodes.keyword":"".concat(r,"** ***")}},{term:{"metadata.serviceAreaZipCodes.keyword":"".concat(r).concat(a,"* ***")}},{term:{"metadata.serviceAreaZipCodes.keyword":"".concat(r).concat(a).concat(i," ***")}}],minimum_should_match:1}}}return{term:{"metadata.serviceAreaZipCodes":e}}}(r[1].toUpperCase().trim()),i=n.replace(/\(metadata\.serviceAreaZipCodes:"[^"]+"\)\s+AND\s+/g,"").replace(/\s+AND\s+\(metadata\.serviceAreaZipCodes:"[^"]+"\)/g,"").replace(/\(metadata\.serviceAreaZipCodes:"[^"]+"\)/g,"").trim();return i?{bool:{must:[{query_string:{query:i}},a]}}:a}}return{query_string:{query:n}}},d=function(e,t){var n,r=function(e,t){var n=[u(t,e),f(t.facetFilters)].filter((function(e){return null!==e}));return n.length?n:"*"}(e,t),a={query:"string"==typeof r?r:JSON.stringify(r)};e.networkId&&(a.networkId=e.networkId),e.sortByDistance&&(a.sortByDistance=e.sortByDistance),e.zipcode&&(a.zipcode=e.zipcode),t.filters&&(a.filters=JSON.stringify((n=t.filters)?n.map((function(e){var t,n;return"exists"===e.queryType?{exists:{field:e.field}}:"raw"===e.queryType?e.query:((t={})[e.queryType]=((n={})[e.field]=e.query,n),t)})).filter(Boolean):[]));var i=t.hitsPerPage||20;if(a.$limit=i,a.$skip=i&&i*t.page||0,t.aroundLatLng&&t.aroundRadius){var o=t.aroundLatLng.split(",",2).map((function(e){return parseFloat(e.trim())})),c=o[0],s=o[1];a.distance=Number(t.aroundRadius),a.distanceUnit="mi",a.lat=c,a.lon=s}return t.openNow&&(a.openAtDay=t.openAtDay,a.openAtMinute=t.openAtMinute),t.facets&&t.facets.length&&(a.aggregations=JSON.stringify(t.facets.reduce((function(e,n){return e[n]={terms:{field:"".concat(n,".keyword"),min_doc_count:(null==t?void 0:t.facetMinDocCount)||0,size:100}},e}),{}))),a},h=function(){function e(e,t){this.settings=e,this.options=t,this.body=this.getNexus211QueryParams()}return e.prototype.getKeywordSearchFields=function(){return this.options.restrictSearchableAttributes?this.options.restrictSearchableAttributes:this.settings.keywordSearchFields},e.prototype.isSearchableAttributesRestricted=function(){var e;return(null===(e=this.options.restrictSearchableAttributes)||void 0===e?void 0:e.length)>0},e.prototype.getNexus211QueryParams=function(){return d(this.settings,this.options)},e}(),p=function(e,t){var n=t.options.query;if(!e)return{matchLevel:"none",matchedWords:[],value:e};var r="";"string"==typeof e?r=e:Array.isArray(e)&&e.length>0&&(r=e.join(" "));var a,i,o,c,s,u,l,f,d=r.toLowerCase().search(n.toLowerCase());return-1===d?{matchLevel:"none",matchedWords:[],value:e}:{fullyHighlighted:0===d&&r.length===n.length,matchLevel:"full",matchedWords:[n],value:(a={text:r,start:d,length:n.length,preTag:t.options.highlightPreTag,postTag:t.options.highlightPostTag},i=a.text,o=a.start,c=a.length,s=a.preTag,u=a.postTag,l=i.slice(0,o),f=i.slice(o+c),"".concat(l).concat(s).concat(i.slice(o,o+c)).concat(u).concat(f))}},g=function(e,n){return n.map((function(n){return function(e,n){var r={};return e.getKeywordSearchFields().forEach((function(t){var a=o(n,t);a&&(Array.isArray(a)&&a.length>0&&"string"==typeof a[0]?i(r,t,a.map((function(t){return p(t,e)}))):"string"==typeof a?i(r,t,p(a,e)):console.warn('The value of field "'.concat(t,'" is not a string or an array of strings. Skipping highlighting for this field.')))})),e.isSearchableAttributesRestricted()&&e.settings.keywordSearchFields.forEach((function(e){o(r,e)||i(r,e,{matchLevel:"none",matchedWords:[],value:o(n,e)})})),t(t({},n),{_highlightResult:r})}(e,t({objectID:n.id},n))}))},m=function(e){return e.aggregations?Object.entries(e.aggregations).reduce((function(e,t){var n=t[0],r=t[1];return e[n]=r.buckets.reduce((function(e,t){return e[t.key]=t.doc_count,e}),{}),e}),{}):{}},v=function(e,t){return{results:[{index:"instant_search",query:e.options.query,params:e.body.query,nbHits:t.__meta.total,hits:g(e,t.data),hitsPerPage:+t.__meta.perPage,page:e.options.page,nbPages:t.__meta.perPage?Math.ceil(t.__meta.total/t.__meta.perPage):0,processingTimeMS:1,exhaustiveNbHits:!0,exhaustiveFacetsCount:!0,facets:m(t)}]}},y=function(){function e(e){this.settings=t(t({},this.getDefaultSettings()),e)}return e.prototype.getDefaultSettings=function(){return{endpoint:"https://admin.211cs.org",searchUri:"/api/search",keywordSearchFields:["service.name","site.name","site.agency.name","site.agency.description"]}},e.prototype.search=function(e){return n(this,void 0,void 0,(function(){var t,n;return r(this,(function(r){switch(r.label){case 0:return t=new h(this.settings,e[0].params),[4,this.makeSearchRequest(t.body)];case 1:return n=r.sent(),[2,v(t,n)]}}))}))},e.prototype.makeSearchRequest=function(e){return n(this,void 0,void 0,(function(){var t,n;return r(this,(function(r){switch(r.label){case 0:if(!this.settings.token)throw new Error("You must provide a valid SearchApi or PublicSearchApi token. Visit https://admin.211cs.org to create one.");return[4,fetch("".concat(this.settings.endpoint).concat(this.settings.searchUri),{headers:{cache:"no-cache",authorization:"SearchApi ".concat(this.settings.token),"content-type":"application/json","x-search-widget-name":"@211la/search-client","x-search-widget-version":"0.16.1"},method:"POST",body:JSON.stringify({search:e})})];case 1:if(200!==(t=r.sent()).status)throw n=t.text(),new Error("Unexpected status ".concat(t.status,": ").concat(n));return[2,t.json()]}}))}))},e.prototype.searchForFacetValues=function(e){return n(this,void 0,void 0,(function(){var a=this;return r(this,(function(i){return[2,Promise.all(e.map((function(i){return n(a,void 0,void 0,(function(){var n;return r(this,(function(r){switch(r.label){case 0:return n=new h(this.settings,t(t({},e[0].params),{facets:[e[0].params.facetName],hitsPerPage:0})),[4,this.makeSearchRequest(n.body)];case 1:return[2,{facetHits:r.sent().aggregations[i.params.facetName].buckets.map((function(e){return{value:e.key,highlighted:e.key,count:e.doc_count,isRefined:!1}})),exhaustiveFacetsCount:!0,processingTimeMS:1}]}}))}))})))]}))}))},e.prototype.addAlgoliaAgent=function(e,t){console.warn("Unhandled addAlgoliaAgent",e,t)},e.prototype.clearCache=function(){return console.warn("Unhandled clearCache"),Promise.resolve()},e}(),b=function(e){switch(typeof e){case"string":return parseFloat(e);case"number":return e;default:return null}};var S=function(e){if(!e.addresses||0===e.addresses.length)return null;var t=e.addresses[0];return{lat:b(t.latitude),lng:b(t.longitude),hit:e}},w=function(e,t){return function(n){var r,a=n.container,i=n.attribute,o=n.placeholder||"",c=(r=n.debounce||200,function(e){var t=null;return function(n){null!==t&&(clearTimeout(t),t=null);var a=n.target.value;t=setTimeout((function(){e(a),t=null}),r)}}),s=t&&"number"===t?"number":"search",u=e?"":"*";return{init:function(e){var t=e.helper;a.innerHTML='<input class="ais-SearchBox-input" type='.concat(s," placeholder=").concat(o,' autocomplete="off" autocorrect="off" autocapitalize="off" maxlength="512">'),a.querySelector("input").addEventListener("input",c((function(e){t.clearRefinements(i),e&&t.addFacetRefinement(i,[e+u]),t.search()})))},getWidgetSearchParameters:function(e){return e.addFacet(i)}}}},L=function(e){return'<li class="ais-RefinementList-item">\n <label class="ais-RefinementList-label">\n <input class="ais-RefinementList-checkbox" type="checkbox" value='.concat(e,' />\n <span class="ais-RefinementList-labelText">').concat(e," miles</span>\n </label>\n </li>")},k=w(!0,"number"),x=w(!0,"string"),A=w(!1,"string"),R=function(){};function P(e,n){return void 0===n&&(n=R),function(r){var a=r.attribute,i=r.transformItems,o=void 0===i?function(e){return e}:i;return{$$type:"cs.taxonomyRefinementList",init:function(n){e(t(t({},this.getWidgetRenderState(n)),{instantSearchInstance:n.instantSearchInstance}),!0)},render:function(n){e(t(t({},this.getWidgetRenderState(n)),{instantSearchInstance:n.instantSearchInstance}),!1)},getRenderState:function(e,n){var r;return t(t({},e),{taxonomyRefinementList:t(t({},e.taxonomyRefinementList),(r={},r[a]=this.getWidgetRenderState(n),r))})},getWidgetRenderState:function(e){var t=e.results,n=e.helper,i=function(e){e.split("|").forEach((function(e){return n.isDisjunctiveRefined(a,e)?n.removeDisjunctiveFacetRefinement(a,e):n.addDisjunctiveFacetRefinement(a,e)})),n.search()};return t?{items:o(t.getRefinements(a)),refine:i,widgetParams:r}:{items:[],refine:i,widgetParams:r}},getWidgetUiState:function(e,n){var r,i=n.searchParameters;return t(t({},e),{taxonomyRefinementList:t(t({},e.taxonomyRefinementList),(r={},r[a]=i.getRefinements(a),r))})},getWidgetSearchParameters:function(e){return e.addDisjunctiveFacet(a)},dispose:function(){n()}}}}var q=function(e){return{render:function(t,n){var r=t.items,a=t.refine,i="string"==typeof e.container?document.querySelector(e.container):e.container;if(n)i.addEventListener("click",(function(e){if(e.target instanceof HTMLElement){var t=e.target.closest("input");t&&a(t.value)}}));else{var o=e.items.map((function(e){var t=e.label,n=e.value,a=n.split("|").every((function(e){return r.find((function(t){return"disjunctive"===t.type&&t.name===e}))}));return'\n <li>\n <label>\n <input\n type="checkbox"\n value="'.concat(n,'"\n ').concat(a?"checked":"","\n />\n ").concat(t,"\n </label>\n </li>\n ")}));i.innerHTML="<ul>".concat(o.join(""),"</ul>")}},dispose:function(){}}};return e.SearchClient=y,e.connectTaxonomyRefinementList=P,e.createTaxonomyRefinementListRenderer=q,e.exactNumberFieldSearch=k,e.exactStringFieldSearch=x,e.googleMaps=function(e){var t=e.container,n=e.renderInfo,r=e.transformHits||S,a="string"==typeof t?document.querySelector(t):t,i=null,o={},c=new google.maps.InfoWindow;return{init:function(){i=new google.maps.Map(a,{})},render:function(e){if(i){Object.keys(o).forEach((function(e){o[e].marker.setMap(null),delete o[e]}));var t=function(e,t){return e.map(t).filter((function(e){return null!=e&&null!==e.lat&&null!==e.lng}))}(e.results.hits,r);t.forEach((function(e){if(!o[e.hit.id]){var t=new google.maps.Marker({position:{lat:e.lat,lng:e.lng},map:i});n&&t.addListener("click",(function(){c.setContent(n(e)),c.open(i,t)})),t.setMap(i),o[e.hit.id]={marker:t,data:e}}})),function(e,t){e.fitBounds(t.reduce((function(e,t){return e.extend(new google.maps.LatLng(t.lat,t.lng)),e}),new google.maps.LatLngBounds))}(i,t)}},dispose:function(e){},getWidgetState:function(e,t){return e},getWidgetSearchParameters:function(e,t){return e}}},e.locationDistanceFilter=function(e){var t=e.container,n=e.miles||[5,10,20,50];return{init:function(e){var r=e.helper,a=n.map(L).join("\n");t.innerHTML='<div class="ais-RefinementList">\n <ul class="ais-RefinementList-list">\n '.concat(a,"\n </ul>\n </div>");var i=t.querySelectorAll("input[type=checkbox]");i.forEach((function(e){e.addEventListener("change",(function(t){var n=!1;i.forEach((function(t){t.value!==e.value&&(t.checked=!1),t.checked&&(n=!0)})),n?r.setQueryParameter("aroundRadius",t.target.value).search():r.setQueryParameter("aroundRadius").search()}))}))}}},e.makeFieldSearch=w,e.noop=R,e.placeAutocomplete=function(e){var t=e.container,n=e.placeholder;return{init:function(e){var r=e.helper;t.innerHTML='<input class="ais-SearchBox-input" type="search" placeholder='.concat(n,"/>");var a=t.querySelector("input[type=search]"),i=new google.maps.places.Autocomplete(a);i.setFields(["place_id","geometry","name","formatted_address"]);var o=new google.maps.Geocoder;i.addListener("place_changed",(function(){var e=i.getPlace();""!==e.name?e.place_id&&o.geocode({placeId:e.place_id},(function(e,t){if("OK"===t){var n=e[0].geometry.location;r.setQueryParameter("aroundLatLng","".concat(n.lat(),", ").concat(n.lng())).search()}else console.warn("Geocoder failed due to: ".concat(t))})):r.setQueryParameter("aroundLatLng").search()}))}}},e.searchBoxFields=function(e){return{init:function(t){var n;e.container.innerHTML=(n=e.attributes.map((function(e){return function(e){return'<li class="ais-RefinementList-item">\n <label class="ais-RefinementList-label">\n <input class="ais-RefinementList-checkbox" type="checkbox" value="'.concat(e.fieldName,'" checked />\n <span class="ais-RefinementList-labelText">').concat(e.title,"</span>\n </label>\n </li>")}(e)})).join("\n"),'<div class="ais-RefinementList">\n <ul class="ais-RefinementList-list">\n '.concat(n,"\n </ul>\n </div>"));e.container.querySelectorAll("input[type=checkbox]").forEach((function(n){n.addEventListener("change",(function(){!function(){var n=e.container.querySelectorAll("input[type=checkbox]:checked");if(n.length){for(var r=[],a=0;a<n.length;a+=1)r.push(n[a].getAttribute("value"));t.helper.setQueryParameter("restrictSearchableAttributes",r)}else t.helper.setQueryParameter("restrictSearchableAttributes");t.helper.search()}()}))}))}}},e.stringFieldSearch=A,e.taxonomyRefinementList=function(e){var n=q(e),r=P(n.render,n.dispose);return t(t({},r(e)),{$$widgetType:"cs.taxonomyRefinementList"})},Object.defineProperty(e,"__esModule",{value:!0}),e}({});
|
|
15
|
+
***************************************************************************** */var t=function(){return t=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},t.apply(this,arguments)};function n(e,t,n,r){return new(n||(n=Promise))((function(a,i){function o(e){try{s(r.next(e))}catch(e){i(e)}}function c(e){try{s(r.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,c)}s((r=r.apply(e,t||[])).next())}))}function r(e,t){var n,r,a,i,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(i){return function(c){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(a=2&i[0]?r.return:i[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,i[1])).done)return a;switch(r=0,a&&(i=[2&i[0],a.value]),i[0]){case 0:case 1:a=i;break;case 4:return o.label++,{value:i[1],done:!1};case 5:o.label++,r=i[1],i=[0];continue;case 7:i=o.ops.pop(),o.trys.pop();continue;default:if(!(a=o.trys,(a=a.length>0&&a[a.length-1])||6!==i[0]&&2!==i[0])){o=0;continue}if(3===i[0]&&(!a||i[1]>a[0]&&i[1]<a[3])){o.label=i[1];break}if(6===i[0]&&o.label<a[1]){o.label=a[1],a=i;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(i);break}a[2]&&o.ops.pop(),o.trys.pop();continue}i=t.call(e,o)}catch(e){i=[6,e],r=0}finally{n=a=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}}var a=function(e){var t=e.indexOf(".");return-1===t?[e]:[e.slice(0,t),e.slice(t+1)]},i=function(e,t,n){var r=a(t);if(1!==r.length){var o=r[0],c=r[1];e[o]||(e[o]={}),i(e[o],c,n)}else e[r[0]]=n},o=function(e,t){var n=a(t);if(1===n.length){var r=e[n[0]];return void 0===r?null:r}var i=n[0],c=n[1],s=e[i];return s?o(s,c):null},c=function(e){return["+","&&","||","!","(",")","{","}","[","]","^","~","*","?",":","/","&",","].forEach((function(t){e=e.split(t).join(" ")})),e.replace(/\s+/g," ")};function s(e){return e.replace(/ - /g," ").split(" ").filter(Boolean).map((function(e){return"".concat(c(e),"*")})).join(" ")}var u=function(e,n){var r;if(!e.query)return null;var a=e.query.split(":"),i=a.length>1?"".concat(a[0],":").concat(s(a[1])):s(e.query),o=(e.restrictSearchableAttributes?e.restrictSearchableAttributes:null!==(r=n.keywordSearchFields)&&void 0!==r?r:[]).map((function(e){return n.fieldSettings&&n.fieldSettings[e]?"".concat(e,"^").concat(n.fieldSettings[e].boost):e}));return{query_string:t({query:i,default_operator:"AND"},o.length&&{fields:o})}},l=function(e){var t=e.indexOf(":");if(-1===t)return e;var n=e.substring(0,t),r=e.substring(t+1),a=c(r);return a=a.replace(/ - /g," ").split(" ").filter(Boolean).map((function(e){return"".concat(e)})).join(" "),"".concat(n,":").concat(a)},f=function(e){if(!e||!e.length)return null;var t,n,r=[],a="string"==typeof(t=e)?t:t.map((function(e){if("string"==typeof e)return l(e);var t=e.map((function(e){return l(e)}));return"(".concat(t.join(" OR "),")")})).join(" AND ");if(a.includes("metadata.serviceConditions:")&&(n=a.match(/metadata\.serviceConditions:"([^"]+)"/))){var i=n[1];r.push({query_string:{query:'"'.concat(i,'"'),fields:["metadata.serviceConditions.*"]}}),a=a.replace(/\(metadata\.serviceConditions:"[^"]+"\)\s+AND\s+/g,"").replace(/\s+AND\s+\(metadata\.serviceConditions:"[^"]+"\)/g,"").replace(/\(metadata\.serviceConditions:"[^"]+"\)/g,"").trim()}if(a.includes("metadata.serviceAreaZipCodes")&&(n=a.match(/metadata\.serviceAreaZipCodes:"([^"]+)"/))){var o=n[1].toUpperCase().trim();r.push(function(e){var t,n=(t=e.match(/^([A-Z]\d[A-Z])[\s-]?(\d[A-Z]\d)$/))?"".concat(t[1]," ").concat(t[2]):null;if(n){var r=n[0],a=n[1],i=n[2];return{bool:{should:[{term:{"metadata.serviceAreaZipCodes.keyword":n}},{term:{"metadata.serviceAreaZipCodes.keyword":"".concat(r,"** ***")}},{term:{"metadata.serviceAreaZipCodes.keyword":"".concat(r).concat(a,"* ***")}},{term:{"metadata.serviceAreaZipCodes.keyword":"".concat(r).concat(a).concat(i," ***")}}],minimum_should_match:1}}}return{term:{"metadata.serviceAreaZipCodes":e}}}(o)),a=a.replace(/\(metadata\.serviceAreaZipCodes:"[^"]+"\)\s+AND\s+/g,"").replace(/\s+AND\s+\(metadata\.serviceAreaZipCodes:"[^"]+"\)/g,"").replace(/\(metadata\.serviceAreaZipCodes:"[^"]+"\)/g,"").trim()}var c=[];return a&&c.push({query_string:{query:a}}),c.push.apply(c,r),0===c.length?null:1===c.length?c[0]:{bool:{must:c}}},d=function(e,t){var n,r=function(e,t){var n=[u(t,e),f(t.facetFilters)].filter((function(e){return null!==e}));return n.length?n:"*"}(e,t),a={query:"string"==typeof r?r:JSON.stringify(r)};e.networkId&&(a.networkId=e.networkId),e.sortByDistance&&(a.sortByDistance=e.sortByDistance),e.zipcode&&(a.zipcode=e.zipcode),t.filters&&(a.filters=JSON.stringify((n=t.filters)?n.map((function(e){var t,n;return"exists"===e.queryType?{exists:{field:e.field}}:"raw"===e.queryType?e.query:((t={})[e.queryType]=((n={})[e.field]=e.query,n),t)})).filter(Boolean):[]));var i=t.hitsPerPage||20;if(a.$limit=i,a.$skip=i&&i*t.page||0,t.aroundLatLng&&t.aroundRadius){var o=t.aroundLatLng.split(",",2).map((function(e){return parseFloat(e.trim())})),c=o[0],s=o[1];a.distance=Number(t.aroundRadius),a.distanceUnit=e.distanceUnit||"mi",a.lat=c,a.lon=s}return t.openNow&&(a.openAtDay=t.openAtDay,a.openAtMinute=t.openAtMinute),t.facets&&t.facets.length&&(a.aggregations=JSON.stringify(t.facets.reduce((function(e,n){return e[n]={terms:{field:"".concat(n,".keyword"),min_doc_count:(null==t?void 0:t.facetMinDocCount)||0,size:100}},e}),{}))),a},h=function(){function e(e,t){this.settings=e,this.options=t,this.body=this.getNexus211QueryParams()}return e.prototype.getKeywordSearchFields=function(){return this.options.restrictSearchableAttributes?this.options.restrictSearchableAttributes:this.settings.keywordSearchFields},e.prototype.isSearchableAttributesRestricted=function(){var e;return(null===(e=this.options.restrictSearchableAttributes)||void 0===e?void 0:e.length)>0},e.prototype.getNexus211QueryParams=function(){return d(this.settings,this.options)},e}(),p=function(e,t){var n=t.options.query;if(!e)return{matchLevel:"none",matchedWords:[],value:e};var r="";"string"==typeof e?r=e:Array.isArray(e)&&e.length>0&&(r=e.join(" "));var a,i,o,c,s,u,l,f,d=r.toLowerCase().search(n.toLowerCase());return-1===d?{matchLevel:"none",matchedWords:[],value:e}:{fullyHighlighted:0===d&&r.length===n.length,matchLevel:"full",matchedWords:[n],value:(a={text:r,start:d,length:n.length,preTag:t.options.highlightPreTag,postTag:t.options.highlightPostTag},i=a.text,o=a.start,c=a.length,s=a.preTag,u=a.postTag,l=i.slice(0,o),f=i.slice(o+c),"".concat(l).concat(s).concat(i.slice(o,o+c)).concat(u).concat(f))}},g=function(e,n){return n.map((function(n){return function(e,n){var r={};return e.getKeywordSearchFields().forEach((function(t){var a=o(n,t);a&&(Array.isArray(a)&&a.length>0&&"string"==typeof a[0]?i(r,t,a.map((function(t){return p(t,e)}))):"string"==typeof a?i(r,t,p(a,e)):console.warn('The value of field "'.concat(t,'" is not a string or an array of strings. Skipping highlighting for this field.')))})),e.isSearchableAttributesRestricted()&&e.settings.keywordSearchFields.forEach((function(e){o(r,e)||i(r,e,{matchLevel:"none",matchedWords:[],value:o(n,e)})})),t(t({},n),{_highlightResult:r})}(e,t({objectID:n.id},n))}))},m=function(e){return e.aggregations?Object.entries(e.aggregations).reduce((function(e,t){var n=t[0],r=t[1];return e[n]=r.buckets.reduce((function(e,t){return e[t.key]=t.doc_count,e}),{}),e}),{}):{}},v=function(e,t){return{results:[{index:"instant_search",query:e.options.query,params:e.body.query,nbHits:t.__meta.total,hits:g(e,t.data),hitsPerPage:+t.__meta.perPage,page:e.options.page,nbPages:t.__meta.perPage?Math.ceil(t.__meta.total/t.__meta.perPage):0,processingTimeMS:1,exhaustiveNbHits:!0,exhaustiveFacetsCount:!0,facets:m(t)}]}},y=function(){function e(e){this.settings=t(t({},this.getDefaultSettings()),e)}return e.prototype.getDefaultSettings=function(){return{endpoint:"https://admin.211cs.org",searchUri:"/api/search",keywordSearchFields:["service.name","site.name","site.agency.name","site.agency.description"]}},e.prototype.search=function(e){return n(this,void 0,void 0,(function(){var t,n;return r(this,(function(r){switch(r.label){case 0:return t=new h(this.settings,e[0].params),[4,this.makeSearchRequest(t.body)];case 1:return n=r.sent(),[2,v(t,n)]}}))}))},e.prototype.makeSearchRequest=function(e){return n(this,void 0,void 0,(function(){var t,n;return r(this,(function(r){switch(r.label){case 0:if(!this.settings.token)throw new Error("You must provide a valid SearchApi or PublicSearchApi token. Visit https://admin.211cs.org to create one.");return[4,fetch("".concat(this.settings.endpoint).concat(this.settings.searchUri),{headers:{cache:"no-cache",authorization:"SearchApi ".concat(this.settings.token),"content-type":"application/json","x-search-widget-name":"@211la/search-client","x-search-widget-version":"0.17.1"},method:"POST",body:JSON.stringify({search:e})})];case 1:if(200!==(t=r.sent()).status)throw n=t.text(),new Error("Unexpected status ".concat(t.status,": ").concat(n));return[2,t.json()]}}))}))},e.prototype.searchForFacetValues=function(e){return n(this,void 0,void 0,(function(){var a=this;return r(this,(function(i){return[2,Promise.all(e.map((function(i){return n(a,void 0,void 0,(function(){var n;return r(this,(function(r){switch(r.label){case 0:return n=new h(this.settings,t(t({},e[0].params),{facets:[e[0].params.facetName],hitsPerPage:0})),[4,this.makeSearchRequest(n.body)];case 1:return[2,{facetHits:r.sent().aggregations[i.params.facetName].buckets.map((function(e){return{value:e.key,highlighted:e.key,count:e.doc_count,isRefined:!1}})),exhaustiveFacetsCount:!0,processingTimeMS:1}]}}))}))})))]}))}))},e.prototype.addAlgoliaAgent=function(e,t){console.warn("Unhandled addAlgoliaAgent",e,t)},e.prototype.clearCache=function(){return console.warn("Unhandled clearCache"),Promise.resolve()},e}(),b=function(e){switch(typeof e){case"string":return parseFloat(e);case"number":return e;default:return null}};var S=function(e){if(!e.addresses||0===e.addresses.length)return null;var t=e.addresses[0];return{lat:b(t.latitude),lng:b(t.longitude),hit:e}},w=function(e,t){return function(n){var r,a=n.container,i=n.attribute,o=n.placeholder||"",c=(r=n.debounce||200,function(e){var t=null;return function(n){null!==t&&(clearTimeout(t),t=null);var a=n.target.value;t=setTimeout((function(){e(a),t=null}),r)}}),s=t&&"number"===t?"number":"search",u=e?"":"*";return{init:function(e){var t=e.helper;a.innerHTML='<input class="ais-SearchBox-input" type='.concat(s," placeholder=").concat(o,' autocomplete="off" autocorrect="off" autocapitalize="off" maxlength="512">'),a.querySelector("input").addEventListener("input",c((function(e){t.clearRefinements(i),e&&t.addFacetRefinement(i,[e+u]),t.search()})))},getWidgetSearchParameters:function(e){return e.addFacet(i)}}}},k=w(!0,"number"),L=w(!0,"string"),A=w(!1,"string"),x=function(){};function R(e,n){return void 0===n&&(n=x),function(r){var a=r.attribute,i=r.transformItems,o=void 0===i?function(e){return e}:i;return{$$type:"cs.taxonomyRefinementList",init:function(n){e(t(t({},this.getWidgetRenderState(n)),{instantSearchInstance:n.instantSearchInstance}),!0)},render:function(n){e(t(t({},this.getWidgetRenderState(n)),{instantSearchInstance:n.instantSearchInstance}),!1)},getRenderState:function(e,n){var r;return t(t({},e),{taxonomyRefinementList:t(t({},e.taxonomyRefinementList),(r={},r[a]=this.getWidgetRenderState(n),r))})},getWidgetRenderState:function(e){var t=e.results,n=e.helper,i=function(e){e.split("|").forEach((function(e){return n.isDisjunctiveRefined(a,e)?n.removeDisjunctiveFacetRefinement(a,e):n.addDisjunctiveFacetRefinement(a,e)})),n.search()};return t?{items:o(t.getRefinements(a)),refine:i,widgetParams:r}:{items:[],refine:i,widgetParams:r}},getWidgetUiState:function(e,n){var r,i=n.searchParameters;return t(t({},e),{taxonomyRefinementList:t(t({},e.taxonomyRefinementList),(r={},r[a]=i.getRefinements(a),r))})},getWidgetSearchParameters:function(e){return e.addDisjunctiveFacet(a)},dispose:function(){n()}}}}var P=function(e){return{render:function(t,n){var r=t.items,a=t.refine,i="string"==typeof e.container?document.querySelector(e.container):e.container;if(n)i.addEventListener("click",(function(e){if(e.target instanceof HTMLElement){var t=e.target.closest("input");t&&a(t.value)}}));else{var o=e.items.map((function(e){var t=e.label,n=e.value,a=n.split("|").every((function(e){return r.find((function(t){return"disjunctive"===t.type&&t.name===e}))}));return'\n <li>\n <label>\n <input\n type="checkbox"\n value="'.concat(n,'"\n ').concat(a?"checked":"","\n />\n ").concat(t,"\n </label>\n </li>\n ")}));i.innerHTML="<ul>".concat(o.join(""),"</ul>")}},dispose:function(){}}};return e.SearchClient=y,e.connectTaxonomyRefinementList=R,e.createTaxonomyRefinementListRenderer=P,e.exactNumberFieldSearch=k,e.exactStringFieldSearch=L,e.googleMaps=function(e){var t=e.container,n=e.renderInfo,r=e.transformHits||S,a="string"==typeof t?document.querySelector(t):t,i=null,o={},c=new google.maps.InfoWindow;return{init:function(){i=new google.maps.Map(a,{})},render:function(e){if(i){Object.keys(o).forEach((function(e){o[e].marker.setMap(null),delete o[e]}));var t=function(e,t){return e.map(t).filter((function(e){return null!=e&&null!==e.lat&&null!==e.lng}))}(e.results.hits,r);t.forEach((function(e){if(!o[e.hit.id]){var t=new google.maps.Marker({position:{lat:e.lat,lng:e.lng},map:i});n&&t.addListener("click",(function(){c.setContent(n(e)),c.open(i,t)})),t.setMap(i),o[e.hit.id]={marker:t,data:e}}})),function(e,t){e.fitBounds(t.reduce((function(e,t){return e.extend(new google.maps.LatLng(t.lat,t.lng)),e}),new google.maps.LatLngBounds))}(i,t)}},dispose:function(e){},getWidgetState:function(e,t){return e},getWidgetSearchParameters:function(e,t){return e}}},e.locationDistanceFilter=function(e){var t=e.container,n=e.miles||[5,10,20,50],r="km"===e.distanceUnit?"km":"miles";return{init:function(e){var a=e.helper,i=n.map((function(e){return function(e,t){return'<li class="ais-RefinementList-item">\n <label class="ais-RefinementList-label">\n <input class="ais-RefinementList-checkbox" type="checkbox" value='.concat(e,' />\n <span class="ais-RefinementList-labelText">').concat(e," ").concat(t,"</span>\n </label>\n </li>")}(e,r)})).join("\n");t.innerHTML='<div class="ais-RefinementList">\n <ul class="ais-RefinementList-list">\n '.concat(i,"\n </ul>\n </div>");var o=t.querySelectorAll("input[type=checkbox]");o.forEach((function(e){e.addEventListener("change",(function(t){var n=!1;o.forEach((function(t){t.value!==e.value&&(t.checked=!1),t.checked&&(n=!0)})),n?a.setQueryParameter("aroundRadius",t.target.value).search():a.setQueryParameter("aroundRadius").search()}))}))}}},e.makeFieldSearch=w,e.noop=x,e.placeAutocomplete=function(e){var t=e.container,n=e.placeholder;return{init:function(e){var r=e.helper;t.innerHTML='<input class="ais-SearchBox-input" type="search" placeholder='.concat(n,"/>");var a=t.querySelector("input[type=search]"),i=new google.maps.places.Autocomplete(a);i.setFields(["place_id","geometry","name","formatted_address"]);var o=new google.maps.Geocoder;i.addListener("place_changed",(function(){var e=i.getPlace();""!==e.name?e.place_id&&o.geocode({placeId:e.place_id},(function(e,t){if("OK"===t){var n=e[0].geometry.location;r.setQueryParameter("aroundLatLng","".concat(n.lat(),", ").concat(n.lng())).search()}else console.warn("Geocoder failed due to: ".concat(t))})):r.setQueryParameter("aroundLatLng").search()}))}}},e.searchBoxFields=function(e){return{init:function(t){var n;e.container.innerHTML=(n=e.attributes.map((function(e){return function(e){return'<li class="ais-RefinementList-item">\n <label class="ais-RefinementList-label">\n <input class="ais-RefinementList-checkbox" type="checkbox" value="'.concat(e.fieldName,'" checked />\n <span class="ais-RefinementList-labelText">').concat(e.title,"</span>\n </label>\n </li>")}(e)})).join("\n"),'<div class="ais-RefinementList">\n <ul class="ais-RefinementList-list">\n '.concat(n,"\n </ul>\n </div>"));e.container.querySelectorAll("input[type=checkbox]").forEach((function(n){n.addEventListener("change",(function(){!function(){var n=e.container.querySelectorAll("input[type=checkbox]:checked");if(n.length){for(var r=[],a=0;a<n.length;a+=1)r.push(n[a].getAttribute("value"));t.helper.setQueryParameter("restrictSearchableAttributes",r)}else t.helper.setQueryParameter("restrictSearchableAttributes");t.helper.search()}()}))}))}}},e.stringFieldSearch=A,e.taxonomyRefinementList=function(e){var n=P(e),r=R(n.render,n.dispose);return t(t({},r(e)),{$$widgetType:"cs.taxonomyRefinementList"})},Object.defineProperty(e,"__esModule",{value:!0}),e}({});
|