@ably/ui 7.10.0-dev.e6f7622 → 8.0.0-dev.1715d4e

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.
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see component.js.LICENSE.txt */
2
- !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.AblyUi=e():(t.AblyUi=t.AblyUi||{},t.AblyUi.Core=t.AblyUi.Core||{},t.AblyUi.Core.MeganavSearchAutocomplete=e())}(this,(function(){return(()=>{var t={727:(t,e,s)=>{"use strict";t.exports=s(5647)},493:(t,e,s)=>{"use strict";s(2702).polyfill(),s(4301);var i=function(t,e,s,n,r,o,a){var c=function(t,e){return t||!1===t?"&"+e+"="+t:""};if("search"===s||"suggest"===s||"autocomplete"===s){var u="",h="",l=null;if("search"===s){l=s,u=n.keyword,u=n.enableLogicalOperators?u.replace(/ and /g," AND ").replace(/ or /g," OR ").replace(/ not /g," NOT "):u.replace(/ AND /g," and ").replace(/ OR /g," or ").replace(/ NOT /g," not "),u=encodeURIComponent(u);var f=n.fuzzy;if("retry"===f&&(f=!0===o),"search"===s){if(h=c(n.lang,"lang")+c(f,"fuzzy")+c(n.collectAnalytics,"collectAnalytics")+c(n.postfixWildcard,"postfixWildcard")+c(n.categories,"categories")+c(n.priceFromCents,"priceFromCents")+c(n.priceToCents,"priceToCents")+c(n.dateFrom,"dateFrom")+c(n.dateTo,"dateTo")+c(n.paging.page,"page")+c(n.paging.pageSize,"limit")+c(n.paging.sortBy,"sort")+c(n.paging.sortOrder,"order")+c(n.shuffleAndLimitTo,"shuffleAndLimitTo")+c(n.jwt,"jwt")+c(n.resultType,"resultType")+c(n.userToken,"userToken")+c(n.numFacets,"numFacets")+c(n.cacheResponseTime,"cacheResponseWithTtlSeconds")+c(n.searchOperator,"defaultOperator")+c(n.analyticsTag,"analyticsTag")+c(n.hierarchicalFacetSetting,"hierarchicalFacets"),n.customFieldFilters)for(var d=0;d<n.customFieldFilters.length;d++)h=h+"&customField="+n.customFieldFilters[d];if(n.facetFields)for(d=0;d<n.facetFields.length;d++)h=h+"&facet="+n.facetFields[d];if(n.rangeFacets&&(h=h+"&rangeFacets="+JSON.stringify(n.rangeFacets)),n.statsFields)for(d=0;d<n.statsFields.length;d++)h=h+"&fieldStat="+n.statsFields[d];if(n.personalizationEvents&&Array.isArray(n.personalizationEvents))for(d=0;d<n.personalizationEvents.length;d++){var g=n.personalizationEvents[d],p=Object.keys(g);h=h+"&personalizationEvent="+encodeURIComponent(p+"="+g[p])}a?h=h+"&filter="+encodeURIComponent(JSON.stringify(a)):n.filterObject&&(h=h+"&filter="+encodeURIComponent(JSON.stringify(n.filterObject)))}}else"suggest"===s?(l=s,h=c(n.suggestionsSize,"size")+c(n.lang,"lang"),u=n.suggestionsPrefix):"autocomplete"===s&&(l="autocomplete/document-field",h=c(n.autocomplete.field,"source")+c(n.autocomplete.size,"size"),u=n.autocomplete.prefix);fetch("https://"+t+"/v1/"+l+"/"+e+"?term="+u+h).then((function(t){return t.json()})).then((function(a){if("search"===s&&"retry"===n.fuzzy&&0===a.total_hits&&!0!==o)i(t,e,s,n,r,!0);else{if(!0===o){var c=n.paging.pageSize;a.total_hits>=c&&(a.total_hits=c)}r(a)}})).catch((function(t){console.log(t),r({error:{response:500,message:"invalid server response"}})}))}else r({error:{response:400,message:"invalid query type"}})};t.exports=i},5647:(t,e,s)=>{"use strict";var i=s(493),n=s(9610),r=s(3716),o=s(7585),a=s(5159),c=s(4508);t.exports=function(t,e){this.sitekey=t,this.privatekey=e,this.apiHostname="api.addsearch.com",this.settings=new o,this.sessionId=("a-"+1e8*Math.random()).substring(0,10),this.search=function(t,e){var s=null,n=null;if(t&&a.isFunction(e))s=t,n=e;else if(!e&&a.isFunction(t))s=this.settings.getSettings().keyword,n=t;else{if(!this.settings.getSettings().callback)throw"Illegal search parameters. Should be (keyword, callbackFunction) or (callbackFunction)";s=this.settings.getSettings().keyword,n=this.settings.getSettings().callback}this.settings.setCallback(n),this.settings.setKeyword(s),this.throttledSearchFetch||(this.throttledSearchFetch=c(this.settings.getSettings().throttleTimeMs,i)),this.throttledSearchFetch(this.apiHostname,this.sitekey,"search",this.settings.getSettings(),n)},this.suggestions=function(t,e){if(!t||!e||!a.isFunction(e))throw"Illegal suggestions parameters. Should be (prefix, callbackFunction)";this.settings.setSuggestionsPrefix(t),this.throttledSuggestionsFetch||(this.throttledSuggestionsFetch=c(this.settings.getSettings().throttleTimeMs,i)),this.throttledSuggestionsFetch(this.apiHostname,this.sitekey,"suggest",this.settings.getSettings(),e)},this.autocomplete=function(t,e,s){if(!(t&&e&&s&&a.isFunction(s)))throw"Illegal autocomplete parameters. Should be (field, prefix, callbackFunction)";this.settings.setAutocompleteParams(t,e),this.throttledAutocompleteFetch||(this.throttledAutocompleteFetch=c(this.settings.getSettings().throttleTimeMs,i)),this.throttledAutocompleteFetch(this.apiHostname,this.sitekey,"autocomplete",this.settings.getSettings(),s)},this.fetchCustomApi=function(t,e,s){var n=Object.assign({},this.settings.getSettings());n.facetFields=n.facetFields.filter((e=>t===e)),i(this.apiHostname,this.sitekey,"search",n,s,null,e)},this.fetchRangeFacets=function(t,e,s){var n=Object.assign({},this.settings.getSettings());n.rangeFacets||(n.rangeFacets=[]),n.rangeFacets.push({field:t.field,ranges:t.ranges}),i(this.apiHostname,this.sitekey,"search",n,s,null,e)},this.getDocument=function(t){return n.getDocument(this.apiHostname,this.sitekey,this.privatekey,t)},this.saveDocument=function(t){return n.saveDocument(this.apiHostname,this.sitekey,this.privatekey,t)},this.saveDocumentsBatch=function(t){if(!t||!t.documents||!Array.isArray(t.documents))throw"Please provide an array of documents: {documents: []}";return n.saveDocumentsBatch(this.apiHostname,this.sitekey,this.privatekey,t)},this.deleteDocument=function(t){return n.deleteDocument(this.apiHostname,this.sitekey,this.privatekey,t)},this.deleteDocumentsBatch=function(t){if(!t||!t.documents||!Array.isArray(t.documents))throw"Please provide an array of document ids: {documents: []}";return n.deleteDocumentsBatch(this.apiHostname,this.sitekey,this.privatekey,t)},this.setApiHostname=function(t){this.apiHostname=t},this.getSettings=function(){return this.settings.getSettings()},this.setLanguage=function(t){this.settings.setLanguage(t)},this.setCategoryFilters=function(t){this.settings.setCategoryFilters(t)},this.addCustomFieldFilter=function(t,e){this.settings.addCustomFieldFilter(t,e)},this.removeCustomFieldFilter=function(t,e){this.settings.removeCustomFieldFilter(t,e)},this.setPriceRangeFilter=function(t,e){this.settings.setPriceRangeFilter(t,e)},this.setDateFilter=function(t,e){this.settings.setDateFilter(t,e)},this.setJWT=function(t){this.settings.setJWT(t)},this.setUserToken=function(t){this.settings.setUserToken(t)},this.setPaging=function(t,e,s,i){this.settings.setPaging(t,e,s,i)},this.nextPage=function(){this.settings.nextPage()},this.previousPage=function(){this.settings.previousPage()},this.setSuggestionsSize=function(t){this.settings.setSuggestionsSize(t)},this.setAutocompleteSize=function(t){this.settings.setAutocompleteSize(t)},this.addFacetField=function(t){this.settings.addFacetField(t)},this.addHierarchicalFacetSetting=function(t){this.settings.addHierarchicalFacetSetting(t)},this.addRangeFacet=function(t,e){this.settings.addRangeFacet(t,e)},this.addStatsField=function(t){this.settings.addStatsField(t)},this.setNumberOfFacets=function(t){this.settings.setNumberOfFacets(t)},this.setResultType=function(t){this.settings.setResultType(t)},this.setPersonalizationEvents=function(t){this.settings.setPersonalizationEvents(t)},this.setFilterObject=function(t){this.settings.setFilterObject(t)},this.setShuffleAndLimitTo=function(t){this.settings.setShuffleAndLimitTo(t)},this.setFuzzyMatch=function(t){this.settings.setFuzzyMatch(t)},this.setPostfixWildcard=function(t){this.settings.setPostfixWildcard(t)},this.setCacheResponseTime=function(t){this.settings.setCacheResponseTime(t)},this.setCollectAnalytics=function(t){this.settings.setCollectAnalytics(t)},this.setAnalyticsTag=function(t){this.settings.setAnalyticsTag(t)},this.setThrottleTime=function(t){this.settings.setThrottleTime(t)},this.setStatsSessionId=function(t){this.sessionId=t},this.getStatsSessionId=function(){return this.sessionId},this.enableLogicalOperators=function(t){this.settings.enableLogicalOperators(t)},this.setSearchOperator=function(t){this.settings.setSearchOperator(t)},this.sendStatsEvent=function(t,e,s){if("search"===t)s={action:"search",session:this.sessionId,keyword:e,numberOfResults:s.numberOfResults,analyticsTag:this.getSettings().analyticsTag},r(this.apiHostname,this.sitekey,s);else{if("click"!==t)throw"Illegal sendStatsEvent type parameters. Should be search or click)";s={action:"click",session:this.sessionId,keyword:e,docid:s.documentId,position:s.position,analyticsTag:this.getSettings().analyticsTag},r(this.apiHostname,this.sitekey,s)}},this.searchResultClicked=function(t,e){this.sendStatsEvent("click",this.settings.getSettings().keyword,{documentId:t,position:e})}}},9610:(t,e,s)=>{"use strict";s(4301);const i=s(5159),n=s(2702).Promise,r=function(t,e){return{Authorization:"Basic "+i.base64(t+":"+e),"Content-Type":"application/json"}};t.exports={getDocument:function(t,e,s,i){return new n(((n,o)=>{fetch("https://"+t+"/v2/indices/"+e+"/documents/"+i,{method:"GET",headers:r(e,s)}).then((t=>{200==t.status?n(t.json()):o({status:t.status,text:t.statusText})})).catch((t=>{o({status:400,text:t})}))}))},saveDocument:function(t,e,s,i){const o=i.id||i.url;return new n(((n,a)=>{fetch("https://"+t+"/v2/indices/"+e+"/documents/",{method:o?"PUT":"POST",headers:r(e,s),body:JSON.stringify(i)}).then((t=>{202==t.status?n({status:t.status,text:t.statusText}):a({status:t.status,text:t.statusText})})).catch((t=>{a({status:400,text:t})}))}))},saveDocumentsBatch:function(t,e,s,i){return new n(((n,o)=>{fetch("https://"+t+"/v2/indices/"+e+"/documents:batch",{method:"PUT",headers:r(e,s),body:JSON.stringify(i)}).then((t=>{202==t.status?n({status:t.status,text:t.statusText}):o({status:t.status,text:t.statusText})})).catch((t=>{o({status:400,text:t})}))}))},deleteDocument:function(t,e,s,i){return new n(((n,o)=>{fetch("https://"+t+"/v2/indices/"+e+"/documents/"+i,{method:"DELETE",headers:r(e,s)}).then((t=>{202==t.status?n({status:t.status,text:t.statusText}):o({status:t.status,text:t.statusText})})).catch((t=>{o({status:400,text:t})}))}))},deleteDocumentsBatch:function(t,e,s,i){return new n(((n,o)=>{fetch("https://"+t+"/v2/indices/"+e+"/documents:batch",{method:"DELETE",headers:r(e,s),body:JSON.stringify(i)}).then((t=>{202==t.status?n({status:t.status,text:t.statusText}):o({status:t.status,text:t.statusText})})).catch((t=>{o({status:400,text:t})}))}))}}},7585:t=>{"use strict";t.exports=function(){this.settings={keyword:"*",callback:null,throttleTimeMs:200,fuzzy:"auto",paging:{page:1,pageSize:10,sortBy:"relevance",sortOrder:"desc"},customFieldFilters:[],userToken:null,suggestionsSize:10,facetFields:[],autocomplete:{size:10},searchOperator:null,enableLogicalOperators:!1,cacheResponseTime:null},this.getSettings=function(){return this.settings},this.setKeyword=function(t){this.settings.keyword=t||"*"},this.setCallback=function(t){this.settings.callback=t},this.setThrottleTime=function(t){this.settings.throttleTimeMs=t},this.setSuggestionsPrefix=function(t){this.settings.suggestionsPrefix=t},this.setSuggestionsSize=function(t){this.settings.suggestionsSize=t},this.setAutocompleteSize=function(t){this.settings.autocomplete.size=t},this.setAutocompleteParams=function(t,e){this.settings.autocomplete.field=t,this.settings.autocomplete.prefix=e},this.setLanguage=function(t){if(t&&2!==t.length)throw'use 2-char language code (e.g. "en")';this.settings.lang=t},this.setFuzzyMatch=function(t){if(!0!==t&&!1!==t&&"auto"!==t&&"retry"!==t)throw"fuzzy matching can be true, false, 'auto', or 'retry'";this.settings.fuzzy=t},this.enableLogicalOperators=function(t){this.settings.enableLogicalOperators=t},this.setCacheResponseTime=function(t){this.settings.cacheResponseTime=t},this.setPostfixWildcard=function(t){this.settings.postfixWildcard=t},this.setCollectAnalytics=function(t){this.settings.collectAnalytics=t},this.setAnalyticsTag=function(t){this.settings.analyticsTag=t},this.setCategoryFilters=function(t){this.settings.categories=t},this.setFilterObject=function(t){this.settings.filterObject=t},this.setPriceRangeFilter=function(t,e){this.settings.priceFromCents=t,this.settings.priceToCents=e},this.addCustomFieldFilter=function(t,e){var s=encodeURIComponent(t+"="+e);-1===this.settings.customFieldFilters.indexOf(s)&&this.settings.customFieldFilters.push(s)},this.removeCustomFieldFilter=function(t,e){var s=!1,i=encodeURIComponent(t+"="+e);e||(s=!0,i=encodeURIComponent(t+"="));for(var n=this.settings.customFieldFilters.length;n>0;n--){var r=this.settings.customFieldFilters[n-1];(s&&0===r.indexOf(i)||r===i)&&this.settings.customFieldFilters.splice(n-1,1)}},this.setDateFilter=function(t,e){this.settings.dateFrom=t,this.settings.dateTo=e},this.setKeyword=function(t){this.settings.keyword=t||"*"},this.setJWT=function(t){this.settings.jwt=t},this.setUserToken=function(t){this.settings.userToken=t},this.setPersonalizationEvents=function(t){this.settings.personalizationEvents=t},this.setResultType=function(t){this.settings.resultType=t},this.addFacetField=function(t){-1===this.settings.facetFields.indexOf(t)&&this.settings.facetFields.push(t)},this.addHierarchicalFacetSetting=function(t){this.settings.hierarchicalFacetSetting=JSON.stringify(t)},this.addRangeFacet=function(t,e){this.settings.rangeFacets||(this.settings.rangeFacets=[]),this.settings.rangeFacets.push({field:t,ranges:e})},this.addStatsField=function(t){this.settings.statsFields||(this.settings.statsFields=[]),-1===this.settings.statsFields.indexOf(t)&&this.settings.statsFields.push(t)},this.setNumberOfFacets=function(t){this.settings.numFacets=t},this.setPaging=function(t,e,s,i){if(t<1)throw"page must be 1 or bigger";if(e<1||e>300)throw"pageSize must be 1-300";if("asc"!==i&&"desc"!==i)throw"sortOrder must be asc or desc";this.settings.paging.page=t,this.settings.paging.pageSize=e,this.settings.paging.sortBy=s,this.settings.paging.sortOrder=i},this.setShuffleAndLimitTo=function(t){this.settings.shuffleAndLimitTo=t},this.nextPage=function(){this.settings.paging.page=this.settings.paging.page+1},this.previousPage=function(){this.settings.paging.page>0&&(this.settings.paging.page=this.settings.paging.page-1)},this.setSearchOperator=function(t){if("and"!==t&&"or"!==t)throw"operator must be 'and' || 'or'";this.settings.searchOperator=t}}},3716:(t,e,s)=>{"use strict";s(2702).polyfill(),s(4301),t.exports=function(t,e,s){"undefined"!=typeof window&&window.navigator&&window.navigator.sendBeacon?navigator.sendBeacon("https://"+t+"/v1/stats/"+e+"/",JSON.stringify(s)):fetch("https://"+t+"/v1/stats/"+e+"/",{method:"POST",headers:{"Content-Type":"text/plain"},body:JSON.stringify(s)})}},4508:t=>{t.exports=function(t,e){var s,i=0;function n(){s&&clearTimeout(s)}return function(){var r=this,o=Date.now()-i,a=arguments;function c(){i=Date.now(),e.apply(r,a)}n(),o>t?c():s=setTimeout(c,t-o)}}},5159:(t,e,s)=>{t.exports={isFunction:function(t){return t&&"[object Function]"==={}.toString.call(t)},base64:function(t){return s.g.window={},window&&window.btoa?window.btoa(t):Buffer?Buffer.from(t).toString("base64"):void 0}}},9581:(t,e,s)=>{"use strict";s.d(e,{A:()=>i});var i=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document;return e.querySelector("[data-id=".concat(t,"]"))}},2702:function(t,e,s){t.exports=function(){"use strict";function t(t){return"function"==typeof t}var e=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},i=0,n=void 0,r=void 0,o=function(t,e){d[i]=t,d[i+1]=e,2===(i+=2)&&(r?r(g):b())};var a="undefined"!=typeof window?window:void 0,c=a||{},u=c.MutationObserver||c.WebKitMutationObserver,h="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),l="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function f(){var t=setTimeout;return function(){return t(g,1)}}var d=new Array(1e3);function g(){for(var t=0;t<i;t+=2)(0,d[t])(d[t+1]),d[t]=void 0,d[t+1]=void 0;i=0}var p,y,m,v,b=void 0;function w(t,e){var s=this,i=new this.constructor(S);void 0===i[F]&&R(i);var n=s._state;if(n){var r=arguments[n-1];o((function(){return j(n,i,r,s._result)}))}else P(s,i,t,e);return i}function T(t){if(t&&"object"==typeof t&&t.constructor===this)return t;var e=new this(S);return x(e,t),e}b=h?function(){return process.nextTick(g)}:u?(y=0,m=new u(g),v=document.createTextNode(""),m.observe(v,{characterData:!0}),function(){v.data=y=++y%2}):l?((p=new MessageChannel).port1.onmessage=g,function(){return p.port2.postMessage(0)}):void 0===a?function(){try{var t=Function("return this")().require("vertx");return void 0!==(n=t.runOnLoop||t.runOnContext)?function(){n(g)}:f()}catch(t){return f()}}():f();var F=Math.random().toString(36).substring(2);function S(){}var A=void 0;function _(e,s,i){s.constructor===e.constructor&&i===w&&s.constructor.resolve===T?function(t,e){1===e._state?E(t,e._result):2===e._state?k(t,e._result):P(e,void 0,(function(e){return x(t,e)}),(function(e){return k(t,e)}))}(e,s):void 0===i?E(e,s):t(i)?function(t,e,s){o((function(t){var i=!1,n=function(t,e,s,i){try{t.call(e,s,i)}catch(t){return t}}(s,e,(function(s){i||(i=!0,e!==s?x(t,s):E(t,s))}),(function(e){i||(i=!0,k(t,e))}),t._label);!i&&n&&(i=!0,k(t,n))}),t)}(e,s,i):E(e,s)}function x(t,e){if(t===e)k(t,new TypeError("You cannot resolve a promise with itself"));else if(n=typeof(i=e),null===i||"object"!==n&&"function"!==n)E(t,e);else{var s=void 0;try{s=e.then}catch(e){return void k(t,e)}_(t,e,s)}var i,n}function O(t){t._onerror&&t._onerror(t._result),C(t)}function E(t,e){t._state===A&&(t._result=e,t._state=1,0!==t._subscribers.length&&o(C,t))}function k(t,e){t._state===A&&(t._state=2,t._result=e,o(O,t))}function P(t,e,s,i){var n=t._subscribers,r=n.length;t._onerror=null,n[r]=e,n[r+1]=s,n[r+2]=i,0===r&&t._state&&o(C,t)}function C(t){var e=t._subscribers,s=t._state;if(0!==e.length){for(var i=void 0,n=void 0,r=t._result,o=0;o<e.length;o+=3)i=e[o],n=e[o+s],i?j(s,i,n,r):n(r);t._subscribers.length=0}}function j(e,s,i,n){var r=t(i),o=void 0,a=void 0,c=!0;if(r){try{o=i(n)}catch(t){c=!1,a=t}if(s===o)return void k(s,new TypeError("A promises callback cannot return that same promise."))}else o=n;s._state!==A||(r&&c?x(s,o):!1===c?k(s,a):1===e?E(s,o):2===e&&k(s,o))}var B=0;function R(t){t[F]=B++,t._state=void 0,t._result=void 0,t._subscribers=[]}var z=function(){function t(t,s){this._instanceConstructor=t,this.promise=new t(S),this.promise[F]||R(this.promise),e(s)?(this.length=s.length,this._remaining=s.length,this._result=new Array(this.length),0===this.length?E(this.promise,this._result):(this.length=this.length||0,this._enumerate(s),0===this._remaining&&E(this.promise,this._result))):k(this.promise,new Error("Array Methods must be provided an Array"))}return t.prototype._enumerate=function(t){for(var e=0;this._state===A&&e<t.length;e++)this._eachEntry(t[e],e)},t.prototype._eachEntry=function(t,e){var s=this._instanceConstructor,i=s.resolve;if(i===T){var n=void 0,r=void 0,o=!1;try{n=t.then}catch(t){o=!0,r=t}if(n===w&&t._state!==A)this._settledAt(t._state,e,t._result);else if("function"!=typeof n)this._remaining--,this._result[e]=t;else if(s===D){var a=new s(S);o?k(a,r):_(a,t,n),this._willSettleAt(a,e)}else this._willSettleAt(new s((function(e){return e(t)})),e)}else this._willSettleAt(i(t),e)},t.prototype._settledAt=function(t,e,s){var i=this.promise;i._state===A&&(this._remaining--,2===t?k(i,s):this._result[e]=s),0===this._remaining&&E(i,this._result)},t.prototype._willSettleAt=function(t,e){var s=this;P(t,void 0,(function(t){return s._settledAt(1,e,t)}),(function(t){return s._settledAt(2,e,t)}))},t}();var D=function(){function e(t){this[F]=B++,this._result=this._state=void 0,this._subscribers=[],S!==t&&("function"!=typeof t&&function(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}(),this instanceof e?function(t,e){try{e((function(e){x(t,e)}),(function(e){k(t,e)}))}catch(e){k(t,e)}}(this,t):function(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}())}return e.prototype.catch=function(t){return this.then(null,t)},e.prototype.finally=function(e){var s=this,i=s.constructor;return t(e)?s.then((function(t){return i.resolve(e()).then((function(){return t}))}),(function(t){return i.resolve(e()).then((function(){throw t}))})):s.then(e,e)},e}();return D.prototype.then=w,D.all=function(t){return new z(this,t).promise},D.race=function(t){var s=this;return e(t)?new s((function(e,i){for(var n=t.length,r=0;r<n;r++)s.resolve(t[r]).then(e,i)})):new s((function(t,e){return e(new TypeError("You must pass an array to race."))}))},D.resolve=T,D.reject=function(t){var e=new this(S);return k(e,t),e},D._setScheduler=function(t){r=t},D._setAsap=function(t){o=t},D._asap=o,D.polyfill=function(){var t=void 0;if(void 0!==s.g)t=s.g;else if("undefined"!=typeof self)t=self;else try{t=Function("return this")()}catch(t){throw new Error("polyfill failed because global object is unavailable in this environment")}var e=t.Promise;if(e){var i=null;try{i=Object.prototype.toString.call(e.resolve())}catch(t){}if("[object Promise]"===i&&!e.cast)return}t.Promise=D},D.Promise=D,D}()},4301:(t,e,s)=>{s(7147),t.exports=self.fetch.bind(self)},7147:(t,e,s)=>{"use strict";s.r(e),s.d(e,{Headers:()=>g,Request:()=>T,Response:()=>S,DOMException:()=>_,fetch:()=>x});var i="undefined"!=typeof globalThis&&globalThis||"undefined"!=typeof self&&self||void 0!==i&&i,n="URLSearchParams"in i,r="Symbol"in i&&"iterator"in Symbol,o="FileReader"in i&&"Blob"in i&&function(){try{return new Blob,!0}catch(t){return!1}}(),a="FormData"in i,c="ArrayBuffer"in i;if(c)var u=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],h=ArrayBuffer.isView||function(t){return t&&u.indexOf(Object.prototype.toString.call(t))>-1};function l(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(t)||""===t)throw new TypeError('Invalid character in header field name: "'+t+'"');return t.toLowerCase()}function f(t){return"string"!=typeof t&&(t=String(t)),t}function d(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return r&&(e[Symbol.iterator]=function(){return e}),e}function g(t){this.map={},t instanceof g?t.forEach((function(t,e){this.append(e,t)}),this):Array.isArray(t)?t.forEach((function(t){this.append(t[0],t[1])}),this):t&&Object.getOwnPropertyNames(t).forEach((function(e){this.append(e,t[e])}),this)}function p(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function y(t){return new Promise((function(e,s){t.onload=function(){e(t.result)},t.onerror=function(){s(t.error)}}))}function m(t){var e=new FileReader,s=y(e);return e.readAsArrayBuffer(t),s}function v(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function b(){return this.bodyUsed=!1,this._initBody=function(t){var e;this.bodyUsed=this.bodyUsed,this._bodyInit=t,t?"string"==typeof t?this._bodyText=t:o&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:a&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:n&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():c&&o&&(e=t)&&DataView.prototype.isPrototypeOf(e)?(this._bodyArrayBuffer=v(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):c&&(ArrayBuffer.prototype.isPrototypeOf(t)||h(t))?this._bodyArrayBuffer=v(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText="",this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):n&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},o&&(this.blob=function(){var t=p(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?p(this)||(ArrayBuffer.isView(this._bodyArrayBuffer)?Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset,this._bodyArrayBuffer.byteOffset+this._bodyArrayBuffer.byteLength)):Promise.resolve(this._bodyArrayBuffer)):this.blob().then(m)}),this.text=function(){var t,e,s,i=p(this);if(i)return i;if(this._bodyBlob)return t=this._bodyBlob,s=y(e=new FileReader),e.readAsText(t),s;if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),s=new Array(e.length),i=0;i<e.length;i++)s[i]=String.fromCharCode(e[i]);return s.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},a&&(this.formData=function(){return this.text().then(F)}),this.json=function(){return this.text().then(JSON.parse)},this}g.prototype.append=function(t,e){t=l(t),e=f(e);var s=this.map[t];this.map[t]=s?s+", "+e:e},g.prototype.delete=function(t){delete this.map[l(t)]},g.prototype.get=function(t){return t=l(t),this.has(t)?this.map[t]:null},g.prototype.has=function(t){return this.map.hasOwnProperty(l(t))},g.prototype.set=function(t,e){this.map[l(t)]=f(e)},g.prototype.forEach=function(t,e){for(var s in this.map)this.map.hasOwnProperty(s)&&t.call(e,this.map[s],s,this)},g.prototype.keys=function(){var t=[];return this.forEach((function(e,s){t.push(s)})),d(t)},g.prototype.values=function(){var t=[];return this.forEach((function(e){t.push(e)})),d(t)},g.prototype.entries=function(){var t=[];return this.forEach((function(e,s){t.push([s,e])})),d(t)},r&&(g.prototype[Symbol.iterator]=g.prototype.entries);var w=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];function T(t,e){if(!(this instanceof T))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');var s,i,n=(e=e||{}).body;if(t instanceof T){if(t.bodyUsed)throw new TypeError("Already read");this.url=t.url,this.credentials=t.credentials,e.headers||(this.headers=new g(t.headers)),this.method=t.method,this.mode=t.mode,this.signal=t.signal,n||null==t._bodyInit||(n=t._bodyInit,t.bodyUsed=!0)}else this.url=String(t);if(this.credentials=e.credentials||this.credentials||"same-origin",!e.headers&&this.headers||(this.headers=new g(e.headers)),this.method=(i=(s=e.method||this.method||"GET").toUpperCase(),w.indexOf(i)>-1?i:s),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&n)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(n),!("GET"!==this.method&&"HEAD"!==this.method||"no-store"!==e.cache&&"no-cache"!==e.cache)){var r=/([?&])_=[^&]*/;r.test(this.url)?this.url=this.url.replace(r,"$1_="+(new Date).getTime()):this.url+=(/\?/.test(this.url)?"&":"?")+"_="+(new Date).getTime()}}function F(t){var e=new FormData;return t.trim().split("&").forEach((function(t){if(t){var s=t.split("="),i=s.shift().replace(/\+/g," "),n=s.join("=").replace(/\+/g," ");e.append(decodeURIComponent(i),decodeURIComponent(n))}})),e}function S(t,e){if(!(this instanceof S))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText=void 0===e.statusText?"":""+e.statusText,this.headers=new g(e.headers),this.url=e.url||"",this._initBody(t)}T.prototype.clone=function(){return new T(this,{body:this._bodyInit})},b.call(T.prototype),b.call(S.prototype),S.prototype.clone=function(){return new S(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new g(this.headers),url:this.url})},S.error=function(){var t=new S(null,{status:0,statusText:""});return t.type="error",t};var A=[301,302,303,307,308];S.redirect=function(t,e){if(-1===A.indexOf(e))throw new RangeError("Invalid status code");return new S(null,{status:e,headers:{location:t}})};var _=i.DOMException;try{new _}catch(t){(_=function(t,e){this.message=t,this.name=e;var s=Error(t);this.stack=s.stack}).prototype=Object.create(Error.prototype),_.prototype.constructor=_}function x(t,e){return new Promise((function(s,n){var r=new T(t,e);if(r.signal&&r.signal.aborted)return n(new _("Aborted","AbortError"));var a=new XMLHttpRequest;function u(){a.abort()}a.onload=function(){var t,e,i={status:a.status,statusText:a.statusText,headers:(t=a.getAllResponseHeaders()||"",e=new g,t.replace(/\r?\n[\t ]+/g," ").split("\r").map((function(t){return 0===t.indexOf("\n")?t.substr(1,t.length):t})).forEach((function(t){var s=t.split(":"),i=s.shift().trim();if(i){var n=s.join(":").trim();e.append(i,n)}})),e)};i.url="responseURL"in a?a.responseURL:i.headers.get("X-Request-URL");var n="response"in a?a.response:a.responseText;setTimeout((function(){s(new S(n,i))}),0)},a.onerror=function(){setTimeout((function(){n(new TypeError("Network request failed"))}),0)},a.ontimeout=function(){setTimeout((function(){n(new TypeError("Network request failed"))}),0)},a.onabort=function(){setTimeout((function(){n(new _("Aborted","AbortError"))}),0)},a.open(r.method,function(t){try{return""===t&&i.location.href?i.location.href:t}catch(e){return t}}(r.url),!0),"include"===r.credentials?a.withCredentials=!0:"omit"===r.credentials&&(a.withCredentials=!1),"responseType"in a&&(o?a.responseType="blob":c&&r.headers.get("Content-Type")&&-1!==r.headers.get("Content-Type").indexOf("application/octet-stream")&&(a.responseType="arraybuffer")),!e||"object"!=typeof e.headers||e.headers instanceof g?r.headers.forEach((function(t,e){a.setRequestHeader(e,t)})):Object.getOwnPropertyNames(e.headers).forEach((function(t){a.setRequestHeader(t,f(e.headers[t]))})),r.signal&&(r.signal.addEventListener("abort",u),a.onreadystatechange=function(){4===a.readyState&&r.signal.removeEventListener("abort",u)}),a.send(void 0===r._bodyInit?null:r._bodyInit)}))}x.polyfill=!0,i.fetch||(i.fetch=x,i.Headers=g,i.Request=T,i.Response=S)}},e={};function s(i){var n=e[i];if(void 0!==n)return n.exports;var r=e[i]={exports:{}};return t[i].call(r.exports,r,r.exports,s),r.exports}s.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return s.d(e,{a:e}),e},s.d=(t,e)=>{for(var i in e)s.o(e,i)&&!s.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var i={};return(()=>{"use strict";s.d(i,{default:()=>r});var t=s(9581),e=s(727),n=s.n(e);const r=function(){var e=document.body.dataset.addSearchApiKey;if(!e)return console.log("No AddSearch API key provided, skipping search suggestions."),[];var s=new(n())(e);return[(0,t.A)("meganav-search-input"),(0,t.A)("meganav-mobile-search-input")].filter((function(t){return t})).map((function(e){var i=e.parentNode,n=(0,t.A)("meganav-search-autocomplete-container",i),r=(0,t.A)("meganav-search-autocomplete-list",i),o=(0,t.A)("meganav-search-input-clear",i);return function(t){var e=t.input,s=t.container,i=t.listContainer,n=t.clear,r=t.client;r.setAnalyticsTag("Meganav autocomplete"),r.setThrottleTime(400);var o,a=function(){s.classList.add("hidden"),i.innerHTML=""},c=function(t){(t||"").length>0&&n?n.classList.remove("invisible"):n&&n.classList.add("invisible")},u=function(t,e){return t.replace(e.toLowerCase(),'<span class="font-light">'.concat(e,"</span>"))},h=function(t){return window.location="/search?q=".concat(t)},l=function(t){var e=i.querySelector('[data-suggestion-index="'.concat(t+1,'"]'));e&&e.focus()},f=function(t){var e=t-1,s=i.querySelector('[data-suggestion-index="'.concat(e,'"]'));s&&s.focus()},d=function(t){var n=t.target.value;"ArrowDown"!==t.key?n?r.suggestions(n,function(t){return function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{suggestions:[]};if(c(t),0!==n.suggestions.length){var r=n.suggestions.map((function(s,i){var n=document.createElement("li"),r=document.createElement("button");return r.type="button",r.classList.add("ui-text-menu2","font-medium","p-8","w-full","text-left","rounded","hover:text-gui-hover","focus:outline-gui-focus","hover:bg-light-grey"),r.innerHTML=u(s.value,t),r.dataset.suggestionIndex=i,r.addEventListener("click",(function(){h(s.value)})),r.addEventListener("keydown",(function(t){var n=t.key;"ArrowDown"===n?l():"ArrowUp"===n&&i-1<0?e.focus():"ArrowUp"===n&&i-1>=0?f():"Enter"!==n&&"Space"!==n||h(s.value)})),n.appendChild(r),n}));i.innerHTML="",r.forEach((function(t){return i.appendChild(t)})),s.classList.remove("hidden")}else a()}}(n)):a():l(0)};return n&&(o=function(){e.value="",n.classList.add("invisible"),a()},n.addEventListener("click",o)),e.addEventListener("keyup",d),{teardown:function(){e.removeEventListener("keyup",d),n&&n.removeEventListener("click",o)},clear:function(){e.value="",a()}}}({input:e,container:n,listContainer:r,client:s,clear:o})}))}})(),i.default})()}));
2
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.AblyUi=e():(t.AblyUi=t.AblyUi||{},t.AblyUi.Core=t.AblyUi.Core||{},t.AblyUi.Core.MeganavSearchAutocomplete=e())}(this,(function(){return(()=>{var t={727:(t,e,s)=>{"use strict";t.exports=s(5647)},493:(t,e,s)=>{"use strict";s(2702).polyfill(),s(4301);var i=function(t,e,s,n,r,o,a){var c=function(t,e){return t||!1===t?"&"+e+"="+t:""};if("search"===s||"suggest"===s||"autocomplete"===s){var u="",h="",l=null;if("search"===s){l=s,u=n.keyword,u=n.enableLogicalOperators?u.replace(/ and /g," AND ").replace(/ or /g," OR ").replace(/ not /g," NOT "):u.replace(/ AND /g," and ").replace(/ OR /g," or ").replace(/ NOT /g," not "),u=encodeURIComponent(u);var f=n.fuzzy;if("retry"===f&&(f=!0===o),"search"===s){if(h=c(n.lang,"lang")+c(f,"fuzzy")+c(n.collectAnalytics,"collectAnalytics")+c(n.postfixWildcard,"postfixWildcard")+c(n.categories,"categories")+c(n.priceFromCents,"priceFromCents")+c(n.priceToCents,"priceToCents")+c(n.dateFrom,"dateFrom")+c(n.dateTo,"dateTo")+c(n.paging.page,"page")+c(n.paging.pageSize,"limit")+c(n.paging.sortBy,"sort")+c(n.paging.sortOrder,"order")+c(n.shuffleAndLimitTo,"shuffleAndLimitTo")+c(n.jwt,"jwt")+c(n.resultType,"resultType")+c(n.userToken,"userToken")+c(n.numFacets,"numFacets")+c(n.cacheResponseTime,"cacheResponseWithTtlSeconds")+c(n.searchOperator,"defaultOperator")+c(n.analyticsTag,"analyticsTag")+c(n.hierarchicalFacetSetting,"hierarchicalFacets"),n.customFieldFilters)for(var d=0;d<n.customFieldFilters.length;d++)h=h+"&customField="+n.customFieldFilters[d];if(n.facetFields)for(d=0;d<n.facetFields.length;d++)h=h+"&facet="+n.facetFields[d];if(n.rangeFacets&&(h=h+"&rangeFacets="+JSON.stringify(n.rangeFacets)),n.statsFields)for(d=0;d<n.statsFields.length;d++)h=h+"&fieldStat="+n.statsFields[d];if(n.personalizationEvents&&Array.isArray(n.personalizationEvents))for(d=0;d<n.personalizationEvents.length;d++){var g=n.personalizationEvents[d],p=Object.keys(g);h=h+"&personalizationEvent="+encodeURIComponent(p+"="+g[p])}a?h=h+"&filter="+encodeURIComponent(JSON.stringify(a)):n.filterObject&&(h=h+"&filter="+encodeURIComponent(JSON.stringify(n.filterObject)))}}else"suggest"===s?(l=s,h=c(n.suggestionsSize,"size")+c(n.lang,"lang"),u=n.suggestionsPrefix):"autocomplete"===s&&(l="autocomplete/document-field",h=c(n.autocomplete.field,"source")+c(n.autocomplete.size,"size"),u=n.autocomplete.prefix);fetch("https://"+t+"/v1/"+l+"/"+e+"?term="+u+h).then((function(t){return t.json()})).then((function(a){if("search"===s&&"retry"===n.fuzzy&&0===a.total_hits&&!0!==o)i(t,e,s,n,r,!0);else{if(!0===o){var c=n.paging.pageSize;a.total_hits>=c&&(a.total_hits=c)}r(a)}})).catch((function(t){console.log(t),r({error:{response:500,message:"invalid server response"}})}))}else r({error:{response:400,message:"invalid query type"}})};t.exports=i},5647:(t,e,s)=>{"use strict";var i=s(493),n=s(9610),r=s(3716),o=s(7585),a=s(5159),c=s(4508);t.exports=function(t,e){this.sitekey=t,this.privatekey=e,this.apiHostname="api.addsearch.com",this.settings=new o,this.sessionId=("a-"+1e8*Math.random()).substring(0,10),this.search=function(t,e){var s=null,n=null;if(t&&a.isFunction(e))s=t,n=e;else if(!e&&a.isFunction(t))s=this.settings.getSettings().keyword,n=t;else{if(!this.settings.getSettings().callback)throw"Illegal search parameters. Should be (keyword, callbackFunction) or (callbackFunction)";s=this.settings.getSettings().keyword,n=this.settings.getSettings().callback}this.settings.setCallback(n),this.settings.setKeyword(s),this.throttledSearchFetch||(this.throttledSearchFetch=c(this.settings.getSettings().throttleTimeMs,i)),this.throttledSearchFetch(this.apiHostname,this.sitekey,"search",this.settings.getSettings(),n)},this.suggestions=function(t,e){if(!t||!e||!a.isFunction(e))throw"Illegal suggestions parameters. Should be (prefix, callbackFunction)";this.settings.setSuggestionsPrefix(t),this.throttledSuggestionsFetch||(this.throttledSuggestionsFetch=c(this.settings.getSettings().throttleTimeMs,i)),this.throttledSuggestionsFetch(this.apiHostname,this.sitekey,"suggest",this.settings.getSettings(),e)},this.autocomplete=function(t,e,s){if(!(t&&e&&s&&a.isFunction(s)))throw"Illegal autocomplete parameters. Should be (field, prefix, callbackFunction)";this.settings.setAutocompleteParams(t,e),this.throttledAutocompleteFetch||(this.throttledAutocompleteFetch=c(this.settings.getSettings().throttleTimeMs,i)),this.throttledAutocompleteFetch(this.apiHostname,this.sitekey,"autocomplete",this.settings.getSettings(),s)},this.fetchCustomApi=function(t,e,s){var n=Object.assign({},this.settings.getSettings());n.facetFields=n.facetFields.filter((e=>t===e)),i(this.apiHostname,this.sitekey,"search",n,s,null,e)},this.fetchRangeFacets=function(t,e,s){var n=Object.assign({},this.settings.getSettings());n.rangeFacets||(n.rangeFacets=[]),n.rangeFacets.push({field:t.field,ranges:t.ranges}),i(this.apiHostname,this.sitekey,"search",n,s,null,e)},this.getDocument=function(t){return n.getDocument(this.apiHostname,this.sitekey,this.privatekey,t)},this.saveDocument=function(t){return n.saveDocument(this.apiHostname,this.sitekey,this.privatekey,t)},this.saveDocumentsBatch=function(t){if(!t||!t.documents||!Array.isArray(t.documents))throw"Please provide an array of documents: {documents: []}";return n.saveDocumentsBatch(this.apiHostname,this.sitekey,this.privatekey,t)},this.deleteDocument=function(t){return n.deleteDocument(this.apiHostname,this.sitekey,this.privatekey,t)},this.deleteDocumentsBatch=function(t){if(!t||!t.documents||!Array.isArray(t.documents))throw"Please provide an array of document ids: {documents: []}";return n.deleteDocumentsBatch(this.apiHostname,this.sitekey,this.privatekey,t)},this.setApiHostname=function(t){this.apiHostname=t},this.getSettings=function(){return this.settings.getSettings()},this.setLanguage=function(t){this.settings.setLanguage(t)},this.setCategoryFilters=function(t){this.settings.setCategoryFilters(t)},this.addCustomFieldFilter=function(t,e){this.settings.addCustomFieldFilter(t,e)},this.removeCustomFieldFilter=function(t,e){this.settings.removeCustomFieldFilter(t,e)},this.setPriceRangeFilter=function(t,e){this.settings.setPriceRangeFilter(t,e)},this.setDateFilter=function(t,e){this.settings.setDateFilter(t,e)},this.setJWT=function(t){this.settings.setJWT(t)},this.setUserToken=function(t){this.settings.setUserToken(t)},this.setPaging=function(t,e,s,i){this.settings.setPaging(t,e,s,i)},this.nextPage=function(){this.settings.nextPage()},this.previousPage=function(){this.settings.previousPage()},this.setSuggestionsSize=function(t){this.settings.setSuggestionsSize(t)},this.setAutocompleteSize=function(t){this.settings.setAutocompleteSize(t)},this.addFacetField=function(t){this.settings.addFacetField(t)},this.addHierarchicalFacetSetting=function(t){this.settings.addHierarchicalFacetSetting(t)},this.addRangeFacet=function(t,e){this.settings.addRangeFacet(t,e)},this.addStatsField=function(t){this.settings.addStatsField(t)},this.setNumberOfFacets=function(t){this.settings.setNumberOfFacets(t)},this.setResultType=function(t){this.settings.setResultType(t)},this.setPersonalizationEvents=function(t){this.settings.setPersonalizationEvents(t)},this.setFilterObject=function(t){this.settings.setFilterObject(t)},this.setShuffleAndLimitTo=function(t){this.settings.setShuffleAndLimitTo(t)},this.setFuzzyMatch=function(t){this.settings.setFuzzyMatch(t)},this.setPostfixWildcard=function(t){this.settings.setPostfixWildcard(t)},this.setCacheResponseTime=function(t){this.settings.setCacheResponseTime(t)},this.setCollectAnalytics=function(t){this.settings.setCollectAnalytics(t)},this.setAnalyticsTag=function(t){this.settings.setAnalyticsTag(t)},this.setThrottleTime=function(t){this.settings.setThrottleTime(t)},this.setStatsSessionId=function(t){this.sessionId=t},this.getStatsSessionId=function(){return this.sessionId},this.enableLogicalOperators=function(t){this.settings.enableLogicalOperators(t)},this.setSearchOperator=function(t){this.settings.setSearchOperator(t)},this.sendStatsEvent=function(t,e,s){if("search"===t)s={action:"search",session:this.sessionId,keyword:e,numberOfResults:s.numberOfResults,analyticsTag:this.getSettings().analyticsTag},r(this.apiHostname,this.sitekey,s);else{if("click"!==t)throw"Illegal sendStatsEvent type parameters. Should be search or click)";s={action:"click",session:this.sessionId,keyword:e,docid:s.documentId,position:s.position,analyticsTag:this.getSettings().analyticsTag},r(this.apiHostname,this.sitekey,s)}},this.searchResultClicked=function(t,e){this.sendStatsEvent("click",this.settings.getSettings().keyword,{documentId:t,position:e})}}},9610:(t,e,s)=>{"use strict";s(4301);const i=s(5159),n=s(2702).Promise,r=function(t,e){return{Authorization:"Basic "+i.base64(t+":"+e),"Content-Type":"application/json"}};t.exports={getDocument:function(t,e,s,i){return new n(((n,o)=>{fetch("https://"+t+"/v2/indices/"+e+"/documents/"+i,{method:"GET",headers:r(e,s)}).then((t=>{200==t.status?n(t.json()):o({status:t.status,text:t.statusText})})).catch((t=>{o({status:400,text:t})}))}))},saveDocument:function(t,e,s,i){const o=i.id||i.url;return new n(((n,a)=>{fetch("https://"+t+"/v2/indices/"+e+"/documents/",{method:o?"PUT":"POST",headers:r(e,s),body:JSON.stringify(i)}).then((t=>{202==t.status?n({status:t.status,text:t.statusText}):a({status:t.status,text:t.statusText})})).catch((t=>{a({status:400,text:t})}))}))},saveDocumentsBatch:function(t,e,s,i){return new n(((n,o)=>{fetch("https://"+t+"/v2/indices/"+e+"/documents:batch",{method:"PUT",headers:r(e,s),body:JSON.stringify(i)}).then((t=>{202==t.status?n({status:t.status,text:t.statusText}):o({status:t.status,text:t.statusText})})).catch((t=>{o({status:400,text:t})}))}))},deleteDocument:function(t,e,s,i){return new n(((n,o)=>{fetch("https://"+t+"/v2/indices/"+e+"/documents/"+i,{method:"DELETE",headers:r(e,s)}).then((t=>{202==t.status?n({status:t.status,text:t.statusText}):o({status:t.status,text:t.statusText})})).catch((t=>{o({status:400,text:t})}))}))},deleteDocumentsBatch:function(t,e,s,i){return new n(((n,o)=>{fetch("https://"+t+"/v2/indices/"+e+"/documents:batch",{method:"DELETE",headers:r(e,s),body:JSON.stringify(i)}).then((t=>{202==t.status?n({status:t.status,text:t.statusText}):o({status:t.status,text:t.statusText})})).catch((t=>{o({status:400,text:t})}))}))}}},7585:t=>{"use strict";t.exports=function(){this.settings={keyword:"*",callback:null,throttleTimeMs:200,fuzzy:"auto",paging:{page:1,pageSize:10,sortBy:"relevance",sortOrder:"desc"},customFieldFilters:[],userToken:null,suggestionsSize:10,facetFields:[],autocomplete:{size:10},searchOperator:null,enableLogicalOperators:!1,cacheResponseTime:null},this.getSettings=function(){return this.settings},this.setKeyword=function(t){this.settings.keyword=t||"*"},this.setCallback=function(t){this.settings.callback=t},this.setThrottleTime=function(t){this.settings.throttleTimeMs=t},this.setSuggestionsPrefix=function(t){this.settings.suggestionsPrefix=t},this.setSuggestionsSize=function(t){this.settings.suggestionsSize=t},this.setAutocompleteSize=function(t){this.settings.autocomplete.size=t},this.setAutocompleteParams=function(t,e){this.settings.autocomplete.field=t,this.settings.autocomplete.prefix=e},this.setLanguage=function(t){if(t&&2!==t.length)throw'use 2-char language code (e.g. "en")';this.settings.lang=t},this.setFuzzyMatch=function(t){if(!0!==t&&!1!==t&&"auto"!==t&&"retry"!==t)throw"fuzzy matching can be true, false, 'auto', or 'retry'";this.settings.fuzzy=t},this.enableLogicalOperators=function(t){this.settings.enableLogicalOperators=t},this.setCacheResponseTime=function(t){this.settings.cacheResponseTime=t},this.setPostfixWildcard=function(t){this.settings.postfixWildcard=t},this.setCollectAnalytics=function(t){this.settings.collectAnalytics=t},this.setAnalyticsTag=function(t){this.settings.analyticsTag=t},this.setCategoryFilters=function(t){this.settings.categories=t},this.setFilterObject=function(t){this.settings.filterObject=t},this.setPriceRangeFilter=function(t,e){this.settings.priceFromCents=t,this.settings.priceToCents=e},this.addCustomFieldFilter=function(t,e){var s=encodeURIComponent(t+"="+e);-1===this.settings.customFieldFilters.indexOf(s)&&this.settings.customFieldFilters.push(s)},this.removeCustomFieldFilter=function(t,e){var s=!1,i=encodeURIComponent(t+"="+e);e||(s=!0,i=encodeURIComponent(t+"="));for(var n=this.settings.customFieldFilters.length;n>0;n--){var r=this.settings.customFieldFilters[n-1];(s&&0===r.indexOf(i)||r===i)&&this.settings.customFieldFilters.splice(n-1,1)}},this.setDateFilter=function(t,e){this.settings.dateFrom=t,this.settings.dateTo=e},this.setKeyword=function(t){this.settings.keyword=t||"*"},this.setJWT=function(t){this.settings.jwt=t},this.setUserToken=function(t){this.settings.userToken=t},this.setPersonalizationEvents=function(t){this.settings.personalizationEvents=t},this.setResultType=function(t){this.settings.resultType=t},this.addFacetField=function(t){-1===this.settings.facetFields.indexOf(t)&&this.settings.facetFields.push(t)},this.addHierarchicalFacetSetting=function(t){this.settings.hierarchicalFacetSetting=JSON.stringify(t)},this.addRangeFacet=function(t,e){this.settings.rangeFacets||(this.settings.rangeFacets=[]),this.settings.rangeFacets.push({field:t,ranges:e})},this.addStatsField=function(t){this.settings.statsFields||(this.settings.statsFields=[]),-1===this.settings.statsFields.indexOf(t)&&this.settings.statsFields.push(t)},this.setNumberOfFacets=function(t){this.settings.numFacets=t},this.setPaging=function(t,e,s,i){if(t<1)throw"page must be 1 or bigger";if(e<1||e>300)throw"pageSize must be 1-300";if("asc"!==i&&"desc"!==i)throw"sortOrder must be asc or desc";this.settings.paging.page=t,this.settings.paging.pageSize=e,this.settings.paging.sortBy=s,this.settings.paging.sortOrder=i},this.setShuffleAndLimitTo=function(t){this.settings.shuffleAndLimitTo=t},this.nextPage=function(){this.settings.paging.page=this.settings.paging.page+1},this.previousPage=function(){this.settings.paging.page>0&&(this.settings.paging.page=this.settings.paging.page-1)},this.setSearchOperator=function(t){if("and"!==t&&"or"!==t)throw"operator must be 'and' || 'or'";this.settings.searchOperator=t}}},3716:(t,e,s)=>{"use strict";s(2702).polyfill(),s(4301),t.exports=function(t,e,s){"undefined"!=typeof window&&window.navigator&&window.navigator.sendBeacon?navigator.sendBeacon("https://"+t+"/v1/stats/"+e+"/",JSON.stringify(s)):fetch("https://"+t+"/v1/stats/"+e+"/",{method:"POST",headers:{"Content-Type":"text/plain"},body:JSON.stringify(s)})}},4508:t=>{t.exports=function(t,e){var s,i=0;function n(){s&&clearTimeout(s)}return function(){var r=this,o=Date.now()-i,a=arguments;function c(){i=Date.now(),e.apply(r,a)}n(),o>t?c():s=setTimeout(c,t-o)}}},5159:(t,e,s)=>{t.exports={isFunction:function(t){return t&&"[object Function]"==={}.toString.call(t)},base64:function(t){return s.g.window={},window&&window.btoa?window.btoa(t):Buffer?Buffer.from(t).toString("base64"):void 0}}},9581:(t,e,s)=>{"use strict";s.d(e,{A:()=>i});var i=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document;return e.querySelector("[data-id=".concat(t,"]"))}},2702:function(t,e,s){t.exports=function(){"use strict";function t(t){return"function"==typeof t}var e=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},i=0,n=void 0,r=void 0,o=function(t,e){d[i]=t,d[i+1]=e,2===(i+=2)&&(r?r(g):b())};var a="undefined"!=typeof window?window:void 0,c=a||{},u=c.MutationObserver||c.WebKitMutationObserver,h="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),l="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function f(){var t=setTimeout;return function(){return t(g,1)}}var d=new Array(1e3);function g(){for(var t=0;t<i;t+=2)(0,d[t])(d[t+1]),d[t]=void 0,d[t+1]=void 0;i=0}var p,y,m,v,b=void 0;function w(t,e){var s=this,i=new this.constructor(A);void 0===i[F]&&R(i);var n=s._state;if(n){var r=arguments[n-1];o((function(){return j(n,i,r,s._result)}))}else P(s,i,t,e);return i}function T(t){if(t&&"object"==typeof t&&t.constructor===this)return t;var e=new this(A);return x(e,t),e}b=h?function(){return process.nextTick(g)}:u?(y=0,m=new u(g),v=document.createTextNode(""),m.observe(v,{characterData:!0}),function(){v.data=y=++y%2}):l?((p=new MessageChannel).port1.onmessage=g,function(){return p.port2.postMessage(0)}):void 0===a?function(){try{var t=Function("return this")().require("vertx");return void 0!==(n=t.runOnLoop||t.runOnContext)?function(){n(g)}:f()}catch(t){return f()}}():f();var F=Math.random().toString(36).substring(2);function A(){}var S=void 0;function _(e,s,i){s.constructor===e.constructor&&i===w&&s.constructor.resolve===T?function(t,e){1===e._state?E(t,e._result):2===e._state?k(t,e._result):P(e,void 0,(function(e){return x(t,e)}),(function(e){return k(t,e)}))}(e,s):void 0===i?E(e,s):t(i)?function(t,e,s){o((function(t){var i=!1,n=function(t,e,s,i){try{t.call(e,s,i)}catch(t){return t}}(s,e,(function(s){i||(i=!0,e!==s?x(t,s):E(t,s))}),(function(e){i||(i=!0,k(t,e))}),t._label);!i&&n&&(i=!0,k(t,n))}),t)}(e,s,i):E(e,s)}function x(t,e){if(t===e)k(t,new TypeError("You cannot resolve a promise with itself"));else if(n=typeof(i=e),null===i||"object"!==n&&"function"!==n)E(t,e);else{var s=void 0;try{s=e.then}catch(e){return void k(t,e)}_(t,e,s)}var i,n}function O(t){t._onerror&&t._onerror(t._result),C(t)}function E(t,e){t._state===S&&(t._result=e,t._state=1,0!==t._subscribers.length&&o(C,t))}function k(t,e){t._state===S&&(t._state=2,t._result=e,o(O,t))}function P(t,e,s,i){var n=t._subscribers,r=n.length;t._onerror=null,n[r]=e,n[r+1]=s,n[r+2]=i,0===r&&t._state&&o(C,t)}function C(t){var e=t._subscribers,s=t._state;if(0!==e.length){for(var i=void 0,n=void 0,r=t._result,o=0;o<e.length;o+=3)i=e[o],n=e[o+s],i?j(s,i,n,r):n(r);t._subscribers.length=0}}function j(e,s,i,n){var r=t(i),o=void 0,a=void 0,c=!0;if(r){try{o=i(n)}catch(t){c=!1,a=t}if(s===o)return void k(s,new TypeError("A promises callback cannot return that same promise."))}else o=n;s._state!==S||(r&&c?x(s,o):!1===c?k(s,a):1===e?E(s,o):2===e&&k(s,o))}var B=0;function R(t){t[F]=B++,t._state=void 0,t._result=void 0,t._subscribers=[]}var z=function(){function t(t,s){this._instanceConstructor=t,this.promise=new t(A),this.promise[F]||R(this.promise),e(s)?(this.length=s.length,this._remaining=s.length,this._result=new Array(this.length),0===this.length?E(this.promise,this._result):(this.length=this.length||0,this._enumerate(s),0===this._remaining&&E(this.promise,this._result))):k(this.promise,new Error("Array Methods must be provided an Array"))}return t.prototype._enumerate=function(t){for(var e=0;this._state===S&&e<t.length;e++)this._eachEntry(t[e],e)},t.prototype._eachEntry=function(t,e){var s=this._instanceConstructor,i=s.resolve;if(i===T){var n=void 0,r=void 0,o=!1;try{n=t.then}catch(t){o=!0,r=t}if(n===w&&t._state!==S)this._settledAt(t._state,e,t._result);else if("function"!=typeof n)this._remaining--,this._result[e]=t;else if(s===D){var a=new s(A);o?k(a,r):_(a,t,n),this._willSettleAt(a,e)}else this._willSettleAt(new s((function(e){return e(t)})),e)}else this._willSettleAt(i(t),e)},t.prototype._settledAt=function(t,e,s){var i=this.promise;i._state===S&&(this._remaining--,2===t?k(i,s):this._result[e]=s),0===this._remaining&&E(i,this._result)},t.prototype._willSettleAt=function(t,e){var s=this;P(t,void 0,(function(t){return s._settledAt(1,e,t)}),(function(t){return s._settledAt(2,e,t)}))},t}();var D=function(){function e(t){this[F]=B++,this._result=this._state=void 0,this._subscribers=[],A!==t&&("function"!=typeof t&&function(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}(),this instanceof e?function(t,e){try{e((function(e){x(t,e)}),(function(e){k(t,e)}))}catch(e){k(t,e)}}(this,t):function(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}())}return e.prototype.catch=function(t){return this.then(null,t)},e.prototype.finally=function(e){var s=this,i=s.constructor;return t(e)?s.then((function(t){return i.resolve(e()).then((function(){return t}))}),(function(t){return i.resolve(e()).then((function(){throw t}))})):s.then(e,e)},e}();return D.prototype.then=w,D.all=function(t){return new z(this,t).promise},D.race=function(t){var s=this;return e(t)?new s((function(e,i){for(var n=t.length,r=0;r<n;r++)s.resolve(t[r]).then(e,i)})):new s((function(t,e){return e(new TypeError("You must pass an array to race."))}))},D.resolve=T,D.reject=function(t){var e=new this(A);return k(e,t),e},D._setScheduler=function(t){r=t},D._setAsap=function(t){o=t},D._asap=o,D.polyfill=function(){var t=void 0;if(void 0!==s.g)t=s.g;else if("undefined"!=typeof self)t=self;else try{t=Function("return this")()}catch(t){throw new Error("polyfill failed because global object is unavailable in this environment")}var e=t.Promise;if(e){var i=null;try{i=Object.prototype.toString.call(e.resolve())}catch(t){}if("[object Promise]"===i&&!e.cast)return}t.Promise=D},D.Promise=D,D}()},4301:(t,e,s)=>{s(7147),t.exports=self.fetch.bind(self)},7147:(t,e,s)=>{"use strict";s.r(e),s.d(e,{Headers:()=>g,Request:()=>T,Response:()=>A,DOMException:()=>_,fetch:()=>x});var i="undefined"!=typeof globalThis&&globalThis||"undefined"!=typeof self&&self||void 0!==i&&i,n="URLSearchParams"in i,r="Symbol"in i&&"iterator"in Symbol,o="FileReader"in i&&"Blob"in i&&function(){try{return new Blob,!0}catch(t){return!1}}(),a="FormData"in i,c="ArrayBuffer"in i;if(c)var u=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],h=ArrayBuffer.isView||function(t){return t&&u.indexOf(Object.prototype.toString.call(t))>-1};function l(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(t)||""===t)throw new TypeError('Invalid character in header field name: "'+t+'"');return t.toLowerCase()}function f(t){return"string"!=typeof t&&(t=String(t)),t}function d(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return r&&(e[Symbol.iterator]=function(){return e}),e}function g(t){this.map={},t instanceof g?t.forEach((function(t,e){this.append(e,t)}),this):Array.isArray(t)?t.forEach((function(t){this.append(t[0],t[1])}),this):t&&Object.getOwnPropertyNames(t).forEach((function(e){this.append(e,t[e])}),this)}function p(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function y(t){return new Promise((function(e,s){t.onload=function(){e(t.result)},t.onerror=function(){s(t.error)}}))}function m(t){var e=new FileReader,s=y(e);return e.readAsArrayBuffer(t),s}function v(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function b(){return this.bodyUsed=!1,this._initBody=function(t){var e;this.bodyUsed=this.bodyUsed,this._bodyInit=t,t?"string"==typeof t?this._bodyText=t:o&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:a&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:n&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():c&&o&&(e=t)&&DataView.prototype.isPrototypeOf(e)?(this._bodyArrayBuffer=v(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):c&&(ArrayBuffer.prototype.isPrototypeOf(t)||h(t))?this._bodyArrayBuffer=v(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText="",this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):n&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},o&&(this.blob=function(){var t=p(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?p(this)||(ArrayBuffer.isView(this._bodyArrayBuffer)?Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset,this._bodyArrayBuffer.byteOffset+this._bodyArrayBuffer.byteLength)):Promise.resolve(this._bodyArrayBuffer)):this.blob().then(m)}),this.text=function(){var t,e,s,i=p(this);if(i)return i;if(this._bodyBlob)return t=this._bodyBlob,s=y(e=new FileReader),e.readAsText(t),s;if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),s=new Array(e.length),i=0;i<e.length;i++)s[i]=String.fromCharCode(e[i]);return s.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},a&&(this.formData=function(){return this.text().then(F)}),this.json=function(){return this.text().then(JSON.parse)},this}g.prototype.append=function(t,e){t=l(t),e=f(e);var s=this.map[t];this.map[t]=s?s+", "+e:e},g.prototype.delete=function(t){delete this.map[l(t)]},g.prototype.get=function(t){return t=l(t),this.has(t)?this.map[t]:null},g.prototype.has=function(t){return this.map.hasOwnProperty(l(t))},g.prototype.set=function(t,e){this.map[l(t)]=f(e)},g.prototype.forEach=function(t,e){for(var s in this.map)this.map.hasOwnProperty(s)&&t.call(e,this.map[s],s,this)},g.prototype.keys=function(){var t=[];return this.forEach((function(e,s){t.push(s)})),d(t)},g.prototype.values=function(){var t=[];return this.forEach((function(e){t.push(e)})),d(t)},g.prototype.entries=function(){var t=[];return this.forEach((function(e,s){t.push([s,e])})),d(t)},r&&(g.prototype[Symbol.iterator]=g.prototype.entries);var w=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];function T(t,e){if(!(this instanceof T))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');var s,i,n=(e=e||{}).body;if(t instanceof T){if(t.bodyUsed)throw new TypeError("Already read");this.url=t.url,this.credentials=t.credentials,e.headers||(this.headers=new g(t.headers)),this.method=t.method,this.mode=t.mode,this.signal=t.signal,n||null==t._bodyInit||(n=t._bodyInit,t.bodyUsed=!0)}else this.url=String(t);if(this.credentials=e.credentials||this.credentials||"same-origin",!e.headers&&this.headers||(this.headers=new g(e.headers)),this.method=(i=(s=e.method||this.method||"GET").toUpperCase(),w.indexOf(i)>-1?i:s),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&n)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(n),!("GET"!==this.method&&"HEAD"!==this.method||"no-store"!==e.cache&&"no-cache"!==e.cache)){var r=/([?&])_=[^&]*/;r.test(this.url)?this.url=this.url.replace(r,"$1_="+(new Date).getTime()):this.url+=(/\?/.test(this.url)?"&":"?")+"_="+(new Date).getTime()}}function F(t){var e=new FormData;return t.trim().split("&").forEach((function(t){if(t){var s=t.split("="),i=s.shift().replace(/\+/g," "),n=s.join("=").replace(/\+/g," ");e.append(decodeURIComponent(i),decodeURIComponent(n))}})),e}function A(t,e){if(!(this instanceof A))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText=void 0===e.statusText?"":""+e.statusText,this.headers=new g(e.headers),this.url=e.url||"",this._initBody(t)}T.prototype.clone=function(){return new T(this,{body:this._bodyInit})},b.call(T.prototype),b.call(A.prototype),A.prototype.clone=function(){return new A(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new g(this.headers),url:this.url})},A.error=function(){var t=new A(null,{status:0,statusText:""});return t.type="error",t};var S=[301,302,303,307,308];A.redirect=function(t,e){if(-1===S.indexOf(e))throw new RangeError("Invalid status code");return new A(null,{status:e,headers:{location:t}})};var _=i.DOMException;try{new _}catch(t){(_=function(t,e){this.message=t,this.name=e;var s=Error(t);this.stack=s.stack}).prototype=Object.create(Error.prototype),_.prototype.constructor=_}function x(t,e){return new Promise((function(s,n){var r=new T(t,e);if(r.signal&&r.signal.aborted)return n(new _("Aborted","AbortError"));var a=new XMLHttpRequest;function u(){a.abort()}a.onload=function(){var t,e,i={status:a.status,statusText:a.statusText,headers:(t=a.getAllResponseHeaders()||"",e=new g,t.replace(/\r?\n[\t ]+/g," ").split("\r").map((function(t){return 0===t.indexOf("\n")?t.substr(1,t.length):t})).forEach((function(t){var s=t.split(":"),i=s.shift().trim();if(i){var n=s.join(":").trim();e.append(i,n)}})),e)};i.url="responseURL"in a?a.responseURL:i.headers.get("X-Request-URL");var n="response"in a?a.response:a.responseText;setTimeout((function(){s(new A(n,i))}),0)},a.onerror=function(){setTimeout((function(){n(new TypeError("Network request failed"))}),0)},a.ontimeout=function(){setTimeout((function(){n(new TypeError("Network request failed"))}),0)},a.onabort=function(){setTimeout((function(){n(new _("Aborted","AbortError"))}),0)},a.open(r.method,function(t){try{return""===t&&i.location.href?i.location.href:t}catch(e){return t}}(r.url),!0),"include"===r.credentials?a.withCredentials=!0:"omit"===r.credentials&&(a.withCredentials=!1),"responseType"in a&&(o?a.responseType="blob":c&&r.headers.get("Content-Type")&&-1!==r.headers.get("Content-Type").indexOf("application/octet-stream")&&(a.responseType="arraybuffer")),!e||"object"!=typeof e.headers||e.headers instanceof g?r.headers.forEach((function(t,e){a.setRequestHeader(e,t)})):Object.getOwnPropertyNames(e.headers).forEach((function(t){a.setRequestHeader(t,f(e.headers[t]))})),r.signal&&(r.signal.addEventListener("abort",u),a.onreadystatechange=function(){4===a.readyState&&r.signal.removeEventListener("abort",u)}),a.send(void 0===r._bodyInit?null:r._bodyInit)}))}x.polyfill=!0,i.fetch||(i.fetch=x,i.Headers=g,i.Request=T,i.Response=A)}},e={};function s(i){var n=e[i];if(void 0!==n)return n.exports;var r=e[i]={exports:{}};return t[i].call(r.exports,r,r.exports,s),r.exports}s.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return s.d(e,{a:e}),e},s.d=(t,e)=>{for(var i in e)s.o(e,i)&&!s.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var i={};return(()=>{"use strict";s.d(i,{default:()=>r});var t=s(9581),e=s(727),n=s.n(e);const r=function(e){if(!e)return console.log("No AddSearch API key provided, skipping search suggestions."),[];var s=new(n())(e);return[(0,t.A)("meganav-search-input"),(0,t.A)("meganav-mobile-search-input")].filter((function(t){return t})).map((function(e){var i=e.parentNode,n=(0,t.A)("meganav-search-autocomplete-container",i),r=(0,t.A)("meganav-search-autocomplete-list",i),o=(0,t.A)("meganav-search-input-clear",i);return function(t){var e=t.input,s=t.container,i=t.listContainer,n=t.clear,r=t.client;r.setAnalyticsTag("Meganav autocomplete"),r.setThrottleTime(400);var o,a=function(){s.classList.add("hidden"),i.innerHTML=""},c=function(t){(t||"").length>0&&n?n.classList.remove("invisible"):n&&n.classList.add("invisible")},u=function(t,e){return t.replace(e.toLowerCase(),'<span class="font-light">'.concat(e,"</span>"))},h=function(t){return window.location="/search?q=".concat(t)},l=function(t){var e=i.querySelector('[data-suggestion-index="'.concat(t+1,'"]'));e&&e.focus()},f=function(t){var e=t-1,s=i.querySelector('[data-suggestion-index="'.concat(e,'"]'));s&&s.focus()},d=function(t){var n=t.target.value;"ArrowDown"!==t.key?n?r.suggestions(n,function(t){return function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(c(t),Array.isArray(n.suggestions))if(0!==n.suggestions.length){var r=n.suggestions.map((function(s,i){var n=document.createElement("li"),r=document.createElement("button");return r.type="button",r.classList.add("ui-text-menu2","font-medium","p-8","w-full","text-left","rounded","hover:text-gui-hover","focus:outline-gui-focus","hover:bg-light-grey"),r.innerHTML=u(s.value,t),r.dataset.suggestionIndex=i,r.addEventListener("click",(function(){h(s.value)})),r.addEventListener("keydown",(function(t){var n=t.key;"ArrowDown"===n?l(i):"ArrowUp"===n&&i-1<0?e.focus():"ArrowUp"===n&&i-1>=0?f(i):"Enter"!==n&&"Space"!==n||h(s.value)})),n.appendChild(r),n}));i.innerHTML="",r.forEach((function(t){return i.appendChild(t)})),s.classList.remove("hidden")}else a();else a()}}(n)):a():l(0)};return n&&(o=function(){e.value="",n.classList.add("invisible"),a()},n.addEventListener("click",o)),e.addEventListener("keyup",d),{teardown:function(){e.removeEventListener("keyup",d),n&&n.removeEventListener("click",o)},clear:function(){e.value="",a()}}}({input:e,container:n,listContainer:r,client:s,clear:o})}))}})(),i.default})()}));
@@ -161,29 +161,29 @@ var MeganavSearchSuggestions = function MeganavSearchSuggestions(_ref) {
161
161
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
162
162
  className: "ui-text-overline2 text-cool-black py-12"
163
163
  }, "Popular pages"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
164
- className: "flex justify-between items-center overflow-x-scroll md:overflow-auto"
164
+ className: "flex justify-between items-center overflow-hidden"
165
165
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("ul", {
166
- className: "flex"
166
+ className: "flex transition-transform"
167
167
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", {
168
168
  className: "py-12 pr-8 flex-shrink-0"
169
169
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
170
170
  href: absUrl("/docs/how-ably-works"),
171
- className: "ui-text-p2"
171
+ className: "ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus"
172
172
  }, "How does Ably work?")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", {
173
173
  className: "py-12 px-8 flex-shrink-0"
174
174
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
175
175
  href: absUrl("/docs/quick-start-guide"),
176
- className: "ui-text-p2"
176
+ className: "ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus"
177
177
  }, "Quickstart guide")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", {
178
178
  className: "py-12 px-8 flex-shrink-0"
179
179
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
180
180
  href: absUrl("/docs/core-features/pubsub"),
181
- className: "ui-text-p2"
181
+ className: "ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus"
182
182
  }, "Publish/Subscribe Messaging")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", {
183
183
  className: "py-12 pl-8 flex-shrink-0"
184
184
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
185
185
  href: absUrl("/platform"),
186
- className: "ui-text-p2"
186
+ className: "ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus"
187
187
  }, "Platform"))), displaySupportLink ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_FeaturedLink_component_jsx__WEBPACK_IMPORTED_MODULE_2__.default, {
188
188
  url: absUrl("/support"),
189
189
  textSize: "text-p2"
@@ -1 +1 @@
1
- !function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports.AblyUi=o():(e.AblyUi=e.AblyUi||{},e.AblyUi.Core=e.AblyUi.Core||{},e.AblyUi.Core.MeganavSearchSuggestions=o())}(this,(function(){return{}.default}));
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.AblyUi=t():(e.AblyUi=e.AblyUi||{},e.AblyUi.Core=e.AblyUi.Core||{},e.AblyUi.Core.MeganavSearchSuggestions=t())}(this,(function(){return(()=>{"use strict";var e={9581:(e,t,n)=>{n.d(t,{A:()=>r});var r=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document;return t.querySelector("[data-id=".concat(e,"]"))}}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var r={};return(()=>{n.d(r,{default:()=>s});var e=n(9581),t=function(e){return new DOMMatrix(window.getComputedStyle(e).transform).e},o=function(e,t){return e.style.transform="translateX(".concat(t,"px)")},i=function(e,t){return e>=t},u=function(e,t,n,r){return Math.abs(e-n+r)>t},a=function(e,t){var n;return(null===(n=e.changedTouches[0])||void 0===n?void 0:n.clientX)-t},c=function(e){return Math.abs(e)<5};const s=function(){var n,r=(0,e.A)("meganav-mobile-search-input"),s=(0,e.A)("meganav-mobile-search-suggestions"),d=s.querySelector("ul"),l=d.querySelectorAll("li"),v=Array.from(l).map((function(e){return e.getBoundingClientRect().width})).reduce((function(e,t){return e+t}),0),f=function(e){var t;n=null===(t=e.touches[0])||void 0===t?void 0:t.clientX},h=function(e){var r=a(e,n);c(r)||(r>0?function(e,n){var r=t(d),u=Math.round(r+e);i(u,24)||o(d,u)}(r):function(e,n){var r=d.getBoundingClientRect().width,i=t(d),a=Math.round(i+e);u(a,v,r,96)||o(d,a)}(r))},m=function(e){var r=a(e,n);c(r)||(r>0?function(e,n){var r=t(d),u=Math.round(r+e);i(u,24)&&(u=0),o(d,u)}(r):function(e,n){var r=d.getBoundingClientRect().width,i=t(d),a=Math.round(i+e);u(a,v,r,48)&&(a=-(v-r+48)),o(d,a)}(r))},p=function(){s.classList.add("max-h-96")},y=function(e){e.relatedTarget!==s.querySelectorAll("a")[0]&&s.classList.remove("max-h-96")};return r.addEventListener("focus",p),r.addEventListener("blur",y),s.addEventListener("touchstart",f),s.addEventListener("touchmove",h),s.addEventListener("touchend",m),{teardown:function(){r.removeEventListener("focus",p),r.removeEventListener("blur",y),s.removeEventListener("touchstart",f),s.removeEventListener("touchmove",h),s.removeEventListener("touchend",m)},clear:function(){s.classList.remove("max-h-96"),d.style.transform="translateX(0px)"}}}})(),r.default})()}));
@@ -324,29 +324,29 @@ var MeganavSearchSuggestions = function MeganavSearchSuggestions(_ref) {
324
324
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
325
325
  className: "ui-text-overline2 text-cool-black py-12"
326
326
  }, "Popular pages"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
