{"version":3,"file":"dsfr.module.js","sources":["../../src/core/config.js","../../src/core/api.js","../../src/core/scripts/global/namespace.js","../../src/core/scripts/manipulation/classes.js","../../src/core/scripts/engine/render/renderer.js","../../src/core/scripts/engine/engine.js","../../src/core/scripts/global/initializer.js","../../src/core/scripts/engine/instantiate/instance.js","../../src/core/scripts/disclosure/constants.js","../../src/core/scripts/disclosure/disclosures-group.js","../../src/core/scripts/disclosure/disclosure-button.js","../../src/core/scripts/disclosure/events.js","../../src/core/scripts/disclosure/disclosure.js","../../src/core/scripts/disclosure/disclosure-types.js","../../src/core/scripts/key-listener/key-listener.js","../../src/core/scripts/collapse/constants.js","../../src/core/scripts/collapse/collapse.js","../../src/core/scripts/manipulation/size.js","../../src/core/index.js","../../src/core/scripts/collapse/build.js","../../src/core/scripts/module.js","../../src/accordions/scripts/accordion/constants.js","../../src/accordions/scripts/accordion/accordions-group.js","../../src/accordions/index.js","../../src/accordions/scripts/module.js","../../src/breadcrumb/scripts/breadcrumb/constants.js","../../src/breadcrumb/scripts/breadcrumb/breadcrumb.js","../../src/breadcrumb/scripts/breadcrumb/build.js","../../src/breadcrumb/scripts/module.js","../../src/buttons/scripts/buttons/constants.js","../../src/buttons/scripts/buttons/build.js","../../src/buttons/scripts/module.js","../../src/modal/scripts/modal/constants.js","../../src/modal/scripts/modal/focus-trap.js","../../src/modal/scripts/modal/modals-group.js","../../src/modal/scripts/modal/modal.js","../../src/modal/index.js","../../src/modal/scripts/modal/build.js","../../src/modal/scripts/module.js","../../src/navigation/scripts/navigation/constants.js","../../src/navigation/scripts/navigation/navigation.js","../../src/navigation/index.js","../../src/navigation/scripts/module.js","../../src/schemes/scripts/scheme/constants.js","../../src/schemes/scripts/scheme/scheme.js","../../src/schemes/index.js","../../src/schemes/scripts/switch-theme/constants.js","../../src/schemes/scripts/scheme/build.js","../../src/schemes/scripts/switch-theme/switch-theme.js","../../src/schemes/scripts/switch-theme/build.js","../../src/schemes/scripts/module.js","../../src/sidemenu/scripts/sidemenu/constants.js","../../src/sidemenu/scripts/module.js","../../src/table/scripts/table/constants.js","../../src/table/scripts/table/table.js","../../src/table/index.js","../../src/table/scripts/table/build.js","../../src/table/scripts/module.js","../../src/tabs/scripts/tabs/tab-button.js","../../src/tabs/scripts/tabs/constants.js","../../src/tabs/scripts/tabs/tabs-group.js","../../src/tabs/scripts/tabs/tab.js","../../src/tabs/index.js","../../src/tabs/scripts/tabs/build.js","../../src/tabs/scripts/module.js","../../src/header/scripts/header/constants.js","../../src/header/scripts/header/header.js","../../src/header/index.js","../../src/header/scripts/header/build.js","../../src/header/scripts/module.js"],"sourcesContent":["export const prefix = 'fr';\r\nexport const namespace = 'dsfr';\r\nexport const organisation = '@gouvfr';\r\n","import { namespace } from './config.js';\n\nconst api = window[namespace] || { core: {} };\nwindow[namespace] = api;\nexport default api;\n","import { prefix, namespace } from '../../config.js';\n\nexport const ns = (name) => `${prefix}-${name}`;\n\nns.selector = (name, notation) => {\n if (notation === undefined) notation = '.';\n return `${notation}${ns(name)}`;\n};\n\nns.attr = (name, quoted, value) => `data-${ns(name)}`;\n\nns.attr.selector = (name, value) => {\n let result = ns.attr(name);\n if (value !== undefined) result += `=\"${value}\"`;\n return `[${result}]`;\n};\n\nns.event = (type) => `${namespace}.${type}`;\n","const modifiyClass = (element, className, remove) => {\n if (className.charAt(0) === '.') className = className.substr(1);\n const classNames = element.className.split(' ');\n const index = classNames.indexOf(className);\n if (remove === true) {\n if (index > -1) classNames.splice(index, 1);\n } else if (index === -1) classNames.push(className);\n element.className = classNames.join(' ');\n};\n\nconst addClass = (element, className) => modifiyClass(element, className);\n\nexport { addClass };\n\nconst removeClass = (element, className) => modifiyClass(element, className, true);\n\nexport { removeClass };\n","class Renderer {\n constructor () {\n this.closures = [];\n this.nexts = [];\n this.rendering = this.render.bind(this);\n this.render();\n }\n\n add (closure) {\n this.closures.push(closure);\n const remove = () => {\n const index = this.closures.indexOf(closure);\n if (index !== -1) this.closures.splice(index, 1);\n };\n return remove;\n }\n\n next (closure, frame) {\n frame = frame === undefined ? 0 : frame - 1;\n if (this.nexts[frame] === undefined) this.nexts[frame] = [];\n this.nexts[frame].push(closure);\n }\n\n render () {\n window.requestAnimationFrame(this.rendering);\n for (const closure of this.closures) closure.call();\n const nexts = this.nexts.shift();\n if (nexts) {\n for (const closure of nexts) closure.call();\n }\n }\n}\n\nexport { Renderer };\n","import { Renderer } from './render/renderer';\n\n// TODO: initializer et renderer en 1, avec muttation observer pour ajouter et retirer les instances des objets attendus en fonctions de selecteurs spécifiques\nclass Engine {\n constructor () {\n this.renderer = new Renderer();\n // this.instantier = new Instancier();\n }\n\n register (selector, factory) {\n\n }\n\n start () {\n // this.renderer.start();\n }\n\n stop () {\n // this.renderer.stop();\n }\n}\n\nconst engine = new Engine();\n\nexport default engine;\n","class Initializer {\n constructor (selector, builders) {\n this.selector = selector;\n this.builders = builders;\n this.instances = [];\n\n if (document.readyState !== 'loading') window.requestAnimationFrame(this.start.bind(this));\n else document.addEventListener('DOMContentLoaded', this.start.bind(this));\n }\n\n start () {\n if (this.instances.length > 0) return;\n\n if (document.querySelectorAll(this.selector).length > 0) {\n for (let i = 0; i < this.builders.length; i++) {\n this.instances.push(this.builders[i]());\n }\n }\n }\n}\n\nexport { Initializer };\n","const instances = { };\nconst elements = { };\nlet count = 0;\n\nconst getElementId = (element) => {\n for (const id in elements) if (elements[id] === element) return id;\n count++;\n const id = count;\n elements[id] = element;\n return id;\n};\n\nclass Instance {\n constructor (element, isResizing, isRendering) {\n const id = getElementId(element);\n if (!instances[id]) instances[id] = [];\n instances[id].push(this);\n this.element = element;\n this.id = element.id;\n this._isRendering = false;\n this._isResizing = false;\n this.listeners = {};\n\n this.isResizing = isResizing;\n this.isRendering = isRendering;\n }\n\n dispatch (type, data) {\n const event = new CustomEvent(type, data);\n this.element.dispatchEvent(event);\n }\n\n listen (type, closure) {\n if (!this.listeners[type]) this.listeners[type] = [];\n if (this.listeners[type].indexOf(closure) > -1) return;\n this.listeners[type].push(closure);\n this.element.addEventListener(type, closure);\n }\n\n unlisten (type, closure) {\n if (!type) {\n for (const type in this.listeners) this.unlisten(type);\n } else if (!closure) {\n if (!this.listeners[type]) return;\n for (const closure of this.listeners[type]) this.element.removeEventListener(closure);\n this.listeners[type].length = 0;\n } else {\n if (!this.listeners[type]) return;\n const index = this.listeners[type].indexOf(closure);\n if (index > -1) this.listeners[type].splice(index, 1);\n this.element.removeEventListener(closure);\n }\n }\n\n get isRendering () { return this._isRendering; }\n\n set isRendering (value) {\n if (this._isRendering === value) return;\n this._isRendering = value;\n // TODO add & remove rendering\n }\n\n render () {}\n\n get isResizing () { return this._isResizing; }\n\n set isResizing (value) {\n if (this._isResizing === value) return;\n this._isResizing = value;\n // TODO add & remove resizing\n }\n\n resize () {}\n\n destroy () {}\n\n static getInstances (element, instanceClass) {\n const id = getElementId(element);\n if (!instances[id]) return null;\n else if (!instanceClass) return instances[id];\n else return instances[id].filter((instance) => instance instanceof instanceClass);\n }\n}\n\nexport { Instance };\n","import { ns } from '../global/namespace.js';\n\nexport const GROUP_ATTR = ns.attr('group');\n","import { GROUP_ATTR } from './constants.js';\n\nconst groups = [];\n\nclass DisclosuresGroup {\n constructor (id, element) {\n this.id = id;\n this.element = element;\n this.members = [];\n this._index = -1;\n this._current = null;\n groups.push(this);\n }\n\n static getGroupById (id) {\n for (const group of groups) if (group.constructor === this && group.id === id) return group;\n return new this(id);\n }\n\n static getGroupByElement (element) {\n for (const group of groups) if (group.element === element) return group;\n return new this(false, element);\n }\n\n static groupById (member, groupConstructor) {\n const id = member.element.getAttribute(GROUP_ATTR);\n if (id === null) return;\n\n const group = groupConstructor.getGroupById(id);\n group.add(member);\n }\n\n static groupByParent (member, GroupConstructor, groupSelector) {\n if (groupSelector === undefined) groupSelector = GroupConstructor.selector;\n if (groupSelector === '') return;\n let element = member.element.parentElement;\n\n while (element) {\n if (element.classList.contains(member.constructor.selector)) return;\n\n if (element.classList.contains(groupSelector)) {\n const group = GroupConstructor.getGroupByElement(element);\n group.add(member);\n return;\n }\n element = element.parentElement;\n }\n }\n\n static get selector () { return ''; }\n\n add (member) {\n if (this.members.indexOf(member) !== -1) return;\n this.members.push(member);\n member.setGroup(this);\n\n switch (true) {\n case this.current !== null:\n case !member.disclosed && !(member.primary && member.primary.disclosed):\n member.disclosed = false;\n break;\n\n default:\n this._current = member;\n this._index = this.members.indexOf(member);\n member.disclosed = true;\n }\n }\n\n get length () { return this.members.length; }\n\n get index () { return this._index; }\n\n set index (value) {\n if (value < -1 || value >= this.length || this._index === value) return;\n if (this.current !== null) this.current.conceal(true, true);\n this._index = value;\n this._current = this._index > -1 ? this.members[this._index] : null;\n if (this.current !== null) this.current.disclose(true);\n this.apply();\n }\n\n get current () { return this._current; }\n\n set current (member) {\n this.index = this.members.indexOf(member);\n }\n\n get hasFocus () {\n if (this.current === undefined) return null;\n return this.current.hasFocus;\n }\n\n apply () {}\n}\n\nexport { DisclosuresGroup };\n","class DisclosureButton {\n constructor (element, disclosure) {\n this.element = element;\n this.disclosure = disclosure;\n this.hasAttribute = this.element.hasAttribute(this.disclosure.attributeName);\n this.element.addEventListener('click', this.click.bind(this));\n this.observer = new MutationObserver(this.mutate.bind(this));\n this.observe();\n }\n\n observe () {\n this.observer.observe(this.element, { attributes: true });\n }\n\n click (e) {\n this.disclosure.change(this.hasAttribute);\n }\n\n mutate (mutations) {\n mutations.forEach((mutation) => {\n if (mutation.type === 'attributes' && mutation.attributeName === this.disclosure.attributeName) this.disclosure.change(this.disclosed);\n });\n }\n\n apply (value) {\n if (!this.hasAttribute) return;\n if (this.observer) this.observer.disconnect();\n this.element.setAttribute(this.disclosure.attributeName, value);\n if (this.observer) this.observe();\n }\n\n get disclosed () {\n return this.element.getAttribute(this.disclosure.attributeName) === 'true';\n }\n\n get hasFocus () {\n return this.element === document.activeElement;\n }\n}\n\nexport { DisclosureButton };\n","import { ns } from '../global/namespace.js';\n\nexport const DISCLOSE_EVENT = ns.event('DISCLOSE');\nexport const CONCEAL_EVENT = ns.event('CONCEAL');\n","import { DisclosuresGroup } from './disclosures-group.js';\nimport { DisclosureButton } from './disclosure-button.js';\nimport { addClass, removeClass } from '../manipulation/classes.js';\nimport { ns } from '../global/namespace.js';\nimport { Instance } from '../engine/instantiate/instance';\nimport { CONCEAL_EVENT, DISCLOSE_EVENT } from './events';\n\nconst disclosures = [];\n\nclass Disclosure extends Instance {\n constructor (element) {\n super(element);\n this.buttons = [];\n this._selector = this.constructor.selector;\n this.modifier = this._selector + '--' + this.type.id;\n this.attributeName = this.type.ariaState ? 'aria-' + this.type.id : ns.attr(this.type.id);\n this.pristine = true;\n\n const buttons = document.querySelectorAll(this.type.ariaControls ? `[aria-controls=\"${this.id}\"]` : ns.attr.selector('controls', this.id));\n\n if (buttons.length > 0) for (let i = 0; i < buttons.length; i++) this.addButton(buttons[i]);\n\n this.disclosed = this.primary && this.primary.disclosed;\n\n this.gather();\n }\n\n gather () {\n if (this.group) return;\n\n DisclosuresGroup.groupById(this, this.GroupConstructor);\n DisclosuresGroup.groupByParent(this, this.GroupConstructor);\n }\n\n static build (from) {\n const elements = Array.prototype.slice.call(from.querySelectorAll(`.${this.selector}`));\n\n for (const element of elements) disclosures.push(new this(element));\n }\n\n get type () { return this.constructor.type; }\n\n static get type () { return null; }\n\n static get selector () { return ''; }\n\n addButton (element) {\n const button = this.buttonFactory(element);\n if (button.hasAttribute) {\n if (this.primary === undefined) {\n this.primary = button;\n } else button.apply(this.primary.disclosed);\n }\n this.buttons.push(button);\n }\n\n get GroupConstructor () { return DisclosuresGroup; }\n\n buttonFactory (button) {\n return new DisclosureButton(button, this);\n }\n\n disclose (withhold) {\n if (this.disclosed) return false;\n this.pristine = false;\n this.disclosed = true;\n if (!withhold && this.group !== undefined) this.group.current = this;\n return true;\n }\n\n conceal (withhold, preventFocus) {\n if (!this.disclosed) return false;\n this.pristine = false;\n this.disclosed = false;\n if (!preventFocus) this.focus();\n if (!withhold && this.group !== undefined) this.group.current = null;\n for (const disclosure of disclosures) if (disclosure !== this && this.element.contains(disclosure.element)) disclosure.reset();\n return true;\n }\n\n get disclosed () {\n return this._disclosed;\n }\n\n set disclosed (value) {\n if (this._disclosed === value) return;\n this.dispatch(value ? DISCLOSE_EVENT : CONCEAL_EVENT, this.type);\n this._disclosed = value;\n if (value) addClass(this.element, this.modifier);\n else removeClass(this.element, this.modifier);\n for (let i = 0; i < this.buttons.length; i++) this.buttons[i].apply(value);\n }\n\n reset () {}\n\n change (hasAttribute) {\n if (!this.constructor.type.canConceal) this.disclose();\n else {\n switch (true) {\n case !hasAttribute:\n case this.disclosed:\n this.conceal();\n break;\n\n default:\n this.disclose();\n }\n }\n }\n\n setGroup (group) {\n this.group = group;\n }\n\n get buttonHasFocus () {\n if (this.buttons.some((button) => { return button.hasFocus; })) return true;\n return false;\n }\n\n get hasFocus () {\n if (this.element === document.activeElement) return true;\n if (this.element.querySelectorAll(':focus').length > 0) return true;\n return this.buttonHasFocus;\n }\n\n focus () {\n for (let i = 0; i < this.buttons.length; i++) {\n const button = this.buttons[i];\n if (button.hasAttribute) {\n button.element.focus();\n return;\n }\n }\n }\n}\n\nDisclosure.DISCLOSE_EVENT = DISCLOSE_EVENT;\nDisclosure.CONCEAL_EVENT = CONCEAL_EVENT;\n\nexport { Disclosure };\n","export const DISCLOSURE_TYPES = {\n expand: {\n id: 'expanded',\n ariaState: true,\n ariaControls: true,\n canConceal: true\n },\n select: {\n id: 'selected',\n ariaState: true,\n ariaControls: true,\n canConceal: false\n },\n opened: {\n id: 'opened',\n ariaState: false,\n ariaControls: true,\n canConceal: true\n }\n};\n","/**\n * Utilitaire de gestion des évenements clavier\n * Utiliser KeyListener.add() pour ajouter un event listener\n */\nclass KeyListener {\n constructor (element) {\n this.element = element;\n this.collections = {};\n }\n\n /**\n * key: la touche de clavier\n * closure: la function à appliquer\n * type: event type, optionnel, si c'est en down, up ou press\n * stopPropagation: Boolean, permet d'empêcher le comportement par default de l'evenement\n */\n _add (type, action) {\n if (this.collections[type] === undefined) this.collections[type] = new KeyActionCollection(type, this.element);\n this.collections[type].add(action);\n }\n\n down (key, closure, preventDefault, stopPropagation) {\n this._add('down', new KeyAction(key, closure, preventDefault, stopPropagation));\n }\n\n up (key, closure, preventDefault, stopPropagation) {\n this._add('up', new KeyAction(key, closure, preventDefault, stopPropagation));\n }\n\n dispose () {\n for (const collection of this.collections) collection.dispose();\n this.types = null;\n }\n}\n\nclass KeyActionCollection {\n constructor (type, element) {\n this.type = type;\n this.element = element;\n this.actions = [];\n this.binding = this.handle.bind(this);\n this.element.addEventListener('key' + type, this.binding);\n }\n\n add (action) {\n this.actions.push(action);\n }\n\n handle (e) {\n for (const action of this.actions) action.handle(e);\n }\n\n dispose () {\n this.element.removeEventListener('key' + this.type, this.binding);\n this.actions = null;\n }\n}\n\nclass KeyAction {\n constructor (key, closure, preventDefault, stopPropagation) {\n this.key = key;\n this.closure = closure;\n this.preventDefault = preventDefault === true;\n this.stopPropagation = stopPropagation === true;\n }\n\n handle (e) {\n if (e.keyCode === this.key) {\n this.closure(e);\n if (this.preventDefault) {\n e.preventDefault();\n }\n if (this.stopPropagation) {\n e.stopPropagation();\n }\n }\n }\n}\n\nKeyListener.TAB = 9;\nKeyListener.ESCAPE = 27;\nKeyListener.END = 35;\nKeyListener.HOME = 36;\nKeyListener.LEFT = 37;\nKeyListener.UP = 38;\nKeyListener.RIGHT = 39;\nKeyListener.DOWN = 40;\n\nexport { KeyListener };\n","import { ns } from '../global/namespace.js';\n\nexport const COLLAPSE_CLASS = ns('collapse');\n","import { Disclosure } from '../disclosure/disclosure.js';\nimport { DisclosuresGroup } from '../disclosure/disclosures-group.js';\nimport { COLLAPSE_CLASS } from './constants.js';\nimport { DISCLOSURE_TYPES } from '../disclosure/disclosure-types.js';\n\nconst collapses = [];\nconst ascendants = {};\n\n/**\n * Tab coorespond au panel d'un élement Tabs (tab panel)\n * Tab étend disclosure qui ajoute/enleve le modifier --selected,\n * et ajoute/eleve l'attribut hidden, sur le panel\n */\nclass Collapse extends Disclosure {\n constructor (element) {\n super(element);\n collapses.push(this);\n this.requesting = this.request.bind(this);\n element.addEventListener('transitionend', this.transitionend.bind(this));\n if (this.disclosed) this.unbound();\n }\n\n gatherByAscendants () {\n if (this.group) return;\n\n for (const ascendant in ascendants) {\n let element = this.element.parentElement;\n\n while (element) {\n if (element.classList.contains(ascendant)) {\n if (typeof ascendants[ascendant] === 'string') {\n DisclosuresGroup.groupByParent(this, DisclosuresGroup, ascendants[ascendant]);\n } else {\n DisclosuresGroup.groupByParent(this, ascendants[ascendant]);\n }\n return;\n }\n\n element = element.parentElement;\n }\n }\n }\n\n gather () {\n this.gatherByAscendants();\n super.gather();\n }\n\n static get type () { return DISCLOSURE_TYPES.expand; }\n static get selector () { return COLLAPSE_CLASS; }\n\n static register (ascendant, groupSelector) {\n ascendants[ascendant] = groupSelector;\n for (const collapse of collapses) collapse.gatherByAscendants();\n }\n\n transitionend (e) {\n if (!this.disclosed) this.element.style.maxHeight = '';\n }\n\n unbound () {\n this.element.style.maxHeight = 'none';\n }\n\n disclose (withhold) {\n if (this.disclosed) return;\n this.unbound();\n this.adjust();\n this.requested = () => { super.disclose(withhold); };\n window.requestAnimationFrame(this.requesting);\n }\n\n conceal (withhold, preventFocus) {\n if (!this.disclosed) return;\n this.adjust();\n this.requested = () => { super.conceal(withhold, preventFocus); };\n window.requestAnimationFrame(this.requesting);\n }\n\n request () {\n if (this.requested) this.requested();\n this.requested = null;\n }\n\n adjust () {\n this.element.style.setProperty('--collapser', 'none');\n const height = this.element.offsetHeight;\n this.element.style.setProperty('--collapse', -height + 'px');\n this.element.style.setProperty('--collapser', '');\n }\n\n reset () {\n if (!this.pristine) this.disclosed = false;\n }\n}\n\nexport { Collapse };\n","class EquisizedGroup {\n constructor (selector, groups) {\n this.selector = selector;\n this.groups = typeof groups === 'string' ? document.querySelectorAll(groups) : groups;\n\n for (let i = 0; i < this.groups.length; i++) {\n this.equisizedGroups.push(new Equisized(this.selector, this.groups[i]));\n }\n\n this.changing = this.change.bind(this);\n window.addEventListener('resize', this.changing);\n this.change();\n }\n\n change () {\n for (let i = 0; i < this.equisizedGroups.length; i++) {\n this.equisizedGroups[i].change();\n }\n }\n}\n\nclass Equisized {\n constructor (selector, group) {\n this.selector = selector;\n this.group = group;\n this.elements = this.group.querySelectorAll(this.selector);\n this.maxWidth = 0;\n\n this.changing = this.change.bind(this);\n window.addEventListener('resize', this.changing);\n window.addEventListener('load', this.changing); // fix change before css load\n // this.change();\n }\n\n change () {\n this.reset();\n for (let i = 0; i < this.elements.length; i++) {\n const tmpWWidth = this._getWidth(this.elements[i]);\n if (tmpWWidth > this.maxWidth) {\n this.maxWidth = tmpWWidth;\n }\n }\n this.apply();\n }\n\n apply () {\n for (let i = 0; i < this.elements.length; i++) {\n this.elements[i].style.width = this.maxWidth + 1 + 'px';\n }\n }\n\n reset () {\n for (let i = 0; i < this.elements.length; i++) {\n this.elements[i].style.width = 'auto';\n }\n this.maxWidth = 0;\n }\n\n _getWidth (el) {\n let width = el.offsetWidth;\n const style = getComputedStyle(el);\n width += parseInt(style.marginLeft) + parseInt(style.marginRight);\n return width;\n }\n}\n\nexport { Equisized, EquisizedGroup };\n","import api from './api.js';\nimport { ns } from './scripts/global/namespace.js';\nimport { addClass, removeClass } from './scripts/manipulation/classes.js';\nimport engine from './scripts/engine/engine.js';\nimport { Initializer } from './scripts/global/initializer.js';\nimport { Instance } from './scripts/engine/instantiate/instance.js';\n\nimport { Disclosure } from './scripts/disclosure/disclosure.js';\nimport { DisclosureButton } from './scripts/disclosure/disclosure-button.js';\nimport { DisclosuresGroup } from './scripts/disclosure/disclosures-group.js';\nimport { DISCLOSURE_TYPES } from './scripts/disclosure/disclosure-types.js';\n\nimport { KeyListener } from './scripts/key-listener/key-listener.js';\nimport { Collapse } from './scripts/collapse/collapse.js';\nimport { Equisized } from './scripts/manipulation/size.js';\n\napi.core.ns = ns;\napi.core.addClass = addClass;\napi.core.removeClass = removeClass;\napi.core.engine = engine;\napi.core.Instance = Instance;\napi.core.Initializer = Initializer;\napi.core.Disclosure = Disclosure;\napi.core.DisclosureButton = DisclosureButton;\napi.core.DisclosuresGroup = DisclosuresGroup;\napi.core.DISCLOSURE_TYPES = DISCLOSURE_TYPES;\n\napi.KeyListener = KeyListener;\napi.Collapse = Collapse;\napi.Equisized = Equisized;\n\nexport default api;\n","import { Collapse } from './collapse.js';\n\nconst build = () => {\n Collapse.build(document);\n};\n\nexport default build;\n","/* eslint-disable no-new */\nimport { Initializer } from './global/initializer.js';\nimport build from './collapse/build.js';\nimport { COLLAPSE_CLASS } from './collapse/constants.js';\n\nnew Initializer(`.${COLLAPSE_CLASS}`, [build]);\n","import api from '../../api.js';\n\nexport const ACCORDIONS_GROUP = api.core.ns('accordions-group');\nexport const ACCORDION_ASCENDANT = api.core.ns('accordion');\n","import api from '../../api.js';\nimport { ACCORDIONS_GROUP } from './constants.js';\n\nclass AccordionsGroup extends api.core.DisclosuresGroup {\n static get selector () { return ACCORDIONS_GROUP; }\n}\n\nexport { AccordionsGroup };\n","import api from './api.js';\nimport { AccordionsGroup } from './scripts/accordion/accordions-group.js';\n\napi.AccordionsGroup = AccordionsGroup;\n\nexport default api;\n","import api from '../api.js';\nimport { ACCORDION_ASCENDANT } from './accordion/constants.js';\nimport { AccordionsGroup } from './accordion/accordions-group.js';\n\napi.Collapse.register(ACCORDION_ASCENDANT, AccordionsGroup);\n","import api from '../../api.js';\n\nexport const BREADCRUMB_COLLAPSE_SELECTOR = `${api.core.ns.selector('breadcrumb')} ${api.core.ns.selector('collapse')}`;\n","import api from '../../api.js';\n\nclass Breadcrumb extends api.core.Instance {\n constructor (element) {\n super(element);\n this.collapse = api.core.Instance.getInstances(element, api.Collapse)[0];\n this.links = [...this.element.querySelectorAll('a[href]')];\n this.count = 0;\n if (this.links.length) {\n this.listen(api.core.Disclosure.DISCLOSE_EVENT, this.focus.bind(this));\n // TODO: refactor avec instance\n this.resizing = this.resize.bind(this);\n window.addEventListener('resize', this.resizing);\n }\n }\n\n focus () {\n this.links[0].focus();\n api.core.engine.renderer.next(() => { this.verify(); });\n }\n\n verify () {\n this.count++;\n if (this.count > 100) return;\n if (document.activeElement !== this.links[0]) this.focus();\n }\n\n resize () {\n if (window.matchMedia('(min-width: 48em)').matches) {\n if (this.collapse.buttons[0] === document.activeElement) this.links.focus();\n } else {\n if (this.links.indexOf(document.activeElement) > -1) this.collapse.focus();\n }\n }\n}\n\nexport { Breadcrumb };\n","import { BREADCRUMB_COLLAPSE_SELECTOR } from './constants';\nimport { Breadcrumb } from './breadcrumb';\n\nconst build = () => {\n const breadcrumbs = [];\n const breadcrumbNodes = document.querySelectorAll(BREADCRUMB_COLLAPSE_SELECTOR);\n for (let i = 0; i < breadcrumbNodes.length; i++) breadcrumbs.push(new Breadcrumb(breadcrumbNodes[i]));\n};\n\nexport default build;\n","/* eslint-disable no-new */\nimport api from '../api.js';\nimport build from './breadcrumb/build.js';\nimport { BREADCRUMB_COLLAPSE_SELECTOR } from './breadcrumb/constants';\n\nnew api.core.Initializer(BREADCRUMB_COLLAPSE_SELECTOR, [build]);\n","import api from '../../api.js';\n\nexport const BUTTON_SELECTOR = api.core.ns.selector('btn');\nexport const BUTTONS_GROUP_SELECTOR = api.core.ns.selector('btns-group');\nexport const EQUISIZED_BUTTONS_GROUP_SELECTOR = api.core.ns.selector('btns-group--equisized');\n","import api from '../../api.js';\nimport { BUTTON_SELECTOR, EQUISIZED_BUTTONS_GROUP_SELECTOR } from './constants';\n\nconst build = () => {\n const group = document.querySelectorAll(EQUISIZED_BUTTONS_GROUP_SELECTOR);\n const arrayEquisized = [];\n for (let i = 0; i < group.length; i++) {\n arrayEquisized.push(new api.Equisized(BUTTON_SELECTOR, group[i]));\n }\n};\n\nexport default build;\n","/* eslint-disable no-new */\nimport api from '../api.js';\n\nimport build from './buttons/build.js';\nimport { BUTTONS_GROUP_SELECTOR } from './buttons/constants';\n\nnew api.core.Initializer(BUTTONS_GROUP_SELECTOR, [build]);\n","import api from '../../api.js';\n\nexport const MODAL_SELECTOR = api.core.ns.selector('modal');\nexport const MODAL_CLASS = api.core.ns('modal');\nexport const NO_SCROLL_CLASS = api.core.ns('no-scroll');\nexport const SCROLL_SHADOW_CLASS = api.core.ns('scroll-shadow');\nexport const MODAL_BODY_SELECTOR = api.core.ns.selector('modal__body');\nexport const OFFSET_MOBILE = 32; // 32px => 8v => 2rem\n","import api from '../../api.js';\n\nconst unordereds = [\n '[tabindex=\"0\"]',\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\" i])',\n 'details>summary:first-of-type',\n 'details'\n];\n\nconst UNORDEREDS = unordereds.join();\n\nconst ordereds = [\n '[tabindex]:not([tabindex=\"-1\"]):not([tabindex=\"0\"])'\n];\n\nconst ORDEREDS = ordereds.join();\n\nconst isFocusable = (element, container) => {\n if (window.getComputedStyle(element).visibility === 'hidden') return false;\n if (container === undefined) container = element;\n\n while (container.contains(element)) {\n if (window.getComputedStyle(element).display === 'none') return false;\n element = element.parentElement;\n }\n\n return true;\n};\n\nclass FocusTrap {\n constructor (onTrap, onUntrap) {\n this.element = null;\n this.activeElement = null;\n this.onTrap = onTrap;\n this.onUntrap = onUntrap;\n this.waiting = this.wait.bind(this);\n this.handling = this.handle.bind(this);\n this.current = null;\n }\n\n get trapped () { return this.element !== null; }\n\n trap (element) {\n if (this.trapped) this.untrap();\n\n this.element = element;\n this.isTrapping = true;\n this.wait();\n\n if (this.onTrap) this.onTrap();\n }\n\n wait () {\n if (!isFocusable(this.element)) {\n api.core.engine.renderer.next(this.waiting);\n return;\n }\n\n this.trapping();\n }\n\n trapping () {\n if (!this.isTrapping) return;\n this.isTrapping = false;\n const focusables = this.focusables;\n if (focusables.length) focusables[0].focus();\n this.element.setAttribute('aria-modal', true);\n window.addEventListener('keydown', this.handling);\n\n this.stunneds = [];\n // this.stun(document.body);\n }\n\n stun (node) {\n for (const child of node.children) {\n if (child === this.element) continue;\n if (child.contains(this.element)) {\n this.stun(child);\n continue;\n }\n this.stunneds.push(new Stunned(child));\n }\n }\n\n handle (e) {\n if (e.keyCode !== 9) return;\n\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n\n const index = focusables.indexOf(document.activeElement);\n\n if (e.shiftKey) {\n if (!this.element.contains(document.activeElement) || index < 1) {\n e.preventDefault();\n last.focus();\n } else if (document.activeElement.tabIndex > 0 || focusables[index - 1].tabIndex > 0) {\n e.preventDefault();\n focusables[index - 1].focus();\n }\n } else {\n if (!this.element.contains(document.activeElement) || index === focusables.length - 1 || index === -1) {\n e.preventDefault();\n first.focus();\n } else if (document.activeElement.tabIndex > 0) {\n e.preventDefault();\n focusables[index + 1].focus();\n }\n }\n }\n\n get focusables () {\n let unordereds = [...this.element.querySelectorAll(UNORDEREDS)];\n\n /**\n * filtrage des radiobutttons de même name (la navigations d'un groupe de radio se fait à la flèche et non pas au tab\n **/\n const radios = [...document.documentElement.querySelectorAll('input[type=\"radio\"]')];\n\n if (radios.length) {\n const groups = {};\n\n for (const radio of radios) {\n const name = radio.getAttribute('name');\n if (groups[name] === undefined) groups[name] = new RadioButtonGroup(name);\n groups[name].push(radio);\n }\n\n unordereds = unordereds.filter((unordered) => {\n if (unordered.tagName.toLowerCase() !== 'input' || unordered.getAttribute('type').toLowerCase() !== 'radio') return true;\n const name = unordered.getAttribute('name');\n return groups[name].keep(unordered);\n });\n }\n\n const ordereds = [...this.element.querySelectorAll(ORDEREDS)];\n\n ordereds.sort((a, b) => a.tabIndex - b.tabIndex);\n\n const noDuplicates = unordereds.filter((element) => ordereds.indexOf(element) === -1);\n const concateneds = ordereds.concat(noDuplicates);\n return concateneds.filter((element) => element.tabIndex !== '-1' && isFocusable(element, this.element));\n }\n\n untrap () {\n if (!this.trapped) return;\n this.isTrapping = false;\n\n this.element.removeAttribute('aria-modal');\n window.removeEventListener('keydown', this.handling);\n this.element = null;\n\n // for (const stunned of this.stunneds) stunned.unstun();\n // this.stunneds = [];\n\n if (this.onUntrap) this.onUntrap();\n }\n}\n\nclass Stunned {\n constructor (element) {\n this.element = element;\n this.hidden = element.getAttribute('aria-hidden');\n this.inert = element.getAttribute('inert');\n\n this.element.setAttribute('aria-hidden', true);\n this.element.setAttribute('inert', '');\n }\n\n unstun () {\n if (this.hidden === null) this.element.removeAttribute('aria-hidden');\n else this.element.setAttribute('aria-hidden', this.hidden);\n\n if (this.inert === null) this.element.removeAttribute('inert');\n else this.element.setAttribute('inert', this.inert);\n }\n}\n\nclass RadioButtonGroup {\n constructor (name) {\n this.name = name;\n this.buttons = [];\n }\n\n push (button) {\n this.buttons.push(button);\n if (button === document.activeElement || button.checked || this.selected === undefined) this.selected = button;\n }\n\n keep (button) {\n return this.selected === button;\n }\n}\n\nexport { FocusTrap };\n","import api from '../../api.js';\nimport { FocusTrap } from './focus-trap.js';\n\nclass ModalsGroup extends api.core.DisclosuresGroup {\n constructor () {\n super();\n this.trap = new FocusTrap();\n }\n\n apply (value, initial) {\n super.apply(value, initial);\n if (this.current === null) this.trap.untrap();\n else this.trap.trap(this.current.element);\n }\n}\n\nexport { ModalsGroup };\n","import api from '../../api.js';\nimport {\n OFFSET_MOBILE,\n NO_SCROLL_CLASS,\n MODAL_CLASS,\n SCROLL_SHADOW_CLASS,\n MODAL_BODY_SELECTOR\n} from './constants';\nimport { ModalsGroup } from './modals-group';\n\nconst group = new ModalsGroup();\n\nclass Modal extends api.core.Disclosure {\n constructor (element) {\n super(element);\n this.body = this.element.querySelector(MODAL_BODY_SELECTOR);\n this.scrollDistance = 0;\n this.scrolling = this.resize.bind(this, false);\n this.resizing = this.resize.bind(this, true);\n this.init();\n this.resize(true);\n }\n\n init () {\n this.element.addEventListener('click', this.click.bind(this));\n\n this.keyListener = new api.KeyListener(this.element);\n this.keyListener.down(api.KeyListener.ESCAPE, this.conceal.bind(this), true, true);\n\n if (this.body) {\n this.body.addEventListener('scroll', this.scrolling);\n window.addEventListener('resize', this.resizing);\n // window.addEventListener('orientationchange', this.resizing);\n }\n }\n\n click (e) {\n if (this.body && this.body !== e.target && !this.body.contains(e.target)) this.conceal();\n }\n\n gather () {\n group.add(this);\n }\n\n disclose (withhold) {\n if (!super.disclose(withhold)) return false;\n this.resize(true);\n this.handleScroll(false);\n return true;\n }\n\n conceal (withhold, preventFocus) {\n if (!super.conceal(withhold, preventFocus)) return false;\n this.handleScroll(true);\n return true;\n }\n\n /**\n * Fixe l'arrière plan quand la modal est ouverte\n */\n // TODO: créer une fonction de fix de scroll dans core (api.noScroll = true)\n handleScroll (isScrollable) {\n if (isScrollable) {\n api.core.removeClass(document.documentElement, NO_SCROLL_CLASS);\n document.body.style.top = '';\n window.scroll(0, this.scrollDistance);\n } else {\n if (!document.documentElement.classList.contains(NO_SCROLL_CLASS)) {\n this.scrollDistance = window.scrollY;\n }\n document.body.style.top = this.scrollDistance * -1 + 'px';\n api.core.addClass(document.documentElement, NO_SCROLL_CLASS);\n }\n }\n\n /**\n * Ajoute une ombre autour du footer lorsque l'on peut scroller dans la modale\n * corrige le 100vh, en mobile notamment, lorsque la barre navigateur est présente par exemple.\n */\n resize (isResizing, e) {\n if (!this.body) return;\n if (this.body.scrollHeight > this.body.clientHeight) {\n if (this.body.offsetHeight + this.body.scrollTop >= this.body.scrollHeight) {\n api.core.removeClass(this.body, SCROLL_SHADOW_CLASS);\n } else {\n api.core.addClass(this.body, SCROLL_SHADOW_CLASS);\n }\n } else {\n api.core.removeClass(this.body, SCROLL_SHADOW_CLASS);\n }\n\n this.isMedium = window.matchMedia('(min-width: 48em)').matches;\n\n if (isResizing) {\n if (this.isMedium) {\n this.body.style.removeProperty('max-height');\n } else {\n this.body.style.maxHeight = (window.innerHeight - OFFSET_MOBILE) + 'px';\n // Une deuxième fois après positionnement des barres du navigateur (ios)\n api.core.engine.renderer.next(() => {\n this.body.style.maxHeight = (window.innerHeight - OFFSET_MOBILE) + 'px';\n });\n }\n }\n }\n\n static get type () { return api.core.DISCLOSURE_TYPES.opened; }\n static get selector () { return MODAL_CLASS; }\n\n get GroupConstructor () { return ModalsGroup; }\n}\n\nexport { Modal };\n","import api from './api.js';\n\nimport { Modal } from './scripts/modal/modal';\nimport { ModalsGroup } from './scripts/modal/modals-group';\nimport { FocusTrap } from './scripts/modal/focus-trap';\n\napi.Modal = Modal;\napi.ModalsGroup = ModalsGroup;\napi.FocusTrap = FocusTrap;\n\nexport default api;\n","import { Modal } from './modal';\n\n/**\n * initialise tout les éléments Modal dans la page\n */\nconst build = () => {\n Modal.build(document);\n};\n\nexport { build };\n","/* eslint-disable no-new */\nimport api from '../api.js';\nimport { build } from './modal/build.js';\nimport { MODAL_SELECTOR } from './modal/constants.js';\n\nnew api.core.Initializer(MODAL_SELECTOR, [build]);\n","import api from '../../api.js';\n\nexport const NAVIGATION_CLASS = api.core.ns('nav');\nexport const NAVIGATION_LIST_CLASS = api.core.ns('nav__list');\nexport const NAVIGATION_ITEM_CLASS = api.core.ns('nav__item');\nexport const NAVIGATION_ITEM_RIGHT_CLASS = api.core.ns('nav__item--align-right');\nexport const NAVIGATION_MENU_CLASS = api.core.ns('menu');\n","import api from '../../api.js';\nimport {\n NAVIGATION_CLASS,\n NAVIGATION_ITEM_CLASS,\n NAVIGATION_LIST_CLASS,\n NAVIGATION_MENU_CLASS,\n NAVIGATION_ITEM_RIGHT_CLASS\n} from './constants';\n\nclass Navigation extends api.core.DisclosuresGroup {\n constructor (id, element) {\n super(id, element);\n\n this.menus = [];\n\n this.navList = element.querySelector(`.${NAVIGATION_LIST_CLASS}`);\n\n document.addEventListener('focusout', this.focusOut.bind(this));\n window.addEventListener('resize', this.resize.bind(this));\n window.addEventListener('orientationchange', this.resize.bind(this));\n this.resize();\n }\n\n static get selector () { return NAVIGATION_CLASS; }\n\n add (member) {\n super.add(member);\n\n if (member.element.classList.contains(NAVIGATION_MENU_CLASS)) {\n this.menus.push(new NavigationMenu(member, this.navList.getBoundingClientRect().right));\n }\n }\n\n focusOut (e) {\n requestAnimationFrame(() => {\n if (this.current !== null && !this.current.hasFocus) this.index = -1;\n });\n }\n\n get index () { return super.index; }\n\n set index (value) {\n if (value === -1 && this.current !== null && this.current.hasFocus) this.current.focus();\n super.index = value;\n }\n\n resize () {\n const right = this.navList.getBoundingClientRect().right;\n\n for (const menu of this.menus) menu.place(right);\n }\n}\n\nclass NavigationMenu {\n constructor (collapse, right) {\n this.initialize(collapse);\n this.place(right);\n }\n\n initialize (collapse) {\n this.element = collapse.element;\n\n for (const button of collapse.buttons) {\n if (!button.hasAttribute) continue;\n this.button = button.element;\n break;\n }\n\n let item = this.element.parentElement;\n while (item) {\n if (item.classList.contains(NAVIGATION_ITEM_CLASS)) {\n this.item = item;\n break;\n }\n item = item.parentElement;\n }\n }\n\n place (right) {\n const styles = getComputedStyle(this.element);\n const width = parseFloat(styles.width);\n const left = this.button.getBoundingClientRect().left;\n\n if (left + width > right) api.core.addClass(this.item, NAVIGATION_ITEM_RIGHT_CLASS);\n else api.core.removeClass(this.item, NAVIGATION_ITEM_RIGHT_CLASS);\n }\n}\n\nexport { Navigation };\n","import api from './api.js';\nimport { Navigation } from './scripts/navigation/navigation';\n\napi.Navigation = Navigation;\n\nexport default api;\n","import api from '../api.js';\nimport { NAVIGATION_CLASS } from './navigation/constants.js';\nimport { Navigation } from './navigation/navigation.js';\n\napi.Collapse.register(NAVIGATION_CLASS, Navigation);\n","import api from '../../api.js';\n\nexport const SCHEME_ATTR = api.core.ns.attr('theme');\nexport const TRANSITION_ATTR = api.core.ns.attr('transition');\n","import { SCHEME_ATTR, TRANSITION_ATTR } from './constants';\n\n/**\n * TODO: implémenter la valeur system\n * window.matchMedia(\"(prefers-color-scheme: dark)\").addListener(\n e => e.matches && activateDarkMode()) // listener\n );\n */\n\nclass Scheme {\n constructor () {\n this.init();\n }\n\n init () {\n this.root = document.documentElement;\n\n this.scheme = localStorage.getItem('scheme')\n ? localStorage.getItem('scheme')\n : null;\n\n if (this.scheme === null) {\n const scheme = this.root.getAttribute(SCHEME_ATTR);\n if (scheme === 'dark' || scheme === 'light') {\n this.scheme = scheme;\n } else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {\n this.scheme = 'dark';\n localStorage.setItem('scheme', 'dark');\n } else this.scheme = 'light';\n }\n\n if (this.scheme === 'dark') {\n if (!this.root.hasAttribute(TRANSITION_ATTR)) {\n this.root.setAttribute(SCHEME_ATTR, 'dark');\n } else {\n this.root.removeAttribute(TRANSITION_ATTR);\n this.root.setAttribute(SCHEME_ATTR, 'dark');\n\n setTimeout(() => {\n this.root.setAttribute(TRANSITION_ATTR, '');\n }, 300);\n }\n } else this.root.setAttribute(SCHEME_ATTR, 'light');\n\n this.observer = new MutationObserver(this.mutate.bind(this));\n this.observer.observe(this.root, { attributes: true });\n }\n\n mutate (mutations) {\n mutations.forEach((mutation) => {\n if (mutation.type === 'attributes' && mutation.attributeName === SCHEME_ATTR) {\n const scheme = this.root.getAttribute(SCHEME_ATTR);\n if (scheme === 'dark') {\n localStorage.setItem('scheme', 'dark');\n } else if (scheme === 'light') {\n localStorage.setItem('scheme', 'light');\n }\n }\n });\n }\n}\n\nexport { Scheme };\n","import api from './api.js';\nimport { Scheme } from './scripts/scheme/scheme';\n\napi.Scheme = Scheme;\n\nexport default api;\n","import api from '../../api.js';\n\nexport const RADIOS_THEME_NAME = `input[name=\"${api.core.ns.selector('radios-theme', '')}\"]`;\nexport const SWITCH_THEME_ID = api.core.ns.selector('switch-theme', '#');\nexport const THEME_ATTR = api.core.ns.attr('theme');\n","/* eslint-disable no-new */\nimport { Scheme } from './scheme';\n\nconst build = () => {\n new Scheme();\n};\n\nexport default build;\n","import { RADIOS_THEME_NAME, THEME_ATTR } from './constants';\n\nclass SwitchTheme {\n constructor () {\n this.attributeName = THEME_ATTR;\n this.theme = null;\n this.radios = document.querySelectorAll(RADIOS_THEME_NAME);\n\n for (var i = 0; i < this.radios.length; i++) {\n this.radios[i].addEventListener('change', this.change.bind(this));\n }\n\n this.observer = new MutationObserver(this.mutate.bind(this));\n this.observe();\n this.apply();\n }\n\n observe () {\n this.observer.observe(document.documentElement, { attributes: true });\n }\n\n mutate (mutations) {\n mutations.forEach((mutation) => {\n if (mutation.type === 'attributes' && mutation.attributeName === this.attributeName) {\n this.apply();\n }\n });\n }\n\n apply () {\n const theme = document.documentElement.getAttribute(this.attributeName);\n this.isApplying = true;\n for (var i = 0; i < this.radios.length; i++) {\n this.radios[i].checked = this.radios[i].value === theme;\n }\n this.isApplying = false;\n }\n\n change () {\n if (this.isApplying) return;\n if (this.observer) this.observer.disconnect();\n this.theme = document.querySelector(RADIOS_THEME_NAME + ':checked');\n if (this.theme) {\n document.documentElement.setAttribute(this.attributeName, this.theme.value);\n } else {\n document.documentElement.removeAttribute(this.attributeName);\n }\n if (this.observer) this.observe();\n }\n}\n\nexport { SwitchTheme };\n","/* eslint-disable no-new */\nimport { SwitchTheme } from './switch-theme';\n\nconst build = () => {\n new SwitchTheme();\n};\n\nexport default build;\n","/* eslint-disable no-new */\nimport api from '../api.js';\nimport { SCHEME_ATTR } from './scheme/constants';\nimport { SWITCH_THEME_ID } from './switch-theme/constants';\nimport buildScheme from './scheme/build';\nimport buildSwitch from './switch-theme/build';\n\nnew api.core.Initializer(`:root[${SCHEME_ATTR}]`, [buildScheme]);\nnew api.core.Initializer(`${SWITCH_THEME_ID}`, [buildSwitch]);\n","import api from '../../api.js';\n\nexport const SIDEMENU_CLASS = api.core.ns('sidemenu');\nexport const SIDEMENU_LIST_CLASS = api.core.ns('sidemenu__list');\n","/* eslint-disable no-new */\nimport api from '../api.js';\nimport { SIDEMENU_CLASS, SIDEMENU_LIST_CLASS } from './sidemenu/constants';\n\napi.Collapse.register(SIDEMENU_CLASS, SIDEMENU_LIST_CLASS);\n","import api from '../../api.js';\n\nexport const TABLE_SELECTOR = api.core.ns.selector('table');\n// export const TABLE_CLASS = api.core.ns('table');\nexport const TABLE_SCROLLING_SELECTOR = `${api.core.ns.selector('table')}:not(${api.core.ns.selector('table--no-scroll')})`;\nexport const LEFT = 'left';\nexport const RIGHT = 'right';\nexport const SHADOW_CLASS = api.core.ns('table--shadow');\nexport const SHADOW_LEFT_CLASS = api.core.ns('table--shadow-left');\nexport const SHADOW_RIGHT_CLASS = api.core.ns('table--shadow-right');\nexport const WRAPPER_CLASS = api.core.ns('table__wrapper');\nexport const CAPTION_BOTTOM_CLASS = api.core.ns('table--caption-bottom');\nexport const SCROLL_OFFSET = 1; // valeur en px du scroll avant laquelle le shadow s'active ou se desactive\n","import api from '../../api.js';\nimport {\n SHADOW_CLASS,\n SHADOW_LEFT_CLASS,\n SHADOW_RIGHT_CLASS,\n WRAPPER_CLASS,\n LEFT,\n RIGHT,\n CAPTION_BOTTOM_CLASS, SCROLL_OFFSET\n} from './constants.js';\n\nclass Table {\n constructor (table) {\n this.init(table);\n }\n\n init (table) {\n this.table = table;\n this.tableElem = this.table.querySelector('table');\n this.tableContent = this.tableElem.querySelector('tbody');\n this.isScrollable = this.tableContent.offsetWidth > this.tableElem.offsetWidth;\n this.caption = this.tableElem.querySelector('caption');\n this.captionHeight = 0;\n this.wrap();\n\n const scrolling = this.change.bind(this);\n this.tableElem.addEventListener('scroll', scrolling);\n this.change();\n }\n\n change () {\n const newScroll = this.tableContent.offsetWidth > this.tableElem.offsetWidth;\n let firstTimeScrollable = this.tableElem.offsetWidth > this.table.offsetWidth;\n if (newScroll || firstTimeScrollable) {\n this.scroll();\n this.handleCaption();\n } else {\n if (newScroll !== this.isScrollable) this.delete();\n }\n this.isScrollable = newScroll;\n firstTimeScrollable = false;\n }\n\n delete () {\n api.core.removeClass(this.table, SHADOW_RIGHT_CLASS);\n api.core.removeClass(this.table, SHADOW_LEFT_CLASS);\n api.core.removeClass(this.table, SHADOW_CLASS);\n if (this.caption) {\n this.tableElem.style.marginTop = '';\n this.caption.style.top = '';\n this.tableElem.style.marginBottom = '';\n this.caption.style.bottom = '';\n }\n }\n\n scroll () {\n api.core.addClass(this.table, SHADOW_CLASS);\n this.setShadowPosition();\n }\n\n /* ajoute un wrapper autour du tableau */\n wrap () {\n const wrapperHtml = document.createElement('div');\n wrapperHtml.className = WRAPPER_CLASS;\n this.table.insertBefore(wrapperHtml, this.tableElem);\n wrapperHtml.appendChild(this.tableElem);\n this.tableInnerWrapper = wrapperHtml;\n }\n\n /* affiche les blocs shadow en fonction de la position du scroll, en ajoutant la classe visible */\n setShadowPosition () {\n const tableScrollLeft = this.getScrollPosition(LEFT);\n const tableScrollRight = this.getScrollPosition(RIGHT);\n\n // on inverse en cas de lecture droite - gauche\n if (document.documentElement.getAttribute('dir') === 'rtl') {\n this.setShadowVisibility(RIGHT, tableScrollLeft);\n this.setShadowVisibility(LEFT, tableScrollRight);\n } else {\n this.setShadowVisibility(LEFT, tableScrollLeft);\n this.setShadowVisibility(RIGHT, tableScrollRight);\n }\n }\n\n /* Donne le nombre de pixels scrollés honrizontalement dans un element scrollable */\n getScrollPosition (side) {\n let inverter = 1;\n // on inverse en cas de lecture droite - gauche pour que la valeur de scroll soit toujours positive\n if (document.documentElement.getAttribute('dir') === 'rtl') {\n inverter = -1;\n }\n switch (side) {\n case LEFT:\n return this.tableElem.scrollLeft * inverter;\n case RIGHT:\n return this.tableContent.offsetWidth - this.tableElem.offsetWidth - this.tableElem.scrollLeft * inverter;\n default:\n return false;\n }\n }\n\n /* positionne la caption en top négatif et ajoute un margin-top au wrapper */\n handleCaption () {\n if (this.caption) {\n const style = getComputedStyle(this.caption);\n const newHeight = this.caption.offsetHeight + parseInt(style.marginTop) + parseInt(style.marginBottom);\n this.captionHeight = newHeight;\n if (this.table.classList.contains(CAPTION_BOTTOM_CLASS)) {\n this.tableElem.style.marginBottom = this.captionHeight + 'px';\n this.caption.style.bottom = -this.captionHeight + 'px';\n } else {\n this.tableElem.style.marginTop = this.captionHeight + 'px';\n this.caption.style.top = -this.captionHeight + 'px';\n }\n }\n }\n\n /* ajoute la classe fr-table--shadow-right ou fr-table--shadow-right sur fr-table\n en fonction d'une valeur de scroll et du sens (right, left) */\n setShadowVisibility (side, scrollPosition) {\n // si on a pas scroll, ou qu'on scroll jusqu'au bout\n if (scrollPosition <= SCROLL_OFFSET) {\n if (side === LEFT) api.core.removeClass(this.table, SHADOW_LEFT_CLASS);\n else if (side === RIGHT) api.core.removeClass(this.table, SHADOW_RIGHT_CLASS);\n } else {\n if (side === LEFT) api.core.addClass(this.table, SHADOW_LEFT_CLASS);\n else if (side === RIGHT) api.core.addClass(this.table, SHADOW_RIGHT_CLASS);\n }\n }\n}\n\nexport { Table };\n","import api from './api.js';\nimport { Table } from './scripts/table/table.js';\n\napi.Table = Table;\n\nexport default api;\n","import { TABLE_SCROLLING_SELECTOR } from './constants';\nimport { Table } from './table';\n\nconst tables = [];\n\nconst change = () => {\n for (let i = 0; i < tables.length; i++) tables[i].change();\n};\n\nconst build = () => {\n const tableNodes = document.querySelectorAll(TABLE_SCROLLING_SELECTOR);\n for (let i = 0; i < tableNodes.length; i++) tables.push(new Table(tableNodes[i]));\n\n window.addEventListener('resize', change);\n window.addEventListener('orientationchange', change);\n change();\n};\n\nexport { build };\n","/* eslint-disable no-new */\nimport api from '../api.js';\nimport { build } from './table/build.js';\nimport { TABLE_SELECTOR } from './table/constants';\n\nnew api.core.Initializer(TABLE_SELECTOR, [build]);\n","import api from '../../api';\n\n/**\n * TabButton correspond au bouton cliquable qui change le panel\n * TabButton étend de DisclosureButton qui ajoute/enelve l'attribut aria-selected,\n * Et change l'attributte tabindex a 0 si le boutton est actif (value=true), -1 s'il n'est pas actif (value=false)\n */\nclass TabButton extends api.core.DisclosureButton {\n apply (value) {\n super.apply(value);\n if (this.hasAttribute) {\n this.element.setAttribute('tabindex', value ? '0' : '-1');\n }\n }\n}\n\nexport { TabButton };\n","import api from '../../api.js';\n\nexport const TABS_SELECTOR = api.core.ns.selector('tabs');\nexport const TABS_CLASS = api.core.ns('tabs');\nexport const TAB_CLASS = api.core.ns('tabs__tab');\nexport const PANEL_CLASS = api.core.ns('tabs__panel');\nexport const LIST_CLASS = api.core.ns('tabs__list');\n\nexport const TRANSITION_TIME = 100;\n","import api from '../../api.js';\nimport { LIST_CLASS, TAB_CLASS, TABS_CLASS } from './constants';\n\n/**\n* TabGroup est la classe étendue de DiscosuresGroup\n* Correspond à un objet Tabs avec plusieurs tab-button & Tab (panel)\n*/\nclass TabsGroup extends api.core.DisclosuresGroup {\n constructor (id, element) {\n super(id, element);\n this.list = element.querySelector(`.${LIST_CLASS}`);\n\n element.addEventListener('transitionend', this.transitionend.bind(this));\n\n this.init();\n api.core.engine.renderer.add(this.render.bind(this));\n }\n\n static get selector () { return TABS_CLASS; }\n\n transitionend (e) {\n this.element.style.transition = 'none';\n }\n\n init () {\n this.keyListener = new api.KeyListener(this.element);\n this.keyListener.down(api.KeyListener.RIGHT, this.arrowRightPress.bind(this), true, true);\n this.keyListener.down(api.KeyListener.LEFT, this.arrowLeftPress.bind(this), true, true);\n this.keyListener.down(api.KeyListener.HOME, this.homePress.bind(this), true, true);\n this.keyListener.down(api.KeyListener.END, this.endPress.bind(this), true, true);\n }\n\n /**\n * Selectionne l'element suivant de la liste si on est sur un bouton\n * Si on est à la fin on retourne au début\n */\n arrowRightPress () {\n if (document.activeElement.classList.contains(TAB_CLASS)) {\n if (this.index < this.length - 1) {\n this.index++;\n } else {\n this.index = 0;\n }\n\n this.focus();\n }\n };\n\n /**\n * Selectionne l'element précédent de la liste si on est sur un bouton\n * Si on est au debut retourne a la fin\n */\n arrowLeftPress () {\n if (document.activeElement.classList.contains(TAB_CLASS)) {\n if (this.index > 0) {\n this.index--;\n } else {\n this.index = this.length - 1;\n }\n\n this.focus();\n }\n };\n\n /**\n * Selectionne le permier element de la liste si on est sur un bouton\n */\n homePress () {\n if (document.activeElement.classList.contains(TAB_CLASS)) {\n this.index = 0;\n this.focus();\n }\n };\n\n /**\n * Selectionne le dernier element de la liste si on est sur un bouton\n */\n endPress () {\n if (document.activeElement.classList.contains(TAB_CLASS)) {\n this.index = this.length - 1;\n this.focus();\n }\n };\n\n focus () {\n if (this.current) this.current.focus();\n }\n\n apply () {\n for (let i = 0; i < this._index; i++) this.members[i].translate(-1);\n this.current.element.style.transition = '';\n this.current.element.style.transform = '';\n for (let i = this._index + 1; i < this.length; i++) this.members[i].translate(1);\n this.element.style.transition = '';\n }\n\n add (tab) {\n super.add(tab);\n if (this.length === 1 || tab.disclosed) this.current = tab;\n else {\n const index = this.members.indexOf(tab);\n if (this._index > -1 && this._index !== index) tab.translate(index < this._index ? -1 : 1, true);\n }\n }\n\n render () {\n if (this.current === null) return;\n const paneHeight = Math.round(this.current.element.offsetHeight);\n if (this.panelHeight === paneHeight) return;\n this.panelHeight = paneHeight;\n this.element.style.height = (this.panelHeight + this.list.offsetHeight) + 'px';\n }\n}\n\nexport { TabsGroup };\n","import api from '../../api.js';\nimport { TabButton } from './tab-button.js';\nimport { PANEL_CLASS } from './constants.js';\nimport { TabsGroup } from './tabs-group.js';\n\n/**\n * Tab coorespond au panel d'un élement Tabs (tab panel)\n * Tab étend disclosure qui ajoute/enleve le modifier --selected,\n * et ajoute/eleve l'attribut hidden, sur le panel\n */\nclass Tab extends api.core.Disclosure {\n static get type () { return api.core.DISCLOSURE_TYPES.select; }\n static get selector () { return PANEL_CLASS; }\n\n get GroupConstructor () { return TabsGroup; }\n\n buttonFactory (element) {\n return new TabButton(element, this);\n }\n\n translate (direction, initial) {\n this.element.style.transition = initial ? 'none' : '';\n this.element.style.transform = `translate(${direction * 100}%)`;\n }\n\n reset () {\n this.group.index = 0;\n }\n}\n\nexport { Tab };\n","import api from './api.js';\nimport { Tab } from './scripts/tabs/tab.js';\nimport { TabButton } from './scripts/tabs/tab-button.js';\nimport { TabsGroup } from './scripts/tabs/tabs-group';\n\napi.Tab = Tab;\napi.TabButton = TabButton;\napi.TabsGroup = TabsGroup;\n\nexport default api;\n","import { Tab } from './tab';\n\n/**\n* Initialise tout les éléments Tab dans la page\n*/\nconst build = () => {\n Tab.build(document);\n};\n\nexport { build };\n","/* eslint-disable no-new */\nimport api from '../api.js';\nimport { build } from './tabs/build.js';\nimport { TABS_SELECTOR } from './tabs/constants.js';\n\nnew api.core.Initializer(TABS_SELECTOR, [build]);\n","import api from '../../api.js';\n\nexport const HEADER_SELECTOR = api.core.ns.selector('header');\nexport const HEADER_SEARCH_SELECTOR = api.core.ns.selector('header__search');\nexport const HEADER_MENU_SELECTOR = api.core.ns.selector('header__menu');\nexport const HEADER_TOOLS_LINKS_SELECTOR = api.core.ns.selector('header__tools-links');\nexport const HEADER_MENU_LINKS_SELECTOR = api.core.ns.selector('header__menu-links');\nexport const HEADER_LINKS_GROUP_SELECTOR = `${HEADER_TOOLS_LINKS_SELECTOR} ${api.core.ns.selector('links-group')}`;\n","import api from '../../api.js';\nimport {\n HEADER_MENU_SELECTOR,\n HEADER_SEARCH_SELECTOR,\n HEADER_SELECTOR,\n HEADER_LINKS_GROUP_SELECTOR,\n HEADER_TOOLS_LINKS_SELECTOR,\n HEADER_MENU_LINKS_SELECTOR\n} from './constants';\n\nclass Header {\n constructor (header) {\n this.header = header || document.querySelector(HEADER_SELECTOR);\n this.modals = [];\n\n this.init();\n }\n\n getModal (selector) {\n const element = this.header.querySelector(selector);\n if (!element) return;\n const modals = api.core.Instance.getInstances(element, api.Modal);\n if (!modals || !modals.length) return;\n this.modals.push(new HeaderModal(modals[0]));\n }\n\n init () {\n this.getModal(HEADER_SEARCH_SELECTOR);\n this.getModal(HEADER_MENU_SELECTOR);\n\n this.linksGroup = this.header.querySelector(HEADER_LINKS_GROUP_SELECTOR);\n\n this.toolsLinks = this.header.querySelector(HEADER_TOOLS_LINKS_SELECTOR);\n this.menuLinks = this.header.querySelector(HEADER_MENU_LINKS_SELECTOR);\n\n this.changing = this.change.bind(this);\n\n window.addEventListener('resize', this.changing);\n this.change();\n }\n\n change () {\n this.isLarge = window.matchMedia('(min-width: 62em)').matches;\n\n if (this.isLarge) this.modals.forEach((modal) => modal.disable());\n else this.modals.forEach((modal) => modal.enable());\n\n if (this.linksGroup !== null) {\n if (this.isLarge) this.toolsLinks.appendChild(this.linksGroup);\n else this.menuLinks.appendChild(this.linksGroup);\n }\n }\n}\n\nclass HeaderModal {\n constructor (modal) {\n this.modal = modal;\n }\n\n enable () {\n this.modal.element.setAttribute('role', 'dialog');\n this.modal.element.setAttribute('aria-labelledby', this.modal.primary.element.id);\n }\n\n disable () {\n this.modal.conceal();\n this.modal.element.removeAttribute('role');\n this.modal.element.removeAttribute('aria-labelledby');\n }\n}\n\nexport { Header };\n","import api from './api.js';\nimport { Header } from './scripts/header/header';\n\napi.Header = Header;\n\nexport default api;\n","import { Header } from './header.js';\nimport { HEADER_SELECTOR } from './constants';\n\nconst build = () => {\n const elements = Array.prototype.slice.call(document.querySelectorAll(HEADER_SELECTOR));\n\n const headers = [];\n\n for (const element of elements) headers.push(new Header(element));\n};\n\nexport { build };\n","/* eslint-disable no-new */\nimport api from '../api.js';\nimport { HEADER_SELECTOR } from './header/constants.js';\nimport { build } from './header/build.js';\n\nnew api.core.Initializer(HEADER_SELECTOR, [build]);\n"],"names":["build","buildScheme","buildSwitch"],"mappings":"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"}