Files
landing_page/qdrant-landing/themes/qdrant/static/js/qdr-search.min.js
T
trean 0fabcbc5cc page-search update (#91)
* page-search update

* upd of page-search v1.0.5 -> v1.0.6
2022-11-02 19:38:17 +01:00

1 line
12 KiB
JavaScript

!function(){"use strict";function e(s,o){(null==o||o>s.length)&&(o=s.length);for(var l=0,p=new Array(o);l<o;l++)p[l]=s[l];return p}function t(s,o){for(var l=0;l<o.length;l++){var p=o[l];p.enumerable=p.enumerable||!1,p.configurable=!0,"value"in p&&(p.writable=!0),Object.defineProperty(s,p.key,p)}}function n(s,o,l){!function(s,o){if(o.has(s))throw new TypeError("Cannot initialize the same private elements twice on an object")}(s,o),o.set(s,l)}function a(s,o){return function(s,o){return o.get?o.get.call(s):o.value}(s,i(s,o,"get"))}function r(s,o,l){return function(s,o,l){if(o.set)o.set.call(s,l);else{if(!o.writable)throw new TypeError("attempted to set read only private field");o.value=l}}(s,i(s,o,"set"),l),l}function i(s,o,l){if(!o.has(s))throw new TypeError("attempted to "+l+" private field on non-instance");return o.get(s)}var s=new WeakMap,o=new WeakMap,l=function(){function i(l){var p=this,f=l.modalOuterSelector,y=l.modalDialogSelector,m=l.closeBtnSelector,g=l.resultSelector;!function(s,o){if(!(s instanceof o))throw new TypeError("Cannot call a class as a function")}(this,i),n(this,s,{writable:!0,value:void 0}),n(this,o,{writable:!0,value:void 0}),this.modal=document.querySelector(f),this.dialog=document.querySelector(y),this.openBtn=document.querySelector('[data-target="#searchModal"]'),this.closeBtn=this.modal.querySelector(m),this.result=this.modal.querySelector(g),r(this,s,new Event("qdrModalShow")),r(this,o,new Event("qdrModalHide"));var q=this.show.bind(this),k=this.hide.bind(this);this.openBtn.addEventListener("click",q),this.modal.addEventListener("click",(function(s){var o=p.dialog.contains(s.target)||s.target===p.dialog,l=p.closeBtn.contains(s.target)||s.target===p.closeBtn;o&&!l||k(s)})),document.addEventListener("keydown",(function(s){"Escape"===s.key&&k(s)}))}var l,p;return l=i,(p=[{key:"show",value:function(){this.modal.style.display="block",this.modal.classList.add("active"),document.dispatchEvent(a(this,s))}},{key:"hide",value:function(){var s=this.modal,l=a(this,o);s.classList.remove("active");var p=setTimeout((function(){s.style.display="none",document.dispatchEvent(l),clearTimeout(p)}),300)}},{key:"updateResultChildren",value:function(s,o){var l,p;(l=this.result).replaceChildren.apply(l,function(s){if(Array.isArray(s))return e(s)}(p=s)||function(s){if("undefined"!=typeof Symbol&&null!=s[Symbol.iterator]||null!=s["@@iterator"])return Array.from(s)}(p)||function(s,o){if(s){if("string"==typeof s)return e(s,o);var l=Object.prototype.toString.call(s).slice(8,-1);return"Object"===l&&s.constructor&&(l=s.constructor.name),"Map"===l||"Set"===l?Array.from(s):"Arguments"===l||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(l)?e(s,o):void 0}}(p)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o&&"function"==typeof o&&o()}}])&&t(l.prototype,p),Object.defineProperty(l,"prototype",{writable:!1}),i}();function c(s,o){for(var l=0;l<o.length;l++){var p=o[l];p.enumerable=p.enumerable||!1,p.configurable=!0,"value"in p&&(p.writable=!0),Object.defineProperty(s,p.key,p)}}function u(s,o,l){!function(s,o){if(o.has(s))throw new TypeError("Cannot initialize the same private elements twice on an object")}(s,o),o.set(s,l)}function d(s,o){return function(s,o){return o.get?o.get.call(s):o.value}(s,v(s,o,"get"))}function h(s,o,l){return function(s,o,l){if(o.set)o.set.call(s,l);else{if(!o.writable)throw new TypeError("attempted to set read only private field");o.value=l}}(s,v(s,o,"set"),l),l}function v(s,o,l){if(!o.has(s))throw new TypeError("attempted to "+l+" private field on non-instance");return o.get(s)}var p=new WeakMap,f=new WeakMap,y=new WeakMap,m=function(){function e(s){var o=this,l=s.apiUrl,m=s.section;!function(s,o){if(!(s instanceof o))throw new TypeError("Cannot call a class as a function")}(this,e),u(this,p,{writable:!0,value:void 0}),u(this,f,{writable:!0,value:void 0}),u(this,y,{writable:!0,value:void 0}),this._input=document.querySelector("#searchInput"),this.apiUrl=l,this.section=m,this._data=[],this._error=void 0,h(this,p,new Event("searchDataIsReady")),h(this,f,0),h(this,y,0),this._input.addEventListener("input",(function(s){0===s.target.value.trim().length?(o._data=[],document.dispatchEvent(d(o,p))):o.fetchData(s.target.value)}))}var s,o;return s=e,(o=[{key:"input",get:function(){return this._input},set:function(s){this._input=s}},{key:"data",get:function(){return this._data},set:function(s){this._data=s}},{key:"error",get:function(){return this._error},set:function(s){this._error=s}},{key:"fetchData",value:function(s){var o=this;if(0!==this.input.value.trim().length){var l=new URL(this.apiUrl,document.location);l.searchParams.append("q",this.input.value),this.section&&l.searchParams.append("section",this.section);var m=d(this,y)+1;h(this,y,d(this,y)+1);var g=setTimeout((function(){clearTimeout(g),d(o,y)<=m&&fetch(l).then((function(s){return s.ok?s.json():{result:[],error:s.statusText}})).then((function(s){m>d(o,f)&&(h(o,f,m),o.data=s.result,o.error=null==s?void 0:s.error,document.dispatchEvent(d(o,p)))})).catch((function(s){o.error=s.message}))}),100)}}}])&&c(s.prototype,o),Object.defineProperty(s,"prototype",{writable:!1}),e}();function b(s){return function(s){if(Array.isArray(s))return w(s)}(s)||function(s){if("undefined"!=typeof Symbol&&null!=s[Symbol.iterator]||null!=s["@@iterator"])return Array.from(s)}(s)||function(s,o){if(s){if("string"==typeof s)return w(s,o);var l=Object.prototype.toString.call(s).slice(8,-1);return"Object"===l&&s.constructor&&(l=s.constructor.name),"Map"===l||"Set"===l?Array.from(s):"Arguments"===l||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(l)?w(s,o):void 0}}(s)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function w(s,o){(null==o||o>s.length)&&(o=s.length);for(var l=0,p=new Array(o);l<o;l++)p[l]=s[l];return p}function _(s,o){for(var l=0;l<o.length;l++){var p=o[l];p.enumerable=p.enumerable||!1,p.configurable=!0,"value"in p&&(p.writable=!0),Object.defineProperty(s,p.key,p)}}var g=function(){function e(s){var o=this,p=s.searchApiUrl,f=s.section;!function(s,o){if(!(s instanceof o))throw new TypeError("Cannot call a class as a function")}(this,e),this.apiUrl=p,this.section=f,this.modal=new l({modalOuterSelector:"#searchModal",modalDialogSelector:".qdr-search__dialog",closeBtnSelector:".qdr-search__close",resultSelector:".qdr-search__results"}),this.searchInput=new m({apiUrl:this.apiUrl,section:this.section}),this.activeResultIdx=null,document.addEventListener("qdrModalShow",this.setFocusToInput.bind(this)),document.addEventListener("searchDataIsReady",this.updateResult.bind(this));var y=this.navigateTroughResults.bind(this);document.addEventListener("keydown",(function(s){"ArrowUp"!==s.key&&"ArrowDown"!==s.key||(s.preventDefault(),y(s)),"Enter"===s.key&&(s.preventDefault(),function(s){if(s){var o=new MouseEvent("click",{bubbles:!0,cancelable:!0});s.dispatchEvent(o)}}(o.modal.result.querySelector('.qdr-search-result[data-key="'.concat(o.activeResultIdx,'"]'))))}))}var s,o;return s=e,(o=[{key:"activeResultIdx",get:function(){return this._activeResultIdx},set:function(s){this._activeResultIdx=s}},{key:"generateSearchResult",value:function(s){var o=document.createElement("a");o.classList.add("qdr-search-result"),o.href=function(s){var o,l,p=new URL(null==s||null===(o=s.payload)||void 0===o?void 0:o.url,window.location.origin);return p.searchParams.append("selector",window.btoa(null==s||null===(l=s.payload)||void 0===l?void 0:l.location)),p.toString()}(s);var l="p"===s.payload.tag?"qdr-search-result__icon":"qdr-search-result__paragraph-icon";return o.innerHTML='<span class="'.concat(l,'"></span>\n <div class="qdr-search-result__body"><h5 class="mt-0">').concat((null==s?void 0:s.highlight)||s.payload.text,"</h5>\n <p>").concat(s.payload.titles.join(" > "),"</p></div>"),o}},{key:"updateResult",value:function(){var s=this,o=[];this.activeResultIdx=null,this.searchInput.data.forEach((function(l,p){var f=s.generateSearchResult(l);f.dataset.key=p,o.push(f),f.addEventListener("mouseover",(function(o){s.activeResultIdx=parseInt(f.dataset.key),s.addActiveClassToResult(s.activeResultIdx)}))})),this.modal.updateResultChildren(o,(function(){s.activeResultIdx=0,s.addActiveClassToResult(s.activeResultIdx)}))}},{key:"setFocusToInput",value:function(){this.searchInput.input.focus()}},{key:"addActiveClassToResult",value:function(s){var o=this.modal.result.querySelectorAll(".qdr-search-result");0!==o.length&&(b(o).forEach((function(s){s.classList.contains("active")&&s.classList.remove("active")})),b(o).find((function(o){return parseInt(o.dataset.key)===parseInt(s)})).classList.add("active"))}},{key:"navigateTroughResults",value:function(s){var o;"ArrowUp"===s.key&&(o=this.activeResultIdx-1,this.activeResultIdx=o>=0?o:this.searchInput.data.length-1),"ArrowDown"===s.key&&((o=null===this.activeResultIdx?0:this.activeResultIdx+1)<this.searchInput.data.length?this.activeResultIdx=o:this.activeResultIdx=0),this.addActiveClassToResult(this.activeResultIdx)}}])&&_(s.prototype,o),Object.defineProperty(s,"prototype",{writable:!1}),e}();window.initQdrantSearch=function(s){var o,l=s.searchApiUrl,p=s.section;return document.body.appendChild(('<div class="qdr-search" id="searchModal" tabindex="-1"\n aria-labelledby="searchModalLabel" aria-hidden="true">\n <div class="qdr-search__dialog">\n <div class="qdr-search__content">\n <div class="qdr-search__header">\n <div class="qdr-search__title">\n <div class="qdr-search__icon">\n <span class="search-icon"></span>\n </div>\n <input type="text" class="qdr-search__input" autocomplete="off" placeholder="Search..."\n id="searchInput" aria-label="Search">\n </div>\n\n <button type="button" class="qdr-search__close" aria-label="Close">\n <span aria-hidden="true">&times;</span>\n </button>\n </div>\n\n <div class="qdr-search__results"></div>\n\n <div class="qdr-search__footer"> \n <a href="https://qdrant.tech/" target="_blank" rel="nofollow">\n Powered by\n <span class="qdr-search__logo"></span>\n </a>\n </div>\n </div>\n </div>\n </div>',(o=document.createElement("div")).innerHTML='<div class="qdr-search" id="searchModal" tabindex="-1"\n aria-labelledby="searchModalLabel" aria-hidden="true">\n <div class="qdr-search__dialog">\n <div class="qdr-search__content">\n <div class="qdr-search__header">\n <div class="qdr-search__title">\n <div class="qdr-search__icon">\n <span class="search-icon"></span>\n </div>\n <input type="text" class="qdr-search__input" autocomplete="off" placeholder="Search..."\n id="searchInput" aria-label="Search">\n </div>\n\n <button type="button" class="qdr-search__close" aria-label="Close">\n <span aria-hidden="true">&times;</span>\n </button>\n </div>\n\n <div class="qdr-search__results"></div>\n\n <div class="qdr-search__footer"> \n <a href="https://qdrant.tech/" target="_blank" rel="nofollow">\n Powered by\n <span class="qdr-search__logo"></span>\n </a>\n </div>\n </div>\n </div>\n </div>'.trim(),o.firstElementChild)),new g({searchApiUrl:l,section:p})}}();