{"version":3,"file":"dsfr.module.min.js","sources":["../src/dsfr/core/script/api/state.js","../.config/config.js","../src/dsfr/core/script/api/inspect/inspector.js","../src/dsfr/core/script/api/options/starters.js","../src/dsfr/core/script/api/options/modes.js","../src/dsfr/core/script/api/utilities/dom/dispatch.js","../src/dsfr/core/script/api/utilities/namespace.js","../src/dsfr/core/script/api/modules/stage/root-event.js","../src/dsfr/core/script/api/options/options.js","../src/dsfr/core/script/api/utilities/collection.js","../src/dsfr/core/script/api/modules/module.js","../src/dsfr/core/script/api/utilities/dom/query-selector.js","../src/dsfr/core/script/api/modules/register/registration.js","../src/dsfr/core/script/api/modules/register/register.js","../src/dsfr/core/script/api/modules/stage/element.js","../src/dsfr/core/script/api/modules/stage/root-emission.js","../src/dsfr/core/script/api/modules/register/key-codes.js","../src/dsfr/core/script/api/modules/stage/root.js","../src/dsfr/core/script/api/modules/stage/stage.js","../src/dsfr/core/script/api/modules/render/renderer.js","../src/dsfr/core/script/api/modules/resize/resizer.js","../src/dsfr/core/script/api/modules/scroll/scroll-locker.js","../src/dsfr/core/script/api/modules/load/load.js","../src/dsfr/core/script/api/modules/font-swap/font-swap.js","../src/dsfr/core/script/api/modules/mouse-move/mouse-move.js","../src/dsfr/core/script/api/modules/hash/hash.js","../src/dsfr/core/script/api/engine.js","../src/dsfr/core/script/api/utilities/colors/colors.js","../src/dsfr/core/script/api/utilities/dom/classes.js","../src/dsfr/core/script/api/utilities/dom/actions.js","../src/dsfr/core/script/api/utilities/dom/id.js","../src/dsfr/core/script/api/utilities/dom/index.js","../src/dsfr/core/script/api/utilities/image/index.js","../src/dsfr/core/script/api/utilities/image/data-uri-svg.js","../src/dsfr/core/script/api/utilities/support/index.js","../src/dsfr/core/script/api/utilities/support/browser-support.js","../src/dsfr/core/script/api/utilities/motion/index.js","../src/dsfr/core/script/api/utilities/motion/transition-selector.js","../src/dsfr/core/script/api/utilities/property/complete-assign.js","../src/dsfr/core/script/api/utilities/property/index.js","../src/dsfr/core/script/api/internals.js","../src/dsfr/core/script/api/utilities/search-params/index.js","../src/dsfr/core/script/api/api.js","../src/dsfr/core/script/api/utilities/emitter.js","../src/dsfr/core/script/api/modules/register/focus-manager.js","../src/dsfr/core/script/api/modules/register/breakpoints.js","../src/dsfr/core/script/api/modules/register/Instance-event.js","../src/dsfr/core/script/api/modules/register/instance.js","../src/dsfr/core/script/disclosure/disclosure-event.js","../src/dsfr/core/script/disclosure/disclosure-emission.js","../src/dsfr/core/script/disclosure/disclosure.js","../src/dsfr/core/script/disclosure/disclosure-button.js","../src/dsfr/core/script/disclosure/disclosure-selector.js","../src/dsfr/core/script/disclosure/disclosures-group.js","../src/dsfr/core/script/disclosure/disclosure-type.js","../src/dsfr/core/script/collapse/collapse-button.js","../src/dsfr/core/script/collapse/collapse-selector.js","../src/dsfr/core/script/equisized/equisized-emission.js","../src/dsfr/core/script/api/modules/stage/root-selector.js","../src/dsfr/core/script/api/utilities/sanitize-svg.js","../src/dsfr/core/script/inject/inject-svg-selector.js","../src/dsfr/core/script/artwork/artwork-selector.js","../src/dsfr/core/script/assess/assess-selector.js","../src/dsfr/core/script/assess/assess-emission.js","../src/dsfr/core/script/ratio/ratio-selector.js","../src/dsfr/core/api.js","../src/dsfr/core/script/placement/place-selector.js","../src/dsfr/core/script/placement/align-selector.js","../src/dsfr/core/script/placement/placement-position.js","../src/dsfr/core/script/placement/placement-align.js","../src/dsfr/core/script/placement/placement-mode.js","../src/dsfr/core/index.js","../src/dsfr/core/script/collapse/collapse.js","../src/dsfr/core/script/collapse/collapses-group.js","../src/dsfr/core/script/equisized/equisized.js","../src/dsfr/core/script/action/toggle/toggle.js","../src/dsfr/core/script/equisized/equisizeds-group.js","../src/dsfr/core/script/inject/inject-svg.js","../src/dsfr/core/script/api/utilities/attribute.js","../src/dsfr/core/script/artwork/artwork.js","../src/dsfr/core/script/assess/assess-file.js","../src/dsfr/core/script/assess/assess-detail.js","../src/dsfr/core/script/ratio/ratio.js","../src/dsfr/core/script/placement/placement.js","../src/dsfr/core/script/placement/placement-referent.js","../src/dsfr/core/main.js","../src/dsfr/scheme/script/scheme/scheme-value.js","../src/dsfr/scheme/script/scheme/scheme-attribute.js","../src/dsfr/scheme/script/scheme/scheme-theme.js","../src/dsfr/scheme/script/scheme/scheme-emission.js","../src/dsfr/scheme/script/scheme/scheme-event.js","../src/dsfr/scheme/script/scheme/scheme.js","../src/dsfr/scheme/script/scheme/scheme-selector.js","../src/dsfr/scheme/index.js","../src/dsfr/scheme/main.js","../src/dsfr/component/accordion/script/accordion/accordion-selector.js","../src/dsfr/component/accordion/script/accordion/accordion.js","../src/dsfr/component/accordion/script/accordion/accordions-group.js","../src/dsfr/component/accordion/index.js","../src/dsfr/component/accordion/main.js","../src/dsfr/component/button/script/button/button-selector.js","../src/dsfr/component/button/index.js","../src/dsfr/component/button/main.js","../src/dsfr/component/card/script/card/card-download.js","../src/dsfr/component/card/script/card/card-selector.js","../src/dsfr/component/card/index.js","../src/dsfr/component/card/main.js","../src/dsfr/component/checkbox/script/checkbox/checkbox-selector.js","../src/dsfr/component/checkbox/script/checkbox/checkbox-emission.js","../src/dsfr/component/checkbox/script/checkbox/checkbox-input.js","../src/dsfr/component/checkbox/index.js","../src/dsfr/component/checkbox/main.js","../src/dsfr/component/segmented/script/segmented/segmented-selector.js","../src/dsfr/component/segmented/script/segmented/segmented-emission.js","../src/dsfr/component/segmented/script/segmented/segmented.js","../src/dsfr/component/segmented/script/segmented/segmented-element.js","../src/dsfr/component/segmented/index.js","../src/dsfr/component/segmented/main.js","../src/dsfr/component/breadcrumb/script/breadcrumb/breadcrumb-selector.js","../src/dsfr/component/breadcrumb/script/breadcrumb/breadcrumb.js","../src/dsfr/component/breadcrumb/index.js","../src/dsfr/component/breadcrumb/main.js","../src/dsfr/component/tooltip/script/tooltip/tooltip-selector.js","../src/dsfr/component/tooltip/script/tooltip/tooltip-referent.js","../src/dsfr/component/tooltip/script/tooltip/tooltip-event.js","../src/dsfr/component/tooltip/script/tooltip/tooltip.js","../src/dsfr/component/tooltip/index.js","../src/dsfr/component/tooltip/main.js","../src/dsfr/component/toggle/script/toggle/toggle-input.js","../src/dsfr/component/toggle/script/toggle/toggle-status-label.js","../src/dsfr/component/toggle/script/toggle/toggle-selector.js","../src/dsfr/component/toggle/index.js","../src/dsfr/component/toggle/main.js","../src/dsfr/component/sidemenu/script/sidemenu/sidemenu-selector.js","../src/dsfr/component/sidemenu/script/sidemenu/sidemenu-list.js","../src/dsfr/component/sidemenu/script/sidemenu/sidemenu-item.js","../src/dsfr/component/sidemenu/index.js","../src/dsfr/component/sidemenu/main.js","../src/dsfr/component/modal/script/modal/modal-selector.js","../src/dsfr/component/modal/script/modal/modal-button.js","../src/dsfr/component/modal/script/modal/modal-attribute.js","../src/dsfr/component/modal/script/modal/modal.js","../src/dsfr/component/modal/script/modal/modal-footer.js","../src/dsfr/component/modal/script/modal/focus-trap.js","../src/dsfr/component/modal/script/modal/modals-group.js","../src/dsfr/component/modal/script/modal/modal-body.js","../src/dsfr/component/modal/index.js","../src/dsfr/component/modal/main.js","../src/dsfr/component/password/script/password/password-emission.js","../src/dsfr/component/password/script/password/password-toggle.js","../src/dsfr/component/password/script/password/password.js","../src/dsfr/component/password/script/password/password-selector.js","../src/dsfr/component/password/script/password/password-input.js","../src/dsfr/component/password/script/password/password-label.js","../src/dsfr/component/password/index.js","../src/dsfr/component/password/main.js","../src/dsfr/component/navigation/script/navigation/navigation-selector.js","../src/dsfr/component/navigation/script/navigation/navigation-item.js","../src/dsfr/component/navigation/script/navigation/navigation-mouse-position.js","../src/dsfr/component/navigation/script/navigation/navigation.js","../src/dsfr/component/navigation/index.js","../src/dsfr/component/navigation/main.js","../src/dsfr/component/tab/script/tab/tab-button.js","../src/dsfr/component/tab/script/tab/tab-selector.js","../src/dsfr/component/tab/script/tab/tab-panel-direction.js","../src/dsfr/component/tab/script/tab/tab-panel.js","../src/dsfr/component/tab/script/tab/tab-keys.js","../src/dsfr/component/tab/script/tab/tab-emission.js","../src/dsfr/component/tab/script/tab/tabs-group.js","../src/dsfr/component/tab/script/tab/tabs-list.js","../src/dsfr/component/tab/index.js","../src/dsfr/component/tab/main.js","../src/dsfr/component/tag/script/tag/tag-event.js","../src/dsfr/component/tag/script/tag/tag-dismissible.js","../src/dsfr/component/tag/script/tag/tag-selector.js","../src/dsfr/component/tag/index.js","../src/dsfr/component/tag/main.js","../src/dsfr/component/transcription/script/accordion/transcription-selector.js","../src/dsfr/component/transcription/script/accordion/transcription.js","../src/dsfr/component/transcription/index.js","../src/dsfr/component/transcription/main.js","../src/dsfr/component/tile/script/tile/tile-download.js","../src/dsfr/component/tile/script/tile/tile-selector.js","../src/dsfr/component/tile/index.js","../src/dsfr/component/tile/main.js","../src/dsfr/component/range/script/range/range-selector.js","../src/dsfr/component/range/script/range/range-emission.js","../src/dsfr/component/range/script/range/range-model.js","../src/dsfr/component/range/script/range/range.js","../src/dsfr/component/range/script/range/range-constraints.js","../src/dsfr/component/range/script/range/range-input.js","../src/dsfr/component/range/script/range/range-output.js","../src/dsfr/component/range/script/range/range-limit.js","../src/dsfr/component/range/index.js","../src/dsfr/component/range/script/range/range-input2.js","../src/dsfr/component/range/main.js","../src/dsfr/component/header/script/header/header-selector.js","../src/dsfr/component/header/script/header/header-links.js","../src/dsfr/component/header/script/header/header-modal.js","../src/dsfr/component/header/index.js","../src/dsfr/component/header/main.js","../src/dsfr/component/display/script/display/display-selector.js","../src/dsfr/component/display/script/display/display.js","../src/dsfr/component/display/index.js","../src/dsfr/component/display/main.js","../src/dsfr/component/table/script/table/table-emission.js","../src/dsfr/component/table/script/table/table.js","../src/dsfr/component/table/script/table/table-wrapper.js","../src/dsfr/component/table/script/table/table-selector.js","../src/dsfr/component/table/script/table/table-element.js","../src/dsfr/component/table/script/table/table-caption.js","../src/dsfr/component/table/script/table/table-row.js","../src/dsfr/component/table/index.js","../src/dsfr/component/table/main.js"],"sourcesContent":["class State {\n  constructor () {\n    this.modules = {};\n  }\n\n  create (ModuleClass) {\n    const module = new ModuleClass();\n    this.modules[module.type] = module;\n  }\n\n  getModule (type) {\n    return this.modules[type];\n  }\n\n  add (type, item) {\n    this.modules[type].add(item);\n  }\n\n  remove (type, item) {\n    this.modules[type].remove(item);\n  }\n\n  get isActive () {\n    return this._isActive;\n  }\n\n  set isActive (value) {\n    if (value === this._isActive) return;\n    this._isActive = value;\n    const values = Object.keys(this.modules).map((e) => {\n      return this.modules[e];\n    });\n    if (value) {\n      for (const module of values) {\n        module.activate();\n      }\n    } else {\n      for (const module of values) {\n        module.deactivate();\n      }\n    }\n  }\n\n  get isLegacy () {\n    return this._isLegacy;\n  }\n\n  set isLegacy (value) {\n    if (value === this._isLegacy) return;\n    this._isLegacy = value;\n  }\n}\n\nconst state = new State();\n\nexport default state;\n","const config = {\r\n  prefix: 'fr',\r\n  namespace: 'dsfr',\r\n  organisation: '@gouvfr',\r\n  version: '1.15.2'\r\n};\r\n\r\nexport default config;\r\n","import state from '../state.js';\nimport config from '../../../config.js';\n\nclass LogLevel {\n  constructor (level, light, dark, logger) {\n    this.level = level;\n    this.light = light;\n    this.dark = dark;\n\n    switch (logger) {\n      case 'warn':\n        this.logger = console.warn;\n        break;\n\n      case 'error':\n        this.logger = console.error;\n        break;\n\n      default:\n        this.logger = console.log;\n    }\n  }\n\n  log (...values) {\n    const message = new Message(config.namespace);\n    for (const value of values) message.add(value);\n    this.print(message);\n  }\n\n  print (message) {\n    message.setColor(this.color);\n    this.logger.apply(console, message.getMessage());\n  }\n\n  get color () {\n    return window.matchMedia('(prefers-color-scheme: dark)').matches ? this.dark : this.light;\n  }\n}\n\nclass Message {\n  constructor (domain) {\n    this.inputs = ['%c'];\n    this.styles = ['font-family:Marianne', 'line-height: 1.5'];\n    this.objects = [];\n\n    if (domain) this.add(`${domain} :`);\n  }\n\n  add (value) {\n    switch (typeof value) {\n      case 'object':\n      case 'function':\n        this.inputs.push('%o ');\n        this.objects.push(value);\n        break;\n\n      default:\n        this.inputs.push(`${value} `);\n    }\n  }\n\n  setColor (color) {\n    this.styles.push(`color:${color}`);\n  }\n\n  getMessage () {\n    return [this.inputs.join(''), this.styles.join(';'), ...this.objects];\n  }\n}\n\nconst LEVELS = {\n  log: new LogLevel(0, '#616161', '#989898'),\n  debug: new LogLevel(1, '#000091', '#8B8BFF'),\n  info: new LogLevel(2, '#007c3b', '#00ed70'),\n  warn: new LogLevel(3, '#ba4500', '#fa5c00', 'warn'),\n  error: new LogLevel(4, '#D80600', '#FF4641', 'error')\n};\n\nclass Inspector {\n  constructor () {\n    this.level = 2;\n\n    for (const id in LEVELS) {\n      const level = LEVELS[id];\n      this[id] = (...msgs) => {\n        if (this.level <= level.level) level.log.apply(level, msgs);\n      };\n      this[id].print = level.print.bind(level);\n    }\n  }\n\n  state () {\n    const message = new Message();\n    message.add(state);\n    this.log.print(message);\n  }\n\n  tree () {\n    const stage = state.getModule('stage');\n    if (!stage) return;\n    const message = new Message();\n    this._branch(stage.root, 0, message);\n    this.log.print(message);\n  }\n\n  _branch (element, space, message) {\n    let branch = '';\n    if (space > 0) {\n      let indent = '';\n      for (let i = 0; i < space; i++) indent += '    ';\n      // branch += indent + '|\\n';\n      branch += indent + '└─ ';\n    }\n    branch += `[${element.id}] ${element.html}`;\n    message.add(branch);\n    message.add({ '@': element });\n    message.add('\\n');\n    for (const child of element.children) branch += this._branch(child, space + 1, message);\n  }\n}\n\nconst inspector = new Inspector();\n\nexport default inspector;\n","export const startAtDomContentLoaded = (callback) => {\n  if (document.readyState !== 'loading') window.requestAnimationFrame(callback);\n  else document.addEventListener('DOMContentLoaded', callback);\n};\n\nexport const startAuto = (callback) => {\n  // detect\n  startAtDomContentLoaded(callback);\n};\n","export const Modes = {\n  AUTO: 'auto',\n  MANUAL: 'manual',\n  RUNTIME: 'runtime',\n  LOADED: 'loaded',\n  VUE: 'vue',\n  ANGULAR: 'angular',\n  REACT: 'react'\n};\n","const dispatch = (node, type, detail = null, bubbles = true, cancelable = false) => {\n  const options = { bubbles: bubbles === true, cancelable: cancelable === true };\n  if (detail) options.detail = detail;\n  const event = new CustomEvent(type, options);\n  node.dispatchEvent(event);\n};\n\nconst rootDispatch = (type, detail = null, bubbles = false, cancelable = false) => dispatch(document.documentElement, type, detail, bubbles, cancelable);\n\nexport { dispatch, rootDispatch };\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 '../../utilities/namespace.js';\n\nconst RootEvent = {\n  READY: ns.event('ready'),\n  START: ns.event('start'),\n  STOP: ns.event('stop'),\n  RENDER: ns.event('render'),\n  RESIZE: ns.event('resize'),\n  BREAKPOINT: ns.event('breakpoint'),\n  SCROLL_LOCK: ns.event('scroll-lock'),\n  SCROLL_UNLOCK: ns.event('scroll-unlock')\n};\n\nexport { RootEvent };\n","import inspector from '../inspect/inspector.js';\nimport { startAtDomContentLoaded, startAuto } from './starters.js';\nimport config from '../../../config';\nimport { Modes } from './modes';\nimport { rootDispatch } from '../utilities/dom/dispatch.js';\nimport { RootEvent } from '../modules/stage/root-event.js';\n\nclass Options {\n  constructor () {\n    this._mode = Modes.AUTO;\n    this.isStarted = false;\n    this.starting = this.start.bind(this);\n    this.preventManipulation = false;\n  }\n\n  configure (settings = {}, start, query) {\n    this.startCallback = start;\n    const isProduction = settings.production && (!query || query.production !== 'false');\n    switch (true) {\n      case query && !isNaN(query.level):\n        inspector.level = Number(query.level);\n        break;\n\n      case query && query.verbose && (query.verbose === 'true' || query.verbose === 1):\n        inspector.level = 0;\n        break;\n\n      case isProduction:\n        inspector.level = 999;\n        break;\n\n      case settings.verbose:\n        inspector.level = 0;\n        break;\n    }\n    inspector.info(`version ${config.version}`);\n    rootDispatch(RootEvent.READY);\n    this.mode = settings.mode || Modes.AUTO;\n  }\n\n  set mode (value) {\n    switch (value) {\n      case Modes.AUTO:\n        this.preventManipulation = false;\n        startAuto(this.starting);\n        break;\n\n      case Modes.LOADED:\n        this.preventManipulation = false;\n        startAtDomContentLoaded(this.starting);\n        break;\n\n      case Modes.RUNTIME:\n        this.preventManipulation = false;\n        this.start();\n        break;\n\n      case Modes.MANUAL:\n        this.preventManipulation = false;\n        break;\n\n      case Modes.VUE:\n        this.preventManipulation = true;\n        break;\n\n      case Modes.ANGULAR:\n        this.preventManipulation = true;\n        break;\n\n      case Modes.REACT:\n        this.preventManipulation = true;\n        break;\n\n      default:\n        inspector.error('Illegal mode');\n        return;\n    }\n\n    this._mode = value;\n    inspector.info(`mode set to ${value}`);\n  }\n\n  get mode () {\n    return this._mode;\n  }\n\n  start () {\n    inspector.info('start');\n    this.startCallback();\n  }\n}\n\nconst options = new Options();\nexport default options;\n","class Collection {\n  constructor () {\n    this._collection = [];\n  }\n\n  forEach (callback) {\n    this._collection.forEach(callback);\n  }\n\n  map (callback) {\n    return this._collection.map(callback);\n  }\n\n  get length () {\n    return this._collection.length;\n  }\n\n  add (collectable) {\n    if (this._collection.indexOf(collectable) > -1) return false;\n    this._collection.push(collectable);\n    if (this.onAdd) this.onAdd();\n    if (this.onPopulate && this._collection.length === 1) this.onPopulate();\n    return true;\n  }\n\n  remove (collectable) {\n    const index = this._collection.indexOf(collectable);\n    if (index === -1) return false;\n    this._collection.splice(index, 1);\n    if (this.onRemove) this.onRemove();\n    if (this.onEmpty && this._collection.length === 0) this.onEmpty();\n  }\n\n  execute (...args) {\n    for (const collectable of this._collection) if (collectable) collectable.apply(null, args);\n  }\n\n  clear () {\n    this._collection.length = 0;\n  }\n\n  clone () {\n    const clone = new Collection();\n    clone._collection = this._collection.slice();\n    return clone;\n  }\n\n  get collection () {\n    return this._collection;\n  }\n}\n\nexport { Collection };\n","import { Collection } from '../utilities/collection.js';\n\nclass Module extends Collection {\n  constructor (type) {\n    super();\n    this.type = type;\n    this.isActive = false;\n  }\n\n  activate () {}\n  deactivate () {}\n}\n\nexport { Module };\n","export const querySelectorAllArray = (element, selectors) => Array.prototype.slice.call(element.querySelectorAll(selectors));\n\nexport const queryParentSelector = (element, selectors) => {\n  const parent = element.parentElement;\n  if (parent.matches(selectors)) return parent;\n  if (parent === document.documentElement) return null;\n  return queryParentSelector(parent, selectors);\n};\n","import { Collection } from '../../utilities/collection.js';\nimport state from '../../state.js';\nimport ns from '../../utilities/namespace.js';\nimport { querySelectorAllArray } from '../../utilities/dom/query-selector';\n\nclass Registration {\n  constructor (selector, InstanceClass, creator) {\n    this.selector = selector;\n    this.InstanceClass = InstanceClass;\n    this.creator = creator;\n    this.instances = new Collection();\n    this.isIntroduced = false;\n    this._instanceClassName = this.InstanceClass.instanceClassName;\n    this._instanceClassNames = this.getInstanceClassNames(this.InstanceClass);\n    this._property = this._instanceClassName.substring(0, 1).toLowerCase() + this._instanceClassName.substring(1);\n    const dashed = this._instanceClassName\n      .replace(/[^a-zA-Z0-9]+/g, '-')\n      .replace(/([A-Z]+)([A-Z][a-z])/g, '$1-$2')\n      .replace(/([a-z])([A-Z])/g, '$1-$2')\n      .replace(/([0-9])([^0-9])/g, '$1-$2')\n      .replace(/([^0-9])([0-9])/g, '$1-$2')\n      .toLowerCase();\n    this._attribute = ns.attr(`js-${dashed}`);\n  }\n\n  getInstanceClassNames (InstanceClass) {\n    const prototype = Object.getPrototypeOf(InstanceClass);\n    if (!prototype || prototype.instanceClassName === 'Instance') return [InstanceClass.instanceClassName];\n    return [...this.getInstanceClassNames(prototype), InstanceClass.instanceClassName];\n  }\n\n  hasInstanceClassName (instanceClassName) {\n    return this._instanceClassNames.indexOf(instanceClassName) > -1;\n  }\n\n  introduce () {\n    if (this.isIntroduced) return;\n    this.isIntroduced = true;\n    state.getModule('stage').parse(document.documentElement, this);\n  }\n\n  parse (node, nonRecursive) {\n    const nodes = [];\n    if (node.matches && node.matches(this.selector)) nodes.push(node);\n    // eslint-disable-next-line no-useless-call\n    if (!nonRecursive && node.querySelectorAll && node.querySelector(this.selector)) nodes.push.apply(nodes, querySelectorAllArray(node, this.selector));\n    return nodes;\n  }\n\n  create (element) {\n    if (!element.node.matches(this.selector)) return;\n    const instance = new this.InstanceClass();\n    this.instances.add(instance);\n    return instance;\n  }\n\n  remove (instance) {\n    this.instances.remove(instance);\n  }\n\n  dispose () {\n    const instances = this.instances.collection;\n    for (let i = instances.length - 1; i > -1; i--) instances[i]._dispose();\n    this.creator = null;\n  }\n\n  get instanceClassName () {\n    return this._instanceClassName;\n  }\n\n  get instanceClassNames () {\n    return this._instanceClassNames;\n  }\n\n  get property () {\n    return this._property;\n  }\n\n  get attribute () {\n    return this._attribute;\n  }\n}\n\nexport { Registration };\n","import { Module } from '../module.js';\nimport { Registration } from './registration.js';\nimport state from '../../state.js';\n\nclass Register extends Module {\n  constructor () {\n    super('register');\n  }\n\n  register (selector, InstanceClass, creator) {\n    const registration = new Registration(selector, InstanceClass, creator);\n    this.add(registration);\n    if (state.isActive) registration.introduce();\n    return registration;\n  }\n\n  activate () {\n    for (const registration of this.collection) registration.introduce();\n  }\n\n  remove (registration) {\n    registration.dispose();\n    super.remove(registration);\n  }\n}\n\nexport { Register };\n","import state from '../../state.js';\nimport inspector from '../../inspect/inspector.js';\n\nlet count = 0;\n\nclass Element {\n  constructor (node, id) {\n    if (!id) {\n      count++;\n      this.id = count;\n    } else this.id = id;\n    this.node = node;\n    this.attributeNames = [];\n    this.instances = [];\n    this._children = [];\n    this._parent = null;\n    this._projects = [];\n  }\n\n  get proxy () {\n    const scope = this;\n    if (!this._proxy) {\n      this._proxy = {\n        id: this.id,\n        get parent () {\n          return scope.parent ? scope.parent.proxy : null;\n        },\n        get children () {\n          return scope.children.map((child) => child.proxy);\n        }\n      };\n\n      for (const instance of this.instances) this._proxy[instance.registration.property] = instance.proxy;\n    }\n    return this._proxy;\n  }\n\n  get html () {\n    if (!this.node || !this.node.outerHTML) return '';\n    const end = this.node.outerHTML.indexOf('>');\n    return this.node.outerHTML.substring(0, end + 1);\n  }\n\n  project (registration) {\n    if (this._projects.indexOf(registration) === -1) this._projects.push(registration);\n  }\n\n  populate () {\n    const projects = this._projects.slice();\n    this._projects.length = 0;\n    for (const registration of projects) this.create(registration);\n  }\n\n  create (registration) {\n    if (this.hasInstance(registration.instanceClassName)) {\n      // inspector.debug(`failed creation, instance of ${registration.instanceClassName} already exists on element [${this.id}]`);\n      return;\n    }\n    inspector.debug(`create instance of ${registration.instanceClassName} on element [${this.id}]`);\n    const instance = registration.create(this);\n    this.instances.push(instance);\n    instance._config(this, registration);\n    if (this._proxy) this._proxy[registration.property] = instance.proxy;\n  }\n\n  remove (instance) {\n    const index = this.instances.indexOf(instance);\n    if (index > -1) this.instances.splice(index, 1);\n    if (this._proxy) delete this._proxy[instance.registration.property];\n  }\n\n  get parent () {\n    return this._parent;\n  }\n\n  get ascendants () {\n    return [this.parent, ...this.parent.ascendants];\n  }\n\n  get children () {\n    return this._children;\n  }\n\n  get descendants () {\n    const descendants = [...this._children];\n    this._children.forEach(child => descendants.push(...child.descendants));\n    return descendants;\n  }\n\n  // TODO : emit ascendant et descendant de changement ?\n\n  addChild (child, index) {\n    if (this._children.indexOf(child) > -1) return null;\n    child._parent = this;\n    if (!isNaN(index) && index > -1 && index < this._children.length) this._children.splice(index, 0, child);\n    else this._children.push(child);\n    return child;\n  }\n\n  removeChild (child) {\n    const index = this._children.indexOf(child);\n    if (index === -1) return null;\n    child._parent = null;\n    this._children.splice(index, 1);\n  }\n\n  emit (type, data) {\n    const elements = state.getModule('stage').collection;\n    const response = [];\n    for (const element of elements) response.push(...element._emit(type, data));\n    return response;\n  }\n\n  _emit (type, data) {\n    const response = [];\n    for (const instance of this.instances) response.push(...instance._emitter.emit(type, data));\n    return response;\n  }\n\n  ascend (type, data) {\n    if (this._parent) return this._parent._ascend(type, data);\n    return [];\n  }\n\n  _ascend (type, data) {\n    const response = [];\n    for (const instance of this.instances) response.push(...instance._ascent.emit(type, data));\n    if (this._parent) response.push(...this._parent._ascend(type, data));\n    return response;\n  }\n\n  descend (type, data) {\n    const response = [];\n    for (const child of this._children) response.push(...child._descend(type, data));\n    return response;\n  }\n\n  _descend (type, data) {\n    const response = [];\n    for (const instance of this.instances) response.push(...instance._descent.emit(type, data));\n    for (const child of this._children) response.push(...child._descend(type, data));\n    return response;\n  }\n\n  getInstance (instanceClassName) {\n    for (const instance of this.instances) if (instance.registration.hasInstanceClassName(instanceClassName)) return instance;\n    return null;\n  }\n\n  hasInstance (instanceClassName) {\n    return this.getInstance(instanceClassName) !== null;\n  }\n\n  getDescendantInstances (instanceClassName, stopAtInstanceClassName, stopAtFirstInstance) {\n    if (!instanceClassName) return [];\n    const instances = [];\n    for (const child of this._children) {\n      const instance = child.getInstance(instanceClassName);\n      if (instance) {\n        instances.push(instance);\n        if (stopAtFirstInstance) continue;\n      }\n      if ((!stopAtInstanceClassName || !child.hasInstance(stopAtInstanceClassName)) && child.children.length) instances.push.apply(instances, child.getDescendantInstances(instanceClassName, stopAtInstanceClassName, stopAtFirstInstance));\n    }\n    return instances;\n  }\n\n  getAscendantInstance (instanceClassName, stopAtInstanceClassName) {\n    if (!instanceClassName || !this._parent) return null;\n    const instance = this._parent.getInstance(instanceClassName);\n    if (instance) return instance;\n    if (stopAtInstanceClassName && this._parent.hasInstance(stopAtInstanceClassName)) return null;\n    return this._parent.getAscendantInstance(instanceClassName, stopAtInstanceClassName);\n  }\n\n  dispose () {\n    for (let i = this.instances.length - 1; i >= 0; i--) {\n      const instance = this.instances[i];\n      if (instance) instance._dispose();\n    }\n    this.instances.length = 0;\n    state.remove('stage', this);\n    this.parent.removeChild(this);\n    this._children.length = 0;\n    inspector.debug(`remove element [${this.id}] ${this.html}`);\n  }\n\n  prepare (attributeName) {\n    if (this.attributeNames.indexOf(attributeName) === -1) this.attributeNames.push(attributeName);\n  }\n\n  examine () {\n    const attributeNames = this.attributeNames.slice();\n    this.attributeNames.length = 0;\n    for (let i = this.instances.length - 1; i > -1; i--) this.instances[i].examine(attributeNames);\n  }\n}\n\nexport { Element };\n","import ns from '../../utilities/namespace.js';\n\nexport const RootEmission = {\n  CLICK: ns.emission('root', 'click'),\n  INTERACTION: ns.emission('root', 'interaction'),\n  KEYDOWN: ns.emission('root', 'keydown'),\n  KEYUP: ns.emission('root', 'keyup')\n};\n","export const KeyCodes = {\n  TAB: {\n    id: 'tab',\n    value: 9\n  },\n  ESCAPE: {\n    id: 'escape',\n    value: 27\n  },\n  END: {\n    id: 'end',\n    value: 35\n  },\n  HOME: {\n    id: 'home',\n    value: 36\n  },\n  LEFT: {\n    id: 'left',\n    value: 37\n  },\n  UP: {\n    id: 'up',\n    value: 38\n  },\n  RIGHT: {\n    id: 'right',\n    value: 39\n  },\n  DOWN: {\n    id: 'down',\n    value: 40\n  }\n};\n\nexport const getKeyCode = (keyCode) => Object.values(KeyCodes).filter(entry => entry.value === keyCode)[0];\n","import { Element } from './element.js';\nimport ns from '../../utilities/namespace.js';\nimport { RootEmission } from './root-emission';\nimport { getKeyCode } from '../register/key-codes';\n\nclass Root extends Element {\n  constructor () {\n    super(document.documentElement, 'root');\n    this.node.setAttribute(ns.attr('js'), true);\n    this.listen();\n  }\n\n  listen () {\n    // TODO v2 => listener au niveau des éléments qui redistribuent aux instances.\n    document.documentElement.addEventListener('click', this.click.bind(this), { capture: true });\n    document.documentElement.addEventListener(window.PointerEvent ? 'pointerdown' : 'touchstart', this.interaction.bind(this), { capture: true, passive: true }); // IOS\n    document.documentElement.addEventListener('keydown', this.keydown.bind(this), { capture: true });\n    document.documentElement.addEventListener('keyup', this.keyup.bind(this), { capture: true });\n  }\n\n  click (e) {\n    this.emit(RootEmission.CLICK, e.target);\n  }\n\n  interaction (e) {\n    this.emit(RootEmission.INTERACTION, e.target);\n  }\n\n  keydown (e) {\n    this.emit(RootEmission.KEYDOWN, getKeyCode(e.keyCode));\n  }\n\n  keyup (e) {\n    this.emit(RootEmission.KEYUP, getKeyCode(e.keyCode));\n  }\n}\n\nexport { Root };\n","import state from '../../state.js';\nimport { Element } from './element.js';\nimport { Module } from '../module.js';\nimport { Root } from './root.js';\nimport inspector from '../../inspect/inspector.js';\n\nclass Stage extends Module {\n  constructor () {\n    super('stage');\n    this.root = new Root();\n    super.add(this.root);\n    this.observer = new MutationObserver(this.mutate.bind(this));\n    this.modifications = [];\n    this.willModify = false;\n    this.modifying = this.modify.bind(this);\n  }\n\n  hasElement (node) {\n    for (const element of this.collection) if (element.node === node) return true;\n    return false;\n  }\n\n  getElement (node) {\n    for (const element of this.collection) if (element.node === node) return element;\n    const element = new Element(node);\n    this.add(element);\n    inspector.debug(`add element [${element.id}] ${element.html}`);\n    return element;\n  }\n\n  getProxy (node) {\n    if (!this.hasElement(node)) return null;\n    const element = this.getElement(node);\n    return element.proxy;\n  }\n\n  add (element) {\n    super.add(element);\n    this.put(element, this.root);\n  }\n\n  put (element, branch) {\n    let index = 0;\n    for (let i = branch.children.length - 1; i > -1; i--) {\n      const child = branch.children[i];\n      const position = element.node.compareDocumentPosition(child.node);\n      if (position & Node.DOCUMENT_POSITION_CONTAINS) {\n        this.put(element, child);\n        return;\n      } else if (position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n        branch.removeChild(child);\n        element.addChild(child, 0);\n      } else if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n        index = i + 1;\n        break;\n      }\n    }\n\n    branch.addChild(element, index);\n  }\n\n  activate () {\n    this.observer.observe(document.documentElement, { childList: true, subtree: true, attributes: true });\n  }\n\n  deactivate () {\n    this.observer.disconnect();\n  }\n\n  mutate (mutations) {\n    const examinations = [];\n    mutations.forEach((mutation) => {\n      switch (mutation.type) {\n        case 'childList':\n          mutation.removedNodes.forEach((node) => this.dispose(node));\n          mutation.addedNodes.forEach((node) => this.parse(node));\n          break;\n\n        case 'attributes':\n          if (this.hasElement(mutation.target)) {\n            const element = this.getElement(mutation.target);\n            element.prepare(mutation.attributeName);\n            if (examinations.indexOf(element) === -1) examinations.push(element);\n            for (const descendant of element.descendants) if (examinations.indexOf(descendant) === -1) examinations.push(descendant);\n          }\n          if (this.modifications.indexOf(mutation.target) === -1) this.modifications.push(mutation.target);\n          break;\n      }\n    });\n\n    examinations.forEach(element => element.examine());\n    if (this.modifications.length && !this.willModify) {\n      this.willModify = true;\n      window.requestAnimationFrame(this.modifying);\n    }\n  }\n\n  modify () {\n    this.willModify = false;\n    const targets = this.modifications.slice();\n    this.modifications.length = 0;\n    for (const target of targets) if (document.documentElement.contains(target)) this.parse(target);\n  }\n\n  dispose (node) {\n    const disposables = [];\n    this.forEach((element) => {\n      if (node.contains(element.node)) disposables.push(element);\n    });\n\n    for (const disposable of disposables) {\n      disposable.dispose();\n      this.remove(disposable);\n    }\n  }\n\n  parse (node, registration, nonRecursive) {\n    const registrations = registration ? [registration] : state.getModule('register').collection;\n    const creations = [];\n\n    for (const registration of registrations) {\n      const nodes = registration.parse(node, nonRecursive);\n\n      for (const n of nodes) {\n        const element = this.getElement(n);\n        element.project(registration);\n        if (creations.indexOf(element) === -1) creations.push(element);\n      }\n    }\n\n    for (const element of creations) element.populate();\n  }\n}\n\nexport { Stage };\n","import state from '../../state.js';\nimport { Module } from '../module.js';\nimport { Collection } from '../../utilities/collection.js';\nimport { rootDispatch } from '../../utilities/dom/dispatch.js';\nimport { RootEvent } from '../stage/root-event.js';\n\nclass Renderer extends Module {\n  constructor () {\n    super('render');\n    this.rendering = this.render.bind(this);\n    this.nexts = new Collection();\n  }\n\n  activate () {\n    window.requestAnimationFrame(this.rendering);\n  }\n\n  request (instance) {\n    this.nexts.add(instance);\n  }\n\n  render () {\n    if (!state.isActive) return;\n    window.requestAnimationFrame(this.rendering);\n    this.forEach((instance) => instance.render());\n    if (!this.nexts.length) return;\n    const nexts = this.nexts.clone();\n    this.nexts.clear();\n    nexts.forEach((instance) => instance.next());\n    rootDispatch(RootEvent.RENDER);\n  }\n}\n\nexport { Renderer };\n","import { Module } from '../module.js';\nimport { rootDispatch } from '../../utilities/dom/dispatch.js';\nimport { RootEvent } from '../stage/root-event.js';\n\nclass Resizer extends Module {\n  constructor () {\n    super('resize');\n    this.requireResize = false;\n    this.resizing = this.resize.bind(this);\n    const requesting = this.request.bind(this);\n    if (document.fonts) {\n      document.fonts.ready.then(requesting);\n    }\n    window.addEventListener('resize', requesting);\n    window.addEventListener('orientationchange', requesting);\n  }\n\n  activate () {\n    this.request();\n  }\n\n  request () {\n    if (this.requireResize) return;\n    this.requireResize = true;\n    window.requestAnimationFrame(this.resizing);\n  }\n\n  resize () {\n    if (!this.requireResize) return;\n    this.forEach((instance) => instance.resize());\n    this.requireResize = false;\n    rootDispatch(RootEvent.RESIZE);\n  }\n}\n\nexport { Resizer };\n","import ns from '../../utilities/namespace.js';\nimport { Module } from '../module.js';\nimport { rootDispatch } from '../../utilities/dom/dispatch.js';\nimport { RootEvent } from '../stage/root-event.js';\n\nclass ScrollLocker extends Module {\n  constructor () {\n    super('lock');\n    this._isLocked = false;\n    this._scrollY = 0;\n    this.onPopulate = this.lock.bind(this);\n    this.onEmpty = this.unlock.bind(this);\n  }\n\n  get isLocked () {\n    return this._isLocked;\n  }\n\n  lock () {\n    if (!this._isLocked) {\n      this._isLocked = true;\n      this._scrollY = window.scrollY;\n      const scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\n      document.documentElement.setAttribute(ns.attr('scrolling'), 'false');\n      document.body.style.top = `${-this._scrollY}px`;\n      this.behavior = getComputedStyle(document.documentElement).getPropertyValue('scroll-behavior');\n      if (this.behavior === 'smooth') document.documentElement.style.scrollBehavior = 'auto';\n      if (scrollBarGap > 0) {\n        document.documentElement.style.setProperty('--scrollbar-width', `${scrollBarGap}px`);\n      }\n      rootDispatch(RootEvent.SCROLL_LOCK);\n    }\n  }\n\n  unlock () {\n    if (this._isLocked) {\n      this._isLocked = false;\n      document.documentElement.removeAttribute(ns.attr('scrolling'));\n      document.body.style.top = '';\n      window.scrollTo(0, this._scrollY);\n      if (this.behavior === 'smooth') document.documentElement.style.removeProperty('scroll-behavior');\n      document.documentElement.style.removeProperty('--scrollbar-width');\n      rootDispatch(RootEvent.SCROLL_UNLOCK);\n    }\n  }\n\n  move (value) {\n    if (this._isLocked) {\n      this._scrollY += value;\n      document.body.style.top = `${-this._scrollY}px`;\n    } else {\n      window.scrollTo(0, window.scrollY + value);\n    }\n  }\n}\n\nexport { ScrollLocker };\n","import { Module } from '../module.js';\n\nclass Load extends Module {\n  constructor () {\n    super('load');\n    this.loading = this.load.bind(this);\n  }\n\n  activate () {\n    window.addEventListener('load', this.loading);\n  }\n\n  load () {\n    this.forEach((instance) => instance.load());\n  }\n}\n\nexport { Load };\n","import { Module } from '../module.js';\n\nconst FONT_FAMILIES = ['Marianne', 'Spectral'];\n\nclass FontSwap extends Module {\n  constructor () {\n    super('font-swap');\n    this.swapping = this.swap.bind(this);\n  }\n\n  activate () {\n    if (document.fonts) {\n      document.fonts.addEventListener('loadingdone', this.swapping);\n    }\n  }\n\n  swap () {\n    const families = FONT_FAMILIES.filter(family => document.fonts.check(`16px ${family}`));\n\n    this.forEach((instance) => instance.swapFont(families));\n  }\n}\n\nexport { FontSwap };\n","import { Module } from '../module.js';\n\nclass MouseMove extends Module {\n  constructor () {\n    super('mouse-move');\n    this.requireMove = false;\n    this._isMoving = false;\n    this.moving = this.move.bind(this);\n    this.requesting = this.request.bind(this);\n    this.onPopulate = this.listen.bind(this);\n    this.onEmpty = this.unlisten.bind(this);\n  }\n\n  listen () {\n    if (this._isMoving) return;\n    this._isMoving = true;\n    this.requireMove = false;\n    document.documentElement.addEventListener('mousemove', this.requesting);\n  }\n\n  unlisten () {\n    if (!this._isMoving) return;\n    this._isMoving = false;\n    this.requireMove = false;\n    document.documentElement.removeEventListener('mousemove', this.requesting);\n  }\n\n  request (e) {\n    if (!this._isMoving) return;\n    this.point = { x: e.clientX, y: e.clientY };\n    if (this.requireMove) return;\n    this.requireMove = true;\n    window.requestAnimationFrame(this.moving);\n  }\n\n  move () {\n    if (!this.requireMove) return;\n    this.forEach((instance) => instance.mouseMove(this.point));\n    this.requireMove = false;\n  }\n}\n\nexport { MouseMove };\n","import { Module } from '../module.js';\n\nclass Hash extends Module {\n  constructor () {\n    super('hash');\n    this.handling = this.handle.bind(this);\n    this.getLocationHash();\n  }\n\n  activate () {\n    window.addEventListener('hashchange', this.handling);\n  }\n\n  deactivate () {\n    window.removeEventListener('hashchange', this.handling);\n  }\n\n  _sanitize (hash) {\n    if (hash.charAt(0) === '#') return hash.substring(1);\n    return hash;\n  }\n\n  set hash (value) {\n    const hash = this._sanitize(value);\n    if (this._hash !== hash) window.location.hash = hash;\n  }\n\n  get hash () {\n    return this._hash;\n  }\n\n  getLocationHash () {\n    const hash = window.location.hash;\n    this._hash = this._sanitize(hash);\n  }\n\n  handle (e) {\n    this.getLocationHash();\n    this.forEach((instance) => instance.handleHash(this._hash, e));\n  }\n}\n\nexport { Hash };\n","import { Register } from './modules/register/register.js';\nimport { Stage } from './modules/stage/stage.js';\nimport { Renderer } from './modules/render/renderer.js';\nimport { Resizer } from './modules/resize/resizer.js';\nimport { ScrollLocker } from './modules/scroll/scroll-locker.js';\nimport { Load } from './modules/load/load.js';\nimport { FontSwap } from './modules/font-swap/font-swap';\nimport { MouseMove } from './modules/mouse-move/mouse-move';\nimport { Hash } from './modules/hash/hash';\nimport { rootDispatch } from './utilities/dom/dispatch.js';\nimport { RootEvent } from './modules/stage/root-event.js';\nimport inspector from './inspect/inspector.js';\nimport state from './state.js';\n\nclass Engine {\n  constructor () {\n    state.create(Register);\n    state.create(Stage);\n    state.create(Renderer);\n    state.create(Resizer);\n    state.create(ScrollLocker);\n    state.create(Load);\n    state.create(FontSwap);\n    state.create(MouseMove);\n    state.create(Hash);\n\n    const registerModule = state.getModule('register');\n    this.register = registerModule.register.bind(registerModule);\n  }\n\n  get isActive () {\n    return state.isActive;\n  }\n\n  start () {\n    inspector.debug('START');\n    state.isActive = true;\n    rootDispatch(RootEvent.START);\n  }\n\n  stop () {\n    inspector.debug('STOP');\n    state.isActive = false;\n    rootDispatch(RootEvent.STOP);\n  }\n}\n\nconst engine = new Engine();\nexport default engine;\n","class Colors {\n  getColor (context, use, tint, options = {}) {\n    const option = getOption(options);\n    const decision = `--${context}-${use}-${tint}${option}`;\n    return getComputedStyle(document.documentElement).getPropertyValue(decision).trim() || null;\n  }\n}\n\nconst getOption = (options) => {\n  switch (true) {\n    case options.hover:\n      return '-hover';\n    case options.active:\n      return '-active';\n    default:\n      return '';\n  }\n};\n\nconst colors = new Colors();\n\nexport default colors;\n","const sanitize = (className) => className.charAt(0) === '.' ? className.substr(1) : className;\n\nconst getClassNames = (element) => {\n  switch (true) {\n    case !element.className:\n      return [];\n\n    case typeof element.className === 'string':\n      return element.className.split(' ');\n\n    case typeof element.className.baseVal === 'string':\n      return element.className.baseVal.split(' ');\n  }\n\n  return [];\n};\n\nexport { getClassNames };\n\nconst modifyClass = (element, className, remove) => {\n  className = sanitize(className);\n  const classNames = getClassNames(element);\n  const index = classNames.indexOf(className);\n  if (remove === true) {\n    if (index > -1) classNames.splice(index, 1);\n  } else if (index === -1) classNames.push(className);\n  element.className = classNames.join(' ');\n};\n\nconst addClass = (element, className) => modifyClass(element, className);\n\nexport { addClass };\n\nconst removeClass = (element, className) => modifyClass(element, className, true);\n\nexport { removeClass };\n\nconst hasClass = (element, className) => getClassNames(element).indexOf(sanitize(className)) > -1;\n\nexport { hasClass };\n","const ACTIONS = [\n  '[tabindex]:not([tabindex=\"-1\"])',\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 ACTIONS_SELECTOR = ACTIONS.join();\n\nexport const queryActions = (element) => {\n  return element.querySelectorAll(ACTIONS_SELECTOR);\n};\n","let counter = 0;\n\nexport const uniqueId = (id) => {\n  if (!document.getElementById(id)) return id;\n  let element = true;\n  const base = id;\n  while (element) {\n    counter++;\n    id = `${base}-${counter}`;\n    element = document.getElementById(id);\n  }\n  return id;\n};\n","import { addClass, hasClass, removeClass } from './classes.js';\nimport { queryParentSelector, querySelectorAllArray } from './query-selector.js';\nimport { queryActions } from './actions';\nimport { uniqueId } from './id';\nimport { dispatch } from './dispatch.js';\n\nconst dom = {\n  addClass: addClass,\n  hasClass: hasClass,\n  removeClass: removeClass,\n  queryParentSelector: queryParentSelector,\n  querySelectorAllArray: querySelectorAllArray,\n  queryActions: queryActions,\n  uniqueId: uniqueId,\n  dispatch: dispatch\n};\n\nexport default dom;\n","import { DataURISVG } from './data-uri-svg';\n\nconst image = {\n  DataURISVG: DataURISVG\n};\n\nexport default image;\n","class DataURISVG {\n  constructor (width = 0, height = 0) {\n    this._width = width;\n    this._height = height;\n    this._content = '';\n  }\n\n  get width () {\n    return this._width;\n  }\n\n  set width (value) {\n    this._width = value;\n  }\n\n  get height () {\n    return this._height;\n  }\n\n  set height (value) {\n    this._height = value;\n  }\n\n  get content () {\n    return this._content;\n  }\n\n  set content (value) {\n    this._content = value;\n  }\n\n  getDataURI (isLegacy = false) {\n    let svg = `<svg xmlns='http://www.w3.org/2000/svg' viewbox='0 0 ${this._width} ${this._height}' width='${this._width}px' height='${this._height}px'>${this._content}</svg>`;\n\n    svg = svg.replace(/#/gi, '%23');\n    if (isLegacy) {\n      svg = svg.replace(/</gi, '%3C');\n      svg = svg.replace(/>/gi, '%3E');\n      svg = svg.replace(/\"/gi, '\\'');\n      svg = svg.replace(/{/gi, '%7B');\n      svg = svg.replace(/}/gi, '%7D');\n    }\n    return `data:image/svg+xml;charset=utf8,${svg}`;\n  }\n}\n\nexport { DataURISVG };\n","import { supportLocalStorage, supportAspectRatio } from './browser-support.js';\n\nconst support = {\n  supportLocalStorage: supportLocalStorage,\n  supportAspectRatio: supportAspectRatio\n};\n\nexport default support;\n","const supportLocalStorage = () => {\n  try {\n    return 'localStorage' in window && window.localStorage !== null;\n  } catch (e) {\n    return false;\n  }\n};\n\nconst supportAspectRatio = () => {\n  if (!window.CSS) return false;\n  return CSS.supports('aspect-ratio: 16 / 9');\n};\n\nexport { supportLocalStorage, supportAspectRatio };\n","import { TransitionSelector } from './transition-selector';\n\nconst selector = {\n  TransitionSelector: TransitionSelector\n};\n\nexport default selector;\n","import ns from '../namespace.js';\n\nexport const TransitionSelector = {\n  NONE: ns.selector('transition-none')\n};\n","/**\n * Copy properties from multiple sources including accessors.\n * source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#copier_des_accesseurs\n *\n * @param {object} [target] - Target object to copy into\n * @param {...objects} [sources] - Multiple objects\n * @return {object} A new object\n *\n * @example\n *\n *     const obj1 = {\n *        key: 'value'\n *     };\n *     const obj2 = {\n *        get function01 () {\n *          return a-value;\n *        }\n *        set function01 () {\n *          return a-value;\n *        }\n *     };\n *     completeAssign(obj1, obj2)\n */\nconst completeAssign = (target, ...sources) => {\n  sources.forEach(source => {\n    const descriptors = Object.keys(source).reduce((descriptors, key) => {\n      descriptors[key] = Object.getOwnPropertyDescriptor(source, key);\n      return descriptors;\n    }, {});\n\n    Object.getOwnPropertySymbols(source).forEach(sym => {\n      const descriptor = Object.getOwnPropertyDescriptor(source, sym);\n      if (descriptor.enumerable) {\n        descriptors[sym] = descriptor;\n      }\n    });\n    Object.defineProperties(target, descriptors);\n  });\n  return target;\n};\n\nexport { completeAssign };\n","import { completeAssign } from './complete-assign';\n\nconst property = {\n  completeAssign: completeAssign\n};\n\nexport default property;\n","import state from './state.js';\nimport engine from './engine.js';\nimport options from './options/options.js';\nimport dom from './utilities/dom/index';\nimport image from './utilities/image/index';\nimport ns from './utilities/namespace.js';\nimport support from './utilities/support/index';\nimport motion from './utilities/motion/index';\nimport property from './utilities/property/index';\nimport searchParams from './utilities/search-params/index.js';\n\nconst internals = {};\nconst legacy = {};\n\nObject.defineProperty(legacy, 'isLegacy', {\n  get: () => state.isLegacy\n});\n\nlegacy.setLegacy = () => {\n  state.isLegacy = true;\n};\n\ninternals.legacy = legacy;\ninternals.dom = dom;\ninternals.image = image;\ninternals.support = support;\ninternals.motion = motion;\ninternals.property = property;\ninternals.ns = ns;\ninternals.register = engine.register;\ninternals.state = state;\ninternals.query = searchParams(window.location);\n\nObject.defineProperty(internals, 'preventManipulation', {\n  get: () => options.preventManipulation\n});\nObject.defineProperty(internals, 'stage', {\n  get: () => state.getModule('stage')\n});\n\nexport default internals;\n","/**\n * Return an object of query params or null\n *\n * @method\n * @name searchParams\n * @param {string} url - an url\n * @returns {Object} object of query params or null\n */\n\nconst searchParams = (url) => {\n  if (url && url.search) {\n    const params = new URLSearchParams(window.location.search);\n    const entries = params.entries();\n    return Object.fromEntries(entries);\n  }\n  return null;\n};\n\nexport default searchParams;\n","import state from './state.js';\nimport options from './options/options.js';\nimport { Modes } from './options/modes.js';\nimport config from '../../config.js';\nimport engine from './engine.js';\nimport inspector from './inspect/inspector.js';\nimport colors from './utilities/colors/colors.js';\nimport internals from './internals.js';\n\nconst api = (node) => {\n  const stage = state.getModule('stage');\n  return stage.getProxy(node);\n};\n\napi.version = config.version;\napi.prefix = config.prefix;\napi.organisation = config.organisation;\napi.Modes = Modes;\n\nObject.defineProperty(api, 'mode', {\n  set: (value) => { options.mode = value; },\n  get: () => options.mode\n});\n\napi.internals = internals;\napi.version = config.version;\n\napi.start = engine.start;\napi.stop = engine.stop;\n\napi.inspector = inspector;\napi.colors = colors;\n\nconst configuration = window[config.namespace];\napi.internals.configuration = configuration;\n\noptions.configure(configuration, api.start, api.internals.query);\n\nwindow[config.namespace] = api;\nexport default api;\n","class Emitter {\n  constructor () {\n    this.emissions = {};\n  }\n\n  add (type, closure) {\n    if (typeof closure !== 'function') throw new Error('closure must be a function');\n    if (!this.emissions[type]) this.emissions[type] = [];\n    this.emissions[type].push(closure);\n  }\n\n  remove (type, closure) {\n    if (!this.emissions[type]) return;\n    if (!closure) delete this.emissions[type];\n    else {\n      const index = this.emissions[type].indexOf(closure);\n      if (index > -1) this.emissions[type].splice(index);\n    }\n  }\n\n  emit (type, data) {\n    if (!this.emissions[type]) return [];\n    const response = [];\n    for (const closure of this.emissions[type]) if (closure) response.push(closure(data));\n    return response;\n  }\n\n  dispose () {\n    this.emissions = null;\n  }\n}\n\nexport { Emitter };\n","import api from '../../api';\n\nclass FocusManager {\n  constructor () {\n    this._activeElements = [];\n    window.document.addEventListener('focusin', this._onFocusIn.bind(this));\n  }\n\n  _onFocusIn (e) {\n    this._activeElements.push(e.target);\n  }\n\n  get index () {\n    return this._activeElements.length - 1;\n  }\n\n  focus (index) {\n    const element = this._activeElements[index];\n    switch (true) {\n      case index < 0:\n      case this._activeElements.length === 0:\n        this.focusOnLogo();\n        return;\n      case !element:\n      case !document.documentElement.contains(element):\n      case !this._isDisplayed(element):\n        this.focus(index - 1);\n        return;\n    }\n\n    element.focus();\n  }\n\n  focusOnLogo () {\n    const logo = document.querySelector(api.header.HeaderSelector.BRAND_LINK);\n    if (logo) logo.focus();\n  }\n\n  _isDisplayed (element) {\n    while (element && element !== document.documentElement) {\n      if (element === document.body) return true;\n      const style = window.getComputedStyle(element);\n      if (style.display === 'none' || style.visibility === 'hidden') return false;\n      element = element.parentElement;\n    }\n    return true;\n  }\n}\n\nconst focusManager = new FocusManager();\n\nexport default focusManager;\n","class Breakpoint {\n  constructor (id, minWidth) {\n    this.id = id;\n    this.minWidth = minWidth;\n  }\n\n  test () {\n    return window.matchMedia(`(min-width: ${this.minWidth}em)`).matches;\n  }\n}\n\nexport const Breakpoints = {\n  XS: new Breakpoint('xs', 0),\n  SM: new Breakpoint('sm', 36),\n  MD: new Breakpoint('md', 48),\n  LG: new Breakpoint('lg', 62),\n  XL: new Breakpoint('xl', 78)\n};\n","import ns from '../../utilities/namespace.js';\n\nconst InstanceEvent = {\n  CLICK: ns.event('click')\n};\n\nexport { InstanceEvent };\n","import { Emitter } from '../../utilities/emitter.js';\nimport state from '../../state.js';\nimport inspector from '../../inspect/inspector.js';\nimport focusManager from './focus-manager';\nimport { Breakpoints } from './breakpoints.js';\nimport { addClass, removeClass, hasClass, getClassNames } from '../../utilities/dom/classes.js';\nimport { dispatch } from '../../utilities/dom/dispatch.js';\nimport { uniqueId } from '../../utilities/dom/id';\nimport { completeAssign } from '../../utilities/property/complete-assign.js';\nimport { queryParentSelector, querySelectorAllArray } from '../../utilities/dom/query-selector.js';\nimport { queryActions } from '../../utilities/dom/actions.js';\nimport { InstanceEvent } from './Instance-event.js';\n\nclass Instance {\n  constructor (jsAttribute = true) {\n    this.jsAttribute = jsAttribute;\n    this._isRendering = false;\n    this._isResizing = false;\n    this._isScrollLocked = false;\n    this._isLoading = false;\n    this._isSwappingFont = false;\n    this._isEnabled = true;\n    this._isDisposed = false;\n    this._listeners = {};\n    this._handlingClick = this._handleClick.bind(this);\n    this._hashes = [];\n    this._hash = '';\n    this._keyListenerTypes = [];\n    this._keys = [];\n    this.handlingKey = this.handleKey.bind(this);\n    this._emitter = new Emitter();\n    this._ascent = new Emitter();\n    this._descent = new Emitter();\n    this._registrations = [];\n    this._nexts = [];\n  }\n\n  static get instanceClassName () {\n    return 'Instance';\n  }\n\n  _config (element, registration) {\n    this.element = element;\n    this.registration = registration;\n    this.node = element.node;\n    this.id = element.node.id;\n    if (this.jsAttribute) this.setAttribute(registration.attribute, true);\n    this.init();\n  }\n\n  init () {}\n\n  get proxy () {\n    const scope = this;\n    const proxy = {\n      render: () => scope.render(),\n      resize: () => scope.resize()\n    };\n\n    const proxyAccessors = {\n      get node () {\n        return scope.node;\n      },\n      get isEnabled () {\n        return scope.isEnabled;\n      },\n      set isEnabled (value) {\n        scope.isEnabled = value;\n      }\n    };\n\n    return completeAssign(proxy, proxyAccessors);\n  }\n\n  log (...values) {\n    values.unshift(`${this.registration.instanceClassName} #${this.id} - `);\n    inspector.log.apply(inspector, values);\n  }\n\n  debug (...values) {\n    values.unshift(`${this.registration.instanceClassName} #${this.id} - `);\n    inspector.debug.apply(inspector, values);\n  }\n\n  info (...values) {\n    values.unshift(`${this.registration.instanceClassName} #${this.id} - `);\n    inspector.info.apply(inspector, values);\n  }\n\n  warn (...values) {\n    values.unshift(`${this.registration.instanceClassName} #${this.id} - `);\n    inspector.warn.apply(inspector, values);\n  }\n\n  error (...values) {\n    values.unshift(`${this.registration.instanceClassName} #${this.id} - `);\n    inspector.error.apply(inspector, values);\n  }\n\n  register (selector, InstanceClass) {\n    const registration = state.getModule('register').register(selector, InstanceClass, this);\n    this._registrations.push(registration);\n  }\n\n  getRegisteredInstances (instanceClassName) {\n    for (const registration of this._registrations) if (registration.hasInstanceClassName(instanceClassName)) return registration.instances.collection;\n    return [];\n  }\n\n  dispatch (type, detail = null, bubbles = true, cancelable = false) {\n    dispatch(this.node, type, detail, bubbles, cancelable);\n  }\n\n  // TODO v2 => listener au niveau des éléments qui redistribuent aux instances.\n  listen (type, closure, options) {\n    if (!this._listeners[type]) this._listeners[type] = [];\n    const listeners = this._listeners[type];\n    // if (listeners.some(listener => listener.closure === closure)) return;\n    const listener = new Listener(this.node, type, closure, options);\n    listeners.push(listener);\n    listener.listen();\n  }\n\n  unlisten (type, closure, options) {\n    if (!type) {\n      for (const type in this._listeners) this.unlisten(type);\n      return;\n    }\n\n    const listeners = this._listeners[type];\n\n    if (!listeners) return;\n\n    if (!closure) {\n      listeners.forEach(listener => this.unlisten(type, listener.closure));\n      return;\n    }\n\n    const removal = listeners.filter(listener => listener.closure === closure && listener.matchOptions(options));\n    removal.forEach(listener => listener.unlisten());\n    this._listeners[type] = listeners.filter(listener => removal.indexOf(listener) === -1);\n  }\n\n  listenClick (options) {\n    this.listen('click', this._handlingClick, options);\n  }\n\n  unlistenClick (options) {\n    this.unlisten('click', this._handlingClick, options);\n  }\n\n  _handleClick (e) {\n    this.handleClick(e);\n    this.dispatch(InstanceEvent.CLICK, this);\n  }\n\n  handleClick (e) {}\n\n  set hash (value) {\n    state.getModule('hash').hash = value;\n  }\n\n  get hash () {\n    return state.getModule('hash').hash;\n  }\n\n  listenHash (hash, add) {\n    if (!this._hashes) return;\n    if (this._hashes.length === 0) state.add('hash', this);\n    const action = new HashAction(hash, add);\n    this._hashes = this._hashes.filter(action => action.hash !== hash);\n    this._hashes.push(action);\n  }\n\n  unlistenHash (hash) {\n    if (!this._hashes) return;\n    this._hashes = this._hashes.filter(action => action.hash !== hash);\n    if (this._hashes.length === 0) state.remove('hash', this);\n  }\n\n  handleHash (hash, e) {\n    if (!this._hashes) return;\n    for (const action of this._hashes) action.handle(hash, e);\n  }\n\n  listenKey (keyCode, closure, preventDefault = false, stopPropagation = false, type = 'down') {\n    if (this._keyListenerTypes.indexOf(type) === -1) {\n      this.listen(`key${type}`, this.handlingKey);\n      this._keyListenerTypes.push(type);\n    }\n\n    this._keys.push(new KeyAction(type, keyCode, closure, preventDefault, stopPropagation));\n  }\n\n  unlistenKey (code, closure) {\n    this._keys = this._keys.filter((key) => key.code !== code || key.closure !== closure);\n\n    this._keyListenerTypes.forEach(type => {\n      if (!this._keys.some(key => key.type === type)) this.unlisten(`key${type}`, this.handlingKey);\n    });\n  }\n\n  handleKey (e) {\n    for (const key of this._keys) key.handle(e);\n  }\n\n  get isEnabled () { return this._isEnabled; }\n\n  set isEnabled (value) {\n    this._isEnabled = value;\n  }\n\n  get isRendering () { return this._isRendering; }\n\n  set isRendering (value) {\n    if (this._isRendering === value) return;\n    if (value) state.add('render', this);\n    else state.remove('render', this);\n    this._isRendering = value;\n  }\n\n  render () {}\n\n  request (closure) {\n    this._nexts.push(closure);\n    state.getModule('render').request(this);\n  }\n\n  next () {\n    const nexts = this._nexts.slice();\n    this._nexts.length = 0;\n    for (const closure of nexts) if (closure) closure();\n  }\n\n  get isResizing () { return this._isResizing; }\n\n  set isResizing (value) {\n    if (this._isResizing === value) return;\n    if (value) {\n      state.add('resize', this);\n      this.resize();\n    } else state.remove('resize', this);\n    this._isResizing = value;\n  }\n\n  resize () {}\n\n  isBreakpoint (breakpoint) {\n    switch (true) {\n      case typeof breakpoint === 'string':\n        return Breakpoints[breakpoint.toUpperCase()].test();\n\n      default:\n        return breakpoint.test();\n    }\n  }\n\n  get isScrollLocked () {\n    return this._isScrollLocked;\n  }\n\n  set isScrollLocked (value) {\n    if (this._isScrollLocked === value) return;\n    if (value) state.add('lock', this);\n    else state.remove('lock', this);\n    this._isScrollLocked = value;\n  }\n\n  get isLoading () {\n    return this._isLoading;\n  }\n\n  set isLoading (value) {\n    if (this._isLoading === value) return;\n    if (value) state.add('load', this);\n    else state.remove('load', this);\n    this._isLoading = value;\n  }\n\n  load () {}\n\n  get isSwappingFont () {\n    return this._isSwappingFont;\n  }\n\n  set isSwappingFont (value) {\n    if (this._isSwappingFont === value) return;\n    if (value) state.add('font-swap', this);\n    else state.remove('font-swap', this);\n    this._isSwappingFont = value;\n  }\n\n  swapFont () {}\n\n  get isMouseMoving () { return this._isMouseMoving; }\n\n  set isMouseMoving (value) {\n    if (this._isMouseMoving === value) return;\n    if (value) {\n      state.add('mouse-move', this);\n    } else {\n      state.remove('mouse-move', this);\n    }\n    this._isMouseMoving = value;\n  }\n\n  mouseMove (point) {}\n\n  examine (attributeNames) {\n    if (!this.node.matches(this.registration.selector)) {\n      this._dispose();\n      return;\n    }\n\n    this.mutate(attributeNames);\n  }\n\n  mutate (attributeNames) {}\n\n  retrieveNodeId (node, append) {\n    if (node.id) return node.id;\n    const id = uniqueId(`${this.id}-${append}`);\n    this.warn(`add id '${id}' to ${append}`);\n    node.setAttribute('id', id);\n    return id;\n  }\n\n  get isDisposed () {\n    return this._isDisposed;\n  }\n\n  _dispose () {\n    this.debug(`dispose instance of ${this.registration.instanceClassName} on element [${this.element.id}]`);\n    this.removeAttribute(this.registration.attribute);\n    this.unlisten();\n    state.remove('hash', this);\n    this._hashes = null;\n    this._keys = null;\n    this.isRendering = false;\n    this.isResizing = false;\n    this._nexts = null;\n    state.getModule('render').nexts.remove(this);\n    this.isScrollLocked = false;\n    this.isLoading = false;\n    this.isSwappingFont = false;\n    this.isMouseMoving = false;\n    this._emitter.dispose();\n    this._emitter = null;\n    this._ascent.dispose();\n    this._ascent = null;\n    this._descent.dispose();\n    this._descent = null;\n    this.element.remove(this);\n    for (const registration of this._registrations) state.remove('register', registration);\n    this._registrations = null;\n    this.registration.remove(this);\n    this._isDisposed = true;\n    this.dispose();\n  }\n\n  dispose () {}\n\n  emit (type, data) {\n    return this.element.emit(type, data);\n  }\n\n  addEmission (type, closure) {\n    this._emitter.add(type, closure);\n  }\n\n  removeEmission (type, closure) {\n    this._emitter.remove(type, closure);\n  }\n\n  ascend (type, data) {\n    return this.element.ascend(type, data);\n  }\n\n  addAscent (type, closure) {\n    this._ascent.add(type, closure);\n  }\n\n  removeAscent (type, closure) {\n    this._ascent.remove(type, closure);\n  }\n\n  descend (type, data) {\n    return this.element.descend(type, data);\n  }\n\n  addDescent (type, closure) {\n    this._descent.add(type, closure);\n  }\n\n  removeDescent (type, closure) {\n    this._descent.remove(type, closure);\n  }\n\n  get style () {\n    return this.node.style;\n  }\n\n  addClass (className) {\n    addClass(this.node, className);\n  }\n\n  removeClass (className) {\n    removeClass(this.node, className);\n  }\n\n  hasClass (className) {\n    return hasClass(this.node, className);\n  }\n\n  get classNames () {\n    return getClassNames(this.node);\n  }\n\n  remove () {\n    this.node.parentNode.removeChild(this.node);\n  }\n\n  setAttribute (attributeName, value) {\n    this.node.setAttribute(attributeName, value);\n  }\n\n  getAttribute (attributeName) {\n    return this.node.getAttribute(attributeName);\n  }\n\n  hasAttribute (attributeName) {\n    return this.node.hasAttribute(attributeName);\n  }\n\n  removeAttribute (attributeName) {\n    this.node.removeAttribute(attributeName);\n  }\n\n  setProperty (propertyName, value) {\n    this.node.style.setProperty(propertyName, value);\n  }\n\n  removeProperty (propertyName) {\n    this.node.style.removeProperty(propertyName);\n  }\n\n  focus () {\n    this.node.focus();\n  }\n\n  blur () {\n    this.node.blur();\n  }\n\n  retainFocus () {\n    this._focusIndex = focusManager.index;\n  }\n\n  focusBack () {\n    focusManager.focus(this._focusIndex);\n  }\n\n  focusClosest () {\n    const closest = this._focusClosest(this.node.parentNode);\n    if (closest) closest.focus();\n  }\n\n  _focusClosest (parent) {\n    if (!parent) return null;\n    const actions = [...queryActions(parent)];\n    if (actions.length <= 1) {\n      return this._focusClosest(parent.parentNode);\n    } else {\n      const index = actions.indexOf(this.node);\n      return actions[index + (index < actions.length - 1 ? 1 : -1)];\n    }\n  }\n\n  get hasFocus () {\n    return this.node === document.activeElement;\n  }\n\n  scrollIntoView () {\n    const rect = this.getRect();\n\n    const scroll = state.getModule('lock');\n\n    if (rect.top < 0) {\n      scroll.move(rect.top - 50);\n    }\n\n    if (rect.bottom > window.innerHeight) {\n      scroll.move(rect.bottom - window.innerHeight + 50);\n    }\n  }\n\n  matches (selectors) {\n    return this.node.matches(selectors);\n  }\n\n  querySelector (selectors) {\n    return this.node.querySelector(selectors);\n  }\n\n  querySelectorAll (selectors) {\n    return querySelectorAllArray(this.node, selectors);\n  }\n\n  queryParentSelector (selectors) {\n    return queryParentSelector(this.node, selectors);\n  }\n\n  getRect () {\n    const rect = this.node.getBoundingClientRect();\n    rect.center = rect.left + rect.width * 0.5;\n    rect.middle = rect.top + rect.height * 0.5;\n    return rect;\n  }\n\n  get isLegacy () {\n    return state.isLegacy;\n  }\n}\n\nclass KeyAction {\n  constructor (type, keyCode, closure, preventDefault, stopPropagation) {\n    this.type = type;\n    this.eventType = `key${type}`;\n    this.keyCode = keyCode;\n    this.closure = closure;\n    this.preventDefault = preventDefault === true;\n    this.stopPropagation = stopPropagation === true;\n  }\n\n  handle (e) {\n    if (e.type !== this.eventType) return;\n    if (e.keyCode === this.keyCode.value) {\n      this.closure(e);\n      if (this.preventDefault) {\n        e.preventDefault();\n      }\n      if (this.stopPropagation) {\n        e.stopPropagation();\n      }\n    }\n  }\n}\n\nclass Listener {\n  constructor (node, type, closure, options) {\n    this._node = node;\n    this._type = type;\n    this._closure = closure;\n    this._options = options;\n  }\n\n  get closure () {\n    return this._closure;\n  }\n\n  listen () {\n    this._node.addEventListener(this._type, this._closure, this._options);\n  }\n\n  matchOptions (options = null) {\n    switch (true) {\n      case options === null:\n      case typeof this._options === 'boolean' && typeof options === 'boolean' && this._options === options:\n        return true;\n\n      case Object.keys(this._options).length !== Object.keys(options).length:\n        return false;\n\n      case Object.keys(options).every(key => this._options[key] === options[key]):\n        return true;\n    }\n\n    return false;\n  }\n\n  unlisten () {\n    this._node.removeEventListener(this._type, this._closure, this._options);\n  }\n}\n\nclass HashAction {\n  constructor (hash, add) {\n    this.hash = hash;\n    this.add = add;\n  }\n\n  handle (hash, e) {\n    if (this.hash === hash) this.add(e);\n  }\n}\n\nexport { Instance };\n","import ns from '../api/utilities/namespace.js';\n\nconst DisclosureEvent = {\n  DISCLOSE: ns.event('disclose'),\n  CONCEAL: ns.event('conceal'),\n  CURRENT: ns.event('current')\n};\n\nexport { DisclosureEvent };\n","import ns from '../api/utilities/namespace.js';\n\nconst DisclosureEmission = {\n  RESET: ns.emission('disclosure', 'reset'),\n  ADDED: ns.emission('disclosure', 'added'),\n  RETRIEVE: ns.emission('disclosure', 'retrieve'),\n  REMOVED: ns.emission('disclosure', 'removed'),\n  GROUP: ns.emission('disclosure', 'group'),\n  UNGROUP: ns.emission('disclosure', 'ungroup'),\n  SPOTLIGHT: ns.emission('disclosure', 'spotlight')\n};\n\nexport { DisclosureEmission };\n","import { Instance } from '../api/modules/register/instance.js';\nimport { DisclosureEvent } from './disclosure-event.js';\nimport { DisclosureEmission } from './disclosure-emission.js';\nimport { completeAssign } from '../api/utilities/property/complete-assign.js';\n\nclass Disclosure extends Instance {\n  constructor (type, selector, DisclosureButtonInstanceClass, disclosuresGroupInstanceClassName) {\n    super();\n    this.type = type;\n    this._selector = selector;\n    this.DisclosureButtonInstanceClass = DisclosureButtonInstanceClass;\n    this.disclosuresGroupInstanceClassName = disclosuresGroupInstanceClassName;\n    this.modifier = this._selector + '--' + this.type.id;\n    this._isPristine = true;\n    this._isActive = true;\n    this._isRetrievingPrimaries = false;\n    this._hasRetrieved = false;\n    this._primaryButtons = [];\n  }\n\n  static get instanceClassName () {\n    return 'Disclosure';\n  }\n\n  init () {\n    this.addDescent(DisclosureEmission.RESET, this.reset.bind(this));\n    this.addDescent(DisclosureEmission.GROUP, this.update.bind(this));\n    this.addDescent(DisclosureEmission.UNGROUP, this.update.bind(this));\n    this.addAscent(DisclosureEmission.SPOTLIGHT, this.disclose.bind(this));\n    this.register(`[aria-controls=\"${this.id}\"]`, this.DisclosureButtonInstanceClass);\n    this.ascend(DisclosureEmission.ADDED);\n    this.listenHash(this.id, this._spotlight.bind(this));\n    this.update();\n  }\n\n  get isEnabled () { return super.isEnabled; }\n\n  set isEnabled (value) {\n    if (this.isEnabled === value) return;\n    super.isEnabled = value;\n    if (value) this.ascend(DisclosureEmission.ADDED);\n    else this.ascend(DisclosureEmission.REMOVED);\n  }\n\n  get isActive () {\n    return this._isActive;\n  }\n\n  set isActive (value) {\n    if (this._isActive === value) return;\n    this._isActive = value;\n    if (value) this.ascend(DisclosureEmission.ADDED);\n    else {\n      this.ascend(DisclosureEmission.REMOVED);\n      if (this.isDisclosed) this.conceal();\n    }\n  }\n\n  get isPristine () {\n    return this._isPristine;\n  }\n\n  get proxy () {\n    const scope = this;\n    const proxy = Object.assign(super.proxy, {\n      disclose: scope.disclose.bind(scope),\n      focus: scope.focus.bind(scope)\n    });\n\n    if (this.type.canConceal) proxy.conceal = scope.conceal.bind(scope);\n\n    const proxyAccessors = {\n      get buttons () {\n        return scope.buttons.map((button) => button.proxy);\n      },\n      get group () {\n        const group = scope.group;\n        return group ? group.proxy : null;\n      },\n      get isDisclosed () {\n        return scope.isDisclosed;\n      },\n      get isEnabled () {\n        return scope.isEnabled;\n      },\n      get isActive () {\n        return scope.isActive;\n      }\n    };\n\n    return completeAssign(proxy, proxyAccessors);\n  }\n\n  get buttons () {\n    return this.getRegisteredInstances(this.DisclosureButtonInstanceClass.instanceClassName);\n  }\n\n  update () {\n    this.getGroup();\n    this.retrievePrimaries();\n  }\n\n  getGroup () {\n    if (!this.disclosuresGroupInstanceClassName) {\n      this._group = null;\n      return;\n    }\n\n    const group = this.element.getAscendantInstance(this.disclosuresGroupInstanceClassName, this.constructor.instanceClassName);\n    if (!group || !group.validate(this)) {\n      this._group = null;\n      return;\n    }\n\n    this._group = group;\n  }\n\n  get group () {\n    return this._group;\n  }\n\n  disclose (withhold) {\n    if (this.isDisclosed === true || !this.isEnabled || !this._isActive) return false;\n    this.retainFocus();\n    this._isPristine = false;\n    this.isDisclosed = true;\n    if (!withhold && this.group) this.group.current = this;\n    return true;\n  }\n\n  conceal (withhold, preventFocus = true) {\n    if (this.isDisclosed === false) return false;\n    if (!this.type.canConceal && this.group && this.group.current === this) return false;\n    this.isDisclosed = false;\n    if (!withhold && this.group && this.group.current === this) this.group.current = null;\n    if (!preventFocus) this.focus();\n    if (!this._isPristine) this.descend(DisclosureEmission.RESET);\n    return true;\n  }\n\n  get isDisclosed () {\n    return this._isDisclosed;\n  }\n\n  set isDisclosed (value) {\n    if (this._isDisclosed === value || (!this.isEnabled && value === true)) return;\n    if (!this._isPristine) this.dispatch(value ? DisclosureEvent.DISCLOSE : DisclosureEvent.CONCEAL, this);\n    this._isDisclosed = value;\n    if (value) this.addClass(this.modifier);\n    else this.removeClass(this.modifier);\n    for (let i = 0; i < this.buttons.length; i++) this.buttons[i].apply(value);\n  }\n\n  get isInitiallyDisclosed () {\n    return this.primaryButtons.some(button => button.isInitiallyDisclosed);\n  }\n\n  hasRetrieved () {\n    return this._hasRetrieved;\n  }\n\n  reset () {}\n\n  toggle (canDisclose) {\n    if (!this.type.canConceal) this.disclose();\n    else {\n      switch (true) {\n        case !canDisclose:\n        case this.isDisclosed:\n          this.conceal(false, false);\n          break;\n\n        default:\n          this.disclose();\n      }\n    }\n  }\n\n  get buttonHasFocus () {\n    return this.buttons.some((button) => { return button.hasFocus; });\n  }\n\n  get hasFocus () {\n    if (super.hasFocus) return true;\n    if (this.buttonHasFocus) return true;\n    return this.querySelectorAll(':focus').length > 0;\n  }\n\n  focus () {\n    this.focusBack();\n  }\n\n  get primaryButtons () {\n    return this._primaryButtons;\n  }\n\n  retrievePrimaries () {\n    if (this._isRetrievingPrimaries) return;\n    this._isRetrievingPrimaries = true;\n    this.request(this._retrievePrimaries.bind(this));\n  }\n\n  _retrievePrimaries () {\n    this._isRetrievingPrimaries = false;\n    this._primaryButtons = this._electPrimaries(this.buttons);\n\n    if (this._hasRetrieved || (this._primaryButtons.length === 0 && this.type.requirePrimary)) return;\n    this.retrieved();\n    this._hasRetrieved = true;\n\n    this.applyAbility(true);\n\n    if (this.group) {\n      this.group.retrieve();\n      return;\n    }\n\n    if (this._isPristine && this.isEnabled && this.isActive && !this.group) {\n      switch (true) {\n        case this.hash === this.id:\n          this._spotlight();\n          break;\n\n        case this.isInitiallyDisclosed:\n          this.disclose();\n          break;\n      }\n    }\n  }\n\n  retrieved () {}\n\n  _spotlight () {\n    this.disclose();\n    this.request(() => { this.ascend(DisclosureEmission.SPOTLIGHT); });\n  }\n\n  _electPrimaries (candidates) {\n    return candidates.filter(button => button.canDisclose && !this.node.contains(button.node));\n  }\n\n  applyAbility (withhold = false) {\n    const isEnabled = !this.type.requirePrimary || this._primaryButtons.some(button => !button.isDisabled);\n\n    if (this.isEnabled === isEnabled) return;\n\n    this.isEnabled = isEnabled;\n\n    if (withhold) return;\n\n    if (!this.isEnabled && this.isDisclosed) {\n      if (this.group) this.ascend(DisclosureEmission.REMOVED);\n      else if (this.type.canConceal) this.conceal();\n    }\n\n    if (this.isEnabled) {\n      if (this.group) this.ascend(DisclosureEmission.ADDED);\n      if (this.hash === this.id) {\n        this._spotlight();\n      }\n    }\n  }\n\n  dispose () {\n    this._group = null;\n    this._primaryButtons = null;\n    super.dispose();\n    this.ascend(DisclosureEmission.REMOVED);\n  }\n}\n\nexport { Disclosure };\n","import { Instance } from '../api/modules/register/instance';\nimport ns from '../api/utilities/namespace.js';\n\nclass DisclosureButton extends Instance {\n  constructor (type) {\n    super();\n    this.type = type;\n    this.attributeName = type.ariaState ? 'aria-' + type.id : ns.attr(type.id);\n    this._canDisclose = false;\n  }\n\n  static get instanceClassName () {\n    return 'DisclosureButton';\n  }\n\n  get isPrimary () {\n    return this.registration.creator.primaryButtons.includes(this);\n  }\n\n  get canDisclose () {\n    return this._canDisclose;\n  }\n\n  get isDisabled () {\n    return this.type.canDisable && this.hasAttribute('disabled');\n  }\n\n  init () {\n    this._canDisclose = this.hasAttribute(this.attributeName);\n    this._isInitiallyDisclosed = this.isDisclosed;\n    this._isContained = this.registration.creator.node.contains(this.node);\n    this.controlsId = this.getAttribute('aria-controls');\n    this.registration.creator.retrievePrimaries();\n    this.listenClick();\n  }\n\n  get proxy () {\n    const scope = this;\n    return Object.assign(super.proxy, {\n      focus: scope.focus.bind(scope)\n    });\n  }\n\n  handleClick (e) {\n    if (this.registration.creator) this.registration.creator.toggle(this.canDisclose);\n  }\n\n  mutate (attributeNames) {\n    this._canDisclose = this.hasAttribute(this.attributeName);\n    this.registration.creator.applyAbility();\n    if (!this._isApplying && this.isPrimary && attributeNames.indexOf(this.attributeName) > -1 && this.registration.creator) {\n      if (this.isDisclosed) this.registration.creator.disclose();\n      else if (this.type.canConceal) this.registration.creator.conceal();\n    }\n  }\n\n  apply (value) {\n    if (!this.canDisclose) return;\n    this._isApplying = true;\n    this.setAttribute(this.attributeName, value);\n    this.request(() => { this._isApplying = false; });\n  }\n\n  get isDisclosed () {\n    return this.getAttribute(this.attributeName) === 'true';\n  }\n\n  get isInitiallyDisclosed () {\n    return this._isInitiallyDisclosed;\n  }\n\n  focus () {\n    super.focus();\n    this.scrollIntoView();\n  }\n\n  measure (rect) {\n    const buttonRect = this.rect;\n    this._dx = rect.x - buttonRect.x;\n    this._dy = rect.y - buttonRect.y;\n  }\n\n  get dx () {\n    return this._dx;\n  }\n\n  get dy () {\n    return this._dy;\n  }\n}\n\nexport { DisclosureButton };\n","import ns from '../api/utilities/namespace.js';\n\nexport const DisclosureSelector = {\n  PREVENT_CONCEAL: ns.attr.selector('prevent-conceal'),\n  GROUP: ns.attr('group')\n};\n","import { Instance } from '../api/modules/register/instance.js';\nimport { DisclosureEvent } from './disclosure-event.js';\nimport { DisclosureEmission } from './disclosure-emission.js';\nimport { completeAssign } from '../api/utilities/property/complete-assign.js';\nimport { DisclosureSelector } from './disclosure-selector.js';\n\nclass DisclosuresGroup extends Instance {\n  constructor (disclosureInstanceClassName, jsAttribute) {\n    super(jsAttribute);\n    this.disclosureInstanceClassName = disclosureInstanceClassName;\n    this._members = [];\n    this._index = -1;\n    this._isRetrieving = false;\n    this._hasRetrieved = false;\n    this._isGrouped = true;\n  }\n\n  static get instanceClassName () {\n    return 'DisclosuresGroup';\n  }\n\n  init () {\n    this.addAscent(DisclosureEmission.ADDED, this.update.bind(this));\n    this.addAscent(DisclosureEmission.RETRIEVE, this.retrieve.bind(this));\n    this.addAscent(DisclosureEmission.REMOVED, this.update.bind(this));\n    this.descend(DisclosureEmission.GROUP);\n    this._isGrouped = this.getAttribute(DisclosureSelector.GROUP) !== 'false';\n    this.update();\n  }\n\n  get proxy () {\n    const scope = this;\n\n    const proxyAccessors = {\n      set index (value) {\n        scope.index = value;\n      },\n      get index () {\n        return scope.index;\n      },\n      get length () {\n        return scope.length;\n      },\n      get current () {\n        const current = scope.current;\n        return current ? current.proxy : null;\n      },\n      get members () {\n        return scope.members.map((member) => member.proxy);\n      },\n      get hasFocus () {\n        return scope.hasFocus;\n      },\n      set isGrouped (value) {\n        scope.isGrouped = value;\n      },\n      get isGrouped () {\n        return scope.isGrouped;\n      }\n    };\n\n    return completeAssign(super.proxy, proxyAccessors);\n  }\n\n  validate (member) {\n    return true;\n  }\n\n  getMembers () {\n    const members = this.element.getDescendantInstances(this.disclosureInstanceClassName, this.constructor.instanceClassName, true);\n    this._members = members.filter(this.validate.bind(this)).filter(member => member.isEnabled && member.isActive);\n    const invalids = members.filter(member => !this._members.includes(member));\n    invalids.forEach(invalid => invalid.conceal());\n  }\n\n  retrieve (bypassPrevention = false) {\n    if (this._isRetrieving || (this._hasRetrieved && !bypassPrevention)) return;\n    this._isRetrieving = true;\n    this.request(this._retrieve.bind(this));\n  }\n\n  _retrieve () {\n    this.getMembers();\n    this._isRetrieving = false;\n    this._hasRetrieved = true;\n\n    if (!this.isGrouped) {\n      for (let i = 0; i < this.length; i++) {\n        const member = this.members[i];\n        if (member.isInitiallyDisclosed) {\n          member.disclose(true);\n        }\n      }\n      return;\n    }\n\n    if (this.hash) {\n      for (let i = 0; i < this.length; i++) {\n        const member = this.members[i];\n        if (this.hash === member.id) {\n          this.index = i;\n          this.request(() => { this.ascend(DisclosureEmission.SPOTLIGHT); });\n          return i;\n        }\n      }\n    }\n\n    for (let i = 0; i < this.length; i++) {\n      const member = this.members[i];\n      if (member.isInitiallyDisclosed) {\n        this.index = i;\n        return i;\n      }\n    }\n\n    return this.getIndex();\n  }\n\n  update () {\n    this.getMembers();\n    if (this._hasRetrieved) {\n      if (this.isGrouped) this.getIndex();\n    }\n  }\n\n  get members () {\n    return this._members;\n  }\n\n  get length () {\n    return this.members ? this.members.length : 0;\n  }\n\n  getIndex (defaultIndex = -1) {\n    this._index = undefined;\n    let index = defaultIndex;\n    for (let i = 0; i < this.length; i++) {\n      if (this.members[i].isDisclosed) {\n        index = i;\n        break;\n      }\n    }\n\n    this.index = index;\n    return index;\n  }\n\n  get index () {\n    return this._index;\n  }\n\n  set index (value) {\n    if (value < -1 || value >= this.length || value === this._index) return;\n    this._index = value;\n    for (let i = 0; i < this.length; i++) {\n      const member = this.members[i];\n      if (value === i) {\n        if (!member.isDisclosed) member.disclose(true);\n      } else {\n        if ((this.isGrouped || !this.canUngroup) && member.isDisclosed !== false) member.conceal(true);\n      }\n    }\n    this.apply();\n    this.dispatch(DisclosureEvent.CURRENT, this.current);\n  }\n\n  get current () {\n    if (this._index === -1 || isNaN(this._index)) return null;\n    return this._members[this._index] || null;\n  }\n\n  set current (member) {\n    this.index = this.members.indexOf(member);\n  }\n\n  get hasFocus () {\n    const current = this.current;\n    if (current) return current.hasFocus;\n    return false;\n  }\n\n  set isGrouped (value) {\n    const isGrouped = !!value;\n    if (this._isGrouped === isGrouped) return;\n    this._isGrouped = isGrouped;\n    this.setAttribute(DisclosureSelector.GROUP, !!value);\n    this.update();\n  }\n\n  get isGrouped () {\n    return this._isGrouped;\n  }\n\n  get canUngroup () {\n    return false;\n  }\n\n  mutate (attributesNames) {\n    if (attributesNames.includes(DisclosureSelector.GROUP)) {\n      this.isGrouped = this.getAttribute(DisclosureSelector.GROUP) !== 'false';\n    }\n  }\n\n  apply () {}\n\n  dispose () {\n    super.dispose();\n    this.descend(DisclosureEmission.UNGROUP);\n    this._members = null;\n  }\n}\n\nexport { DisclosuresGroup };\n","export const DisclosureType = {\n  EXPAND: {\n    id: 'expanded',\n    ariaState: true,\n    ariaControls: true,\n    canConceal: true,\n    canDisable: true,\n    requirePrimary: true\n  },\n  SELECT: {\n    id: 'selected',\n    ariaState: true,\n    ariaControls: true,\n    canConceal: false,\n    canDisable: true,\n    requirePrimary: true\n  },\n  OPENED: {\n    id: 'opened',\n    ariaState: false,\n    ariaControls: true,\n    canConceal: true,\n    canDisable: false,\n    requirePrimary: false\n  }\n};\n","import { DisclosureType } from '../disclosure/disclosure-type.js';\nimport { DisclosureButton } from '../disclosure/disclosure-button.js';\n\nclass CollapseButton extends DisclosureButton {\n  constructor () {\n    super(DisclosureType.EXPAND);\n  }\n\n  static get instanceClassName () {\n    return 'CollapseButton';\n  }\n}\n\nexport { CollapseButton };\n","import ns from '../api/utilities/namespace.js';\n\nexport const CollapseSelector = {\n  COLLAPSE: ns.selector('collapse'),\n  COLLAPSING: ns.selector('collapsing')\n};\n","import ns from '../api/utilities/namespace.js';\n\nexport const EquisizedEmission = {\n  CHANGE: ns('equisized', 'change')\n};\n","export const RootSelector = {\n  ROOT: ':root'\n};\n","/**\n * Allowed SVG/HTML elements for inline SVG content.\n * Only standard SVG presentational and structural elements are permitted.\n */\nconst ALLOWED_TAGS = new Set([\n  'svg', 'g', 'defs', 'symbol', 'use', 'title', 'desc', 'style',\n  'path', 'rect', 'circle', 'ellipse', 'line', 'polyline', 'polygon',\n  'text', 'tspan', 'textpath', 'image', 'clippath', 'mask',\n  'lineargradient', 'radialgradient', 'stop', 'pattern', 'marker',\n  'filter', 'fegaussianblur', 'fecolormatrix', 'feblend', 'fecomposite',\n  'feflood', 'femerge', 'femergenode', 'feoffset', 'view', 'switch'\n]);\n\n/**\n * Attributes that must not start with \"javascript:\" or \"data:\" (URL-type attributes).\n */\nconst URL_ATTRIBUTES = new Set([\n  'href', 'xlink:href', 'src', 'action', 'formaction'\n]);\n\nconst DANGEROUS_PROTOCOL = /^\\s*(?:javascript|data|vbscript)\\s*:/i;\nconst DANGEROUS_CSS = /@import|expression\\s*\\(|url\\s*\\(\\s*['\"]?\\s*(?:javascript|data|vbscript):|behavior\\s*:|-moz-binding/i;\n\nconst CSS_ESCAPE_REGEXP = /^-?\\d|^-$|[^a-zA-Z0-9_-]/g;\n\n/**\n * Recursively sanitize an SVG element in-place:\n * - removes elements not in ALLOWED_TAGS\n * - removes all event-handler attributes (on*)\n * - removes dangerous protocol values from URL attributes\n *\n * @param {Element} element\n */\nfunction sanitizeElement (element) {\n  for (const child of Array.from(element.childNodes)) {\n    if (child.nodeType === Node.ELEMENT_NODE) {\n      const tag = child.tagName.toLowerCase();\n      if (!ALLOWED_TAGS.has(tag)) {\n        element.removeChild(child);\n        continue;\n      }\n      // Remove dangerous attributes\n      for (const attr of Array.from(child.attributes)) {\n        const name = attr.name.toLowerCase();\n        if (name.startsWith('on')) {\n          child.removeAttribute(attr.name);\n          continue;\n        }\n        if (URL_ATTRIBUTES.has(name) && DANGEROUS_PROTOCOL.test(attr.value)) {\n          child.removeAttribute(attr.name);\n          continue;\n        }\n        if (URL_ATTRIBUTES.has(name) && !isAllowedUrlAttributeValue(attr.value)) {\n          child.removeAttribute(attr.name);\n          continue;\n        }\n        if (name === 'style') {\n          const sanitizedStyle = sanitizeCssContent(attr.value);\n          if (sanitizedStyle) child.setAttribute(attr.name, sanitizedStyle);\n          else child.removeAttribute(attr.name);\n        }\n      }\n\n      if (tag === 'style') {\n        const sanitizedStyleContent = sanitizeCssContent(child.textContent);\n        if (!sanitizedStyleContent) {\n          element.removeChild(child);\n          continue;\n        }\n        child.textContent = sanitizedStyleContent;\n      }\n\n      sanitizeElement(child);\n    }\n  }\n}\n\n/**\n * Remove CSS payloads commonly used for script execution.\n * Returns an empty string when the CSS contains dangerous patterns.\n *\n * @param {string} css\n * @returns {string}\n */\nfunction sanitizeCssContent (css) {\n  const content = String(css || '').trim();\n  if (!content) return '';\n  if (DANGEROUS_CSS.test(content)) return '';\n  return content;\n}\n\n/**\n * Sanitize an SVG DOM element and return it.\n * Mutates the element in-place.\n *\n * @param {SVGElement} svg\n * @returns {SVGElement}\n */\nfunction sanitizeSvg (svg) {\n  // Remove dangerous attributes on the root <svg> element itself\n  for (const attr of Array.from(svg.attributes)) {\n    const name = attr.name.toLowerCase();\n    if (name.startsWith('on')) {\n      svg.removeAttribute(attr.name);\n      continue;\n    }\n    if (URL_ATTRIBUTES.has(name) && DANGEROUS_PROTOCOL.test(attr.value)) {\n      svg.removeAttribute(attr.name);\n      continue;\n    }\n    if (URL_ATTRIBUTES.has(name) && !isAllowedUrlAttributeValue(attr.value)) {\n      svg.removeAttribute(attr.name);\n    }\n  }\n  sanitizeElement(svg);\n  return svg;\n}\n\n/**\n * Validate URL-valued attributes for inline SVG usage.\n * Allows same-document fragments (#id) and same-origin URLs only.\n *\n * @param {string} value\n * @returns {boolean}\n */\nfunction isAllowedUrlAttributeValue (value) {\n  const url = String(value || '').trim();\n  if (!url) return true;\n  if (url.charAt(0) === '#') return true;\n  return isSameOrigin(url);\n}\n\n/**\n * Check whether a URL is same-origin as the current page.\n * Non-empty relative URLs are considered same-origin.\n *\n * @param {string} url\n * @returns {boolean}\n */\nfunction isSameOrigin (url) {\n  if (!url) return false;\n  try {\n    const link = document.createElement('a');\n    link.href = url;\n\n    const protocol = (link.protocol || window.location.protocol).toLowerCase();\n    if (protocol !== 'http:' && protocol !== 'https:') return false;\n\n    const hostname = link.hostname || window.location.hostname;\n    const port = link.port || (protocol === 'https:' ? '443' : '80');\n    const currentPort = window.location.port || (window.location.protocol === 'https:' ? '443' : '80');\n\n    return protocol === window.location.protocol && hostname === window.location.hostname && port === currentPort;\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * Escape a CSS identifier safely.\n * Uses native CSS.escape when available, with an IE11-compatible fallback.\n *\n * @param {string} value\n * @returns {string}\n */\nfunction escapeCssIdentifier (value) {\n  const input = String(value || '');\n  if (window.CSS && typeof window.CSS.escape === 'function') {\n    return window.CSS.escape(input);\n  }\n\n  return input.replace(CSS_ESCAPE_REGEXP, character => `\\\\${character}`);\n}\n\nexport { sanitizeSvg, isSameOrigin, escapeCssIdentifier };\n","import ns from '../api/utilities/namespace.js';\n\nexport const InjectSvgSelector = {\n  INJECT_SVG: `[${ns.attr('inject-svg')}]`\n};\n","import ns from '../api/utilities/namespace.js';\n\nexport const ArtworkSelector = {\n  ARTWORK_USE: `${ns.selector('artwork')} use`\n};\n","import ns from '../api/utilities/namespace.js';\n\nexport const AssessSelector = {\n  ASSESS_FILE: `${ns.attr.selector('assess-file')}`,\n  DETAIL: `${ns.attr.selector('assess-file')} [class$=\"__detail\"], ${ns.attr.selector('assess-file')} [class*=\"__detail \"]`\n};\n","import ns from '../api/utilities/namespace.js';\n\nconst AssessEmission = {\n  UPDATE: ns.emission('assess', 'update'),\n  ADDED: ns.emission('assess', 'added')\n};\n\nexport { AssessEmission };\n","import ns from '../api/utilities/namespace.js';\n\nconst ratiosImg = ['32x9', '16x9', '3x2', '4x3', '1x1', '3x4', '2x3'];\nconst ratiosVid = ['16x9', '4x3', '1x1'];\n\nconst ratioSelector = (name, modifiers) => {\n  return modifiers.map(modifier => ns.selector(`${name}--${modifier}`)).join(',');\n};\n\nconst deprecatedRatioSelector = `${ns.selector('responsive-img')}, ${ratioSelector('responsive-img', ratiosImg)}, ${ns.selector('responsive-vid')}, ${ratioSelector('responsive-vid', ratiosVid)}`;\n\nexport const RatioSelector = {\n  RATIO: `${ns.selector('ratio')}, ${ratioSelector('ratio', ratiosImg)}, ${deprecatedRatioSelector}`\n};\n","import config from './config.js';\nconst api = window[config.namespace];\nexport default api;\n","import ns from '../api/utilities/namespace.js';\n\nexport const PlaceSelector = {\n  TOP: ns.selector('placement--top'),\n  RIGHT: ns.selector('placement--right'),\n  BOTTOM: ns.selector('placement--bottom'),\n  LEFT: ns.selector('placement--left')\n};\n","import ns from '../api/utilities/namespace.js';\n\nexport const AlignSelector = {\n  START: ns.selector('placement--start'),\n  CENTER: ns.selector('placement--center'),\n  END: ns.selector('placement--end')\n};\n","export const PlacementPosition = {\n  TOP: 'place_top',\n  RIGHT: 'place_right',\n  BOTTOM: 'place_bottom',\n  LEFT: 'place_left'\n};\n","export const PlacementAlign = {\n  START: 'align_start',\n  CENTER: 'align_center',\n  END: 'align_end'\n};\n","export const PlacementMode = {\n  AUTO: 'placement_auto',\n  MANUAL: 'placement_manual'\n};\n","import api from './script/api/api';\n\nimport { Instance } from './script/api/modules/register/instance.js';\nimport { KeyCodes } from './script/api/modules/register/key-codes.js';\nimport { Breakpoints } from './script/api/modules/register/breakpoints';\nimport { Disclosure } from './script/disclosure/disclosure.js';\nimport { DisclosureButton } from './script/disclosure/disclosure-button.js';\nimport { DisclosuresGroup } from './script/disclosure/disclosures-group.js';\nimport { DisclosureType } from './script/disclosure/disclosure-type.js';\nimport { DisclosureEvent } from './script/disclosure/disclosure-event.js';\nimport { DisclosureSelector } from './script/disclosure/disclosure-selector.js';\nimport { DisclosureEmission } from './script/disclosure/disclosure-emission.js';\nimport { CollapseButton } from './script/collapse/collapse-button.js';\nimport { Collapse } from './script/collapse/collapse.js';\nimport { CollapsesGroup } from './script/collapse/collapses-group.js';\nimport { CollapseSelector } from './script/collapse/collapse-selector.js';\nimport { Equisized } from './script/equisized/equisized.js';\nimport { EquisizedsGroup } from './script/equisized/equisizeds-group.js';\nimport { EquisizedEmission } from './script/equisized/equisized-emission.js';\nimport { Toggle } from './script/action/toggle/toggle';\nimport { RootSelector } from './script/api/modules/stage/root-selector.js';\nimport { RootEmission } from './script/api/modules/stage/root-emission.js';\nimport { InjectSvg } from './script/inject/inject-svg';\nimport { InjectSvgSelector } from './script/inject/inject-svg-selector';\nimport { Artwork } from './script/artwork/artwork';\nimport { ArtworkSelector } from './script/artwork/artwork-selector';\nimport { AssessSelector } from './script/assess/assess-selector';\nimport { AssessFile } from './script/assess/assess-file';\nimport { AssessDetail } from './script/assess/assess-detail';\nimport { AssessEmission } from './script/assess/assess-emission';\nimport { RatioSelector } from './script/ratio/ratio-selector.js';\nimport { Ratio } from './script/ratio/ratio.js';\nimport { Placement } from './script/placement/placement.js';\nimport { PlacementReferent } from './script/placement/placement-referent';\nimport { PlacementAlign } from './script/placement/placement-align';\nimport { PlacementPosition } from './script/placement/placement-position';\nimport { PlacementMode } from './script/placement/placement-mode';\n\napi.core = {\n  Instance: Instance,\n  Breakpoints: Breakpoints,\n  KeyCodes: KeyCodes,\n  Disclosure: Disclosure,\n  DisclosureButton: DisclosureButton,\n  DisclosuresGroup: DisclosuresGroup,\n  DisclosureType: DisclosureType,\n  DisclosureEvent: DisclosureEvent,\n  DisclosureSelector: DisclosureSelector,\n  DisclosureEmission: DisclosureEmission,\n  Collapse: Collapse,\n  CollapseButton: CollapseButton,\n  CollapsesGroup: CollapsesGroup,\n  CollapseSelector: CollapseSelector,\n  RootSelector: RootSelector,\n  RootEmission: RootEmission,\n  Equisized: Equisized,\n  EquisizedEmission: EquisizedEmission,\n  Toggle: Toggle,\n  EquisizedsGroup: EquisizedsGroup,\n  InjectSvg: InjectSvg,\n  InjectSvgSelector: InjectSvgSelector,\n  Artwork: Artwork,\n  ArtworkSelector: ArtworkSelector,\n  AssessFile: AssessFile,\n  AssessDetail: AssessDetail,\n  AssessEmission: AssessEmission,\n  AssessSelector: AssessSelector,\n  Ratio: Ratio,\n  RatioSelector: RatioSelector,\n  Placement: Placement,\n  PlacementReferent: PlacementReferent,\n  PlacementAlign: PlacementAlign,\n  PlacementPosition: PlacementPosition,\n  PlacementMode: PlacementMode\n};\n\nexport default api;\n","import { Disclosure } from '../disclosure/disclosure.js';\nimport { CollapseSelector } from './collapse-selector.js';\nimport { DisclosureType } from '../disclosure/disclosure-type.js';\nimport { CollapseButton } from './collapse-button.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 Collapse extends Disclosure {\n  constructor () {\n    super(DisclosureType.EXPAND, CollapseSelector.COLLAPSE, CollapseButton, 'CollapsesGroup');\n  }\n\n  static get instanceClassName () {\n    return 'Collapse';\n  }\n\n  init () {\n    super.init();\n    this.listen('transitionend', this.endCollapsing.bind(this));\n  }\n\n  endCollapsing (e) {\n    if (!this._isCollpasing) return;\n    if (this._timeout) clearTimeout(this._timeout);\n    this._timeout = null;\n    this._isCollpasing = false;\n    this.removeClass(CollapseSelector.COLLAPSING);\n    if (!this.isDisclosed) {\n      if (this.isLegacy) this.style.maxHeight = '';\n    }\n  }\n\n  unbound () {\n    if (this.isLegacy) this.style.maxHeight = 'none';\n  }\n\n  disclose (withhold) {\n    if (this.isDisclosed === true || !this.isEnabled) return false;\n    this.unbound();\n    this.collapsing(() => super.disclose(withhold));\n  }\n\n  conceal (withhold, preventFocus) {\n    if (this.isDisclosed === false) return false;\n    this.collapsing(() => super.conceal(withhold, preventFocus));\n  }\n\n  collapsing (request) {\n    this._isCollpasing = true;\n    if (this._timeout) clearTimeout(this._timeout);\n    this.addClass(CollapseSelector.COLLAPSING);\n    this.adjust();\n    this.request(() => {\n      request();\n      this._timeout = setTimeout(this.endCollapsing.bind(this), 500);\n    });\n  }\n\n  adjust () {\n    this.setProperty('--collapser', 'none');\n    const height = this.node.offsetHeight;\n    this.setProperty('--collapse', -height + 'px');\n    this.setProperty('--collapser', '');\n  }\n\n  reset () {\n    if (!this.isPristine) this.isDisclosed = false;\n  }\n\n  _electPrimaries (candidates) {\n    const primary = this.element.parent.instances.map(instance => instance.collapsePrimary).filter(button => button !== undefined && candidates.indexOf(button) > -1);\n    if (primary.length === 1) return primary;\n    candidates = super._electPrimaries(candidates);\n    if (candidates.length === 1) return candidates;\n    const before = candidates.filter(candidate => candidate.dy >= 0);\n    if (before.length > 0) candidates = before;\n    if (candidates.length === 1) return candidates;\n    const min = Math.min(...candidates.map(candidate => candidate.dy));\n    const mins = candidates.filter(candidate => candidate.dy === min);\n    if (mins.length > 0) candidates = mins;\n    if (candidates.length === 1) return candidates;\n    candidates.sort((a, b) => Math.abs(b.dx) - Math.abs(a.dx));\n    return candidates;\n  }\n}\n\nexport { Collapse };\n","import { DisclosuresGroup } from '../disclosure/disclosures-group.js';\n\nclass CollapsesGroup extends DisclosuresGroup {\n  constructor () {\n    super('Collapse');\n  }\n\n  static get instanceClassName () {\n    return 'CollapsesGroup';\n  }\n\n  get canUngroup () {\n    return true;\n  }\n}\n\nexport { CollapsesGroup };\n","import { Instance } from '../api/modules/register/instance.js';\nimport { EquisizedEmission } from './equisized-emission.js';\n\nclass Equisized extends Instance {\n  static get instanceClassName () {\n    return 'Equisized';\n  }\n\n  init () {\n    this.ascend(EquisizedEmission.CHANGE);\n  }\n\n  measure () {\n    if (this.isLegacy) this.style.width = 'auto';\n    return this.getRect().width;\n  }\n\n  adjust (width) {\n    if (this.isLegacy) this.style.width = `${width}px`;\n  }\n\n  dispose () {\n    this.ascend(EquisizedEmission.CHANGE);\n  }\n}\n\nexport { Equisized };\n","import { Instance } from '../../api/modules/register/instance.js';\nimport { completeAssign } from '../../api/utilities/property/complete-assign.js';\n\nclass Toggle extends Instance {\n  static get instanceClassName () {\n    return 'Toggle';\n  }\n\n  init () {\n    this.pressed = this.pressed === 'true';\n    this.listenClick();\n  }\n\n  handleClick () {\n    this.toggle();\n  }\n\n  toggle () {\n    this.pressed = this.pressed !== 'true';\n  }\n\n  get pressed () {\n    return this.getAttribute('aria-pressed');\n  }\n\n  set pressed (value) {\n    this.setAttribute('aria-pressed', value ? 'true' : 'false');\n  }\n\n  get proxy () {\n    const scope = this;\n    const proxy = Object.assign(super.proxy, {\n      toggle: scope.toggle.bind(scope)\n    });\n\n    const proxyAccessors = {\n      get pressed () {\n        return scope.pressed;\n      },\n      set pressed (value) {\n        scope.pressed = value;\n      }\n    };\n\n    return completeAssign(proxy, proxyAccessors);\n  }\n}\n\nexport { Toggle };\n","import { Instance } from '../api/modules/register/instance.js';\nimport { EquisizedEmission } from './equisized-emission.js';\n\nclass EquisizedsGroup extends Instance {\n  static get instanceClassName () {\n    return 'EquisizedsGroup';\n  }\n\n  init () {\n    this.isResizing = true;\n    this.isLoading = true;\n    this.addAscent(EquisizedEmission.CHANGE, this.resize.bind(this));\n  }\n\n  load () {\n    this.resize();\n  }\n\n  resize () {\n    const equisizeds = this.element.getDescendantInstances('Equisized');\n    if (!this.isLegacy) this.style.setProperty('--equisized-width', 'auto');\n\n    const width = Math.max(...equisizeds.map(equisized => equisized.measure()));\n    if (this.isLegacy) equisizeds.forEach(equisized => equisized.adjust(width));\n    else this.style.setProperty('--equisized-width', `${width}px`);\n  }\n}\n\nexport { EquisizedsGroup };\n","import { Instance } from '../api/modules/register/instance.js';\nimport { setAttributes } from '../api/utilities/attribute';\nimport { sanitizeSvg, isSameOrigin } from '../api/utilities/sanitize-svg';\n\nclass InjectSvg extends Instance {\n  static get instanceClassName () {\n    return 'InjectSvg';\n  }\n\n  init () {\n    if (this.node) {\n      this.img = this.node.querySelector('img');\n    }\n\n    if (!this.isLegacy) {\n      this.replace();\n    }\n  }\n\n  get proxy () {\n    const scope = this;\n    return Object.assign(super.proxy, {\n      replace: scope.replace.bind(scope),\n      restore: scope.restore.bind(scope)\n    });\n  }\n\n  fetch () {\n    if (this.img) {\n      this.imgID = this.img.getAttribute('id');\n      this.imgClass = this.img.getAttribute('class');\n      this.imgURL = this.img.getAttribute('src');\n\n      if (!isSameOrigin(this.imgURL)) return;\n\n      fetch(this.imgURL)\n        .then(data => data.text())\n        .then(response => {\n          const parser = new DOMParser();\n          const xmlDoc = parser.parseFromString(response, 'text/html');\n          const rawSvg = xmlDoc.querySelector('svg');\n\n          if (rawSvg) {\n            this.svg = sanitizeSvg(rawSvg);\n            this.replace();\n          }\n        });\n    }\n  }\n\n  replace () {\n    if (!this.svg) {\n      this.fetch();\n      return;\n    }\n\n    if (this.imgID && typeof this.imgID !== 'undefined') {\n      this.svg.setAttribute('id', this.imgID);\n    }\n\n    // gestion de la dépréciation\n    let name = this.imgURL.match(/[ \\w-]+\\./)[0];\n    if (name) {\n      name = name.slice(0, -1);\n\n      if (['dark', 'light', 'system'].includes(name)) {\n        this.svg.innerHTML = this.svg.innerHTML.replaceAll('id=\"artwork-', `id=\"${name}-artwork-`);\n        this.svg.innerHTML = this.svg.innerHTML.replaceAll('\"#artwork-', `\"#${name}-artwork-`);\n      }\n    }\n\n    if (this.imgClass && typeof this.imgClass !== 'undefined') {\n      this.svg.setAttribute('class', this.imgClass);\n    }\n\n    if (this.svg.hasAttribute('xmlns:a')) {\n      this.svg.removeAttribute('xmlns:a');\n    }\n\n    this.node.setAttribute('data-fr-inject-svg', true);\n    const svgAttributes = {\n      'aria-hidden': true,\n      focusable: false\n    };\n    setAttributes(this.svg, svgAttributes);\n    this.node.replaceChild(this.svg, this.img);\n  }\n\n  restore () {\n    if (this.img && this.svg) {\n      this.node.setAttribute('data-fr-inject-svg', false);\n      this.node.replaceChild(this.img, this.svg);\n    }\n  }\n}\n\nexport { InjectSvg };\n","const setAttributes = (el, attrs) => {\n  Object.keys(attrs).forEach(key => el.setAttribute(key, attrs[key]));\n};\n\nexport { setAttributes };\n","import { Instance } from '../api/modules/register/instance.js';\nimport { sanitizeSvg, isSameOrigin } from '../api/utilities/sanitize-svg';\n\nclass Artwork extends Instance {\n  static get instanceClassName () {\n    return 'Artwork';\n  }\n\n  init () {\n    if (this.isLegacy) {\n      this.replace();\n    }\n  }\n\n  get proxy () {\n    const scope = this;\n    return Object.assign(super.proxy, {\n      replace: scope.replace.bind(scope)\n    });\n  }\n\n  fetch () {\n    this.xlink = this.node.getAttribute('href');\n    const splitUrl = this.xlink.split('#');\n    this.svgUrl = splitUrl[0];\n    this.svgName = splitUrl[1];\n\n    if (!isSameOrigin(this.svgUrl)) return;\n\n    const xhr = new XMLHttpRequest();\n    xhr.onload = () => {\n      const parser = new DOMParser();\n      const xmlDoc = parser.parseFromString(xhr.responseText, 'text/html');\n      this.realSvgContent = xmlDoc.getElementById(this.svgName);\n      if (this.realSvgContent) {\n        sanitizeSvg(this.realSvgContent);\n        if (this.realSvgContent.tagName === 'symbol') {\n          const expectedHref = `#${this.svgName}`;\n          const uses = xmlDoc.getElementsByTagName('use');\n          this.use = null;\n          for (let i = 0; i < uses.length; i++) {\n            const use = uses[i];\n            const href = use.getAttribute('href') || use.getAttribute('xlink:href');\n            if (href === expectedHref) {\n              this.use = use;\n              break;\n            }\n          }\n          if (this.use) {\n            sanitizeSvg(this.use);\n            this.node.parentNode.insertBefore(this.use, this.node);\n          }\n        } else {\n          // deprecated svg structure\n          this.realSvgContent.classList.add(this.node.classList);\n        }\n\n        this.replace();\n      }\n    };\n    xhr.open('GET', this.svgUrl);\n    xhr.send();\n  }\n\n  replace () {\n    if (!this.realSvgContent) {\n      this.fetch();\n      return;\n    }\n\n    this.node.parentNode.replaceChild(this.realSvgContent, this.node);\n  }\n}\n\nexport { Artwork };\n","import ns from '../api/utilities/namespace.js';\nimport { Instance } from '../api/modules/register/instance.js';\nimport { AssessEmission } from './assess-emission';\nimport inspector from '../api/inspect/inspector.js';\n\nclass AssessFile extends Instance {\n  static get instanceClassName () {\n    return 'AssessFile';\n  }\n\n  init () {\n    this.lang = this.getLang(this.node);\n    this.href = this.getAttribute('href');\n    this.hreflang = this.getAttribute('hreflang');\n    this.file = {};\n    this.gather();\n    this.addAscent(AssessEmission.ADDED, this.update.bind(this));\n    this.addDescent(AssessEmission.ADDED, this.update.bind(this));\n  }\n\n  getFileLength () {\n    if (this.href === undefined) {\n      this.length = -1;\n      return;\n    }\n\n    fetch(this.href, { method: 'HEAD', mode: 'cors' }).then(response => {\n      if (response.ok) {\n        this.length = response.headers.get('content-length') || -1;\n        if (this.length && this.length === -1) {\n          throw new Error('File size unknown' + '\\n Unable to get HTTP header: \"content-length\"');\n        }\n        this.gather();\n      } else {\n        throw new Error('Unable to access the resource : Status ' + response.status);\n      }\n    }).catch((error) => {\n      this.length = -1;\n      this.gather();\n      inspector.warn('Fetch error on assess file : ' + this.href + '\\n ' + error);\n    });\n  }\n\n  mutate (attributeNames) {\n    if (attributeNames.indexOf('href') !== -1) {\n      this.href = this.getAttribute('href');\n      this.getFileLength();\n    }\n\n    if (attributeNames.indexOf('hreflang') !== -1) {\n      this.hreflang = this.getAttribute('hreflang');\n      this.gather();\n    }\n  }\n\n  gather () {\n    // TODO V2: implémenter async\n    if (this.isLegacy) this.length = -1;\n\n    if (!this.length) {\n      this.getFileLength();\n    }\n\n    this.details = [];\n\n    if (this.href) {\n      const extension = this.parseExtension(this.href);\n      if (extension) this.details.push(extension.toUpperCase());\n    }\n\n    if (this.length && this.length !== -1) {\n      this.details.push(this.bytesToSize(this.length));\n    }\n\n    if (this.hreflang) {\n      this.details.push(this.getLangDisplayName(this.hreflang));\n    }\n\n    this.update();\n  }\n\n  update () {\n    if (!this.details) return;\n    this.descend(AssessEmission.UPDATE, this.details);\n    this.ascend(AssessEmission.UPDATE, this.details);\n  }\n\n  getLang (elem) {\n    // todo: ajouter un listener global de changement de langue\n    if (elem.lang) return elem.lang;\n    if (document.documentElement === elem) return window.navigator.language;\n    return this.getLang(elem.parentElement);\n  }\n\n  parseExtension (url) {\n    const regexExtension = /\\.(\\w{1,9})(?:$|[?#])/;\n    return url.match(regexExtension)[0].replace('.', '');\n  }\n\n  getLangDisplayName (locale) {\n    if (this.isLegacy) return locale;\n    const displayNames = new Intl.DisplayNames([this.lang], { type: 'language' });\n    const name = displayNames.of(locale);\n    return name.charAt(0).toUpperCase() + name.slice(1);\n  }\n\n  bytesToSize (bytes) {\n    if (bytes === -1) return null;\n\n    let sizeUnits = ['octets', 'ko', 'Mo', 'Go', 'To'];\n    if (this.getAttribute(ns.attr('assess-file')) === 'bytes') {\n      sizeUnits = ['bytes', 'KB', 'MB', 'GB', 'TB'];\n    }\n\n    const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1000)), 10);\n    if (i === 0) return `${bytes} ${sizeUnits[i]}`;\n\n    const size = bytes / (1000 ** i);\n    const roundedSize = Math.round((size + Number.EPSILON) * 100) / 100; // arrondi a 2 décimal\n    const stringSize = String(roundedSize).replace('.', ',');\n\n    return `${stringSize} ${sizeUnits[i]}`;\n  }\n}\n\nexport { AssessFile };\n","import { Instance } from '../api/modules/register/instance.js';\nimport { AssessEmission } from './assess-emission';\n\nclass AssessDetail extends Instance {\n  static get instanceClassName () {\n    return 'AssessDetail';\n  }\n\n  init () {\n    this.addDescent(AssessEmission.UPDATE, this.update.bind(this));\n    this.ascend(AssessEmission.ADDED);\n  }\n\n  update (details) {\n    this.node.innerHTML = details.join(' - ');\n  }\n}\n\nexport { AssessDetail };\n","import { Instance } from '../api/modules/register/instance.js';\nimport api from '../../api.js';\n\nclass Ratio extends Instance {\n  static get instanceClassName () {\n    return 'Ratio';\n  }\n\n  init () {\n    if (!api.internals.support.supportAspectRatio()) {\n      this.ratio = 16 / 9;\n      for (const className in this.classNames) {\n        if (this.registration.selector.indexOf(this.classNames[className]) > 0) {\n          const ratio = this.classNames[className].split('ratio-');\n          if (ratio[1]) {\n            this.ratio = ratio[1].split('x')[0] / ratio[1].split('x')[1];\n          }\n        }\n      }\n      this.isRendering = true;\n      this.update();\n    }\n  }\n\n  render () {\n    const width = this.getRect().width;\n    if (width !== this.currentWidth) this.update();\n  }\n\n  update () {\n    this.currentWidth = this.getRect().width;\n    this.style.height = this.currentWidth / this.ratio + 'px';\n  }\n}\n\nexport { Ratio };\n","import { Instance } from '../api/modules/register/instance.js';\nimport { PlaceSelector } from './place-selector';\nimport { AlignSelector } from './align-selector';\nimport { completeAssign } from '../api/utilities/property/complete-assign.js';\nimport { PlacementPosition } from './placement-position';\nimport { PlacementAlign } from './placement-align';\nimport { PlacementMode } from './placement-mode';\n\nclass Placement extends Instance {\n  constructor (mode = PlacementMode.AUTO, places = [PlacementPosition.BOTTOM, PlacementPosition.TOP, PlacementPosition.LEFT, PlacementPosition.RIGHT], aligns = [PlacementAlign.CENTER, PlacementAlign.START, PlacementAlign.END], safeAreaMargin = 16) {\n    super();\n    this._mode = mode;\n    this._places = places;\n    this._aligns = aligns;\n    this._safeAreaMargin = safeAreaMargin;\n    this._isShown = false;\n    this._x = this._y = 0;\n  }\n\n  static get instanceClassName () {\n    return 'Placement';\n  }\n\n  init () {\n    this.isResizing = true;\n  }\n\n  get proxy () {\n    const scope = this;\n    const proxy = Object.assign(super.proxy, {\n      show: scope.show.bind(scope),\n      hide: scope.hide.bind(scope)\n    });\n\n    const proxyAccessors = {\n      get mode () {\n        return scope.mode;\n      },\n      set mode (value) {\n        scope.mode = value;\n      },\n      get place () {\n        return scope.place;\n      },\n      set place (value) {\n        scope.place = value;\n      },\n      get align () {\n        return scope.align;\n      },\n      set align (value) {\n        scope.align = value;\n      },\n      get isShown () {\n        return scope.isShown;\n      },\n      set isShown (value) {\n        scope.isShown = value;\n      }\n    };\n\n    return completeAssign(proxy, proxyAccessors);\n  }\n\n  get mode () {\n    return this._mode;\n  }\n\n  set mode (value) {\n    this._mode = value;\n  }\n\n  get place () {\n    return this._place;\n  }\n\n  set place (value) {\n    if (this._place === value) return;\n    switch (this._place) {\n      case PlacementPosition.TOP:\n        this.removeClass(PlaceSelector.TOP);\n        break;\n\n      case PlacementPosition.RIGHT:\n        this.removeClass(PlaceSelector.RIGHT);\n        break;\n\n      case PlacementPosition.BOTTOM:\n        this.removeClass(PlaceSelector.BOTTOM);\n        break;\n\n      case PlacementPosition.LEFT:\n        this.removeClass(PlaceSelector.LEFT);\n        break;\n    }\n    this._place = value;\n    switch (this._place) {\n      case PlacementPosition.TOP:\n        this.addClass(PlaceSelector.TOP);\n        break;\n\n      case PlacementPosition.RIGHT:\n        this.addClass(PlaceSelector.RIGHT);\n        break;\n\n      case PlacementPosition.BOTTOM:\n        this.addClass(PlaceSelector.BOTTOM);\n        break;\n\n      case PlacementPosition.LEFT:\n        this.addClass(PlaceSelector.LEFT);\n        break;\n    }\n  }\n\n  get align () {\n    return this._align;\n  }\n\n  set align (value) {\n    if (this._align === value) return;\n    switch (this._align) {\n      case PlacementAlign.START:\n        this.removeClass(AlignSelector.START);\n        break;\n\n      case PlacementAlign.CENTER:\n        this.removeClass(AlignSelector.CENTER);\n        break;\n\n      case PlacementAlign.END:\n        this.removeClass(AlignSelector.END);\n        break;\n    }\n    this._align = value;\n    switch (this._align) {\n      case PlacementAlign.START:\n        this.addClass(AlignSelector.START);\n        break;\n\n      case PlacementAlign.CENTER:\n        this.addClass(AlignSelector.CENTER);\n        break;\n\n      case PlacementAlign.END:\n        this.addClass(AlignSelector.END);\n        break;\n    }\n  }\n\n  show () {\n    this.isShown = true;\n  }\n\n  hide () {\n    this.isShown = false;\n  }\n\n  get isShown () {\n    return this._isShown;\n  }\n\n  set isShown (value) {\n    if (this._isShown === value || !this.isEnabled) return;\n    this.isRendering = value;\n    this._isShown = value;\n  }\n\n  setReferent (referent) {\n    this._referent = referent;\n  }\n\n  render () {\n    if (!this._referent) return;\n    this.referentRect = this._referent.getRect();\n    this.rect = this.getRect();\n    this.safeArea = this.getSafeArea();\n\n    if (this.mode === PlacementMode.AUTO) {\n      this.place = this.getPlace();\n      switch (this.place) {\n        case PlacementPosition.TOP:\n        case PlacementPosition.BOTTOM:\n          this.align = this.getHorizontalAlign();\n          break;\n\n        case PlacementPosition.LEFT:\n        case PlacementPosition.RIGHT:\n          this.align = this.getVerticalAlign();\n      }\n    }\n\n    let x, y;\n\n    switch (this.place) {\n      case PlacementPosition.TOP:\n        y = this.referentRect.top - this.rect.top - this.rect.height;\n        break;\n\n      case PlacementPosition.RIGHT:\n        x = this.referentRect.left - this.rect.left + this.referentRect.width;\n        break;\n\n      case PlacementPosition.BOTTOM:\n        y = this.referentRect.top - this.rect.top + this.referentRect.height;\n        break;\n\n      case PlacementPosition.LEFT:\n        x = this.referentRect.left - this.rect.left - this.rect.width;\n        break;\n    }\n\n    switch (this.place) {\n      case PlacementPosition.TOP:\n      case PlacementPosition.BOTTOM:\n        switch (this.align) {\n          case PlacementAlign.CENTER:\n            x = this.referentRect.left - this.rect.left + this.referentRect.width * 0.5 - this.rect.width * 0.5;\n            break;\n\n          case PlacementAlign.START:\n            x = this.referentRect.left - this.rect.left;\n            break;\n\n          case PlacementAlign.END:\n            x = this.referentRect.left - this.rect.left + this.referentRect.width - this.rect.width;\n            break;\n        }\n        break;\n\n      case PlacementPosition.RIGHT:\n      case PlacementPosition.LEFT:\n        switch (this.align) {\n          case PlacementAlign.CENTER:\n            y = this.referentRect.top - this.rect.top + this.referentRect.height * 0.5 - this.rect.height * 0.5;\n            break;\n\n          case PlacementAlign.START:\n            y = this.referentRect.top - this.rect.top;\n            break;\n\n          case PlacementAlign.END:\n            y = this.referentRect.top - this.rect.top - this.rect.height;\n            break;\n        }\n        break;\n    }\n\n    this._x += (x + 0.5) | 0;\n    this._y += (y + 0.5) | 0;\n    this.node.style.transform = `translate(${this._x}px,${this._y}px)`;\n  }\n\n  getPlace () {\n    for (const place of this._places) {\n      switch (place) {\n        case PlacementPosition.TOP:\n          if (this.referentRect.top - this.rect.height > this.safeArea.top) return PlacementPosition.TOP;\n          break;\n\n        case PlacementPosition.RIGHT:\n          if (this.referentRect.right + this.rect.width < this.safeArea.right) return PlacementPosition.RIGHT;\n          break;\n\n        case PlacementPosition.BOTTOM:\n          if (this.referentRect.bottom + this.rect.height < this.safeArea.bottom) return PlacementPosition.BOTTOM;\n          break;\n\n        case PlacementPosition.LEFT:\n          if (this.referentRect.left - this.rect.width > this.safeArea.left) return PlacementPosition.LEFT;\n          break;\n      }\n    }\n\n    return this._places[0];\n  }\n\n  getHorizontalAlign () {\n    for (const align of this._aligns) {\n      switch (align) {\n        case PlacementAlign.CENTER:\n          if (this.referentRect.center - this.rect.width * 0.5 > this.safeArea.left && this.referentRect.center + this.rect.width * 0.5 < this.safeArea.right) return PlacementAlign.CENTER;\n          break;\n\n        case PlacementAlign.START:\n          if (this.referentRect.left + this.rect.width < this.safeArea.right) return PlacementAlign.START;\n          break;\n\n        case PlacementAlign.END:\n          if (this.referentRect.right - this.rect.width > this.safeArea.left) return PlacementAlign.END;\n          break;\n      }\n    }\n\n    return this._aligns[0];\n  }\n\n  getVerticalAlign () {\n    for (const align of this._aligns) {\n      switch (align) {\n        case PlacementAlign.CENTER:\n          if (this.referentRect.middle - this.rect.height * 0.5 > this.safeArea.top && this.referentRect.middle + this.rect.height * 0.5 < this.safeArea.bottom) return PlacementAlign.CENTER;\n          break;\n\n        case PlacementAlign.START:\n          if (this.referentRect.top + this.rect.height < this.safeArea.bottom) return PlacementAlign.START;\n          break;\n\n        case PlacementAlign.END:\n          if (this.referentRect.bottom - this.rect.height > this.safeArea.top) return PlacementAlign.END;\n          break;\n      }\n    }\n\n    return this._aligns[0];\n  }\n\n  getSafeArea () {\n    let element = this.node;\n    let isX, isY;\n    let top = this._safeAreaMargin;\n    let right = window.innerWidth - this._safeAreaMargin;\n    let bottom = window.innerHeight - this._safeAreaMargin;\n    let left = this._safeAreaMargin;\n\n    while (element) {\n      if (element === document.body) break;\n      element = element.parentElement;\n      const style = window.getComputedStyle(element);\n\n      const overflow = /(visible|(\\w+))(\\s(visible|(\\w+)))?/.exec(style.overflow);\n      isX = overflow[2] !== undefined;\n      isY = overflow[3] !== undefined ? overflow[5] !== undefined : overflow[2] !== undefined;\n\n      if (!isX && !isY) continue;\n      const rect = element.getBoundingClientRect();\n\n      if (isX) {\n        if (rect.left > left) left = rect.left;\n        if (rect.right < right) right = rect.right;\n      }\n      if (isY) {\n        if (rect.top > top) top = rect.top;\n        if (rect.bottom < bottom) bottom = rect.bottom;\n      }\n    }\n\n    return {\n      top: top,\n      right: right,\n      bottom: bottom,\n      left: left,\n      center: left + (right - left) * 0.5,\n      middle: top + (bottom - top) * 0.5\n    };\n  }\n\n  dispose () {\n    this._referent = null;\n    super.dispose();\n  }\n}\n\nexport { Placement };\n","import { Instance } from '../api/modules/register/instance.js';\n\nclass PlacementReferent extends Instance {\n  constructor () {\n    super();\n    this._isShown = false;\n  }\n\n  static get instanceClassName () {\n    return 'PlacementReferent';\n  }\n\n  init () {\n    this.registration.creator.setReferent(this);\n    this._placement = this.registration.creator;\n  }\n\n  get placement () {\n    return this._placement;\n  }\n\n  get isShown () {\n    return this._isShown;\n  }\n\n  set isShown (value) {\n    if (this._isShown === value || !this.isEnabled) return;\n    this._isShown = value;\n    if (value) this.registration.creator.show();\n    else this.registration.creator.hide();\n  }\n\n  show () {\n    this.isShown = true;\n  }\n\n  hide () {\n    this.isShown = false;\n  }\n}\n\nexport { PlacementReferent };\n","import api from './index.js';\n\napi.internals.register(api.core.CollapseSelector.COLLAPSE, api.core.Collapse);\napi.internals.register(api.core.InjectSvgSelector.INJECT_SVG, api.core.InjectSvg);\napi.internals.register(api.core.RatioSelector.RATIO, api.core.Ratio);\napi.internals.register(api.core.AssessSelector.ASSESS_FILE, api.core.AssessFile);\napi.internals.register(api.core.AssessSelector.DETAIL, api.core.AssessDetail);\n\nexport default api;\n","export const SchemeValue = {\n  SYSTEM: 'system',\n  LIGHT: 'light',\n  DARK: 'dark'\n};\n","import api from '../../api';\n\nexport const SchemeAttribute = {\n  THEME: api.internals.ns.attr('theme'),\n  SCHEME: api.internals.ns.attr('scheme'),\n  TRANSITION: api.internals.ns.attr('transition')\n};\n","export const SchemeTheme = {\n  LIGHT: 'light',\n  DARK: 'dark'\n};\n","import api from '../../api';\n\nexport const SchemeEmission = {\n  SCHEME: api.internals.ns.emission('scheme', 'scheme'),\n  THEME: api.internals.ns.emission('scheme', 'theme'),\n  ASK: api.internals.ns.emission('scheme', 'ask')\n};\n","import api from '../../api.js';\n\nconst SchemeEvent = {\n  SCHEME: api.internals.ns.event('scheme'),\n  THEME: api.internals.ns.event('theme')\n};\n\nexport { SchemeEvent };\n","import api from '../../api.js';\nimport { SchemeValue } from './scheme-value.js';\nimport { SchemeAttribute } from './scheme-attribute.js';\nimport { SchemeTheme } from './scheme-theme.js';\nimport { SchemeEmission } from './scheme-emission.js';\nimport { SchemeEvent } from './scheme-event.js';\n\nclass Scheme extends api.core.Instance {\n  constructor () {\n    super(false);\n  }\n\n  static get instanceClassName () {\n    return 'Scheme';\n  }\n\n  init () {\n    this.changing = this.change.bind(this);\n\n    if (this.hasAttribute(SchemeAttribute.TRANSITION)) {\n      this.removeAttribute(SchemeAttribute.TRANSITION);\n      this.request(this.restoreTransition.bind(this));\n    }\n\n    const scheme = api.internals.support.supportLocalStorage() ? localStorage.getItem('scheme') : '';\n    const schemeAttr = this.getAttribute(SchemeAttribute.SCHEME);\n\n    switch (scheme) {\n      case SchemeValue.DARK:\n      case SchemeValue.LIGHT:\n      case SchemeValue.SYSTEM:\n        this.scheme = scheme;\n        break;\n\n      default:\n        switch (schemeAttr) {\n          case SchemeValue.DARK:\n            this.scheme = SchemeValue.DARK;\n            break;\n\n          case SchemeValue.LIGHT:\n            this.scheme = SchemeValue.LIGHT;\n            break;\n\n          default:\n            this.scheme = SchemeValue.SYSTEM;\n        }\n    }\n\n    this.addAscent(SchemeEmission.ASK, this.ask.bind(this));\n    this.addAscent(SchemeEmission.SCHEME, this.apply.bind(this));\n  }\n\n  get proxy () {\n    const scope = this;\n\n    const proxyAccessors = {\n      get scheme () {\n        return scope.scheme;\n      },\n      set scheme (value) {\n        scope.scheme = value;\n      }\n    };\n\n    return api.internals.property.completeAssign(super.proxy, proxyAccessors);\n  }\n\n  restoreTransition () {\n    this.setAttribute(SchemeAttribute.TRANSITION, '');\n  }\n\n  ask () {\n    this.descend(SchemeEmission.SCHEME, this.scheme);\n  }\n\n  apply (value) {\n    this.scheme = value;\n  }\n\n  get scheme () {\n    return this._scheme;\n  }\n\n  set scheme (value) {\n    if (this._scheme === value) return;\n    this._scheme = value;\n    switch (value) {\n      case SchemeValue.SYSTEM:\n        this.listenPreferences();\n        break;\n\n      case SchemeValue.DARK:\n        this.unlistenPreferences();\n        this.theme = SchemeTheme.DARK;\n        break;\n\n      case SchemeValue.LIGHT:\n        this.unlistenPreferences();\n        this.theme = SchemeTheme.LIGHT;\n        break;\n\n      default:\n        this.scheme = SchemeValue.SYSTEM;\n        return;\n    }\n\n    this.descend(SchemeEmission.SCHEME, value);\n    if (api.internals.support.supportLocalStorage()) {\n      localStorage.setItem('scheme', value);\n    }\n    this.setAttribute(SchemeAttribute.SCHEME, value);\n    this.dispatch(SchemeEvent.SCHEME, { scheme: this._scheme }, false);\n  }\n\n  get theme () {\n    return this._theme;\n  }\n\n  set theme (value) {\n    if (this._theme === value) return;\n    switch (value) {\n      case SchemeTheme.LIGHT:\n      case SchemeTheme.DARK:\n        this._theme = value;\n        this.setAttribute(SchemeAttribute.THEME, value);\n        this.descend(SchemeEmission.THEME, value);\n        this.dispatch(SchemeEvent.THEME, { theme: this._theme }, false);\n        document.documentElement.style.colorScheme = value === SchemeTheme.DARK ? 'dark' : '';\n        break;\n    }\n  }\n\n  listenPreferences () {\n    if (this.isListening) return;\n    this.isListening = true;\n    this.mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n    if (this.mediaQuery.addEventListener) this.mediaQuery.addEventListener('change', this.changing);\n    this.change();\n  }\n\n  unlistenPreferences () {\n    if (!this.isListening) return;\n    this.isListening = false;\n    this.mediaQuery.removeEventListener('change', this.changing);\n    this.mediaQuery = null;\n  }\n\n  change () {\n    if (!this.isListening) return;\n    this.theme = this.mediaQuery.matches ? SchemeTheme.DARK : SchemeTheme.LIGHT;\n  }\n\n  mutate (attributeNames) {\n    if (attributeNames.indexOf(SchemeAttribute.SCHEME) > -1) this.scheme = this.getAttribute(SchemeAttribute.SCHEME);\n    if (attributeNames.indexOf(SchemeAttribute.THEME) > -1) this.theme = this.getAttribute(SchemeAttribute.THEME);\n  }\n\n  dispose () {\n    this.unlistenPreferences();\n  }\n}\n\nexport { Scheme };\n","import api from '../../api.js';\n\nexport const SchemeSelector = {\n  SCHEME: `:root${api.internals.ns.attr.selector('theme')}, :root${api.internals.ns.attr.selector('scheme')}`,\n  SWITCH_THEME: api.internals.ns.selector('switch-theme'),\n  RADIO_BUTTONS: `input[name=\"${api.internals.ns('radios-theme')}\"]`\n};\n","import api from './api.js';\nimport { Scheme } from './script/scheme/scheme.js';\nimport { SchemeValue } from './script/scheme/scheme-value.js';\nimport { SchemeSelector } from './script/scheme/scheme-selector.js';\nimport { SchemeAttribute } from './script/scheme/scheme-attribute.js';\nimport { SchemeEmission } from './script/scheme/scheme-emission.js';\nimport { SchemeTheme } from './script/scheme/scheme-theme.js';\nimport { SchemeEvent } from './script/scheme/scheme-event';\n\napi.scheme = {\n  Scheme: Scheme,\n  SchemeValue: SchemeValue,\n  SchemeSelector: SchemeSelector,\n  SchemeAttribute: SchemeAttribute,\n  SchemeEmission: SchemeEmission,\n  SchemeTheme: SchemeTheme,\n  SchemeEvent: SchemeEvent\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.scheme.SchemeSelector.SCHEME, api.scheme.Scheme);\n\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 CheckboxSelector = {\n  INPUT: `${api.internals.ns.selector('checkbox-group')} input[type=\"checkbox\"]`\n};\n","import api from '../../api.js';\n\nconst CheckboxEmission = {\n  CHANGE: api.internals.ns.emission('checkbox', 'change'),\n  RETRIEVE: api.internals.ns.emission('checkbox', 'retrieve')\n};\n\nexport { CheckboxEmission };\n","import api from '../../api.js';\nimport { CheckboxEmission } from './checkbox-emission.js';\n\nclass CheckboxInput extends api.core.Instance {\n  static get instanceClassName () {\n    return 'CheckboxInput';\n  }\n\n  constructor () {\n    super();\n    this._handlingChange = this.handleChange.bind(this);\n  }\n\n  init () {\n    this.node.addEventListener('change', this._handlingChange);\n    this.addDescent(CheckboxEmission.RETRIEVE, this._handlingChange);\n    this.handleChange();\n  }\n\n  get isChecked () {\n    return this.node.checked;\n  }\n\n  handleChange () {\n    this.ascend(CheckboxEmission.CHANGE, this.node);\n  }\n}\n\nexport { CheckboxInput };\n","import api from './api.js';\nimport { CheckboxSelector } from './script/checkbox/checkbox-selector';\nimport { CheckboxEmission } from './script/checkbox/checkbox-emission.js';\nimport { CheckboxInput } from './script/checkbox/checkbox-input.js';\n\napi.checkbox = {\n  CheckboxSelector: CheckboxSelector,\n  CheckboxEmission: CheckboxEmission,\n  CheckboxInput: CheckboxInput\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.checkbox.CheckboxSelector.INPUT, api.checkbox.CheckboxInput);\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  HIDDING: api.internals.ns.selector('tooltip--hidding'),\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    this._isShownOnInteraction = null;\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', (e) => this.focusOut(e));\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('pointerdown', this._interactionStart.bind(this));\n    this.listen('mousedown', this._interactionStart.bind(this));\n    this.listen('touchstart', this._interactionStart.bind(this));\n    this.listen('click', this._click.bind(this));\n    this.addEmission(api.core.RootEmission.CLICK, this._clickOut.bind(this));\n    this.addEmission(api.core.RootEmission.INTERACTION, this._clickOut.bind(this)); // IOS\n  }\n\n  _interactionStart () {\n    this._isShownOnInteraction = this.state > 0;\n  }\n\n  _click () {\n    const isButtonTooltip = this.matches(TooltipSelector.BUTTON);\n\n    if (isButtonTooltip && (this._isShownOnInteraction === true || (this._isShownOnInteraction === null && this.state > 0))) {\n      this.close();\n      this._isShownOnInteraction = null;\n      return;\n    }\n\n    if (!isButtonTooltip) {\n      this.focusOut();\n      this._isShownOnInteraction = null;\n      return;\n    }\n\n    this.focusIn();\n    this._isShownOnInteraction = null;\n  }\n\n  _clickOut (target) {\n    if (this.node.contains(target) || this.placement.node.contains(target)) return;\n    this.focusOut();\n  }\n\n  _keydown (keyCode) {\n    switch (keyCode) {\n      case api.core.KeyCodes.ESCAPE:\n        this.close();\n        break;\n\n      case api.core.KeyCodes.TAB:\n        this.request(this._tab.bind(this));\n        break;\n    }\n  }\n\n  _tab () {\n    if (this.node.contains(document.activeElement) || this.placement.node.contains(document.activeElement)) return;\n    this.focusOut();\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 (event = null) {\n    const relatedTarget = event ? event.relatedTarget : null;\n    if (relatedTarget && (this.node.contains(relatedTarget) || this.placement.node.contains(relatedTarget))) return;\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 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    this.setAttribute('tabindex', '-1');\n  }\n\n  transitionEnd () {\n    if (this._state === TooltipState.HIDING) {\n      this.removeClass(TooltipSelector.SHOWN);\n      this.removeClass(TooltipSelector.HIDDING);\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.removeClass(TooltipSelector.HIDDING);\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.addClass(TooltipSelector.HIDDING);\n        break;\n\n      case this.isShown && !value && this._state === TooltipState.HIDDEN:\n        this.dispatch(TooltipEvent.HIDE);\n        this.removeClass(TooltipSelector.HIDDING);\n        super.isShown = false;\n        break;\n    }\n  }\n\n  render () {\n    super.render();\n    this.rect = this.getRect();\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  FOOTER: api.internals.ns.selector('modal__footer'),\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._isDecorated = 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.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    const isTooltipReferent = document.activeElement ? document.activeElement.hasAttribute('data-fr-js-tooltip-referent') : false;\n\n    if (isTooltipReferent) return;\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) {\n      this.body.isResizing = true;\n      this.body.resize();\n    }\n    this.isScrollLocked = true;\n    this.setAttribute('aria-modal', 'true');\n    this.setAttribute('open', 'true');\n    if (!this._isDialog) {\n      this.decorateDialog();\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.isResizing = false;\n    if (!this._isDialog) {\n      this.stripDialog();\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  get isActive () {\n    return super.isActive;\n  }\n\n  set isActive (value) {\n    super.isActive = value;\n    if (value) this._ensureAccessibleName();\n  }\n\n  decorateDialog () {\n    if (this._isDecorated) return;\n    this._isDecorated = true;\n    this._hasDialogRole = this.getAttribute('role') === 'dialog';\n    if (!this._hasDialogRole) this.setAttribute('role', 'dialog');\n  }\n\n  stripDialog () {\n    if (!this._isDecorated) return;\n    this._isDecorated = 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.isActive || !this.isEnabled || (this.isEnabled && (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\nclass ModalFooter extends api.core.Instance {\n  static get instanceClassName () {\n    return 'ModalFooter';\n  }\n\n  init () {\n    this.isResizing = true;\n  }\n\n  resize () {\n    this.adjust();\n  }\n\n  adjust () {\n    const height = this.getRect().height;\n    this.node.parentNode.style.setProperty('--modal-scroll-padding-bottom', `${height}px`);\n  }\n}\n\nexport { ModalFooter };\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 windowElement = window.frameElement ? window.frameElement.contentWindow : window;\n  const style = windowElement.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    this.window = window.frameElement ? window.frameElement.contentWindow : window;\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      this.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(this.window.document.activeElement) === -1) focusables[0].focus();\n    this.element.setAttribute('aria-modal', true);\n    this.window.addEventListener('keydown', this.handling);\n    this.window.document.body.addEventListener('focus', this.focusing, true);\n\n    if (IS_STUNNING) {\n      this.stunneds = [];\n      this.stun(this.window.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(this.window.document.activeElement);\n\n    if (e.shiftKey) {\n      if (!this.element.contains(this.window.document.activeElement) || index < 1) {\n        e.preventDefault();\n        last.focus();\n      } else if (this.window.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(this.window.document.activeElement) || index === focusables.length - 1 || index === -1) {\n        e.preventDefault();\n        first.focus();\n      } else if (this.window.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(this.window.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') && 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    this.window.removeEventListener('keydown', this.handling);\n    this.window.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    const windowElement = window.frameElement ? window.frameElement.contentWindow : window;\n    if (button === windowElement.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  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 iframe = window.frameElement;\n    const windowElement = iframe ? iframe.contentWindow : window;\n    const offset = OFFSET * (this.isBreakpoint(api.core.Breakpoints.MD) ? 2 : 1);\n    if (this.isLegacy) this.style.maxHeight = `${windowElement.innerHeight - offset}px`;\n    else this.style.setProperty('--modal-max-height', `${windowElement.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 { ModalFooter } from './script/modal/modal-footer.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  ModalFooter: ModalFooter,\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.modal.ModalSelector.FOOTER, api.modal.ModalFooter);\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.addEmission(api.core.RootEmission.KEYDOWN, this._keydown.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  get hasOpenedMenu () {\n    return this.isBreakpoint(api.core.Breakpoints.LG) && this.index > -1;\n  }\n\n  _keydown (keyCode) {\n    switch (keyCode) {\n      case api.core.KeyCodes.ESCAPE:\n        if (!this.hasOpenedMenu) return;\n        this.index = -1;\n        break;\n\n      case api.core.KeyCodes.TAB:\n        if (!this.hasOpenedMenu) return;\n        this.request(() => {\n          if (this.current.node.contains(document.activeElement)) return;\n          this.index = -1;\n        });\n        break;\n    }\n  }\n\n  handleMouseDown (e) {\n    if (!this.hasOpenedMenu) return;\n    this.position = this.current.node.contains(e.target) ? NavigationMousePosition.INSIDE : NavigationMousePosition.OUTSIDE;\n    this.requestPosition();\n  }\n\n  handleClick (e) {\n    const linkOrButton = e.target.closest('a, button');\n    if (linkOrButton && linkOrButton !== this.node && !linkOrButton.matches('[aria-controls]') && !linkOrButton.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) return;\n\n    const button = this.current.primaryButtons.find(button => button.list === this.list);\n    if (button) button.focus();\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    const offsetNegativeMargin = 4;\n    this.style.setProperty('--tabs-height', (this.panelHeight + this.listHeight - offsetNegativeMargin) + '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 = Math.abs(this.node.scrollLeft);\n    const isMin = scrollLeft <= SCROLL_OFFSET;\n    const max = this.node.scrollWidth - this.node.clientWidth - SCROLL_OFFSET;\n    const isMax = Math.abs(scrollLeft) >= max;\n    const isRtl = getComputedStyle(this.node).direction === '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\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    if (this._stepWidth < 1 || !isFinite(this._stepWidth)) this._stepWidth = 4;\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._value = parseFloat(this.node.getAttribute('value'));\n    if (this.isLegacy) this.addDescent(RangeEmission.ENABLE_POINTER, this._enablePointer.bind(this));\n    this.isRendering = true;\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  get proxy () {\n    const scope = this;\n\n    const proxyAccessors = {\n      get value () {\n        return scope.value;\n      },\n      set value (value) {\n        scope.value = value;\n      }\n    };\n\n    return api.internals.property.completeAssign(super.proxy, proxyAccessors);\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  get value () {\n    return parseFloat(this.node.value);\n  }\n\n  set value (value) {\n    const parsedValue = parseFloat(value);\n    if (parsedValue === this._value) return;\n    this._value = parsedValue;\n    this.node.value = parsedValue;\n    this.dispatch('change');\n    this.change();\n  }\n\n  setValue (value) {\n    if (parseFloat(this.node.value) > value) {\n      this.value = value;\n    }\n  }\n\n  change () {\n    this.ascend(RangeEmission.VALUE, this._value);\n  }\n\n  render () {\n    const parsedValue = parseFloat(this.node.value);\n    if (parsedValue !== this._value) this.value = parsedValue;\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 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 { 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.value = value;\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 './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  BRAND_LINK: api.internals.ns.selector('header__brand a'),\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 dupplicateAttributes = ['aria-controls', 'aria-describedby', 'aria-labelledby'];\n\n    let toolsHtmlDuplicateId = toolsHtml.replace(/id=\"(.*?)\"/gm, `id=\"$1${copySuffix}\"`);\n\n    for (const attribute of dupplicateAttributes) {\n      const toolsHtmlAttributeList = toolsHtml.match(new RegExp(`${attribute}=\"(.*?)\"`, 'gm'));\n      if (toolsHtmlAttributeList) {\n        for (const element of toolsHtmlAttributeList) {\n          const attributeValue = element.replace(`${attribute}=\"`, '').replace('\"', '');\n          if (toolsHtmlIdList.includes(attributeValue)) {\n            toolsHtmlDuplicateId = toolsHtmlDuplicateId.replace(`${attribute}=\"${attributeValue}\"`, `${attribute}=\"${attributeValue + copySuffix}\"`);\n          };\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.storeAria();\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) {\n      this.request(this.activateModal.bind(this));\n      return;\n    }\n    this.restoreAria();\n    modal.isActive = true;\n    this.listenClick({ capture: true });\n  }\n\n  deactivateModal () {\n    const modal = this.element.getInstance('Modal');\n    if (!modal) {\n      this.request(this.deactivateModal.bind(this));\n      return;\n    }\n    modal.conceal();\n    modal.isActive = false;\n    this.storeAria();\n    this.unlistenClick({ capture: true });\n  }\n\n  storeAria () {\n    if (this.hasAttribute('aria-labelledby')) this._ariaLabelledby = this.getAttribute('aria-labelledby');\n    if (this.hasAttribute('aria-label')) this._ariaLabel = this.getAttribute('aria-label');\n    this.removeAttribute('aria-labelledby');\n    this.removeAttribute('aria-label');\n  }\n\n  restoreAria () {\n    if (this._ariaLabelledby) this.setAttribute('aria-labelledby', this._ariaLabelledby);\n    if (this._ariaLabel) this.setAttribute('aria-label', this._ariaLabel);\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/version-courante/fr/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 && document.documentElement.hasAttribute(api.scheme.SchemeAttribute.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.disableChoices();\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  disableChoices () {\n    this.querySelector(DisplaySelector.FIELDSET).setAttribute('disabled', '');\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","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  CAPTION_WIDTH: api.internals.ns.emission('table', 'captionwidth')\n};\n","import api from '../../api.js';\nimport { TableEmission } from './table-emission.js';\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', value);\n  }\n}\n\nexport { Table };\n","import api from '../../api.js';\nimport { TableEmission } from './table-emission.js';\n\nclass TableWrapper extends api.core.Instance {\n  static get instanceClassName () {\n    return 'TableWrapper';\n  }\n\n  init () {\n    this.addAscent(TableEmission.CAPTION_HEIGHT, this.setCaptionHeight.bind(this));\n  }\n\n  setCaptionHeight (value) {\n    requestAnimationFrame(() => this.ascend(TableEmission.CAPTION_HEIGHT, 0));\n    this.setProperty('--table-offset', value);\n  }\n}\n\nexport { TableWrapper };\n","import api from '../../api.js';\n\nexport const TableSelector = {\n  TABLE: api.internals.ns.selector('table'),\n  TABLE_WRAPPER: [`${api.internals.ns.selector('table')} ${api.internals.ns.selector('table__wrapper')}`],\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  ROW: `${api.internals.ns.selector('table')} tbody tr`,\n  COL: `${api.internals.ns.selector('table')} thead th`\n};\n","import api from '../../api.js';\nimport { TableSelector } from './table-selector.js';\n\nconst SCROLL_OFFSET = 0; // 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.tableOffsetHeight = 0;\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\nconst PADDING = '1rem'; // padding de 4v sur le caption\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, `calc(${height}px + ${PADDING})`);\n  }\n}\n\nexport { TableCaption };\n","import api from '../../api.js';\nimport { CheckboxEmission } from '../../../checkbox/script/checkbox/checkbox-emission.js';\n\nclass TableRow extends api.core.Instance {\n  static get instanceClassName () {\n    return 'TableRow';\n  }\n\n  init () {\n    if (api.checkbox) {\n      this.addAscent(CheckboxEmission.CHANGE, this._handleCheckboxChange.bind(this));\n      this.descend(CheckboxEmission.RETRIEVE);\n    }\n  }\n\n  _handleCheckboxChange (node) {\n    if (node.name === 'row-select' ||\n      node.getAttribute(api.internals.ns.attr('row-select')) === 'true') {\n      this.isSelected = node.checked === true;\n    }\n  }\n\n  render () {\n    const height = this.getRect().height + 2;\n    if (this._height === height) return;\n    this._height = height;\n    this.setProperty('--row-height', `${this._height}px`);\n  }\n\n  get isSelected () {\n    return this._isSelected;\n  }\n\n  set isSelected (value) {\n    if (this._isSelected === value) return;\n    this.isRendering = value;\n    this._isSelected = value;\n    this.setAttribute('aria-selected', value);\n  }\n}\n\nexport { TableRow };\n","import api from './api.js';\nimport { Table } from './script/table/table.js';\nimport { TableWrapper } from './script/table/table-wrapper.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';\nimport { TableRow } from './script/table/table-row.js';\n\napi.table = {\n  Table: Table,\n  TableWrapper: TableWrapper,\n  TableElement: TableElement,\n  TableCaption: TableCaption,\n  TableSelector: TableSelector,\n  TableRow: TableRow\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.TABLE_WRAPPER, api.table.TableWrapper);\napi.internals.register(api.table.TableSelector.ELEMENT, api.table.TableElement);\napi.internals.register(api.table.TableSelector.CAPTION, api.table.TableCaption);\napi.internals.register(api.table.TableSelector.ROW, api.table.TableRow);\n\nexport default api;\n"],"names":["state","constructor","this","modules","create","ModuleClass","module","type","getModule","add","item","remove","isActive","_isActive","value","values","Object","keys","map","e","activate","deactivate","isLegacy","_isLegacy","config","LogLevel","level","light","dark","logger","console","warn","error","log","message","Message","print","setColor","color","apply","getMessage","window","matchMedia","matches","domain","inputs","styles","objects","push","join","LEVELS","debug","info","inspector","id","msgs","bind","tree","stage","_branch","root","element","space","branch","indent","i","html","child","children","startAtDomContentLoaded","callback","document","readyState","requestAnimationFrame","addEventListener","Modes","AUTO","MANUAL","RUNTIME","LOADED","VUE","ANGULAR","REACT","dispatch","node","detail","bubbles","cancelable","options","event","CustomEvent","dispatchEvent","rootDispatch","documentElement","ns","name","selector","notation","undefined","attr","result","emission","RootEvent","READY","START","STOP","RENDER","RESIZE","BREAKPOINT","SCROLL_LOCK","SCROLL_UNLOCK","_mode","isStarted","starting","start","preventManipulation","configure","settings","query","startCallback","isProduction","production","isNaN","Number","verbose","mode","Collection","_collection","forEach","length","collectable","indexOf","onAdd","onPopulate","index","splice","onRemove","onEmpty","execute","args","clear","clone","slice","collection","Module","super","querySelectorAllArray","selectors","Array","prototype","call","querySelectorAll","queryParentSelector","parent","parentElement","Registration","InstanceClass","creator","instances","isIntroduced","_instanceClassName","instanceClassName","_instanceClassNames","getInstanceClassNames","_property","substring","toLowerCase","dashed","replace","_attribute","getPrototypeOf","hasInstanceClassName","introduce","parse","nonRecursive","nodes","querySelector","instance","dispose","_dispose","instanceClassNames","property","attribute","Register","register","registration","count","Element","attributeNames","_children","_parent","_projects","proxy","scope","_proxy","outerHTML","end","project","populate","projects","hasInstance","_config","ascendants","descendants","addChild","removeChild","emit","data","elements","response","_emit","_emitter","ascend","_ascend","_ascent","descend","_descend","_descent","getInstance","getDescendantInstances","stopAtInstanceClassName","stopAtFirstInstance","getAscendantInstance","prepare","attributeName","examine","RootEmission","CLICK","INTERACTION","KEYDOWN","KEYUP","KeyCodes","TAB","ESCAPE","END","HOME","LEFT","UP","RIGHT","DOWN","getKeyCode","keyCode","filter","entry","Root","setAttribute","listen","click","capture","PointerEvent","interaction","passive","keydown","keyup","target","Stage","observer","MutationObserver","mutate","modifications","willModify","modifying","modify","hasElement","getElement","getProxy","put","position","compareDocumentPosition","Node","DOCUMENT_POSITION_CONTAINS","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_PRECEDING","observe","childList","subtree","attributes","disconnect","mutations","examinations","mutation","removedNodes","addedNodes","descendant","targets","contains","disposables","disposable","registrations","creations","n","Renderer","rendering","render","nexts","request","next","Resizer","requireResize","resizing","resize","requesting","fonts","ready","then","ScrollLocker","_isLocked","_scrollY","lock","unlock","isLocked","scrollY","scrollBarGap","innerWidth","clientWidth","body","style","top","behavior","getComputedStyle","getPropertyValue","scrollBehavior","setProperty","removeAttribute","scrollTo","removeProperty","move","Load","loading","load","FONT_FAMILIES","FontSwap","swapping","swap","families","family","check","swapFont","MouseMove","requireMove","_isMoving","moving","unlisten","removeEventListener","point","x","clientX","y","clientY","mouseMove","Hash","handling","handle","getLocationHash","_sanitize","hash","charAt","_hash","location","handleHash","engine","registerModule","stop","getOption","hover","active","colors","getColor","context","use","tint","decision","trim","sanitize","className","substr","getClassNames","split","baseVal","modifyClass","classNames","addClass","removeClass","hasClass","ACTIONS_SELECTOR","queryActions","counter","uniqueId","getElementById","base","dom","image","DataURISVG","width","height","_width","_height","_content","content","getDataURI","svg","support","supportLocalStorage","localStorage","supportAspectRatio","CSS","supports","TransitionSelector","NONE","completeAssign","sources","source","descriptors","reduce","key","getOwnPropertyDescriptor","getOwnPropertySymbols","sym","descriptor","enumerable","defineProperties","internals","legacy","defineProperty","get","setLegacy","motion","url","search","entries","URLSearchParams","fromEntries","searchParams","api","version","prefix","organisation","set","configuration","Emitter","emissions","closure","Error","focusManager","_activeElements","_onFocusIn","focus","focusOnLogo","_isDisplayed","logo","header","HeaderSelector","BRAND_LINK","display","visibility","Breakpoint","minWidth","test","Breakpoints","XS","SM","MD","LG","XL","InstanceEvent","Instance","jsAttribute","_isRendering","_isResizing","_isScrollLocked","_isLoading","_isSwappingFont","_isEnabled","_isDisposed","_listeners","_handlingClick","_handleClick","_hashes","_keyListenerTypes","_keys","handlingKey","handleKey","_registrations","_nexts","init","isEnabled","unshift","getRegisteredInstances","listeners","listener","Listener","removal","matchOptions","listenClick","unlistenClick","handleClick","listenHash","action","HashAction","unlistenHash","listenKey","preventDefault","stopPropagation","KeyAction","unlistenKey","code","some","isRendering","isResizing","isBreakpoint","breakpoint","toUpperCase","isScrollLocked","isLoading","isSwappingFont","isMouseMoving","_isMouseMoving","retrieveNodeId","append","isDisposed","addEmission","removeEmission","addAscent","removeAscent","addDescent","removeDescent","parentNode","getAttribute","hasAttribute","propertyName","blur","retainFocus","_focusIndex","focusBack","focusClosest","closest","_focusClosest","actions","hasFocus","activeElement","scrollIntoView","rect","getRect","scroll","bottom","innerHeight","getBoundingClientRect","center","left","middle","eventType","_node","_type","_closure","_options","every","DisclosureEvent","DISCLOSE","CONCEAL","CURRENT","DisclosureEmission","RESET","ADDED","RETRIEVE","REMOVED","GROUP","UNGROUP","SPOTLIGHT","Disclosure","DisclosureButtonInstanceClass","disclosuresGroupInstanceClassName","_selector","modifier","_isPristine","_isRetrievingPrimaries","_hasRetrieved","_primaryButtons","reset","update","disclose","_spotlight","isDisclosed","conceal","isPristine","assign","canConceal","buttons","button","group","getGroup","retrievePrimaries","_group","validate","withhold","current","preventFocus","_isDisclosed","isInitiallyDisclosed","primaryButtons","hasRetrieved","toggle","canDisclose","buttonHasFocus","_retrievePrimaries","_electPrimaries","requirePrimary","retrieved","applyAbility","retrieve","candidates","isDisabled","DisclosureButton","ariaState","_canDisclose","isPrimary","includes","canDisable","_isInitiallyDisclosed","_isContained","controlsId","_isApplying","measure","buttonRect","_dx","_dy","dx","dy","DisclosureSelector","PREVENT_CONCEAL","DisclosuresGroup","disclosureInstanceClassName","_members","_index","_isRetrieving","_isGrouped","proxyAccessors","members","member","isGrouped","getMembers","invalid","bypassPrevention","_retrieve","getIndex","defaultIndex","canUngroup","attributesNames","DisclosureType","EXPAND","ariaControls","SELECT","OPENED","CollapseButton","CollapseSelector","COLLAPSE","COLLAPSING","EquisizedEmission","CHANGE","ALLOWED_TAGS","Set","URL_ATTRIBUTES","DANGEROUS_PROTOCOL","DANGEROUS_CSS","sanitizeElement","from","childNodes","nodeType","ELEMENT_NODE","tag","tagName","has","startsWith","isAllowedUrlAttributeValue","sanitizedStyle","sanitizeCssContent","sanitizedStyleContent","textContent","css","String","sanitizeSvg","isSameOrigin","link","createElement","href","protocol","hostname","port","currentPort","InjectSvgSelector","INJECT_SVG","ArtworkSelector","ARTWORK_USE","AssessSelector","ASSESS_FILE","DETAIL","AssessEmission","UPDATE","ratiosImg","ratioSelector","modifiers","deprecatedRatioSelector","RatioSelector","RATIO","PlaceSelector","TOP","BOTTOM","AlignSelector","CENTER","PlacementPosition","PlacementAlign","PlacementMode","core","Collapse","endCollapsing","_isCollpasing","_timeout","clearTimeout","maxHeight","unbound","collapsing","adjust","setTimeout","offsetHeight","primary","collapsePrimary","before","candidate","min","Math","mins","sort","a","b","abs","CollapsesGroup","RootSelector","ROOT","Equisized","Toggle","pressed","EquisizedsGroup","equisizeds","max","equisized","InjectSvg","img","restore","fetch","imgID","imgClass","imgURL","text","rawSvg","DOMParser","parseFromString","match","innerHTML","replaceAll","el","attrs","focusable","replaceChild","Artwork","xlink","splitUrl","svgUrl","svgName","xhr","XMLHttpRequest","onload","xmlDoc","responseText","realSvgContent","expectedHref","uses","getElementsByTagName","insertBefore","classList","open","send","AssessFile","lang","getLang","hreflang","file","gather","getFileLength","method","ok","status","headers","catch","details","extension","parseExtension","bytesToSize","getLangDisplayName","elem","navigator","language","locale","Intl","DisplayNames","of","bytes","sizeUnits","parseInt","floor","size","roundedSize","round","EPSILON","AssessDetail","Ratio","ratio","currentWidth","Placement","places","aligns","safeAreaMargin","_places","_aligns","_safeAreaMargin","_isShown","_x","_y","show","hide","place","align","isShown","_place","_align","setReferent","referent","_referent","referentRect","safeArea","getSafeArea","getPlace","getHorizontalAlign","getVerticalAlign","transform","right","isX","isY","overflow","exec","PlacementReferent","_placement","placement","SchemeValue","SYSTEM","LIGHT","DARK","SchemeAttribute","THEME","SCHEME","TRANSITION","SchemeTheme","SchemeEmission","ASK","SchemeEvent","Scheme","changing","change","restoreTransition","scheme","getItem","schemeAttr","ask","_scheme","listenPreferences","unlistenPreferences","theme","setItem","_theme","colorScheme","isListening","mediaQuery","SchemeSelector","SWITCH_THEME","RADIO_BUTTONS","ACCORDION","AccordionSelector","COLLAPSE_LEGACY","BUTTON","Accordion","AccordionsGroup","accordion","ButtonSelector","EQUISIZED_BUTTON","EQUISIZED_GROUP","CardDownload","CardSelector","DOWNLOAD","DOWNLOAD_DETAIL","card","CheckboxSelector","INPUT","CheckboxEmission","CheckboxInput","_handlingChange","handleChange","isChecked","checked","checkbox","SegmentedSelector","SEGMENTED","SEGMENTED_ELEMENTS","SEGMENTED_ELEMENT","SEGMENTED_LEGEND","SegmentedEmission","Segmented","legend","_isLegendInline","SEGMENTED_VERTICAL","LEGEND_INLINE","offsetWidth","scrollWidth","SegmentedElement","segmented","BreadcrumbSelector","BREADCRUMB","Breadcrumb","focusing","getCollapse","collapse","links","_focus","verify","breadcrumb","TooltipSelector","TOOLTIP","SHOWN","HIDDING","TooltipReferentState","TooltipReferent","_state","_isShownOnInteraction","focusIn","focusOut","mouseover","mouseout","_keydown","_interactionStart","_click","_clickOut","isButtonTooltip","close","_tab","relatedTarget","TooltipEvent","SHOW","HIDE","TooltipState","Tooltip","transitionEnd","limit","toFixed","tooltip","ToggleInput","ToggleStatusLabel","input","maxWidth","parseFloat","style2","ToggleSelector","STATUS_LABEL","ITEM","SidemenuSelector","LIST","SidemenuList","SidemenuItem","sidemenu","ModalSelector","MODAL","FOOTER","SCROLL_DIVIDER","BODY","TITLE","ModalButton","ModalAttribute","CONCEALING_BACKDROP","Modal","_isDecorated","scrolling","_isDialog","_escape","_ensureAccessibleName","decorateDialog","stripDialog","isDialog","_hasDialogRole","_setAccessibleName","title","ModalFooter","UNORDEREDS","ORDEREDS","isFocusable","container","frameElement","contentWindow","FocusTrap","onTrap","onUntrap","waiting","wait","maintainFocus","trapped","trap","untrap","isTrapping","trapping","focusables","stun","stunneds","Stunned","first","last","shiftKey","tabIndex","unordereds","radios","groups","radio","RadioButtonGroup","unordered","keep","ordereds","noDuplicates","concat","inert","unstun","selected","ModalsGroup","focusTrap","initial","ModalBody","divide","scrollHeight","clientHeight","scrollTop","iframe","windowElement","offset","modal","PasswordEmission","TOGGLE","ADJUST","PasswordToggle","_isChecked","Password","PasswordSelector","PASSWORD","LABEL","TOOGLE","PasswordInput","_isRevealed","capslock","isRevealed","getModifierState","PasswordLabel","valueREM","ceil","paddingRight","password","NavigationSelector","NAVIGATION","ITEM_RIGHT","MENU","TRANSLATE_BUTTON","NavigationItem","_isRightAligned","calculate","isRightAligned","NavigationMousePosition","INSIDE","OUTSIDE","Navigation","clicked","out","_handleRootClick","handleMouseDown","hasOpenedMenu","requestPosition","linkOrButton","isRequesting","getPosition","requested","navigation","TabButton","list","focalize","TabSelector","PANEL","SHADOW","SHADOW_LEFT","SHADOW_RIGHT","PANEL_START","PANEL_END","TabPanelDirection","TabPanel","_direction","_isPreventingTransition","direction","isPreventingTransition","translate","TabKeys","TabEmission","PRESS_KEY","LIST_HEIGHT","TabsGroup","transitionend","pressKey","setListHeight","listHeight","pressLeft","pressRight","pressHome","pressEnd","find","scrollLeft","paneHeight","panelHeight","TabsList","btn","btnRect","listRect","actualScroll","isScrolling","_isScrolling","isMin","isMax","isRtl","minSelector","maxSelector","tab","TagEvent","DISMISS","TagDismissible","TagSelector","PRESSABLE","DISMISSIBLE","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","_min","_max","_value","_thumbSize","_innerWidth","_prefix","_suffix","_background","model","setConstraints","_constraints","setPrefix","setSuffix","_decorate","isSm","_isSm","setThumbSize","mult","_innerPadding","textValue","outputX","_outputX","constraints","_step","step","_rangeWidth","rangeWidth","textMin","textMax","output","_translateX","_centerPercent","_getRatio","progress","_progress","_update","RangeModelStep","stepWidth","_stepWidth","steps","isFinite","RangeModelDouble","value2","_value2","ratio1","ratio2","RangeModelDoubleStep","RangeTypes","Range","_retrieveType","_retrieveSize","_observer","ResizeObserver","setValue","setValue2","oldModel","_model","_retrieveWidth","RangeConstraints","RangeInput","_init","_enablePointer","_pointerId","disabled","pointerId","_isPointerEnabled","parsedValue","_listenerType","_changing","RangeOutput","innerText","RangeLimit","range","RangeInput2","HEADER","TOOLS_LINKS","MENU_LINKS","BUTTONS","MODALS","HeaderLinks","toolsLinks","menuLinks","copySuffix","toolsHtml","menuHtml","toolsHtmlIdList","dupplicateAttributes","toolsHtmlDuplicateId","toolsHtmlAttributeList","RegExp","attributeValue","doc","HeaderModal","storeAria","deactivateModal","activateModal","restoreAria","_ariaLabelledby","_ariaLabel","DisplaySelector","DISPLAY","FIELDSET","Display","disableChoices","TableEmission","SCROLLABLE","CAPTION_HEIGHT","CAPTION_WIDTH","Table","setCaptionHeight","TableWrapper","TableSelector","TABLE","TABLE_WRAPPER","ELEMENT","CAPTION","ROW","COL","TableElement","tableOffsetHeight","TableCaption","TableRow","_handleCheckboxChange","isSelected","_isSelected","table"],"mappings":"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"}