@gouvfr/dsfr 1.4.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. package/.config/config.js +1 -1
  2. package/.config/icon-deprecated.scss +1 -1
  3. package/.config/icon.scss +1 -1
  4. package/dist/component/accordion/accordion.css +1 -1
  5. package/dist/component/accordion/accordion.legacy.css +1 -1
  6. package/dist/component/accordion/accordion.legacy.min.css +1 -1
  7. package/dist/component/accordion/accordion.main.css +1 -1
  8. package/dist/component/accordion/accordion.main.min.css +1 -1
  9. package/dist/component/accordion/accordion.min.css +1 -1
  10. package/dist/component/accordion/accordion.module.js +2 -2
  11. package/dist/component/accordion/accordion.module.js.map +1 -1
  12. package/dist/component/accordion/accordion.module.min.js +1 -1
  13. package/dist/component/accordion/accordion.module.min.js.map +1 -1
  14. package/dist/component/accordion/accordion.nomodule.js +2 -2
  15. package/dist/component/accordion/accordion.nomodule.js.map +1 -1
  16. package/dist/component/accordion/accordion.nomodule.min.js +1 -1
  17. package/dist/component/accordion/accordion.nomodule.min.js.map +1 -1
  18. package/dist/component/alert/alert.css +1 -1
  19. package/dist/component/alert/alert.legacy.css +1 -1
  20. package/dist/component/alert/alert.legacy.min.css +2 -2
  21. package/dist/component/alert/alert.main.css +1 -1
  22. package/dist/component/alert/alert.main.min.css +1 -1
  23. package/dist/component/alert/alert.min.css +2 -2
  24. package/dist/component/badge/badge.css +1 -1
  25. package/dist/component/badge/badge.legacy.css +1 -1
  26. package/dist/component/badge/badge.legacy.min.css +1 -1
  27. package/dist/component/badge/badge.main.css +1 -1
  28. package/dist/component/badge/badge.main.min.css +1 -1
  29. package/dist/component/badge/badge.min.css +1 -1
  30. package/dist/component/breadcrumb/breadcrumb.css +1 -1
  31. package/dist/component/breadcrumb/breadcrumb.legacy.css +1 -1
  32. package/dist/component/breadcrumb/breadcrumb.legacy.min.css +1 -1
  33. package/dist/component/breadcrumb/breadcrumb.main.css +1 -1
  34. package/dist/component/breadcrumb/breadcrumb.main.min.css +1 -1
  35. package/dist/component/breadcrumb/breadcrumb.min.css +1 -1
  36. package/dist/component/breadcrumb/breadcrumb.module.js +2 -2
  37. package/dist/component/breadcrumb/breadcrumb.module.js.map +1 -1
  38. package/dist/component/breadcrumb/breadcrumb.module.min.js +1 -1
  39. package/dist/component/breadcrumb/breadcrumb.module.min.js.map +1 -1
  40. package/dist/component/breadcrumb/breadcrumb.nomodule.js +2 -2
  41. package/dist/component/breadcrumb/breadcrumb.nomodule.js.map +1 -1
  42. package/dist/component/breadcrumb/breadcrumb.nomodule.min.js +1 -1
  43. package/dist/component/breadcrumb/breadcrumb.nomodule.min.js.map +1 -1
  44. package/dist/component/button/button.css +1 -1
  45. package/dist/component/button/button.legacy.css +1 -1
  46. package/dist/component/button/button.legacy.min.css +1 -1
  47. package/dist/component/button/button.main.css +1 -1
  48. package/dist/component/button/button.main.min.css +1 -1
  49. package/dist/component/button/button.min.css +1 -1
  50. package/dist/component/button/button.module.js +2 -2
  51. package/dist/component/button/button.module.js.map +1 -1
  52. package/dist/component/button/button.module.min.js +1 -1
  53. package/dist/component/button/button.module.min.js.map +1 -1
  54. package/dist/component/button/button.nomodule.js +2 -2
  55. package/dist/component/button/button.nomodule.js.map +1 -1
  56. package/dist/component/button/button.nomodule.min.js +1 -1
  57. package/dist/component/button/button.nomodule.min.js.map +1 -1
  58. package/dist/component/callout/callout.css +1 -1
  59. package/dist/component/callout/callout.legacy.css +1 -1
  60. package/dist/component/callout/callout.legacy.min.css +1 -1
  61. package/dist/component/callout/callout.main.css +1 -1
  62. package/dist/component/callout/callout.main.min.css +1 -1
  63. package/dist/component/callout/callout.min.css +1 -1
  64. package/dist/component/card/card.css +1 -1
  65. package/dist/component/card/card.legacy.css +1 -1
  66. package/dist/component/card/card.legacy.min.css +1 -1
  67. package/dist/component/card/card.main.css +1 -1
  68. package/dist/component/card/card.main.min.css +1 -1
  69. package/dist/component/card/card.min.css +1 -1
  70. package/dist/component/checkbox/checkbox.css +1 -1
  71. package/dist/component/checkbox/checkbox.legacy.css +1 -1
  72. package/dist/component/checkbox/checkbox.legacy.min.css +1 -1
  73. package/dist/component/checkbox/checkbox.main.css +1 -1
  74. package/dist/component/checkbox/checkbox.main.min.css +1 -1
  75. package/dist/component/checkbox/checkbox.min.css +1 -1
  76. package/dist/component/component.css +74 -233
  77. package/dist/component/component.css.map +1 -1
  78. package/dist/component/component.legacy.css +33 -21
  79. package/dist/component/component.legacy.css.map +1 -1
  80. package/dist/component/component.legacy.min.css +2 -2
  81. package/dist/component/component.legacy.min.css.map +1 -1
  82. package/dist/component/component.main.css +42 -213
  83. package/dist/component/component.main.css.map +1 -1
  84. package/dist/component/component.main.min.css +2 -2
  85. package/dist/component/component.main.min.css.map +1 -1
  86. package/dist/component/component.min.css +3 -3
  87. package/dist/component/component.min.css.map +1 -1
  88. package/dist/component/component.module.js +2 -2
  89. package/dist/component/component.module.js.map +1 -1
  90. package/dist/component/component.module.min.js +1 -1
  91. package/dist/component/component.module.min.js.map +1 -1
  92. package/dist/component/component.nomodule.js +2 -2
  93. package/dist/component/component.nomodule.js.map +1 -1
  94. package/dist/component/component.nomodule.min.js +1 -1
  95. package/dist/component/component.nomodule.min.js.map +1 -1
  96. package/dist/component/connect/connect.css +1 -1
  97. package/dist/component/connect/connect.legacy.css +1 -1
  98. package/dist/component/connect/connect.legacy.min.css +1 -1
  99. package/dist/component/connect/connect.main.css +1 -1
  100. package/dist/component/connect/connect.main.min.css +1 -1
  101. package/dist/component/connect/connect.min.css +1 -1
  102. package/dist/component/consent/consent.css +1 -1
  103. package/dist/component/consent/consent.legacy.css +1 -1
  104. package/dist/component/consent/consent.legacy.min.css +1 -1
  105. package/dist/component/consent/consent.main.css +1 -1
  106. package/dist/component/consent/consent.main.min.css +1 -1
  107. package/dist/component/consent/consent.min.css +1 -1
  108. package/dist/component/content/content.css +1 -1
  109. package/dist/component/content/content.legacy.css +1 -1
  110. package/dist/component/content/content.legacy.min.css +1 -1
  111. package/dist/component/content/content.main.css +1 -1
  112. package/dist/component/content/content.main.min.css +1 -1
  113. package/dist/component/content/content.min.css +1 -1
  114. package/dist/component/display/display.module.js +2 -2
  115. package/dist/component/display/display.module.js.map +1 -1
  116. package/dist/component/display/display.module.min.js +1 -1
  117. package/dist/component/display/display.module.min.js.map +1 -1
  118. package/dist/component/display/display.nomodule.js +2 -2
  119. package/dist/component/display/display.nomodule.js.map +1 -1
  120. package/dist/component/display/display.nomodule.min.js +1 -1
  121. package/dist/component/display/display.nomodule.min.js.map +1 -1
  122. package/dist/component/follow/follow.css +13 -200
  123. package/dist/component/follow/follow.css.map +1 -1
  124. package/dist/component/follow/follow.legacy.css +1 -1
  125. package/dist/component/follow/follow.legacy.min.css +1 -1
  126. package/dist/component/follow/follow.main.css +13 -200
  127. package/dist/component/follow/follow.main.css.map +1 -1
  128. package/dist/component/follow/follow.main.min.css +2 -2
  129. package/dist/component/follow/follow.main.min.css.map +1 -1
  130. package/dist/component/follow/follow.min.css +2 -2
  131. package/dist/component/follow/follow.min.css.map +1 -1
  132. package/dist/component/footer/footer.css +1 -1
  133. package/dist/component/footer/footer.legacy.css +1 -1
  134. package/dist/component/footer/footer.legacy.min.css +1 -1
  135. package/dist/component/footer/footer.main.css +1 -1
  136. package/dist/component/footer/footer.main.min.css +1 -1
  137. package/dist/component/footer/footer.min.css +1 -1
  138. package/dist/component/form/form.css +1 -1
  139. package/dist/component/form/form.legacy.css +1 -1
  140. package/dist/component/form/form.legacy.min.css +1 -1
  141. package/dist/component/form/form.main.css +1 -1
  142. package/dist/component/form/form.main.min.css +1 -1
  143. package/dist/component/form/form.min.css +1 -1
  144. package/dist/component/header/header.css +1 -1
  145. package/dist/component/header/header.legacy.css +1 -1
  146. package/dist/component/header/header.legacy.min.css +1 -1
  147. package/dist/component/header/header.main.css +1 -1
  148. package/dist/component/header/header.main.min.css +1 -1
  149. package/dist/component/header/header.min.css +1 -1
  150. package/dist/component/header/header.module.js +2 -2
  151. package/dist/component/header/header.module.js.map +1 -1
  152. package/dist/component/header/header.module.min.js +1 -1
  153. package/dist/component/header/header.module.min.js.map +1 -1
  154. package/dist/component/header/header.nomodule.js +2 -2
  155. package/dist/component/header/header.nomodule.js.map +1 -1
  156. package/dist/component/header/header.nomodule.min.js +1 -1
  157. package/dist/component/header/header.nomodule.min.js.map +1 -1
  158. package/dist/component/highlight/highlight.css +1 -1
  159. package/dist/component/highlight/highlight.legacy.css +1 -1
  160. package/dist/component/highlight/highlight.legacy.min.css +1 -1
  161. package/dist/component/highlight/highlight.main.css +1 -1
  162. package/dist/component/highlight/highlight.main.min.css +1 -1
  163. package/dist/component/highlight/highlight.min.css +1 -1
  164. package/dist/component/input/input.css +1 -1
  165. package/dist/component/input/input.legacy.css +1 -1
  166. package/dist/component/input/input.legacy.min.css +1 -1
  167. package/dist/component/input/input.main.css +1 -1
  168. package/dist/component/input/input.main.min.css +1 -1
  169. package/dist/component/input/input.min.css +1 -1
  170. package/dist/component/link/link.css +1 -1
  171. package/dist/component/link/link.legacy.css +1 -1
  172. package/dist/component/link/link.legacy.min.css +1 -1
  173. package/dist/component/link/link.main.css +1 -1
  174. package/dist/component/link/link.main.min.css +1 -1
  175. package/dist/component/link/link.min.css +1 -1
  176. package/dist/component/logo/logo.css +1 -1
  177. package/dist/component/logo/logo.legacy.css +1 -1
  178. package/dist/component/logo/logo.legacy.min.css +1 -1
  179. package/dist/component/logo/logo.main.css +1 -1
  180. package/dist/component/logo/logo.main.min.css +1 -1
  181. package/dist/component/logo/logo.min.css +1 -1
  182. package/dist/component/modal/modal.css +1 -1
  183. package/dist/component/modal/modal.legacy.css +1 -1
  184. package/dist/component/modal/modal.legacy.min.css +1 -1
  185. package/dist/component/modal/modal.main.css +1 -1
  186. package/dist/component/modal/modal.main.min.css +1 -1
  187. package/dist/component/modal/modal.min.css +1 -1
  188. package/dist/component/modal/modal.module.js +2 -2
  189. package/dist/component/modal/modal.module.js.map +1 -1
  190. package/dist/component/modal/modal.module.min.js +1 -1
  191. package/dist/component/modal/modal.module.min.js.map +1 -1
  192. package/dist/component/modal/modal.nomodule.js +2 -2
  193. package/dist/component/modal/modal.nomodule.js.map +1 -1
  194. package/dist/component/modal/modal.nomodule.min.js +1 -1
  195. package/dist/component/modal/modal.nomodule.min.js.map +1 -1
  196. package/dist/component/navigation/navigation.css +1 -1
  197. package/dist/component/navigation/navigation.legacy.css +1 -1
  198. package/dist/component/navigation/navigation.legacy.min.css +1 -1
  199. package/dist/component/navigation/navigation.main.css +1 -1
  200. package/dist/component/navigation/navigation.main.min.css +1 -1
  201. package/dist/component/navigation/navigation.min.css +1 -1
  202. package/dist/component/navigation/navigation.module.js +2 -2
  203. package/dist/component/navigation/navigation.module.js.map +1 -1
  204. package/dist/component/navigation/navigation.module.min.js +1 -1
  205. package/dist/component/navigation/navigation.module.min.js.map +1 -1
  206. package/dist/component/navigation/navigation.nomodule.js +2 -2
  207. package/dist/component/navigation/navigation.nomodule.js.map +1 -1
  208. package/dist/component/navigation/navigation.nomodule.min.js +1 -1
  209. package/dist/component/navigation/navigation.nomodule.min.js.map +1 -1
  210. package/dist/component/pagination/pagination.css +1 -1
  211. package/dist/component/pagination/pagination.legacy.css +1 -1
  212. package/dist/component/pagination/pagination.legacy.min.css +1 -1
  213. package/dist/component/pagination/pagination.main.css +1 -1
  214. package/dist/component/pagination/pagination.main.min.css +1 -1
  215. package/dist/component/pagination/pagination.min.css +1 -1
  216. package/dist/component/quote/quote.css +1 -1
  217. package/dist/component/quote/quote.legacy.css +1 -1
  218. package/dist/component/quote/quote.legacy.min.css +1 -1
  219. package/dist/component/quote/quote.main.css +1 -1
  220. package/dist/component/quote/quote.main.min.css +1 -1
  221. package/dist/component/quote/quote.min.css +1 -1
  222. package/dist/component/radio/radio.css +1 -1
  223. package/dist/component/radio/radio.legacy.css +1 -1
  224. package/dist/component/radio/radio.legacy.min.css +1 -1
  225. package/dist/component/radio/radio.main.css +1 -1
  226. package/dist/component/radio/radio.main.min.css +1 -1
  227. package/dist/component/radio/radio.min.css +1 -1
  228. package/dist/component/search/search.css +1 -1
  229. package/dist/component/search/search.legacy.css +1 -1
  230. package/dist/component/search/search.legacy.min.css +1 -1
  231. package/dist/component/search/search.main.css +1 -1
  232. package/dist/component/search/search.main.min.css +1 -1
  233. package/dist/component/search/search.min.css +1 -1
  234. package/dist/component/select/select.css +1 -1
  235. package/dist/component/select/select.legacy.css +1 -1
  236. package/dist/component/select/select.legacy.min.css +1 -1
  237. package/dist/component/select/select.main.css +1 -1
  238. package/dist/component/select/select.main.min.css +1 -1
  239. package/dist/component/select/select.min.css +1 -1
  240. package/dist/component/share/share.css +1 -1
  241. package/dist/component/share/share.legacy.css +1 -1
  242. package/dist/component/share/share.legacy.min.css +1 -1
  243. package/dist/component/share/share.main.css +1 -1
  244. package/dist/component/share/share.main.min.css +2 -2
  245. package/dist/component/share/share.min.css +2 -2
  246. package/dist/component/sidemenu/sidemenu.css +1 -1
  247. package/dist/component/sidemenu/sidemenu.legacy.css +1 -1
  248. package/dist/component/sidemenu/sidemenu.legacy.min.css +1 -1
  249. package/dist/component/sidemenu/sidemenu.main.css +1 -1
  250. package/dist/component/sidemenu/sidemenu.main.min.css +1 -1
  251. package/dist/component/sidemenu/sidemenu.min.css +1 -1
  252. package/dist/component/sidemenu/sidemenu.module.js +2 -2
  253. package/dist/component/sidemenu/sidemenu.module.js.map +1 -1
  254. package/dist/component/sidemenu/sidemenu.module.min.js +1 -1
  255. package/dist/component/sidemenu/sidemenu.module.min.js.map +1 -1
  256. package/dist/component/sidemenu/sidemenu.nomodule.js +2 -2
  257. package/dist/component/sidemenu/sidemenu.nomodule.js.map +1 -1
  258. package/dist/component/sidemenu/sidemenu.nomodule.min.js +1 -1
  259. package/dist/component/sidemenu/sidemenu.nomodule.min.js.map +1 -1
  260. package/dist/component/skiplink/skiplink.css +1 -1
  261. package/dist/component/skiplink/skiplink.legacy.css +1 -1
  262. package/dist/component/skiplink/skiplink.legacy.min.css +1 -1
  263. package/dist/component/skiplink/skiplink.main.css +1 -1
  264. package/dist/component/skiplink/skiplink.main.min.css +1 -1
  265. package/dist/component/skiplink/skiplink.min.css +1 -1
  266. package/dist/component/summary/summary.css +1 -1
  267. package/dist/component/summary/summary.legacy.css +1 -1
  268. package/dist/component/summary/summary.legacy.min.css +2 -2
  269. package/dist/component/summary/summary.main.css +1 -1
  270. package/dist/component/summary/summary.main.min.css +1 -1
  271. package/dist/component/summary/summary.min.css +2 -2
  272. package/dist/component/tab/tab.css +1 -1
  273. package/dist/component/tab/tab.legacy.css +1 -1
  274. package/dist/component/tab/tab.legacy.min.css +1 -1
  275. package/dist/component/tab/tab.main.css +1 -1
  276. package/dist/component/tab/tab.main.min.css +1 -1
  277. package/dist/component/tab/tab.min.css +1 -1
  278. package/dist/component/tab/tab.module.js +2 -2
  279. package/dist/component/tab/tab.module.js.map +1 -1
  280. package/dist/component/tab/tab.module.min.js +1 -1
  281. package/dist/component/tab/tab.module.min.js.map +1 -1
  282. package/dist/component/tab/tab.nomodule.js +2 -2
  283. package/dist/component/tab/tab.nomodule.js.map +1 -1
  284. package/dist/component/tab/tab.nomodule.min.js +1 -1
  285. package/dist/component/tab/tab.nomodule.min.js.map +1 -1
  286. package/dist/component/table/table.css +1 -1
  287. package/dist/component/table/table.legacy.css +1 -1
  288. package/dist/component/table/table.legacy.min.css +1 -1
  289. package/dist/component/table/table.main.css +1 -1
  290. package/dist/component/table/table.main.min.css +1 -1
  291. package/dist/component/table/table.min.css +1 -1
  292. package/dist/component/table/table.module.js +2 -2
  293. package/dist/component/table/table.module.js.map +1 -1
  294. package/dist/component/table/table.module.min.js +1 -1
  295. package/dist/component/table/table.module.min.js.map +1 -1
  296. package/dist/component/table/table.nomodule.js +2 -2
  297. package/dist/component/table/table.nomodule.js.map +1 -1
  298. package/dist/component/table/table.nomodule.min.js +1 -1
  299. package/dist/component/table/table.nomodule.min.js.map +1 -1
  300. package/dist/component/tag/tag.css +112 -80
  301. package/dist/component/tag/tag.css.map +1 -1
  302. package/dist/component/tag/tag.legacy.css +61 -55
  303. package/dist/component/tag/tag.legacy.css.map +1 -1
  304. package/dist/component/tag/tag.legacy.min.css +2 -2
  305. package/dist/component/tag/tag.legacy.min.css.map +1 -1
  306. package/dist/component/tag/tag.main.css +52 -26
  307. package/dist/component/tag/tag.main.css.map +1 -1
  308. package/dist/component/tag/tag.main.min.css +2 -2
  309. package/dist/component/tag/tag.main.min.css.map +1 -1
  310. package/dist/component/tag/tag.min.css +2 -2
  311. package/dist/component/tag/tag.min.css.map +1 -1
  312. package/dist/component/tag/tag.module.js +2 -2
  313. package/dist/component/tag/tag.module.js.map +1 -1
  314. package/dist/component/tag/tag.module.min.js +1 -1
  315. package/dist/component/tag/tag.module.min.js.map +1 -1
  316. package/dist/component/tag/tag.nomodule.js +2 -2
  317. package/dist/component/tag/tag.nomodule.js.map +1 -1
  318. package/dist/component/tag/tag.nomodule.min.js +1 -1
  319. package/dist/component/tag/tag.nomodule.min.js.map +1 -1
  320. package/dist/component/tile/tile.css +1 -1
  321. package/dist/component/tile/tile.legacy.css +1 -1
  322. package/dist/component/tile/tile.legacy.min.css +1 -1
  323. package/dist/component/tile/tile.main.css +1 -1
  324. package/dist/component/tile/tile.main.min.css +1 -1
  325. package/dist/component/tile/tile.min.css +1 -1
  326. package/dist/component/toggle/toggle.css +1 -1
  327. package/dist/component/toggle/toggle.legacy.css +1 -1
  328. package/dist/component/toggle/toggle.legacy.min.css +1 -1
  329. package/dist/component/toggle/toggle.main.css +1 -1
  330. package/dist/component/toggle/toggle.main.min.css +1 -1
  331. package/dist/component/toggle/toggle.min.css +1 -1
  332. package/dist/component/toggle/toggle.module.js +2 -2
  333. package/dist/component/toggle/toggle.module.js.map +1 -1
  334. package/dist/component/toggle/toggle.module.min.js +1 -1
  335. package/dist/component/toggle/toggle.module.min.js.map +1 -1
  336. package/dist/component/toggle/toggle.nomodule.js +2 -2
  337. package/dist/component/toggle/toggle.nomodule.js.map +1 -1
  338. package/dist/component/toggle/toggle.nomodule.min.js +1 -1
  339. package/dist/component/toggle/toggle.nomodule.min.js.map +1 -1
  340. package/dist/component/upload/upload.css +1 -1
  341. package/dist/component/upload/upload.min.css +1 -1
  342. package/dist/core/core.css +3 -3
  343. package/dist/core/core.css.map +1 -1
  344. package/dist/core/core.legacy.css +1 -1
  345. package/dist/core/core.legacy.min.css +1 -1
  346. package/dist/core/core.main.css +3 -3
  347. package/dist/core/core.main.css.map +1 -1
  348. package/dist/core/core.main.min.css +3 -3
  349. package/dist/core/core.main.min.css.map +1 -1
  350. package/dist/core/core.min.css +3 -3
  351. package/dist/core/core.min.css.map +1 -1
  352. package/dist/core/core.module.js +2 -2
  353. package/dist/core/core.module.js.map +1 -1
  354. package/dist/core/core.module.min.js +2 -2
  355. package/dist/core/core.module.min.js.map +1 -1
  356. package/dist/core/core.nomodule.js +2 -2
  357. package/dist/core/core.nomodule.js.map +1 -1
  358. package/dist/core/core.nomodule.min.js +2 -2
  359. package/dist/core/core.nomodule.min.js.map +1 -1
  360. package/dist/dsfr/dsfr.css +76 -235
  361. package/dist/dsfr/dsfr.css.map +1 -1
  362. package/dist/dsfr/dsfr.legacy.css +33 -21
  363. package/dist/dsfr/dsfr.legacy.css.map +1 -1
  364. package/dist/dsfr/dsfr.legacy.min.css +2 -2
  365. package/dist/dsfr/dsfr.legacy.min.css.map +1 -1
  366. package/dist/dsfr/dsfr.main.css +44 -215
  367. package/dist/dsfr/dsfr.main.css.map +1 -1
  368. package/dist/dsfr/dsfr.main.min.css +3 -3
  369. package/dist/dsfr/dsfr.main.min.css.map +1 -1
  370. package/dist/dsfr/dsfr.min.css +4 -4
  371. package/dist/dsfr/dsfr.min.css.map +1 -1
  372. package/dist/dsfr/dsfr.module.js +2 -2
  373. package/dist/dsfr/dsfr.module.js.map +1 -1
  374. package/dist/dsfr/dsfr.module.min.js +2 -2
  375. package/dist/dsfr/dsfr.module.min.js.map +1 -1
  376. package/dist/dsfr/dsfr.nomodule.js +2 -2
  377. package/dist/dsfr/dsfr.nomodule.js.map +1 -1
  378. package/dist/dsfr/dsfr.nomodule.min.js +2 -2
  379. package/dist/dsfr/dsfr.nomodule.min.js.map +1 -1
  380. package/dist/legacy/legacy.nomodule.js +1 -1
  381. package/dist/legacy/legacy.nomodule.min.js +1 -1
  382. package/dist/scheme/scheme.css +1 -1
  383. package/dist/scheme/scheme.min.css +1 -1
  384. package/dist/scheme/scheme.module.js +2 -2
  385. package/dist/scheme/scheme.module.js.map +1 -1
  386. package/dist/scheme/scheme.module.min.js +1 -1
  387. package/dist/scheme/scheme.module.min.js.map +1 -1
  388. package/example/component/accordion/index.html +164 -188
  389. package/example/component/breadcrumb/index.html +6 -6
  390. package/example/component/callout/index.html +10 -10
  391. package/example/component/card/index.html +8 -8
  392. package/example/component/checkbox/index.html +32 -32
  393. package/example/component/connect/index.html +4 -127
  394. package/example/component/consent/index.html +8 -8
  395. package/example/component/content/index.html +30 -30
  396. package/example/component/display/index.html +46 -46
  397. package/example/component/follow/index.html +16 -16
  398. package/example/component/footer/index.html +20 -20
  399. package/example/component/form/index.html +24 -24
  400. package/example/component/header/index.html +208 -208
  401. package/example/component/highlight/index.html +8 -8
  402. package/example/component/input/index.html +44 -44
  403. package/example/component/link/index.html +14 -14
  404. package/example/component/modal/index.html +80 -80
  405. package/example/component/navigation/index.html +34 -34
  406. package/example/component/pagination/index.html +12 -12
  407. package/example/component/quote/index.html +8 -8
  408. package/example/component/radio/index.html +38 -38
  409. package/example/component/select/index.html +10 -10
  410. package/example/component/share/index.html +10 -10
  411. package/example/component/sidemenu/index.html +456 -456
  412. package/example/component/skiplink/index.html +23 -23
  413. package/example/component/summary/index.html +2 -2
  414. package/example/component/tab/index.html +236 -238
  415. package/example/component/table/index.html +104 -104
  416. package/example/component/tag/index.html +50 -50
  417. package/example/component/tile/index.html +34 -34
  418. package/example/component/toggle/index.html +130 -130
  419. package/package.json +1 -1
  420. package/src/component/connect/example/index.ejs +3 -3
  421. package/src/component/connect/example/sample/connect-default.ejs +1 -2
  422. package/src/component/connect/example/sample/connect-plus.ejs +1 -2
  423. package/src/component/connect/template/ejs/connect.ejs +6 -1
  424. package/src/component/follow/deprecated/style/_module.scss +7 -1
  425. package/src/component/follow/deprecated/style/_tool.scss +3 -7
  426. package/src/component/tag/style/_scheme.scss +13 -22
  427. package/src/component/tag/style/_tool.scss +27 -2
