vendor: 3,457 bytes, lines 1-2
1/*! For license information please see header.module.js.LICENSE.txt */ 2const config={prefix:"fr",namespace:"dsfr",organisation:"@gouvfr",version:"1.14.0"},api=window[config.namespace],HeaderSelector={HEADER:api.internals.ns.selector("header"),BRAND_LINK:api.internals.ns.selector("header__brand a"),TOOLS_LINKS:api.internals.ns.selector("header__tools-links"),MENU_LINKS:api.internals.ns.selector("header__menu-links"),BUTTONS:`${api.internals.ns.selector("header__tools-links")} ${api.internals.ns.selector("btns-group")}, ${api.internals.ns.selector("header__tools-links")} ${api.internals.ns.selector("links-group")}`,MODALS:`${api.internals.ns.selector("header__search")}${api.internals.ns.selector("modal")}, ${api.internals.ns.selector("header__menu")}${api.internals.ns.selector("modal")}`};class HeaderLinks extends api.core.Instance{static get instanceClassName(){return"HeaderLinks"}init(){const e=this.queryParentSelector(HeaderSelector.HEADER);this.toolsLinks=e.querySelector(HeaderSelector.TOOLS_LINKS),this.menuLinks=e.querySelector(HeaderSelector.MENU_LINKS);const a="-mobile",t=this.toolsLinks.innerHTML.replace(/ +/g," "),i=this.menuLinks.innerHTML.replace(/ +/g," ");let s=t.match(/id="(.*?)"/gm)||[];s=s.map((e=>e.replace('id="',"").replace('"',"")));const r=["aria-controls","aria-describedby","aria-labelledby"];let n=t.replace(/id="(.*?)"/gm,`id="$1${a}"`);for(const e of r){const i=t.match(new RegExp(`${e}="(.*?)"`,"gm"));if(i)for(const t of i){const i=t.replace(`${e}="`,"").replace('"',"");s.includes(i)&&(n=n.replace(`${e}="${i}"`,`${e}="${i+a}"`))}}if(n!==i)switch(api.mode){case api.Modes.ANGULAR:case api.Modes.REACT:case api.Modes.VUE:this.warn(`header__tools-links content is different from header__menu-links content.\nAs you're using a dynamic framework, you should handle duplication of this content yourself, please refer to documentation:\n${api.header.doc}`);break;default:this.menuLinks.innerHTML=n}}}class HeaderModal extends api.core.Instance{static get instanceClassName(){return"HeaderModal"}init(){this.storeAria(),this.isResizing=!0}resize(){this.isBreakpoint(api.core.Breakpoints.LG)?this.deactivateModal():this.activateModal()}activateModal(){const e=this.element.getInstance("Modal");e?(this.restoreAria(),e.isActive=!0,this.listenClick({capture:!0})):this.request(this.activateModal.bind(this))}deactivateModal(){const e=this.element.getInstance("Modal");e?(e.conceal(),e.isActive=!1,this.storeAria(),this.unlistenClick({capture:!0})):this.request(this.deactivateModal.bind(this))}storeAria(){this.hasAttribute("aria-labelledby")&&(this._ariaLabelledby=this.getAttribute("aria-labelledby")),this.hasAttribute("aria-label")&&(this._ariaLabel=this.getAttribute("aria-label")),this.removeAttribute("aria-labelledby"),this.removeAttribute("aria-label")}restoreAria(){this._ariaLabelledby&&this.setAttribute("aria-labelledby",this._ariaLabelledby),this._ariaLabel&&this.setAttribute("aria-label",this._ariaLabel)}handleClick(e){if(e.target.matches("a, button")&&!e.target.matches("[aria-controls]")&&!e.target.matches(api.core.DisclosureSelector.PREVENT_CONCEAL)){this.element.getInstance("Modal").conceal()}}}api.header={HeaderLinks,HeaderModal,HeaderSelector,doc:"https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/en-tete"},api.internals.register(api.header.HeaderSelector.TOOLS_LINKS,api.header.HeaderLinks),api.internals.register(api.header.HeaderSelector.MODALS,api.header.HeaderModal);
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.