327
- className: "flex justify-between items-center overflow-x-scroll md:overflow-auto"
327
+ className: "flex justify-between items-center overflow-hidden"
328
328
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("ul", {
329
- className: "flex"
329
+ className: "flex transition-transform"
330
330
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", {
331
331
  className: "py-12 pr-8 flex-shrink-0"
332
332
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
333
333
  href: absUrl("/docs/how-ably-works"),
334
- className: "ui-text-p2"
334
+ className: "ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus"
335
335
  }, "How does Ably work?")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", {
336
336
  className: "py-12 px-8 flex-shrink-0"
337
337
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
338
338
  href: absUrl("/docs/quick-start-guide"),
339
- className: "ui-text-p2"
339
+ className: "ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus"
340
340
  }, "Quickstart guide")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", {
341
341
  className: "py-12 px-8 flex-shrink-0"
342
342
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
343
343
  href: absUrl("/docs/core-features/pubsub"),
344
- className: "ui-text-p2"
344
+ className: "ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus"
345
345
  }, "Publish/Subscribe Messaging")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", {
346
346
  className: "py-12 pl-8 flex-shrink-0"
347
347
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
348
348
  href: absUrl("/platform"),
349
- className: "ui-text-p2"
349
+ className: "ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus"
350
350
  }, "Platform"))), displaySupportLink ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_FeaturedLink_component_jsx__WEBPACK_IMPORTED_MODULE_2__.default, {
351
351
  url: absUrl("/support"),
352
352
  textSize: "text-p2"
@@ -0,0 +1,3 @@
1
+ @layer base {
2
+ @import url("https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@600&display=swap");
3
+ }
package/core/styles.css CHANGED
@@ -15,9 +15,10 @@
15
15
  --color-charcoal-grey: #292831;
16
16
  --color-gui-default: #0073e6;
17
17
  --color-gui-hover: #0867c4;
18
- --color-gui-focus: #80b9f2;
18
+ --color-gui-focus: #0073e6;
19
+ --color-gui-focus-outline: #80b9f2;
19
20
  --color-gui-active: #074095;
20
- --color-gui-viewed: #4887c2;
21
+ --color-gui-visited: #4887c2;
21
22
  --color-gui-unavailable: #a8a8a8;
22
23
  --color-gui-error: #fb0c0c;
23
24
  --color-gui-success: #11cb24;
@@ -157,7 +158,7 @@
157
158
  /* In components, when looking at implementing viewport margin and spacing between elements,
158
159
  the values in the comments can be used as guide as they represent the grid the elements (should) sit on.
159
160
  alternatively, look for ui-grid-* helpers. */
160
- --bp-xs: 375px; /* gutters 8px, side-margin 24px */
161
+ --bp-xs: 428px; /* gutters 8px, side-margin 24px */
161
162
  --bp-sm: 768px; /* gutters 16px, side-margin 32px */
162
163
  --bp-md: 1040px; /* gutters 24px, side-margin 40px, meganav desktop */
163
164
  --bp-lg: 1280px; /* gutters 24px, side-margin 64px */
@@ -345,17 +346,17 @@
345
346
  }
