PluginProbe
ElasticPress / 4.4.1
ElasticPress v4.4.1
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.4.1, at dist/js/autosuggest-script.js

1 lines 7.4 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)}));const t=(e,t)=>{let s=null;return function(...o){const n=this;window.clearTimeout(s),s=window.setTimeout((()=>{e.apply(n,o)}),t)}},s=(e,t)=>{for(;(e=e.parentElement)&&!e.classList.contains(t););return e},{epas:o}=window;function n(e,t){t.setAttribute("aria-activedescendant",e)}function r(e,t){!function(e){const t=new CustomEvent("ep-autosuggest-click",{detail:e});if(window.dispatchEvent(t),e.searchTerm&&1===parseInt(o.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 i(e,t){return"navigate"===o.action?r(e.value,t.dataset.url):(function(e,t){e.value=t}(e,t.innerText),function(e){e.closest("form").submit()}(e))}function a(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 u(t,s){const n={body:t,method:"POST",mode:"cors",headers:{"Content-Type":"application/json; charset=utf-8"}};o?.http_headers&&"object"===typeof o.http_headers&&Object.keys(o.http_headers).forEach((e=>{n.headers[e]=o.http_headers[e]})),o.addSearchTermHeader&&(n.headers["EP-Search-Term"]=encodeURI(s));try{const t=await fetch(o.endpointUrl,n);if(!t.ok)throw Error(t.statusText);const r=await t.json();return(0,e.applyFilters)("ep.Autosuggest.data",r,s)}catch(e){return console.error(e),e}}function l(t,n){let r="";const{value:a}=n,u=s(n,"ep-autosuggest-container").querySelector(".ep-autosuggest"),l=u.querySelector(".autosuggest-list");for(;l.firstChild;)l.removeChild(l.firstChild);t.length>0?u.style="display: block;":u.style="display: none;";const c=t.length;for(let s=0;c>s;++s){const n=t[s],i=n._source.post_title,u=n._source.permalink,l=i.replace(/\\([\s\S])|(")/g,"&quot;"),c=a.trim().split(" ");let d=l;if(o.highlightingEnabled){const e=new RegExp(`\\b(${c.join("|")})`,"gi");d=d.replace(e,(e=>`<${o.highlightingTag} class="${o.highlightingClass} ep-autosuggest-highlight">${e}</${o.highlightingTag}>`))}let g=`<li class="autosuggest-item" role="option" aria-selected="false" id="autosuggest-option-${s}">\n\t\t\t\t<a href="${u}" class="autosuggest-link" data-search="${l}" data-url="${u}" tabindex="-1">\n\t\t\t\t\t${d}\n\t\t\t\t</a>\n\t\t\t</li>`;g=(0,e.applyFilters)("ep.Autosuggest.itemHTML",g,n,s,a),r+=g}return r=(0,e.applyFilters)("ep.Autosuggest.listHTML",r,t,n),l.innerHTML=r,l.addEventListener("click",(e=>{e.preventDefault();const t=e.target.closest(".autosuggest-link");l.contains(t)&&i(n,t)})),!0}function c(){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 d(e,t){const s=t.closest("form");e?s.classList.add("is-loading"):s.classList.remove("is-loading")}o.endpointUrl&&""!==o.endpointUrl&&(!function(){const r=[o.defaultSelectors,o.selector].filter(Boolean).join(",");if(!r)return;let g,p;const f=[38,40,13],h=e=>{if(!f.includes(e.keyCode))return;const t=e.target,o=s(t,"ep-autosuggest-container").querySelector(".autosuggest-list").children,r=()=>Array.from(o).findIndex((e=>e.classList.contains("selected"))),a=()=>{Array.from(o).forEach((e=>{e.classList.remove("selected"),e.setAttribute("aria-selected","false")}))},u=()=>{if(p>=0){const e=o[p];e.classList.add("selected"),e.setAttribute("aria-selected","true"),n(e.id,t)}};switch(e.keyCode){case 38:p=p-1>=0?p-1:0,a();break;case 40:if("undefined"===typeof p)p=0;else{const e=r();o[e+1]&&(p=e+1,a())}break;case 13:o[p]?.classList.contains("selected")&&i(t,o[p].querySelector(".autosuggest-link"))}o[p]&&o[p].classList.contains("autosuggest-item")?u():a(),38===e.keyCode&&e.preventDefault()};function m(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 y=t((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=m(t.form);if(o.length>=2){d(!0,t);let i=a(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 g=await u(i,o);if(g&&g._shards&&g._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}(g.hits.hits,o);0===e.length?c():l(e,t)}else c();d(!1,t)}else 0===o.length&&c()}),200),w=e=>{e.preventDefault();const{target:t,key:s,keyCode:o}=e;if("Escape"===s||"Esc"===s||27===o)return c(),function(e,t){t.setAttribute("aria-expanded",e)}(!1,t),void n("",t);if(f.includes(o)&&""!==t.value)return void h(e);const r=e.target;y(r)},A=e=>{const t=document.createElement("div");t.classList.add("ep-autosuggest-container"),e.insertAdjacentElement("afterend",t),t.appendChild(e)},E=t=>{if(!g){g=document.createElement("div"),g.classList.add("ep-autosuggest");const e=document.createElement("ul");e.classList.add("autosuggest-list"),e.setAttribute("role","listbox"),g.appendChild(e)}let s=g.cloneNode(!0);s=(0,e.applyFilters)("ep.Autosuggest.element",s,t),t.insertAdjacentElement("afterend",s)},v=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"),E(e.parentElement)):(A(e),E(e));const t=new CustomEvent("elasticpress.input.moved");e.dispatchEvent(t),e.addEventListener("keyup",w),e.addEventListener("blur",(function(){window.setTimeout(c,200)}))},L=e=>{const t=e.querySelectorAll(r);t&&Array.from(t).forEach(v)},b=()=>{const e=document.body,t={subtree:!0,childList:!0};new MutationObserver(((s,o)=>{s.forEach((s=>{Array.from(s.addedNodes).forEach((s=>{s.nodeType===Node.ELEMENT_NODE&&(o.disconnect(),"INPUT"===s.tagName?s.matches(r)&&v(s):L(s),o.observe(e,t))}))}))})).observe(e,t)};L(document.body),_=b,"undefined"!==typeof document&&("complete"!==document.readyState&&"interactive"!==document.readyState?document.addEventListener("DOMContentLoaded",_):_());var _}(),window.epasAPI={hideAutosuggestBox:c,updateAutosuggestBox:l,esSearch:u,buildSearchQuery:a})}();