@211la/search-client 0.3.8 → 0.5.0
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
|
@@ -291,7 +291,7 @@ var wrapSubstringInTags = function (_a) {
|
|
|
291
291
|
return [
|
|
292
292
|
text.slice(0, start),
|
|
293
293
|
preTag,
|
|
294
|
-
text.
|
|
294
|
+
text.substring(start, length),
|
|
295
295
|
postTag,
|
|
296
296
|
text.slice(start + length),
|
|
297
297
|
].join('');
|
|
@@ -479,44 +479,11 @@ var SearchClient = (function () {
|
|
|
479
479
|
return SearchClient;
|
|
480
480
|
}());
|
|
481
481
|
|
|
482
|
-
var
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
buckets[key] = [];
|
|
488
|
-
}
|
|
489
|
-
buckets[key].push(resource);
|
|
490
|
-
});
|
|
491
|
-
Object.keys(buckets).forEach(function (key) {
|
|
492
|
-
buckets[key] = map(buckets[key]);
|
|
493
|
-
});
|
|
494
|
-
return buckets;
|
|
495
|
-
};
|
|
496
|
-
var updateBounds = function (map, grouped) {
|
|
497
|
-
var bounds = new google.maps.LatLngBounds();
|
|
498
|
-
Object.keys(grouped).forEach(function (key) {
|
|
499
|
-
var group = grouped[key];
|
|
500
|
-
bounds.extend(new google.maps.LatLng(group.lat, group.lng));
|
|
501
|
-
});
|
|
502
|
-
map.fitBounds(bounds);
|
|
503
|
-
};
|
|
504
|
-
var makeResourceGroup = function (resources) {
|
|
505
|
-
var hits = resources.map(function (resource) { return resource.hit; });
|
|
506
|
-
var _a = resources[0], lat = _a.lat, lng = _a.lng;
|
|
507
|
-
return {
|
|
508
|
-
hits: hits,
|
|
509
|
-
lat: lat,
|
|
510
|
-
lng: lng,
|
|
511
|
-
key: lat + "_" + lng,
|
|
512
|
-
};
|
|
513
|
-
};
|
|
514
|
-
var flatten = function (list) {
|
|
515
|
-
var result = [];
|
|
516
|
-
list.forEach(function (item) {
|
|
517
|
-
result = result.concat(item);
|
|
518
|
-
});
|
|
519
|
-
return result;
|
|
482
|
+
var updateBounds = function (map, points) {
|
|
483
|
+
map.fitBounds(points.reduce(function (bounds, point) {
|
|
484
|
+
bounds.extend(new google.maps.LatLng(point.lat, point.lng));
|
|
485
|
+
return bounds;
|
|
486
|
+
}, new google.maps.LatLngBounds()));
|
|
520
487
|
};
|
|
521
488
|
var ifStringToInt = function (v) {
|
|
522
489
|
switch (typeof v) {
|
|
@@ -528,27 +495,34 @@ var ifStringToInt = function (v) {
|
|
|
528
495
|
return null;
|
|
529
496
|
}
|
|
530
497
|
};
|
|
531
|
-
|
|
532
|
-
return
|
|
533
|
-
.map(
|
|
534
|
-
.filter(function (entry) {
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
498
|
+
function transformHits(hits, transformer) {
|
|
499
|
+
return hits
|
|
500
|
+
.map(transformer)
|
|
501
|
+
.filter(function (entry) {
|
|
502
|
+
return entry !== null &&
|
|
503
|
+
entry !== undefined &&
|
|
504
|
+
entry.lat !== null &&
|
|
505
|
+
entry.lng !== null;
|
|
506
|
+
});
|
|
507
|
+
}
|
|
508
|
+
var defaultTransformer = function (hit) {
|
|
509
|
+
if (!hit.addresses || hit.addresses.length === 0) {
|
|
510
|
+
return null;
|
|
511
|
+
}
|
|
512
|
+
var address = hit.addresses[0];
|
|
513
|
+
return {
|
|
514
|
+
lat: ifStringToInt(address.latitude),
|
|
515
|
+
lng: ifStringToInt(address.longitude),
|
|
516
|
+
hit: hit,
|
|
517
|
+
};
|
|
542
518
|
};
|
|
543
519
|
var googleMaps = function (props) {
|
|
544
520
|
var container = props.container, renderInfo = props.renderInfo;
|
|
545
|
-
var
|
|
546
|
-
mapFunc = mapFunc || defaultMapFunc;
|
|
521
|
+
var transformer = props.transformHits || defaultTransformer;
|
|
547
522
|
var containerElem = typeof container === 'string'
|
|
548
523
|
? document.querySelector(container)
|
|
549
524
|
: container;
|
|
550
525
|
var map = null;
|
|
551
|
-
var key = '';
|
|
552
526
|
var markers = {};
|
|
553
527
|
var infoWindow = new google.maps.InfoWindow();
|
|
554
528
|
return {
|
|
@@ -559,44 +533,32 @@ var googleMaps = function (props) {
|
|
|
559
533
|
if (!map) {
|
|
560
534
|
return;
|
|
561
535
|
}
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
var newKey = Object.keys(grouped)
|
|
566
|
-
.sort(function (a, b) { return a.localeCompare(b); })
|
|
567
|
-
.join(',');
|
|
568
|
-
if (newKey === key) {
|
|
569
|
-
return;
|
|
570
|
-
}
|
|
571
|
-
key = newKey;
|
|
572
|
-
Object.keys(markers).forEach(function (x) {
|
|
573
|
-
if (grouped[x]) {
|
|
574
|
-
return;
|
|
575
|
-
}
|
|
576
|
-
markers[x].marker.setMap(null);
|
|
577
|
-
delete markers[x];
|
|
536
|
+
Object.keys(markers).forEach(function (marker) {
|
|
537
|
+
markers[marker].marker.setMap(null);
|
|
538
|
+
delete markers[marker];
|
|
578
539
|
});
|
|
579
|
-
|
|
580
|
-
|
|
540
|
+
var points = transformHits(options.results.hits, transformer);
|
|
541
|
+
points.forEach(function (point) {
|
|
542
|
+
if (markers[point.hit.id]) {
|
|
581
543
|
return;
|
|
582
544
|
}
|
|
583
|
-
var _a = grouped[x], lat = _a.lat, lng = _a.lng;
|
|
584
545
|
var marker = new google.maps.Marker({
|
|
585
|
-
position: { lat: lat, lng: lng },
|
|
546
|
+
position: { lat: point.lat, lng: point.lng },
|
|
586
547
|
map: map,
|
|
587
548
|
});
|
|
588
549
|
if (renderInfo) {
|
|
589
550
|
marker.addListener('click', function () {
|
|
590
|
-
infoWindow.setContent(renderInfo(
|
|
551
|
+
infoWindow.setContent(renderInfo(point));
|
|
591
552
|
infoWindow.open(map, marker);
|
|
592
553
|
});
|
|
593
554
|
}
|
|
594
|
-
|
|
555
|
+
marker.setMap(map);
|
|
556
|
+
markers[point.hit.id] = {
|
|
595
557
|
marker: marker,
|
|
596
|
-
data:
|
|
558
|
+
data: point,
|
|
597
559
|
};
|
|
598
560
|
});
|
|
599
|
-
updateBounds(map,
|
|
561
|
+
updateBounds(map, points);
|
|
600
562
|
},
|
|
601
563
|
dispose: function (disposeOptions) { },
|
|
602
564
|
getWidgetState: function (uiState, widgetStateOptions) { return uiState; },
|
|
@@ -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}).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])}}}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],c=e[i];return c?s(c,o):null},c=function(e){return["+","-","&&","||","!","(",")","{","}","[","]","^","~","*","?",":","/"].forEach((function(t){e=e.replace(t," ")})),e.replace(/\s+/g," ")};function u(e){return e.split(" ").filter(Boolean).map((function(e){return c(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]+":"+u(i[1]):u(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){return e?{query_string:{query:""+e}}:null},h=function(e){var t=e.split(":"),n=t[0],r=t[1],i=c(r);return n+":"+(i=i.split(" ").filter(Boolean).map((function(e){return""+e})).join(" "))},d=function(e){return"string"==typeof e?e:e.map((function(e){return"string"==typeof e?h(e):"("+e.map((function(e){return h(e)})).join(" OR ")+")"})).join(" AND ")},p=function(e){return e&&e.length?{query_string:{query:d(e)}}:null},g=function(e,t){var n=function(e,t){var n=[l(t,e),f(t.filters),p(t.facetFilters)].filter((function(e){return null!==e}));return n.length?n:"*"}(e,t),r={query:"string"==typeof n?n:JSON.stringify(n)},a=t.hitsPerPage||20;if(r.$limit=a,r.$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];r.distance=Number(t.aroundRadius),r.distanceUnit="mi",r.lat=s,r.lon=c}return t.facets&&t.facets.length&&(r.aggregations=JSON.stringify(t.facets.reduce((function(e,n){if(e[n]={terms:{field:n+".keyword",min_doc_count:0,size:100}},t.facetQuery){var r=i(i([".*"],t.facetQuery.split("").map((function(e){return"["+e.toLocaleLowerCase()+e.toLocaleUpperCase()+"]"}))),[".*"]).join("");e[n].terms.include=r}return e}),{}))),r},m=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 g(this.settings,this.options)},e}(),v=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&&o(r,t,function(e,t){var n,r,i,a,o,s,c=t.options.query,u=e.toLowerCase().search(c.toLowerCase());return-1===u?{matchLevel:"none",matchedWords:[],value:e}:{fullyHighlighted:0===u&&e.length===c.length,matchLevel:"full",matchedWords:[c],value:(n={text:e,start:u,length:c.length,preTag:t.options.highlightPreTag,postTag:t.options.highlightPostTag},r=n.text,i=n.start,a=n.length,o=n.preTag,s=n.postTag,[r.slice(0,i),o,r.substr(i,a),s,r.slice(i+a)].join(""))}}(i,e))})),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))}))},y=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}),{}):{}},b=function(e,t){return{results:[{index:"instant_search",query:e.options.query,params:e.body.query,nbHits:t.__meta.total,hits:v(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:y(t)}]}},S=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 m(this.settings,e[0].params),[4,this.makeSearchRequest(t.body)];case 1:return n=r.sent(),[2,b(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 m(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}(),L=function(e){var t=e.map((function(e){return e.hit})),n=e[0],r=n.lat,i=n.lng;return{hits:t,lat:r,lng:i,key:r+"_"+i}},k=function(e){switch(typeof e){case"string":return parseFloat(e);case"number":return e;default:return null}},R=function(e){return(e.site.addresses||[]).map((function(n){return{lat:n.lat,lng:n.lng,hit:t(t({},e),{site:t(t({},e.site),{addresses:[n]})})}}))},w=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)}}}},x=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=w(!0,"number"),_=w(!0,"string"),j=w(!1,"string"),F=function(){};function A(e,n){return void 0===n&&(n=F),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=S,e.connectTaxonomyRefinementList=A,e.createTaxonomyRefinementListRenderer=q,e.exactNumberFieldSearch=P,e.exactStringFieldSearch=_,e.googleMaps=function(e){var n=e.container,r=e.renderInfo,i=e.mapFunc;i=i||R;var a="string"==typeof n?document.querySelector(n):n,o=null,s="",c={},u=new google.maps.InfoWindow;return{init:function(){o=new google.maps.Map(a,{})},render:function(e){if(o){var n=function(e,t,n){var r={};return e.forEach((function(e){var n=t(e);r[n]||(r[n]=[]),r[n].push(e)})),Object.keys(r).forEach((function(e){r[e]=n(r[e])})),r}(function(e,n){return(r=e.map(n),i=[],r.forEach((function(e){i=i.concat(e)})),i).map((function(e){return t(t({},e),{lat:k(e.lat),lng:k(e.lng)})})).filter((function(e){return null!==e.lat&&null!==e.lng}));var r,i}(e.results.hits,i),(function(e){return e.lat+"_"+e.lng}),L),a=Object.keys(n).sort((function(e,t){return e.localeCompare(t)})).join(",");a!==s&&(s=a,Object.keys(c).forEach((function(e){n[e]||(c[e].marker.setMap(null),delete c[e])})),Object.keys(n).forEach((function(e){if(!c[e]){var t=n[e],i=t.lat,a=t.lng,s=new google.maps.Marker({position:{lat:i,lng:a},map:o});r&&s.addListener("click",(function(){u.setContent(r(n[e])),u.open(o,s)})),c[e]={marker:s,data:n[e]}}})),function(e,t){var n=new google.maps.LatLngBounds;Object.keys(t).forEach((function(e){var r=t[e];n.extend(new google.maps.LatLng(r.lat,r.lng))})),e.fitBounds(n)}(o,n))}},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(x).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=w,e.noop=F,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=j,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}).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])}}}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],c=e[i];return c?s(c,o):null},c=function(e){return["+","-","&&","||","!","(",")","{","}","[","]","^","~","*","?",":","/"].forEach((function(t){e=e.replace(t," ")})),e.replace(/\s+/g," ")};function u(e){return e.split(" ").filter(Boolean).map((function(e){return c(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]+":"+u(i[1]):u(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){return e?{query_string:{query:""+e}}:null},h=function(e){var t=e.split(":"),n=t[0],r=t[1],i=c(r);return n+":"+(i=i.split(" ").filter(Boolean).map((function(e){return""+e})).join(" "))},d=function(e){return"string"==typeof e?e:e.map((function(e){return"string"==typeof e?h(e):"("+e.map((function(e){return h(e)})).join(" OR ")+")"})).join(" AND ")},p=function(e){return e&&e.length?{query_string:{query:d(e)}}:null},g=function(e,t){var n=function(e,t){var n=[l(t,e),f(t.filters),p(t.facetFilters)].filter((function(e){return null!==e}));return n.length?n:"*"}(e,t),r={query:"string"==typeof n?n:JSON.stringify(n)},a=t.hitsPerPage||20;if(r.$limit=a,r.$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];r.distance=Number(t.aroundRadius),r.distanceUnit="mi",r.lat=s,r.lon=c}return t.facets&&t.facets.length&&(r.aggregations=JSON.stringify(t.facets.reduce((function(e,n){if(e[n]={terms:{field:n+".keyword",min_doc_count:0,size:100}},t.facetQuery){var r=i(i([".*"],t.facetQuery.split("").map((function(e){return"["+e.toLocaleLowerCase()+e.toLocaleUpperCase()+"]"}))),[".*"]).join("");e[n].terms.include=r}return e}),{}))),r},m=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 g(this.settings,this.options)},e}(),v=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&&o(r,t,function(e,t){var n,r,i,a,o,s,c=t.options.query,u=e.toLowerCase().search(c.toLowerCase());return-1===u?{matchLevel:"none",matchedWords:[],value:e}:{fullyHighlighted:0===u&&e.length===c.length,matchLevel:"full",matchedWords:[c],value:(n={text:e,start:u,length:c.length,preTag:t.options.highlightPreTag,postTag:t.options.highlightPostTag},r=n.text,i=n.start,a=n.length,o=n.preTag,s=n.postTag,[r.slice(0,i),o,r.substring(i,a),s,r.slice(i+a)].join(""))}}(i,e))})),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))}))},y=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}),{}):{}},b=function(e,t){return{results:[{index:"instant_search",query:e.options.query,params:e.body.query,nbHits:t.__meta.total,hits:v(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:y(t)}]}},S=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 m(this.settings,e[0].params),[4,this.makeSearchRequest(t.body)];case 1:return n=r.sent(),[2,b(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 m(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}(),L=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:L(t.latitude),lng:L(t.longitude),hit:e}},w=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)}}}},x=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>"},k=w(!0,"number"),P=w(!0,"string"),_=w(!1,"string"),A=function(){};function F(e,n){return void 0===n&&(n=A),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=S,e.connectTaxonomyRefinementList=F,e.createTaxonomyRefinementListRenderer=q,e.exactNumberFieldSearch=k,e.exactStringFieldSearch=P,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(x).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=w,e.noop=A,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=q(e),r=F(n.render,n.dispose);return t(t({},r(e)),{$$widgetType:"cs.taxonomyRefinementList"})},Object.defineProperty(e,"__esModule",{value:!0}),e}({});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Entity } from './Entity';
|
|
2
|
+
export interface Hour extends Entity {
|
|
3
|
+
elementType: string;
|
|
4
|
+
elementId: string;
|
|
5
|
+
organizationId: string;
|
|
6
|
+
monday: string[];
|
|
7
|
+
tuesday: string[];
|
|
8
|
+
wednesday: string[];
|
|
9
|
+
thursday: string[];
|
|
10
|
+
friday: string[];
|
|
11
|
+
saturday: string[];
|
|
12
|
+
sunday: string[];
|
|
13
|
+
isConfidential: boolean;
|
|
14
|
+
specialHours: null;
|
|
15
|
+
metadata: {
|
|
16
|
+
[key: string]: unknown;
|
|
17
|
+
notes: string;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
@@ -2,6 +2,7 @@ import { Address } from './Address';
|
|
|
2
2
|
import { ContactPerson } from './ContactPerson';
|
|
3
3
|
import { Email } from './Email';
|
|
4
4
|
import { Entity } from './Entity';
|
|
5
|
+
import { Hour } from './Hour';
|
|
5
6
|
import { Network } from './Network';
|
|
6
7
|
import { Organization } from './Organization';
|
|
7
8
|
import { Phone } from './Phone';
|
|
@@ -9,21 +10,33 @@ import { Reference } from './Reference';
|
|
|
9
10
|
import { Service } from './Service';
|
|
10
11
|
import { Site } from './Site';
|
|
11
12
|
export interface IndexedResource extends Entity {
|
|
12
|
-
description: string | null;
|
|
13
|
-
status: string | null;
|
|
14
|
-
limitedAvailability: boolean;
|
|
15
|
-
alias: string | null;
|
|
16
|
-
metadata: Record<string, unknown>;
|
|
17
13
|
organization: Organization;
|
|
14
|
+
networks: Network[];
|
|
18
15
|
site: Site;
|
|
19
16
|
service: Service;
|
|
20
|
-
|
|
17
|
+
description: string | null;
|
|
18
|
+
status: 'active' | 'inactive';
|
|
19
|
+
limitedAvailability: boolean;
|
|
20
|
+
alias: string[] | null;
|
|
21
|
+
metadata: {
|
|
22
|
+
fees?: string;
|
|
23
|
+
serviceAreaName?: string[];
|
|
24
|
+
serviceExclusions?: string;
|
|
25
|
+
serviceRequirements?: string;
|
|
26
|
+
applicationProcedure?: string;
|
|
27
|
+
serviceAreaRegion?: string[];
|
|
28
|
+
serviceAreaZipCodes?: string[];
|
|
29
|
+
serviceConditions?: {
|
|
30
|
+
[key: string]: string[] | string;
|
|
31
|
+
};
|
|
32
|
+
[key: string]: any;
|
|
33
|
+
};
|
|
21
34
|
addresses: Address[];
|
|
22
35
|
references: Reference[];
|
|
23
|
-
hour:
|
|
36
|
+
hour: Hour | null;
|
|
24
37
|
emails: Email[];
|
|
25
38
|
phones: Phone[];
|
|
26
39
|
contactPersons: ContactPerson[];
|
|
27
|
-
area: null
|
|
40
|
+
area: null;
|
|
28
41
|
_score: number;
|
|
29
42
|
}
|