@211la/search-client 0.12.1 → 0.13.5

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
@@ -121,16 +121,16 @@ var sanitizeKeyword = function (keyword) {
121
121
  '/',
122
122
  ];
123
123
  characters.forEach(function (char) {
124
- keyword = keyword.replace(char, ' ');
124
+ keyword = keyword.replaceAll(char, ' ');
125
125
  });
126
- return keyword.replace(/\s+/g, ' ');
126
+ return keyword.replaceAll(/\s+/g, ' ');
127
127
  };
128
128
 
129
129
  function sanitizeForES(value) {
130
130
  return value
131
131
  .split(' ')
132
132
  .filter(Boolean)
133
- .map(function (term) { return sanitizeKeyword(term) + "*"; })
133
+ .map(function (term) { return "".concat(sanitizeKeyword(term), "*"); })
134
134
  .join(' ');
135
135
  }
136
136
  var keyword = (function (options, settings) {
@@ -140,14 +140,14 @@ var keyword = (function (options, settings) {
140
140
  }
141
141
  var splittedKeyword = options.query.split(':');
142
142
  var sanitizedKeyword = splittedKeyword.length > 1
143
- ? splittedKeyword[0] + ":" + sanitizeForES(splittedKeyword[1])
143
+ ? "".concat(splittedKeyword[0], ":").concat(sanitizeForES(splittedKeyword[1]))
144
144
  : sanitizeForES(options.query);
145
145
  var fields = options.restrictSearchableAttributes
146
146
  ? options.restrictSearchableAttributes
147
147
  : (_a = settings.keywordSearchFields) !== null && _a !== void 0 ? _a : [];
148
148
  var weightedFields = fields.map(function (field) {
149
149
  if (settings.fieldSettings && settings.fieldSettings[field]) {
150
- return field + "^" + settings.fieldSettings[field].boost;
150
+ return "".concat(field, "^").concat(settings.fieldSettings[field].boost);
151
151
  }
152
152
  return field;
153
153
  });
@@ -157,14 +157,19 @@ var keyword = (function (options, settings) {
157
157
  });
158
158
 
159
159
  var sanitizeFilterItem = function (item) {
160
- var _a = item.split(':'), key = _a[0], value = _a[1];
160
+ var colonIndex = item.indexOf(':');
161
+ if (colonIndex === -1) {
162
+ return item;
163
+ }
164
+ var key = item.substring(0, colonIndex);
165
+ var value = item.substring(colonIndex + 1);
161
166
  var sanitizedValue = sanitizeKeyword(value);
162
167
  sanitizedValue = sanitizedValue
163
168
  .split(' ')
164
169
  .filter(Boolean)
165
- .map(function (term) { return "" + term; })
170
+ .map(function (term) { return "".concat(term); })
166
171
  .join(' ');
167
- return key + ":" + sanitizedValue;
172
+ return "".concat(key, ":").concat(sanitizedValue);
168
173
  };
169
174
  var parseFilters = function (filters) {
170
175
  if (typeof filters === 'string') {
@@ -176,17 +181,81 @@ var parseFilters = function (filters) {
176
181
  return sanitizeFilterItem(item);
177
182
  }
178
183
  var sanitizedItems = item.map(function (i) { return sanitizeFilterItem(i); });
179
- return "(" + sanitizedItems.join(' OR ') + ")";
184
+ return "(".concat(sanitizedItems.join(' OR '), ")");
180
185
  })
181
186
  .join(' AND ');
182
187
  };
188
+ var normalizeCanadianPostalCode = function (postalCode) {
189
+ var match = postalCode.match(/^([A-Z]\d[A-Z])[\s-]?(\d[A-Z]\d)$/);
190
+ if (match) {
191
+ return "".concat(match[1], " ").concat(match[2]);
192
+ }
193
+ return null;
194
+ };
195
+ var buildZipCodeTermQuery = function (zipCode) {
196
+ var normalizedPostalCode = normalizeCanadianPostalCode(zipCode);
197
+ if (normalizedPostalCode) {
198
+ var zipPrefix = normalizedPostalCode.split(' ')[0];
199
+ var wildcardZip = "".concat(zipPrefix, " ***");
200
+ return {
201
+ bool: {
202
+ should: [
203
+ {
204
+ term: {
205
+ 'metadata.serviceAreaZipCodes.keyword': normalizedPostalCode,
206
+ },
207
+ },
208
+ {
209
+ term: {
210
+ 'metadata.serviceAreaZipCodes.keyword': wildcardZip,
211
+ },
212
+ },
213
+ ],
214
+ minimum_should_match: 1,
215
+ },
216
+ };
217
+ }
218
+ return {
219
+ term: {
220
+ 'metadata.serviceAreaZipCodes.keyword': zipCode,
221
+ },
222
+ };
223
+ };
183
224
  var facetFilters = (function (facetFilters) {
184
225
  if (!facetFilters || !facetFilters.length) {
185
226
  return null;
186
227
  }
228
+ var parsedFilters = parseFilters(facetFilters);
229
+ if (parsedFilters.includes('metadata.serviceAreaZipCodes')) {
230
+ var match = parsedFilters.match(/metadata\.serviceAreaZipCodes:"([^"]+)"/);
231
+ if (match) {
232
+ var zipCode = match[1].toUpperCase().trim();
233
+ var zipCodeQuery = buildZipCodeTermQuery(zipCode);
234
+ var remainingFilters = parsedFilters
235
+ .replace(/\(metadata\.serviceAreaZipCodes:"[^"]+"\)\s+AND\s+/g, '')
236
+ .replace(/\s+AND\s+\(metadata\.serviceAreaZipCodes:"[^"]+"\)/g, '')
237
+ .replace(/\(metadata\.serviceAreaZipCodes:"[^"]+"\)/g, '')
238
+ .trim();
239
+ if (remainingFilters) {
240
+ return {
241
+ bool: {
242
+ must: [
243
+ {
244
+ query_string: {
245
+ query: remainingFilters,
246
+ },
247
+ },
248
+ zipCodeQuery,
249
+ ],
250
+ },
251
+ };
252
+ }
253
+ return zipCodeQuery;
254
+ }
255
+ }
187
256
  return {
188
257
  query_string: {
189
- query: parseFilters(facetFilters),
258
+ query: parsedFilters,
190
259
  },
191
260
  };
192
261
  });
@@ -263,7 +332,7 @@ var buildQueryParams = function (settings, instantSearchParams) {
263
332
  query.aggregations = JSON.stringify(instantSearchParams.facets.reduce(function (aggregations, facet) {
264
333
  aggregations[facet] = {
265
334
  terms: {
266
- field: facet + ".keyword",
335
+ field: "".concat(facet, ".keyword"),
267
336
  min_doc_count: (instantSearchParams === null || instantSearchParams === void 0 ? void 0 : instantSearchParams.facetMinDocCount) || 0,
268
337
  size: 100,
269
338
  },
@@ -299,7 +368,7 @@ var wrapSubstringInTags = function (_a) {
299
368
  var text = _a.text, start = _a.start, length = _a.length, preTag = _a.preTag, postTag = _a.postTag;
300
369
  var before = text.slice(0, start);
301
370
  var after = text.slice(start + length);
302
- return "" + before + preTag + text.slice(start, start + length) + postTag + after;
371
+ return "".concat(before).concat(preTag).concat(text.slice(start, start + length)).concat(postTag).concat(after);
303
372
  };
304
373
  var matchTextWithQuery = function (value, query) {
305
374
  var keyword = query.options.query;
@@ -354,7 +423,7 @@ var highlight = function (query, hit) {
354
423
  deepSet(_highlightResult, field, matchTextWithQuery(value, query));
355
424
  }
356
425
  else {
357
- console.warn("The value of field \"" + field + "\" is not a string or an array of strings. Skipping highlighting for this field.");
426
+ console.warn("The value of field \"".concat(field, "\" is not a string or an array of strings. Skipping highlighting for this field."));
358
427
  }
359
428
  });
360
429
  if (query.isSearchableAttributesRestricted()) {
@@ -449,10 +518,10 @@ var SearchClient = (function () {
449
518
  if (!this.settings.token) {
450
519
  throw new Error('You must provide a valid SearchApi or PublicSearchApi token. Visit https://admin.211cs.org to create one.');
451
520
  }
452
- return [4, fetch("" + this.settings.endpoint + this.settings.searchUri, {
521
+ return [4, fetch("".concat(this.settings.endpoint).concat(this.settings.searchUri), {
453
522
  headers: {
454
523
  cache: 'no-cache',
455
- authorization: "SearchApi " + this.settings.token,
524
+ authorization: "SearchApi ".concat(this.settings.token),
456
525
  'content-type': 'application/json',
457
526
  },
458
527
  method: 'POST',
@@ -462,7 +531,7 @@ var SearchClient = (function () {
462
531
  response = _a.sent();
463
532
  if (response.status !== 200) {
464
533
  text = response.text();
465
- throw new Error("Unexpected status " + response.status + ": " + text);
534
+ throw new Error("Unexpected status ".concat(response.status, ": ").concat(text));
466
535
  }
467
536
  return [2, response.json()];
468
537
  }
@@ -619,7 +688,7 @@ var makeFieldSearch = function (exact, type) { return function (props) {
619
688
  var suffix = exact ? '' : '*';
620
689
  var init = function (opts) {
621
690
  var helper = opts.helper;
622
- container.innerHTML = "<input class=\"ais-SearchBox-input\" type=" + inputType + " placeholder=" + placeholder + " autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" maxlength=\"512\">";
691
+ container.innerHTML = "<input class=\"ais-SearchBox-input\" type=".concat(inputType, " placeholder=").concat(placeholder, " autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" maxlength=\"512\">");
623
692
  var input = container.querySelector('input');
624
693
  input.addEventListener('input', debouncer(function (value) {
625
694
  helper.clearRefinements(attribute);
@@ -637,8 +706,8 @@ var makeFieldSearch = function (exact, type) { return function (props) {
637
706
  };
638
707
  }; };
639
708
 
640
- var renderField = function (field) { return "<li class=\"ais-RefinementList-item\">\n <label class=\"ais-RefinementList-label\">\n <input class=\"ais-RefinementList-checkbox\" type=\"checkbox\" value=\"" + field.fieldName + "\" checked />\n <span class=\"ais-RefinementList-labelText\">" + field.title + "</span>\n </label>\n </li>"; };
641
- var renderContainer$1 = function (children) { return "<div class=\"ais-RefinementList\">\n <ul class=\"ais-RefinementList-list\">\n " + children + "\n </ul>\n </div>"; };
709
+ var renderField = function (field) { return "<li class=\"ais-RefinementList-item\">\n <label class=\"ais-RefinementList-label\">\n <input class=\"ais-RefinementList-checkbox\" type=\"checkbox\" value=\"".concat(field.fieldName, "\" checked />\n <span class=\"ais-RefinementList-labelText\">").concat(field.title, "</span>\n </label>\n </li>"); };
710
+ var renderContainer$1 = function (children) { return "<div class=\"ais-RefinementList\">\n <ul class=\"ais-RefinementList-list\">\n ".concat(children, "\n </ul>\n </div>"); };
642
711
  var searchBoxFields = function (params) { return ({
643
712
  init: function (initOptions) {
644
713
  params.container.innerHTML = renderContainer$1(params.attributes.map(function (field) { return renderField(field); }).join('\n'));
@@ -670,7 +739,7 @@ var placeAutocomplete = function (opts) {
670
739
  var container = opts.container, placeholder = opts.placeholder;
671
740
  var init = function (props) {
672
741
  var helper = props.helper;
673
- container.innerHTML = "<input class=\"ais-SearchBox-input\" type=\"search\" placeholder=" + placeholder + "/>";
742
+ container.innerHTML = "<input class=\"ais-SearchBox-input\" type=\"search\" placeholder=".concat(placeholder, "/>");
674
743
  var input = container.querySelector('input[type=search]');
675
744
  var autocomplete = new google.maps.places.Autocomplete(input);
676
745
  autocomplete.setFields([
@@ -691,12 +760,12 @@ var placeAutocomplete = function (opts) {
691
760
  }
692
761
  geocoder.geocode({ placeId: place.place_id }, function (results, status) {
693
762
  if (status !== 'OK') {
694
- console.warn("Geocoder failed due to: " + status);
763
+ console.warn("Geocoder failed due to: ".concat(status));
695
764
  return;
696
765
  }
697
766
  var location = results[0].geometry.location;
698
767
  helper
699
- .setQueryParameter('aroundLatLng', location.lat() + ", " + location.lng())
768
+ .setQueryParameter('aroundLatLng', "".concat(location.lat(), ", ").concat(location.lng()))
700
769
  .search();
701
770
  });
702
771
  });
@@ -706,8 +775,8 @@ var placeAutocomplete = function (opts) {
706
775
  };
707
776
  };
708
777
 
709
- var renderMileItem = function (n) { return "<li class=\"ais-RefinementList-item\">\n <label class=\"ais-RefinementList-label\">\n <input class=\"ais-RefinementList-checkbox\" type=\"checkbox\" value=" + n + " />\n <span class=\"ais-RefinementList-labelText\">" + n + " miles</span>\n </label>\n </li>"; };
710
- var renderContainer = function (children) { return "<div class=\"ais-RefinementList\">\n <ul class=\"ais-RefinementList-list\">\n " + children + "\n </ul>\n </div>"; };
778
+ var renderMileItem = function (n) { 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, " miles</span>\n </label>\n </li>"); };
779
+ var renderContainer = function (children) { return "<div class=\"ais-RefinementList\">\n <ul class=\"ais-RefinementList-list\">\n ".concat(children, "\n </ul>\n </div>"); };
711
780
  var locationDistanceFilter = function (props) {
712
781
  var container = props.container;
713
782
  var miles = props.miles || [5, 10, 20, 50];
@@ -830,9 +899,9 @@ var createTaxonomyRefinementListRenderer = function (widgetParams) { return ({
830
899
  return item.type === 'disjunctive' && item.name === code;
831
900
  });
832
901
  });
833
- return "\n <li>\n <label>\n <input\n type=\"checkbox\"\n value=\"" + value + "\"\n " + (isRefined ? 'checked' : '') + "\n />\n " + staticLabel + "\n </label>\n </li>\n ";
902
+ return "\n <li>\n <label>\n <input\n type=\"checkbox\"\n value=\"".concat(value, "\"\n ").concat(isRefined ? 'checked' : '', "\n />\n ").concat(staticLabel, "\n </label>\n </li>\n ");
834
903
  });
835
- container.innerHTML = "<ul>" + list.join('') + "</ul>";
904
+ container.innerHTML = "<ul>".concat(list.join(''), "</ul>");
836
905
  },
837
906
  dispose: function () { },
838
907
  }); };
@@ -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 i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},t.apply(this,arguments)};function n(e,t,n,r){return new(n||(n=Promise))((function(i,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((r=r.apply(e,t||[])).next())}))}function r(e,t){var n,r,i,a,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(i=2&a[0]?r.return:a[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,a[1])).done)return i;switch(r=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,r=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]<i[3])){o.label=a[1];break}if(6===a[0]&&o.label<i[1]){o.label=i[1],i=a;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(a);break}i[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],r=0}finally{n=i=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}}var i=function(e){var t=e.indexOf(".");return-1===t?[e]:[e.slice(0,t),e.slice(t+1)]},a=function(e,t,n){var r=i(t);if(1!==r.length){var o=r[0],s=r[1];e[o]||(e[o]={}),a(e[o],s,n)}else e[r[0]]=n},o=function(e,t){var n=i(t);if(1===n.length){var r=e[n[0]];return void 0===r?null:r}var a=n[0],s=n[1],c=e[a];return c?o(c,s):null},s=function(e){return["+"," -","&&","||","!","(",")","{","}","[","]","^","~","*","?",":","/"].forEach((function(t){e=e.replace(t," ")})),e.replace(/\s+/g," ")};function c(e){return e.split(" ").filter(Boolean).map((function(e){return s(e)+"*"})).join(" ")}var u=function(e,n){var r;if(!e.query)return null;var i=e.query.split(":"),a=i.length>1?i[0]+":"+c(i[1]):c(e.query),o=(e.restrictSearchableAttributes?e.restrictSearchableAttributes:null!==(r=n.keywordSearchFields)&&void 0!==r?r:[]).map((function(e){return n.fieldSettings&&n.fieldSettings[e]?e+"^"+n.fieldSettings[e].boost:e}));return{query_string:t({query:a,default_operator:"AND"},o.length&&{fields:o})}},l=function(e){var t=e.split(":"),n=t[0],r=t[1],i=s(r);return n+":"+(i=i.split(" ").filter(Boolean).map((function(e){return""+e})).join(" "))},f=function(e){return e&&e.length?{query_string:{query:(t=e,"string"==typeof t?t:t.map((function(e){return"string"==typeof e?l(e):"("+e.map((function(e){return l(e)})).join(" OR ")+")"})).join(" AND "))}}:null;var t},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),i={query:"string"==typeof r?r:JSON.stringify(r)};e.networkId&&(i.networkId=e.networkId),e.sortByDistance&&(i.sortByDistance=e.sortByDistance),e.zipcode&&(i.zipcode=e.zipcode),t.filters&&(i.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 a=t.hitsPerPage||20;if(i.$limit=a,i.$skip=a&&a*t.page||0,t.aroundLatLng&&t.aroundRadius){var o=t.aroundLatLng.split(",",2).map((function(e){return parseFloat(e.trim())})),s=o[0],c=o[1];i.distance=Number(t.aroundRadius),i.distanceUnit="mi",i.lat=s,i.lon=c}return t.openNow&&(i.openAtDay=t.openAtDay,i.openAtMinute=t.openAtMinute),t.facets&&t.facets.length&&(i.aggregations=JSON.stringify(t.facets.reduce((function(e,n){return e[n]={terms:{field:n+".keyword",min_doc_count:(null==t?void 0:t.facetMinDocCount)||0,size:100}},e}),{}))),i},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 i,a,o,s,c,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:(i={text:r,start:d,length:n.length,preTag:t.options.highlightPreTag,postTag:t.options.highlightPostTag},a=i.text,o=i.start,s=i.length,c=i.preTag,u=i.postTag,l=a.slice(0,o),f=a.slice(o+s),""+l+c+a.slice(o,o+s)+u+f)}},g=function(e,n){return n.map((function(n){return function(e,n){var r={};return e.getKeywordSearchFields().forEach((function(t){var i=o(n,t);i&&(Array.isArray(i)&&i.length>0&&"string"==typeof i[0]?a(r,t,i.map((function(t){return p(t,e)}))):"string"==typeof i?a(r,t,p(i,e)):console.warn('The value of field "'+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)||a(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(""+this.settings.endpoint+this.settings.searchUri,{headers:{cache:"no-cache",authorization:"SearchApi "+this.settings.token,"content-type":"application/json"},method:"POST",body:JSON.stringify({search:e})})];case 1:if(200!==(t=r.sent()).status)throw n=t.text(),new Error("Unexpected status "+t.status+": "+n);return[2,t.json()]}}))}))},e.prototype.searchForFacetValues=function(e){return n(this,void 0,void 0,(function(){var i=this;return r(this,(function(a){return[2,Promise.all(e.map((function(a){return n(i,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[a.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}},L=function(e,t){return function(n){var r,i=n.container,a=n.attribute,o=n.placeholder||"",s=(r=n.debounce||200,function(e){var t=null;return function(n){null!==t&&(clearTimeout(t),t=null);var i=n.target.value;t=setTimeout((function(){e(i),t=null}),r)}}),c=t&&"number"===t?"number":"search",u=e?"":"*";return{init:function(e){var t=e.helper;i.innerHTML='<input class="ais-SearchBox-input" type='+c+" placeholder="+o+' autocomplete="off" autocorrect="off" autocapitalize="off" maxlength="512">',i.querySelector("input").addEventListener("input",s((function(e){t.clearRefinements(a),e&&t.addFacetRefinement(a,[e+u]),t.search()})))},getWidgetSearchParameters:function(e){return e.addFacet(a)}}}},w=function(e){return'<li class="ais-RefinementList-item">\n <label class="ais-RefinementList-label">\n <input class="ais-RefinementList-checkbox" type="checkbox" value='+e+' />\n <span class="ais-RefinementList-labelText">'+e+" miles</span>\n </label>\n </li>"},R=L(!0,"number"),k=L(!0,"string"),x=L(!1,"string"),P=function(){};function A(e,n){return void 0===n&&(n=P),function(r){var i=r.attribute,a=r.transformItems,o=void 0===a?function(e){return e}:a;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[i]=this.getWidgetRenderState(n),r))})},getWidgetRenderState:function(e){var t=e.results,n=e.helper,a=function(e){e.split("|").forEach((function(e){return n.isDisjunctiveRefined(i,e)?n.removeDisjunctiveFacetRefinement(i,e):n.addDisjunctiveFacetRefinement(i,e)})),n.search()};return t?{items:o(t.getRefinements(i)),refine:a,widgetParams:r}:{items:[],refine:a,widgetParams:r}},getWidgetUiState:function(e,n){var r,a=n.searchParameters;return t(t({},e),{taxonomyRefinementList:t(t({},e.taxonomyRefinementList),(r={},r[i]=a.getRefinements(i),r))})},getWidgetSearchParameters:function(e){return e.addDisjunctiveFacet(i)},dispose:function(){n()}}}}var q=function(e){return{render:function(t,n){var r=t.items,i=t.refine,a="string"==typeof e.container?document.querySelector(e.container):e.container;if(n)a.addEventListener("click",(function(e){if(e.target instanceof HTMLElement){var t=e.target.closest("input");t&&i(t.value)}}));else{var o=e.items.map((function(e){var t=e.label,n=e.value,i=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="'+n+'"\n '+(i?"checked":"")+"\n />\n "+t+"\n </label>\n </li>\n "}));a.innerHTML="<ul>"+o.join("")+"</ul>"}},dispose:function(){}}};return e.SearchClient=y,e.connectTaxonomyRefinementList=A,e.createTaxonomyRefinementListRenderer=q,e.exactNumberFieldSearch=R,e.exactStringFieldSearch=k,e.googleMaps=function(e){var t=e.container,n=e.renderInfo,r=e.transformHits||S,i="string"==typeof t?document.querySelector(t):t,a=null,o={},s=new google.maps.InfoWindow;return{init:function(){a=new google.maps.Map(i,{})},render:function(e){if(a){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:a});n&&t.addListener("click",(function(){s.setContent(n(e)),s.open(a,t)})),t.setMap(a),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))}(a,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,i=n.map(w).join("\n");t.innerHTML='<div class="ais-RefinementList">\n <ul class="ais-RefinementList-list">\n '+i+"\n </ul>\n </div>";var a=t.querySelectorAll("input[type=checkbox]");a.forEach((function(e){e.addEventListener("change",(function(t){var n=!1;a.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=L,e.noop=P,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='+n+"/>";var i=t.querySelector("input[type=search]"),a=new google.maps.places.Autocomplete(i);a.setFields(["place_id","geometry","name","formatted_address"]);var o=new google.maps.Geocoder;a.addListener("place_changed",(function(){var e=a.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",n.lat()+", "+n.lng()).search()}else console.warn("Geocoder failed due to: "+t)})):r.setQueryParameter("aroundLatLng").search()}))}}},e.searchBoxFields=function(e){return{init:function(t){e.container.innerHTML='<div class="ais-RefinementList">\n <ul class="ais-RefinementList-list">\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="'+e.fieldName+'" checked />\n <span class="ais-RefinementList-labelText">'+e.title+"</span>\n </label>\n </li>"}(e)})).join("\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=[],i=0;i<n.length;i+=1)r.push(n[i].getAttribute("value"));t.helper.setQueryParameter("restrictSearchableAttributes",r)}else t.helper.setQueryParameter("restrictSearchableAttributes");t.helper.search()}()}))}))}}},e.stringFieldSearch=x,e.taxonomyRefinementList=function(e){var n=q(e),r=A(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 i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},t.apply(this,arguments)};function n(e,t,n,r){return new(n||(n=Promise))((function(i,a){function o(e){try{s(r.next(e))}catch(e){a(e)}}function c(e){try{s(r.throw(e))}catch(e){a(e)}}function s(e){var t;e.done?i(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,i,a,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(a){return function(c){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(i=2&a[0]?r.return:a[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,a[1])).done)return i;switch(r=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,r=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]<i[3])){o.label=a[1];break}if(6===a[0]&&o.label<i[1]){o.label=i[1],i=a;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(a);break}i[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],r=0}finally{n=i=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}}var i=function(e){var t=e.indexOf(".");return-1===t?[e]:[e.slice(0,t),e.slice(t+1)]},a=function(e,t,n){var r=i(t);if(1!==r.length){var o=r[0],c=r[1];e[o]||(e[o]={}),a(e[o],c,n)}else e[r[0]]=n},o=function(e,t){var n=i(t);if(1===n.length){var r=e[n[0]];return void 0===r?null:r}var a=n[0],c=n[1],s=e[a];return s?o(s,c):null},c=function(e){return["+"," -","&&","||","!","(",")","{","}","[","]","^","~","*","?",":","/"].forEach((function(t){e=e.replaceAll(t," ")})),e.replaceAll(/\s+/g," ")};function s(e){return e.split(" ").filter(Boolean).map((function(e){return"".concat(c(e),"*")})).join(" ")}var u=function(e,n){var r;if(!e.query)return null;var i=e.query.split(":"),a=i.length>1?"".concat(i[0],":").concat(s(i[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:a,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),i=c(r);return i=i.split(" ").filter(Boolean).map((function(e){return"".concat(e)})).join(" "),"".concat(n,":").concat(i)},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 i=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.split(" ")[0];return{bool:{should:[{term:{"metadata.serviceAreaZipCodes.keyword":n}},{term:{"metadata.serviceAreaZipCodes.keyword":"".concat(r," ***")}}],minimum_should_match:1}}}return{term:{"metadata.serviceAreaZipCodes.keyword":e}}}(r[1].toUpperCase().trim()),a=n.replace(/\(metadata\.serviceAreaZipCodes:"[^"]+"\)\s+AND\s+/g,"").replace(/\s+AND\s+\(metadata\.serviceAreaZipCodes:"[^"]+"\)/g,"").replace(/\(metadata\.serviceAreaZipCodes:"[^"]+"\)/g,"").trim();return a?{bool:{must:[{query_string:{query:a}},i]}}:i}}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),i={query:"string"==typeof r?r:JSON.stringify(r)};e.networkId&&(i.networkId=e.networkId),e.sortByDistance&&(i.sortByDistance=e.sortByDistance),e.zipcode&&(i.zipcode=e.zipcode),t.filters&&(i.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 a=t.hitsPerPage||20;if(i.$limit=a,i.$skip=a&&a*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];i.distance=Number(t.aroundRadius),i.distanceUnit="mi",i.lat=c,i.lon=s}return t.openNow&&(i.openAtDay=t.openAtDay,i.openAtMinute=t.openAtMinute),t.facets&&t.facets.length&&(i.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}),{}))),i},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 i,a,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:(i={text:r,start:d,length:n.length,preTag:t.options.highlightPreTag,postTag:t.options.highlightPostTag},a=i.text,o=i.start,c=i.length,s=i.preTag,u=i.postTag,l=a.slice(0,o),f=a.slice(o+c),"".concat(l).concat(s).concat(a.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 i=o(n,t);i&&(Array.isArray(i)&&i.length>0&&"string"==typeof i[0]?a(r,t,i.map((function(t){return p(t,e)}))):"string"==typeof i?a(r,t,p(i,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)||a(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"},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 i=this;return r(this,(function(a){return[2,Promise.all(e.map((function(a){return n(i,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[a.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,i=n.container,a=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 i=n.target.value;t=setTimeout((function(){e(i),t=null}),r)}}),s=t&&"number"===t?"number":"search",u=e?"":"*";return{init:function(e){var t=e.helper;i.innerHTML='<input class="ais-SearchBox-input" type='.concat(s," placeholder=").concat(o,' autocomplete="off" autocorrect="off" autocapitalize="off" maxlength="512">'),i.querySelector("input").addEventListener("input",c((function(e){t.clearRefinements(a),e&&t.addFacetRefinement(a,[e+u]),t.search()})))},getWidgetSearchParameters:function(e){return e.addFacet(a)}}}},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"),A=w(!0,"string"),R=w(!1,"string"),x=function(){};function P(e,n){return void 0===n&&(n=x),function(r){var i=r.attribute,a=r.transformItems,o=void 0===a?function(e){return e}:a;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[i]=this.getWidgetRenderState(n),r))})},getWidgetRenderState:function(e){var t=e.results,n=e.helper,a=function(e){e.split("|").forEach((function(e){return n.isDisjunctiveRefined(i,e)?n.removeDisjunctiveFacetRefinement(i,e):n.addDisjunctiveFacetRefinement(i,e)})),n.search()};return t?{items:o(t.getRefinements(i)),refine:a,widgetParams:r}:{items:[],refine:a,widgetParams:r}},getWidgetUiState:function(e,n){var r,a=n.searchParameters;return t(t({},e),{taxonomyRefinementList:t(t({},e.taxonomyRefinementList),(r={},r[i]=a.getRefinements(i),r))})},getWidgetSearchParameters:function(e){return e.addDisjunctiveFacet(i)},dispose:function(){n()}}}}var q=function(e){return{render:function(t,n){var r=t.items,i=t.refine,a="string"==typeof e.container?document.querySelector(e.container):e.container;if(n)a.addEventListener("click",(function(e){if(e.target instanceof HTMLElement){var t=e.target.closest("input");t&&i(t.value)}}));else{var o=e.items.map((function(e){var t=e.label,n=e.value,i=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(i?"checked":"","\n />\n ").concat(t,"\n </label>\n </li>\n ")}));a.innerHTML="<ul>".concat(o.join(""),"</ul>")}},dispose:function(){}}};return e.SearchClient=y,e.connectTaxonomyRefinementList=P,e.createTaxonomyRefinementListRenderer=q,e.exactNumberFieldSearch=k,e.exactStringFieldSearch=A,e.googleMaps=function(e){var t=e.container,n=e.renderInfo,r=e.transformHits||S,i="string"==typeof t?document.querySelector(t):t,a=null,o={},c=new google.maps.InfoWindow;return{init:function(){a=new google.maps.Map(i,{})},render:function(e){if(a){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:a});n&&t.addListener("click",(function(){c.setContent(n(e)),c.open(a,t)})),t.setMap(a),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))}(a,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,i=n.map(L).join("\n");t.innerHTML='<div class="ais-RefinementList">\n <ul class="ais-RefinementList-list">\n '.concat(i,"\n </ul>\n </div>");var a=t.querySelectorAll("input[type=checkbox]");a.forEach((function(e){e.addEventListener("change",(function(t){var n=!1;a.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=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 i=t.querySelector("input[type=search]"),a=new google.maps.places.Autocomplete(i);a.setFields(["place_id","geometry","name","formatted_address"]);var o=new google.maps.Geocoder;a.addListener("place_changed",(function(){var e=a.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=[],i=0;i<n.length;i+=1)r.push(n[i].getAttribute("value"));t.helper.setQueryParameter("restrictSearchableAttributes",r)}else t.helper.setQueryParameter("restrictSearchableAttributes");t.helper.search()}()}))}))}}},e.stringFieldSearch=R,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}({});
@@ -1,6 +1,6 @@
1
- export declare type FieldSetting = {
1
+ export type FieldSetting = {
2
2
  boost: number;
3
3
  };
4
- export declare type FieldSettings = {
4
+ export type FieldSettings = {
5
5
  [key: string]: FieldSetting;
6
6
  };
@@ -1,4 +1,4 @@
1
- export declare type FacetHit = {
1
+ export type FacetHit = {
2
2
  readonly value: string;
3
3
  readonly highlighted: string;
4
4
  readonly count: number;
@@ -1,3 +1,3 @@
1
- export declare type ESFilter = {
1
+ export type ESFilter = {
2
2
  [key: string]: string | Record<string, unknown> | string[] | number | boolean;
3
3
  };
@@ -1,20 +1,20 @@
1
- declare type HighlightMatch = {
1
+ type HighlightMatch = {
2
2
  readonly value: string;
3
3
  readonly matchLevel: 'none' | 'partial' | 'full';
4
4
  readonly matchedWords: readonly string[];
5
5
  readonly fullyHighlighted?: boolean;
6
6
  };
7
- export declare type HighlightResult<THit> = THit extends string | number ? HighlightMatch : {
7
+ export type HighlightResult<THit> = THit extends string | number ? HighlightMatch : {
8
8
  [KAttribute in keyof THit]?: HighlightResult<THit[KAttribute]>;
9
9
  };
10
- declare type SnippetMatch = {
10
+ type SnippetMatch = {
11
11
  readonly value: string;
12
12
  readonly matchLevel: 'none' | 'partial' | 'full';
13
13
  };
14
- export declare type SnippetResult<THit> = THit extends string | number ? SnippetMatch : {
14
+ export type SnippetResult<THit> = THit extends string | number ? SnippetMatch : {
15
15
  [KAttribute in keyof THit]: SnippetResult<THit[KAttribute]>;
16
16
  };
17
- export declare type RankingInfo = {
17
+ export type RankingInfo = {
18
18
  readonly promoted: boolean;
19
19
  readonly nbTypos: number;
20
20
  readonly firstMatchedWord: number;
@@ -36,7 +36,7 @@ export declare type RankingInfo = {
36
36
  readonly score: number;
37
37
  };
38
38
  };
39
- export declare type Hit<THit> = THit & {
39
+ export type Hit<THit> = THit & {
40
40
  readonly objectID: string;
41
41
  readonly _highlightResult?: HighlightResult<THit>;
42
42
  readonly _snippetResult?: SnippetResult<THit>;
@@ -1,5 +1,5 @@
1
1
  export declare const StrategyEnum: Readonly<Record<string, StrategyType>>;
2
- export declare type StrategyType = 'none' | 'stopIfEnoughMatches';
3
- export declare type MultipleQueriesOptions = {
2
+ export type StrategyType = 'none' | 'stopIfEnoughMatches';
3
+ export type MultipleQueriesOptions = {
4
4
  readonly strategy?: StrategyType;
5
5
  };
@@ -1,17 +1,17 @@
1
1
  import { SearchOptions } from './SearchOptions';
2
- export declare type SharedMultipleQueriesQuery = {
2
+ export type SharedMultipleQueriesQuery = {
3
3
  readonly type?: 'default' | 'facet';
4
4
  readonly indexName: string;
5
5
  readonly params?: SearchOptions;
6
6
  readonly query?: string;
7
7
  };
8
- export declare type FacetQuery = {
8
+ export type FacetQuery = {
9
9
  readonly type: 'facet';
10
10
  readonly facet: string;
11
11
  readonly params?: SharedMultipleQueriesQuery['params'] & {
12
12
  readonly facetQuery?: string;
13
13
  };
14
14
  };
15
- export declare type MultipleQueriesQuery = SharedMultipleQueriesQuery & ({
15
+ export type MultipleQueriesQuery = SharedMultipleQueriesQuery & ({
16
16
  readonly type?: 'default';
17
17
  } | FacetQuery);
@@ -1,4 +1,4 @@
1
1
  import { SearchResponse } from './SearchResponse';
2
- export declare type MultipleQueriesResponse<TObject> = {
2
+ export type MultipleQueriesResponse<TObject> = {
3
3
  results: Array<SearchResponse<TObject>>;
4
4
  };
@@ -1,5 +1,5 @@
1
1
  import { SearchOptions } from './SearchOptions';
2
- export declare type SearchForFacetValuesQueryParams = {
2
+ export type SearchForFacetValuesQueryParams = {
3
3
  readonly facetName: string;
4
4
  readonly facetQuery: string;
5
5
  facetMinDocCount?: number;
@@ -1,5 +1,5 @@
1
1
  import { FacetHit } from './FacetHit';
2
- export declare type SearchForFacetValuesResponse = {
2
+ export type SearchForFacetValuesResponse = {
3
3
  facetHits: FacetHit[];
4
4
  exhaustiveFacetsCount: boolean;
5
5
  processingTimeMS?: number;
@@ -1,4 +1,4 @@
1
- export declare type SearchOptions = {
1
+ export type SearchOptions = {
2
2
  readonly query?: string;
3
3
  readonly similarQuery?: string;
4
4
  readonly facetFilters?: string | readonly string[] | ReadonlyArray<string | readonly string[]>;
@@ -1,6 +1,6 @@
1
1
  import { Hit } from './Hit';
2
2
  import { Settings } from './Settings';
3
- export declare type SearchResponse<TObject = Record<string, unknown>> = {
3
+ export type SearchResponse<TObject = Record<string, unknown>> = {
4
4
  hits: Array<Hit<TObject>>;
5
5
  page: number;
6
6
  length?: number;
@@ -1,4 +1,4 @@
1
- export declare type Settings = {
1
+ export type Settings = {
2
2
  readonly searchableAttributes?: readonly string[];
3
3
  readonly attributesToIndex?: readonly string[];
4
4
  readonly attributesForFaceting?: readonly string[];
@@ -1,5 +1,5 @@
1
- declare type Coordinates = [number, number];
2
- declare type Polygon = Coordinates[];
1
+ type Coordinates = [number, number];
2
+ type Polygon = Coordinates[];
3
3
  export interface Area {
4
4
  type: 'Polygon' | 'Multipolygon';
5
5
  coordinates: Polygon[];
@@ -1,4 +1,4 @@
1
- export declare type SearchQueryParams = {
1
+ export type SearchQueryParams = {
2
2
  query: string;
3
3
  filters?: string;
4
4
  aggregations?: string;
@@ -1,9 +1,9 @@
1
1
  import { IndexedResource } from './IndexedResource';
2
- declare type AggregationBucket = {
2
+ type AggregationBucket = {
3
3
  key: string;
4
4
  doc_count: number;
5
5
  };
6
- export declare type SearchResponse = {
6
+ export type SearchResponse = {
7
7
  __meta: {
8
8
  total: number;
9
9
  perPage: number;
@@ -1,8 +1,8 @@
1
- declare type TaxonomyRefinementItem = {
1
+ type TaxonomyRefinementItem = {
2
2
  label: string;
3
3
  value: string;
4
4
  };
5
- export declare type TaxonomyRefinementListParams = {
5
+ export type TaxonomyRefinementListParams = {
6
6
  container: HTMLElement | string;
7
7
  attribute: string;
8
8
  items: TaxonomyRefinementItem[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@211la/search-client",
3
- "version": "0.12.1",
3
+ "version": "0.13.5",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/types/index.d.ts",
6
6
  "files": [
@@ -8,9 +8,11 @@
8
8
  ],
9
9
  "scripts": {
10
10
  "lint": "eslint . --ext .ts",
11
+ "tsc": "tsc --noEmit",
11
12
  "test": "jest --config jest-config.json",
12
13
  "test:watch": "jest --config jest-config.json --watchAll",
13
- "build": "rm -rf ./dist && rollup -c && tsc --p ./tsconfig.build.json --emitDeclarationOnly"
14
+ "build": "rm -rf ./dist && rollup -c && tsc --p ./tsconfig.build.json --emitDeclarationOnly",
15
+ "build:watch": "rollup -c --watch"
14
16
  },
15
17
  "peerDependencies": {
16
18
  "instantsearch.js": "4.x"
@@ -25,9 +27,9 @@
25
27
  "ts-jest": "^26.4.4",
26
28
  "ts-loader": "^8.0.12",
27
29
  "tslib": "^2.3.0",
28
- "typescript": "^4.0.5"
30
+ "typescript": "^4.9.5"
29
31
  },
30
32
  "dependencies": {
31
33
  "qs": "^6.11.2"
32
34
  }
33
- }
35
+ }