1var g=Object.freeze,_=Object.defineProperty;var a=(e,t)=>g(_(e,"raw",{value:g(t||e.slice())}));import{a as $}from"./class-map.BaNb8brA.js";import{i as R,x as l,n as m,r as u}from"./funnel-tracker.CkzWyQni.js";import{t as O}from"./google-cookies._NJ-L9_Q.js";import{a as P}from"./index.Bpy9671J.js";import"./_commonjsHelpers.CqkleIqs.js";import"./auth-cookies.Cq4KilpJ.js";import"./analytics.Yss8y0c9.js";var B=Object.defineProperty,F=Object.getOwnPropertyDescriptor,i=(e,t,o,s)=>{for(var c=s>1?void 0:s?F(t,o):t,h=e.length-1,p;h>=0;h--)(p=e[h])&&(c=(s?p(t,o,c):p(c))||c);return s&&c&&B(t,o,c),c},x,y,f,b,L,I,C,T,w,E;let r=class extends R{constructor(){super(...arguments),this.historyLocalStorageKey="exercises-search-history-v2",this.searchFromSelector="#exerciseSearchForm",this.inputSelector="#exerciseSearchInput",this.inputContainerSelector="#exercisesSearchContainer",this.inputSearchButtonSelector="#exercisesAutocompleteSubmit",this.modalShadowSelector="#exercisesSearchModalShadow",this.inputClearButtonSelector="#exercisesSearchInputClear",this.inputFocused=!1,this.searchModalOpen=!1,this.loading=!1,this.results=[],this.searchTerm="",this.noResults=!1,this.error=null,this.debounceTimer=null}createRenderRoot(){return this}get searchForm(){return document.querySelector(this.searchFromSelector)}get searchInput(){return document.querySelector(this.inputSelector)}get searchInputContainer(){return document.querySelector(this.inputContainerSelector)}get modalShadow(){return document.querySelector(this.modalShadowSelector)}get searchButton(){return document.querySelector(this.inputSearchButtonSelector)}get inputClearButton(){return document.querySelector(this.inputClearButtonSelector)}get history(){try{const e=localStorage.getItem(this.historyLocalStorageKey);return e?JSON.parse(e):[]}catch(e){return localStorage.removeItem(this.historyLocalStorageKey),[]}}addHistory(e){const t=this.history,o=t.findIndex(s=>s.exercise_id===e.exercise_id);o!==-1&&t.splice(o,1),t.length>=5&&t.pop(),t.unshift(e),localStorage.setItem(this.historyLocalStorageKey,JSON.stringify(t))}goToSearchPage(){var e;this.searchTerm.length&&((e=this.searchForm)==null||e.submit())}onResultClick(e){this.addHistory(e),window.location.href=e.exercise_url+e.exercise_id+"/"}firstUpdated(e){super.firstUpdated(e),this.setupListeners()}update(e){var t;super.update(e),(t=this.searchButton)==null||t.classList.toggle("active",this.searchTerm.length>0)}setupListeners(){var e,t,o,s,c,h,p;(e=this.searchInput)==null||e.addEventListener("focus",d=>{var n,v,S;this.inputFocused=!0,this.searchModalOpen=!0,(n=this.searchInput)==null||n.scrollTo(0,20),(v=this.searchInputContainer)==null||v.classList.add("active"),(S=this.searchInputContainer)==null||S.classList.add("focused")}),(t=this.searchInput)==null||t.addEventListener("blur",d=>{var n;this.inputFocused=!1,(n=this.searchInputContainer)==null||n.classList.remove("focused")}),(o=this.modalShadow)==null||o.addEventListener("click",d=>{this.closeModal()}),(s=this.inputClearButton)==null||s.addEventListener("click",d=>{this.searchInput&&(this.searchInput.value="",this.searchInput.dispatchEvent(new Event("input",{bubbles:!0})))}),(c=this.searchInput)==null||c.addEventListener("input",d=>{var v;const n=d.target;this.searchTerm=n.value,(v=this.inputClearButton)==null||v.classList.toggle("active",this.searchTerm.length>0),this.debounceTimer&&clearTimeout(this.debounceTimer),this.debounceTimer=window.setTimeout(()=>{this.searchTerm.length>=2?this.performSearch():this.results=[]},300)}),(h=this.searchButton)==null||h.addEventListener("click",d=>{this.goToSearchPage()}),(p=this.searchInput)!=null&&p.value.length&&this.searchInput.dispatchEvent(new Event("input",{bubbles:!0}))}closeModal(){var e;this.searchModalOpen=!1,(e=this.searchInputContainer)==null||e.classList.remove("active")}async performSearch(){try{this.loading=!0,this.error=null;const e=await P.get("/api/exercises/auto-complete.php",{params:{s:this.searchTerm}}),{results:t}=e.data;this.noResults=t.length===0,this.results=t}catch(e){console.error("Search error:",e),this.results=[],this.error="Erro ao carregar os resultados."}finally{this.loading=!1}}renderInitialState(){return l(x||(x=a(['\n <div class="exercises-autocomplete-result-container">\n <div class="exercises-autocomplete-result-container-text">\n Pesquise exercÃcios, como \'Probabilidade\' ou \'Equações\'.\n </div>\n <div class="exercises-autocomplete-result-container-text">\n Os resultados aparecem enquanto você digita.\n </div>\n </div>\n '])))}
1renderLoadingState(){return l(y||(y=a(['\n <div class="exercises-autocomplete-result-container">\n <div class="exercises-autocomplete-result-container-spinner">\n <span class="loading-spinner"></span>\n </div>\n <div class="exercises-autocomplete-result-container-text">\n A carregar resultados\n </div>\n </div>\n '])))}renderErrorState(){return l(f||(f=a(['\n <div class="exercises-autocomplete-result-container">\n <div class="exercises-autocomplete-result-container-text">\n Ops! Algo deu errado!<br />\n Por favor, tente novamente mais tarde.\n </div>\n </div>\n '])))}renderNoResultsState(){return l(b||(b=a(['\n <div class="exercises-autocomplete-result-container">\n <div class="exercises-autocomplete-result-container-text">\n Nenhum resultado encontrado.\n </div>\n </div>\n '])))}highlightMatch(e){if(!this.searchTerm)return e;const t=this.searchTerm.toLowerCase(),s=e.toLowerCase().indexOf(t);return s===-1?e:l(L||(L=a(["<div>\n ","<b>","</b>","\n </div>"])),e.slice(0,s),e.slice(s,s+this.searchTerm.length),e.slice(s+this.searchTerm.length))}renderResultsState(){return l(C||(C=a(['\n <div class="exercises-autocomplete-result-list">\n ','\n <div class="exercises-autocomplete-result-list-search-link-container">\n <button\n class="exercises-autocomplete-result-list-search-link"\n @click=',"\n >\n Ver todos os resultados\n <span></span>\n </button>\n </div>\n </div>\n "])),this.results.map(e=>l(I||(I=a(['<button\n class="exercises-autocomplete-result-list-item"\n @click=','\n >\n <div class="exercises-autocomplete-result-list-item-name">\n <span class="exercises-autocomplete-result-list-item-name-icon"></span>\n ','\n </div>\n <div class="exercises-autocomplete-result-list-item-label-group">\n <div class="exercises-autocomplete-result-list-item-label">\n ','\n </div>\n <div class="exercises-autocomplete-result-list-item-label">\n ',"\n </div>\n </div>\n </button>"])),()=>this.onResultClick(e),this.highlightMatch(e.exercise_name),e.subject_name,e.school_year_name)),this.goToSearchPage)}renderPreviousSearches(){const e=this.history.length;return l(w||(w=a(['\n <div class="exercises-autocomplete-result-list">\n <div class="exercises-autocomplete-result-list-title">\n <span class="history-icon"></span>\n PESQUISAS RECENTES\n </div>\n ',"\n </div>\n "])),this.history.map((t,o)=>l(T||(T=a(['<button\n class="','"\n @click=','\n >\n <div class="exercises-autocomplete-result-list-item-name">\n <span class="exercises-autocomplete-result-list-item-name-icon"></span>\n ','\n </div>\n <div class="exercises-autocomplete-result-list-item-label-group">\n <div class="exercises-autocomplete-result-list-item-label">\n ','\n </div>\n <div class="exercises-autocomplete-result-list-item-label">\n ',"\n </div>\n </div>\n </button>"])),$({"exercises-autocomplete-result-list-item":!0,"exercises-autocomplete-result-list-item--no-border":o===e-1}),()=>
1this.onResultClick(t),t.exercise_name,t.subject_name,t.school_year_name)))}render(){return l(E||(E=a(['\n <div class="exercises-autocomplete">\n ',"\n </div>\n "])),this.loading?this.renderLoadingState():this.error?this.renderErrorState():this.results.length>0?this.renderResultsState():this.noResults?this.renderNoResultsState():this.history.length?this.renderPreviousSearches():this.renderInitialState())}};i([m({type:String})],r.prototype,"searchFromSelector",2);i([m({type:String})],r.prototype,"inputSelector",2);i([m({type:String})],r.prototype,"inputContainerSelector",2);i([m({type:String})],r.prototype,"inputSearchButtonSelector",2);i([m({type:String})],r.prototype,"modalShadowSelector",2);i([m({type:String})],r.prototype,"inputClearButtonSelector",2);i([u()],r.prototype,"inputFocused",2);i([u()],r.prototype,"searchModalOpen",2);i([u()],r.prototype,"loading",2);i([u()],r.prototype,"results",2);i([u()],r.prototype,"searchTerm",2);i([u()],r.prototype,"noResults",2);i([u()],r.prototype,"error",2);r=i([O("exercises-search-autocomplete")],r);export{r as ExercisesSearchAutoComplete}; 2//# sourceMappingURL=search-autocomplete.CSKBSiuq.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.