@211la/search-client 0.13.0 → 0.13.6
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 +67 -106
- package/dist/search-client.min.js +1 -1
- package/dist/types/types/FieldSettings.d.ts +2 -2
- package/dist/types/types/algolia/FacetHit.d.ts +1 -1
- package/dist/types/types/algolia/Filter.d.ts +1 -1
- package/dist/types/types/algolia/Hit.d.ts +6 -6
- package/dist/types/types/algolia/MultipleQueriesOptions.d.ts +2 -2
- package/dist/types/types/algolia/MultipleQueriesQuery.d.ts +3 -3
- package/dist/types/types/algolia/MultipleQueriesResponse.d.ts +1 -1
- package/dist/types/types/algolia/SearchForFacetValuesQueryParams.d.ts +1 -1
- package/dist/types/types/algolia/SearchForFacetValuesResponse.d.ts +1 -1
- package/dist/types/types/algolia/SearchOptions.d.ts +1 -1
- package/dist/types/types/algolia/SearchResponse.d.ts +1 -1
- package/dist/types/types/algolia/Settings.d.ts +1 -1
- package/dist/types/types/nexus211/Area.d.ts +2 -2
- package/dist/types/types/nexus211/SearchQueryParams.d.ts +1 -1
- package/dist/types/types/nexus211/SearchResponse.d.ts +2 -2
- package/dist/types/widgets/taxonomyRefinementList/types.d.ts +2 -2
- package/package.json +4 -3
package/dist/index.js
CHANGED
|
@@ -60,16 +60,6 @@ function __generator(thisArg, body) {
|
|
|
60
60
|
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
61
61
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
62
62
|
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
function __spreadArray(to, from, pack) {
|
|
66
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
67
|
-
if (ar || !(i in from)) {
|
|
68
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
69
|
-
ar[i] = from[i];
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
return to.concat(ar || from);
|
|
73
63
|
}
|
|
74
64
|
|
|
75
65
|
var INDEX_NAME = 'instant_search';
|
|
@@ -140,7 +130,7 @@ function sanitizeForES(value) {
|
|
|
140
130
|
return value
|
|
141
131
|
.split(' ')
|
|
142
132
|
.filter(Boolean)
|
|
143
|
-
.map(function (term) { return sanitizeKeyword(term)
|
|
133
|
+
.map(function (term) { return "".concat(sanitizeKeyword(term), "*"); })
|
|
144
134
|
.join(' ');
|
|
145
135
|
}
|
|
146
136
|
var keyword = (function (options, settings) {
|
|
@@ -150,14 +140,14 @@ var keyword = (function (options, settings) {
|
|
|
150
140
|
}
|
|
151
141
|
var splittedKeyword = options.query.split(':');
|
|
152
142
|
var sanitizedKeyword = splittedKeyword.length > 1
|
|
153
|
-
? splittedKeyword[0]
|
|
143
|
+
? "".concat(splittedKeyword[0], ":").concat(sanitizeForES(splittedKeyword[1]))
|
|
154
144
|
: sanitizeForES(options.query);
|
|
155
145
|
var fields = options.restrictSearchableAttributes
|
|
156
146
|
? options.restrictSearchableAttributes
|
|
157
147
|
: (_a = settings.keywordSearchFields) !== null && _a !== void 0 ? _a : [];
|
|
158
148
|
var weightedFields = fields.map(function (field) {
|
|
159
149
|
if (settings.fieldSettings && settings.fieldSettings[field]) {
|
|
160
|
-
return field
|
|
150
|
+
return "".concat(field, "^").concat(settings.fieldSettings[field].boost);
|
|
161
151
|
}
|
|
162
152
|
return field;
|
|
163
153
|
});
|
|
@@ -177,14 +167,28 @@ var sanitizeFilterItem = function (item) {
|
|
|
177
167
|
sanitizedValue = sanitizedValue
|
|
178
168
|
.split(' ')
|
|
179
169
|
.filter(Boolean)
|
|
180
|
-
.map(function (term) { return ""
|
|
170
|
+
.map(function (term) { return "".concat(term); })
|
|
181
171
|
.join(' ');
|
|
182
|
-
return key
|
|
172
|
+
return "".concat(key, ":").concat(sanitizedValue);
|
|
173
|
+
};
|
|
174
|
+
var parseFilters = function (filters) {
|
|
175
|
+
if (typeof filters === 'string') {
|
|
176
|
+
return filters;
|
|
177
|
+
}
|
|
178
|
+
return filters
|
|
179
|
+
.map(function (item) {
|
|
180
|
+
if (typeof item === 'string') {
|
|
181
|
+
return sanitizeFilterItem(item);
|
|
182
|
+
}
|
|
183
|
+
var sanitizedItems = item.map(function (i) { return sanitizeFilterItem(i); });
|
|
184
|
+
return "(".concat(sanitizedItems.join(' OR '), ")");
|
|
185
|
+
})
|
|
186
|
+
.join(' AND ');
|
|
183
187
|
};
|
|
184
188
|
var normalizeCanadianPostalCode = function (postalCode) {
|
|
185
189
|
var match = postalCode.match(/^([A-Z]\d[A-Z])[\s-]?(\d[A-Z]\d)$/);
|
|
186
190
|
if (match) {
|
|
187
|
-
return match[1]
|
|
191
|
+
return "".concat(match[1], " ").concat(match[2]);
|
|
188
192
|
}
|
|
189
193
|
return null;
|
|
190
194
|
};
|
|
@@ -192,7 +196,7 @@ var buildZipCodeTermQuery = function (zipCode) {
|
|
|
192
196
|
var normalizedPostalCode = normalizeCanadianPostalCode(zipCode);
|
|
193
197
|
if (normalizedPostalCode) {
|
|
194
198
|
var zipPrefix = normalizedPostalCode.split(' ')[0];
|
|
195
|
-
var wildcardZip = zipPrefix
|
|
199
|
+
var wildcardZip = "".concat(zipPrefix, " ***");
|
|
196
200
|
return {
|
|
197
201
|
bool: {
|
|
198
202
|
should: [
|
|
@@ -217,86 +221,43 @@ var buildZipCodeTermQuery = function (zipCode) {
|
|
|
217
221
|
},
|
|
218
222
|
};
|
|
219
223
|
};
|
|
220
|
-
var isZipCodeFilter = function (filter) {
|
|
221
|
-
return filter.includes('metadata.serviceAreaZipCodes:');
|
|
222
|
-
};
|
|
223
|
-
var extractZipCodeValue = function (filter) {
|
|
224
|
-
var match = filter.match(/metadata\.serviceAreaZipCodes:"([^"]+)"/);
|
|
225
|
-
return match ? match[1] : null;
|
|
226
|
-
};
|
|
227
|
-
var buildQueryFromFilters = function (filters, zipCodeQuery) {
|
|
228
|
-
var queries = [];
|
|
229
|
-
if (filters.length > 0) {
|
|
230
|
-
var queryStringParts = [];
|
|
231
|
-
for (var _i = 0, filters_1 = filters; _i < filters_1.length; _i++) {
|
|
232
|
-
var item = filters_1[_i];
|
|
233
|
-
if (typeof item === 'string') {
|
|
234
|
-
queryStringParts.push(sanitizeFilterItem(item));
|
|
235
|
-
}
|
|
236
|
-
else {
|
|
237
|
-
var sanitizedItems = item.map(function (i) { return sanitizeFilterItem(i); });
|
|
238
|
-
queryStringParts.push("(" + sanitizedItems.join(' OR ') + ")");
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
if (queryStringParts.length > 0) {
|
|
242
|
-
queries.push({
|
|
243
|
-
query_string: {
|
|
244
|
-
query: queryStringParts.join(' AND '),
|
|
245
|
-
},
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
if (zipCodeQuery) {
|
|
250
|
-
queries.push(zipCodeQuery);
|
|
251
|
-
}
|
|
252
|
-
if (queries.length === 0) {
|
|
253
|
-
return null;
|
|
254
|
-
}
|
|
255
|
-
if (queries.length === 1) {
|
|
256
|
-
return queries[0];
|
|
257
|
-
}
|
|
258
|
-
return {
|
|
259
|
-
bool: {
|
|
260
|
-
must: queries,
|
|
261
|
-
},
|
|
262
|
-
};
|
|
263
|
-
};
|
|
264
224
|
var facetFilters = (function (facetFilters) {
|
|
265
225
|
if (!facetFilters || !facetFilters.length) {
|
|
266
226
|
return null;
|
|
267
227
|
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
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
|
+
};
|
|
290
252
|
}
|
|
291
|
-
|
|
292
|
-
else {
|
|
293
|
-
otherFilters.push(Array.isArray(item) ? __spreadArray([], item) : item);
|
|
253
|
+
return zipCodeQuery;
|
|
294
254
|
}
|
|
295
255
|
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
256
|
+
return {
|
|
257
|
+
query_string: {
|
|
258
|
+
query: parsedFilters,
|
|
259
|
+
},
|
|
260
|
+
};
|
|
300
261
|
});
|
|
301
262
|
|
|
302
263
|
var buildElasticSearchQuery = function (settings, instantSearchParams) {
|
|
@@ -371,7 +332,7 @@ var buildQueryParams = function (settings, instantSearchParams) {
|
|
|
371
332
|
query.aggregations = JSON.stringify(instantSearchParams.facets.reduce(function (aggregations, facet) {
|
|
372
333
|
aggregations[facet] = {
|
|
373
334
|
terms: {
|
|
374
|
-
field: facet
|
|
335
|
+
field: "".concat(facet, ".keyword"),
|
|
375
336
|
min_doc_count: (instantSearchParams === null || instantSearchParams === void 0 ? void 0 : instantSearchParams.facetMinDocCount) || 0,
|
|
376
337
|
size: 100,
|
|
377
338
|
},
|
|
@@ -407,7 +368,7 @@ var wrapSubstringInTags = function (_a) {
|
|
|
407
368
|
var text = _a.text, start = _a.start, length = _a.length, preTag = _a.preTag, postTag = _a.postTag;
|
|
408
369
|
var before = text.slice(0, start);
|
|
409
370
|
var after = text.slice(start + length);
|
|
410
|
-
return ""
|
|
371
|
+
return "".concat(before).concat(preTag).concat(text.slice(start, start + length)).concat(postTag).concat(after);
|
|
411
372
|
};
|
|
412
373
|
var matchTextWithQuery = function (value, query) {
|
|
413
374
|
var keyword = query.options.query;
|
|
@@ -462,7 +423,7 @@ var highlight = function (query, hit) {
|
|
|
462
423
|
deepSet(_highlightResult, field, matchTextWithQuery(value, query));
|
|
463
424
|
}
|
|
464
425
|
else {
|
|
465
|
-
console.warn("The value of field \""
|
|
426
|
+
console.warn("The value of field \"".concat(field, "\" is not a string or an array of strings. Skipping highlighting for this field."));
|
|
466
427
|
}
|
|
467
428
|
});
|
|
468
429
|
if (query.isSearchableAttributesRestricted()) {
|
|
@@ -557,10 +518,10 @@ var SearchClient = (function () {
|
|
|
557
518
|
if (!this.settings.token) {
|
|
558
519
|
throw new Error('You must provide a valid SearchApi or PublicSearchApi token. Visit https://admin.211cs.org to create one.');
|
|
559
520
|
}
|
|
560
|
-
return [4, fetch(""
|
|
521
|
+
return [4, fetch("".concat(this.settings.endpoint).concat(this.settings.searchUri), {
|
|
561
522
|
headers: {
|
|
562
523
|
cache: 'no-cache',
|
|
563
|
-
authorization: "SearchApi "
|
|
524
|
+
authorization: "SearchApi ".concat(this.settings.token),
|
|
564
525
|
'content-type': 'application/json',
|
|
565
526
|
},
|
|
566
527
|
method: 'POST',
|
|
@@ -570,7 +531,7 @@ var SearchClient = (function () {
|
|
|
570
531
|
response = _a.sent();
|
|
571
532
|
if (response.status !== 200) {
|
|
572
533
|
text = response.text();
|
|
573
|
-
throw new Error("Unexpected status "
|
|
534
|
+
throw new Error("Unexpected status ".concat(response.status, ": ").concat(text));
|
|
574
535
|
}
|
|
575
536
|
return [2, response.json()];
|
|
576
537
|
}
|
|
@@ -727,7 +688,7 @@ var makeFieldSearch = function (exact, type) { return function (props) {
|
|
|
727
688
|
var suffix = exact ? '' : '*';
|
|
728
689
|
var init = function (opts) {
|
|
729
690
|
var helper = opts.helper;
|
|
730
|
-
container.innerHTML = "<input class=\"ais-SearchBox-input\" type="
|
|
691
|
+
container.innerHTML = "<input class=\"ais-SearchBox-input\" type=".concat(inputType, " placeholder=").concat(placeholder, " autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" maxlength=\"512\">");
|
|
731
692
|
var input = container.querySelector('input');
|
|
732
693
|
input.addEventListener('input', debouncer(function (value) {
|
|
733
694
|
helper.clearRefinements(attribute);
|
|
@@ -745,8 +706,8 @@ var makeFieldSearch = function (exact, type) { return function (props) {
|
|
|
745
706
|
};
|
|
746
707
|
}; };
|
|
747
708
|
|
|
748
|
-
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=\""
|
|
749
|
-
var renderContainer$1 = function (children) { return "<div class=\"ais-RefinementList\">\n <ul class=\"ais-RefinementList-list\">\n "
|
|
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>"); };
|
|
750
711
|
var searchBoxFields = function (params) { return ({
|
|
751
712
|
init: function (initOptions) {
|
|
752
713
|
params.container.innerHTML = renderContainer$1(params.attributes.map(function (field) { return renderField(field); }).join('\n'));
|
|
@@ -778,7 +739,7 @@ var placeAutocomplete = function (opts) {
|
|
|
778
739
|
var container = opts.container, placeholder = opts.placeholder;
|
|
779
740
|
var init = function (props) {
|
|
780
741
|
var helper = props.helper;
|
|
781
|
-
container.innerHTML = "<input class=\"ais-SearchBox-input\" type=\"search\" placeholder="
|
|
742
|
+
container.innerHTML = "<input class=\"ais-SearchBox-input\" type=\"search\" placeholder=".concat(placeholder, "/>");
|
|
782
743
|
var input = container.querySelector('input[type=search]');
|
|
783
744
|
var autocomplete = new google.maps.places.Autocomplete(input);
|
|
784
745
|
autocomplete.setFields([
|
|
@@ -799,12 +760,12 @@ var placeAutocomplete = function (opts) {
|
|
|
799
760
|
}
|
|
800
761
|
geocoder.geocode({ placeId: place.place_id }, function (results, status) {
|
|
801
762
|
if (status !== 'OK') {
|
|
802
|
-
console.warn("Geocoder failed due to: "
|
|
763
|
+
console.warn("Geocoder failed due to: ".concat(status));
|
|
803
764
|
return;
|
|
804
765
|
}
|
|
805
766
|
var location = results[0].geometry.location;
|
|
806
767
|
helper
|
|
807
|
-
.setQueryParameter('aroundLatLng', location.lat()
|
|
768
|
+
.setQueryParameter('aroundLatLng', "".concat(location.lat(), ", ").concat(location.lng()))
|
|
808
769
|
.search();
|
|
809
770
|
});
|
|
810
771
|
});
|
|
@@ -814,8 +775,8 @@ var placeAutocomplete = function (opts) {
|
|
|
814
775
|
};
|
|
815
776
|
};
|
|
816
777
|
|
|
817
|
-
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="
|
|
818
|
-
var renderContainer = function (children) { return "<div class=\"ais-RefinementList\">\n <ul class=\"ais-RefinementList-list\">\n "
|
|
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>"); };
|
|
819
780
|
var locationDistanceFilter = function (props) {
|
|
820
781
|
var container = props.container;
|
|
821
782
|
var miles = props.miles || [5, 10, 20, 50];
|
|
@@ -938,9 +899,9 @@ var createTaxonomyRefinementListRenderer = function (widgetParams) { return ({
|
|
|
938
899
|
return item.type === 'disjunctive' && item.name === code;
|
|
939
900
|
});
|
|
940
901
|
});
|
|
941
|
-
return "\n <li>\n <label>\n <input\n type=\"checkbox\"\n value=\""
|
|
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 ");
|
|
942
903
|
});
|
|
943
|
-
container.innerHTML = "<ul>"
|
|
904
|
+
container.innerHTML = "<ul>".concat(list.join(''), "</ul>");
|
|
944
905
|
},
|
|
945
906
|
dispose: function () { },
|
|
946
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{u(r.next(e))}catch(e){a(e)}}function s(e){try{u(r.throw(e))}catch(e){a(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}u((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])}}}function i(e,t,n){if(n||2===arguments.length)for(var r,i=0,a=t.length;i<a;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||t)}var a=function(e){var t=e.indexOf(".");return-1===t?[e]:[e.slice(0,t),e.slice(t+1)]},o=function(e,t,n){var r=a(t);if(1!==r.length){var i=r[0],s=r[1];e[i]||(e[i]={}),o(e[i],s,n)}else e[r[0]]=n},s=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],o=n[1],u=e[i];return u?s(u,o):null},u=function(e){return["+"," -","&&","||","!","(",")","{","}","[","]","^","~","*","?",":","/"].forEach((function(t){e=e.replaceAll(t," ")})),e.replaceAll(/\s+/g," ")};function c(e){return e.split(" ").filter(Boolean).map((function(e){return u(e)+"*"})).join(" ")}var l=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})}},f=function(e){var t=e.indexOf(":");if(-1===t)return e;var n=e.substring(0,t),r=e.substring(t+1),i=u(r);return n+":"+(i=i.split(" ").filter(Boolean).map((function(e){return""+e})).join(" "))},d=function(e){var t,n=(t=e.match(/^([A-Z]\d[A-Z])[\s-]?(\d[A-Z]\d)$/))?t[1]+" "+t[2]:null;if(n){var r=n.split(" ")[0];return{bool:{should:[{term:{"metadata.serviceAreaZipCodes.keyword":n}},{term:{"metadata.serviceAreaZipCodes.keyword":r+" ***"}}],minimum_should_match:1}}}return{term:{"metadata.serviceAreaZipCodes.keyword":e}}},h=function(e){return e.includes("metadata.serviceAreaZipCodes:")},p=function(e){var t=e.match(/metadata\.serviceAreaZipCodes:"([^"]+)"/);return t?t[1]:null},g=function(e){if(!e||!e.length)return null;if("string"==typeof e){if(h(e)){var t=p(e);if(t){var n=t.toUpperCase().trim();return d(n)}}return{query_string:{query:e}}}for(var r=null,a=[],o=0,s=e;o<s.length;o++){var u=s[o];if("string"==typeof u&&h(u)){var c=p(u);c&&!r&&(r=c)}else a.push(Array.isArray(u)?i([],u):u)}return function(e,t){var n=[];if(e.length>0){for(var r=[],i=0,a=e;i<a.length;i++){var o=a[i];if("string"==typeof o)r.push(f(o));else{var s=o.map((function(e){return f(e)}));r.push("("+s.join(" OR ")+")")}}r.length>0&&n.push({query_string:{query:r.join(" AND ")}})}return t&&n.push(t),0===n.length?null:1===n.length?n[0]:{bool:{must:n}}}(a,r?d(r.toUpperCase().trim()):void 0)},m=function(e,t){var n,r=function(e,t){var n=[l(t,e),g(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],u=o[1];i.distance=Number(t.aroundRadius),i.distanceUnit="mi",i.lat=s,i.lon=u}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},v=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 m(this.settings,this.options)},e}(),y=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,u,c,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,u=i.preTag,c=i.postTag,l=a.slice(0,o),f=a.slice(o+s),""+l+u+a.slice(o,o+s)+c+f)}},b=function(e,n){return n.map((function(n){return function(e,n){var r={};return e.getKeywordSearchFields().forEach((function(t){var i=s(n,t);i&&(Array.isArray(i)&&i.length>0&&"string"==typeof i[0]?o(r,t,i.map((function(t){return y(t,e)}))):"string"==typeof i?o(r,t,y(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){s(r,e)||o(r,e,{matchLevel:"none",matchedWords:[],value:s(n,e)})})),t(t({},n),{_highlightResult:r})}(e,t({objectID:n.id},n))}))},S=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}),{}):{}},w=function(e,t){return{results:[{index:"instant_search",query:e.options.query,params:e.body.query,nbHits:t.__meta.total,hits:b(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:S(t)}]}},L=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 v(this.settings,e[0].params),[4,this.makeSearchRequest(t.body)];case 1:return n=r.sent(),[2,w(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 v(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}(),k=function(e){switch(typeof e){case"string":return parseFloat(e);case"number":return e;default:return null}};var R=function(e){if(!e.addresses||0===e.addresses.length)return null;var t=e.addresses[0];return{lat:k(t.latitude),lng:k(t.longitude),hit:e}},x=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)}}),u=t&&"number"===t?"number":"search",c=e?"":"*";return{init:function(e){var t=e.helper;i.innerHTML='<input class="ais-SearchBox-input" type='+u+" 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+c]),t.search()})))},getWidgetSearchParameters:function(e){return e.addFacet(a)}}}},A=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>"},P=x(!0,"number"),q=x(!0,"string"),_=x(!1,"string"),T=function(){};function F(e,n){return void 0===n&&(n=T),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 j=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=L,e.connectTaxonomyRefinementList=F,e.createTaxonomyRefinementListRenderer=j,e.exactNumberFieldSearch=P,e.exactStringFieldSearch=q,e.googleMaps=function(e){var t=e.container,n=e.renderInfo,r=e.transformHits||R,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(A).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=x,e.noop=T,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=_,e.taxonomyRefinementList=function(e){var n=j(e),r=F(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,20 +1,20 @@
|
|
|
1
|
-
|
|
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
|
|
7
|
+
export type HighlightResult<THit> = THit extends string | number ? HighlightMatch : {
|
|
8
8
|
[KAttribute in keyof THit]?: HighlightResult<THit[KAttribute]>;
|
|
9
9
|
};
|
|
10
|
-
|
|
10
|
+
type SnippetMatch = {
|
|
11
11
|
readonly value: string;
|
|
12
12
|
readonly matchLevel: 'none' | 'partial' | 'full';
|
|
13
13
|
};
|
|
14
|
-
export
|
|
14
|
+
export type SnippetResult<THit> = THit extends string | number ? SnippetMatch : {
|
|
15
15
|
[KAttribute in keyof THit]: SnippetResult<THit[KAttribute]>;
|
|
16
16
|
};
|
|
17
|
-
export
|
|
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
|
|
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
|
|
3
|
-
export
|
|
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
|
|
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
|
|
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
|
|
15
|
+
export type MultipleQueriesQuery = SharedMultipleQueriesQuery & ({
|
|
16
16
|
readonly type?: 'default';
|
|
17
17
|
} | FacetQuery);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Hit } from './Hit';
|
|
2
2
|
import { Settings } from './Settings';
|
|
3
|
-
export
|
|
3
|
+
export type SearchResponse<TObject = Record<string, unknown>> = {
|
|
4
4
|
hits: Array<Hit<TObject>>;
|
|
5
5
|
page: number;
|
|
6
6
|
length?: number;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { IndexedResource } from './IndexedResource';
|
|
2
|
-
|
|
2
|
+
type AggregationBucket = {
|
|
3
3
|
key: string;
|
|
4
4
|
doc_count: number;
|
|
5
5
|
};
|
|
6
|
-
export
|
|
6
|
+
export type SearchResponse = {
|
|
7
7
|
__meta: {
|
|
8
8
|
total: number;
|
|
9
9
|
perPage: number;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
type TaxonomyRefinementItem = {
|
|
2
2
|
label: string;
|
|
3
3
|
value: string;
|
|
4
4
|
};
|
|
5
|
-
export
|
|
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.13.
|
|
3
|
+
"version": "0.13.6",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/types/index.d.ts",
|
|
6
6
|
"files": [
|
|
@@ -8,6 +8,7 @@
|
|
|
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
14
|
"build": "rm -rf ./dist && rollup -c && tsc --p ./tsconfig.build.json --emitDeclarationOnly",
|
|
@@ -26,9 +27,9 @@
|
|
|
26
27
|
"ts-jest": "^26.4.4",
|
|
27
28
|
"ts-loader": "^8.0.12",
|
|
28
29
|
"tslib": "^2.3.0",
|
|
29
|
-
"typescript": "^4.
|
|
30
|
+
"typescript": "^4.9.5"
|
|
30
31
|
},
|
|
31
32
|
"dependencies": {
|
|
32
33
|
"qs": "^6.11.2"
|
|
33
34
|
}
|
|
34
|
-
}
|
|
35
|
+
}
|