PluginProbe
ElasticPress / 4.7.2
ElasticPress v4.7.2
5.3.5 5.3.4 3.6.5 3.6.6 4.0.0 4.0.1 4.1.0 4.2.0 4.2.1 4.2.2 4.3.0 4.3.1 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.6.0 4.6.1 4.7.0 4.7.1 4.7.2 5.0.0 5.0.1 5.0.2 All 108 releases
elasticpress / dist / js / autosuggest-script.js

autosuggest-script.js in ElasticPress 4.7.2, at dist/js/autosuggest-script.js

1 lines 8.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 !function(){"use strict";var e=window.wp.hooks;window.addEventListener("load",(()=>{"undefined"!==typeof window.epDataFilter&&(0,e.addFilter)("ep.Autosuggest.data","ep/epDatafilter",window.epDatafilter),"undefined"!==typeof window.epAutosuggestItemHTMLFilter&&(0,e.addFilter)("ep.Autosuggest.itemHTML","ep/epAutosuggestItemHTMLFilter",window.epAutosuggestItemHTMLFilter),"undefined"!==typeof window.epAutosuggestListItemsHTMLFilter&&(0,e.addFilter)("ep.Autosuggest.listHTML","ep/epAutosuggestListItemsHTMLFilter",window.epAutosuggestListItemsHTMLFilter),"undefined"!==typeof window.epAutosuggestQueryFilter&&(0,e.addFilter)("ep.Autosuggest.query","ep/epAutosuggestQueryFilter",window.epAutosuggestQueryFilter),"undefined"!==typeof window.epAutosuggestElementFilter&&(0,e.addFilter)("ep.Autosuggest.element","ep/epAutosuggestElementFilter",window.epAutosuggestElementFilter)}));var t={randomUUID:"undefined"!==typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};let s;const o=new Uint8Array(16);function n(){if(!s&&(s="undefined"!==typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!s))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return s(o)}const r=[];for(let e=0;e<256;++e)r.push((e+256).toString(16).slice(1));function i(e,t=0){return(r[e[t+0]]+r[e[t+1]]+r[e[t+2]]+r[e[t+3]]+"-"+r[e[t+4]]+r[e[t+5]]+"-"+r[e[t+6]]+r[e[t+7]]+"-"+r[e[t+8]]+r[e[t+9]]+"-"+r[e[t+10]]+r[e[t+11]]+r[e[t+12]]+r[e[t+13]]+r[e[t+14]]+r[e[t+15]]).toLowerCase()}var a=function(e,s,o){if(t.randomUUID&&!s&&!e)return t.randomUUID();const r=(e=e||{}).random||(e.rng||n)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,s){o=o||0;for(let e=0;e<16;++e)s[o+e]=r[e];return s}return i(r)};const u=(e,t)=>{let s=null;return function(...o){const n=this;window.clearTimeout(s),s=window.setTimeout((()=>{e.apply(n,o)}),t)}},c=(e,t)=>{for(;(e=e.parentElement)&&!e.classList.contains(t););return e},{epas:l}=window;function d(e,t){t.setAttribute("aria-activedescendant",e)}function p(e,t){!function(e){const t=new CustomEvent("ep-autosuggest-click",{detail:e});if(window.dispatchEvent(t),e.searchTerm&&1===parseInt(l.triggerAnalytics,10)&&"function"===typeof gtag){const t=`click - ${e.searchTerm}`;gtag("event",t,{event_category:"EP :: Autosuggest",event_label:e.url,transport_type:"beacon"})}}({searchTerm:e,url:t}),window.location.href=t}function g(t,s){if("navigate"===l.action){return(0,e.applyFilters)("ep.Autosuggest.navigateCallback",p)(t.value,s.dataset.url)}return function(e,t){e.value=t}(t,s.innerText),function(e){e.closest("form").submit()}(t)}function f(e,t,{query:s}){const o=(n=t,r=e,s.replace(new RegExp((e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"))(n),"g"),r));var n,r;return o}async function h(t,s){const o={body:t,method:"POST",mode:"cors",headers:{"Content-Type":"application/json; charset=utf-8"}};l?.http_headers&&"object"===typeof l.http_headers&&Object.keys(l.http_headers).forEach((e=>{o.headers[e]=l.http_headers[e]})),l.addSearchTermHeader&&(o.headers["EP-Search-Term"]=encodeURI(s));const n=(t=>{const s=a().replaceAll("-","");return(0,e.applyFilters)("ep.requestId",t+s)})(l?.requestIdBase||"");n&&(o.headers["X-ElasticPress-Request-ID"]=n);try{const t=await fetch(l.endpointUrl,(0,e.applyFilters)("ep.Autosuggest.fetchOptions",o));if(!t.ok)throw Error(t.statusText);const n=await t.json();return(0,e.applyFilters)("ep.Autosuggest.data",n,s)}catch(e){return console.error(e),e}}function m(t,s){let o="";const{value:n}=s,r=c(s,"ep-autosuggest-container").querySelector(".ep-autosuggest"),i=r.querySelector(".autosuggest-list");for(;i.firstChild;)i.removeChild(i.firstChild);t.length>0?r.style="display: block;":r.style="display: none;";const a=t.length;for(let s=0;a>s;++s){const r=t[s],i=r._source.post_title,a=r._source.permalink,u=i.replace(/\\([\s\S])|(")/g,"&quot;"),c=n.trim().split(" ");let d=u;if(l.highlightingEnabled){const e=new RegExp(`\\b(${c.join("|")})`,"gi");d=d.replace(e,(e=>`<${l.highlightingTag} class="${l.highlightingClass} ep-autosuggest-highlight">${e}</${l.highlightingTag}>`))}let p=`<li class="autosuggest-item" role="option" aria-selected="false" id="autosuggest-option-${s}">\n\t\t\t\t<a href="${a}" class="autosuggest-link" data-search="${u}" data-url="${a}" tabindex="-1">\n\t\t\t\t\t${d}\n\t\t\t\t</a>\n\t\t\t</li>`;p=(0,e.applyFilters)("ep.Autosuggest.itemHTML",p,r,s,n),o+=p}return o=(0,e.applyFilters)("ep.Autosuggest.listHTML",o,t,s),i.innerHTML=o,i.addEventListener("click",(e=>{e.preventDefault();const t=e.target.closest(".autosuggest-link");i.contains(t)&&g(s,t)})),!0}function y(){const e=document.querySelectorAll(".autosuggest-list"),t=document.querySelectorAll(".ep-autosuggest");return e.forEach((e=>{for(;e.firstChild;)e.removeChild(e.firstChild)})),t.forEach((e=>{e.style="display: none;"})),!0}function w(e,t){const s=t.closest("form");e?s.classList.add("is-loading"):s.classList.remove("is-loading")}l.endpointUrl&&""!==l.endpointUrl&&(!function(){const t=[l.defaultSelectors,l.selector].filter(Boolean).join(",");if(!t)return;let s,o;const n=[38,40,13],r=e=>{if(!n.includes(e.keyCode))return;const t=e.target,s=c(t,"ep-autosuggest-container").querySelector(".autosuggest-list").children,r=()=>Array.from(s).findIndex((e=>e.classList.contains("selected"))),i=()=>{Array.from(s).forEach((e=>{e.classList.remove("selected"),e.setAttribute("aria-selected","false")}))},a=()=>{if(o>=0){const e=s[o];e.classList.add("selected"),e.setAttribute("aria-selected","true"),d(e.id,t)}};switch(e.keyCode){case 38:o=o-1>=0?o-1:0,i();break;case 40:if("undefined"===typeof o)o=0;else{const e=r();s[e+1]&&(o=e+1,i())}break;case 13:s[o]?.classList.contains("selected")&&g(t,s[o].querySelector(".autosuggest-link"))}s[o]&&s[o].classList.contains("autosuggest-item")?a():i(),38===e.keyCode&&e.preventDefault()};function i(e){const t=new FormData(e);return t.has("post_type")?t.getAll("post_type").slice(-1):t.has("post_type[]")?t.getAll("post_type[]"):[]}const a=u((async t=>{const s=function(){if("undefined"===typeof window.epas){const e="No epas object defined";return console.warn(e),{error:e}}return window.epas}();if(s.error)return;const o=t.value,n="ep_autosuggest_placeholder",r=i(t.form);if(o.length>=2){w(!0,t);let i=f(o,n,s);i=JSON.parse(i),r.length>0&&"undefined"!==typeof i.post_filter.bool.must&&i.post_filter.bool.must.push({terms:{"post_type.raw":r}}),i=(0,e.applyFilters)("ep.Autosuggest.query",i,o,t),i=JSON.stringify(i);const a=await h(i,o);if(a&&a._shards&&a._shards.successful>0){const e=function(e,t){const s={},o="ep_custom_result",n=t.toLowerCase(),r=e.filter((e=>{let t=!0;return void 0!==e._source.terms&&void 0!==e._source.terms[o]&&e._source.terms[o].forEach((o=>{o.name.toLowerCase()===n&&(s[o.term_order]=e,t=!1)})),t})),i={};Object.keys(s).sort().forEach((e=>{i[e]=s[e]})),Object.keys(i).length>0&&Object.keys(i).forEach((e=>{const t=i[e];r.splice(e-1,0,t)}));return r}(a.hits.hits,o);0===e.length?y():m(e,t)}else y();w(!1,t)}else 0===o.length&&y()}),200),p=e=>{e.preventDefault();const{target:t,key:s,keyCode:o}=e;if("Escape"===s||"Esc"===s||27===o)return y(),function(e,t){t.setAttribute("aria-expanded",e)}(!1,t),void d("",t);if(n.includes(o)&&""!==t.value)return void r(e);const i=e.target;a(i)},A=e=>{const t=document.createElement("div");t.classList.add("ep-autosuggest-container"),e.insertAdjacentElement("afterend",t),t.appendChild(e)},v=t=>{if(!s){s=document.createElement("div"),s.classList.add("ep-autosuggest");const e=document.createElement("ul");e.classList.add("autosuggest-list"),e.setAttribute("role","listbox"),s.appendChild(e)}let o=s.cloneNode(!0);o=(0,e.applyFilters)("ep.Autosuggest.element",o,t),t.insertAdjacentElement("afterend",o)},E=e=>{if(["facet-search","ep-search-input"].some((t=>e.classList.contains(t))))return;e.setAttribute("autocomplete","off"),e.classList.contains("wp-block-search__input")?(e.form.classList.add("ep-autosuggest-container"),v(e.parentElement)):(A(e),v(e));const t=new CustomEvent("elasticpress.input.moved");e.dispatchEvent(t),e.addEventListener("keyup",p),e.addEventListener("blur",(function(){window.setTimeout(y,200)}))},L=e=>{const s=e.querySelectorAll(t);s&&Array.from(s).forEach(E)},b=()=>{const e=document.body,s={subtree:!0,childList:!0};new MutationObserver(((o,n)=>{o.forEach((o=>{Array.from(o.addedNodes).forEach((o=>{o.nodeType===Node.ELEMENT_NODE&&(n.disconnect(),"INPUT"===o.tagName?o.matches(t)&&E(o):L(o),n.observe(e,s))}))}))})).observe(e,s)};L(document.body),_=b,"undefined"!==typeof document&&("complete"!==document.readyState&&"interactive"!==document.readyState?document.addEventListener("DOMContentLoaded",_):_());var _}(),window.epasAPI={hideAutosuggestBox:y,updateAutosuggestBox:m,esSearch:h,buildSearchQuery:f})}();