1 line
No EOL
144 KiB
Text
1 line
No EOL
144 KiB
Text
{"version":3,"file":"component.nomodule.min.js","sources":["../../.config/config.js","../../src/core/api.js","../../src/component/accordion/script/accordion/accordion-selector.js","../../src/component/accordion/script/accordion/accordion.js","../../src/component/accordion/script/accordion/accordions-group.js","../../src/component/accordion/index.js","../../src/component/accordion/main.js","../../src/component/button/script/button/button-selector.js","../../src/component/button/index.js","../../src/component/button/main.js","../../src/component/card/script/card/card-download.js","../../src/component/card/script/card/card-selector.js","../../src/component/card/index.js","../../src/component/card/main.js","../../src/component/segmented/script/segmented/segmented-selector.js","../../src/component/segmented/script/segmented/segmented-emission.js","../../src/component/segmented/script/segmented/segmented.js","../../src/component/segmented/script/segmented/segmented-element.js","../../src/component/segmented/index.js","../../src/component/segmented/main.js","../../src/component/breadcrumb/script/breadcrumb/breadcrumb-selector.js","../../src/component/breadcrumb/script/breadcrumb/breadcrumb.js","../../src/component/breadcrumb/index.js","../../src/component/breadcrumb/main.js","../../src/component/tooltip/script/tooltip/tooltip-selector.js","../../src/component/tooltip/script/tooltip/tooltip-referent.js","../../src/core/script/api/utilities/namespace.js","../../src/component/tooltip/script/tooltip/tooltip-event.js","../../src/component/tooltip/script/tooltip/tooltip.js","../../src/component/tooltip/index.js","../../src/component/tooltip/main.js","../../src/component/toggle/script/toggle/toggle-input.js","../../src/component/toggle/script/toggle/toggle-status-label.js","../../src/component/toggle/script/toggle/toggle-selector.js","../../src/component/toggle/index.js","../../src/component/toggle/main.js","../../src/component/sidemenu/script/sidemenu/sidemenu-selector.js","../../src/component/sidemenu/script/sidemenu/sidemenu-list.js","../../src/component/sidemenu/script/sidemenu/sidemenu-item.js","../../src/component/sidemenu/index.js","../../src/component/sidemenu/main.js","../../src/component/modal/script/modal/modal-selector.js","../../src/component/modal/script/modal/modal-button.js","../../src/component/modal/script/modal/modal-attribute.js","../../src/component/modal/script/modal/modal.js","../../src/component/modal/script/modal/focus-trap.js","../../src/component/modal/script/modal/modals-group.js","../../src/component/modal/script/modal/modal-body.js","../../src/component/modal/index.js","../../src/component/modal/main.js","../../src/component/password/script/password/password-emission.js","../../src/component/password/script/password/password-toggle.js","../../src/component/password/script/password/password.js","../../src/component/password/script/password/password-selector.js","../../src/component/password/script/password/password-input.js","../../src/component/password/script/password/password-label.js","../../src/component/password/index.js","../../src/component/password/main.js","../../src/component/navigation/script/navigation/navigation-selector.js","../../src/component/navigation/script/navigation/navigation-item.js","../../src/component/navigation/script/navigation/navigation-mouse-position.js","../../src/component/navigation/script/navigation/navigation.js","../../src/component/navigation/index.js","../../src/component/navigation/main.js","../../src/component/tab/script/tab/tab-button.js","../../src/component/tab/script/tab/tab-selector.js","../../src/component/tab/script/tab/tab-panel-direction.js","../../src/component/tab/script/tab/tab-panel.js","../../src/component/tab/script/tab/tab-keys.js","../../src/component/tab/script/tab/tab-emission.js","../../src/component/tab/script/tab/tabs-group.js","../../src/component/tab/script/tab/tabs-list.js","../../src/component/tab/index.js","../../src/component/tab/main.js","../../src/component/table/script/table/table-emission.js","../../src/component/table/script/table/table.js","../../src/component/table/script/table/table-selector.js","../../src/component/table/script/table/table-element.js","../../src/component/table/script/table/table-caption.js","../../src/component/table/index.js","../../src/component/table/main.js","../../src/component/tag/script/tag/tag-event.js","../../src/component/tag/script/tag/tag-dismissible.js","../../src/component/tag/script/tag/tag-selector.js","../../src/component/tag/index.js","../../src/component/tag/main.js","../../src/component/transcription/script/accordion/transcription-selector.js","../../src/component/transcription/script/accordion/transcription.js","../../src/component/transcription/index.js","../../src/component/transcription/main.js","../../src/component/tile/script/tile/tile-download.js","../../src/component/tile/script/tile/tile-selector.js","../../src/component/tile/index.js","../../src/component/tile/main.js","../../src/component/range/script/range/range-selector.js","../../src/component/range/script/range/range-emission.js","../../src/component/range/script/range/range-model.js","../../src/component/range/script/range/range.js","../../src/component/range/script/range/range-constraints.js","../../src/component/range/script/range/range-input.js","../../src/component/range/script/range/range-input2.js","../../src/component/range/script/range/range-output.js","../../src/component/range/script/range/range-limit.js","../../src/component/range/index.js","../../src/component/range/main.js","../../src/component/header/script/header/header-selector.js","../../src/component/header/script/header/header-links.js","../../src/component/header/script/header/header-modal.js","../../src/component/header/index.js","../../src/component/header/main.js","../../src/component/display/script/display/display-selector.js","../../src/component/display/script/display/display.js","../../src/component/display/index.js","../../src/component/display/main.js"],"sourcesContent":["const config = {\r\n prefix: 'fr',\r\n namespace: 'dsfr',\r\n organisation: '@gouvfr',\r\n version: '1.11.2'\r\n};\r\n\r\nexport default config;\r\n","import config from './config.js';\nconst api = window[config.namespace];\nexport default api;\n","import api from '../../api.js';\n\nconst ACCORDION = api.internals.ns.selector('accordion');\nconst COLLAPSE = api.internals.ns.selector('collapse');\n\nexport const AccordionSelector = {\n GROUP: api.internals.ns.selector('accordions-group'),\n ACCORDION: ACCORDION,\n COLLAPSE: `${ACCORDION} > ${COLLAPSE}, ${ACCORDION} > *:not(${ACCORDION}):not(${COLLAPSE}) > ${COLLAPSE}, ${ACCORDION} > *:not(${ACCORDION}):not(${COLLAPSE}) > *:not(${ACCORDION}):not(${COLLAPSE}) > ${COLLAPSE}`,\n COLLAPSE_LEGACY: `${ACCORDION} ${COLLAPSE}`,\n BUTTON: `${ACCORDION}__btn`\n};\n","import api from '../../api.js';\nimport { AccordionSelector } from './accordion-selector';\n\nclass Accordion extends api.core.Instance {\n static get instanceClassName () {\n return 'Accordion';\n }\n\n get collapsePrimary () {\n const buttons = this.element.children.map(child => child.getInstance('CollapseButton')).filter(button => button !== null && button.hasClass(AccordionSelector.BUTTON));\n return buttons[0];\n }\n}\n\nexport { Accordion };\n","import api from '../../api.js';\nimport { AccordionSelector } from './accordion-selector.js';\n\nclass AccordionsGroup extends api.core.CollapsesGroup {\n static get instanceClassName () {\n return 'AccordionsGroup';\n }\n\n validate (member) {\n const match = member.node.matches(api.internals.legacy.isLegacy ? AccordionSelector.COLLAPSE_LEGACY : AccordionSelector.COLLAPSE);\n return super.validate(member) && match;\n }\n}\n\nexport { AccordionsGroup };\n","import api from './api.js';\nimport { Accordion } from './script/accordion/accordion';\nimport { AccordionsGroup } from './script/accordion/accordions-group.js';\nimport { AccordionSelector } from './script/accordion/accordion-selector.js';\n\napi.accordion = {\n Accordion: Accordion,\n AccordionSelector: AccordionSelector,\n AccordionsGroup: AccordionsGroup\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.accordion.AccordionSelector.GROUP, api.accordion.AccordionsGroup);\napi.internals.register(api.accordion.AccordionSelector.ACCORDION, api.accordion.Accordion);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const ButtonSelector = {\n EQUISIZED_BUTTON: `${api.internals.ns.selector('btns-group--equisized')} ${api.internals.ns.selector('btn')}`,\n EQUISIZED_GROUP: api.internals.ns.selector('btns-group--equisized')\n};\n","import api from './api.js';\nimport { ButtonSelector } from './script/button/button-selector';\n\napi.button = {\n ButtonSelector: ButtonSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.button.ButtonSelector.EQUISIZED_BUTTON, api.core.Equisized);\napi.internals.register(api.button.ButtonSelector.EQUISIZED_GROUP, api.core.EquisizedsGroup);\n\nexport default api;\n","import api from '../../api.js';\n\nclass CardDownload extends api.core.Instance {\n static get instanceClassName () {\n return 'CardDownload';\n }\n\n init () {\n this.addAscent(api.core.AssessEmission.UPDATE, details => {\n this.descend(api.core.AssessEmission.UPDATE, details);\n });\n this.addAscent(api.core.AssessEmission.ADDED, () => {\n this.descend(api.core.AssessEmission.ADDED);\n });\n }\n}\n\nexport { CardDownload };\n","import api from '../../api.js';\n\nexport const CardSelector = {\n DOWNLOAD: api.internals.ns.selector('card--download'),\n DOWNLOAD_DETAIL: `${api.internals.ns.selector('card--download')} ${api.internals.ns.selector('card__end')} ${api.internals.ns.selector('card__detail')}`\n};\n","import api from './api.js';\nimport { CardDownload } from './script/card/card-download.js';\nimport { CardSelector } from './script/card/card-selector.js';\n\napi.card = {\n CardSelector: CardSelector,\n CardDownload: CardDownload\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.card.CardSelector.DOWNLOAD, api.card.CardDownload);\napi.internals.register(api.card.CardSelector.DOWNLOAD_DETAIL, api.core.AssessDetail);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const SegmentedSelector = {\n SEGMENTED: api.internals.ns.selector('segmented'),\n SEGMENTED_ELEMENTS: api.internals.ns.selector('segmented__elements'),\n SEGMENTED_ELEMENT: api.internals.ns.selector('segmented__element input'),\n SEGMENTED_LEGEND: api.internals.ns.selector('segmented__legend')\n};\n","import api from '../../api.js';\n\nconst SegmentedEmission = {\n ADDED: api.internals.ns.emission('segmented', 'added'),\n REMOVED: api.internals.ns.emission('segmented', 'removed')\n};\n\nexport { SegmentedEmission };\n","import api from '../../api.js';\nimport { SegmentedSelector } from './segmented-selector.js';\nimport { SegmentedEmission } from './segmented-emission.js';\n\nclass Segmented extends api.core.Instance {\n static get instanceClassName () {\n return 'Segmented';\n }\n\n init () {\n this.elements = this.node.querySelector(SegmentedSelector.SEGMENTED_ELEMENTS);\n this.legend = this.node.querySelector(SegmentedSelector.SEGMENTED_LEGEND);\n this.addAscent(SegmentedEmission.ADDED, this.resize.bind(this));\n this.addAscent(SegmentedEmission.REMOVED, this.resize.bind(this));\n this._isLegendInline = this.legend && this.legend.classList.contains(`${api.prefix}-segmented__legend--inline`);\n this.isResizing = true;\n }\n\n resize () {\n const SEGMENTED_VERTICAL = `${api.prefix}-segmented--vertical`;\n const LEGEND_INLINE = `${api.prefix}-segmented__legend--inline`;\n const gapOffset = 16;\n\n this.removeClass(SEGMENTED_VERTICAL);\n\n if (this._isLegendInline) {\n this.legend.classList.add(LEGEND_INLINE);\n\n if (this.node.offsetWidth > this.node.parentNode.offsetWidth || (this.elements.scrollWidth + this.legend.offsetWidth + gapOffset) > this.node.parentNode.offsetWidth) {\n this.legend.classList.remove(LEGEND_INLINE);\n }\n }\n\n if (this.elements.offsetWidth > this.node.parentNode.offsetWidth || this.elements.scrollWidth > this.node.parentNode.offsetWidth) {\n this.addClass(SEGMENTED_VERTICAL);\n } else {\n this.removeClass(SEGMENTED_VERTICAL);\n }\n }\n}\n\nexport { Segmented };\n","import api from '../../api.js';\nimport { SegmentedEmission } from './segmented-emission.js';\n\nclass SegmentedElement extends api.core.Instance {\n static get instanceClassName () {\n return 'SegmentedElement';\n }\n\n init () {\n this.ascend(SegmentedEmission.ADDED);\n }\n\n dispose () {\n this.ascend(SegmentedEmission.REMOVED);\n }\n}\n\nexport { SegmentedElement };\n","import api from './api.js';\nimport { Segmented } from './script/segmented/segmented.js';\nimport { SegmentedElement } from './script/segmented/segmented-element.js';\nimport { SegmentedSelector } from './script/segmented/segmented-selector.js';\nimport { SegmentedEmission } from './script/segmented/segmented-emission.js';\n\napi.segmented = {\n SegmentedSelector: SegmentedSelector,\n SegmentedEmission: SegmentedEmission,\n SegmentedElement: SegmentedElement,\n Segmented: Segmented\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.segmented.SegmentedSelector.SEGMENTED, api.segmented.Segmented);\napi.internals.register(api.segmented.SegmentedSelector.SEGMENTED_ELEMENT, api.segmented.SegmentedElement);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const BreadcrumbSelector = {\n BREADCRUMB: api.internals.ns.selector('breadcrumb'),\n BUTTON: api.internals.ns.selector('breadcrumb__button')\n};\n","import api from '../../api.js';\nimport { BreadcrumbSelector } from './breadcrumb-selector.js';\n\nclass Breadcrumb extends api.core.Instance {\n constructor () {\n super();\n this.count = 0;\n this.focusing = this.focus.bind(this);\n }\n\n static get instanceClassName () {\n return 'Breadcrumb';\n }\n\n init () {\n this.getCollapse();\n this.isResizing = true;\n }\n\n get proxy () {\n const scope = this;\n return Object.assign(super.proxy, {\n focus: scope.focus.bind(scope),\n disclose: scope.collapse.disclose.bind(scope.collapse)\n });\n }\n\n getCollapse () {\n const collapse = this.collapse;\n if (collapse) {\n collapse.listen(api.core.DisclosureEvent.DISCLOSE, this.focusing);\n } else {\n this.addAscent(api.core.DisclosureEmission.ADDED, this.getCollapse.bind(this));\n }\n }\n\n resize () {\n const collapse = this.collapse;\n const links = this.links;\n if (!collapse || !links.length) return;\n\n if (this.isBreakpoint(api.core.Breakpoints.MD)) {\n if (collapse.buttonHasFocus) links[0].focus();\n } else {\n if (links.indexOf(document.activeElement) > -1) collapse.focus();\n }\n }\n\n get links () {\n return [...this.querySelectorAll('a[href]')];\n }\n\n get collapse () {\n return this.element.getDescendantInstances(api.core.Collapse.instanceClassName, null, true)[0];\n }\n\n focus () {\n this.count = 0;\n this._focus();\n }\n\n _focus () {\n const link = this.links[0];\n if (!link) return;\n link.focus();\n this.request(this.verify.bind(this));\n }\n\n verify () {\n this.count++;\n if (this.count > 100) return;\n const link = this.links[0];\n if (!link) return;\n if (document.activeElement !== link) this._focus();\n }\n\n get collapsePrimary () {\n const buttons = this.element.children.map(child => child.getInstance('CollapseButton')).filter(button => button !== null && button.hasClass(BreadcrumbSelector.BUTTON));\n return buttons[0];\n }\n}\n\nexport { Breadcrumb };\n","import api from './api.js';\nimport { Breadcrumb } from './script/breadcrumb/breadcrumb.js';\nimport { BreadcrumbSelector } from './script/breadcrumb/breadcrumb-selector.js';\n\napi.breadcrumb = {\n BreadcrumbSelector: BreadcrumbSelector,\n Breadcrumb: Breadcrumb\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.breadcrumb.BreadcrumbSelector.BREADCRUMB, api.breadcrumb.Breadcrumb);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const TooltipSelector = {\n TOOLTIP: api.internals.ns.selector('tooltip'),\n SHOWN: api.internals.ns.selector('tooltip--shown'),\n BUTTON: api.internals.ns.selector('btn--tooltip')\n};\n","import api from '../../api.js';\nimport { TooltipSelector } from './tooltip-selector';\n\nconst TooltipReferentState = {\n FOCUS: 1 << 0,\n HOVER: 1 << 1\n};\n\nclass TooltipReferent extends api.core.PlacementReferent {\n constructor () {\n super();\n this._state = 0;\n }\n\n static get instanceClassName () {\n return 'TooltipReferent';\n }\n\n init () {\n super.init();\n this.listen('focusin', this.focusIn.bind(this));\n this.listen('focusout', this.focusOut.bind(this));\n if (!this.matches(TooltipSelector.BUTTON)) {\n const mouseover = this.mouseover.bind(this);\n this.listen('mouseover', mouseover);\n this.placement.listen('mouseover', mouseover);\n const mouseout = this.mouseout.bind(this);\n this.listen('mouseout', mouseout);\n this.placement.listen('mouseout', mouseout);\n }\n this.addEmission(api.core.RootEmission.KEYDOWN, this._keydown.bind(this));\n this.listen('click', this._click.bind(this));\n this.addEmission(api.core.RootEmission.CLICK, this._clickOut.bind(this));\n }\n\n _click () {\n this.focus();\n }\n\n _clickOut (target) {\n if (!this.node.contains(target)) this.blur();\n }\n\n _keydown (keyCode) {\n switch (keyCode) {\n case api.core.KeyCodes.ESCAPE:\n this.blur();\n this.close();\n break;\n }\n }\n\n close () {\n this.state = 0;\n }\n\n get state () {\n return this._state;\n }\n\n set state (value) {\n if (this._state === value) return;\n this.isShown = value > 0;\n this._state = value;\n }\n\n focusIn () {\n this.state |= TooltipReferentState.FOCUS;\n }\n\n focusOut () {\n this.state &= ~TooltipReferentState.FOCUS;\n }\n\n mouseover () {\n this.state |= TooltipReferentState.HOVER;\n }\n\n mouseout () {\n this.state &= ~TooltipReferentState.HOVER;\n }\n}\n\nexport { TooltipReferent };\n","import config from '../../../config.js';\n\nconst ns = name => `${config.prefix}-${name}`;\n\nns.selector = (name, notation) => {\n if (notation === undefined) notation = '.';\n return `${notation}${ns(name)}`;\n};\n\nns.attr = (name) => `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) => `${config.namespace}.${type}`;\n\nns.emission = (domain, type) => `emission:${domain}.${type}`;\n\nexport default ns;\n","import ns from '../../../../core/script/api/utilities/namespace.js';\n\nconst TooltipEvent = {\n SHOW: ns.event('show'),\n HIDE: ns.event('hide')\n};\n\nexport { TooltipEvent };\n","import api from '../../api.js';\nimport { TooltipReferent } from './tooltip-referent';\nimport { TooltipSelector } from './tooltip-selector';\nimport { TooltipEvent } from './tooltip-event.js';\n\nconst TooltipState = {\n HIDDEN: 'hidden',\n SHOWN: 'shown',\n HIDING: 'hiding'\n};\n\nclass Tooltip extends api.core.Placement {\n constructor () {\n super(api.core.PlacementMode.AUTO, [api.core.PlacementPosition.TOP, api.core.PlacementPosition.BOTTOM], [api.core.PlacementAlign.CENTER, api.core.PlacementAlign.START, api.core.PlacementAlign.END]);\n this.modifier = '';\n this._state = TooltipState.HIDDEN;\n }\n\n static get instanceClassName () {\n return 'Tooltip';\n }\n\n init () {\n super.init();\n this.register(`[aria-describedby=\"${this.id}\"]`, TooltipReferent);\n this.listen('transitionend', this.transitionEnd.bind(this));\n }\n\n transitionEnd () {\n if (this._state === TooltipState.HIDING) {\n this._state = TooltipState.HIDDEN;\n this.isShown = false;\n }\n }\n\n get isShown () {\n return super.isShown;\n }\n\n set isShown (value) {\n if (!this.isEnabled) return;\n switch (true) {\n case value:\n this._state = TooltipState.SHOWN;\n this.addClass(TooltipSelector.SHOWN);\n this.dispatch(TooltipEvent.SHOW);\n super.isShown = true;\n break;\n\n case this.isShown && !value && this._state === TooltipState.SHOWN:\n this._state = TooltipState.HIDING;\n this.removeClass(TooltipSelector.SHOWN);\n break;\n\n case this.isShown && !value && this._state === TooltipState.HIDDEN:\n this.dispatch(TooltipEvent.HIDE);\n super.isShown = false;\n break;\n }\n }\n\n render () {\n super.render();\n let x = this.referentRect.center - this.rect.center;\n const limit = this.rect.width * 0.5 - 8;\n if (x < -limit) x = -limit;\n if (x > limit) x = limit;\n this.setProperty('--arrow-x', `${x.toFixed(2)}px`);\n }\n}\n\nexport { Tooltip };\n","import api from './api.js';\nimport { Tooltip } from './script/tooltip/tooltip.js';\nimport { TooltipSelector } from './script/tooltip/tooltip-selector.js';\nimport { TooltipEvent } from './script/tooltip/tooltip-event';\n\napi.tooltip = {\n Tooltip: Tooltip,\n TooltipSelector: TooltipSelector,\n TooltipEvent: TooltipEvent\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.tooltip.TooltipSelector.TOOLTIP, api.tooltip.Tooltip);\n\nexport default api;\n","import api from '../../api.js';\n\nclass ToggleInput extends api.core.Instance {\n static get instanceClassName () {\n return 'ToggleInput';\n }\n\n get isChecked () {\n return this.node.checked;\n }\n}\n\nexport { ToggleInput };\n","import api from '../../api.js';\nimport { ToggleInput } from './toggle-input.js';\n\nclass ToggleStatusLabel extends api.core.Instance {\n static get instanceClassName () {\n return 'ToggleStatusLabel';\n }\n\n init () {\n this.register(`input[id=\"${this.getAttribute('for')}\"]`, ToggleInput);\n this.update();\n this.isSwappingFont = true;\n }\n\n get proxy () {\n const scope = this;\n return Object.assign(super.proxy, {\n update: scope.update.bind(scope)\n });\n }\n\n get input () {\n return this.getRegisteredInstances('ToggleInput')[0];\n }\n\n update () {\n this.node.style.removeProperty('--toggle-status-width');\n const checked = this.input.isChecked;\n\n const style = getComputedStyle(this.node, ':before');\n let maxWidth = parseFloat(style.width);\n this.input.node.checked = !checked;\n\n const style2 = getComputedStyle(this.node, ':before');\n const width = parseFloat(style2.width);\n if (width > maxWidth) maxWidth = width;\n this.input.node.checked = checked;\n\n this.node.style.setProperty('--toggle-status-width', (maxWidth / 16) + 'rem');\n }\n\n swapFont (families) {\n this.update();\n }\n}\n\nexport { ToggleStatusLabel };\n","import api from '../../api.js';\n\nexport const ToggleSelector = {\n STATUS_LABEL: `${api.internals.ns.selector('toggle__label')}${api.internals.ns.attr.selector('checked-label')}${api.internals.ns.attr.selector('unchecked-label')}`\n};\n","import api from './api.js';\nimport { ToggleStatusLabel } from './script/toggle/toggle-status-label.js';\nimport { ToggleSelector } from './script/toggle/toggle-selector.js';\n// import { ToggleInput } from './script/toggle/toggle-input.js';\n\napi.toggle = {\n ToggleStatusLabel: ToggleStatusLabel,\n ToggleSelector: ToggleSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.toggle.ToggleSelector.STATUS_LABEL, api.toggle.ToggleStatusLabel);\n\nexport default api;\n","import api from '../../api.js';\n\nconst ITEM = api.internals.ns.selector('sidemenu__item');\nconst COLLAPSE = api.internals.ns.selector('collapse');\n\nexport const SidemenuSelector = {\n LIST: api.internals.ns.selector('sidemenu__list'),\n COLLAPSE: `${ITEM} > ${COLLAPSE}, ${ITEM} > *:not(${ITEM}):not(${COLLAPSE}) > ${COLLAPSE}, ${ITEM} > *:not(${ITEM}):not(${COLLAPSE}) > *:not(${ITEM}):not(${COLLAPSE}) > ${COLLAPSE}`,\n COLLAPSE_LEGACY: `${ITEM} ${COLLAPSE}`,\n ITEM: api.internals.ns.selector('sidemenu__item'),\n BUTTON: api.internals.ns.selector('sidemenu__btn')\n};\n","import api from '../../api.js';\nimport { SidemenuSelector } from './sidemenu-selector.js';\n\nclass SidemenuList extends api.core.CollapsesGroup {\n static get instanceClassName () {\n return 'SidemenuList';\n }\n\n validate (member) {\n return super.validate(member) && member.node.matches(api.internals.legacy.isLegacy ? SidemenuSelector.COLLAPSE_LEGACY : SidemenuSelector.COLLAPSE);\n }\n}\n\nexport { SidemenuList };\n","import api from '../../api.js';\nimport { SidemenuSelector } from './sidemenu-selector.js';\n\nclass SidemenuItem extends api.core.Instance {\n static get instanceClassName () {\n return 'SidemenuItem';\n }\n\n get collapsePrimary () {\n const buttons = this.element.children.map(child => child.getInstance('CollapseButton')).filter(button => button !== null && button.hasClass(SidemenuSelector.BUTTON));\n return buttons[0];\n }\n}\n\nexport { SidemenuItem };\n","import api from './api.js';\nimport { SidemenuList } from './script/sidemenu/sidemenu-list.js';\nimport { SidemenuSelector } from './script/sidemenu/sidemenu-selector.js';\nimport { SidemenuItem } from './script/sidemenu/sidemenu-item';\n\napi.sidemenu = {\n SidemenuList: SidemenuList,\n SidemenuItem: SidemenuItem,\n SidemenuSelector: SidemenuSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.sidemenu.SidemenuSelector.LIST, api.sidemenu.SidemenuList);\napi.internals.register(api.sidemenu.SidemenuSelector.ITEM, api.sidemenu.SidemenuItem);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const ModalSelector = {\n MODAL: api.internals.ns.selector('modal'),\n SCROLL_DIVIDER: api.internals.ns.selector('scroll-divider'),\n BODY: api.internals.ns.selector('modal__body'),\n TITLE: api.internals.ns.selector('modal__title')\n};\n","import api from '../../api.js';\n\nclass ModalButton extends api.core.DisclosureButton {\n constructor () {\n super(api.core.DisclosureType.OPENED);\n }\n\n static get instanceClassName () {\n return 'ModalButton';\n }\n}\n\nexport { ModalButton };\n","import api from '../../api';\n\nexport const ModalAttribute = {\n CONCEALING_BACKDROP: api.internals.ns.attr('concealing-backdrop')\n};\n","import api from '../../api.js';\nimport { ModalSelector } from './modal-selector.js';\nimport { ModalButton } from './modal-button.js';\nimport { ModalAttribute } from './modal-attribute';\n\nclass Modal extends api.core.Disclosure {\n constructor () {\n super(api.core.DisclosureType.OPENED, ModalSelector.MODAL, ModalButton, 'ModalsGroup');\n this._isActive = false;\n this.scrolling = this.resize.bind(this, false);\n this.resizing = this.resize.bind(this, true);\n }\n\n static get instanceClassName () {\n return 'Modal';\n }\n\n init () {\n super.init();\n this._isDialog = this.node.tagName === 'DIALOG';\n this.isScrolling = false;\n this.listenClick();\n this.addEmission(api.core.RootEmission.KEYDOWN, this._keydown.bind(this));\n }\n\n _keydown (keyCode) {\n switch (keyCode) {\n case api.core.KeyCodes.ESCAPE:\n this._escape();\n break;\n }\n }\n\n // TODO v2 : passer les tagName d'action en constante\n _escape () {\n const tagName = document.activeElement ? document.activeElement.tagName : undefined;\n\n switch (tagName) {\n case 'INPUT':\n case 'LABEL':\n case 'TEXTAREA':\n case 'SELECT':\n case 'AUDIO':\n case 'VIDEO':\n break;\n\n default:\n if (this.isDisclosed) {\n this.conceal();\n this.focus();\n }\n }\n }\n\n retrieved () {\n this._ensureAccessibleName();\n }\n\n get body () {\n return this.element.getDescendantInstances('ModalBody', 'Modal')[0];\n }\n\n handleClick (e) {\n if (e.target === this.node && this.getAttribute(ModalAttribute.CONCEALING_BACKDROP) !== 'false') this.conceal();\n }\n\n disclose (withhold) {\n if (!super.disclose(withhold)) return false;\n if (this.body) this.body.activate();\n this.isScrollLocked = true;\n this.setAttribute('aria-modal', 'true');\n this.setAttribute('open', 'true');\n if (!this._isDialog) {\n this.activateModal();\n }\n return true;\n }\n\n conceal (withhold, preventFocus) {\n if (!super.conceal(withhold, preventFocus)) return false;\n this.isScrollLocked = false;\n this.removeAttribute('aria-modal');\n this.removeAttribute('open');\n if (this.body) this.body.deactivate();\n if (!this._isDialog) {\n this.deactivateModal();\n }\n return true;\n }\n\n get isDialog () {\n return this._isDialog;\n }\n\n set isDialog (value) {\n this._isDialog = value;\n }\n\n activateModal () {\n if (this._isActive) return;\n this._isActive = true;\n this._hasDialogRole = this.getAttribute('role') === 'dialog';\n if (!this._hasDialogRole) this.setAttribute('role', 'dialog');\n }\n\n deactivateModal () {\n if (!this._isActive) return;\n this._isActive = false;\n if (!this._hasDialogRole) this.removeAttribute('role');\n }\n\n _setAccessibleName (node, append) {\n const id = this.retrieveNodeId(node, append);\n this.warn(`add reference to ${append} for accessible name (aria-labelledby)`);\n this.setAttribute('aria-labelledby', id);\n }\n\n _ensureAccessibleName () {\n if (this.hasAttribute('aria-labelledby') || this.hasAttribute('aria-label')) return;\n this.warn('missing accessible name');\n const title = this.node.querySelector(ModalSelector.TITLE);\n const primary = this.primaryButtons[0];\n\n switch (true) {\n case title !== null:\n this._setAccessibleName(title, 'title');\n break;\n\n case primary !== undefined:\n this.warn('missing required title, fallback to primary button');\n this._setAccessibleName(primary, 'primary');\n break;\n }\n }\n}\n\nexport { Modal };\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\"])',\n 'details>summary:first-of-type',\n 'details',\n 'iframe'\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 IS_STUNNING = false;\n\nconst isFocusable = (element, container) => {\n if (!(element instanceof Element)) return false;\n const style = window.getComputedStyle(element);\n if (!style) return false;\n if (style.visibility === 'hidden') return false;\n if (container === undefined) container = element;\n\n while (container.contains(element)) {\n if (style.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.focusing = this.maintainFocus.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 window.requestAnimationFrame(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.indexOf(document.activeElement) === -1) focusables[0].focus();\n this.element.setAttribute('aria-modal', true);\n window.addEventListener('keydown', this.handling);\n document.body.addEventListener('focus', this.focusing, true);\n\n if (IS_STUNNING) {\n this.stunneds = [];\n this.stun(document.body);\n }\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 maintainFocus (event) {\n if (!this.element.contains(event.target)) {\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n const first = focusables[0];\n event.preventDefault();\n first.focus();\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 = api.internals.dom.querySelectorAllArray(this.element, 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 = api.internals.dom.querySelectorAllArray(document.documentElement, '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 = api.internals.dom.querySelectorAllArray(this.element, 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 document.body.removeEventListener('focus', this.focusing, true);\n\n this.element = null;\n\n if (IS_STUNNING) {\n for (const stunned of this.stunneds) stunned.unstun();\n this.stunneds = [];\n }\n\n if (this.onUntrap) this.onUntrap();\n }\n\n dispose () {\n this.untrap();\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 /*\n if (this.hidden === null) this.element.removeAttribute('aria-hidden');\n else this.element.setAttribute('aria-hidden', this.hidden);\n */\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('Modal', false);\n this.focusTrap = new FocusTrap();\n }\n\n static get instanceClassName () {\n return 'ModalsGroup';\n }\n\n apply (value, initial) {\n super.apply(value, initial);\n if (this.current === null) this.focusTrap.untrap();\n else this.focusTrap.trap(this.current.node);\n }\n}\n\nexport { ModalsGroup };\n","import api from '../../api.js';\nimport { ModalSelector } from './modal-selector.js';\n\nconst OFFSET = 32; // 32px => 8v => 2rem\n\nclass ModalBody extends api.core.Instance {\n static get instanceClassName () {\n return 'ModalBody';\n }\n\n init () {\n this.listen('scroll', this.divide.bind(this));\n }\n\n activate () {\n this.isResizing = true;\n this.resize();\n }\n\n deactivate () {\n this.isResizing = false;\n }\n\n divide () {\n if (this.node.scrollHeight > this.node.clientHeight) {\n if (this.node.offsetHeight + this.node.scrollTop >= this.node.scrollHeight) {\n this.removeClass(ModalSelector.SCROLL_DIVIDER);\n } else {\n this.addClass(ModalSelector.SCROLL_DIVIDER);\n }\n } else {\n this.removeClass(ModalSelector.SCROLL_DIVIDER);\n }\n }\n\n resize () {\n this.adjust();\n this.request(this.adjust.bind(this));\n }\n\n adjust () {\n const offset = OFFSET * (this.isBreakpoint(api.core.Breakpoints.MD) ? 2 : 1);\n if (this.isLegacy) this.style.maxHeight = `${window.innerHeight - offset}px`;\n else this.style.setProperty('--modal-max-height', `${window.innerHeight - offset}px`);\n this.divide();\n }\n}\n\nexport { ModalBody };\n","import api from './api.js';\n\nimport { Modal } from './script/modal/modal.js';\nimport { ModalButton } from './script/modal/modal-button.js';\nimport { ModalsGroup } from './script/modal/modals-group.js';\nimport { ModalBody } from './script/modal/modal-body.js';\nimport { ModalSelector } from './script/modal/modal-selector.js';\n\napi.modal = {\n Modal: Modal,\n ModalButton: ModalButton,\n ModalBody: ModalBody,\n ModalsGroup: ModalsGroup,\n ModalSelector: ModalSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.modal.ModalSelector.MODAL, api.modal.Modal);\napi.internals.register(api.modal.ModalSelector.BODY, api.modal.ModalBody);\napi.internals.register(api.core.RootSelector.ROOT, api.modal.ModalsGroup);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const PasswordEmission = {\n TOGGLE: api.internals.ns.emission('password', 'toggle'),\n ADJUST: api.internals.ns.emission('password', 'adjust')\n};\n","import api from '../../api.js';\nimport { PasswordEmission } from './password-emission.js';\n\nclass PasswordToggle extends api.core.Instance {\n static get instanceClassName () {\n return 'PasswordToggle';\n }\n\n init () {\n this.listenClick();\n this.ascend(PasswordEmission.ADJUST, this.width);\n this.isSwappingFont = true;\n this._isChecked = this.isChecked;\n }\n\n get width () {\n const style = getComputedStyle(this.node.parentNode);\n return parseInt(style.width);\n }\n\n get isChecked () {\n return this.node.checked;\n }\n\n set isChecked (value) {\n this._isChecked = value;\n this.ascend(PasswordEmission.TOGGLE, value);\n }\n\n handleClick () {\n this.isChecked = !this._isChecked;\n }\n\n swapFont (families) {\n this.ascend(PasswordEmission.ADJUST, this.width);\n }\n}\n\nexport { PasswordToggle };\n","import api from '../../api.js';\nimport { PasswordEmission } from './password-emission.js';\n\nclass Password extends api.core.Instance {\n static get instanceClassName () {\n return 'Password';\n }\n\n init () {\n this.addAscent(PasswordEmission.TOGGLE, this.toggle.bind(this));\n this.addAscent(PasswordEmission.ADJUST, this.adjust.bind(this));\n }\n\n toggle (value) {\n this.descend(PasswordEmission.TOGGLE, value);\n }\n\n adjust (value) {\n this.descend(PasswordEmission.ADJUST, value);\n }\n}\n\nexport { Password };\n","import api from '../../api.js';\n\nexport const PasswordSelector = {\n PASSWORD: api.internals.ns.selector('password'),\n INPUT: api.internals.ns.selector('password__input'),\n LABEL: api.internals.ns.selector('password__label'),\n TOOGLE: `${api.internals.ns.selector('password__checkbox')} input[type=\"checkbox\"]`\n};\n","import api from '../../api.js';\nimport { PasswordEmission } from './password-emission.js';\n\nclass PasswordInput extends api.core.Instance {\n static get instanceClassName () {\n return 'PasswordInput';\n }\n\n init () {\n this.addDescent(PasswordEmission.TOGGLE, this.toggle.bind(this));\n this._isRevealed = this.hasAttribute('type') === 'password';\n this.listen('keydown', this.capslock.bind(this)); // for capslock enabled\n this.listen('keyup', this.capslock.bind(this)); // for capslock desabled\n }\n\n toggle (value) {\n this.isRevealed = value;\n this.setAttribute('type', value ? 'text' : 'password');\n }\n\n get isRevealed () {\n return this._isRevealed;\n }\n\n capslock (event) {\n if (event && typeof event.getModifierState !== 'function') return;\n if (event.getModifierState('CapsLock')) {\n this.node.parentNode.setAttribute(api.internals.ns.attr('capslock'), '');\n } else {\n this.node.parentNode.removeAttribute(api.internals.ns.attr('capslock'));\n }\n }\n\n set isRevealed (value) {\n this._isRevealed = value;\n this.setAttribute('type', value ? 'text' : 'password');\n }\n}\n\nexport { PasswordInput };\n","import api from '../../api.js';\nimport { PasswordEmission } from './password-emission.js';\n\nclass PasswordLabel extends api.core.Instance {\n static get instanceClassName () {\n return 'PasswordLabel';\n }\n\n init () {\n this.addDescent(PasswordEmission.ADJUST, this.adjust.bind(this));\n }\n\n adjust (value) {\n const valueREM = Math.ceil(value / 16);\n this.node.style.paddingRight = valueREM + 'rem';\n }\n}\n\nexport { PasswordLabel };\n","import api from './api.js';\nimport { PasswordToggle } from './script/password/password-toggle.js';\nimport { Password } from './script/password/password.js';\nimport { PasswordSelector } from './script/password/password-selector.js';\nimport { PasswordInput } from './script/password/password-input.js';\nimport { PasswordLabel } from './script/password/password-label.js';\n\napi.password = {\n Password: Password,\n PasswordToggle: PasswordToggle,\n PasswordSelector: PasswordSelector,\n PasswordInput: PasswordInput,\n PasswordLabel: PasswordLabel\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.password.PasswordSelector.INPUT, api.password.PasswordInput);\napi.internals.register(api.password.PasswordSelector.PASSWORD, api.password.Password);\napi.internals.register(api.password.PasswordSelector.TOOGLE, api.password.PasswordToggle);\napi.internals.register(api.password.PasswordSelector.LABEL, api.password.PasswordLabel);\n\nexport default api;\n","import api from '../../api.js';\n\nconst ITEM = api.internals.ns.selector('nav__item');\nconst COLLAPSE = api.internals.ns.selector('collapse');\n\nexport const NavigationSelector = {\n NAVIGATION: api.internals.ns.selector('nav'),\n COLLAPSE: `${ITEM} > ${COLLAPSE}, ${ITEM} > *:not(${ITEM}):not(${COLLAPSE}) > ${COLLAPSE}, ${ITEM} > *:not(${ITEM}):not(${COLLAPSE}) > *:not(${ITEM}):not(${COLLAPSE}) > ${COLLAPSE}`,\n COLLAPSE_LEGACY: `${ITEM} ${COLLAPSE}`,\n ITEM: ITEM,\n ITEM_RIGHT: `${ITEM}--align-right`,\n MENU: api.internals.ns.selector('menu'),\n BUTTON: api.internals.ns.selector('nav__btn'),\n TRANSLATE_BUTTON: api.internals.ns.selector('translate__btn')\n};\n","import api from '../../api.js';\nimport { NavigationSelector } from './navigation-selector.js';\n\nclass NavigationItem extends api.core.Instance {\n constructor () {\n super();\n this._isRightAligned = false;\n }\n\n static get instanceClassName () {\n return 'NavigationItem';\n }\n\n init () {\n this.addAscent(api.core.DisclosureEmission.ADDED, this.calculate.bind(this));\n this.addAscent(api.core.DisclosureEmission.REMOVED, this.calculate.bind(this));\n this.isResizing = true;\n this.calculate();\n }\n\n resize () {\n this.calculate();\n }\n\n calculate () {\n const collapse = this.element.getDescendantInstances(api.core.Collapse.instanceClassName, null, true)[0];\n if (collapse && this.isBreakpoint(api.core.Breakpoints.LG) && collapse.element.node.matches(NavigationSelector.MENU)) {\n const right = this.element.node.parentElement.getBoundingClientRect().right; // todo: ne fonctionne que si la nav fait 100% du container\n const width = collapse.element.node.getBoundingClientRect().width;\n const left = this.element.node.getBoundingClientRect().left;\n this.isRightAligned = left + width > right;\n } else this.isRightAligned = false;\n }\n\n get isRightAligned () {\n return this._isRightAligned;\n }\n\n set isRightAligned (value) {\n if (this._isRightAligned === value) return;\n this._isRightAligned = value;\n if (value) api.internals.dom.addClass(this.element.node, NavigationSelector.ITEM_RIGHT);\n else api.internals.dom.removeClass(this.element.node, NavigationSelector.ITEM_RIGHT);\n }\n\n get collapsePrimary () {\n const buttons = this.element.children.map(child => child.getInstance('CollapseButton')).filter(button => button !== null && (button.hasClass(NavigationSelector.BUTTON) || button.hasClass(NavigationSelector.TRANSLATE_BUTTON)));\n return buttons[0];\n }\n}\n\nexport { NavigationItem };\n","export const NavigationMousePosition = {\n NONE: -1,\n INSIDE: 0,\n OUTSIDE: 1\n};\n","import api from '../../api.js';\nimport { NavigationSelector } from './navigation-selector.js';\nimport { NavigationMousePosition } from './navigation-mouse-position.js';\n\nclass Navigation extends api.core.CollapsesGroup {\n static get instanceClassName () {\n return 'Navigation';\n }\n\n init () {\n super.init();\n this.clicked = false;\n this.out = false;\n this.addEmission(api.core.RootEmission.CLICK, this._handleRootClick.bind(this));\n this.listen('mousedown', this.handleMouseDown.bind(this));\n this.listenClick({ capture: true });\n this.isResizing = true;\n }\n\n validate (member) {\n return super.validate(member) && member.element.node.matches(api.internals.legacy.isLegacy ? NavigationSelector.COLLAPSE_LEGACY : NavigationSelector.COLLAPSE);\n }\n\n handleMouseDown (e) {\n if (!this.isBreakpoint(api.core.Breakpoints.LG) || this.index === -1 || !this.current) return;\n this.position = this.current.node.contains(e.target) ? NavigationMousePosition.INSIDE : NavigationMousePosition.OUTSIDE;\n this.requestPosition();\n }\n\n handleClick (e) {\n if (e.target.matches('a, button') && !e.target.matches('[aria-controls]') && !e.target.matches(api.core.DisclosureSelector.PREVENT_CONCEAL)) {\n this.index = -1;\n }\n }\n\n _handleRootClick (target) {\n if (!this.isBreakpoint(api.core.Breakpoints.LG)) return;\n if (!this.node.contains(target)) {\n this.out = true;\n this.requestPosition();\n }\n }\n\n requestPosition () {\n if (this.isRequesting) return;\n this.isRequesting = true;\n this.request(this.getPosition.bind(this));\n }\n\n getPosition () {\n if (this.out) {\n switch (this.position) {\n case NavigationMousePosition.OUTSIDE:\n this.index = -1;\n break;\n\n case NavigationMousePosition.INSIDE:\n if (this.current && !this.current.node.contains(document.activeElement)) this.current.focus();\n break;\n\n default:\n if (this.index > -1 && !this.current.hasFocus) this.index = -1;\n }\n }\n\n this.request(this.requested.bind(this));\n }\n\n requested () {\n this.position = NavigationMousePosition.NONE;\n this.out = false;\n this.isRequesting = false;\n }\n\n get index () { return super.index; }\n\n set index (value) {\n if (value === -1 && this.current && this.current.hasFocus) this.current.focus();\n super.index = value;\n }\n\n get canUngroup () {\n return !this.isBreakpoint(api.core.Breakpoints.LG);\n }\n\n resize () {\n this.update();\n }\n}\n\nexport { Navigation };\n","import api from './api.js';\nimport { NavigationItem } from './script/navigation/navigation-item.js';\nimport { Navigation } from './script/navigation/navigation.js';\nimport { NavigationSelector } from './script/navigation/navigation-selector.js';\nimport { NavigationMousePosition } from './script/navigation/navigation-mouse-position.js';\n\napi.navigation = {\n Navigation: Navigation,\n NavigationItem: NavigationItem,\n NavigationMousePosition: NavigationMousePosition,\n NavigationSelector: NavigationSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.navigation.NavigationSelector.NAVIGATION, api.navigation.Navigation);\napi.internals.register(api.navigation.NavigationSelector.ITEM, api.navigation.NavigationItem);\n\nexport default api;\n","import api from '../../api.js';\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 constructor () {\n super(api.core.DisclosureType.SELECT);\n }\n\n static get instanceClassName () {\n return 'TabButton';\n }\n\n handleClick (e) {\n super.handleClick(e);\n this.focus();\n }\n\n apply (value) {\n super.apply(value);\n if (this.isPrimary) {\n this.setAttribute('tabindex', value ? '0' : '-1');\n if (value) {\n if (this.list) this.list.focalize(this);\n }\n }\n }\n\n get list () {\n return this.element.getAscendantInstance('TabsList', 'TabsGroup');\n }\n}\n\nexport { TabButton };\n","import api from '../../api.js';\n\nexport const TabSelector = {\n TAB: api.internals.ns.selector('tabs__tab'),\n GROUP: api.internals.ns.selector('tabs'),\n PANEL: api.internals.ns.selector('tabs__panel'),\n LIST: api.internals.ns.selector('tabs__list'),\n SHADOW: api.internals.ns.selector('tabs__shadow'),\n SHADOW_LEFT: api.internals.ns.selector('tabs__shadow--left'),\n SHADOW_RIGHT: api.internals.ns.selector('tabs__shadow--right'),\n PANEL_START: api.internals.ns.selector('tabs__panel--direction-start'),\n PANEL_END: api.internals.ns.selector('tabs__panel--direction-end')\n};\n","export const TabPanelDirection = {\n START: 'direction-start',\n END: 'direction-end',\n NONE: 'none'\n};\n","import api from '../../api.js';\nimport { TabButton } from './tab-button.js';\nimport { TabSelector } from './tab-selector.js';\nimport { TabPanelDirection } from './tab-panel-direction.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 TabPanel extends api.core.Disclosure {\n constructor () {\n super(api.core.DisclosureType.SELECT, TabSelector.PANEL, TabButton, 'TabsGroup');\n this._direction = TabPanelDirection.NONE;\n this._isPreventingTransition = false;\n }\n\n static get instanceClassName () {\n return 'TabPanel';\n }\n\n get direction () {\n return this._direction;\n }\n\n set direction (value) {\n if (value === this._direction) return;\n switch (this._direction) {\n case TabPanelDirection.START:\n this.removeClass(TabSelector.PANEL_START);\n break;\n\n case TabPanelDirection.END:\n this.removeClass(TabSelector.PANEL_END);\n break;\n\n case TabPanelDirection.NONE:\n break;\n\n default:\n return;\n }\n\n this._direction = value;\n\n switch (this._direction) {\n case TabPanelDirection.START:\n this.addClass(TabSelector.PANEL_START);\n break;\n\n case TabPanelDirection.END:\n this.addClass(TabSelector.PANEL_END);\n break;\n }\n }\n\n get isPreventingTransition () {\n return this._isPreventingTransition;\n }\n\n set isPreventingTransition (value) {\n if (this._isPreventingTransition === value) return;\n if (value) this.addClass(api.internals.motion.TransitionSelector.NONE);\n else this.removeClass(api.internals.motion.TransitionSelector.NONE);\n this._isPreventingTransition = value === true;\n }\n\n translate (direction, initial) {\n this.isPreventingTransition = initial;\n this.direction = direction;\n }\n\n reset () {\n if (this.group) this.group.retrieve(true);\n }\n\n _electPrimaries (candidates) {\n if (!this.group || !this.group.list) return [];\n return super._electPrimaries(candidates).filter(candidate => this.group.list.node.contains(candidate.node));\n }\n}\n\nexport { TabPanel };\n","export const TabKeys = {\n LEFT: 'tab_keys_left',\n RIGHT: 'tab_keys_right',\n HOME: 'tab_keys_home',\n END: 'tab_keys_end'\n};\n","import api from '../../api.js';\n\nexport const TabEmission = {\n PRESS_KEY: api.internals.ns.emission('tab', 'press_key'),\n LIST_HEIGHT: api.internals.ns.emission('tab', 'list_height')\n};\n","import api from '../../api.js';\nimport { TabPanelDirection } from './tab-panel-direction.js';\nimport { TabKeys } from './tab-keys';\nimport { TabEmission } from './tab-emission';\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 () {\n super('TabPanel');\n }\n\n static get instanceClassName () {\n return 'TabsGroup';\n }\n\n init () {\n super.init();\n\n this.listen('transitionend', this.transitionend.bind(this));\n this.addAscent(TabEmission.PRESS_KEY, this.pressKey.bind(this));\n this.addAscent(TabEmission.LIST_HEIGHT, this.setListHeight.bind(this));\n this.isRendering = true;\n }\n\n getIndex (defaultIndex = 0) {\n super.getIndex(defaultIndex);\n }\n\n get list () {\n return this.element.getDescendantInstances('TabsList', 'TabsGroup', true)[0];\n }\n\n setListHeight (value) {\n this.listHeight = value;\n }\n\n transitionend (e) {\n this.isPreventingTransition = true;\n }\n\n get buttonHasFocus () {\n return this.members.some(member => member.buttonHasFocus);\n }\n\n pressKey (key) {\n switch (key) {\n case TabKeys.LEFT:\n this.pressLeft();\n break;\n\n case TabKeys.RIGHT:\n this.pressRight();\n break;\n\n case TabKeys.HOME:\n this.pressHome();\n break;\n\n case TabKeys.END:\n this.pressEnd();\n break;\n }\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 pressRight () {\n if (this.buttonHasFocus) {\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 pressLeft () {\n if (this.buttonHasFocus) {\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 pressHome () {\n if (this.buttonHasFocus) {\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 pressEnd () {\n if (this.buttonHasFocus) {\n this.index = this.length - 1;\n this.focus();\n }\n };\n\n focus () {\n if (this.current) {\n this.current.focus();\n }\n }\n\n apply () {\n for (let i = 0; i < this._index; i++) this.members[i].translate(TabPanelDirection.START);\n if (this.current) this.current.translate(TabPanelDirection.NONE);\n for (let i = this._index + 1; i < this.length; i++) this.members[i].translate(TabPanelDirection.END);\n this.isPreventingTransition = false;\n }\n\n get isPreventingTransition () {\n return this._isPreventingTransition;\n }\n\n set isPreventingTransition (value) {\n if (this._isPreventingTransition === value) return;\n if (value) this.addClass(api.internals.motion.TransitionSelector.NONE);\n else this.removeClass(api.internals.motion.TransitionSelector.NONE);\n this._isPreventingTransition = value === true;\n }\n\n render () {\n if (this.current === null) return;\n this.node.scrollTop = 0;\n this.node.scrollLeft = 0;\n const paneHeight = Math.round(this.current.node.offsetHeight);\n if (this.panelHeight === paneHeight) return;\n this.panelHeight = paneHeight;\n this.style.setProperty('--tabs-height', (this.panelHeight + this.listHeight) + 'px');\n }\n}\n\nexport { TabsGroup };\n","import api from '../../api.js';\nimport { TabSelector } from './tab-selector';\nimport { TabKeys } from './tab-keys';\nimport { TabEmission } from './tab-emission';\n\nconst FOCALIZE_OFFSET = 16;\nconst SCROLL_OFFSET = 16; // valeur en px du scroll avant laquelle le shadow s'active ou se desactive\n\nclass TabsList extends api.core.Instance {\n static get instanceClassName () {\n return 'TabsList';\n }\n\n init () {\n this.listen('scroll', this.scroll.bind(this));\n this.listenKey(api.core.KeyCodes.RIGHT, this.ascend.bind(this, TabEmission.PRESS_KEY, TabKeys.RIGHT), true, true);\n this.listenKey(api.core.KeyCodes.LEFT, this.ascend.bind(this, TabEmission.PRESS_KEY, TabKeys.LEFT), true, true);\n this.listenKey(api.core.KeyCodes.HOME, this.ascend.bind(this, TabEmission.PRESS_KEY, TabKeys.HOME), true, true);\n this.listenKey(api.core.KeyCodes.END, this.ascend.bind(this, TabEmission.PRESS_KEY, TabKeys.END), true, true);\n this.isResizing = true;\n }\n\n focalize (btn) {\n const btnRect = btn.getRect();\n const listRect = this.getRect();\n const actualScroll = this.node.scrollLeft;\n if (btnRect.left < listRect.left) this.node.scrollTo(actualScroll - listRect.left + btnRect.left - FOCALIZE_OFFSET, 0);\n else if (btnRect.right > listRect.right) this.node.scrollTo(actualScroll - listRect.right + btnRect.right + FOCALIZE_OFFSET, 0);\n }\n\n get isScrolling () {\n return this._isScrolling;\n }\n\n set isScrolling (value) {\n if (this._isScrolling === value) return;\n this._isScrolling = value;\n this.apply();\n }\n\n apply () {\n if (this._isScrolling) {\n this.addClass(TabSelector.SHADOW);\n this.scroll();\n } else {\n this.removeClass(TabSelector.SHADOW_RIGHT);\n this.removeClass(TabSelector.SHADOW_LEFT);\n this.removeClass(TabSelector.SHADOW);\n }\n }\n\n /* ajoute la classe fr-table__shadow-left ou fr-table__shadow-right sur fr-table en fonction d'une valeur de scroll et du sens (right, left) */\n scroll () {\n const scrollLeft = this.node.scrollLeft;\n const isMin = scrollLeft <= SCROLL_OFFSET;\n const max = this.node.scrollWidth - this.node.clientWidth - SCROLL_OFFSET;\n\n const isMax = Math.abs(scrollLeft) >= max;\n const isRtl = document.documentElement.getAttribute('dir') === 'rtl';\n const minSelector = isRtl ? TabSelector.SHADOW_RIGHT : TabSelector.SHADOW_LEFT;\n const maxSelector = isRtl ? TabSelector.SHADOW_LEFT : TabSelector.SHADOW_RIGHT;\n\n if (isMin) {\n this.removeClass(minSelector);\n } else {\n this.addClass(minSelector);\n }\n\n if (isMax) {\n this.removeClass(maxSelector);\n } else {\n this.addClass(maxSelector);\n }\n }\n\n resize () {\n this.isScrolling = this.node.scrollWidth > this.node.clientWidth + SCROLL_OFFSET;\n const height = this.getRect().height;\n this.setProperty('--tabs-list-height', `${height}px`);\n this.ascend(TabEmission.LIST_HEIGHT, height);\n }\n\n dispose () {\n this.isScrolling = false;\n }\n}\n\nexport { TabsList };\n","import api from './api.js';\nimport { TabPanel } from './script/tab/tab-panel.js';\nimport { TabButton } from './script/tab/tab-button.js';\nimport { TabsGroup } from './script/tab/tabs-group.js';\nimport { TabsList } from './script/tab/tabs-list.js';\nimport { TabSelector } from './script/tab/tab-selector.js';\nimport { TabEmission } from './script/tab/tab-emission.js';\n\napi.tab = {\n TabPanel: TabPanel,\n TabButton: TabButton,\n TabsGroup: TabsGroup,\n TabsList: TabsList,\n TabSelector: TabSelector,\n TabEmission: TabEmission\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.tab.TabSelector.PANEL, api.tab.TabPanel);\napi.internals.register(api.tab.TabSelector.GROUP, api.tab.TabsGroup);\napi.internals.register(api.tab.TabSelector.LIST, api.tab.TabsList);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const TableEmission = {\n SCROLLABLE: api.internals.ns.emission('table', 'scrollable'),\n CHANGE: api.internals.ns.emission('table', 'change'),\n CAPTION_HEIGHT: api.internals.ns.emission('table', 'captionheight')\n};\n","import api from '../../api.js';\nimport { TableEmission } from './table-emission.js';\n\nconst PADDING = '1rem'; // padding de 4v sur le caption\n\nclass Table extends api.core.Instance {\n static get instanceClassName () {\n return 'Table';\n }\n\n init () {\n this.addAscent(TableEmission.CAPTION_HEIGHT, this.setCaptionHeight.bind(this));\n }\n\n setCaptionHeight (value) {\n this.setProperty('--table-offset', `calc(${value}px + ${PADDING})`);\n }\n}\n\nexport { Table };\n","import api from '../../api.js';\n\nexport const TableSelector = {\n TABLE: api.internals.ns.selector('table'),\n SHADOW: api.internals.ns.selector('table__shadow'),\n SHADOW_LEFT: api.internals.ns.selector('table__shadow--left'),\n SHADOW_RIGHT: api.internals.ns.selector('table__shadow--right'),\n ELEMENT: `${api.internals.ns.selector('table')}:not(${api.internals.ns.selector('table--no-scroll')}) table`,\n CAPTION: `${api.internals.ns.selector('table')} table caption`\n};\n","import api from '../../api.js';\nimport { TableSelector } from './table-selector.js';\n\nconst SCROLL_OFFSET = 8; // valeur en px du scroll avant laquelle le shadow s'active ou se desactive\n\nclass TableElement extends api.core.Instance {\n static get instanceClassName () {\n return 'TableElement';\n }\n\n init () {\n this.listen('scroll', this.scroll.bind(this));\n this.content = this.querySelector('tbody');\n this.isResizing = true;\n }\n\n get isScrolling () {\n return this._isScrolling;\n }\n\n set isScrolling (value) {\n if (this._isScrolling === value) return;\n this._isScrolling = value;\n\n if (value) {\n this.addClass(TableSelector.SHADOW);\n this.scroll();\n } else {\n this.removeClass(TableSelector.SHADOW);\n this.removeClass(TableSelector.SHADOW_LEFT);\n this.removeClass(TableSelector.SHADOW_RIGHT);\n }\n }\n\n /* ajoute la classe fr-table__shadow-left ou fr-table__shadow-right sur fr-table en fonction d'une valeur de scroll et du sens (right, left) */\n scroll () {\n const isMin = this.node.scrollLeft <= SCROLL_OFFSET;\n const max = this.content.offsetWidth - this.node.offsetWidth - SCROLL_OFFSET;\n const isMax = Math.abs(this.node.scrollLeft) >= max;\n const isRtl = document.documentElement.getAttribute('dir') === 'rtl';\n const minSelector = isRtl ? TableSelector.SHADOW_RIGHT : TableSelector.SHADOW_LEFT;\n const maxSelector = isRtl ? TableSelector.SHADOW_LEFT : TableSelector.SHADOW_RIGHT;\n\n if (isMin) {\n this.removeClass(minSelector);\n } else {\n this.addClass(minSelector);\n }\n\n if (isMax) {\n this.removeClass(maxSelector);\n } else {\n this.addClass(maxSelector);\n }\n }\n\n resize () {\n this.isScrolling = this.content.offsetWidth > this.node.offsetWidth;\n }\n\n dispose () {\n this.isScrolling = false;\n }\n}\n\nexport { TableElement };\n","import api from '../../api.js';\nimport { TableEmission } from './table-emission.js';\n\nclass TableCaption extends api.core.Instance {\n static get instanceClassName () {\n return 'TableCaption';\n }\n\n init () {\n this.height = 0;\n this.isResizing = true;\n }\n\n resize () {\n const height = this.getRect().height;\n if (this.height === height) return;\n this.height = height;\n this.ascend(TableEmission.CAPTION_HEIGHT, height);\n }\n}\n\nexport { TableCaption };\n","import api from './api.js';\nimport { Table } from './script/table/table.js';\nimport { TableElement } from './script/table/table-element.js';\nimport { TableSelector } from './script/table/table-selector.js';\nimport { TableCaption } from './script/table/table-caption.js';\n\napi.table = {\n Table: Table,\n TableElement: TableElement,\n TableCaption: TableCaption,\n TableSelector: TableSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.table.TableSelector.TABLE, api.table.Table);\napi.internals.register(api.table.TableSelector.ELEMENT, api.table.TableElement);\napi.internals.register(api.table.TableSelector.CAPTION, api.table.TableCaption);\n\nexport default api;\n","import api from '../../api.js';\n\nconst TagEvent = {\n DISMISS: api.internals.ns.event('dismiss')\n};\n\nexport { TagEvent };\n","import api from '../../api.js';\nimport { TagEvent } from './tag-event';\n\nclass TagDismissible extends api.core.Instance {\n static get instanceClassName () {\n return 'TagDismissible';\n }\n\n init () {\n this.listenClick();\n }\n\n handleClick () {\n this.focusClosest();\n\n switch (api.mode) {\n case api.Modes.ANGULAR:\n case api.Modes.REACT:\n case api.Modes.VUE:\n this.request(this.verify.bind(this));\n break;\n\n default:\n this.remove();\n }\n\n this.dispatch(TagEvent.DISMISS);\n }\n\n verify () {\n if (document.body.contains(this.node)) this.warn(`a TagDismissible has just been dismissed and should be removed from the dom. In ${api.mode} mode, the api doesn't handle dom modification. An event ${TagEvent.DISMISS} is dispatched by the element to trigger the removal`);\n }\n}\n\nexport { TagDismissible };\n","import api from '../../api.js';\n\nexport const TagSelector = {\n PRESSABLE: `${api.internals.ns.selector('tag')}[aria-pressed]`,\n DISMISSIBLE: `${api.internals.ns.selector('tag--dismiss')}`\n};\n","import api from './api.js';\nimport { TagDismissible } from './script/tag/tag-dismissible';\nimport { TagSelector } from './script/tag/tag-selector';\nimport { TagEvent } from './script/tag/tag-event';\n\napi.tag = {\n TagDismissible: TagDismissible,\n TagSelector: TagSelector,\n TagEvent: TagEvent\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.tag.TagSelector.PRESSABLE, api.core.Toggle);\napi.internals.register(api.tag.TagSelector.DISMISSIBLE, api.tag.TagDismissible);\n\nexport default api;\n","import api from '../../api.js';\n\nconst TRANSCRIPTION = api.internals.ns.selector('transcription');\n\nexport const TranscriptionSelector = {\n TRANSCRIPTION: TRANSCRIPTION,\n BUTTON: `${TRANSCRIPTION}__btn`\n};\n","import api from '../../api.js';\nimport { TranscriptionSelector } from './transcription-selector';\n\nclass Transcription extends api.core.Instance {\n static get instanceClassName () {\n return 'Transcription';\n }\n\n get collapsePrimary () {\n const buttons = this.element.children.map(child => child.getInstance('CollapseButton')).filter(button => button !== null && button.hasClass(TranscriptionSelector.BUTTON));\n return buttons[0];\n }\n}\n\nexport { Transcription };\n","import api from './api.js';\nimport { Transcription } from './script/accordion/transcription';\nimport { TranscriptionSelector } from './script/accordion/transcription-selector.js';\n\napi.transcription = {\n Transcription: Transcription,\n TranscriptionSelector: TranscriptionSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.transcription.TranscriptionSelector.TRANSCRIPTION, api.transcription.Transcription);\n\nexport default api;\n","import api from '../../api.js';\n\nclass TileDownload extends api.core.Instance {\n static get instanceClassName () {\n return 'TileDownload';\n }\n\n init () {\n this.addAscent(api.core.AssessEmission.UPDATE, details => {\n this.descend(api.core.AssessEmission.UPDATE, details);\n });\n this.addAscent(api.core.AssessEmission.ADDED, () => {\n this.descend(api.core.AssessEmission.ADDED);\n });\n }\n}\n\nexport { TileDownload };\n","import api from '../../api.js';\n\nexport const TileSelector = {\n DOWNLOAD: api.internals.ns.selector('tile--download'),\n DOWNLOAD_DETAIL: `${api.internals.ns.selector('tile--download')} ${api.internals.ns.selector('tile__detail')}`\n};\n","import api from './api.js';\nimport { TileDownload } from './script/tile/tile-download.js';\nimport { TileSelector } from './script/tile/tile-selector.js';\n\napi.tile = {\n TileSelector: TileSelector,\n TileDownload: TileDownload\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.tile.TileSelector.DOWNLOAD, api.tile.TileDownload);\napi.internals.register(api.tile.TileSelector.DOWNLOAD_DETAIL, api.core.AssessDetail);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const RangeSelector = {\n RANGE: api.internals.ns.selector('range'),\n RANGE_SM: api.internals.ns.selector('range--sm'),\n RANGE_STEP: api.internals.ns.selector('range--step'),\n RANGE_DOUBLE: api.internals.ns.selector('range--double'),\n RANGE_DOUBLE_STEP: api.internals.ns.selector('range--double') + api.internals.ns.selector('range--step'),\n RANGE_INPUT: api.internals.ns.selector('range input[type=range]:nth-of-type(1)'),\n RANGE_INPUT2: `${api.internals.ns.selector('range--double')} input[type=range]:nth-of-type(2)`,\n RANGE_OUTPUT: api.internals.ns.selector('range__output'),\n RANGE_MIN: api.internals.ns.selector('range__min'),\n RANGE_MAX: api.internals.ns.selector('range__max'),\n RANGE_PREFIX: api.internals.ns.attr('prefix'),\n RANGE_SUFFIX: api.internals.ns.attr('suffix')\n};\n","import api from '../../api.js';\n\nexport const RangeEmission = {\n VALUE: api.internals.ns.emission('range', 'value'),\n VALUE2: api.internals.ns.emission('range', 'value2'),\n OUTPUT: api.internals.ns.emission('range', 'output'),\n CONSTRAINTS: api.internals.ns.emission('range', 'constraints'),\n MIN: api.internals.ns.emission('range', 'min'),\n MAX: api.internals.ns.emission('range', 'max'),\n STEP: api.internals.ns.emission('range', 'step'),\n PREFIX: api.internals.ns.emission('range', 'prefix'),\n SUFFIX: api.internals.ns.emission('range', 'suffix'),\n DISABLED: api.internals.ns.emission('range', 'disabled'),\n ENABLE_POINTER: api.internals.ns.emission('range', 'enable_pointer')\n};\n","class RangeModel {\n constructor () {\n this._width = 0;\n this._min = 0;\n this._max = 0;\n this._value = 0;\n this._thumbSize = 24;\n this._innerWidth = 0;\n this._prefix = '';\n this._suffix = '';\n this._background = {};\n }\n\n configure (model) {\n if (!model) return;\n this._prefix = model._prefix;\n this._suffix = model._suffix;\n this._width = model.width;\n this.setConstraints(model._constraints);\n this.value = model.value;\n this.update();\n }\n\n setPrefix (value) {\n this._prefix = value !== null ? value : '';\n }\n\n setSuffix (value) {\n this._suffix = value !== null ? value : '';\n }\n\n _decorate (value) {\n return `${this._prefix}${value}${this._suffix}`;\n }\n\n get width () {\n return this._width;\n }\n\n set width (value) {\n this._width = value;\n }\n\n get isSm () {\n return this._isSm;\n }\n\n set isSm (value) {\n if (this._isSm === value) return;\n this._isSm = value;\n this.setThumbSize(value ? 16 : 24);\n this.update();\n }\n\n setThumbSize (value, mult = 1) {\n this._thumbSize = value;\n this._innerPadding = value * mult;\n }\n\n get textValue () {\n return this._decorate(this._value);\n }\n\n get value () {\n return this._value;\n }\n\n set value (value) {\n this._value = value;\n }\n\n get outputX () {\n return this._outputX;\n }\n\n setConstraints (constraints) {\n this._constraints = constraints;\n this._min = constraints.min;\n this._max = constraints.max;\n this._step = constraints.step;\n this._rangeWidth = constraints.rangeWidth;\n }\n\n get min () {\n return this._min;\n }\n\n get textMin () {\n return this._decorate(this._min);\n }\n\n get max () {\n return this._max;\n }\n\n get textMax () {\n return this._decorate(this._max);\n }\n\n get step () {\n return this._step;\n }\n\n get output () {\n return {\n text: this.textValue,\n transform: `translateX(${this._translateX}px) translateX(-${this._centerPercent}%)`\n };\n }\n\n _getRatio (value) {\n return (value - this._min) / this._rangeWidth;\n }\n\n get progress () {\n return this._progress;\n }\n\n update () {\n this._update();\n }\n\n _update () {\n this._innerWidth = this._width - this._innerPadding;\n const ratio = this._getRatio(this._value);\n this._translateX = ratio * this._width;\n this._centerPercent = ratio * 100;\n this._progress = {\n right: `${(this._innerWidth * ratio + this._innerPadding * 0.5).toFixed(2)}px`\n };\n }\n}\n\nclass RangeModelStep extends RangeModel {\n get stepWidth () {\n return `${this._stepWidth.toFixed(3)}px`;\n }\n\n _update () {\n super._update();\n const steps = this._rangeWidth / this._step;\n this._stepWidth = this._innerWidth / steps;\n while (this._stepWidth < 4) this._stepWidth *= 2;\n }\n}\n\nclass RangeModelDouble extends RangeModel {\n get value2 () {\n return this._value;\n }\n\n set value2 (value) {\n if (this._value2 === value) return;\n this._value2 = value;\n this.update();\n }\n\n get textValue () {\n return `${this._decorate(this._value)} - ${this._decorate(this._value2)}`;\n }\n\n setThumbSize (value) {\n super.setThumbSize(value, 2);\n }\n\n _update () {\n super._update();\n const ratio = this._getRatio((this._value + this._value2) * 0.5);\n this._translateX = ratio * this._width;\n this._centerPercent = ratio * 100;\n const ratio1 = this._getRatio(this._value);\n const ratio2 = this._getRatio(this._value2);\n this._progress = {\n left: `${(this._innerWidth * ratio1 + this._innerPadding * 0.25).toFixed(2)}px`,\n right: `${(this._innerWidth * ratio2 + this._innerPadding * 0.75).toFixed(2)}px`\n };\n }\n}\n\nclass RangeModelDoubleStep extends RangeModelDouble {\n get stepWidth () {\n return `${this._stepWidth.toFixed(3)}px`;\n }\n\n _update () {\n super._update();\n const steps = this._rangeWidth / this._step;\n this._stepWidth = this._innerWidth / steps;\n if (this._stepWidth < 4) this._stepWidth *= Math.ceil(4 / this._stepWidth);\n }\n}\n\nexport { RangeModel, RangeModelStep, RangeModelDouble, RangeModelDoubleStep };\n","import api from '../../api.js';\nimport { RangeEmission } from './range-emission.js';\nimport { RangeSelector } from './range-selector.js';\nimport { RangeModel, RangeModelStep, RangeModelDouble, RangeModelDoubleStep } from './range-model';\n\nconst RangeTypes = {\n STEP: 'step',\n DOUBLE: 'double',\n DOUBLE_STEP: 'double-step',\n DEFAULT: 'default'\n};\n\nclass Range extends api.core.Instance {\n static get instanceClassName () {\n return 'Range';\n }\n\n init () {\n this._retrieveType();\n this._retrieveSize();\n if (this.isLegacy) {\n this.isResizing = true;\n this.isMouseMoving = true;\n } else {\n this._observer = new ResizeObserver(this.resize.bind(this));\n this._observer.observe(this.node);\n }\n\n this.addAscent(RangeEmission.CONSTRAINTS, this.setConstraints.bind(this));\n this.addAscent(RangeEmission.VALUE, this.setValue.bind(this));\n this.addAscent(RangeEmission.VALUE2, this.setValue2.bind(this));\n if (this.getAttribute(RangeSelector.RANGE_PREFIX)) this.setPrefix(this.getAttribute(RangeSelector.RANGE_PREFIX));\n if (this.getAttribute(RangeSelector.RANGE_SUFFIX)) this.setSuffix(this.getAttribute(RangeSelector.RANGE_SUFFIX));\n this.update();\n }\n\n _retrieveType () {\n switch (true) {\n case this.matches(RangeSelector.RANGE_DOUBLE_STEP):\n this.type = RangeTypes.DOUBLE;\n break;\n\n case this.matches(RangeSelector.RANGE_DOUBLE):\n this.type = RangeTypes.DOUBLE;\n break;\n\n case this.matches(RangeSelector.RANGE_STEP):\n this.type = RangeTypes.STEP;\n break;\n\n default:\n this.type = RangeTypes.DEFAULT;\n }\n }\n\n set type (value) {\n if (this._type === value) return;\n this._type = value;\n\n const oldModel = this._model;\n\n switch (this._type) {\n case RangeTypes.DOUBLE_STEP:\n this._model = new RangeModelDoubleStep();\n break;\n\n case RangeTypes.DOUBLE:\n this._model = new RangeModelDouble();\n break;\n\n case RangeTypes.STEP:\n this._model = new RangeModelStep();\n break;\n\n default:\n this._model = new RangeModel();\n }\n\n this._model.configure(oldModel);\n }\n\n get type () {\n return this._type;\n }\n\n _retrieveSize () {\n this._model.isSm = this.matches(RangeSelector.RANGE_SM);\n }\n\n resize () {\n this._retrieveWidth();\n this.update();\n }\n\n _retrieveWidth () {\n this._model.width = this.getRect().width;\n }\n\n setValue (value) {\n this._model.value = value;\n switch (this._type) {\n case RangeTypes.DOUBLE_STEP:\n case RangeTypes.DOUBLE:\n this.descend(RangeEmission.VALUE, value);\n break;\n }\n this.update();\n }\n\n setValue2 (value) {\n this._model.value2 = value;\n this.descend(RangeEmission.VALUE2, value);\n this.update();\n }\n\n setConstraints (constraints) {\n this._model.setConstraints(constraints);\n this.update();\n this.descend(RangeEmission.CONSTRAINTS, constraints);\n }\n\n setPrefix (value) {\n this._model.setPrefix(value);\n this.update();\n }\n\n setSuffix (value) {\n this._model.setSuffix(value);\n this.update();\n }\n\n mutate (attributesNames) {\n switch (true) {\n case attributesNames.includes('class'):\n this._retrieveType();\n this._retrieveSize();\n break;\n\n case attributesNames.includes(RangeSelector.RANGE_PREFIX):\n case attributesNames.includes(RangeSelector.RANGE_SUFFIX):\n this._model.setPrefix(this.getAttribute(RangeSelector.RANGE_PREFIX));\n this._model.setSuffix(this.getAttribute(RangeSelector.RANGE_SUFFIX));\n this.update();\n break;\n }\n }\n\n update () {\n this._model.update();\n this.descend(RangeEmission.OUTPUT, this._model.output);\n this.descend(RangeEmission.MIN, this._model.textMin);\n this.descend(RangeEmission.MAX, this._model.textMax);\n const progress = this._model.progress;\n if (progress.left) {\n this.style.setProperty('--progress-left', progress.left);\n } else {\n this.style.removeProperty('--progress-left');\n }\n if (progress.right) {\n this.style.setProperty('--progress-right', progress.right);\n if (this.isLegacy) {\n if (progress.left) {\n this.style.setProperty('background-position-x', progress.left);\n this.style.setProperty('background-size', `${parseFloat(progress.right) - parseFloat(progress.left)}px ${this._model.isSm ? '8px' : '12px'}`);\n }\n }\n } else {\n this.style.removeProperty('--progress-right');\n if (this.isLegacy) {\n this.style.removeProperty('background-size');\n this.style.removeProperty('background-position-x');\n }\n }\n if (this._model.stepWidth) this.style.setProperty('--step-width', this._model.stepWidth);\n else this.style.removeProperty('--step-width');\n }\n\n mouseMove (point) {\n if (this._type !== RangeTypes.DOUBLE && this._type !== RangeTypes.DOUBLE_STEP) return;\n const x = point.x - this.getRect().left;\n this.descend(RangeEmission.ENABLE_POINTER, (parseFloat(this._model.progress.right) - parseFloat(this._model.progress.left)) / 2 + parseFloat(this._model.progress.left) < x ? 2 : 1);\n }\n\n dispose () {\n this._observer.disconnect();\n }\n}\n\nexport { Range };\n","class RangeConstraints {\n constructor (node) {\n this._min = isNaN(node.min) ? 0 : node.min;\n this._max = isNaN(node.max) ? 100 : node.max;\n this._step = isNaN(node.step) ? 1 : node.step;\n this._rangeWidth = this._max - this._min;\n }\n\n get min () {\n return this._min;\n }\n\n get max () {\n return this._max;\n }\n\n get step () {\n return this._step;\n }\n\n get rangeWidth () {\n return this._rangeWidth;\n }\n\n test (min, max, step) {\n return this._min === min && this._max === max && this._step === step;\n }\n}\n\nexport { RangeConstraints };\n","import api from '../../api.js';\nimport { RangeEmission } from './range-emission.js';\nimport { RangeConstraints } from './range-constraints';\n\nclass RangeInput extends api.core.Instance {\n static get instanceClassName () {\n return 'RangeInput';\n }\n\n init () {\n this._init();\n this.node.value = this.getAttribute('value');\n this._changing = this.change.bind(this);\n this._listenerType = this.isLegacy ? 'change' : 'input';\n this.listen(this._listenerType, this._changing);\n if (this.isLegacy) this.addDescent(RangeEmission.ENABLE_POINTER, this._enablePointer.bind(this));\n this.change();\n }\n\n _init () {\n this._pointerId = 1;\n this.request(() => {\n if (!this.hasAttribute('min')) this.setAttribute('min', 0);\n this.ascend(RangeEmission.CONSTRAINTS, new RangeConstraints(this.node));\n this.ascend(RangeEmission.DISABLED, this.node.disabled);\n });\n\n this.addDescent(RangeEmission.VALUE2, this.setValue.bind(this));\n }\n\n _enablePointer (pointerId) {\n const isEnabled = pointerId === this._pointerId;\n if (this._isPointerEnabled === isEnabled) return;\n this._isPointerEnabled = isEnabled;\n if (isEnabled) this.style.removeProperty('pointer-events');\n else this.style.setProperty('pointer-events', 'none');\n }\n\n setValue (value) {\n if (parseFloat(this.node.value) > value) {\n this.node.value = value;\n this.change();\n }\n }\n\n change () {\n this.ascend(RangeEmission.VALUE, parseFloat(this.node.value));\n }\n\n mutate (attributesNames) {\n if (attributesNames.includes('disabled')) this.ascend(RangeEmission.DISABLED, this.node.disabled);\n if (attributesNames.includes('min') || attributesNames.includes('max') || attributesNames.includes('step')) {\n this.ascend(RangeEmission.CONSTRAINTS, new RangeConstraints(this.node));\n this.change();\n }\n }\n\n dispose () {\n if (this._listenerType) this.unlisten(this._listenerType, this._changing);\n }\n}\n\nexport { RangeInput };\n","import { RangeInput } from './range-input.js';\nimport { RangeEmission } from './range-emission';\n\nclass RangeInput2 extends RangeInput {\n static get instanceClassName () {\n return 'RangeInput2';\n }\n\n _init () {\n this._pointerId = 2;\n this.addDescent(RangeEmission.CONSTRAINTS, this.setConstraints.bind(this));\n this.addDescent(RangeEmission.VALUE, this.setValue.bind(this));\n }\n\n setValue (value) {\n if (parseFloat(this.node.value) < value) {\n this.node.value = value;\n this.change();\n }\n }\n\n change () {\n this.ascend(RangeEmission.VALUE2, parseFloat(this.node.value));\n }\n\n setConstraints (constraints) {\n this.node.min = constraints.min;\n this.node.max = constraints.max;\n this.node.step = constraints.step;\n this.change();\n }\n\n mutate (attributesNames) {}\n}\n\nexport { RangeInput2 };\n","import api from '../../../api';\nimport { RangeEmission } from './range-emission.js';\n\nclass RangeOutput extends api.core.Instance {\n static get instanceClassName () {\n return 'RangeOutput';\n }\n\n init () {\n this.addDescent(RangeEmission.OUTPUT, this.change.bind(this));\n }\n\n change (data) {\n this.node.innerText = data.text;\n this.node.style.transform = data.transform;\n }\n}\n\nexport { RangeOutput };\n","import api from '../../../api';\nimport { RangeEmission } from './range-emission.js';\nimport { RangeSelector } from './range-selector.js';\n\nclass RangeLimit extends api.core.Instance {\n static get instanceClassName () {\n return 'RangeLimit';\n }\n\n init () {\n switch (true) {\n case this.matches(RangeSelector.RANGE_MIN):\n this.addDescent(RangeEmission.MIN, this.change.bind(this));\n break;\n\n case this.matches(RangeSelector.RANGE_MAX):\n this.addDescent(RangeEmission.MAX, this.change.bind(this));\n break;\n }\n }\n\n change (text) {\n this.node.innerText = text;\n }\n}\n\nexport { RangeLimit };\n","import api from './api.js';\nimport { RangeSelector } from './script/range/range-selector.js';\nimport { RangeEmission } from './script/range/range-emission.js';\nimport { Range } from './script/range/range.js';\nimport { RangeInput } from './script/range/range-input.js';\nimport { RangeInput2 } from './script/range/range-input2.js';\nimport { RangeOutput } from './script/range/range-output.js';\nimport { RangeLimit } from './script/range/range-limit.js';\n\napi.range = {\n Range: Range,\n RangeInput: RangeInput,\n RangeInput2: RangeInput2,\n RangeOutput: RangeOutput,\n RangeLimit: RangeLimit,\n RangeEmission: RangeEmission,\n RangeSelector: RangeSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.range.RangeSelector.RANGE, api.range.Range);\napi.internals.register(api.range.RangeSelector.RANGE_INPUT, api.range.RangeInput);\napi.internals.register(api.range.RangeSelector.RANGE_INPUT2, api.range.RangeInput2);\napi.internals.register(api.range.RangeSelector.RANGE_OUTPUT, api.range.RangeOutput);\napi.internals.register(api.range.RangeSelector.RANGE_MIN, api.range.RangeLimit);\napi.internals.register(api.range.RangeSelector.RANGE_MAX, api.range.RangeLimit);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const HeaderSelector = {\n HEADER: api.internals.ns.selector('header'),\n TOOLS_LINKS: api.internals.ns.selector('header__tools-links'),\n MENU_LINKS: api.internals.ns.selector('header__menu-links'),\n 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')}`,\n MODALS: `${api.internals.ns.selector('header__search')}${api.internals.ns.selector('modal')}, ${api.internals.ns.selector('header__menu')}${api.internals.ns.selector('modal')}`\n};\n","import api from '../../api.js';\nimport { HeaderSelector } from './header-selector.js';\n\nclass HeaderLinks extends api.core.Instance {\n static get instanceClassName () {\n return 'HeaderLinks';\n }\n\n init () {\n const header = this.queryParentSelector(HeaderSelector.HEADER);\n this.toolsLinks = header.querySelector(HeaderSelector.TOOLS_LINKS);\n this.menuLinks = header.querySelector(HeaderSelector.MENU_LINKS);\n const copySuffix = '-mobile';\n\n const toolsHtml = this.toolsLinks.innerHTML.replace(/ +/g, ' ');\n const menuHtml = this.menuLinks.innerHTML.replace(/ +/g, ' ');\n // Pour éviter de dupliquer des id, on ajoute un suffixe aux id et aria-controls duppliqués.\n let toolsHtmlIdList = toolsHtml.match(/id=\"(.*?)\"/gm) || [];\n\n // on a besoin d'échapper les backslash dans la chaine de caractère\n // eslint-disable-next-line no-useless-escape\n toolsHtmlIdList = toolsHtmlIdList.map(element => element.replace('id=\\\"', '').replace('\\\"', ''));\n\n const toolsHtmlAriaControlList = toolsHtml.match(/aria-controls=\"(.*?)\"/gm);\n let toolsHtmlDuplicateId = toolsHtml.replace(/id=\"(.*?)\"/gm, 'id=\"$1' + copySuffix + '\"');\n if (toolsHtmlAriaControlList) {\n for (const element of toolsHtmlAriaControlList) {\n const ariaControlsValue = element.replace('aria-controls=\"', '').replace('\"', '');\n if (toolsHtmlIdList.includes(ariaControlsValue)) {\n toolsHtmlDuplicateId = toolsHtmlDuplicateId.replace(`aria-controls=\"${ariaControlsValue}\"`, `aria-controls=\"${ariaControlsValue + copySuffix}\"`);\n };\n }\n }\n\n if (toolsHtmlDuplicateId === menuHtml) return;\n\n switch (api.mode) {\n case api.Modes.ANGULAR:\n case api.Modes.REACT:\n case api.Modes.VUE:\n 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}`);\n break;\n\n default:\n this.menuLinks.innerHTML = toolsHtmlDuplicateId;\n }\n }\n}\n\nexport { HeaderLinks };\n","import api from '../../api.js';\n\nclass HeaderModal extends api.core.Instance {\n static get instanceClassName () {\n return 'HeaderModal';\n }\n\n init () {\n this.isResizing = true;\n }\n\n resize () {\n if (this.isBreakpoint(api.core.Breakpoints.LG)) this.deactivateModal();\n else this.activateModal();\n }\n\n activateModal () {\n const modal = this.element.getInstance('Modal');\n if (!modal) return;\n modal.isEnabled = true;\n this.listenClick({ capture: true });\n }\n\n deactivateModal () {\n const modal = this.element.getInstance('Modal');\n if (!modal) return;\n modal.conceal();\n modal.isEnabled = false;\n this.unlistenClick({ capture: true });\n }\n\n handleClick (e) {\n if (e.target.matches('a, button') && !e.target.matches('[aria-controls]') && !e.target.matches(api.core.DisclosureSelector.PREVENT_CONCEAL)) {\n const modal = this.element.getInstance('Modal');\n modal.conceal();\n }\n }\n}\n\nexport { HeaderModal };\n","import api from './api.js';\nimport { HeaderLinks } from './script/header/header-links.js';\nimport { HeaderModal } from './script/header/header-modal.js';\nimport { HeaderSelector } from './script/header/header-selector.js';\n\napi.header = {\n HeaderLinks: HeaderLinks,\n HeaderModal: HeaderModal,\n HeaderSelector: HeaderSelector,\n doc: 'https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/en-tete'\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.header.HeaderSelector.TOOLS_LINKS, api.header.HeaderLinks);\napi.internals.register(api.header.HeaderSelector.MODALS, api.header.HeaderModal);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const DisplaySelector = {\n DISPLAY: api.internals.ns.selector('display'),\n RADIO_BUTTONS: `input[name=\"${api.internals.ns('radios-theme')}\"]`,\n FIELDSET: api.internals.ns.selector('fieldset')\n};\n","import api from '../../api.js';\nimport { DisplaySelector } from './display-selector.js';\n\nclass Display extends api.core.Instance {\n static get instanceClassName () {\n return 'Display';\n }\n\n init () {\n this.radios = this.querySelectorAll(DisplaySelector.RADIO_BUTTONS);\n\n if (api.scheme) {\n this.changing = this.change.bind(this);\n for (const radio of this.radios) radio.addEventListener('change', this.changing);\n this.addDescent(api.scheme.SchemeEmission.SCHEME, this.apply.bind(this));\n this.ascend(api.scheme.SchemeEmission.ASK);\n } else {\n this.querySelector(DisplaySelector.FIELDSET).setAttribute('disabled', '');\n }\n }\n\n get scheme () {\n return this._scheme;\n }\n\n set scheme (value) {\n if (this._scheme === value || !api.scheme) return;\n switch (value) {\n case api.scheme.SchemeValue.SYSTEM:\n case api.scheme.SchemeValue.LIGHT:\n case api.scheme.SchemeValue.DARK:\n this._scheme = value;\n for (const radio of this.radios) {\n radio.checked = radio.value === value;\n }\n this.ascend(api.scheme.SchemeEmission.SCHEME, value);\n break;\n }\n }\n\n change () {\n for (const radio of this.radios) {\n if (radio.checked) {\n this.scheme = radio.value;\n return;\n }\n }\n }\n\n apply (value) {\n this.scheme = value;\n }\n\n dispose () {\n for (const radio of this.radios) radio.removeEventListener('change', this.changing);\n }\n}\n\nexport { Display };\n","import api from './api.js';\nimport { Display } from './script/display/display.js';\nimport { DisplaySelector } from './script/display/display-selector.js';\n\napi.display = {\n Display: Display,\n DisplaySelector: DisplaySelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.display.DisplaySelector.DISPLAY, api.display.Display);\n\nexport default api;\n"],"names":["const","config","api","window","ACCORDION","internals","ns","selector","COLLAPSE","AccordionSelector","GROUP","COLLAPSE_LEGACY","BUTTON","Accordion","staticAccessors","instanceClassName","prototypeAccessors","collapsePrimary","this","element","children","map","child","getInstance","filter","button","hasClass","core","Instance","AccordionsGroup","validate","member","match","node","matches","legacy","isLegacy","super","CollapsesGroup","accordion","register","ButtonSelector","EQUISIZED_BUTTON","EQUISIZED_GROUP","Equisized","EquisizedsGroup","CardDownload","init","addAscent","AssessEmission","UPDATE","details","descend","ADDED","CardSelector","DOWNLOAD","DOWNLOAD_DETAIL","card","AssessDetail","SegmentedSelector","SEGMENTED","SEGMENTED_ELEMENTS","SEGMENTED_ELEMENT","SEGMENTED_LEGEND","SegmentedEmission","emission","REMOVED","Segmented","elements","querySelector","legend","resize","bind","_isLegendInline","classList","contains","isResizing","SEGMENTED_VERTICAL","LEGEND_INLINE","removeClass","add","offsetWidth","parentNode","scrollWidth","remove","addClass","SegmentedElement","ascend","dispose","segmented","BreadcrumbSelector","BREADCRUMB","Breadcrumb","count","focusing","focus","getCollapse","proxy","scope","Object","assign","disclose","collapse","listen","DisclosureEvent","DISCLOSE","DisclosureEmission","links","length","isBreakpoint","Breakpoints","MD","buttonHasFocus","indexOf","document","activeElement","querySelectorAll","getDescendantInstances","Collapse","_focus","link","request","verify","breadcrumb","TooltipSelector","TOOLTIP","SHOWN","TooltipReferentState","TooltipReferent","_state","focusIn","focusOut","mouseover","placement","mouseout","addEmission","RootEmission","KEYDOWN","_keydown","_click","CLICK","_clickOut","target","blur","keyCode","KeyCodes","ESCAPE","close","state","value","isShown","PlacementReferent","name","notation","undefined","attr","let","result","event","type","domain","TooltipEvent","SHOW","HIDE","TooltipState","Tooltip","PlacementMode","AUTO","PlacementPosition","TOP","BOTTOM","PlacementAlign","CENTER","START","END","modifier","transitionEnd","isEnabled","dispatch","render","x","referentRect","center","rect","limit","width","setProperty","toFixed","Placement","tooltip","ToggleInput","isChecked","checked","ToggleStatusLabel","getAttribute","update","isSwappingFont","input","getRegisteredInstances","style","removeProperty","getComputedStyle","maxWidth","parseFloat","style2","swapFont","families","ToggleSelector","STATUS_LABEL","toggle","ITEM","SidemenuSelector","LIST","SidemenuList","SidemenuItem","sidemenu","ModalSelector","MODAL","SCROLL_DIVIDER","BODY","TITLE","ModalButton","DisclosureType","OPENED","DisclosureButton","ModalAttribute","CONCEALING_BACKDROP","Modal","_isActive","scrolling","resizing","_isDialog","tagName","isScrolling","listenClick","_escape","isDisclosed","conceal","retrieved","_ensureAccessibleName","body","handleClick","e","withhold","activate","isScrollLocked","setAttribute","activateModal","preventFocus","removeAttribute","deactivate","deactivateModal","isDialog","_hasDialogRole","_setAccessibleName","append","id","retrieveNodeId","warn","hasAttribute","title","primary","primaryButtons","Disclosure","UNORDEREDS","join","ORDEREDS","isFocusable","container","Element","visibility","display","parentElement","FocusTrap","onTrap","onUntrap","waiting","wait","handling","handle","maintainFocus","current","trapped","trap","untrap","isTrapping","trapping","requestAnimationFrame","focusables","addEventListener","stun","stunneds","push","Stunned","first","preventDefault","last","index","shiftKey","tabIndex","unordereds","dom","querySelectorAllArray","radios","documentElement","groups","radio","RadioButtonGroup","unordered","toLowerCase","keep","ordereds","sort","a","b","noDuplicates","concat","removeEventListener","inert","unstun","buttons","selected","ModalsGroup","focusTrap","apply","initial","DisclosuresGroup","ModalBody","divide","scrollHeight","clientHeight","offsetHeight","scrollTop","adjust","offset","maxHeight","innerHeight","modal","RootSelector","ROOT","PasswordEmission","TOGGLE","ADJUST","PasswordToggle","_isChecked","parseInt","Password","PasswordSelector","PASSWORD","INPUT","LABEL","TOOGLE","PasswordInput","addDescent","_isRevealed","capslock","isRevealed","getModifierState","PasswordLabel","valueREM","Math","ceil","paddingRight","password","NavigationSelector","NAVIGATION","ITEM_RIGHT","MENU","TRANSLATE_BUTTON","NavigationItem","_isRightAligned","calculate","LG","right","getBoundingClientRect","left","isRightAligned","NavigationMousePosition","NONE","INSIDE","OUTSIDE","Navigation","clicked","out","_handleRootClick","handleMouseDown","capture","position","requestPosition","DisclosureSelector","PREVENT_CONCEAL","isRequesting","getPosition","hasFocus","requested","canUngroup","navigation","TabButton","SELECT","isPrimary","list","focalize","getAscendantInstance","TabSelector","TAB","PANEL","SHADOW","SHADOW_LEFT","SHADOW_RIGHT","PANEL_START","PANEL_END","TabPanelDirection","TabPanel","_direction","_isPreventingTransition","direction","isPreventingTransition","motion","TransitionSelector","translate","reset","group","retrieve","_electPrimaries","candidates","candidate","TabKeys","TabEmission","PRESS_KEY","LIST_HEIGHT","TabsGroup","transitionend","pressKey","setListHeight","isRendering","getIndex","defaultIndex","listHeight","members","some","key","pressLeft","pressRight","pressHome","pressEnd","i","_index","scrollLeft","paneHeight","round","panelHeight","TabsList","scroll","listenKey","RIGHT","LEFT","HOME","btn","btnRect","getRect","listRect","actualScroll","scrollTo","_isScrolling","isMin","max","clientWidth","isMax","abs","isRtl","minSelector","maxSelector","height","tab","TableEmission","SCROLLABLE","CHANGE","CAPTION_HEIGHT","Table","setCaptionHeight","TableSelector","TABLE","ELEMENT","CAPTION","TableElement","content","TableCaption","table","TagEvent","DISMISS","TagDismissible","focusClosest","mode","Modes","ANGULAR","REACT","VUE","TagSelector","PRESSABLE","DISMISSIBLE","tag","Toggle","TRANSCRIPTION","TranscriptionSelector","Transcription","transcription","TileDownload","TileSelector","tile","RangeSelector","RANGE","RANGE_SM","RANGE_STEP","RANGE_DOUBLE","RANGE_DOUBLE_STEP","RANGE_INPUT","RANGE_INPUT2","RANGE_OUTPUT","RANGE_MIN","RANGE_MAX","RANGE_PREFIX","RANGE_SUFFIX","RangeEmission","VALUE","VALUE2","OUTPUT","CONSTRAINTS","MIN","MAX","STEP","PREFIX","SUFFIX","DISABLED","ENABLE_POINTER","RangeModel","_width","_min","_max","_value","_thumbSize","_innerWidth","_prefix","_suffix","_background","configure","model","setConstraints","_constraints","setPrefix","setSuffix","_decorate","isSm","_isSm","setThumbSize","mult","_innerPadding","textValue","outputX","_outputX","constraints","min","_step","step","_rangeWidth","rangeWidth","textMin","textMax","output","text","transform","_getRatio","progress","_progress","_update","ratio","_translateX","_centerPercent","RangeModelStep","prototypeAccessors$1","stepWidth","_stepWidth","steps","RangeModelDouble","prototypeAccessors$2","value2","_value2","ratio1","ratio2","RangeModelDoubleStep","prototypeAccessors$3","RangeTypes","Range","_retrieveType","_retrieveSize","isMouseMoving","_observer","ResizeObserver","observe","setValue","setValue2","_type","oldModel","_model","_retrieveWidth","mutate","attributesNames","includes","mouseMove","point","disconnect","RangeConstraints","isNaN","test","RangeInput","_init","_changing","change","_listenerType","_enablePointer","_pointerId","disabled","pointerId","_isPointerEnabled","unlisten","RangeInput2","RangeOutput","data","innerText","RangeLimit","range","HeaderSelector","HEADER","TOOLS_LINKS","MENU_LINKS","BUTTONS","MODALS","HeaderLinks","header","queryParentSelector","toolsLinks","menuLinks","copySuffix","toolsHtml","innerHTML","replace","menuHtml","toolsHtmlIdList","toolsHtmlAriaControlList","toolsHtmlDuplicateId","ariaControlsValue","HeaderModal","unlistenClick","doc","DisplaySelector","DISPLAY","RADIO_BUTTONS","FIELDSET","Display","scheme","changing","SchemeEmission","SCHEME","ASK","_scheme","SchemeValue","SYSTEM","LIGHT","DARK"],"mappings":"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"} |