346
347
 
347
348
  .ui-text-p1 {
348
- @apply font-sans font-light text-cool-black;
349
+ @apply font-sans font-light text-charcoal-grey;
349
350
  @apply text-p1;
350
351
  }
351
352
 
352
353
  .ui-text-p2 {
353
- @apply font-sans font-light text-cool-black;
354
+ @apply font-sans font-light text-charcoal-grey;
354
355
  @apply text-p2;
355
356
  }
356
357
 
357
358
  .ui-text-p3 {
358
- @apply font-sans font-light text-cool-black;
359
+ @apply font-sans font-light text-charcoal-grey;
359
360
  @apply text-p3;
360
361
  }
361
362
 
@@ -461,24 +462,18 @@
461
462
  @apply list-square;
462
463
  }
463
464
 
464
- /* visited needs to come before :hover et all else it overrides them */
465
- .ui-link:visited {
466
- @apply text-gui-viewed;
465
+ .ui-link {
466
+ @apply visited:text-gui-visited;
467
+ @apply hover:text-gui-hover active:text-gui-active disabled:text-gui-unavailable;
468
+ @apply focus:text-gui-focus focus:outline-gui-focus;
469
+ @apply underline;
467
470
  }
468
471
 
469
- .ui-link {
470
- @apply hover:text-active-orange active:text-red-orange;
471
- -webkit-text-decoration-color: var(--color-active-orange);
472
- text-decoration-color: var(--color-active-orange);
473
- text-underline-offset: 4px; /* px used here as behaves weird with rem's */
474
- -webkit-text-decoration-line: underline;
475
- text-decoration-line: underline;
476
- text-decoration-thickness: 0.125rem;
477
- }
478
-
479
- .ui-link:focus {
480
- @apply focus:text-white focus:bg-active-orange focus:outline-none;
481
- text-decoration: none;
472
+ .ui-link-neutral {
473
+ @apply visited:text-dark-grey;
474
+ @apply hover:text-dark-grey active:text-cool-black disabled:text-gui-unavailable;
475
+ @apply focus:text-gui-focus focus:outline-gui-focus-neutral;
476
+ @apply underline;
482
477
  }
483
478
  }
484
479
  @layer components {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ably/ui",
3
- "version": "7.10.0-dev.e6f7622",
3
+ "version": "8.0.0-dev.1715d4e",
4
4
  "description": "Home of the Ably design system library ([design.ably.com](https://design.ably.com)). It provides a showcase, development/test environment and a publishing pipeline for different distributables.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,6 +1,4 @@
1
- @layer base {
2
- @import url("https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@600&display=swap");
3
- }
1
+ @import "../fonts/source-code-pro.css";
4
2
 
5
3
  @layer components {
6
4
  .hljs {
@@ -18,6 +18,7 @@ import MeganavControlMobileDropdown from "../MeganavControlMobileDropdown/compon
18
18
  import MobilePanelOpenClick from "../MeganavControlMobilePanelOpen/component";
19
19
  import MobilePanelCloseClick from "../MeganavControlMobilePanelClose/component";
20
20
  import MeganavSearchAutocomplete from "../MeganavSearchAutocomplete/component";
21
+ import MeganavSearchSuggestions from "../MeganavSearchSuggestions/component";
21
22
 
22
23
  // Close menu when user clicks outside of viewport
23
24
  const windowOnBlur = (closeAll) => {
@@ -112,11 +113,14 @@ const documentScroll = (themeName) => {
112
113
  };
113
114
  };
114
115
 
115
- export default function Meganav({ themeName } = { themeName: null }) {
116
+ export default function Meganav(
117
+ { themeName, addSearchApiKey } = { themeName: null }
118
+ ) {
116
119
  const controls = MeganavControl();
117
120
  const panelOpenControls = MobilePanelOpenClick();
118
121
  const panelCloseControls = MobilePanelCloseClick();
119
- const search = MeganavSearchAutocomplete();
122
+ const search = MeganavSearchAutocomplete(addSearchApiKey);
123
+ const searchSuggestions = MeganavSearchSuggestions();
120
124
 
121
125
  const mobileDropdownControl = MeganavControlMobileDropdown({
122
126
  clearPanels: () =>
@@ -126,6 +130,7 @@ export default function Meganav({ themeName } = { themeName: null }) {
126
130
  const closeAll = () =>
127
131
  [
128
132
  mobileDropdownControl,
133
+ searchSuggestions,
129
134
  ...panelOpenControls,
130
135
  ...panelCloseControls,
131
136
  ...controls,
@@ -137,6 +142,7 @@ export default function Meganav({ themeName } = { themeName: null }) {
137
142
  documentClick(closeAll),
138
143
  windowOnBlur(closeAll),
139
144
  mobileDropdownControl,
145
+ searchSuggestions,
140
146
  ...controls,
141
147
  ...panelOpenControls,
142
148
  ...panelCloseControls,
@@ -64,7 +64,7 @@ const panels = {
64
64
  MeganavContentDevelopers: MeganavContentDevelopers,
65
65
  };
66
66
 
67
- export default function Meganav({ paths, themeName = "white", notice, loginLink = "/login", urlBase }) {
67
+ export default function Meganav({ paths, themeName = "white", notice, loginLink = "/login", urlBase, addSearchApiKey }) {
68
68
  const [sessionState, setSessionState] = useState(null);
69
69
 
70
70
  useEffect(() => {
@@ -74,7 +74,7 @@ export default function Meganav({ paths, themeName = "white", notice, loginLink
74
74
  }, []);
75
75
 
76
76
  useEffect(() => {
77
- const teardown = MeganavScripts({ themeName });
77
+ const teardown = MeganavScripts({ themeName, addSearchApiKey });
78
78
  return () => teardown();
79
79
  }, [sessionState]);
80
80
 
@@ -119,4 +119,5 @@ Meganav.propTypes = {
119
119
  }),
120
120
  loginLink: T.string,
121
121
  urlBase: T.string,
122
+ addSearchApiKey: T.string,
122
123
  };
@@ -7,8 +7,6 @@ const MeganavControlMobileDropdown = ({ clearPanels }) => {
7
7
  const dropdown = queryId("meganav-mobile-dropdown");
8
8
  const menuIcon = queryId("meganav-control-mobile-dropdown-menu");
9
9
  const closeIcon = queryId("meganav-control-mobile-dropdown-close");
10
- const meganavSearchSuggestionsToggle = queryId("meganav-mobile-search-input");
11
- const meganavSearchSuggestions = queryId("meganav-mobile-search-suggestions");
12
10
 
13
11
  const clickHandler = () => {
14
12
  const ariaExpanded = control.getAttribute("aria-expanded");
@@ -28,40 +26,12 @@ const MeganavControlMobileDropdown = ({ clearPanels }) => {
28
26
  closeIcon.classList.toggle("hidden");
29
27
  };
30
28
 
31
- const focusSuggestionsHandler = () => {
32
- meganavSearchSuggestions.classList.add("max-h-96");
33
- };
34
- const blurSuggestionsHandler = (event) => {
35
- if (
36
- event.relatedTarget === meganavSearchSuggestions.querySelectorAll("a")[0]
37
- ) {
38
- return;
39
- }
40
- meganavSearchSuggestions.classList.remove("max-h-96");
41
- };
42
-
43
29
  control.addEventListener("click", clickHandler);
44
- meganavSearchSuggestionsToggle.addEventListener(
45
- "focus",
46
- focusSuggestionsHandler
47
- );
48
- meganavSearchSuggestionsToggle.addEventListener(
49
- "blur",
50
- blurSuggestionsHandler
51
- );
52
30
 
53
31
  return {
54
32
  teardown: () => {
55
33
  control.removeEventListener("click", clickHandler);
56
34
  scrollLock.enablePageScroll();
57
- meganavSearchSuggestionsToggle.removeEventListener(
58
- "focus",
59
- focusSuggestionsHandler
60
- );
61
- meganavSearchSuggestionsToggle.removeEventListener(
62
- "blur",
63
- blurSuggestionsHandler
64
- );
65
35
  },
66
36
  clear: () => {
67
37
  dropdown.classList.replace("visible", "invisible");
@@ -69,7 +39,6 @@ const MeganavControlMobileDropdown = ({ clearPanels }) => {
69
39
  menuIcon.classList.remove("hidden");
70
40
  closeIcon.classList.add("hidden");
71
41
  scrollLock.enablePageScroll();
72
- meganavSearchSuggestions.classList.remove("max-h-96");
73
42
  },
74
43
  };
75
44
  };
@@ -43,10 +43,10 @@
43
43
 
44
44
  <li>
45
45
  <%= render(AblyUi::Core::MeganavSearch.new(url_base: url_base)) %>
46
- <li>
46
+ </li>
47
47
 
48
48
  <% if account? %>
49
- <li class="ml-16">
49
+ <li>
50
50
  <%= link_to "Dashboard", @session_data[:account][:links][:dashboard][:href], class: "ui-btn-secondary p-btn-small" %>
51
51
  </li>
52
52
  <% end %>
@@ -2,12 +2,12 @@
2
2
  type="button"
3
3
  data-id="meganav-control"
4
4
  data-control="search"
5
- class="h-64 w-24 px-24 pr-48 py-20"
5
+ class="h-64 w-24 px-24 pr-48 py-20 group focus:outline-none"
6
6
  aria-expanded="false"
7
7
  aria-controls="panel-search"
8
8
  aria-label="Show Search Panel"
9
9
  >
10
- <%= render(AblyUi::Core::Icon.new(name: "icon-gui-search", size: "1.5rem", color: "text-cool-black", additional_css: "hover:text-gui-hover")) %>
10
+ <%= render(AblyUi::Core::Icon.new(name: "icon-gui-search", size: "1.5rem", color: "text-cool-black", additional_css: "group-hover:text-gui-hover group-focus:text-gui-focus")) %>
11
11
  </button>
12
12
 
13
13
  <div class="ui-meganav-panel invisible" id="panel-search" data-id="meganav-panel">
@@ -11,12 +11,12 @@ const MeganavSearch = ({ absUrl }) => {
11
11
  type="button"
12
12
  data-id="meganav-control"
13
13
  data-control="search"
14
- className="h-64 w-24 px-24 pr-48 py-20"
14
+ className="h-64 w-24 px-24 pr-48 py-20 group focus:outline-none"
15
15
  aria-expanded="false"
16
16
  aria-controls="panel-search"
17
17
  aria-label={`Show Search Panel`}
18
18
  >
19
- <Icon name="icon-gui-search" color="text-cool-black" size="1.5rem" additionalCSS="hover:text-gui-hover" />
19
+ <Icon name="icon-gui-search" color="text-cool-black" size="1.5rem" additionalCSS="group-hover:text-gui-hover group-focus:text-gui-focus" />
20
20
  </button>
21
21
 
22
22
  <div className="ui-meganav-panel invisible" id="panel-search" data-id="meganav-panel">
@@ -47,9 +47,16 @@ const init = ({ input, container, listContainer, clear, client }) => {
47
47
 
48
48
  const renderResults =
49
49
  (query) =>
50
- (results = { suggestions: [] }) => {
50
+ (results = {}) => {
51
51
  toggleClearBtn(query);
52
52
 
53
+ // Prevent invalid access error when key is invalid
54
+ if (!Array.isArray(results.suggestions)) {
55
+ clearResults();
56
+ return;
57
+ }
58
+
59
+ // Prevent key error from invalid key
53
60
  if (results.suggestions.length === 0) {
54
61
  clearResults();
55
62
  return;
@@ -84,11 +91,11 @@ const init = ({ input, container, listContainer, clear, client }) => {
84
91
  const key = e.key;
85
92
 
86
93
  if (key === "ArrowDown") {
87
- focusNext();
94
+ focusNext(index);
88
95
  } else if (key === "ArrowUp" && index - 1 < 0) {
89
96
  input.focus();
90
97
  } else if (key === "ArrowUp" && index - 1 >= 0) {
91
- focusPrevious();
98
+ focusPrevious(index);
92
99
  } else if (key === "Enter" || key === "Space") {
93
100
  navigateToUrl(suggestion.value);
94
101
  }
@@ -143,12 +150,12 @@ const init = ({ input, container, listContainer, clear, client }) => {
143
150
  };
144
151
  };
145
152
 
146
- export default () => {
147
- const apiKey = document.body.dataset.addSearchApiKey;
153
+ export default (apiKey) => {
148
154
  if (!apiKey) {
149
155
  console.log(`No AddSearch API key provided, skipping search suggestions.`);
150
156
  return [];
151
157
  }
158
+
152
159
  const client = new AddSearchClient(apiKey);
153
160
 
154
161
  return [
@@ -3,16 +3,16 @@
3
3
  <div class="flex justify-between items-center overflow-x-scroll md:overflow-auto">
4
4
  <ul class="flex">
5
5
  <li class="py-12 pr-8 flex-shrink-0">
6
- <%= link_to 'How does Ably work?', abs_url("/docs/how-ably-works"), class: "ui-text-p2" %>
6
+ <%= link_to 'How does Ably work?', abs_url("/docs/how-ably-works"), class: "ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus" %>
7
7
  </li>
8
8
  <li class="py-12 px-8 flex-shrink-0">
9
- <%= link_to 'Quickstart guide', abs_url("/docs/quick-start-guide"), class: "ui-text-p2" %>
9
+ <%= link_to 'Quickstart guide', abs_url("/docs/quick-start-guide"), class: "ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus" %>
10
10
  </li>
11
11
  <li class="py-12 px-8 flex-shrink-0">
12
- <%= link_to 'Publish/Subscribe Messaging', abs_url("/docs/core-features/pubsub"), class: "ui-text-p2" %>
12
+ <%= link_to 'Publish/Subscribe Messaging', abs_url("/docs/core-features/pubsub"), class: "ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus" %>
13
13
  </li>
14
14
  <li class="py-12 pl-8 flex-shrink-0">
15
- <%= link_to 'Platform', abs_url("/docs/how-ably-works"), class: "ui-text-p2" %>
15
+ <%= link_to 'Platform', abs_url("/docs/how-ably-works"), class: "ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus" %>
16
16
  </li>
17
17
  </ul>
18
18