PageSourceSearch

https://www.maxilia.fr/theme/2af144d41c87f2e545e909cae16a4e0f/js/a…arch-c-s.last-search-terms.plugin.054be9.js

js maxilia.fr collected 2026-10-05 18:17:19 UTC 17,939 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[47595],{857:e=>{var t=function(e){var t;return!!e&&"object"==typeof e&&"[object RegExp]"!==(t=Object.prototype.toString.call(e))&&"[object Date]"!==t&&e.$$typeof!==s},s="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function r(e,t){return!1!==t.clone&&t.isMergeableObject(e)?a(Array.isArray(e)?[]:{},e,t):e}function i(e,t,s){return e.concat(t).map(function(e){return r(e,s)})}function n(e){return Object.keys(e).concat(Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return Object.propertyIsEnumerable.call(e,t)}):[])}function o(e,t){try{return t in e}catch(e){return!1}}function a(e,s,l){(l=l||{}).arrayMerge=l.arrayMerge||i,l.isMergeableObject=l.isMergeableObject||t,l.cloneUnlessOtherwiseSpecified=r;var c,h,d=Array.isArray(s);return d!==Array.isArray(e)?r(s,l):d?l.arrayMerge(e,s,l):(h={},(c=l).isMergeableObject(e)&&n(e).forEach(function(t){h[t]=r(e[t],c)}),n(s).forEach(function(t){(!o(e,t)||Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))&&(o(e,t)&&c.isMergeableObject(s[t])?h[t]=(function(e,t){if(!t.customMerge)return a;var s=t.customMerge(e);return"function"==typeof s?s:a})(t,c)(e[t],s[t],c):h[t]=r(s[t],c))}),h)}a.all=function(e,t){if(!Array.isArray(e))throw Error("first argument should be an array");return e.reduce(function(e,s){return a(e,s,t)},{})},e.exports=a},49:(e,t,s)=>{s.d(t,{Z:()=>i});var r=s(140);class i{static isNode(e){return"object"==typeof e&&null!==e&&(e===document||e===window||e instanceof Node)}static hasAttribute(e,t){if(!i.isNode(e))throw Error("The element must be a valid HTML Node!");return"function"==typeof e.hasAttribute&&e.hasAttribute(t)}static getAttribute(e,t){let s=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(s&&!1===i.hasAttribute(e,t))throw Error('The required property "'.concat(t,'" does not exist!'));if("function"!=typeof e.getAttribute){if(s)throw Error("This node doesn't support the getAttribute function!");return}return e.getAttribute(t)}static getDataAttribute(e,t){let s=!(arguments.length>2)||void 0===arguments[2]||arguments[2],n=t.replace(/^data(|-)/,""),o=r.Z.toLowerCamelCase(n,"-");if(!i.isNode(e)){if(s)throw Error("The passed node is not a valid HTML Node!");return}if(void 0===e.dataset){if(s)throw Error("This node doesn't support the dataset attribute!");return}let a=e.dataset[o];if(void 0===a){if(s)throw Error('The required data attribute "'.concat(t,'" does not exist on ').concat(e,"!"));return a}return r.Z.parsePrimitive(a)}static querySelector(e,t){let s=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(s&&!i.isNode(e))throw Error("The parent node is not a valid HTML Node!");let r=e.querySelector(t)||!1;if(s&&!1===r)throw Error('The required element "'.concat(t,'" does not exist in parent node!'));return r}static querySelectorAll(e,t){let s=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(s&&!i.isNode(e))throw Error("The parent node is not a valid HTML Node!");let r=e.querySelectorAll(t);if(0===r.length&&(r=!1),s&&!1===r)throw Error('At least one item of "'.concat(t,'" must exist in parent node!'));return r}static getFocusableElements(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document.body;return e.querySelectorAll('\n            input:not([tabindex^="-"]):not([disabled]):not([type="hidden"]),\n            select:not([tabindex^="-"]):not([disabled]),\n            textarea:not([tabindex^="-"]):not([disabled]),\n            button:not([tabindex^="-"]):not([disabled]),\n            a[href]:not([tabindex^="-"]):not([disabled]),\n            [tabindex]:not([tabindex^="-"]):not([disabled])\n        ')}static getFirstFocusableElement(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document.body;return this.getFocusableElements(e)[0]}static getLastFocusableElement(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document,t=this.getFocusableElements(e);return t[t.length-1]}}},140:(e,t,s)=>{s.d(t,{Z:()=>r});class r{static ucFirst(e){return e.charAt(0).toUpperCase()+e.slice(1)}static lcFirst(e){return e.charAt(0).toLowerCase()+e.slice(1)}static toDashCase(e){return e.replace(/([A-Z])/g,"-$1").replace(/^-/,"").toLowerCase()}static toLowerCamelCase(e,t){let s=r.toUpperCamelCase(e,t);return r.lcFirst(s)}static toUpperCamelCase(e,t){return t?e.split(t).map(e=>
1r.ucFirst(e.toLowerCase())).join(""):r.ucFirst(e.toLowerCase())}static parsePrimitive(e){try{return/^\d+(.|,)\d+$/.test(e)&&(e=e.replace(",",".")),JSON.parse(e)}catch(t){return e.toString()}}}},293:(e,t,s)=>{s.d(t,{Z:()=>l});var r=s(857),i=s.n(r),n=s(49),o=s(140);class a{publish(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=new CustomEvent(e,{detail:t,cancelable:s});return this.el.dispatchEvent(r),r}subscribe(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=this,i=e.split("."),n=s.scope?t.bind(s.scope):t;if(s.once&&!0===s.once){let t=n;n=function(s){r.unsubscribe(e),t(s)}}return this.el.addEventListener(i[0],n),this.listeners.push({splitEventName:i,opts:s,cb:n}),!0}unsubscribe(e){let t=e.split(".");return this.listeners=this.listeners.reduce((e,s)=>([...s.splitEventName].sort().toString()===t.sort().toString()?this.el.removeEventListener(s.splitEventName[0],s.cb):e.push(s),e),[]),!0}reset(){return this.listeners.forEach(e=>{this.el.removeEventListener(e.splitEventName[0],e.cb)}),this.listeners=[],!0}get el(){return this._el}set el(e){this._el=e}get listeners(){return this._listeners}set listeners(e){this._listeners=e}constructor(e=document){this._el=e,e.$emitter=this,this._listeners=[]}}class l{init(){throw Error('The "init" method for the plugin "'.concat(this._pluginName,'" is not defined.'))}update(){}_init(){this._initialized||(this.init(),this._initialized=!0)}_update(){this._initialized&&this.update()}_mergeOptions(e){let t=o.Z.toDashCase(this._pluginName),s=n.Z.getDataAttribute(this.el,"data-".concat(t,"-config"),!1),r=n.Z.getAttribute(this.el,"data-".concat(t,"-options"),!1),a=[this.constructor.options,this.options,e];s&&a.push(window.PluginConfigManager.get(this._pluginName,s));try{r&&a.push(JSON.parse(r))}catch(e){throw console.error(this.el),Error('The data attribute "data-'.concat(t,'-options" could not be parsed to json: ').concat(e.message))}return i().all(a.filter(e=>e instanceof Object&&!(e instanceof Array)).map(e=>e||{}))}_registerInstance(){window.PluginManager.getPluginInstancesFromElement(this.el).set(this._pluginName,this),window.PluginManager.getPlugin(this._pluginName,!1).get("instances").push(this)}_getPluginName(e){return e||(e=this.constructor.name),e}constructor(e,t={},s=!1){if(!n.Z.isNode(e))throw Error("There is no valid element given.");this.el=e,this.$emitter=new a(this.el),this._pluginName=this._getPluginName(s),this.options=this._mergeOptions(t),this._initialized=!1,this._registerInstance(),this._init()}}},107:(e,t,s)=>{s.d(t,{Z:()=>r});class r{get(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"application/json",r=this._createPreparedRequest("GET",e,s);return this._sendRequest(r,null,t)}post(e,t,s){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"application/json";r=this._getContentType(t,r);let i=this._createPreparedRequest("POST",e,r);return this._sendRequest(i,t,s)}delete(e,t,s){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"application/json";r=this._getContentType(t,r);let i=this._createPreparedRequest("DELETE",e,r);return this._sendRequest(i,t,s)}patch(e,t,s){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"application/json";r=this._getContentType(t,r);let i=this._createPreparedRequest("PATCH",e,r);return this._sendRequest(i,t,s)}abort(){if(this._request)return this._request.abort()}setErrorHandlingInternal(e){this._errorHandlingInternal=e}_registerOnLoaded(e,t){t&&(!0===this._errorHandlingInternal?(e.addEventListener("load",()=>{t(e.responseText,e)}),e.addEventListener("abort",()=>{console.warn("the request to ".concat(e.responseURL," was aborted"))}),e.addEventListener("error",()=>{console.warn("the request to ".concat(e.responseURL," failed with status ").concat(e.status))}),e.addEventListener("timeout",()=>{console.warn("the request to ".concat(e.responseURL," timed out"))})):e.addEventListener("loadend",()=>{t(e.responseText,e)}))}_sendRequest(e,t,s){return this._registerOnLoaded(e,s),e.send(t),e}_getContentType(e,t){return e instanceof FormData&&(t=!1),t}_createPreparedRequest(e,t,s){return this._request=new XMLHttpRequest,this._request.open(e,t),this._request.setRequestHeader("X-Requested-With","XMLHttpRequest"),s&&this._request.setRequestHeader("Content-type",s),this._request}constructor(){this._request=null,this._errorHandlingInternal=!1}}},595:(e,t,s)=>{s.r(t),s.d(t,{default:()=>o});var r=s(293),i=s(49),n=s(107);class o extends r.Z{init(){this._client=new n.Z,this._searchInput=null,this._container=null,this._terms=[],this._isVisible=!1;try{this._searchInput=i.Z.querySelector(this.el,this.options.searchInputSelector)}catch(e){return}this._searchInput&&"hide"!==this.options.displayMode&&("loggedIn"!==this.options.displayMode||this.options.isLoggedIn)&&(this._handleUserChange(),this._createContainer(),this._registerEvents(),this._loadTerms())}_handleUserChange(){let e=localStorage.getItem(this.options.customerIdKey),t=this.options.customerId;e&&e!==t&&this._clearAllLocalStorage(),t?localStorage.setItem(this.options.customerIdKey,t):localStorage.removeItem(this.options.customerIdKey)}_clearAllLocalStorage(){try{localStorage.removeItem(this.options.localStorageKey),localStorage.removeItem(this.options.customerIdKey),localStorage.removeItem(this.options.pendingSavesKey),localStorage.removeItem(this.options.pendingDeletionsKey),this._terms=[]}catch(e){}}_createContainer(){this._container=this.el.querySelector(this.options.lastSearchTermsContainerSelector),this._container||(this._container=document.createElement("div"),this._container.className="acris-last-search-terms-container",this._container.style.display="none",this.el.appendChild(this._container))}_registerEvents(){this._searchInput.addEventListener("focus",this._onInputFocus.bind(this)),this._searchInput.addEventListener("input",this._onInputChange.bind(this)),document.addEventListener("click",this._onDocumentClick.bind(this)),this._container.addEventListener("click",e=>e.stopPropagation());let e=this._searchInput.closest("form");e&&e.addEventListener("submit",this._onFormSubmit.bind(this))}_onInputFocus(){""===this._searchInput.value.trim()&&this._terms.length>0&&this._showOverlay()}_onInputChange(){""!==this._searchInput.value.trim()?this._hideOverlay():this._terms.length>0&&this._showOverlay()}_onDocumentClick(e){this.el.contains(e.target)||this._hideOverlay()}_onFormSubmit(){let e=this._searchInput.value.trim();e.length>0&&(this._saveTermLocally(e),this.options.isLoggedIn&&this._addToPendingSaves(e))}_showOverlay(){if(0===this._terms.length)return;this._renderTerms(),this._container.style.display="block",this._isVisible=!0;let e=this.el.querySelector(".search-suggest-container");e&&(e.style.display="none")}_hideOverlay(){this._container.style.display="none",this._isVisible=!1}_loadTerms(){this._loadTermsFromLocalStorage(),this.options.isLoggedIn&&this._syncWithServer()}_loadTermsFromLocalStorage(){try{let e=localStorage.getItem(this.options.localStorageKey);if(e){let t=JSON.parse(e),s=Array.isArray(t)?t:[];!this.options.isLoggedIn&&s.some(e=>e.id)&&(localStorage.removeItem(this.options.localStorageKey),s=[]),this._terms=s.slice(0,this.options.maxTerms)}else this._terms=[]}catch(e){this._terms=[]}}_saveTermsToLocalStorage(){try{localStorage.setItem(this.options.localStorageKey,JSON.stringify(this._terms))}catch(e){}}_saveTermLocally(e){if(!(e=e.trim()))return;this._terms=this._terms.filter(t=>t.term.toLowerCase()!==e.toLowerCase());let t={term:e,updatedAt:new Date().toISOString()};this._terms.unshift(t),this._terms=this._terms.slice(0,this.options.maxTerms),this._saveTermsToLocalStorage()}_syncWithServer(){this._syncPendingSaves(),this._syncPendingDeletions(),this._client.get(this.options.loadUrl,e=>{try{let t=JSON.parse(e);t.elements&&Array.isArray(t.elements)&&(this._mergeServerTerms(t.elements),this._syncLocalTermsToServer())}catch(e){}})}_mergeServerTerms(e){let t=this._getPendingDeletions(),s=new Map;
1this._terms.forEach(e=>{s.set(e.term.toLowerCase(),e)}),e.forEach(e=>{let r=e.term.toLowerCase();if(!t.some(e=>e.toLowerCase()===r)){if(s.has(r)){let t=s.get(r);!t.id&&e.id&&(t.id=e.id)}else s.set(r,{id:e.id,term:e.term,updatedAt:e.updatedAt||e.createdAt})}}),this._terms=Array.from(s.values()).sort((e,t)=>new Date(t.updatedAt)-new Date(e.updatedAt)).slice(0,this.options.maxTerms),this._saveTermsToLocalStorage()}_getPendingDeletions(){try{let e=localStorage.getItem(this.options.pendingDeletionsKey);if(e){let t=JSON.parse(e);if(Array.isArray(t))return t.map(e=>"string"==typeof e?e:e.term)}}catch(e){}return[]}_syncLocalTermsToServer(){this._terms.filter(e=>!e.id).forEach(e=>{this._saveTermToServer(e.term)})}_saveTermToServer(e){let t=new URLSearchParams;t.append("term",e),this._client.post(this.options.saveUrl,t.toString(),e=>{try{let t=JSON.parse(e);t.elements&&this._mergeServerTerms(t.elements)}catch(e){}},"application/x-www-form-urlencoded")}_addToPendingSaves(e){try{let t=JSON.parse(localStorage.getItem(this.options.pendingSavesKey)||"[]").filter(t=>t.toLowerCase()!==e.toLowerCase());t.push(e),localStorage.setItem(this.options.pendingSavesKey,JSON.stringify(t))}catch(e){}}_syncPendingSaves(){try{let e=JSON.parse(localStorage.getItem(this.options.pendingSavesKey)||"[]");e.length>0&&(e.forEach(e=>{this._saveTermToServer(e)}),localStorage.removeItem(this.options.pendingSavesKey))}catch(e){}}_addToPendingDeletions(e,t){try{let s=JSON.parse(localStorage.getItem(this.options.pendingDeletionsKey)||"[]");s.push({term:e,id:t}),localStorage.setItem(this.options.pendingDeletionsKey,JSON.stringify(s))}catch(e){}}_syncPendingDeletions(){try{let e=JSON.parse(localStorage.getItem(this.options.pendingDeletionsKey)||"[]");e.length>0&&(e.forEach(e=>{this._deleteTermFromServer(e.term,e.id)}),localStorage.removeItem(this.options.pendingDeletionsKey))}catch(e){}}saveTerm(e){this._saveTermLocally(e),this.options.isLoggedIn&&this._saveTermToServer(e)}deleteTerm(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this._terms=this._terms.filter(t=>t.term.toLowerCase()!==e.toLowerCase()),this._saveTermsToLocalStorage(),0===this._terms.length?this._hideOverlay():this._renderTerms(),this.options.isLoggedIn?this._deleteTermFromServer(e,t):this._addToPendingDeletions(e,t)}_deleteTermFromServer(e,t){let s=new URLSearchParams;t?s.append("id",t):s.append("term",e),this._client.post(this.options.deleteUrl,s.toString(),()=>{},"application/x-www-form-urlencoded")}_renderTerms(){if(0===this._terms.length){this._container.innerHTML="";return}let e=this.options.title,t='\n            <div class="acris-last-search-terms-wrapper">\n                <div class="acris-last-search-terms-header">\n                    <span class="acris-last-search-terms-title">'.concat(this._escapeHtml(e),'</span>\n                </div>\n                <ul class="acris-last-search-terms-list">\n        ');this._terms.forEach(e=>{let s=this._escapeHtml(e.term),r=e.id||"";t+='\n                <li class="acris-last-search-term-item" data-term="'.concat(s,'" data-id="').concat(r,'">\n                    <a href="#" class="acris-last-search-term-link" role="button">\n                        <span class="acris-last-search-term-text">').concat(s,'</span>\n                    </a>\n                    <button type="button" class="acris-last-search-term-delete" aria-label="Delete" title="Delete">\n                        <span class="icon icon-sm" aria-hidden="true">\n                            <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n                                <path d="M18 6 6 18"></path>\n                                <path d="m6 6 12 12"></path>\n                            </svg>\n                        </span>\n                    </button>\n                </li>\n            ')}),t+="\n                </ul>\n            </div>\n        ",this._container.innerHTML=t,this._container.querySelectorAll(this.options.lastSearchTermLinkSelector).forEach(e
1=>{e.addEventListener("click",this._onTermClick.bind(this))}),this._container.querySelectorAll(this.options.lastSearchTermDeleteSelector).forEach(e=>{e.addEventListener("click",this._onDeleteClick.bind(this))})}_onTermClick(e){e.preventDefault(),e.stopPropagation();let t=e.target.closest(this.options.lastSearchTermItemSelector);if(!t)return;this._searchInput.value=t.dataset.term,this._hideOverlay();let s=this._searchInput.closest("form");s&&s.submit()}_onDeleteClick(e){e.preventDefault(),e.stopPropagation();let t=e.target.closest(this.options.lastSearchTermItemSelector);if(!t)return;let s=t.dataset.term,r=t.dataset.id;this.deleteTerm(s,r||null)}_escapeHtml(e){if(!e)return"";let t=document.createElement("div");return t.textContent=e,t.innerHTML}}o.options={searchInputSelector:'input[type="search"], input[name="search"]',lastSearchTermsContainerSelector:".acris-last-search-terms-container",lastSearchTermItemSelector:".acris-last-search-term-item",lastSearchTermDeleteSelector:".acris-last-search-term-delete",lastSearchTermLinkSelector:".acris-last-search-term-link",localStorageKey:"acrisLastSearchTerms",customerIdKey:"acrisLastSearchTermsCustomerId",pendingSavesKey:"acrisLastSearchTermsPending",pendingDeletionsKey:"acrisLastSearchTermsPendingDeletions",maxTerms:10,isLoggedIn:!1,customerId:null,displayMode:"always",loadUrl:"",saveUrl:"",deleteUrl:"",title:"Recent searches"}}}]);

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.