PageSourceSearch

https://www.ville-saintemarguerite.fr/web/assets/1/294789c/web.assets_frontend_minimal.min.js

js ville-saintemarguerite.fr collected 2026-10-02 22:04:34 UTC 25,334 bytes, 146 lines download raw bytes

1
2/* /web/static/src/polyfills/object.js */
3if(!Object.hasOwn){Object.hasOwn=(obj,key)=>Object.prototype.hasOwnProperty.call(obj,key);};
4
5/* /web/static/src/polyfills/array.js */
6if(!Array.prototype.at){Object.defineProperty(Array.prototype,"at",{enumerable:false,value:function(index){if(index>=0){return this[index];}
7return this[this.length+index];}});};
8
9/* /web/static/src/module_loader.js */
10(function(){"use strict";class ModuleLoader{factories=new Map();jobs=new Set();failed=new Set();modules=new Map();bus=new EventTarget();checkErrorProm=null;define(name,deps,factory){if(typeof name!=="string"){throw new Error(`Invalid name definition: ${name} (should be a string)"`);}
11if(!(deps instanceof Array)){throw new Error(`Dependencies should be defined by an array: ${deps}`);}
12if(typeof factory!=="function"){throw new Error(`Factory should be defined by a function ${factory}`);}
13if(!this.factories.has(name)){this.factories.set(name,{deps,fn:factory,ignoreMissingDeps:globalThis.__odooIgnoreMissingDependencies,});this.addJob(name);this.checkErrorProm||=Promise.resolve().then(()=>{this.checkAndReportErrors();this.checkErrorProm=null;});}}
14addJob(name){this.jobs.add(name);this.startModules();}
15findJob(){for(const job of this.jobs){if(this.factories.get(job).deps.every((dep)=>this.modules.has(dep))){return job;}}
16return null;}
17startModules(){let job;while((job=this.findJob())){this.startModule(job);}}
18startModule(name){const require=(name)=>this.modules.get(name);this.jobs.delete(name);const factory=this.factories.get(name);let value=null;try{value=factory.fn(require);}catch(error){this.failed.add(name);throw new Error(`Error while loading "${name}":\n${error}`);}
19this.modules.set(name,value);this.bus.dispatchEvent(new CustomEvent("module-started",{detail:{moduleName:name,module:value}}));}
20findErrors(){const dependencyGraph=new Map();for(const job of this.jobs){dependencyGraph.set(job,this.factories.get(job).deps);}
21function visitJobs(jobs,visited=new Set()){for(const job of jobs){const result=visitJob(job,visited);if(result){return result;}}
22return null;}
23function visitJob(job,visited){if(visited.has(job)){const jobs=Array.from(visited).concat([job]);const index=jobs.indexOf(job);return jobs.slice(index).map((j)=>`"${j}"`).join(" => ");}
24const deps=dependencyGraph.get(job);return deps?visitJobs(deps,new Set(visited).add(job)):null;}
25const missing=new Set();for(const job of this.jobs){const factory=this.factories.get(job);if(factory.ignoreMissingDeps){continue;}
26for(const dep of factory.deps){if(!this.factories.has(dep)){missing.add(dep);}}}
27return{failed:[...this.failed],cycle:visitJobs(this.jobs),missing:[...missing],unloaded:[...this.jobs].filter((j)=>!this.factories.get(j).ignoreMissingDeps),};}
28async checkAndReportErrors(){const{failed,cycle,missing,unloaded}=this.findErrors();if(!failed.length&&!unloaded.length){return;}
29const debug=new URLSearchParams(location.search).get("debug");if(debug&&debug!=="0"){const style=document.createElement("style");style.textContent=`
30                    body::before {
31                        font-weight: bold;
32                        content: "An error occurred while loading javascript modules, you may find more information in the devtools console";
33                        position: fixed;
34                        left: 0;
35                        bottom: 0;
36                        z-index: 100000000000;
37                        background-color: #C00;
38                        color: #DDD;
39                    }
40                `;document.head.appendChild(style);}
41if(failed.length){console.error("The following modules failed to load because of an error:",failed);}
42if(missing){console.error("The following modules are needed by other modules but have not been defined, they may not be present in the correct asset bundle:",missing);}
43if(cycle){console.error("The following modules could not be loaded because they form a dependency cycle:",cycle);}
44if(unloaded){console.error("The following modules could not be loaded because they have unmet dependencies, this is a secondary error which is likely caused by one of the above problems:",unloaded);}}}
45if(!globalThis.odoo){globalThis.odoo={};}
46const odoo=globalThis.odoo;
46if(odoo.debug&&!new URLSearchParams(location.search).has("debug")){odoo.debug="";}
47const loader=new ModuleLoader();odoo.define=loader.define.bind(loader);odoo.loader=loader;})();;
48
49/* /web/static/src/session.js */
50odoo.define('@web/session',[],function(require){'use strict';let __exports={};const session=__exports.session=odoo.__session_info__||{};delete odoo.__session_info__;return __exports;});;
51
52/* /web/static/src/core/browser/cookie.js */
53odoo.define('@web/core/browser/cookie',[],function(require){'use strict';let __exports={};const COOKIE_TTL=24*60*60*365;const cookie=__exports.cookie={get _cookieMonster(){return document.cookie;},set _cookieMonster(value){document.cookie=value;},get(str){const parts=this._cookieMonster.split("; ");for(const part of parts){const[key,value]=part.split(/=(.*)/);if(key===str){return value||"";}}},set(key,value,ttl=COOKIE_TTL){let fullCookie=[];if(value!==undefined){fullCookie.push(`${key}=${value}`);}
54fullCookie=fullCookie.concat(["path=/",`max-age=${Math.floor(ttl)}`]);this._cookieMonster=fullCookie.join("; ");},delete(key){this.set(key,"kill",0);},};return __exports;});;
55
56/* /web/static/src/legacy/js/core/minimal_dom.js */
57odoo.define('@web/legacy/js/core/minimal_dom',[],function(require){'use strict';let __exports={};const DEBOUNCE=__exports.DEBOUNCE=400;const BUTTON_HANDLER_SELECTOR=__exports.BUTTON_HANDLER_SELECTOR='a, button, input[type="submit"], input[type="button"], .btn';__exports.makeAsyncHandler=makeAsyncHandler;function makeAsyncHandler(fct,preventDefault,stopPropagation){const stopImmediatePropagation=this&&this.__makeAsyncHandler_stopImmediatePropagation;let pending=false;function _isLocked(){return pending;}
58function _lock(){pending=true;}
59function _unlock(){pending=false;}
60return function(ev){if(preventDefault===true||preventDefault&&preventDefault()){ev.preventDefault();}
61if(stopPropagation===true||stopPropagation&&stopPropagation()){ev.stopPropagation();}
62if(stopImmediatePropagation===true||stopImmediatePropagation&&stopImmediatePropagation()){ev.stopImmediatePropagation();}
63if(_isLocked()){return;}
64_lock();const result=fct.apply(this,arguments);Promise.resolve(result).finally(_unlock);return result;};}
65__exports.makeButtonHandler=makeButtonHandler;function makeButtonHandler(fct){const preventDefault=this&&this.__makeButtonHandler_preventDefault;const stopPropagation=this&&this.__makeButtonHandler_stopPropagation;const stopImmediatePropagation=this&&this.__makeButtonHandler_stopImmediatePropagation;fct=makeAsyncHandler.call({'__makeAsyncHandler_stopImmediatePropagation':stopImmediatePropagation,},fct,preventDefault,stopPropagation);return function(ev){const result=fct.apply(this,arguments);const buttonEl=ev.target&&ev.target.closest&&ev.target.closest(BUTTON_HANDLER_SELECTOR);if(!(buttonEl instanceof HTMLElement)){return result;}
66buttonEl.classList.add('pe-none');Promise.resolve(DEBOUNCE&&new Promise(r=>setTimeout(r,DEBOUNCE))).then(function(){buttonEl.classList.remove('pe-none');const restore=addButtonLoadingEffect(buttonEl);return Promise.resolve(result).then(restore,restore);});return result;};}
67__exports.addButtonLoadingEffect=addButtonLoadingEffect;function addButtonLoadingEffect(btnEl){if(!(btnEl instanceof HTMLElement)){return()=>{};}
68btnEl.classList.add('o_website_btn_loading','disabled','pe-none');btnEl.disabled=true;const loaderEl=document.createElement('span');loaderEl.classList.add('fa','fa-refresh','fa-spin','me-2');btnEl.prepend(loaderEl);return()=>{btnEl.classList.remove('o_website_btn_loading','disabled','pe-none');btnEl.disabled=false;loaderEl.remove();};}
69return __exports;});;
70
71/* /web/static/src/legacy/js/public/lazyloader.js */
72odoo.define('@web/legacy/js/public/lazyloader',['@web/legacy/js/core/minimal_dom'],function(require){'use strict';let __exports={};const{BUTTON_HANDLER_SELECTOR,makeAsyncHandler,makeButtonHandler,}=require('@web/legacy/js/core/minimal_dom');let allScriptsLoadedResolve=null;const _allScriptsLoaded=new Promise(resolve=>{allScriptsLoadedResolve=resolve;}).then(stopWaitingLazy);const retriggeringWaitingProms=[];async function waitForLazyAndRetrigger(ev){const targetEl=ev.target;await _allScriptsLoaded;await Promise.all(retriggeringWaitingProms);setTimeout(()=>
72{if(targetEl.isConnected){targetEl.dispatchEvent(new ev.constructor(ev.type,ev));}},0);}
73const loadingEffectHandlers=[];function registerLoadingEffectHandler(el,type,handler){el.addEventListener(type,handler,{capture:true});loadingEffectHandlers.push({el,type,handler});}
74let waitingLazy=false;function waitLazy(){if(waitingLazy){return;}
75waitingLazy=true;document.body.classList.add('o_lazy_js_waiting');const mainEl=document.getElementById('wrapwrap')||document.body;const loadingEffectButtonEls=[...mainEl.querySelectorAll(BUTTON_HANDLER_SELECTOR)].filter(el=>{return!el.classList.contains('o_no_wait_lazy_js')&&!(el.nodeName==='A'&&el.href&&el.getAttribute('href')!=='#');});const loadingEffectEventTypes=['mouseover','mouseenter','mousedown','mouseup','click','mouseout','mouseleave'];for(const buttonEl of loadingEffectButtonEls){for(const eventType of loadingEffectEventTypes){const loadingEffectHandler=eventType==='click'?makeButtonHandler.call({'__makeButtonHandler_preventDefault':true,'__makeButtonHandler_stopImmediatePropagation':true,},waitForLazyAndRetrigger):makeAsyncHandler.call({'__makeAsyncHandler_stopImmediatePropagation':true,},waitForLazyAndRetrigger,true);registerLoadingEffectHandler(buttonEl,eventType,loadingEffectHandler);}}
76for(const formEl of document.querySelectorAll('form:not(.o_no_wait_lazy_js)')){registerLoadingEffectHandler(formEl,'submit',ev=>{ev.preventDefault();ev.stopImmediatePropagation();});}}
77function stopWaitingLazy(){if(!waitingLazy){return;}
78waitingLazy=false;document.body.classList.remove('o_lazy_js_waiting');for(const{el,type,handler}of loadingEffectHandlers){el.removeEventListener(type,handler,{capture:true});}}
79if(document.readyState!=='loading'){waitLazy();}else{document.addEventListener('DOMContentLoaded',function(){waitLazy();});}
80if(document.readyState==='complete'){setTimeout(_loadScripts,0);}else{window.addEventListener('load',function(){setTimeout(_loadScripts,0);});}
81function _loadScripts(scripts,index){if(scripts===undefined){scripts=document.querySelectorAll('script[data-src]');}
82if(index===undefined){index=0;}
83if(index>=scripts.length){allScriptsLoadedResolve();return;}
84const script=scripts[index];script.addEventListener('load',_loadScripts.bind(this,scripts,index+1));script.setAttribute('defer','defer');script.src=script.dataset.src;script.removeAttribute('data-src');}
85__exports[Symbol.for("default")]={loadScripts:_loadScripts,allScriptsLoaded:_allScriptsLoaded,registerPageReadinessDelay:retriggeringWaitingProms.push.bind(retriggeringWaitingProms),};return __exports;});;
86
87/* /web_editor/static/src/js/frontend/loader_loading.js */
88(function(){'use strict';document.addEventListener('DOMContentLoaded',()=>{var textareaEls=document.querySelectorAll('textarea.o_wysiwyg_loader');for(var i=0;i<textareaEls.length;i++){var textarea=textareaEls[i];var wrapper=document.createElement('div');wrapper.classList.add('position-relative','o_wysiwyg_textarea_wrapper');var loadingElement=document.createElement('div');loadingElement.classList.add('o_wysiwyg_loading');var loadingIcon=document.createElement('i');loadingIcon.classList.add('text-600','text-center','fa','fa-circle-o-notch','fa-spin','fa-2x');loadingElement.appendChild(loadingIcon);wrapper.appendChild(loadingElement);textarea.parentNode.insertBefore(wrapper,textarea);wrapper.insertBefore(textarea,loadingElement);}});})();;
89
90/* /website/static/src/js/content/inject_dom.js */
91odoo.define('@website/js/content/inject_dom',['@web/core/browser/cookie','@web/session'],function(require){'use strict';let __exports={};const{cookie:cookieManager}=require("@web/core/browser/cookie");const{session}=require("@web/session");__exports.unhideConditionalElements=unhideConditionalElements;function unhideConditionalElements(){const styleEl=document.createElement('style');styleEl.id="conditional_visibility";document.head.appendChild(styleEl);const conditionalEls=document.querySelectorAll('[data-visibility="conditional"]');for(const conditionalEl of conditionalEls){const selectors=conditionalEl.dataset.visibilitySelectors;styleEl.sheet.insertRule(`${selectors} { display: none !important; }`);}
92for(const conditionalEl of conditionalEls){conditionalEl.classList.remove('o_conditional_hidden');}}
93__exports.setUtmsHtmlDataset=setUtmsHtmlDataset;function setUtmsHtmlDataset(){const htmlEl=document.documentElement;const cookieNamesToDataNames={'utm_source':'utmSource','utm_medium':'utmMedium','utm_campaign':'utmCampaign',};for(const[name,dsName]of Object.entries(cookieNamesToDataNames)){const cookie=cookieManager.get(`odoo_${name}`);if(cookie){htmlEl.dataset[dsName]=cookie.replace(/(^["']|["']$)/g,'');}}}
94document.addEventListener('DOMContentLoaded',()=>{setUtmsHtmlDataset();const htmlEl=document.documentElement;const country=session.geoip_country_code;if(country){htmlEl.dataset.country=country;}
95htmlEl.dataset.logged=!session.is_website_user;unhideConditionalElements();});return __exports;});;
96
97/* /website/static/src/js/content/auto_hide_menu.js */
98odoo.define('@website/js/content/auto_hide_menu',[],function(require){'use strict';let __exports={};const BREAKPOINT_SIZES={sm:'575',md:'767',lg:'991',xl:'1199',xxl:'1399'};async function autoHideMenu(el,options){if(!el){return;}
99const navbar=el.closest('.navbar');const[breakpoint='md']=navbar?Object.keys(BREAKPOINT_SIZES).filter(suffix=>navbar.classList.contains(`navbar-expand-${suffix}`)):[];const isNoHamburgerMenu=!!navbar&&navbar.classList.contains('navbar-expand');const minSize=BREAKPOINT_SIZES[breakpoint];let isExtraMenuOpen=false;options=Object.assign({unfoldable:'none',images:[],loadingStyleClasses:[],autoClose:()=>true,},options||{});const isUserNavbar=el.parentElement.classList.contains('o_main_navbar');const dropdownSubMenuClasses=['show','border-0','position-static'];const dropdownToggleClasses=['h-auto','py-2','text-secondary'];const autoMarginLeftRegex=/\bm[sx]?(?:-(?:sm|md|lg|xl|xxl))?-auto\b/;const autoMarginRightRegex=/\bm[ex]?(?:-(?:sm|md|lg|xl|xxl))?-auto\b/;var extraItemsToggle=null;const afterFontsloading=new Promise((resolve)=>{if(document.fonts){document.fonts.ready.then(resolve);}else{setTimeout(resolve,150);}});afterFontsloading.then(_adapt);if(options.images.length){await _afterImagesLoading(options.images);_adapt();}
100let pending=false;let refreshId=null;const onRefresh=()=>
100{if(pending){refreshId=window.requestAnimationFrame(onRefresh);_adapt();pending=false;}else{refreshId=null;}};const throttleAdapt=()=>{if(refreshId===null){refreshId=window.requestAnimationFrame(onRefresh);_adapt();}else{pending=true;}};window.addEventListener('resize',throttleAdapt);function _restore(){if(!extraItemsToggle){return;}
101[...extraItemsToggle.querySelector('.dropdown-menu').children].forEach((item)=>{if(!isUserNavbar){item.classList.add('nav-item');const itemLink=item.querySelector('.dropdown-item');if(itemLink){itemLink.classList.remove('dropdown-item');itemLink.classList.add('nav-link');}}else{item.classList.remove('dropdown-item');const dropdownSubMenu=item.querySelector('.dropdown-menu');const dropdownSubMenuButton=item.querySelector('.dropdown-toggle');if(dropdownSubMenu){dropdownSubMenu.classList.remove(...dropdownSubMenuClasses);}
102if(dropdownSubMenuButton){dropdownSubMenuButton.classList.remove(...dropdownToggleClasses);}}
103el.insertBefore(item,extraItemsToggle);});extraItemsToggle.remove();extraItemsToggle=null;}
104function _adapt(){const wysiwyg=window.$&&$('#wrapwrap').data('wysiwyg');const odooEditor=wysiwyg&&wysiwyg.odooEditor;if(odooEditor){odooEditor.observerUnactive("adapt");odooEditor.withoutRollback(__adapt);odooEditor.observerActive("adapt");return;}
105__adapt();}
106function __adapt(){if(options.loadingStyleClasses.length){el.classList.add(...options.loadingStyleClasses);}
107const extraMenuEl=_getExtraMenuEl();isExtraMenuOpen=extraMenuEl&&extraMenuEl.classList.contains("show");_restore();if(!el.getClientRects().length||el.closest('.show')||(window.matchMedia(`(max-width: ${minSize}px)`).matches&&!isNoHamburgerMenu)){return _endAutoMoreMenu();}
108let unfoldableItems=[];const items=[...el.children].filter((node)=>{if(node.matches&&!node.matches(options.unfoldable)){return true;}
109unfoldableItems.push(node);return false;});var nbItems=items.length;var menuItemsWidth=items.reduce((sum,el)=>sum+computeFloatOuterWidthWithMargins(el,true,true,false),0);let maxWidth=0;if(!maxWidth){maxWidth=computeFloatOuterWidthWithMargins(el,true,true,true);var style=window.getComputedStyle(el);maxWidth-=(parseFloat(style.paddingLeft)+parseFloat(style.paddingRight)+parseFloat(style.borderLeftWidth)+parseFloat(style.borderRightWidth));maxWidth-=unfoldableItems.reduce((sum,el)=>sum+computeFloatOuterWidthWithMargins(el,true,true,false),0);}
110if(maxWidth-menuItemsWidth>=-0.001){return _endAutoMoreMenu();}
111const dropdownMenu=_addExtraItemsButton(items[nbItems-1].nextElementSibling);menuItemsWidth+=computeFloatOuterWidthWithMargins(extraItemsToggle,true,true,false);do{menuItemsWidth-=computeFloatOuterWidthWithMargins(items[--nbItems],true,true,false);}while(!(maxWidth-menuItemsWidth>=-0.001)&&(nbItems>0));const extraItems=items.slice(nbItems);extraItems.forEach((el)=>{if(!isUserNavbar){const navLink=el.querySelector('.nav-link, a');el.classList.remove('nav-item');if(navLink){navLink.classList.remove('nav-link');navLink.classList.add('dropdown-item');}}else{const dropdownSubMenu=el.querySelector('.dropdown-menu');const dropdownSubMenuButton=el.querySelector('.dropdown-toggle');el.classList.add('dropdown-item','p-0');if(dropdownSubMenu){dropdownSubMenu.classList.add(...dropdownSubMenuClasses);}
112if(dropdownSubMenuButton){dropdownSubMenuButton.classList.add(...dropdownToggleClasses);}}
113dropdownMenu.appendChild(el);});_endAutoMoreMenu();}
114function computeFloatOuterWidthWithMargins(el,mLeft,mRight,considerAutoMargins){var rect=el.getBoundingClientRect();var style=window.getComputedStyle(el);var outerWidth=rect.right-rect.left;const isRTL=style.direction==='rtl';if(mLeft!==false&&(considerAutoMargins||!(isRTL?autoMarginRightRegex:autoMarginLeftRegex).test(el.getAttribute('class')))){outerWidth+=parseFloat(style.marginLeft);}
115if(mRight!==false&&(considerAutoMargins||!(isRTL?autoMarginLeftRegex:autoMarginRightRegex).test(el.getAttribute('class')))){outerWidth+=parseFloat(style.marginRight);}
116return isNaN(outerWidth)?0:outerWidth;}
117function _addExtraItemsButton(target){let dropdownMenu=document.createElement('div');extraItemsToggle=dropdownMenu.cloneNode();const extraItemsToggleIcon=document.createElement('i');const extraItemsToggleLink=document.createElement('a');dropdownMenu.className='dropdown-menu';extraItemsToggle.className='nav-item dropdown o_extra_menu_items';extraItemsToggle.setAttribute("role","presentation");extraItemsToggleIcon.className='fa fa-plus';const extraItemsToggleAriaLabel=el.closest("[data-extra-items-toggle-aria-label]")?.dataset.extraItemsToggleAriaLabel;Object.entries({role:'menuitem',href:'#',class:'nav-link dropdown-toggle o-no-caret','data-bs-toggle':'dropdown','aria-expanded':false,'aria-label':extraItemsToggleAriaLabel||" ",}
117).forEach(([key,value])=>{extraItemsToggleLink.setAttribute(key,value);});extraItemsToggleLink.appendChild(extraItemsToggleIcon);extraItemsToggle.appendChild(extraItemsToggleLink);extraItemsToggle.appendChild(dropdownMenu);el.insertBefore(extraItemsToggle,target);if(!options.autoClose()){extraItemsToggleLink.setAttribute("data-bs-auto-close","outside");}
118return dropdownMenu;}
119function _afterImagesLoading(images){const defs=images.map((image)=>{if(image.complete||!image.getClientRects().length){return null;}
120return new Promise(function(resolve,reject){if(!image.width){image.classList.add('o_menu_image_placeholder');}
121image.addEventListener('load',()=>{image.classList.remove('o_menu_image_placeholder');resolve();});});});return Promise.all(defs);}
122function _getExtraMenuEl(){return el.querySelector(".o_extra_menu_items .dropdown-toggle");}
123function _endAutoMoreMenu(){const extraMenuEl=_getExtraMenuEl();if(extraMenuEl&&isExtraMenuOpen){extraMenuEl.click();}
124el.classList.remove(...options.loadingStyleClasses);}}
125document.addEventListener('DOMContentLoaded',async()=>{const header=document.querySelector('header#top');if(header){const topMenu=header.querySelector("#top_menu, .top_menu");const unfoldable=".divider, .divider ~ li, .o_no_autohide_item, .js_language_selector";if(!topMenu.querySelector(`:scope > :not(${unfoldable})`)||header.classList.contains("o_no_autohide_menu")){topMenu.classList.remove('o_menu_loading');return;}
126const excludedImagesSelector='.o_mega_menu, .o_offcanvas_logo_container, .o_lang_flag';const excludedImages=[...header.querySelectorAll(excludedImagesSelector)];const images=[...header.querySelectorAll('img')].filter((img)=>{excludedImages.forEach(node=>{if(node.contains(img)){return false;}});return img.matches&&!img.matches(excludedImagesSelector);});autoHideMenu(topMenu,{unfoldable:unfoldable,images:images,loadingStyleClasses:['o_menu_loading'],autoClose:()=>!document.body.classList.contains("editor_enable"),});}});return __exports;});;
127
128/* /website/static/src/js/content/redirect.js */
129odoo.define('@website/js/content/redirect',['@web/session'],function(require){'use strict';let __exports={};const{session}=require('@web/session');document.addEventListener('DOMContentLoaded',()=>{if(session.is_website_user){return;}
130if(!window.frameElement){const frontendToBackendNavEl=document.querySelector('.o_frontend_to_backend_nav');if(frontendToBackendNavEl){frontendToBackendNavEl.classList.add('d-flex');frontendToBackendNavEl.classList.remove('d-none');}
131const currentUrl=new URL(window.location.href);currentUrl.pathname=`/@${currentUrl.pathname}`;if(currentUrl.searchParams.get('enable_editor')||currentUrl.searchParams.get('edit_translations')){document.body.innerHTML='';window.location.replace(currentUrl.href);return;}
132const backendEditBtnEl=document.querySelector('.o_frontend_to_backend_edit_btn');if(backendEditBtnEl){backendEditBtnEl.href=currentUrl.href;document.addEventListener("keydown",ev=>{if(ev.key==="a"&&ev.altKey){currentUrl.searchParams.set('enable_editor',1);window.location.replace(currentUrl.href);}},true);}}else{const backendUserDropdownLinkEl=document.getElementById('o_backend_user_dropdown_link');
132if(backendUserDropdownLinkEl){backendUserDropdownLinkEl.classList.add('d-none');backendUserDropdownLinkEl.classList.remove('d-flex');}
133window.frameElement.dispatchEvent(new CustomEvent('OdooFrameContentLoaded'));}});return __exports;});;
134
135/* /website/static/src/js/content/adapt_content.js */
136odoo.define('@website/js/content/adapt_content',[],function(require){'use strict';let __exports={};document.addEventListener('DOMContentLoaded',()=>{const htmlEl=document.documentElement;const editTranslations=!!htmlEl.dataset.edit_translations;if(editTranslations){[...document.querySelectorAll('textarea')].map(textarea=>{if(textarea.value.indexOf('data-oe-translation-initial-sha')!==-1){textarea.classList.add('o_text_content_invisible');}});}
137const searchModalEl=document.querySelector("header#top .modal#o_search_modal");if(searchModalEl){const mainEl=document.querySelector("main");const searchDivEl=document.createElement('div');searchDivEl.id="o_search_modal_block";searchDivEl.appendChild(searchModalEl);mainEl.appendChild(searchDivEl);}});return __exports;});;
138
139/* /website/static/src/js/content/generate_video_iframe.js */
140odoo.define('@website/js/content/generate_video_iframe',[],function(require){'use strict';let __exports={};const SUPPORTED_DOMAINS=["youtu.be","youtube.com","youtube-nocookie.com","instagram.com","vine.co","player.vimeo.com","vimeo.com","dailymotion.com",];__exports.escape=escape;function escape(str){if(!str){return"";}
141for(const[unescaped,escaped]of[["&","&amp;"],["<","&lt;"],[">","&gt;"],["'","&#x27;"],['"',"&quot;"],["`","&#x60;"],]){str=str.replaceAll(unescaped,escaped);}
142return str;}
143__exports.generateVideoIframe=generateVideoIframe;function generateVideoIframe(parentEl){parentEl.replaceChildren();const extraEditionEl=document.createElement("div");extraEditionEl.className="css_editable_mode_display";const extraSizeEl=document.createElement("div");extraSizeEl.className="media_iframe_video_size";parentEl.append(extraEditionEl,extraSizeEl);const src=escape(parentEl.dataset.oeExpression||parentEl.dataset.src);const m=src.match(/^(?:https?:)?\/\/([^/?#]+)/);if(!m){return;}
144const domain=m[1].replace(/^www\./,"");if(!SUPPORTED_DOMAINS.includes(domain)){return;}
145const iframeEl=document.createElement("iframe");iframeEl.setAttribute("src",src);iframeEl.setAttribute("frameborder","0");iframeEl.setAttribute("allowfullscreen","allowfullscreen");parentEl.appendChild(iframeEl);return iframeEl;}
146document.addEventListener("DOMContentLoaded",()=>{for(const videoIframeEl of document.querySelectorAll(".media_iframe_video")){if(!videoIframeEl.querySelector(":scope > iframe")){generateVideoIframe(videoIframeEl);}}});return __exports;});

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.