@@ -1 +1 @@
1
- {"version":3,"file":"dsfr.module.min.js","sources":["../../src/core/script/api/state.js","../../.config/config.js","../../src/core/script/api/inspect/inspector.js","../../src/core/script/api/options/starters.js","../../src/core/script/api/options/options.js","../../src/core/script/api/utilities/collection.js","../../src/core/script/api/modules/module.js","../../src/core/script/api/utilities/namespace.js","../../src/core/script/api/utilities/dom/query-selector.js","../../src/core/script/api/modules/register/registration.js","../../src/core/script/api/modules/register/register.js","../../src/core/script/api/modules/stage/element.js","../../src/core/script/api/modules/stage/root.js","../../src/core/script/api/modules/stage/stage.js","../../src/core/script/api/modules/render/renderer.js","../../src/core/script/api/modules/resize/resizer.js","../../src/core/script/api/modules/scroll/scroll-locker.js","../../src/core/script/api/modules/load/load.js","../../src/core/script/api/modules/font-swap/font-swap.js","../../src/core/script/api/modules/mouse-move/mouse-move.js","../../src/core/script/api/engine.js","../../src/core/script/api/utilities/dom/classes.js","../../src/core/script/api/utilities/dom/index.js","../../src/core/script/api/utilities/support/browser-support.js","../../src/core/script/api/utilities/support/index.js","../../src/core/script/api/utilities/motion/transition-selector.js","../../src/core/script/api/utilities/motion/index.js","../../src/core/script/api/utilities/property/complete-assign.js","../../src/core/script/api/utilities/property/index.js","../../src/core/script/api/internals.js","../../src/core/script/api/api.js","../../src/core/script/api/utilities/emitter.js","../../src/core/script/api/modules/register/breakpoints.js","../../src/core/script/api/modules/register/instance.js","../../src/core/script/api/modules/register/key-codes.js","../../src/core/script/disclosure/disclosure-event.js","../../src/core/script/disclosure/disclosure-emission.js","../../src/core/script/disclosure/disclosure.js","../../src/core/script/disclosure/disclosure-button.js","../../src/core/script/disclosure/disclosures-group.js","../../src/core/script/disclosure/disclosure-type.js","../../src/core/script/collapse/collapse-button.js","../../src/core/script/collapse/collapse-selector.js","../../src/core/script/equisized/equisized-emission.js","../../src/core/script/action/toggle/toggle-event.js","../../src/core/script/inject/inject-svg-selector.js","../../src/core/index.js","../../src/core/script/collapse/collapse.js","../../src/core/script/collapse/collapses-group.js","../../src/core/script/equisized/equisized.js","../../src/core/script/action/toggle/toggle.js","../../src/core/script/equisized/equisizeds-group.js","../../src/core/script/inject/inject-svg.js","../../src/core/script/api/utilities/attribute.js","../../src/core/main.js","../../src/core/api.js","../../src/scheme/script/scheme/scheme-value.js","../../src/scheme/script/scheme/scheme-attribute.js","../../src/scheme/script/scheme/scheme-theme.js","../../src/scheme/script/scheme/scheme-emission.js","../../src/scheme/script/scheme/scheme.js","../../src/scheme/script/scheme/scheme-selector.js","../../src/scheme/index.js","../../src/scheme/main.js","../../src/component/accordion/script/accordion/accordion-selector.js","../../src/component/accordion/script/accordion/accordions-group.js","../../src/component/accordion/index.js","../../src/component/accordion/main.js","../../src/component/button/script/button/button-selector.js","../../src/component/button/index.js","../../src/component/button/main.js","../../src/component/breadcrumb/script/breadcrumb/breadcrumb.js","../../src/component/breadcrumb/script/breadcrumb/breadcrumb-selector.js","../../src/component/breadcrumb/index.js","../../src/component/breadcrumb/main.js","../../src/component/toggle/script/toggle/toggle-input.js","../../src/component/toggle/script/toggle/toggle-status-label.js","../../src/component/toggle/script/toggle/toggle-selector.js","../../src/component/toggle/index.js","../../src/component/toggle/main.js","../../src/component/sidemenu/script/sidemenu/sidemenu-selector.js","../../src/component/sidemenu/script/sidemenu/sidemenu-list.js","../../src/component/sidemenu/index.js","../../src/component/sidemenu/main.js","../../src/component/modal/script/modal/modal-selector.js","../../src/component/modal/script/modal/modal-button.js","../../src/component/modal/script/modal/modal-attribute.js","../../src/component/modal/script/modal/modal.js","../../src/component/modal/script/modal/focus-trap.js","../../src/component/modal/script/modal/modals-group.js","../../src/component/modal/script/modal/modal-body.js","../../src/component/modal/index.js","../../src/component/modal/main.js","../../src/component/navigation/script/navigation/navigation-selector.js","../../src/component/navigation/script/navigation/navigation-item.js","../../src/component/navigation/script/navigation/navigation-mouse-position.js","../../src/component/navigation/script/navigation/navigation.js","../../src/component/navigation/index.js","../../src/component/navigation/main.js","../../src/component/tab/script/tab/tab-button.js","../../src/component/tab/script/tab/tab-selector.js","../../src/component/tab/script/tab/tab-panel-direction.js","../../src/component/tab/script/tab/tab-panel.js","../../src/component/tab/script/tab/tabs-group.js","../../src/component/tab/script/tab/tabs-list.js","../../src/component/tab/index.js","../../src/component/tab/main.js","../../src/component/table/script/table/table-emission.js","../../src/component/table/script/table/table.js","../../src/component/table/script/table/table-selector.js","../../src/component/table/script/table/table-element.js","../../src/component/table/script/table/table-caption.js","../../src/component/table/index.js","../../src/component/table/main.js","../../src/component/tag/script/tag/tag-selector.js","../../src/component/tag/index.js","../../src/component/tag/main.js","../../src/component/header/script/header/header-selector.js","../../src/component/header/script/header/header-links.js","../../src/component/header/script/header/header-modal.js","../../src/component/header/index.js","../../src/component/header/main.js","../../src/component/display/script/display/display-selector.js","../../src/component/display/script/display/display.js","../../src/component/display/index.js","../../src/component/display/main.js"],"sourcesContent":["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.4.0'\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 trace: 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.trace.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.trace.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","import inspector from '../inspect/inspector.js';\nimport { startAtDomContentLoaded, startAuto } from './starters.js';\n\nexport 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\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) {\n this.startCallback = start;\n if (settings.verbose === true) inspector.level = 0;\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","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","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 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 (const instance of this.instances) instance._dispose();\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 { Element } from './element.js';\nimport ns from '../../utilities/namespace.js';\n\nclass Root extends Element {\n constructor () {\n super(document.documentElement, 'root');\n this.node.setAttribute(ns.attr('js'), true);\n }\n}\n\nconst RootSelector = {\n ROOT: ':root'\n};\n\nexport { Root, RootSelector };\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';\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 }\n}\n\nexport { Renderer };\n","import { Module } from '../module.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 }\n}\n\nexport { Resizer };\n","import ns from '../../utilities/namespace.js';\nimport { Module } from '../module.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 if (this.isLegacy) document.body.style.top = this._scrollY * -1 + 'px';\n else document.body.style.setProperty('--scroll-top', this._scrollY * -1 + 'px');\n document.documentElement.setAttribute(ns.attr('scrolling'), 'false');\n }\n }\n\n unlock () {\n if (this._isLocked) {\n this._isLocked = false;\n document.documentElement.removeAttribute(ns.attr('scrolling'));\n if (this.isLegacy) document.body.style.top = '';\n else document.body.style.removeProperty('--scroll-top');\n window.scroll(0, this._scrollY);\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 { 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 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\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 }\n\n stop () {\n inspector.debug('STOP');\n state.isActive = false;\n }\n}\n\nconst engine = new Engine();\nexport default engine;\n","const sanitize = (className) => className.charAt(0) === '.' ? className.substr(1) : className;\n\nconst getClassNames = (element) => element.className ? element.className.split(' ') : [];\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","import { addClass, hasClass, removeClass } from './classes.js';\nimport { queryParentSelector, querySelectorAllArray } from './query-selector.js';\n\nconst dom = {};\n\ndom.addClass = addClass;\ndom.hasClass = hasClass;\ndom.removeClass = removeClass;\ndom.queryParentSelector = queryParentSelector;\ndom.querySelectorAllArray = querySelectorAllArray;\n\nexport default dom;\n","const supportLocalStorage = () => {\n try {\n return 'localStorage' in window && window.localStorage !== null;\n } catch (e) {\n return false;\n }\n};\n\nexport { supportLocalStorage };\n","import { supportLocalStorage } from './browser-support.js';\n\nconst support = {};\n\nsupport.supportLocalStorage = supportLocalStorage;\n\nexport default support;\n","import ns from '../namespace.js';\n\nexport const TransitionSelector = {\n NONE: ns.selector('transition-none')\n};\n","import { TransitionSelector } from './transition-selector';\n\nconst selector = {};\n\nselector.TransitionSelector = TransitionSelector;\n\nexport default selector;\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\nproperty.completeAssign = completeAssign;\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 ns from './utilities/namespace.js';\nimport support from './utilities/support/index';\nimport motion from './utilities/motion/index';\nimport property from './utilities/property/index';\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.support = support;\ninternals.motion = motion;\ninternals.property = property;\ninternals.ns = ns;\ninternals.register = engine.register;\n\nObject.defineProperty(internals, 'preventManipulation', {\n get: () => options.preventManipulation\n});\n\nexport default internals;\n","import state from './state.js';\nimport options, { Modes } from './options/options.js';\nimport config from '../../config.js';\nimport engine from './engine.js';\nimport inspector from './inspect/inspector.js';\nimport internals from './internals.js';\n\ninspector.info(`version ${config.version}`);\n\nconst api = (node) => {\n const stage = state.getModule('stage');\n return stage.getProxy(node);\n};\n\napi.Modes = Modes;\n\nObject.defineProperty(api, 'mode', {\n set: (value) => { options.mode = value; },\n get: () => options.mode\n});\n\napi.internals = internals;\n\napi.start = engine.start;\napi.stop = engine.stop;\n\napi.inspector = inspector;\n\noptions.configure(window[config.namespace], api.start);\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","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 { Emitter } from '../../utilities/emitter.js';\nimport state from '../../state.js';\nimport inspector from '../../inspect/inspector.js';\nimport { Breakpoints } from './breakpoints.js';\nimport { addClass, removeClass, hasClass } from '../../utilities/dom/classes.js';\nimport { queryParentSelector, querySelectorAllArray } from '../../utilities/dom/query-selector.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._listeners = {};\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 return {\n render: () => scope.render(),\n resize: () => scope.resize()\n };\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, bubbles, cancelable) {\n const event = new CustomEvent(type, { detail: detail, bubble: bubbles === true, cancelable: cancelable === true });\n this.node.dispatchEvent(event);\n }\n\n listen (type, closure, options) {\n if (!this._listeners[type]) this._listeners[type] = [];\n if (this._listeners[type].indexOf(closure) > -1) return;\n this._listeners[type].push(closure);\n this.node.addEventListener(type, closure, options);\n }\n\n unlisten (type, closure) {\n if (!type) {\n for (const type in this._listeners) this.unlisten(type);\n } else if (!closure) {\n if (!this._listeners[type]) return;\n for (const closure of this._listeners[type]) this.node.removeEventListener(type, closure);\n this._listeners[type].length = 0;\n } else {\n if (!this._listeners[type]) return;\n const index = this._listeners[type].indexOf(closure);\n if (index > -1) this._listeners[type].splice(index, 1);\n this.node.removeEventListener(type, closure);\n }\n }\n\n listenKey (code, 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, code, 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 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 _dispose () {\n inspector.debug(`dispose instance of ${this.registration.instanceClassName} on element [${this.element.id}]`);\n this.removeAttribute(this.registration.attribute);\n this.unlisten();\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._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.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 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 get hasFocus () {\n return this.node === document.activeElement;\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 return this.node.getBoundingClientRect();\n }\n\n get isLegacy () {\n return state.isLegacy;\n }\n}\n\nclass KeyAction {\n constructor (type, code, closure, preventDefault, stopPropagation) {\n this.type = type;\n this.eventType = `key${type}`;\n this.code = code;\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.code) {\n this.closure(e);\n if (this.preventDefault) {\n e.preventDefault();\n }\n if (this.stopPropagation) {\n e.stopPropagation();\n }\n }\n }\n}\n\nexport { Instance };\n","export const KeyCodes = {\n TAB: 9,\n ESCAPE: 27,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\n};\n","import ns from '../api/utilities/namespace.js';\n\nconst DisclosureEvent = {\n DISCLOSE: ns.event('disclose'),\n CONCEAL: ns.event('conceal')\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 REMOVED: ns.emission('disclosure', 'removed'),\n GROUP: ns.emission('disclosure', 'group'),\n UNGROUP: ns.emission('disclosure', 'ungroup')\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.pristine = true;\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.register(`[aria-controls=\"${this.id}\"]`, this.DisclosureButtonInstanceClass);\n this.ascend(DisclosureEmission.ADDED);\n this.update();\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 };\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 }\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.disclosed) return false;\n this.pristine = false;\n this.disclosed = true;\n if (!withhold && this.group) this.group.current = this;\n return true;\n }\n\n conceal (withhold, preventFocus) {\n if (!this.disclosed) return false;\n if (!this.type.canConceal && this.group && this.group.current === this) return false;\n this.pristine = false;\n this.disclosed = false;\n if (!withhold && this.group && this.group.current === this) this.group.current = null;\n if (!preventFocus) this.focus();\n this.descend(DisclosureEmission.RESET);\n return true;\n }\n\n get disclosed () {\n return this._disclosed;\n }\n\n set disclosed (value) {\n if (this._disclosed === value) return;\n this.dispatch(value ? DisclosureEvent.DISCLOSE : DisclosureEvent.CONCEAL, this.type);\n this._disclosed = 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 reset () {}\n\n toggle (isPrimary) {\n if (!this.type.canConceal) this.disclose();\n else {\n switch (true) {\n case !isPrimary:\n case this.disclosed:\n this.conceal();\n break;\n\n default:\n this.disclose();\n }\n }\n }\n\n get buttonHasFocus () {\n if (this.buttons.some((button) => { return button.hasFocus; })) return true;\n return false;\n }\n\n get hasFocus () {\n if (super.hasFocus) return true;\n if (this.buttonHasFocus) return true;\n return this.querySelectorAll(':focus').length > 0;\n }\n\n focus () {\n for (let i = 0; i < this.buttons.length; i++) {\n const button = this.buttons[i];\n if (button.isPrimary) {\n button.focus();\n return;\n }\n }\n }\n\n dispose () {\n this._group = 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 }\n\n static get instanceClassName () {\n return 'DisclosureButton';\n }\n\n init () {\n this.controlsId = this.getAttribute('aria-controls');\n this.isPrimary = this.hasAttribute(this.attributeName);\n if (this.isPrimary && this.disclosed && this.registration.creator.pristine) this.registration.creator.disclose();\n this.listen('click', this.click.bind(this));\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 click (e) {\n if (this.registration.creator) this.registration.creator.toggle(this.isPrimary);\n }\n\n mutate (attributeNames) {\n if (this.isPrimary && attributeNames.indexOf(this.attributeName) > -1 && this.registration.creator) {\n if (this.disclosed) this.registration.creator.disclose();\n else if (this.type.canConceal) this.registration.creator.conceal();\n }\n }\n\n apply (value) {\n if (!this.isPrimary) return;\n this.setAttribute(this.attributeName, value);\n }\n\n get disclosed () {\n return this.getAttribute(this.attributeName) === 'true';\n }\n}\n\nexport { DisclosureButton };\n","import { Instance } from '../api/modules/register/instance.js';\nimport { DisclosureEmission } from './disclosure-emission.js';\nimport { completeAssign } from '../api/utilities/property/complete-assign.js';\n\nclass DisclosuresGroup extends Instance {\n constructor (disclosureInstanceClassName, jsAttribute) {\n super(jsAttribute);\n this.disclosureInstanceClassName = disclosureInstanceClassName;\n this._index = -1;\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.REMOVED, this.update.bind(this));\n this.descend(DisclosureEmission.GROUP);\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 };\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));\n }\n\n update () {\n this.getMembers();\n this.getIndex();\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 () {\n this._index = -1;\n for (let i = 0; i < this.length; i++) {\n if (this.index > -1) this.members[i].conceal(true, true);\n else if (this.members[i].disclosed) {\n this.index = i;\n }\n }\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 member.disclose(true);\n } else {\n member.conceal(true, true);\n }\n }\n this.apply();\n }\n\n get current () {\n return this._index === -1 ? null : this.members[this._index];\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 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 },\n SELECT: {\n id: 'selected',\n ariaState: true,\n ariaControls: true,\n canConceal: false\n },\n OPENED: {\n id: 'opened',\n ariaState: false,\n ariaControls: true,\n canConceal: true\n }\n};\n","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};\n","import ns from '../api/utilities/namespace.js';\n\nexport const EquisizedEmission = {\n CHANGE: ns('equisized', 'change')\n};\n","import ns from '../../api/utilities/namespace.js';\n\nconst ToggleEvent = {\n TOGGLE: ns.event('toggle')\n};\n\nexport { ToggleEvent };\n","import ns from '../api/utilities/namespace.js';\n\nexport const InjectSvgSelector = {\n INJECT_SVG: `[${ns.attr('inject-svg')}]`\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 { 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.js';\nimport { InjectSvg } from './script/inject/inject-svg';\nimport { InjectSvgSelector } from './script/inject/inject-svg-selector';\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 DisclosureEmission: DisclosureEmission,\n Collapse: Collapse,\n CollapseButton: CollapseButton,\n CollapsesGroup: CollapsesGroup,\n CollapseSelector: CollapseSelector,\n RootSelector: RootSelector,\n Equisized: Equisized,\n EquisizedEmission: EquisizedEmission,\n Toggle: Toggle,\n EquisizedsGroup: EquisizedsGroup,\n InjectSvg: InjectSvg,\n InjectSvgSelector: InjectSvgSelector\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.transitionend.bind(this));\n }\n\n transitionend (e) {\n if (!this.disclosed) {\n if (this.isLegacy) this.style.maxHeight = '';\n else this.style.removeProperty('--collapse-max-height');\n }\n }\n\n unbound () {\n if (this.isLegacy) this.style.maxHeight = 'none';\n else this.style.setProperty('--collapse-max-height', 'none');\n }\n\n disclose (withhold) {\n if (this.disclosed) return;\n this.unbound();\n this.request(() => {\n this.adjust();\n this.request(() => {\n super.disclose(withhold);\n });\n });\n }\n\n conceal (withhold, preventFocus) {\n if (!this.disclosed) return;\n this.request(() => {\n this.adjust();\n this.request(() => {\n super.conceal(withhold, preventFocus);\n });\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.pristine) this.disclosed = false;\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\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';\nimport { ToggleEvent } from './toggle-event.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.listen('click', this.toggle.bind(this));\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 this.dispatch(ToggleEvent.TOGGLE, value);\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';\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 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 this.svg = xmlDoc.querySelector('svg');\n\n if (this.svg) {\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 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 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);\n\nexport default api;\n","import config from './config.js';\nconst api = window[config.namespace];\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';\nimport { SchemeValue } from './scheme-value.js';\nimport { SchemeAttribute } from './scheme-attribute.js';\nimport { SchemeTheme } from './scheme-theme.js';\nimport { SchemeEmission } from './scheme-emission.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 }\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 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 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 { SchemeEmission } from './script/scheme/scheme-emission.js';\nimport { SchemeTheme } from './script/scheme/scheme-theme.js';\n\napi.scheme = {\n Scheme: Scheme,\n SchemeValue: SchemeValue,\n SchemeSelector: SchemeSelector,\n SchemeEmission: SchemeEmission,\n SchemeTheme: SchemeTheme\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\nexport const AccordionSelector = {\n GROUP: api.internals.ns.selector('accordions-group'),\n COLLAPSE: `${api.internals.ns.selector('accordion')} > ${api.internals.ns.selector('collapse')}`\n};\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 return member.node.matches(AccordionSelector.COLLAPSE);\n }\n}\n\nexport { AccordionsGroup };\n","import api from './api.js';\nimport { AccordionsGroup } from './script/accordion/accordions-group.js';\nimport { AccordionSelector } from './script/accordion/accordion-selector.js';\n\napi.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);\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 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\nexport { Breadcrumb };\n","import api from '../../api.js';\n\nexport const BreadcrumbSelector = {\n BREADCRUMB: api.internals.ns.selector('breadcrumb')\n};\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\nclass ToggleInput extends api.core.Instance {\n static get instanceClassName () {\n return 'ToggleInput';\n }\n\n get isChecked () {\n return this.hasAttribute('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\nexport const SidemenuSelector = {\n LIST: api.internals.ns.selector('sidemenu__list'),\n COLLAPSE: `${api.internals.ns.selector('sidemenu__item')} > ${api.internals.ns.selector('collapse')}`\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 member.node.matches(SidemenuSelector.COLLAPSE);\n }\n}\n\nexport { SidemenuList };\n","import api from './api.js';\nimport { SidemenuList } from './script/sidemenu/sidemenu-list.js';\nimport { SidemenuSelector } from './script/sidemenu/sidemenu-selector.js';\n\napi.sidemenu = {\n SidemenuList: SidemenuList,\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);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const ModalSelector = {\n MODAL: api.internals.ns.selector('modal'),\n SCROLL_SHADOW: api.internals.ns.selector('scroll-shadow'),\n BODY: api.internals.ns.selector('modal__body')\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.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.listen('click', this.click.bind(this));\n this.listenKey(api.core.KeyCodes.ESCAPE, this.conceal.bind(this, false, false), true, true);\n }\n\n get body () {\n return this.element.getDescendantInstances('ModalBody', 'Modal')[0];\n }\n\n click (e) {\n if (e.target === this.node && this.getAttribute(ModalAttribute.CONCEALING_BACKDROP) !== 'false') this.conceal();\n }\n\n disclose (withhold) {\n if (!super.disclose(withhold)) return false;\n if (this.body) this.body.activate();\n this.isScrollLocked = true;\n this.setAttribute('aria-modal', 'true');\n this.setAttribute('open', 'true');\n return true;\n }\n\n conceal (withhold, preventFocus) {\n if (!super.conceal(withhold, preventFocus)) return false;\n this.isScrollLocked = false;\n this.removeAttribute('aria-modal');\n this.removeAttribute('open');\n if (this.body) this.body.deactivate();\n return true;\n }\n}\n\nexport { Modal };\n","import api from '../../api.js';\n\nconst unordereds = [\n '[tabindex=\"0\"]',\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'details>summary:first-of-type',\n 'details',\n 'iframe'\n];\n\nconst UNORDEREDS = unordereds.join();\n\nconst ordereds = [\n '[tabindex]:not([tabindex=\"-1\"]):not([tabindex=\"0\"])'\n];\n\nconst ORDEREDS = ordereds.join();\n\nconst IS_STUNNING = false;\n\nconst isFocusable = (element, container) => {\n if (!(element instanceof Element)) return false;\n const style = window.getComputedStyle(element);\n if (!style) return false;\n if (style.visibility === 'hidden') return false;\n if (container === undefined) container = element;\n\n while (container.contains(element)) {\n if (style.display === 'none') return false;\n element = element.parentElement;\n }\n\n return true;\n};\n\nclass FocusTrap {\n constructor (onTrap, onUntrap) {\n this.element = null;\n this.activeElement = null;\n this.onTrap = onTrap;\n this.onUntrap = onUntrap;\n this.waiting = this.wait.bind(this);\n this.handling = this.handle.bind(this);\n this.focusing = this.maintainFocus.bind(this);\n this.current = null;\n }\n\n get trapped () { return this.element !== null; }\n\n trap (element) {\n if (this.trapped) this.untrap();\n\n this.element = element;\n this.isTrapping = true;\n this.wait();\n\n if (this.onTrap) this.onTrap();\n }\n\n wait () {\n if (!isFocusable(this.element)) {\n window.requestAnimationFrame(this.waiting);\n return;\n }\n\n this.trapping();\n }\n\n trapping () {\n if (!this.isTrapping) return;\n this.isTrapping = false;\n const focusables = this.focusables;\n if (focusables.length) focusables[0].focus();\n this.element.setAttribute('aria-modal', true);\n window.addEventListener('keydown', this.handling);\n document.body.addEventListener('focus', this.focusing, true);\n\n if (IS_STUNNING) {\n this.stunneds = [];\n this.stun(document.body);\n }\n }\n\n stun (node) {\n for (const child of node.children) {\n if (child === this.element) continue;\n if (child.contains(this.element)) {\n this.stun(child);\n continue;\n }\n this.stunneds.push(new Stunned(child));\n }\n }\n\n maintainFocus (event) {\n if (!this.element.contains(event.target)) {\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n const first = focusables[0];\n event.preventDefault();\n first.focus();\n }\n }\n\n handle (e) {\n if (e.keyCode !== 9) return;\n\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n\n const index = focusables.indexOf(document.activeElement);\n\n if (e.shiftKey) {\n if (!this.element.contains(document.activeElement) || index < 1) {\n e.preventDefault();\n last.focus();\n } else if (document.activeElement.tabIndex > 0 || focusables[index - 1].tabIndex > 0) {\n e.preventDefault();\n focusables[index - 1].focus();\n }\n } else {\n if (!this.element.contains(document.activeElement) || index === focusables.length - 1 || index === -1) {\n e.preventDefault();\n first.focus();\n } else if (document.activeElement.tabIndex > 0) {\n e.preventDefault();\n focusables[index + 1].focus();\n }\n }\n }\n\n get focusables () {\n let unordereds = api.internals.dom.querySelectorAllArray(this.element, UNORDEREDS);\n\n /**\n * filtrage des radiobutttons de même name (la navigations d'un groupe de radio se fait à la flèche et non pas au tab\n **/\n const radios = api.internals.dom.querySelectorAllArray(document.documentElement, 'input[type=\"radio\"]');\n\n if (radios.length) {\n const groups = {};\n\n for (const radio of radios) {\n const name = radio.getAttribute('name');\n if (groups[name] === undefined) groups[name] = new RadioButtonGroup(name);\n groups[name].push(radio);\n }\n\n unordereds = unordereds.filter((unordered) => {\n if (unordered.tagName.toLowerCase() !== 'input' || unordered.getAttribute('type').toLowerCase() !== 'radio') return true;\n const name = unordered.getAttribute('name');\n return groups[name].keep(unordered);\n });\n }\n\n const ordereds = api.internals.dom.querySelectorAllArray(this.element, ORDEREDS);\n\n ordereds.sort((a, b) => a.tabIndex - b.tabIndex);\n\n const noDuplicates = unordereds.filter((element) => ordereds.indexOf(element) === -1);\n const concateneds = ordereds.concat(noDuplicates);\n return concateneds.filter((element) => element.tabIndex !== '-1' && isFocusable(element, this.element));\n }\n\n untrap () {\n if (!this.trapped) return;\n this.isTrapping = false;\n\n this.element.removeAttribute('aria-modal');\n window.removeEventListener('keydown', this.handling);\n document.body.removeEventListener('focus', this.focusing, true);\n\n this.element = null;\n\n if (IS_STUNNING) {\n for (const stunned of this.stunneds) stunned.unstun();\n this.stunneds = [];\n }\n\n if (this.onUntrap) this.onUntrap();\n }\n\n dispose () {\n this.untrap();\n }\n}\n\nclass Stunned {\n constructor (element) {\n this.element = element;\n // this.hidden = element.getAttribute('aria-hidden');\n this.inert = element.getAttribute('inert');\n\n // this.element.setAttribute('aria-hidden', true);\n this.element.setAttribute('inert', '');\n }\n\n unstun () {\n /*\n if (this.hidden === null) this.element.removeAttribute('aria-hidden');\n else this.element.setAttribute('aria-hidden', this.hidden);\n */\n\n if (this.inert === null) this.element.removeAttribute('inert');\n else this.element.setAttribute('inert', this.inert);\n }\n}\n\nclass RadioButtonGroup {\n constructor (name) {\n this.name = name;\n this.buttons = [];\n }\n\n push (button) {\n this.buttons.push(button);\n if (button === document.activeElement || button.checked || this.selected === undefined) this.selected = button;\n }\n\n keep (button) {\n return this.selected === button;\n }\n}\n\nexport { FocusTrap };\n","import api from '../../api.js';\nimport { FocusTrap } from './focus-trap.js';\n\nclass ModalsGroup extends api.core.DisclosuresGroup {\n constructor () {\n super('Modal', false);\n this.focusTrap = new FocusTrap();\n }\n\n static get instanceClassName () {\n return 'ModalsGroup';\n }\n\n apply (value, initial) {\n super.apply(value, initial);\n if (this.current === null) this.focusTrap.untrap();\n else this.focusTrap.trap(this.current.node);\n }\n}\n\nexport { ModalsGroup };\n","import api from '../../api.js';\nimport { ModalSelector } from './modal-selector.js';\n\nconst OFFSET = 32; // 32px => 8v => 2rem\n\nclass ModalBody extends api.core.Instance {\n static get instanceClassName () {\n return 'ModalBody';\n }\n\n init () {\n this.listen('scroll', this.shade.bind(this));\n }\n\n activate () {\n this.isResizing = true;\n this.resize();\n }\n\n deactivate () {\n this.isResizing = false;\n }\n\n shade () {\n if (this.node.scrollHeight > this.node.clientHeight) {\n if (this.node.offsetHeight + this.node.scrollTop >= this.node.scrollHeight) {\n this.removeClass(ModalSelector.SCROLL_SHADOW);\n } else {\n this.addClass(ModalSelector.SCROLL_SHADOW);\n }\n } else {\n this.removeClass(ModalSelector.SCROLL_SHADOW);\n }\n }\n\n resize () {\n this.adjust();\n this.request(this.adjust.bind(this));\n }\n\n adjust () {\n const offset = OFFSET * (this.isBreakpoint(api.core.Breakpoints.MD) ? 2 : 1);\n if (this.isLegacy) this.style.maxHeight = `${window.innerHeight - offset}px`;\n else this.style.setProperty('--modal-max-height', `${window.innerHeight - offset}px`);\n this.shade();\n }\n}\n\nexport { ModalBody };\n","import api from './api.js';\n\nimport { Modal } from './script/modal/modal.js';\nimport { ModalButton } from './script/modal/modal-button.js';\nimport { ModalsGroup } from './script/modal/modals-group.js';\nimport { ModalBody } from './script/modal/modal-body.js';\nimport { ModalSelector } from './script/modal/modal-selector.js';\n\napi.modal = {\n Modal: Modal,\n ModalButton: ModalButton,\n ModalBody: ModalBody,\n ModalsGroup: ModalsGroup,\n ModalSelector: ModalSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.modal.ModalSelector.MODAL, api.modal.Modal);\napi.internals.register(api.modal.ModalSelector.BODY, api.modal.ModalBody);\napi.internals.register(api.core.RootSelector.ROOT, api.modal.ModalsGroup);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const NavigationSelector = {\n NAVIGATION: api.internals.ns.selector('nav'),\n COLLAPSE: `${api.internals.ns.selector('nav__item')} > ${api.internals.ns.selector('collapse')}`,\n ITEM: api.internals.ns.selector('nav__item'),\n ITEM_RIGHT: api.internals.ns('nav__item--align-right'),\n MENU: api.internals.ns.selector('menu')\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;\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\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.listen('focusout', this.focusOut.bind(this));\n this.listen('mousedown', this.down.bind(this));\n }\n\n validate (member) {\n return member.element.node.matches(NavigationSelector.COLLAPSE);\n }\n\n down (e) {\n if (!this.isBreakpoint(api.core.Breakpoints.LG) || this.index === -1 || !this.current) return;\n this.position = this.current.element.node.contains(e.target) ? NavigationMousePosition.INSIDE : NavigationMousePosition.OUTSIDE;\n this.request(this.getPosition.bind(this));\n }\n\n focusOut (e) {\n if (!this.isBreakpoint(api.core.Breakpoints.LG)) return;\n this.out = 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.focus();\n break;\n\n default:\n if (this.index > -1 && !this.current.hasFocus) this.index = -1;\n }\n }\n this.position = NavigationMousePosition.NONE;\n this.out = false;\n }\n\n get index () { return super.index; }\n\n set index (value) {\n if (value === -1 && this.current !== null && this.current.hasFocus) this.current.focus();\n super.index = value;\n }\n}\n\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 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 this.group.index = 0;\n }\n}\n\nexport { TabPanel };\n","import api from '../../api.js';\nimport { TabPanelDirection } from './tab-panel-direction.js';\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 this.listen('transitionend', this.transitionend.bind(this));\n this.listenKey(api.core.KeyCodes.RIGHT, this.pressRight.bind(this), true, true);\n this.listenKey(api.core.KeyCodes.LEFT, this.pressLeft.bind(this), true, true);\n this.listenKey(api.core.KeyCodes.HOME, this.pressHome.bind(this), true, true);\n this.listenKey(api.core.KeyCodes.END, this.pressEnd.bind(this), true, true);\n this.isRendering = true;\n\n if (this.list) this.list.apply();\n }\n\n get list () {\n return this.element.getDescendantInstances('TabsList', 'TabsGroup', true)[0];\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 /**\n * Selectionne l'element suivant de la liste si on est sur un bouton\n * Si on est à la fin on retourne au début\n */\n pressRight () {\n if (this.buttonHasFocus) {\n if (this.index < this.length - 1) {\n this.index++;\n } else {\n this.index = 0;\n }\n\n this.focus();\n }\n };\n\n /**\n * Selectionne l'element précédent de la liste si on est sur un bouton\n * Si on est au debut retourne a la fin\n */\n pressLeft () {\n if (this.buttonHasFocus) {\n if (this.index > 0) {\n this.index--;\n } else {\n this.index = this.length - 1;\n }\n\n this.focus();\n }\n };\n\n /**\n * Selectionne le permier element de la liste si on est sur un bouton\n */\n pressHome () {\n if (this.buttonHasFocus) {\n this.index = 0;\n this.focus();\n }\n };\n\n /**\n * Selectionne le dernier element de la liste si on est sur un bouton\n */\n pressEnd () {\n if (this.buttonHasFocus) {\n this.index = this.length - 1;\n this.focus();\n }\n };\n\n focus () {\n if (this.current) {\n this.current.focus();\n }\n }\n\n apply () {\n for (let i = 0; i < this._index; i++) this.members[i].translate(TabPanelDirection.START);\n 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 const paneHeight = Math.round(this.current.node.offsetHeight);\n if (this.panelHeight === paneHeight) return;\n this.panelHeight = paneHeight;\n let listHeight = 0;\n if (this.list) listHeight = this.list.node.offsetHeight;\n this.style.setProperty('--tabs-height', (this.panelHeight + listHeight) + 'px');\n }\n}\n\nexport { TabsGroup };\n","import api from '../../api.js';\nimport { TabSelector } from './tab-selector';\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.isResizing = true;\n }\n\n get group () {\n return this.element.getAscendantInstance('TabsGroup', 'TabsList');\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.group) return;\n if (this._isScrolling) {\n this.group.addClass(TabSelector.SHADOW);\n this.scroll();\n } else {\n this.group.removeClass(TabSelector.SHADOW_RIGHT);\n this.group.removeClass(TabSelector.SHADOW_LEFT);\n this.group.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 if (!this.group) return;\n const scrollLeft = this.node.scrollLeft;\n const isMin = scrollLeft <= SCROLL_OFFSET;\n const max = this.node.scrollWidth - this.node.clientWidth - SCROLL_OFFSET;\n\n const isMax = Math.abs(scrollLeft) >= max;\n const isRtl = document.documentElement.getAttribute('dir') === 'rtl';\n const minSelector = isRtl ? TabSelector.SHADOW_RIGHT : TabSelector.SHADOW_LEFT;\n const maxSelector = isRtl ? TabSelector.SHADOW_LEFT : TabSelector.SHADOW_RIGHT;\n\n if (isMin) {\n this.group.removeClass(minSelector);\n } else {\n this.group.addClass(minSelector);\n }\n\n if (isMax) {\n this.group.removeClass(maxSelector);\n } else {\n this.group.addClass(maxSelector);\n }\n }\n\n resize () {\n this.isScrolling = this.node.scrollWidth > this.node.clientWidth + SCROLL_OFFSET;\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';\n\napi.tab = {\n TabPanel: TabPanel,\n TabButton: TabButton,\n TabsGroup: TabsGroup,\n TabsList: TabsList,\n TabSelector: TabSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.tab.TabSelector.PANEL, api.tab.TabPanel);\napi.internals.register(api.tab.TabSelector.GROUP, api.tab.TabsGroup);\napi.internals.register(api.tab.TabSelector.LIST, api.tab.TabsList);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const TableEmission = {\n SCROLLABLE: api.internals.ns.emission('table', 'scrollable'),\n CHANGE: api.internals.ns.emission('table', 'change'),\n CAPTION_HEIGHT: api.internals.ns.emission('table', 'captionheight')\n};\n","import api from '../../api.js';\nimport { TableEmission } from './table-emission.js';\n\nconst PADDING = '1rem'; // padding de 4v sur le caption\n\nclass Table extends api.core.Instance {\n static get instanceClassName () {\n return 'Table';\n }\n\n init () {\n this.addAscent(TableEmission.CAPTION_HEIGHT, this.setCaptionHeight.bind(this));\n }\n\n setCaptionHeight (value) {\n this.setProperty('--table-offset', `calc(${value}px + ${PADDING})`);\n }\n}\n\nexport { Table };\n","import api from '../../api.js';\n\nexport const TableSelector = {\n TABLE: api.internals.ns.selector('table'),\n SHADOW: api.internals.ns.selector('table__shadow'),\n SHADOW_LEFT: api.internals.ns.selector('table__shadow--left'),\n SHADOW_RIGHT: api.internals.ns.selector('table__shadow--right'),\n ELEMENT: `${api.internals.ns.selector('table')}:not(${api.internals.ns.selector('table--no-scroll')}) table`,\n CAPTION: `${api.internals.ns.selector('table')} table caption`\n};\n","import api from '../../api.js';\nimport { TableSelector } from './table-selector.js';\n\nconst SCROLL_OFFSET = 8; // valeur en px du scroll avant laquelle le shadow s'active ou se desactive\n\nclass TableElement extends api.core.Instance {\n static get instanceClassName () {\n return 'TableElement';\n }\n\n init () {\n this.listen('scroll', this.scroll.bind(this));\n this.content = this.querySelector('tbody');\n this.isResizing = true;\n }\n\n get isScrolling () {\n return this._isScrolling;\n }\n\n set isScrolling (value) {\n if (this._isScrolling === value) return;\n this._isScrolling = value;\n\n if (value) {\n this.addClass(TableSelector.SHADOW);\n this.scroll();\n } else {\n this.removeClass(TableSelector.SHADOW);\n this.removeClass(TableSelector.SHADOW_LEFT);\n this.removeClass(TableSelector.SHADOW_RIGHT);\n }\n }\n\n /* ajoute la classe fr-table__shadow-left ou fr-table__shadow-right sur fr-table en fonction d'une valeur de scroll et du sens (right, left) */\n scroll () {\n const isMin = this.node.scrollLeft <= SCROLL_OFFSET;\n const max = this.content.offsetWidth - this.node.offsetWidth - SCROLL_OFFSET;\n const isMax = Math.abs(this.node.scrollLeft) >= max;\n const isRtl = document.documentElement.getAttribute('dir') === 'rtl';\n const minSelector = isRtl ? TableSelector.SHADOW_RIGHT : TableSelector.SHADOW_LEFT;\n const maxSelector = isRtl ? TableSelector.SHADOW_LEFT : TableSelector.SHADOW_RIGHT;\n\n if (isMin) {\n this.removeClass(minSelector);\n } else {\n this.addClass(minSelector);\n }\n\n if (isMax) {\n this.removeClass(maxSelector);\n } else {\n this.addClass(maxSelector);\n }\n }\n\n resize () {\n this.isScrolling = this.content.offsetWidth > this.node.offsetWidth;\n }\n\n dispose () {\n this.isScrolling = false;\n }\n}\n\nexport { TableElement };\n","import api from '../../api.js';\nimport { TableEmission } from './table-emission.js';\n\nclass TableCaption extends api.core.Instance {\n static get instanceClassName () {\n return 'TableCaption';\n }\n\n init () {\n this.height = 0;\n this.isResizing = true;\n }\n\n resize () {\n const height = this.getRect().height;\n if (this.height === height) return;\n this.height = height;\n this.ascend(TableEmission.CAPTION_HEIGHT, height);\n }\n}\n\nexport { TableCaption };\n","import api from './api.js';\nimport { Table } from './script/table/table.js';\nimport { TableElement } from './script/table/table-element.js';\nimport { TableSelector } from './script/table/table-selector.js';\nimport { TableCaption } from './script/table/table-caption.js';\n\napi.table = {\n Table: Table,\n TableElement: TableElement,\n TableCaption: TableCaption,\n TableSelector: TableSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.table.TableSelector.TABLE, api.table.Table);\napi.internals.register(api.table.TableSelector.ELEMENT, api.table.TableElement);\napi.internals.register(api.table.TableSelector.CAPTION, api.table.TableCaption);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const TagSelector = {\n TAG_PRESSABLE: `${api.internals.ns.selector('tag')}[aria-pressed]`\n};\n","import api from './api.js';\nimport { TagSelector } from './script/tag/tag-selector';\n\napi.tag = {\n TagSelector: TagSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.tag.TagSelector.TAG_PRESSABLE, api.core.Toggle);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const HeaderSelector = {\n HEADER: api.internals.ns.selector('header'),\n TOOLS_LINKS: api.internals.ns.selector('header__tools-links'),\n MENU_LINKS: api.internals.ns.selector('header__menu-links'),\n BUTTONS: `${api.internals.ns.selector('header__tools-links')} ${api.internals.ns.selector('btns-group')}, ${api.internals.ns.selector('header__tools-links')} ${api.internals.ns.selector('links-group')}`,\n MODALS: `${api.internals.ns.selector('header__search')}${api.internals.ns.selector('modal')}, ${api.internals.ns.selector('header__menu')}${api.internals.ns.selector('modal')}`\n};\n","import api from '../../api.js';\nimport { HeaderSelector } from './header-selector.js';\n\nclass HeaderLinks extends api.core.Instance {\n static get instanceClassName () {\n return 'HeaderLinks';\n }\n\n init () {\n const header = this.queryParentSelector(HeaderSelector.HEADER);\n this.toolsLinks = header.querySelector(HeaderSelector.TOOLS_LINKS);\n this.menuLinks = header.querySelector(HeaderSelector.MENU_LINKS);\n\n const toolsHtml = this.toolsLinks.innerHTML.replace(/ +/g, ' ');\n const menuHtml = this.menuLinks.innerHTML.replace(/ +/g, ' ');\n\n if (toolsHtml === menuHtml) return;\n\n switch (api.mode) {\n case api.Modes.ANGULAR:\n case api.Modes.REACT:\n case api.Modes.VUE:\n api.inspector.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 = this.toolsLinks.innerHTML;\n }\n }\n}\n\nexport { HeaderLinks };\n","import api from '../../api.js';\n\nclass HeaderModal extends api.core.Instance {\n static get instanceClassName () {\n return 'HeaderModal';\n }\n\n init () {\n this.isResizing = true;\n }\n\n resize () {\n if (this.isBreakpoint(api.core.Breakpoints.LG)) this.unqualify();\n else this.qualify();\n }\n\n qualify () {\n this.setAttribute('role', 'dialog');\n const modal = this.element.getInstance('Modal');\n if (!modal) return;\n const buttons = modal.buttons;\n let id = '';\n for (const button of buttons) {\n id = button.id || id;\n if (button.isPrimary && id) break;\n }\n this.setAttribute('aria-labelledby', id);\n }\n\n unqualify () {\n const modal = this.element.getInstance('Modal');\n if (modal) modal.conceal();\n this.removeAttribute('role');\n this.removeAttribute('aria-labelledby');\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://gouvfr.atlassian.net/wiki/spaces/DB/pages/222789846/En-t+te+-+Header'\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.header.HeaderSelector.BUTTONS, api.header.HeaderLinks);\napi.internals.register(api.header.HeaderSelector.MODALS, api.header.HeaderModal);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const DisplaySelector = {\n DISPLAY: api.internals.ns.selector('display'),\n RADIO_BUTTONS: `input[name=\"${api.internals.ns('radios-theme')}\"]`,\n FIELDSET: api.internals.ns.selector('fieldset')\n};\n","import api from '../../api.js';\nimport { DisplaySelector } from './display-selector.js';\n\nclass Display extends api.core.Instance {\n static get instanceClassName () {\n return 'Display';\n }\n\n init () {\n this.radios = this.querySelectorAll(DisplaySelector.RADIO_BUTTONS);\n\n if (api.scheme) {\n this.changing = this.change.bind(this);\n for (const radio of this.radios) radio.addEventListener('change', this.changing);\n this.addDescent(api.scheme.SchemeEmission.SCHEME, this.apply.bind(this));\n this.ascend(api.scheme.SchemeEmission.ASK);\n } else {\n this.querySelector(DisplaySelector.FIELDSET).setAttribute('disabled', '');\n }\n }\n\n get scheme () {\n return this._scheme;\n }\n\n set scheme (value) {\n if (this._scheme === value || !api.scheme) return;\n switch (value) {\n case api.scheme.SchemeValue.SYSTEM:\n case api.scheme.SchemeValue.LIGHT:\n case api.scheme.SchemeValue.DARK:\n this._scheme = value;\n for (const radio of this.radios) {\n radio.checked = radio.value === value;\n }\n this.ascend(api.scheme.SchemeEmission.SCHEME, value);\n break;\n }\n }\n\n change () {\n for (const radio of this.radios) {\n if (radio.checked) {\n this.scheme = radio.value;\n return;\n }\n }\n }\n\n apply (value) {\n this.scheme = value;\n }\n\n dispose () {\n for (const radio of this.radios) radio.removeEventListener('change', this.changing);\n }\n}\n\nexport { Display };\n","import api from './api.js';\nimport { Display } from './script/display/display.js';\nimport { DisplaySelector } from './script/display/display-selector.js';\n\napi.display = {\n Display: Display,\n DisplaySelector: DisplaySelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.display.DisplaySelector.DISPLAY, api.display.Display);\n\nexport default api;\n"],"names":["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","trace","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","options","_mode","isStarted","starting","start","preventManipulation","configure","settings","startCallback","verbose","mode","Collection","_collection","forEach","length","collectable","indexOf","onAdd","onPopulate","index","splice","onRemove","onEmpty","execute","args","clear","clone","slice","collection","Module","super","ns","name","selector","notation","undefined","attr","result","event","emission","querySelectorAllArray","selectors","Array","prototype","call","querySelectorAll","queryParentSelector","parent","parentElement","documentElement","Registration","InstanceClass","creator","instances","isIntroduced","_instanceClassName","instanceClassName","_instanceClassNames","getInstanceClassNames","_property","substring","toLowerCase","dashed","replace","_attribute","getPrototypeOf","hasInstanceClassName","introduce","parse","node","nonRecursive","nodes","querySelector","instance","dispose","_dispose","instanceClassNames","property","attribute","Register","register","registration","count","Element","attributeNames","_children","_parent","_projects","proxy","scope","_proxy","end","outerHTML","project","populate","projects","hasInstance","_config","ascendants","descendants","addChild","isNaN","removeChild","emit","data","elements","response","_emit","_emitter","ascend","_ascend","_ascent","descend","_descend","_descent","getInstance","getDescendantInstances","stopAtInstanceClassName","stopAtFirstInstance","getAscendantInstance","prepare","attributeName","examine","Root","setAttribute","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","target","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","body","style","top","setProperty","removeAttribute","removeProperty","scroll","Load","loading","load","FONT_FAMILIES","FontSwap","swapping","swap","families","filter","family","check","swapFont","MouseMove","requireMove","_isMoving","moving","move","listen","unlisten","removeEventListener","point","x","clientX","y","clientY","mouseMove","engine","registerModule","stop","sanitize","className","charAt","substr","getClassNames","split","modifyClass","classNames","addClass","removeClass","hasClass","dom","support","localStorage","TransitionSelector","NONE","completeAssign","sources","source","descriptors","reduce","key","getOwnPropertyDescriptor","getOwnPropertySymbols","sym","descriptor","enumerable","defineProperties","internals","legacy","defineProperty","get","setLegacy","motion","api","set","Emitter","emissions","closure","Error","Breakpoint","minWidth","test","Breakpoints","XS","SM","MD","LG","XL","Instance","jsAttribute","_isRendering","_isResizing","_isScrollLocked","_isLoading","_isSwappingFont","_listeners","_keyListenerTypes","_keys","handlingKey","handleKey","_registrations","_nexts","init","getRegisteredInstances","dispatch","detail","bubbles","cancelable","CustomEvent","bubble","dispatchEvent","listenKey","code","preventDefault","stopPropagation","KeyAction","unlistenKey","some","handle","isRendering","isResizing","isBreakpoint","breakpoint","toUpperCase","isScrollLocked","isLoading","isSwappingFont","isMouseMoving","_isMouseMoving","addEmission","removeEmission","addAscent","removeAscent","addDescent","removeDescent","getAttribute","hasAttribute","propertyName","focus","hasFocus","activeElement","getRect","getBoundingClientRect","eventType","keyCode","DisclosureEvent","DISCLOSE","CONCEAL","DisclosureEmission","RESET","ADDED","REMOVED","GROUP","UNGROUP","Disclosure","DisclosureButtonInstanceClass","disclosuresGroupInstanceClassName","_selector","modifier","pristine","reset","update","assign","disclose","canConceal","conceal","buttons","button","group","getGroup","_group","validate","withhold","disclosed","current","preventFocus","_disclosed","toggle","isPrimary","buttonHasFocus","DisclosureButton","ariaState","controlsId","click","DisclosuresGroup","disclosureInstanceClassName","_index","proxyAccessors","members","member","getMembers","_members","getIndex","DisclosureType","EXPAND","ariaControls","SELECT","OPENED","CollapseButton","CollapseSelector","COLLAPSE","EquisizedEmission","CHANGE","ToggleEvent","TOGGLE","InjectSvgSelector","INJECT_SVG","core","KeyCodes","TAB","ESCAPE","END","HOME","LEFT","UP","RIGHT","DOWN","Collapse","transitionend","maxHeight","unbound","adjust","height","offsetHeight","CollapsesGroup","RootSelector","ROOT","Equisized","measure","width","Toggle","pressed","EquisizedsGroup","equisizeds","Math","max","equisized","InjectSvg","img","restore","fetch","imgID","imgClass","imgURL","text","xmlDoc","DOMParser","parseFromString","svg","el","attrs","focusable","replaceChild","SchemeValue","SYSTEM","LIGHT","DARK","SchemeAttribute","THEME","SCHEME","TRANSITION","SchemeTheme","SchemeEmission","ASK","Scheme","changing","change","restoreTransition","scheme","supportLocalStorage","getItem","schemeAttr","ask","_scheme","listenPreferences","unlistenPreferences","theme","setItem","_theme","isListening","mediaQuery","SchemeSelector","SWITCH_THEME","RADIO_BUTTONS","AccordionSelector","AccordionsGroup","accordion","ButtonSelector","EQUISIZED_BUTTON","EQUISIZED_GROUP","Breadcrumb","focusing","getCollapse","collapse","links","_focus","link","verify","BreadcrumbSelector","BREADCRUMB","breadcrumb","ToggleInput","isChecked","ToggleStatusLabel","input","checked","getComputedStyle","maxWidth","parseFloat","style2","ToggleSelector","STATUS_LABEL","SidemenuSelector","LIST","SidemenuList","sidemenu","ModalSelector","MODAL","SCROLL_SHADOW","BODY","ModalButton","ModalAttribute","CONCEALING_BACKDROP","Modal","scrolling","UNORDEREDS","ORDEREDS","isFocusable","container","visibility","display","FocusTrap","onTrap","onUntrap","waiting","wait","handling","maintainFocus","trapped","trap","untrap","isTrapping","trapping","focusables","stun","stunneds","Stunned","first","last","shiftKey","tabIndex","unordereds","radios","groups","radio","RadioButtonGroup","unordered","tagName","keep","ordereds","sort","a","b","noDuplicates","concat","inert","unstun","selected","ModalsGroup","focusTrap","initial","ModalBody","shade","scrollHeight","clientHeight","scrollTop","offset","innerHeight","modal","NavigationSelector","NAVIGATION","ITEM","ITEM_RIGHT","MENU","NavigationItem","_isRightAligned","calculate","right","left","isRightAligned","NavigationMousePosition","INSIDE","OUTSIDE","Navigation","clicked","out","focusOut","down","getPosition","navigation","TabButton","list","focalize","TabSelector","PANEL","SHADOW","SHADOW_LEFT","SHADOW_RIGHT","PANEL_START","PANEL_END","TabPanelDirection","TabPanel","_direction","_isPreventingTransition","direction","isPreventingTransition","translate","TabsGroup","pressRight","pressLeft","pressHome","pressEnd","paneHeight","round","panelHeight","listHeight","TabsList","btn","btnRect","listRect","actualScroll","scrollLeft","scrollTo","isScrolling","_isScrolling","isMin","scrollWidth","clientWidth","isMax","abs","isRtl","minSelector","maxSelector","tab","TableEmission","SCROLLABLE","CAPTION_HEIGHT","Table","setCaptionHeight","TableSelector","TABLE","ELEMENT","CAPTION","TableElement","content","offsetWidth","TableCaption","table","TagSelector","TAG_PRESSABLE","tag","HeaderSelector","HEADER","TOOLS_LINKS","MENU_LINKS","BUTTONS","MODALS","HeaderLinks","header","toolsLinks","menuLinks","innerHTML","doc","HeaderModal","unqualify","qualify","DisplaySelector","DISPLAY","FIELDSET","Display"],"mappings":"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"}
1
+ {"version":3,"file":"dsfr.module.min.js","sources":["../../src/core/script/api/state.js","../../.config/config.js","../../src/core/script/api/inspect/inspector.js","../../src/core/script/api/options/starters.js","../../src/core/script/api/options/options.js","../../src/core/script/api/utilities/collection.js","../../src/core/script/api/modules/module.js","../../src/core/script/api/utilities/namespace.js","../../src/core/script/api/utilities/dom/query-selector.js","../../src/core/script/api/modules/register/registration.js","../../src/core/script/api/modules/register/register.js","../../src/core/script/api/modules/stage/element.js","../../src/core/script/api/modules/stage/root.js","../../src/core/script/api/modules/stage/stage.js","../../src/core/script/api/modules/render/renderer.js","../../src/core/script/api/modules/resize/resizer.js","../../src/core/script/api/modules/scroll/scroll-locker.js","../../src/core/script/api/modules/load/load.js","../../src/core/script/api/modules/font-swap/font-swap.js","../../src/core/script/api/modules/mouse-move/mouse-move.js","../../src/core/script/api/engine.js","../../src/core/script/api/utilities/dom/classes.js","../../src/core/script/api/utilities/dom/index.js","../../src/core/script/api/utilities/support/browser-support.js","../../src/core/script/api/utilities/support/index.js","../../src/core/script/api/utilities/motion/transition-selector.js","../../src/core/script/api/utilities/motion/index.js","../../src/core/script/api/utilities/property/complete-assign.js","../../src/core/script/api/utilities/property/index.js","../../src/core/script/api/internals.js","../../src/core/script/api/api.js","../../src/core/script/api/utilities/emitter.js","../../src/core/script/api/modules/register/breakpoints.js","../../src/core/script/api/modules/register/instance.js","../../src/core/script/api/modules/register/key-codes.js","../../src/core/script/disclosure/disclosure-event.js","../../src/core/script/disclosure/disclosure-emission.js","../../src/core/script/disclosure/disclosure.js","../../src/core/script/disclosure/disclosure-button.js","../../src/core/script/disclosure/disclosures-group.js","../../src/core/script/disclosure/disclosure-type.js","../../src/core/script/collapse/collapse-button.js","../../src/core/script/collapse/collapse-selector.js","../../src/core/script/equisized/equisized-emission.js","../../src/core/script/action/toggle/toggle-event.js","../../src/core/script/inject/inject-svg-selector.js","../../src/core/index.js","../../src/core/script/collapse/collapse.js","../../src/core/script/collapse/collapses-group.js","../../src/core/script/equisized/equisized.js","../../src/core/script/action/toggle/toggle.js","../../src/core/script/equisized/equisizeds-group.js","../../src/core/script/inject/inject-svg.js","../../src/core/script/api/utilities/attribute.js","../../src/core/main.js","../../src/core/api.js","../../src/scheme/script/scheme/scheme-value.js","../../src/scheme/script/scheme/scheme-attribute.js","../../src/scheme/script/scheme/scheme-theme.js","../../src/scheme/script/scheme/scheme-emission.js","../../src/scheme/script/scheme/scheme.js","../../src/scheme/script/scheme/scheme-selector.js","../../src/scheme/index.js","../../src/scheme/main.js","../../src/component/accordion/script/accordion/accordion-selector.js","../../src/component/accordion/script/accordion/accordions-group.js","../../src/component/accordion/index.js","../../src/component/accordion/main.js","../../src/component/button/script/button/button-selector.js","../../src/component/button/index.js","../../src/component/button/main.js","../../src/component/breadcrumb/script/breadcrumb/breadcrumb.js","../../src/component/breadcrumb/script/breadcrumb/breadcrumb-selector.js","../../src/component/breadcrumb/index.js","../../src/component/breadcrumb/main.js","../../src/component/toggle/script/toggle/toggle-input.js","../../src/component/toggle/script/toggle/toggle-status-label.js","../../src/component/toggle/script/toggle/toggle-selector.js","../../src/component/toggle/index.js","../../src/component/toggle/main.js","../../src/component/sidemenu/script/sidemenu/sidemenu-selector.js","../../src/component/sidemenu/script/sidemenu/sidemenu-list.js","../../src/component/sidemenu/index.js","../../src/component/sidemenu/main.js","../../src/component/modal/script/modal/modal-selector.js","../../src/component/modal/script/modal/modal-button.js","../../src/component/modal/script/modal/modal-attribute.js","../../src/component/modal/script/modal/modal.js","../../src/component/modal/script/modal/focus-trap.js","../../src/component/modal/script/modal/modals-group.js","../../src/component/modal/script/modal/modal-body.js","../../src/component/modal/index.js","../../src/component/modal/main.js","../../src/component/navigation/script/navigation/navigation-selector.js","../../src/component/navigation/script/navigation/navigation-item.js","../../src/component/navigation/script/navigation/navigation-mouse-position.js","../../src/component/navigation/script/navigation/navigation.js","../../src/component/navigation/index.js","../../src/component/navigation/main.js","../../src/component/tab/script/tab/tab-button.js","../../src/component/tab/script/tab/tab-selector.js","../../src/component/tab/script/tab/tab-panel-direction.js","../../src/component/tab/script/tab/tab-panel.js","../../src/component/tab/script/tab/tabs-group.js","../../src/component/tab/script/tab/tabs-list.js","../../src/component/tab/index.js","../../src/component/tab/main.js","../../src/component/table/script/table/table-emission.js","../../src/component/table/script/table/table.js","../../src/component/table/script/table/table-selector.js","../../src/component/table/script/table/table-element.js","../../src/component/table/script/table/table-caption.js","../../src/component/table/index.js","../../src/component/table/main.js","../../src/component/tag/script/tag/tag-selector.js","../../src/component/tag/index.js","../../src/component/tag/main.js","../../src/component/header/script/header/header-selector.js","../../src/component/header/script/header/header-links.js","../../src/component/header/script/header/header-modal.js","../../src/component/header/index.js","../../src/component/header/main.js","../../src/component/display/script/display/display-selector.js","../../src/component/display/script/display/display.js","../../src/component/display/index.js","../../src/component/display/main.js"],"sourcesContent":["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.4.1'\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 trace: 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.trace.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.trace.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","import inspector from '../inspect/inspector.js';\nimport { startAtDomContentLoaded, startAuto } from './starters.js';\n\nexport 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\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) {\n this.startCallback = start;\n if (settings.verbose === true) inspector.level = 0;\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","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","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 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 (const instance of this.instances) instance._dispose();\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 { Element } from './element.js';\nimport ns from '../../utilities/namespace.js';\n\nclass Root extends Element {\n constructor () {\n super(document.documentElement, 'root');\n this.node.setAttribute(ns.attr('js'), true);\n }\n}\n\nconst RootSelector = {\n ROOT: ':root'\n};\n\nexport { Root, RootSelector };\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';\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 }\n}\n\nexport { Renderer };\n","import { Module } from '../module.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 }\n}\n\nexport { Resizer };\n","import ns from '../../utilities/namespace.js';\nimport { Module } from '../module.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 if (this.isLegacy) document.body.style.top = this._scrollY * -1 + 'px';\n else document.body.style.setProperty('--scroll-top', this._scrollY * -1 + 'px');\n document.documentElement.setAttribute(ns.attr('scrolling'), 'false');\n }\n }\n\n unlock () {\n if (this._isLocked) {\n this._isLocked = false;\n document.documentElement.removeAttribute(ns.attr('scrolling'));\n if (this.isLegacy) document.body.style.top = '';\n else document.body.style.removeProperty('--scroll-top');\n window.scroll(0, this._scrollY);\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 { 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 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\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 }\n\n stop () {\n inspector.debug('STOP');\n state.isActive = false;\n }\n}\n\nconst engine = new Engine();\nexport default engine;\n","const sanitize = (className) => className.charAt(0) === '.' ? className.substr(1) : className;\n\nconst getClassNames = (element) => element.className ? element.className.split(' ') : [];\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","import { addClass, hasClass, removeClass } from './classes.js';\nimport { queryParentSelector, querySelectorAllArray } from './query-selector.js';\n\nconst dom = {};\n\ndom.addClass = addClass;\ndom.hasClass = hasClass;\ndom.removeClass = removeClass;\ndom.queryParentSelector = queryParentSelector;\ndom.querySelectorAllArray = querySelectorAllArray;\n\nexport default dom;\n","const supportLocalStorage = () => {\n try {\n return 'localStorage' in window && window.localStorage !== null;\n } catch (e) {\n return false;\n }\n};\n\nexport { supportLocalStorage };\n","import { supportLocalStorage } from './browser-support.js';\n\nconst support = {};\n\nsupport.supportLocalStorage = supportLocalStorage;\n\nexport default support;\n","import ns from '../namespace.js';\n\nexport const TransitionSelector = {\n NONE: ns.selector('transition-none')\n};\n","import { TransitionSelector } from './transition-selector';\n\nconst selector = {};\n\nselector.TransitionSelector = TransitionSelector;\n\nexport default selector;\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\nproperty.completeAssign = completeAssign;\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 ns from './utilities/namespace.js';\nimport support from './utilities/support/index';\nimport motion from './utilities/motion/index';\nimport property from './utilities/property/index';\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.support = support;\ninternals.motion = motion;\ninternals.property = property;\ninternals.ns = ns;\ninternals.register = engine.register;\n\nObject.defineProperty(internals, 'preventManipulation', {\n get: () => options.preventManipulation\n});\n\nexport default internals;\n","import state from './state.js';\nimport options, { Modes } from './options/options.js';\nimport config from '../../config.js';\nimport engine from './engine.js';\nimport inspector from './inspect/inspector.js';\nimport internals from './internals.js';\n\ninspector.info(`version ${config.version}`);\n\nconst api = (node) => {\n const stage = state.getModule('stage');\n return stage.getProxy(node);\n};\n\napi.Modes = Modes;\n\nObject.defineProperty(api, 'mode', {\n set: (value) => { options.mode = value; },\n get: () => options.mode\n});\n\napi.internals = internals;\n\napi.start = engine.start;\napi.stop = engine.stop;\n\napi.inspector = inspector;\n\noptions.configure(window[config.namespace], api.start);\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","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 { Emitter } from '../../utilities/emitter.js';\nimport state from '../../state.js';\nimport inspector from '../../inspect/inspector.js';\nimport { Breakpoints } from './breakpoints.js';\nimport { addClass, removeClass, hasClass } from '../../utilities/dom/classes.js';\nimport { queryParentSelector, querySelectorAllArray } from '../../utilities/dom/query-selector.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._listeners = {};\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 return {\n render: () => scope.render(),\n resize: () => scope.resize()\n };\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, bubbles, cancelable) {\n const event = new CustomEvent(type, { detail: detail, bubble: bubbles === true, cancelable: cancelable === true });\n this.node.dispatchEvent(event);\n }\n\n listen (type, closure, options) {\n if (!this._listeners[type]) this._listeners[type] = [];\n if (this._listeners[type].indexOf(closure) > -1) return;\n this._listeners[type].push(closure);\n this.node.addEventListener(type, closure, options);\n }\n\n unlisten (type, closure) {\n if (!type) {\n for (const type in this._listeners) this.unlisten(type);\n } else if (!closure) {\n if (!this._listeners[type]) return;\n for (const closure of this._listeners[type]) this.node.removeEventListener(type, closure);\n this._listeners[type].length = 0;\n } else {\n if (!this._listeners[type]) return;\n const index = this._listeners[type].indexOf(closure);\n if (index > -1) this._listeners[type].splice(index, 1);\n this.node.removeEventListener(type, closure);\n }\n }\n\n listenKey (code, 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, code, 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 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 _dispose () {\n inspector.debug(`dispose instance of ${this.registration.instanceClassName} on element [${this.element.id}]`);\n this.removeAttribute(this.registration.attribute);\n this.unlisten();\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._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.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 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 get hasFocus () {\n return this.node === document.activeElement;\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 return this.node.getBoundingClientRect();\n }\n\n get isLegacy () {\n return state.isLegacy;\n }\n}\n\nclass KeyAction {\n constructor (type, code, closure, preventDefault, stopPropagation) {\n this.type = type;\n this.eventType = `key${type}`;\n this.code = code;\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.code) {\n this.closure(e);\n if (this.preventDefault) {\n e.preventDefault();\n }\n if (this.stopPropagation) {\n e.stopPropagation();\n }\n }\n }\n}\n\nexport { Instance };\n","export const KeyCodes = {\n TAB: 9,\n ESCAPE: 27,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\n};\n","import ns from '../api/utilities/namespace.js';\n\nconst DisclosureEvent = {\n DISCLOSE: ns.event('disclose'),\n CONCEAL: ns.event('conceal')\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 REMOVED: ns.emission('disclosure', 'removed'),\n GROUP: ns.emission('disclosure', 'group'),\n UNGROUP: ns.emission('disclosure', 'ungroup')\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.pristine = true;\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.register(`[aria-controls=\"${this.id}\"]`, this.DisclosureButtonInstanceClass);\n this.ascend(DisclosureEmission.ADDED);\n this.update();\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 };\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 }\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.disclosed) return false;\n this.pristine = false;\n this.disclosed = true;\n if (!withhold && this.group) this.group.current = this;\n return true;\n }\n\n conceal (withhold, preventFocus) {\n if (!this.disclosed) return false;\n if (!this.type.canConceal && this.group && this.group.current === this) return false;\n this.pristine = false;\n this.disclosed = false;\n if (!withhold && this.group && this.group.current === this) this.group.current = null;\n if (!preventFocus) this.focus();\n this.descend(DisclosureEmission.RESET);\n return true;\n }\n\n get disclosed () {\n return this._disclosed;\n }\n\n set disclosed (value) {\n if (this._disclosed === value) return;\n this.dispatch(value ? DisclosureEvent.DISCLOSE : DisclosureEvent.CONCEAL, this.type);\n this._disclosed = 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 reset () {}\n\n toggle (isPrimary) {\n if (!this.type.canConceal) this.disclose();\n else {\n switch (true) {\n case !isPrimary:\n case this.disclosed:\n this.conceal();\n break;\n\n default:\n this.disclose();\n }\n }\n }\n\n get buttonHasFocus () {\n if (this.buttons.some((button) => { return button.hasFocus; })) return true;\n return false;\n }\n\n get hasFocus () {\n if (super.hasFocus) return true;\n if (this.buttonHasFocus) return true;\n return this.querySelectorAll(':focus').length > 0;\n }\n\n focus () {\n for (let i = 0; i < this.buttons.length; i++) {\n const button = this.buttons[i];\n if (button.isPrimary) {\n button.focus();\n return;\n }\n }\n }\n\n dispose () {\n this._group = 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 }\n\n static get instanceClassName () {\n return 'DisclosureButton';\n }\n\n init () {\n this.controlsId = this.getAttribute('aria-controls');\n this.isPrimary = this.hasAttribute(this.attributeName);\n if (this.isPrimary && this.disclosed && this.registration.creator.pristine) this.registration.creator.disclose();\n this.listen('click', this.click.bind(this));\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 click (e) {\n if (this.registration.creator) this.registration.creator.toggle(this.isPrimary);\n }\n\n mutate (attributeNames) {\n if (this.isPrimary && attributeNames.indexOf(this.attributeName) > -1 && this.registration.creator) {\n if (this.disclosed) this.registration.creator.disclose();\n else if (this.type.canConceal) this.registration.creator.conceal();\n }\n }\n\n apply (value) {\n if (!this.isPrimary) return;\n this.setAttribute(this.attributeName, value);\n }\n\n get disclosed () {\n return this.getAttribute(this.attributeName) === 'true';\n }\n}\n\nexport { DisclosureButton };\n","import { Instance } from '../api/modules/register/instance.js';\nimport { DisclosureEmission } from './disclosure-emission.js';\nimport { completeAssign } from '../api/utilities/property/complete-assign.js';\n\nclass DisclosuresGroup extends Instance {\n constructor (disclosureInstanceClassName, jsAttribute) {\n super(jsAttribute);\n this.disclosureInstanceClassName = disclosureInstanceClassName;\n this._index = -1;\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.REMOVED, this.update.bind(this));\n this.descend(DisclosureEmission.GROUP);\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 };\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));\n }\n\n update () {\n this.getMembers();\n this.getIndex();\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 () {\n this._index = -1;\n for (let i = 0; i < this.length; i++) {\n if (this.index > -1) this.members[i].conceal(true, true);\n else if (this.members[i].disclosed) {\n this.index = i;\n }\n }\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 member.disclose(true);\n } else {\n member.conceal(true, true);\n }\n }\n this.apply();\n }\n\n get current () {\n return this._index === -1 ? null : this.members[this._index];\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 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 },\n SELECT: {\n id: 'selected',\n ariaState: true,\n ariaControls: true,\n canConceal: false\n },\n OPENED: {\n id: 'opened',\n ariaState: false,\n ariaControls: true,\n canConceal: true\n }\n};\n","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};\n","import ns from '../api/utilities/namespace.js';\n\nexport const EquisizedEmission = {\n CHANGE: ns('equisized', 'change')\n};\n","import ns from '../../api/utilities/namespace.js';\n\nconst ToggleEvent = {\n TOGGLE: ns.event('toggle')\n};\n\nexport { ToggleEvent };\n","import ns from '../api/utilities/namespace.js';\n\nexport const InjectSvgSelector = {\n INJECT_SVG: `[${ns.attr('inject-svg')}]`\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 { 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.js';\nimport { InjectSvg } from './script/inject/inject-svg';\nimport { InjectSvgSelector } from './script/inject/inject-svg-selector';\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 DisclosureEmission: DisclosureEmission,\n Collapse: Collapse,\n CollapseButton: CollapseButton,\n CollapsesGroup: CollapsesGroup,\n CollapseSelector: CollapseSelector,\n RootSelector: RootSelector,\n Equisized: Equisized,\n EquisizedEmission: EquisizedEmission,\n Toggle: Toggle,\n EquisizedsGroup: EquisizedsGroup,\n InjectSvg: InjectSvg,\n InjectSvgSelector: InjectSvgSelector\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.transitionend.bind(this));\n }\n\n transitionend (e) {\n if (!this.disclosed) {\n if (this.isLegacy) this.style.maxHeight = '';\n else this.style.removeProperty('--collapse-max-height');\n }\n }\n\n unbound () {\n if (this.isLegacy) this.style.maxHeight = 'none';\n else this.style.setProperty('--collapse-max-height', 'none');\n }\n\n disclose (withhold) {\n if (this.disclosed) return;\n this.unbound();\n this.request(() => {\n this.adjust();\n this.request(() => {\n super.disclose(withhold);\n });\n });\n }\n\n conceal (withhold, preventFocus) {\n if (!this.disclosed) return;\n this.request(() => {\n this.adjust();\n this.request(() => {\n super.conceal(withhold, preventFocus);\n });\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.pristine) this.disclosed = false;\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\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';\nimport { ToggleEvent } from './toggle-event.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.listen('click', this.toggle.bind(this));\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 this.dispatch(ToggleEvent.TOGGLE, value);\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';\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 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 this.svg = xmlDoc.querySelector('svg');\n\n if (this.svg) {\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 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 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);\n\nexport default api;\n","import config from './config.js';\nconst api = window[config.namespace];\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';\nimport { SchemeValue } from './scheme-value.js';\nimport { SchemeAttribute } from './scheme-attribute.js';\nimport { SchemeTheme } from './scheme-theme.js';\nimport { SchemeEmission } from './scheme-emission.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 }\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 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 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 { SchemeEmission } from './script/scheme/scheme-emission.js';\nimport { SchemeTheme } from './script/scheme/scheme-theme.js';\n\napi.scheme = {\n Scheme: Scheme,\n SchemeValue: SchemeValue,\n SchemeSelector: SchemeSelector,\n SchemeEmission: SchemeEmission,\n SchemeTheme: SchemeTheme\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\nexport const AccordionSelector = {\n GROUP: api.internals.ns.selector('accordions-group'),\n COLLAPSE: `${api.internals.ns.selector('accordion')} > ${api.internals.ns.selector('collapse')}`\n};\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 return member.node.matches(AccordionSelector.COLLAPSE);\n }\n}\n\nexport { AccordionsGroup };\n","import api from './api.js';\nimport { AccordionsGroup } from './script/accordion/accordions-group.js';\nimport { AccordionSelector } from './script/accordion/accordion-selector.js';\n\napi.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);\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 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\nexport { Breadcrumb };\n","import api from '../../api.js';\n\nexport const BreadcrumbSelector = {\n BREADCRUMB: api.internals.ns.selector('breadcrumb')\n};\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\nclass ToggleInput extends api.core.Instance {\n static get instanceClassName () {\n return 'ToggleInput';\n }\n\n get isChecked () {\n return this.hasAttribute('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\nexport const SidemenuSelector = {\n LIST: api.internals.ns.selector('sidemenu__list'),\n COLLAPSE: `${api.internals.ns.selector('sidemenu__item')} > ${api.internals.ns.selector('collapse')}`\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 member.node.matches(SidemenuSelector.COLLAPSE);\n }\n}\n\nexport { SidemenuList };\n","import api from './api.js';\nimport { SidemenuList } from './script/sidemenu/sidemenu-list.js';\nimport { SidemenuSelector } from './script/sidemenu/sidemenu-selector.js';\n\napi.sidemenu = {\n SidemenuList: SidemenuList,\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);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const ModalSelector = {\n MODAL: api.internals.ns.selector('modal'),\n SCROLL_SHADOW: api.internals.ns.selector('scroll-shadow'),\n BODY: api.internals.ns.selector('modal__body')\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.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.listen('click', this.click.bind(this));\n this.listenKey(api.core.KeyCodes.ESCAPE, this.conceal.bind(this, false, false), true, true);\n }\n\n get body () {\n return this.element.getDescendantInstances('ModalBody', 'Modal')[0];\n }\n\n click (e) {\n if (e.target === this.node && this.getAttribute(ModalAttribute.CONCEALING_BACKDROP) !== 'false') this.conceal();\n }\n\n disclose (withhold) {\n if (!super.disclose(withhold)) return false;\n if (this.body) this.body.activate();\n this.isScrollLocked = true;\n this.setAttribute('aria-modal', 'true');\n this.setAttribute('open', 'true');\n return true;\n }\n\n conceal (withhold, preventFocus) {\n if (!super.conceal(withhold, preventFocus)) return false;\n this.isScrollLocked = false;\n this.removeAttribute('aria-modal');\n this.removeAttribute('open');\n if (this.body) this.body.deactivate();\n return true;\n }\n}\n\nexport { Modal };\n","import api from '../../api.js';\n\nconst unordereds = [\n '[tabindex=\"0\"]',\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'details>summary:first-of-type',\n 'details',\n 'iframe'\n];\n\nconst UNORDEREDS = unordereds.join();\n\nconst ordereds = [\n '[tabindex]:not([tabindex=\"-1\"]):not([tabindex=\"0\"])'\n];\n\nconst ORDEREDS = ordereds.join();\n\nconst IS_STUNNING = false;\n\nconst isFocusable = (element, container) => {\n if (!(element instanceof Element)) return false;\n const style = window.getComputedStyle(element);\n if (!style) return false;\n if (style.visibility === 'hidden') return false;\n if (container === undefined) container = element;\n\n while (container.contains(element)) {\n if (style.display === 'none') return false;\n element = element.parentElement;\n }\n\n return true;\n};\n\nclass FocusTrap {\n constructor (onTrap, onUntrap) {\n this.element = null;\n this.activeElement = null;\n this.onTrap = onTrap;\n this.onUntrap = onUntrap;\n this.waiting = this.wait.bind(this);\n this.handling = this.handle.bind(this);\n this.focusing = this.maintainFocus.bind(this);\n this.current = null;\n }\n\n get trapped () { return this.element !== null; }\n\n trap (element) {\n if (this.trapped) this.untrap();\n\n this.element = element;\n this.isTrapping = true;\n this.wait();\n\n if (this.onTrap) this.onTrap();\n }\n\n wait () {\n if (!isFocusable(this.element)) {\n window.requestAnimationFrame(this.waiting);\n return;\n }\n\n this.trapping();\n }\n\n trapping () {\n if (!this.isTrapping) return;\n this.isTrapping = false;\n const focusables = this.focusables;\n if (focusables.length) focusables[0].focus();\n this.element.setAttribute('aria-modal', true);\n window.addEventListener('keydown', this.handling);\n document.body.addEventListener('focus', this.focusing, true);\n\n if (IS_STUNNING) {\n this.stunneds = [];\n this.stun(document.body);\n }\n }\n\n stun (node) {\n for (const child of node.children) {\n if (child === this.element) continue;\n if (child.contains(this.element)) {\n this.stun(child);\n continue;\n }\n this.stunneds.push(new Stunned(child));\n }\n }\n\n maintainFocus (event) {\n if (!this.element.contains(event.target)) {\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n const first = focusables[0];\n event.preventDefault();\n first.focus();\n }\n }\n\n handle (e) {\n if (e.keyCode !== 9) return;\n\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n\n const index = focusables.indexOf(document.activeElement);\n\n if (e.shiftKey) {\n if (!this.element.contains(document.activeElement) || index < 1) {\n e.preventDefault();\n last.focus();\n } else if (document.activeElement.tabIndex > 0 || focusables[index - 1].tabIndex > 0) {\n e.preventDefault();\n focusables[index - 1].focus();\n }\n } else {\n if (!this.element.contains(document.activeElement) || index === focusables.length - 1 || index === -1) {\n e.preventDefault();\n first.focus();\n } else if (document.activeElement.tabIndex > 0) {\n e.preventDefault();\n focusables[index + 1].focus();\n }\n }\n }\n\n get focusables () {\n let unordereds = api.internals.dom.querySelectorAllArray(this.element, UNORDEREDS);\n\n /**\n * filtrage des radiobutttons de même name (la navigations d'un groupe de radio se fait à la flèche et non pas au tab\n **/\n const radios = api.internals.dom.querySelectorAllArray(document.documentElement, 'input[type=\"radio\"]');\n\n if (radios.length) {\n const groups = {};\n\n for (const radio of radios) {\n const name = radio.getAttribute('name');\n if (groups[name] === undefined) groups[name] = new RadioButtonGroup(name);\n groups[name].push(radio);\n }\n\n unordereds = unordereds.filter((unordered) => {\n if (unordered.tagName.toLowerCase() !== 'input' || unordered.getAttribute('type').toLowerCase() !== 'radio') return true;\n const name = unordered.getAttribute('name');\n return groups[name].keep(unordered);\n });\n }\n\n const ordereds = api.internals.dom.querySelectorAllArray(this.element, ORDEREDS);\n\n ordereds.sort((a, b) => a.tabIndex - b.tabIndex);\n\n const noDuplicates = unordereds.filter((element) => ordereds.indexOf(element) === -1);\n const concateneds = ordereds.concat(noDuplicates);\n return concateneds.filter((element) => element.tabIndex !== '-1' && isFocusable(element, this.element));\n }\n\n untrap () {\n if (!this.trapped) return;\n this.isTrapping = false;\n\n this.element.removeAttribute('aria-modal');\n window.removeEventListener('keydown', this.handling);\n document.body.removeEventListener('focus', this.focusing, true);\n\n this.element = null;\n\n if (IS_STUNNING) {\n for (const stunned of this.stunneds) stunned.unstun();\n this.stunneds = [];\n }\n\n if (this.onUntrap) this.onUntrap();\n }\n\n dispose () {\n this.untrap();\n }\n}\n\nclass Stunned {\n constructor (element) {\n this.element = element;\n // this.hidden = element.getAttribute('aria-hidden');\n this.inert = element.getAttribute('inert');\n\n // this.element.setAttribute('aria-hidden', true);\n this.element.setAttribute('inert', '');\n }\n\n unstun () {\n /*\n if (this.hidden === null) this.element.removeAttribute('aria-hidden');\n else this.element.setAttribute('aria-hidden', this.hidden);\n */\n\n if (this.inert === null) this.element.removeAttribute('inert');\n else this.element.setAttribute('inert', this.inert);\n }\n}\n\nclass RadioButtonGroup {\n constructor (name) {\n this.name = name;\n this.buttons = [];\n }\n\n push (button) {\n this.buttons.push(button);\n if (button === document.activeElement || button.checked || this.selected === undefined) this.selected = button;\n }\n\n keep (button) {\n return this.selected === button;\n }\n}\n\nexport { FocusTrap };\n","import api from '../../api.js';\nimport { FocusTrap } from './focus-trap.js';\n\nclass ModalsGroup extends api.core.DisclosuresGroup {\n constructor () {\n super('Modal', false);\n this.focusTrap = new FocusTrap();\n }\n\n static get instanceClassName () {\n return 'ModalsGroup';\n }\n\n apply (value, initial) {\n super.apply(value, initial);\n if (this.current === null) this.focusTrap.untrap();\n else this.focusTrap.trap(this.current.node);\n }\n}\n\nexport { ModalsGroup };\n","import api from '../../api.js';\nimport { ModalSelector } from './modal-selector.js';\n\nconst OFFSET = 32; // 32px => 8v => 2rem\n\nclass ModalBody extends api.core.Instance {\n static get instanceClassName () {\n return 'ModalBody';\n }\n\n init () {\n this.listen('scroll', this.shade.bind(this));\n }\n\n activate () {\n this.isResizing = true;\n this.resize();\n }\n\n deactivate () {\n this.isResizing = false;\n }\n\n shade () {\n if (this.node.scrollHeight > this.node.clientHeight) {\n if (this.node.offsetHeight + this.node.scrollTop >= this.node.scrollHeight) {\n this.removeClass(ModalSelector.SCROLL_SHADOW);\n } else {\n this.addClass(ModalSelector.SCROLL_SHADOW);\n }\n } else {\n this.removeClass(ModalSelector.SCROLL_SHADOW);\n }\n }\n\n resize () {\n this.adjust();\n this.request(this.adjust.bind(this));\n }\n\n adjust () {\n const offset = OFFSET * (this.isBreakpoint(api.core.Breakpoints.MD) ? 2 : 1);\n if (this.isLegacy) this.style.maxHeight = `${window.innerHeight - offset}px`;\n else this.style.setProperty('--modal-max-height', `${window.innerHeight - offset}px`);\n this.shade();\n }\n}\n\nexport { ModalBody };\n","import api from './api.js';\n\nimport { Modal } from './script/modal/modal.js';\nimport { ModalButton } from './script/modal/modal-button.js';\nimport { ModalsGroup } from './script/modal/modals-group.js';\nimport { ModalBody } from './script/modal/modal-body.js';\nimport { ModalSelector } from './script/modal/modal-selector.js';\n\napi.modal = {\n Modal: Modal,\n ModalButton: ModalButton,\n ModalBody: ModalBody,\n ModalsGroup: ModalsGroup,\n ModalSelector: ModalSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.modal.ModalSelector.MODAL, api.modal.Modal);\napi.internals.register(api.modal.ModalSelector.BODY, api.modal.ModalBody);\napi.internals.register(api.core.RootSelector.ROOT, api.modal.ModalsGroup);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const NavigationSelector = {\n NAVIGATION: api.internals.ns.selector('nav'),\n COLLAPSE: `${api.internals.ns.selector('nav__item')} > ${api.internals.ns.selector('collapse')}`,\n ITEM: api.internals.ns.selector('nav__item'),\n ITEM_RIGHT: api.internals.ns('nav__item--align-right'),\n MENU: api.internals.ns.selector('menu')\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;\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\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.listen('focusout', this.focusOut.bind(this));\n this.listen('mousedown', this.down.bind(this));\n }\n\n validate (member) {\n return member.element.node.matches(NavigationSelector.COLLAPSE);\n }\n\n down (e) {\n if (!this.isBreakpoint(api.core.Breakpoints.LG) || this.index === -1 || !this.current) return;\n this.position = this.current.element.node.contains(e.target) ? NavigationMousePosition.INSIDE : NavigationMousePosition.OUTSIDE;\n this.request(this.getPosition.bind(this));\n }\n\n focusOut (e) {\n if (!this.isBreakpoint(api.core.Breakpoints.LG)) return;\n this.out = 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.focus();\n break;\n\n default:\n if (this.index > -1 && !this.current.hasFocus) this.index = -1;\n }\n }\n this.position = NavigationMousePosition.NONE;\n this.out = false;\n }\n\n get index () { return super.index; }\n\n set index (value) {\n if (value === -1 && this.current !== null && this.current.hasFocus) this.current.focus();\n super.index = value;\n }\n}\n\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 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 this.group.index = 0;\n }\n}\n\nexport { TabPanel };\n","import api from '../../api.js';\nimport { TabPanelDirection } from './tab-panel-direction.js';\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 this.listen('transitionend', this.transitionend.bind(this));\n this.listenKey(api.core.KeyCodes.RIGHT, this.pressRight.bind(this), true, true);\n this.listenKey(api.core.KeyCodes.LEFT, this.pressLeft.bind(this), true, true);\n this.listenKey(api.core.KeyCodes.HOME, this.pressHome.bind(this), true, true);\n this.listenKey(api.core.KeyCodes.END, this.pressEnd.bind(this), true, true);\n this.isRendering = true;\n\n if (this.list) this.list.apply();\n }\n\n get list () {\n return this.element.getDescendantInstances('TabsList', 'TabsGroup', true)[0];\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 /**\n * Selectionne l'element suivant de la liste si on est sur un bouton\n * Si on est à la fin on retourne au début\n */\n pressRight () {\n if (this.buttonHasFocus) {\n if (this.index < this.length - 1) {\n this.index++;\n } else {\n this.index = 0;\n }\n\n this.focus();\n }\n };\n\n /**\n * Selectionne l'element précédent de la liste si on est sur un bouton\n * Si on est au debut retourne a la fin\n */\n pressLeft () {\n if (this.buttonHasFocus) {\n if (this.index > 0) {\n this.index--;\n } else {\n this.index = this.length - 1;\n }\n\n this.focus();\n }\n };\n\n /**\n * Selectionne le permier element de la liste si on est sur un bouton\n */\n pressHome () {\n if (this.buttonHasFocus) {\n this.index = 0;\n this.focus();\n }\n };\n\n /**\n * Selectionne le dernier element de la liste si on est sur un bouton\n */\n pressEnd () {\n if (this.buttonHasFocus) {\n this.index = this.length - 1;\n this.focus();\n }\n };\n\n focus () {\n if (this.current) {\n this.current.focus();\n }\n }\n\n apply () {\n for (let i = 0; i < this._index; i++) this.members[i].translate(TabPanelDirection.START);\n 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 const paneHeight = Math.round(this.current.node.offsetHeight);\n if (this.panelHeight === paneHeight) return;\n this.panelHeight = paneHeight;\n let listHeight = 0;\n if (this.list) listHeight = this.list.node.offsetHeight;\n this.style.setProperty('--tabs-height', (this.panelHeight + listHeight) + 'px');\n }\n}\n\nexport { TabsGroup };\n","import api from '../../api.js';\nimport { TabSelector } from './tab-selector';\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.isResizing = true;\n }\n\n get group () {\n return this.element.getAscendantInstance('TabsGroup', 'TabsList');\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.group) return;\n if (this._isScrolling) {\n this.group.addClass(TabSelector.SHADOW);\n this.scroll();\n } else {\n this.group.removeClass(TabSelector.SHADOW_RIGHT);\n this.group.removeClass(TabSelector.SHADOW_LEFT);\n this.group.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 if (!this.group) return;\n const scrollLeft = this.node.scrollLeft;\n const isMin = scrollLeft <= SCROLL_OFFSET;\n const max = this.node.scrollWidth - this.node.clientWidth - SCROLL_OFFSET;\n\n const isMax = Math.abs(scrollLeft) >= max;\n const isRtl = document.documentElement.getAttribute('dir') === 'rtl';\n const minSelector = isRtl ? TabSelector.SHADOW_RIGHT : TabSelector.SHADOW_LEFT;\n const maxSelector = isRtl ? TabSelector.SHADOW_LEFT : TabSelector.SHADOW_RIGHT;\n\n if (isMin) {\n this.group.removeClass(minSelector);\n } else {\n this.group.addClass(minSelector);\n }\n\n if (isMax) {\n this.group.removeClass(maxSelector);\n } else {\n this.group.addClass(maxSelector);\n }\n }\n\n resize () {\n this.isScrolling = this.node.scrollWidth > this.node.clientWidth + SCROLL_OFFSET;\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';\n\napi.tab = {\n TabPanel: TabPanel,\n TabButton: TabButton,\n TabsGroup: TabsGroup,\n TabsList: TabsList,\n TabSelector: TabSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.tab.TabSelector.PANEL, api.tab.TabPanel);\napi.internals.register(api.tab.TabSelector.GROUP, api.tab.TabsGroup);\napi.internals.register(api.tab.TabSelector.LIST, api.tab.TabsList);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const TableEmission = {\n SCROLLABLE: api.internals.ns.emission('table', 'scrollable'),\n CHANGE: api.internals.ns.emission('table', 'change'),\n CAPTION_HEIGHT: api.internals.ns.emission('table', 'captionheight')\n};\n","import api from '../../api.js';\nimport { TableEmission } from './table-emission.js';\n\nconst PADDING = '1rem'; // padding de 4v sur le caption\n\nclass Table extends api.core.Instance {\n static get instanceClassName () {\n return 'Table';\n }\n\n init () {\n this.addAscent(TableEmission.CAPTION_HEIGHT, this.setCaptionHeight.bind(this));\n }\n\n setCaptionHeight (value) {\n this.setProperty('--table-offset', `calc(${value}px + ${PADDING})`);\n }\n}\n\nexport { Table };\n","import api from '../../api.js';\n\nexport const TableSelector = {\n TABLE: api.internals.ns.selector('table'),\n SHADOW: api.internals.ns.selector('table__shadow'),\n SHADOW_LEFT: api.internals.ns.selector('table__shadow--left'),\n SHADOW_RIGHT: api.internals.ns.selector('table__shadow--right'),\n ELEMENT: `${api.internals.ns.selector('table')}:not(${api.internals.ns.selector('table--no-scroll')}) table`,\n CAPTION: `${api.internals.ns.selector('table')} table caption`\n};\n","import api from '../../api.js';\nimport { TableSelector } from './table-selector.js';\n\nconst SCROLL_OFFSET = 8; // valeur en px du scroll avant laquelle le shadow s'active ou se desactive\n\nclass TableElement extends api.core.Instance {\n static get instanceClassName () {\n return 'TableElement';\n }\n\n init () {\n this.listen('scroll', this.scroll.bind(this));\n this.content = this.querySelector('tbody');\n this.isResizing = true;\n }\n\n get isScrolling () {\n return this._isScrolling;\n }\n\n set isScrolling (value) {\n if (this._isScrolling === value) return;\n this._isScrolling = value;\n\n if (value) {\n this.addClass(TableSelector.SHADOW);\n this.scroll();\n } else {\n this.removeClass(TableSelector.SHADOW);\n this.removeClass(TableSelector.SHADOW_LEFT);\n this.removeClass(TableSelector.SHADOW_RIGHT);\n }\n }\n\n /* ajoute la classe fr-table__shadow-left ou fr-table__shadow-right sur fr-table en fonction d'une valeur de scroll et du sens (right, left) */\n scroll () {\n const isMin = this.node.scrollLeft <= SCROLL_OFFSET;\n const max = this.content.offsetWidth - this.node.offsetWidth - SCROLL_OFFSET;\n const isMax = Math.abs(this.node.scrollLeft) >= max;\n const isRtl = document.documentElement.getAttribute('dir') === 'rtl';\n const minSelector = isRtl ? TableSelector.SHADOW_RIGHT : TableSelector.SHADOW_LEFT;\n const maxSelector = isRtl ? TableSelector.SHADOW_LEFT : TableSelector.SHADOW_RIGHT;\n\n if (isMin) {\n this.removeClass(minSelector);\n } else {\n this.addClass(minSelector);\n }\n\n if (isMax) {\n this.removeClass(maxSelector);\n } else {\n this.addClass(maxSelector);\n }\n }\n\n resize () {\n this.isScrolling = this.content.offsetWidth > this.node.offsetWidth;\n }\n\n dispose () {\n this.isScrolling = false;\n }\n}\n\nexport { TableElement };\n","import api from '../../api.js';\nimport { TableEmission } from './table-emission.js';\n\nclass TableCaption extends api.core.Instance {\n static get instanceClassName () {\n return 'TableCaption';\n }\n\n init () {\n this.height = 0;\n this.isResizing = true;\n }\n\n resize () {\n const height = this.getRect().height;\n if (this.height === height) return;\n this.height = height;\n this.ascend(TableEmission.CAPTION_HEIGHT, height);\n }\n}\n\nexport { TableCaption };\n","import api from './api.js';\nimport { Table } from './script/table/table.js';\nimport { TableElement } from './script/table/table-element.js';\nimport { TableSelector } from './script/table/table-selector.js';\nimport { TableCaption } from './script/table/table-caption.js';\n\napi.table = {\n Table: Table,\n TableElement: TableElement,\n TableCaption: TableCaption,\n TableSelector: TableSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.table.TableSelector.TABLE, api.table.Table);\napi.internals.register(api.table.TableSelector.ELEMENT, api.table.TableElement);\napi.internals.register(api.table.TableSelector.CAPTION, api.table.TableCaption);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const TagSelector = {\n TAG_PRESSABLE: `${api.internals.ns.selector('tag')}[aria-pressed]`\n};\n","import api from './api.js';\nimport { TagSelector } from './script/tag/tag-selector';\n\napi.tag = {\n TagSelector: TagSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.tag.TagSelector.TAG_PRESSABLE, api.core.Toggle);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const HeaderSelector = {\n HEADER: api.internals.ns.selector('header'),\n TOOLS_LINKS: api.internals.ns.selector('header__tools-links'),\n MENU_LINKS: api.internals.ns.selector('header__menu-links'),\n BUTTONS: `${api.internals.ns.selector('header__tools-links')} ${api.internals.ns.selector('btns-group')}, ${api.internals.ns.selector('header__tools-links')} ${api.internals.ns.selector('links-group')}`,\n MODALS: `${api.internals.ns.selector('header__search')}${api.internals.ns.selector('modal')}, ${api.internals.ns.selector('header__menu')}${api.internals.ns.selector('modal')}`\n};\n","import api from '../../api.js';\nimport { HeaderSelector } from './header-selector.js';\n\nclass HeaderLinks extends api.core.Instance {\n static get instanceClassName () {\n return 'HeaderLinks';\n }\n\n init () {\n const header = this.queryParentSelector(HeaderSelector.HEADER);\n this.toolsLinks = header.querySelector(HeaderSelector.TOOLS_LINKS);\n this.menuLinks = header.querySelector(HeaderSelector.MENU_LINKS);\n\n const toolsHtml = this.toolsLinks.innerHTML.replace(/ +/g, ' ');\n const menuHtml = this.menuLinks.innerHTML.replace(/ +/g, ' ');\n\n if (toolsHtml === menuHtml) return;\n\n switch (api.mode) {\n case api.Modes.ANGULAR:\n case api.Modes.REACT:\n case api.Modes.VUE:\n api.inspector.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 = this.toolsLinks.innerHTML;\n }\n }\n}\n\nexport { HeaderLinks };\n","import api from '../../api.js';\n\nclass HeaderModal extends api.core.Instance {\n static get instanceClassName () {\n return 'HeaderModal';\n }\n\n init () {\n this.isResizing = true;\n }\n\n resize () {\n if (this.isBreakpoint(api.core.Breakpoints.LG)) this.unqualify();\n else this.qualify();\n }\n\n qualify () {\n this.setAttribute('role', 'dialog');\n const modal = this.element.getInstance('Modal');\n if (!modal) return;\n const buttons = modal.buttons;\n let id = '';\n for (const button of buttons) {\n id = button.id || id;\n if (button.isPrimary && id) break;\n }\n this.setAttribute('aria-labelledby', id);\n }\n\n unqualify () {\n const modal = this.element.getInstance('Modal');\n if (modal) modal.conceal();\n this.removeAttribute('role');\n this.removeAttribute('aria-labelledby');\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://gouvfr.atlassian.net/wiki/spaces/DB/pages/222789846/En-t+te+-+Header'\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.header.HeaderSelector.BUTTONS, api.header.HeaderLinks);\napi.internals.register(api.header.HeaderSelector.MODALS, api.header.HeaderModal);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const DisplaySelector = {\n DISPLAY: api.internals.ns.selector('display'),\n RADIO_BUTTONS: `input[name=\"${api.internals.ns('radios-theme')}\"]`,\n FIELDSET: api.internals.ns.selector('fieldset')\n};\n","import api from '../../api.js';\nimport { DisplaySelector } from './display-selector.js';\n\nclass Display extends api.core.Instance {\n static get instanceClassName () {\n return 'Display';\n }\n\n init () {\n this.radios = this.querySelectorAll(DisplaySelector.RADIO_BUTTONS);\n\n if (api.scheme) {\n this.changing = this.change.bind(this);\n for (const radio of this.radios) radio.addEventListener('change', this.changing);\n this.addDescent(api.scheme.SchemeEmission.SCHEME, this.apply.bind(this));\n this.ascend(api.scheme.SchemeEmission.ASK);\n } else {\n this.querySelector(DisplaySelector.FIELDSET).setAttribute('disabled', '');\n }\n }\n\n get scheme () {\n return this._scheme;\n }\n\n set scheme (value) {\n if (this._scheme === value || !api.scheme) return;\n switch (value) {\n case api.scheme.SchemeValue.SYSTEM:\n case api.scheme.SchemeValue.LIGHT:\n case api.scheme.SchemeValue.DARK:\n this._scheme = value;\n for (const radio of this.radios) {\n radio.checked = radio.value === value;\n }\n this.ascend(api.scheme.SchemeEmission.SCHEME, value);\n break;\n }\n }\n\n change () {\n for (const radio of this.radios) {\n if (radio.checked) {\n this.scheme = radio.value;\n return;\n }\n }\n }\n\n apply (value) {\n this.scheme = value;\n }\n\n dispose () {\n for (const radio of this.radios) radio.removeEventListener('change', this.changing);\n }\n}\n\nexport { Display };\n","import api from './api.js';\nimport { Display } from './script/display/display.js';\nimport { DisplaySelector } from './script/display/display-selector.js';\n\napi.display = {\n Display: Display,\n DisplaySelector: DisplaySelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.display.DisplaySelector.DISPLAY, api.display.Display);\n\nexport default api;\n"],"names":["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","trace","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","options","_mode","isStarted","starting","start","preventManipulation","configure","settings","startCallback","verbose","mode","Collection","_collection","forEach","length","collectable","indexOf","onAdd","onPopulate","index","splice","onRemove","onEmpty","execute","args","clear","clone","slice","collection","Module","super","ns","name","selector","notation","undefined","attr","result","event","emission","querySelectorAllArray","selectors","Array","prototype","call","querySelectorAll","queryParentSelector","parent","parentElement","documentElement","Registration","InstanceClass","creator","instances","isIntroduced","_instanceClassName","instanceClassName","_instanceClassNames","getInstanceClassNames","_property","substring","toLowerCase","dashed","replace","_attribute","getPrototypeOf","hasInstanceClassName","introduce","parse","node","nonRecursive","nodes","querySelector","instance","dispose","_dispose","instanceClassNames","property","attribute","Register","register","registration","count","Element","attributeNames","_children","_parent","_projects","proxy","scope","_proxy","end","outerHTML","project","populate","projects","hasInstance","_config","ascendants","descendants","addChild","isNaN","removeChild","emit","data","elements","response","_emit","_emitter","ascend","_ascend","_ascent","descend","_descend","_descent","getInstance","getDescendantInstances","stopAtInstanceClassName","stopAtFirstInstance","getAscendantInstance","prepare","attributeName","examine","Root","setAttribute","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","target","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","body","style","top","setProperty","removeAttribute","removeProperty","scroll","Load","loading","load","FONT_FAMILIES","FontSwap","swapping","swap","families","filter","family","check","swapFont","MouseMove","requireMove","_isMoving","moving","move","listen","unlisten","removeEventListener","point","x","clientX","y","clientY","mouseMove","engine","registerModule","stop","sanitize","className","charAt","substr","getClassNames","split","modifyClass","classNames","addClass","removeClass","hasClass","dom","support","localStorage","TransitionSelector","NONE","completeAssign","sources","source","descriptors","reduce","key","getOwnPropertyDescriptor","getOwnPropertySymbols","sym","descriptor","enumerable","defineProperties","internals","legacy","defineProperty","get","setLegacy","motion","api","set","Emitter","emissions","closure","Error","Breakpoint","minWidth","test","Breakpoints","XS","SM","MD","LG","XL","Instance","jsAttribute","_isRendering","_isResizing","_isScrollLocked","_isLoading","_isSwappingFont","_listeners","_keyListenerTypes","_keys","handlingKey","handleKey","_registrations","_nexts","init","getRegisteredInstances","dispatch","detail","bubbles","cancelable","CustomEvent","bubble","dispatchEvent","listenKey","code","preventDefault","stopPropagation","KeyAction","unlistenKey","some","handle","isRendering","isResizing","isBreakpoint","breakpoint","toUpperCase","isScrollLocked","isLoading","isSwappingFont","isMouseMoving","_isMouseMoving","addEmission","removeEmission","addAscent","removeAscent","addDescent","removeDescent","getAttribute","hasAttribute","propertyName","focus","hasFocus","activeElement","getRect","getBoundingClientRect","eventType","keyCode","DisclosureEvent","DISCLOSE","CONCEAL","DisclosureEmission","RESET","ADDED","REMOVED","GROUP","UNGROUP","Disclosure","DisclosureButtonInstanceClass","disclosuresGroupInstanceClassName","_selector","modifier","pristine","reset","update","assign","disclose","canConceal","conceal","buttons","button","group","getGroup","_group","validate","withhold","disclosed","current","preventFocus","_disclosed","toggle","isPrimary","buttonHasFocus","DisclosureButton","ariaState","controlsId","click","DisclosuresGroup","disclosureInstanceClassName","_index","proxyAccessors","members","member","getMembers","_members","getIndex","DisclosureType","EXPAND","ariaControls","SELECT","OPENED","CollapseButton","CollapseSelector","COLLAPSE","EquisizedEmission","CHANGE","ToggleEvent","TOGGLE","InjectSvgSelector","INJECT_SVG","core","KeyCodes","TAB","ESCAPE","END","HOME","LEFT","UP","RIGHT","DOWN","Collapse","transitionend","maxHeight","unbound","adjust","height","offsetHeight","CollapsesGroup","RootSelector","ROOT","Equisized","measure","width","Toggle","pressed","EquisizedsGroup","equisizeds","Math","max","equisized","InjectSvg","img","restore","fetch","imgID","imgClass","imgURL","text","xmlDoc","DOMParser","parseFromString","svg","el","attrs","focusable","replaceChild","SchemeValue","SYSTEM","LIGHT","DARK","SchemeAttribute","THEME","SCHEME","TRANSITION","SchemeTheme","SchemeEmission","ASK","Scheme","changing","change","restoreTransition","scheme","supportLocalStorage","getItem","schemeAttr","ask","_scheme","listenPreferences","unlistenPreferences","theme","setItem","_theme","isListening","mediaQuery","SchemeSelector","SWITCH_THEME","RADIO_BUTTONS","AccordionSelector","AccordionsGroup","accordion","ButtonSelector","EQUISIZED_BUTTON","EQUISIZED_GROUP","Breadcrumb","focusing","getCollapse","collapse","links","_focus","link","verify","BreadcrumbSelector","BREADCRUMB","breadcrumb","ToggleInput","isChecked","ToggleStatusLabel","input","checked","getComputedStyle","maxWidth","parseFloat","style2","ToggleSelector","STATUS_LABEL","SidemenuSelector","LIST","SidemenuList","sidemenu","ModalSelector","MODAL","SCROLL_SHADOW","BODY","ModalButton","ModalAttribute","CONCEALING_BACKDROP","Modal","scrolling","UNORDEREDS","ORDEREDS","isFocusable","container","visibility","display","FocusTrap","onTrap","onUntrap","waiting","wait","handling","maintainFocus","trapped","trap","untrap","isTrapping","trapping","focusables","stun","stunneds","Stunned","first","last","shiftKey","tabIndex","unordereds","radios","groups","radio","RadioButtonGroup","unordered","tagName","keep","ordereds","sort","a","b","noDuplicates","concat","inert","unstun","selected","ModalsGroup","focusTrap","initial","ModalBody","shade","scrollHeight","clientHeight","scrollTop","offset","innerHeight","modal","NavigationSelector","NAVIGATION","ITEM","ITEM_RIGHT","MENU","NavigationItem","_isRightAligned","calculate","right","left","isRightAligned","NavigationMousePosition","INSIDE","OUTSIDE","Navigation","clicked","out","focusOut","down","getPosition","navigation","TabButton","list","focalize","TabSelector","PANEL","SHADOW","SHADOW_LEFT","SHADOW_RIGHT","PANEL_START","PANEL_END","TabPanelDirection","TabPanel","_direction","_isPreventingTransition","direction","isPreventingTransition","translate","TabsGroup","pressRight","pressLeft","pressHome","pressEnd","paneHeight","round","panelHeight","listHeight","TabsList","btn","btnRect","listRect","actualScroll","scrollLeft","scrollTo","isScrolling","_isScrolling","isMin","scrollWidth","clientWidth","isMax","abs","isRtl","minSelector","maxSelector","tab","TableEmission","SCROLLABLE","CAPTION_HEIGHT","Table","setCaptionHeight","TableSelector","TABLE","ELEMENT","CAPTION","TableElement","content","offsetWidth","TableCaption","table","TagSelector","TAG_PRESSABLE","tag","HeaderSelector","HEADER","TOOLS_LINKS","MENU_LINKS","BUTTONS","MODALS","HeaderLinks","header","toolsLinks","menuLinks","innerHTML","doc","HeaderModal","unqualify","qualify","DisplaySelector","DISPLAY","FIELDSET","Display"],"mappings":"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"}