bootstrap-italia 2.12.1 → 2.13.0

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 (380) hide show
  1. package/README.EN.md +1 -1
  2. package/README.md +1 -1
  3. package/dist/bootstrap-italia.esm.js +1 -1
  4. package/dist/css/bootstrap-italia.min.css +9 -1
  5. package/dist/css/bootstrap-italia.min.css.map +1 -1
  6. package/dist/js/bootstrap-italia.bundle.min.js +19 -23
  7. package/dist/js/bootstrap-italia.min.js +18 -2
  8. package/dist/plugins/accept-overlay.js +19 -9
  9. package/dist/plugins/accept-overlay.js.map +1 -1
  10. package/dist/plugins/accordion.js +19 -24
  11. package/dist/plugins/accordion.js.map +1 -1
  12. package/dist/plugins/alert.js +67 -2
  13. package/dist/plugins/alert.js.map +1 -1
  14. package/dist/plugins/{backToTop.js → back-to-top.js} +14 -5
  15. package/dist/plugins/back-to-top.js.map +1 -0
  16. package/dist/plugins/base-component.js +91 -0
  17. package/dist/plugins/base-component.js.map +1 -0
  18. package/dist/plugins/button.js +58 -2
  19. package/dist/plugins/button.js.map +1 -1
  20. package/dist/plugins/carousel-bi.js +19 -9
  21. package/dist/plugins/carousel-bi.js.map +1 -1
  22. package/dist/plugins/carousel.js +445 -2
  23. package/dist/plugins/carousel.js.map +1 -1
  24. package/dist/plugins/collapse.js +273 -2
  25. package/dist/plugins/collapse.js.map +1 -1
  26. package/dist/plugins/cookiebar.js +39 -52
  27. package/dist/plugins/cookiebar.js.map +1 -1
  28. package/dist/plugins/dimmer.js +19 -8
  29. package/dist/plugins/dimmer.js.map +1 -1
  30. package/dist/plugins/dom/data.js +61 -0
  31. package/dist/plugins/dom/data.js.map +1 -0
  32. package/dist/plugins/dom/event-handler.js +296 -0
  33. package/dist/plugins/dom/event-handler.js.map +1 -0
  34. package/dist/plugins/dom/manipulator.js +76 -0
  35. package/dist/plugins/dom/manipulator.js.map +1 -0
  36. package/dist/plugins/dom/selector-engine.js +82 -0
  37. package/dist/plugins/dom/selector-engine.js.map +1 -0
  38. package/dist/plugins/dropdown.js +433 -2
  39. package/dist/plugins/dropdown.js.map +1 -1
  40. package/dist/plugins/fonts-loader.js +9 -1
  41. package/dist/plugins/fonts-loader.js.map +1 -1
  42. package/dist/plugins/form-validate.js +22 -8
  43. package/dist/plugins/form-validate.js.map +1 -1
  44. package/dist/plugins/forward.js +21 -18
  45. package/dist/plugins/forward.js.map +1 -1
  46. package/dist/plugins/header-sticky.js +11 -2
  47. package/dist/plugins/header-sticky.js.map +1 -1
  48. package/dist/plugins/history-back.js +17 -17
  49. package/dist/plugins/history-back.js.map +1 -1
  50. package/dist/plugins/init.js +9 -0
  51. package/dist/plugins/init.js.map +1 -1
  52. package/dist/plugins/input-label.js +14 -3
  53. package/dist/plugins/input-label.js.map +1 -1
  54. package/dist/plugins/input-number.js +13 -4
  55. package/dist/plugins/input-number.js.map +1 -1
  56. package/dist/plugins/input-password.js +48 -37
  57. package/dist/plugins/input-password.js.map +1 -1
  58. package/dist/plugins/input-search-autocomplete.js +9 -11
  59. package/dist/plugins/input-search-autocomplete.js.map +1 -1
  60. package/dist/plugins/input.js +12 -3
  61. package/dist/plugins/input.js.map +1 -1
  62. package/dist/plugins/list.js +23 -12
  63. package/dist/plugins/list.js.map +1 -1
  64. package/dist/plugins/masonry.js +29 -29
  65. package/dist/plugins/masonry.js.map +1 -1
  66. package/dist/plugins/modal.js +358 -2
  67. package/dist/plugins/modal.js.map +1 -1
  68. package/dist/plugins/navbar-collapsible.js +55 -45
  69. package/dist/plugins/navbar-collapsible.js.map +1 -1
  70. package/dist/plugins/navscroll.js +16 -23
  71. package/dist/plugins/navscroll.js.map +1 -1
  72. package/dist/plugins/notification.js +34 -23
  73. package/dist/plugins/notification.js.map +1 -1
  74. package/dist/plugins/offcanvas.js +259 -2
  75. package/dist/plugins/offcanvas.js.map +1 -1
  76. package/dist/plugins/popover.js +76 -2
  77. package/dist/plugins/popover.js.map +1 -1
  78. package/dist/plugins/progress-donut.js +19 -12
  79. package/dist/plugins/progress-donut.js.map +1 -1
  80. package/dist/plugins/scrollspy.js +273 -2
  81. package/dist/plugins/scrollspy.js.map +1 -1
  82. package/dist/plugins/select-autocomplete.js +10 -1
  83. package/dist/plugins/select-autocomplete.js.map +1 -1
  84. package/dist/plugins/sticky.js +21 -18
  85. package/dist/plugins/sticky.js.map +1 -1
  86. package/dist/plugins/tab.js +244 -27
  87. package/dist/plugins/tab.js.map +1 -1
  88. package/dist/plugins/toast.js +203 -2
  89. package/dist/plugins/toast.js.map +1 -1
  90. package/dist/plugins/tooltip.js +602 -2
  91. package/dist/plugins/tooltip.js.map +1 -1
  92. package/dist/plugins/track-focus.js +8 -0
  93. package/dist/plugins/track-focus.js.map +1 -1
  94. package/dist/plugins/transfer.js +11 -16
  95. package/dist/plugins/transfer.js.map +1 -1
  96. package/dist/plugins/upload-dragdrop.js +13 -4
  97. package/dist/plugins/upload-dragdrop.js.map +1 -1
  98. package/dist/plugins/util/backdrop.js +155 -0
  99. package/dist/plugins/util/backdrop.js.map +1 -0
  100. package/dist/plugins/util/component-functions.js +38 -0
  101. package/dist/plugins/util/component-functions.js.map +1 -0
  102. package/dist/plugins/util/config.js +70 -0
  103. package/dist/plugins/util/config.js.map +1 -0
  104. package/dist/plugins/util/cookies.js +8 -0
  105. package/dist/plugins/util/cookies.js.map +1 -1
  106. package/dist/plugins/util/device.js +0 -3
  107. package/dist/plugins/util/device.js.map +1 -1
  108. package/dist/plugins/util/dom.js +8 -0
  109. package/dist/plugins/util/dom.js.map +1 -1
  110. package/dist/plugins/util/focustrap.js +121 -0
  111. package/dist/plugins/util/focustrap.js.map +1 -0
  112. package/dist/plugins/util/index.js +280 -0
  113. package/dist/plugins/util/index.js.map +1 -0
  114. package/dist/plugins/util/observer.js +8 -0
  115. package/dist/plugins/util/observer.js.map +1 -1
  116. package/dist/plugins/util/on-document-scroll.js +20 -9
  117. package/dist/plugins/util/on-document-scroll.js.map +1 -1
  118. package/dist/plugins/util/pageScroll.js +8 -0
  119. package/dist/plugins/util/pageScroll.js.map +1 -1
  120. package/dist/plugins/util/sanitizer.js +115 -0
  121. package/dist/plugins/util/sanitizer.js.map +1 -0
  122. package/dist/plugins/util/scrollbar.js +120 -0
  123. package/dist/plugins/util/scrollbar.js.map +1 -0
  124. package/dist/plugins/util/swipe.js +150 -0
  125. package/dist/plugins/util/swipe.js.map +1 -0
  126. package/dist/plugins/util/template-factory.js +166 -0
  127. package/dist/plugins/util/template-factory.js.map +1 -0
  128. package/dist/plugins/util/tween.js +10 -1
  129. package/dist/plugins/util/tween.js.map +1 -1
  130. package/dist/plugins/util/youtube-video.js +12 -21
  131. package/dist/plugins/util/youtube-video.js.map +1 -1
  132. package/dist/plugins/videoplayer.js +19 -8
  133. package/dist/plugins/videoplayer.js.map +1 -1
  134. package/dist/version.js +10 -3
  135. package/dist/version.js.map +1 -1
  136. package/package.json +6 -7
  137. package/src/js/bootstrap-italia.entry.js +8 -0
  138. package/src/js/bootstrap-italia.esm.js +9 -1
  139. package/src/js/icons.js +8 -0
  140. package/src/js/load-plugin.js +8 -0
  141. package/src/js/plugins/accept-overlay.js +18 -10
  142. package/src/js/plugins/accordion.js +16 -22
  143. package/src/js/plugins/alert.js +66 -2
  144. package/src/js/plugins/{backToTop.js → back-to-top.js} +12 -4
  145. package/src/js/plugins/base-component.js +89 -0
  146. package/src/js/plugins/button.js +57 -2
  147. package/src/js/plugins/carousel-bi.js +18 -9
  148. package/src/js/plugins/carousel.js +444 -2
  149. package/src/js/plugins/collapse.js +272 -2
  150. package/src/js/plugins/cookiebar.js +37 -60
  151. package/src/js/plugins/dimmer.js +18 -8
  152. package/src/js/plugins/dom/data.js +58 -0
  153. package/src/js/plugins/dom/event-handler.js +301 -0
  154. package/src/js/plugins/dom/manipulator.js +75 -0
  155. package/src/js/plugins/dom/selector-engine.js +80 -0
  156. package/src/js/plugins/dropdown.js +432 -2
  157. package/src/js/plugins/fonts-loader.js +9 -1
  158. package/src/js/plugins/form-validate.js +21 -8
  159. package/src/js/plugins/form.js +11 -3
  160. package/src/js/plugins/forward.js +18 -16
  161. package/src/js/plugins/header-sticky.js +10 -2
  162. package/src/js/plugins/history-back.js +14 -14
  163. package/src/js/plugins/init.js +8 -0
  164. package/src/js/plugins/input-label.js +13 -3
  165. package/src/js/plugins/input-number.js +12 -4
  166. package/src/js/plugins/input-password.js +46 -36
  167. package/src/js/plugins/input-search-autocomplete.js +9 -13
  168. package/src/js/plugins/input.js +11 -3
  169. package/src/js/plugins/list.js +22 -12
  170. package/src/js/plugins/masonry.js +26 -27
  171. package/src/js/plugins/modal.js +357 -2
  172. package/src/js/plugins/navbar-collapsible.js +55 -53
  173. package/src/js/plugins/navscroll.js +16 -23
  174. package/src/js/plugins/notification.js +33 -23
  175. package/src/js/plugins/offcanvas.js +258 -2
  176. package/src/js/plugins/popover.js +75 -2
  177. package/src/js/plugins/progress-donut.js +17 -13
  178. package/src/js/plugins/scrollspy.js +272 -2
  179. package/src/js/plugins/select-autocomplete.js +9 -1
  180. package/src/js/plugins/sticky.js +21 -23
  181. package/src/js/plugins/tab.js +243 -27
  182. package/src/js/plugins/toast.js +206 -2
  183. package/src/js/plugins/tooltip.js +601 -2
  184. package/src/js/plugins/track-focus.js +8 -0
  185. package/src/js/plugins/transfer.js +12 -24
  186. package/src/js/plugins/upload-dragdrop.js +12 -4
  187. package/src/js/plugins/util/backdrop.js +153 -0
  188. package/src/js/plugins/util/component-functions.js +36 -0
  189. package/src/js/plugins/util/config.js +68 -0
  190. package/src/js/plugins/util/cookies.js +8 -0
  191. package/src/js/plugins/util/device.js +0 -3
  192. package/src/js/plugins/util/dom.js +8 -0
  193. package/src/js/plugins/util/focustrap.js +119 -0
  194. package/src/js/plugins/util/index.js +317 -0
  195. package/src/js/plugins/util/observer.js +8 -0
  196. package/src/js/plugins/util/on-document-scroll.js +19 -9
  197. package/src/js/plugins/util/pageScroll.js +8 -0
  198. package/src/js/plugins/util/sanitizer.js +112 -0
  199. package/src/js/plugins/util/scrollbar.js +118 -0
  200. package/src/js/plugins/util/swipe.js +148 -0
  201. package/src/js/plugins/util/template-factory.js +164 -0
  202. package/src/js/plugins/util/tween.js +9 -1
  203. package/src/js/plugins/util/youtube-video.js +12 -21
  204. package/src/js/plugins/videoplayer.js +18 -8
  205. package/src/js/version.js +10 -3
  206. package/src/scss/base/_containers.scss +41 -0
  207. package/src/scss/base/_functions.scss +373 -0
  208. package/src/scss/base/_helpers.scss +10 -0
  209. package/src/scss/base/_maps.scss +54 -0
  210. package/src/scss/base/_mixins.scss +44 -0
  211. package/src/scss/base/_reboot.scss +590 -0
  212. package/src/scss/base/_root.scss +73 -0
  213. package/src/scss/base/_transitions.scss +27 -0
  214. package/src/scss/base/_utilities.scss +742 -0
  215. package/src/scss/base/_variables.scss +2123 -0
  216. package/src/scss/base/_version.scss +3 -0
  217. package/src/scss/base/helpers/_clearfix.scss +3 -0
  218. package/src/scss/base/helpers/_color-bg.scss +10 -0
  219. package/src/scss/base/helpers/_colored-links.scss +16 -0
  220. package/src/scss/base/helpers/_position.scss +36 -0
  221. package/src/scss/base/helpers/_ratio.scss +26 -0
  222. package/src/scss/base/helpers/_stacks.scss +15 -0
  223. package/src/scss/base/helpers/_stretched-link.scss +15 -0
  224. package/src/scss/base/helpers/_text-truncation.scss +7 -0
  225. package/src/scss/base/helpers/_visually-hidden.scss +8 -0
  226. package/src/scss/base/helpers/_vr.scss +8 -0
  227. package/src/scss/base/mixins/_alert.scss +15 -0
  228. package/src/scss/base/mixins/_backdrop.scss +18 -0
  229. package/src/scss/base/mixins/_banner.scss +11 -0
  230. package/src/scss/base/mixins/_border-radius.scss +77 -0
  231. package/src/scss/base/mixins/_box-shadow.scss +18 -0
  232. package/src/scss/base/mixins/_breakpoints.scss +127 -0
  233. package/src/scss/base/mixins/_buttons.scss +141 -0
  234. package/src/scss/base/mixins/_caret.scss +64 -0
  235. package/src/scss/base/mixins/_clearfix.scss +9 -0
  236. package/src/scss/base/mixins/_color-scheme.scss +7 -0
  237. package/src/scss/base/mixins/_container.scss +11 -0
  238. package/src/scss/base/mixins/_deprecate.scss +10 -0
  239. package/src/scss/base/mixins/_forms.scss +152 -0
  240. package/src/scss/base/mixins/_gradients.scss +47 -0
  241. package/src/scss/base/mixins/_grid.scss +151 -0
  242. package/src/scss/base/mixins/_image.scss +15 -0
  243. package/src/scss/base/mixins/_list-group.scss +24 -0
  244. package/src/scss/base/mixins/_lists.scss +7 -0
  245. package/src/scss/base/mixins/_pagination.scss +10 -0
  246. package/src/scss/base/mixins/_reset-text.scss +17 -0
  247. package/src/scss/base/mixins/_resize.scss +6 -0
  248. package/src/scss/base/mixins/_table-variants.scss +24 -0
  249. package/src/scss/base/mixins/_text-truncate.scss +8 -0
  250. package/src/scss/base/mixins/_transition.scss +26 -0
  251. package/src/scss/base/mixins/_utilities.scss +96 -0
  252. package/src/scss/base/mixins/_visually-hidden.scss +29 -0
  253. package/src/scss/base/utilities/_api.scss +45 -0
  254. package/src/scss/base/vendor/_rfs.scss +337 -0
  255. package/src/scss/bootstrap-italia.scss +137 -156
  256. package/src/scss/components/_accordion.scss +297 -0
  257. package/src/scss/components/_badge.scss +60 -0
  258. package/src/scss/components/_breadcrumb.scss +95 -0
  259. package/src/scss/components/_button-group.scss +143 -0
  260. package/src/scss/components/_buttons.scss +467 -0
  261. package/src/scss/{custom → components}/_card.scss +228 -0
  262. package/src/scss/{custom → components}/_carousel.scss +225 -3
  263. package/src/scss/components/_dropdown.scss +480 -0
  264. package/src/scss/{custom → components}/_grid.scss +33 -0
  265. package/src/scss/{custom → components}/_gridlist.scss +7 -0
  266. package/src/scss/{custom → components}/_hero.scss +23 -57
  267. package/src/scss/components/_images.scss +48 -0
  268. package/src/scss/{custom → components}/_linklist.scss +0 -1
  269. package/src/scss/components/_list-group.scss +190 -0
  270. package/src/scss/components/_modal.scss +475 -0
  271. package/src/scss/components/_nav.scss +169 -0
  272. package/src/scss/components/_navbar.scss +273 -0
  273. package/src/scss/components/_offcanvas.scss +144 -0
  274. package/src/scss/components/_pagination.scss +108 -0
  275. package/src/scss/components/_placeholders.scss +51 -0
  276. package/src/scss/components/_popover.scss +298 -0
  277. package/src/scss/components/_progress-bars.scss +126 -0
  278. package/src/scss/{custom → components}/_steppers.scss +2 -2
  279. package/src/scss/{custom → components}/_tab.scss +3 -7
  280. package/src/scss/components/_tables.scss +171 -0
  281. package/src/scss/components/_toasts.scss +73 -0
  282. package/src/scss/{custom → components}/_toolbar.scss +19 -12
  283. package/src/scss/components/_tooltip.scss +139 -0
  284. package/src/scss/{custom → components}/_type.scss +92 -0
  285. package/src/scss/forms/_accessible-autocomplete.scss +188 -0
  286. package/src/scss/forms/_floating-labels.scss +75 -0
  287. package/src/scss/forms/_form-check.scss +175 -0
  288. package/src/scss/forms/_form-control.scss +201 -0
  289. package/src/scss/forms/_form-range.scss +95 -0
  290. package/src/scss/{custom → forms}/_form-select.scss +72 -0
  291. package/src/scss/forms/_form-text.scss +11 -0
  292. package/src/scss/{custom → forms}/_forms.scss +8 -12
  293. package/src/scss/forms/_input-group.scss +129 -0
  294. package/src/scss/forms/_labels.scss +36 -0
  295. package/src/scss/forms/_validation.scss +12 -0
  296. package/src/scss/utilities/icons.scss +5 -5
  297. package/types/index.d.ts +4 -1
  298. package/types/plugins/video.ts +33 -0
  299. package/dist/plugins/backToTop.js.map +0 -1
  300. package/src/scss/_functions.scss +0 -38
  301. package/src/scss/_variables.scss +0 -639
  302. package/src/scss/custom/_accessible-autocomplete.scss +0 -30
  303. package/src/scss/custom/_accordion.scss +0 -176
  304. package/src/scss/custom/_badge.scss +0 -29
  305. package/src/scss/custom/_breadcrumb.scss +0 -51
  306. package/src/scss/custom/_buttons.scss +0 -235
  307. package/src/scss/custom/_componente-base.scss +0 -6
  308. package/src/scss/custom/_dropdown.scss +0 -248
  309. package/src/scss/custom/_form-datepicker.scss +0 -604
  310. package/src/scss/custom/_images.scss +0 -10
  311. package/src/scss/custom/_modal.scss +0 -248
  312. package/src/scss/custom/_popover.scss +0 -106
  313. package/src/scss/custom/_progress-bars.scss +0 -70
  314. package/src/scss/custom/_tables.scss +0 -11
  315. package/src/scss/custom/_timepicker.scss +0 -252
  316. package/src/scss/custom/_tooltip.scss +0 -33
  317. package/src/scss/custom/_version.scss +0 -3
  318. package/src/scss/custom/mixins/_buttons.scss +0 -67
  319. package/src/scss/utilities/colors_vars.scss +0 -426
  320. /package/src/scss/{custom → base}/mixins/_text-emphasis.scss +0 -0
  321. /package/src/scss/{custom → components}/_accept-overlay.scss +0 -0
  322. /package/src/scss/{custom → components}/_affix.scss +0 -0
  323. /package/src/scss/{custom → components}/_alert.scss +0 -0
  324. /package/src/scss/{custom → components}/_anchor.scss +0 -0
  325. /package/src/scss/{custom → components}/_avatar.scss +0 -0
  326. /package/src/scss/{custom → components}/_back-to-top.scss +0 -0
  327. /package/src/scss/{custom → components}/_bottomnav.scss +0 -0
  328. /package/src/scss/{custom → components}/_calendar.scss +0 -0
  329. /package/src/scss/{custom → components}/_callout.scss +0 -0
  330. /package/src/scss/{custom → components}/_chips.scss +0 -0
  331. /package/src/scss/{custom → components}/_code.scss +0 -0
  332. /package/src/scss/{custom → components}/_cookiebar.scss +0 -0
  333. /package/src/scss/{custom → components}/_dimmer.scss +0 -0
  334. /package/src/scss/{custom → components}/_figcaption.scss +0 -0
  335. /package/src/scss/{custom → components}/_font.scss +0 -0
  336. /package/src/scss/{custom → components}/_footer.scss +0 -0
  337. /package/src/scss/{custom → components}/_forward.scss +0 -0
  338. /package/src/scss/{custom → components}/_header.scss +0 -0
  339. /package/src/scss/{custom → components}/_headercenter.scss +0 -0
  340. /package/src/scss/{custom → components}/_headercentertheme.scss +0 -0
  341. /package/src/scss/{custom → components}/_headernavbar.scss +0 -0
  342. /package/src/scss/{custom → components}/_headernavbartheme.scss +0 -0
  343. /package/src/scss/{custom → components}/_headerslim.scss +0 -0
  344. /package/src/scss/{custom → components}/_headerslimtheme.scss +0 -0
  345. /package/src/scss/{custom → components}/_imgresponsive.scss +0 -0
  346. /package/src/scss/{custom → components}/_list.scss +0 -0
  347. /package/src/scss/{custom → components}/_map.scss +0 -0
  348. /package/src/scss/{custom → components}/_masonry-loader.scss +0 -0
  349. /package/src/scss/{custom → components}/_megamenu.scss +0 -0
  350. /package/src/scss/{custom → components}/_navigation.scss +0 -0
  351. /package/src/scss/{custom → components}/_navigationtheme.scss +0 -0
  352. /package/src/scss/{custom → components}/_navscroll.scss +0 -0
  353. /package/src/scss/{custom → components}/_navscrolltheme.scss +0 -0
  354. /package/src/scss/{custom → components}/_notifications.scss +0 -0
  355. /package/src/scss/{custom → components}/_overlay-panel.scss +0 -0
  356. /package/src/scss/{custom → components}/_page-scroll.scss +0 -0
  357. /package/src/scss/{custom → components}/_pager.scss +0 -0
  358. /package/src/scss/{custom → components}/_point-list.scss +0 -0
  359. /package/src/scss/{custom → components}/_print.scss +0 -0
  360. /package/src/scss/{custom → components}/_progress-donuts.scss +0 -0
  361. /package/src/scss/{custom → components}/_progress-spinners.scss +0 -0
  362. /package/src/scss/{custom → components}/_rating-list.scss +0 -0
  363. /package/src/scss/{custom → components}/_rating.scss +0 -0
  364. /package/src/scss/{custom → components}/_sections.scss +0 -0
  365. /package/src/scss/{custom → components}/_sidebar.scss +0 -0
  366. /package/src/scss/{custom → components}/_sidebarthemes.scss +0 -0
  367. /package/src/scss/{custom → components}/_skiplinks.scss +0 -0
  368. /package/src/scss/{custom → components}/_sticky.scss +0 -0
  369. /package/src/scss/{custom → components}/_thumbnav.scss +0 -0
  370. /package/src/scss/{custom → components}/_timeline.scss +0 -0
  371. /package/src/scss/{custom → components}/_videoplayer.scss +0 -0
  372. /package/src/scss/{custom → forms}/_autocomplete.scss +0 -0
  373. /package/src/scss/{custom → forms}/_form-input-file.scss +0 -0
  374. /package/src/scss/{custom → forms}/_form-input-number.scss +0 -0
  375. /package/src/scss/{custom → forms}/_form-input-upload.scss +0 -0
  376. /package/src/scss/{custom → forms}/_form-password.scss +0 -0
  377. /package/src/scss/{custom → forms}/_form-toggles.scss +0 -0
  378. /package/src/scss/{custom → forms}/_form-transfer.scss +0 -0
  379. /package/src/scss/{custom → forms}/_just-validate.scss +0 -0
  380. /package/types/plugins/{backToTop.d.ts → back-to-top.d.ts} +0 -0
@@ -0,0 +1,121 @@
1
+ import EventHandler from '../dom/event-handler.js';
2
+ import SelectorEngine from '../dom/selector-engine.js';
3
+ import Config from './config.js';
4
+
5
+ /**
6
+ * --------------------------------------------------------------------------
7
+ * Bootstrap Italia (https://italia.github.io/bootstrap-italia/)
8
+ * Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS
9
+ * Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)
10
+ * This a fork of Bootstrap: Initial license and original file name below
11
+ * Bootstrap (v5.2.3): util/focustrap.js
12
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
13
+ * --------------------------------------------------------------------------
14
+ */
15
+
16
+
17
+ /**
18
+ * Constants
19
+ */
20
+
21
+ const NAME = 'focustrap';
22
+ const DATA_KEY = 'bs.focustrap';
23
+ const EVENT_KEY = `.${DATA_KEY}`;
24
+ const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
25
+ const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`;
26
+
27
+ const TAB_KEY = 'Tab';
28
+ const TAB_NAV_FORWARD = 'forward';
29
+ const TAB_NAV_BACKWARD = 'backward';
30
+
31
+ const Default = {
32
+ autofocus: true,
33
+ trapElement: null, // The element to trap focus inside of
34
+ };
35
+
36
+ const DefaultType = {
37
+ autofocus: 'boolean',
38
+ trapElement: 'element',
39
+ };
40
+
41
+ /**
42
+ * Class definition
43
+ */
44
+
45
+ class FocusTrap extends Config {
46
+ constructor(config) {
47
+ super();
48
+ this._config = this._getConfig(config);
49
+ this._isActive = false;
50
+ this._lastTabNavDirection = null;
51
+ }
52
+
53
+ // Getters
54
+ static get Default() {
55
+ return Default
56
+ }
57
+
58
+ static get DefaultType() {
59
+ return DefaultType
60
+ }
61
+
62
+ static get NAME() {
63
+ return NAME
64
+ }
65
+
66
+ // Public
67
+ activate() {
68
+ if (this._isActive) {
69
+ return
70
+ }
71
+
72
+ if (this._config.autofocus) {
73
+ this._config.trapElement.focus();
74
+ }
75
+
76
+ EventHandler.off(document, EVENT_KEY); // guard against infinite focus loop
77
+ EventHandler.on(document, EVENT_FOCUSIN, (event) => this._handleFocusin(event));
78
+ EventHandler.on(document, EVENT_KEYDOWN_TAB, (event) => this._handleKeydown(event));
79
+
80
+ this._isActive = true;
81
+ }
82
+
83
+ deactivate() {
84
+ if (!this._isActive) {
85
+ return
86
+ }
87
+
88
+ this._isActive = false;
89
+ EventHandler.off(document, EVENT_KEY);
90
+ }
91
+
92
+ // Private
93
+ _handleFocusin(event) {
94
+ const { trapElement } = this._config;
95
+
96
+ if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {
97
+ return
98
+ }
99
+
100
+ const elements = SelectorEngine.focusableChildren(trapElement);
101
+
102
+ if (elements.length === 0) {
103
+ trapElement.focus();
104
+ } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {
105
+ elements[elements.length - 1].focus();
106
+ } else {
107
+ elements[0].focus();
108
+ }
109
+ }
110
+
111
+ _handleKeydown(event) {
112
+ if (event.key !== TAB_KEY) {
113
+ return
114
+ }
115
+
116
+ this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;
117
+ }
118
+ }
119
+
120
+ export { FocusTrap as default };
121
+ //# sourceMappingURL=focustrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focustrap.js","sources":["../../../src/js/plugins/util/focustrap.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap Italia (https://italia.github.io/bootstrap-italia/)\n * Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS\n * Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)\n * This a fork of Bootstrap: Initial license and original file name below\n * Bootstrap (v5.2.3): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport Config from './config'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n autofocus: true,\n trapElement: null, // The element to trap focus inside of\n}\n\nconst DefaultType = {\n autofocus: 'boolean',\n trapElement: 'element',\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isActive = false\n this._lastTabNavDirection = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return\n }\n\n if (this._config.autofocus) {\n this._config.trapElement.focus()\n }\n\n EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, (event) => this._handleFocusin(event))\n EventHandler.on(document, EVENT_KEYDOWN_TAB, (event) => this._handleKeydown(event))\n\n this._isActive = true\n }\n\n deactivate() {\n if (!this._isActive) {\n return\n }\n\n this._isActive = false\n EventHandler.off(document, EVENT_KEY)\n }\n\n // Private\n _handleFocusin(event) {\n const { trapElement } = this._config\n\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement)\n\n if (elements.length === 0) {\n trapElement.focus()\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus()\n } else {\n elements[0].focus()\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n }\n}\n\nexport default FocusTrap\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,280 @@
1
+ /**
2
+ * --------------------------------------------------------------------------
3
+ * Bootstrap Italia (https://italia.github.io/bootstrap-italia/)
4
+ * Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS
5
+ * Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)
6
+ * This a fork of Bootstrap: Initial license and original file name below
7
+ * Bootstrap (v5.2.3): util/index.js
8
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
9
+ * --------------------------------------------------------------------------
10
+ */
11
+
12
+ const MAX_UID = 1_000_000;
13
+ const MILLISECONDS_MULTIPLIER = 1000;
14
+ const TRANSITION_END = 'transitionend';
15
+
16
+ // Shout-out Angus Croll (https://goo.gl/pxwQGp)
17
+ const toType = (object) => {
18
+ if (object === null || object === undefined) {
19
+ return `${object}`
20
+ }
21
+
22
+ return Object.prototype.toString
23
+ .call(object)
24
+ .match(/\s([a-z]+)/i)[1]
25
+ .toLowerCase()
26
+ };
27
+
28
+ /**
29
+ * Public Util API
30
+ */
31
+
32
+ const getUID = (prefix) => {
33
+ do {
34
+ prefix += Math.floor(Math.random() * MAX_UID);
35
+ } while (document.getElementById(prefix))
36
+
37
+ return prefix
38
+ };
39
+
40
+ const getSelector = (element) => {
41
+ let selector = element.getAttribute('data-bs-target');
42
+
43
+ if (!selector || selector === '#') {
44
+ let hrefAttribute = element.getAttribute('href');
45
+
46
+ // The only valid content that could double as a selector are IDs or classes,
47
+ // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
48
+ // `document.querySelector` will rightfully complain it is invalid.
49
+ // See https://github.com/twbs/bootstrap/issues/32273
50
+ if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {
51
+ return null
52
+ }
53
+
54
+ // Just in case some CMS puts out a full URL with the anchor appended
55
+ if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {
56
+ hrefAttribute = `#${hrefAttribute.split('#')[1]}`;
57
+ }
58
+
59
+ selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;
60
+ }
61
+
62
+ return selector
63
+ };
64
+
65
+ const getSelectorFromElement = (element) => {
66
+ const selector = getSelector(element);
67
+
68
+ if (selector) {
69
+ return document.querySelector(selector) ? selector : null
70
+ }
71
+
72
+ return null
73
+ };
74
+
75
+ const getElementFromSelector = (element) => {
76
+ const selector = getSelector(element);
77
+
78
+ return selector ? document.querySelector(selector) : null
79
+ };
80
+
81
+ const getTransitionDurationFromElement = (element) => {
82
+ if (!element) {
83
+ return 0
84
+ }
85
+
86
+ // Get transition-duration of the element
87
+ let { transitionDuration, transitionDelay } = window.getComputedStyle(element);
88
+
89
+ const floatTransitionDuration = Number.parseFloat(transitionDuration);
90
+ const floatTransitionDelay = Number.parseFloat(transitionDelay);
91
+
92
+ // Return 0 if element or transition duration is not found
93
+ if (!floatTransitionDuration && !floatTransitionDelay) {
94
+ return 0
95
+ }
96
+
97
+ // If multiple durations are defined, take the first
98
+ transitionDuration = transitionDuration.split(',')[0];
99
+ transitionDelay = transitionDelay.split(',')[0];
100
+
101
+ return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER
102
+ };
103
+
104
+ const triggerTransitionEnd = (element) => {
105
+ element.dispatchEvent(new Event(TRANSITION_END));
106
+ };
107
+
108
+ const isElement = (object) => {
109
+ if (!object || typeof object !== 'object') {
110
+ return false
111
+ }
112
+
113
+ return typeof object.nodeType !== 'undefined'
114
+ };
115
+
116
+ const getElement = (object) => {
117
+ if (isElement(object)) {
118
+ return object
119
+ }
120
+
121
+ if (typeof object === 'string' && object.length > 0) {
122
+ return document.querySelector(object)
123
+ }
124
+
125
+ return null
126
+ };
127
+
128
+ const isVisible = (element) => {
129
+ if (!isElement(element) || element.getClientRects().length === 0) {
130
+ return false
131
+ }
132
+
133
+ const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';
134
+ // Handle `details` element as its content may falsie appear visible when it is closed
135
+ const closedDetails = element.closest('details:not([open])');
136
+
137
+ if (!closedDetails) {
138
+ return elementIsVisible
139
+ }
140
+
141
+ if (closedDetails !== element) {
142
+ const summary = element.closest('summary');
143
+ if (summary && summary.parentNode !== closedDetails) {
144
+ return false
145
+ }
146
+
147
+ if (summary === null) {
148
+ return false
149
+ }
150
+ }
151
+
152
+ return elementIsVisible
153
+ };
154
+
155
+ const isDisabled = (element) => {
156
+ if (!element || element.nodeType !== Node.ELEMENT_NODE) {
157
+ return true
158
+ }
159
+
160
+ if (element.classList.contains('disabled')) {
161
+ return true
162
+ }
163
+
164
+ if (typeof element.disabled !== 'undefined') {
165
+ return element.disabled
166
+ }
167
+
168
+ return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'
169
+ };
170
+
171
+ const findShadowRoot = (element) => {
172
+ if (!document.documentElement.attachShadow) {
173
+ return null
174
+ }
175
+
176
+ // Can find the shadow root otherwise it'll return the document
177
+ if (typeof element.getRootNode === 'function') {
178
+ const root = element.getRootNode();
179
+ return root instanceof ShadowRoot ? root : null
180
+ }
181
+
182
+ if (element instanceof ShadowRoot) {
183
+ return element
184
+ }
185
+
186
+ // when we don't find a shadow root
187
+ if (!element.parentNode) {
188
+ return null
189
+ }
190
+
191
+ return findShadowRoot(element.parentNode)
192
+ };
193
+
194
+ const noop = () => {};
195
+
196
+ /**
197
+ * Trick to restart an element's animation
198
+ *
199
+ * @param {HTMLElement} element
200
+ * @return void
201
+ *
202
+ * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
203
+ */
204
+ const reflow = (element) => {
205
+ element.offsetHeight;
206
+ };
207
+
208
+ const isRTL = () => {
209
+ if (typeof window !== 'undefined' && typeof document !== 'undefined') {
210
+ return document.documentElement.dir === 'rtl'
211
+ } else {
212
+ return false
213
+ }
214
+ };
215
+
216
+ const execute = (callback) => {
217
+ if (typeof callback === 'function') {
218
+ callback();
219
+ }
220
+ };
221
+
222
+ const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
223
+ if (!waitForTransition) {
224
+ execute(callback);
225
+ return
226
+ }
227
+
228
+ const durationPadding = 5;
229
+ const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
230
+
231
+ let called = false;
232
+
233
+ const handler = ({ target }) => {
234
+ if (target !== transitionElement) {
235
+ return
236
+ }
237
+
238
+ called = true;
239
+ transitionElement.removeEventListener(TRANSITION_END, handler);
240
+ execute(callback);
241
+ };
242
+
243
+ transitionElement.addEventListener(TRANSITION_END, handler);
244
+ setTimeout(() => {
245
+ if (!called) {
246
+ triggerTransitionEnd(transitionElement);
247
+ }
248
+ }, emulatedDuration);
249
+ };
250
+
251
+ /**
252
+ * Return the previous/next element of a list.
253
+ *
254
+ * @param {array} list The list of elements
255
+ * @param activeElement The active element
256
+ * @param shouldGetNext Choose to get next or previous element
257
+ * @param isCycleAllowed
258
+ * @return {Element|elem} The proper element
259
+ */
260
+ const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {
261
+ const listLength = list.length;
262
+ let index = list.indexOf(activeElement);
263
+
264
+ // if the element does not exist in the list return an element
265
+ // depending on the direction and if cycle is allowed
266
+ if (index === -1) {
267
+ return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]
268
+ }
269
+
270
+ index += shouldGetNext ? 1 : -1;
271
+
272
+ if (isCycleAllowed) {
273
+ index = (index + listLength) % listLength;
274
+ }
275
+
276
+ return list[Math.max(0, Math.min(index, listLength - 1))]
277
+ };
278
+
279
+ export { execute, executeAfterTransition, findShadowRoot, getElement, getElementFromSelector, getNextActiveElement, getSelectorFromElement, getTransitionDurationFromElement, getUID, isDisabled, isElement, isRTL, isVisible, noop, reflow, toType, triggerTransitionEnd };
280
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/js/plugins/util/index.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap Italia (https://italia.github.io/bootstrap-italia/)\n * Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS\n * Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)\n * This a fork of Bootstrap: Initial license and original file name below\n * Bootstrap (v5.2.3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = (object) => {\n if (object === null || object === undefined) {\n return `${object}`\n }\n\n return Object.prototype.toString\n .call(object)\n .match(/\\s([a-z]+)/i)[1]\n .toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = (prefix) => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = (element) => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = (element) => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = (element) => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = (element) => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = (element) => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = (object) => {\n if (!object || typeof object !== 'object') {\n return false\n }\n\n return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = (object) => {\n if (isElement(object)) {\n return object\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(object)\n }\n\n return null\n}\n\nconst isVisible = (element) => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])')\n\n if (!closedDetails) {\n return elementIsVisible\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary')\n if (summary && summary.parentNode !== closedDetails) {\n return false\n }\n\n if (summary === null) {\n return false\n }\n }\n\n return elementIsVisible\n}\n\nconst isDisabled = (element) => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = (element) => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = (element) => {\n element.offsetHeight\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = (callback) => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback()\n }\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => {\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n return document.documentElement.dir === 'rtl'\n } else {\n return false\n }\n}\n\nconst execute = (callback) => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n }\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n execute,\n executeAfterTransition,\n findShadowRoot,\n getElement,\n getElementFromSelector,\n getNextActiveElement,\n getSelectorFromElement,\n getTransitionDurationFromElement,\n getUID,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n onDOMContentLoaded,\n reflow,\n triggerTransitionEnd,\n toType,\n}\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,11 @@
1
+ /**
2
+ * --------------------------------------------------------------------------
3
+ * Bootstrap Italia (https://italia.github.io/bootstrap-italia/)
4
+ * Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS
5
+ * Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)
6
+ * --------------------------------------------------------------------------
7
+ */
8
+
1
9
  /**
2
10
  * Mutation CSS Class Observer Object
3
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"observer.js","sources":["../../../src/js/plugins/util/observer.js"],"sourcesContent":["/**\n * Mutation CSS Class Observer Object\n */\n//https://stackoverflow.com/a/53914092\n\nclass CssClassObserver {\n constructor(targetNode, classToWatch, classAddedCallback, classRemovedCallback, ignoreToggle) {\n this.targetNode = targetNode\n this.classToWatch = classToWatch\n this.classAddedCallback = classAddedCallback\n this.classRemovedCallback = classRemovedCallback\n this.observer = null\n this.lastClassState = targetNode.classList.contains(this.classToWatch)\n this.ignoreToggle = !!ignoreToggle\n\n this.init()\n }\n\n init() {\n this.observer = new MutationObserver((mutationsList) => this.mutationCallback(mutationsList))\n this.observe()\n }\n\n observe() {\n this.observer.observe(this.targetNode, { attributes: true })\n }\n\n disconnect() {\n this.observer.disconnect()\n }\n\n mutationCallback(mutationsList) {\n for (let mutation of mutationsList) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\n let currentClassState = mutation.target.classList.contains(this.classToWatch)\n if (this.ignoreToggle || this.lastClassState !== currentClassState) {\n this.lastClassState = currentClassState\n if (currentClassState) {\n if (typeof this.classAddedCallback === 'function') {\n this.classAddedCallback()\n }\n } else if (typeof this.classRemovedCallback === 'function') {\n this.classRemovedCallback()\n }\n }\n }\n }\n }\n}\n\n/**\n * Mutation Content Class Observer Object\n */\n\nclass ContentObserver {\n constructor(targetNode, contentSelector, contentAddedCallback, contentRemovedCallback) {\n this.targetNode = targetNode\n this.contentSelector = contentSelector\n this.contentAddedCallback = contentAddedCallback\n this.contentRemovedCallback = contentRemovedCallback\n this.observer = null\n\n this.init()\n }\n\n //public\n\n init() {\n this.observer = new MutationObserver((mutationsList) => this.mutationCallback(mutationsList))\n this.observe()\n }\n\n observe() {\n this.observer.observe(this.targetNode, { childList: true, subtree: true })\n }\n\n disconnect() {\n this.observer.disconnect()\n }\n\n mutationCallback(mutationsList) {\n for (let mutation of mutationsList) {\n if (mutation.type === 'childList') {\n mutation.addedNodes.forEach((node) => {\n this._callbackExec(node)\n })\n mutation.removedNodes.forEach((node) => {\n this._callbackExec(node, true)\n })\n }\n }\n }\n\n //private\n _callbackExec(node, actionRemove) {\n const foundNodes = node.matches && node.matches(this.contentSelector) ? [node] : node.querySelectorAll ? node.querySelectorAll(this.contentSelector) : null\n const callback =\n actionRemove && typeof this.contentRemovedCallback === 'function'\n ? this.contentRemovedCallback\n : typeof this.contentAddedCallback === 'function'\n ? this.contentAddedCallback\n : null\n if (foundNodes && callback) {\n foundNodes.forEach((node) => callback(node))\n }\n }\n}\n\nexport { CssClassObserver, ContentObserver }\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observer.js","sources":["../../../src/js/plugins/util/observer.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap Italia (https://italia.github.io/bootstrap-italia/)\n * Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS\n * Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Mutation CSS Class Observer Object\n */\n//https://stackoverflow.com/a/53914092\n\nclass CssClassObserver {\n constructor(targetNode, classToWatch, classAddedCallback, classRemovedCallback, ignoreToggle) {\n this.targetNode = targetNode\n this.classToWatch = classToWatch\n this.classAddedCallback = classAddedCallback\n this.classRemovedCallback = classRemovedCallback\n this.observer = null\n this.lastClassState = targetNode.classList.contains(this.classToWatch)\n this.ignoreToggle = !!ignoreToggle\n\n this.init()\n }\n\n init() {\n this.observer = new MutationObserver((mutationsList) => this.mutationCallback(mutationsList))\n this.observe()\n }\n\n observe() {\n this.observer.observe(this.targetNode, { attributes: true })\n }\n\n disconnect() {\n this.observer.disconnect()\n }\n\n mutationCallback(mutationsList) {\n for (let mutation of mutationsList) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\n let currentClassState = mutation.target.classList.contains(this.classToWatch)\n if (this.ignoreToggle || this.lastClassState !== currentClassState) {\n this.lastClassState = currentClassState\n if (currentClassState) {\n if (typeof this.classAddedCallback === 'function') {\n this.classAddedCallback()\n }\n } else if (typeof this.classRemovedCallback === 'function') {\n this.classRemovedCallback()\n }\n }\n }\n }\n }\n}\n\n/**\n * Mutation Content Class Observer Object\n */\n\nclass ContentObserver {\n constructor(targetNode, contentSelector, contentAddedCallback, contentRemovedCallback) {\n this.targetNode = targetNode\n this.contentSelector = contentSelector\n this.contentAddedCallback = contentAddedCallback\n this.contentRemovedCallback = contentRemovedCallback\n this.observer = null\n\n this.init()\n }\n\n //public\n\n init() {\n this.observer = new MutationObserver((mutationsList) => this.mutationCallback(mutationsList))\n this.observe()\n }\n\n observe() {\n this.observer.observe(this.targetNode, { childList: true, subtree: true })\n }\n\n disconnect() {\n this.observer.disconnect()\n }\n\n mutationCallback(mutationsList) {\n for (let mutation of mutationsList) {\n if (mutation.type === 'childList') {\n mutation.addedNodes.forEach((node) => {\n this._callbackExec(node)\n })\n mutation.removedNodes.forEach((node) => {\n this._callbackExec(node, true)\n })\n }\n }\n }\n\n //private\n _callbackExec(node, actionRemove) {\n const foundNodes = node.matches && node.matches(this.contentSelector) ? [node] : node.querySelectorAll ? node.querySelectorAll(this.contentSelector) : null\n const callback =\n actionRemove && typeof this.contentRemovedCallback === 'function'\n ? this.contentRemovedCallback\n : typeof this.contentAddedCallback === 'function'\n ? this.contentAddedCallback\n : null\n if (foundNodes && callback) {\n foundNodes.forEach((node) => callback(node))\n }\n }\n}\n\nexport { CssClassObserver, ContentObserver }\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,14 @@
1
1
  import { v4 } from 'uuid';
2
2
 
3
+ /**
4
+ * --------------------------------------------------------------------------
5
+ * Bootstrap Italia (https://italia.github.io/bootstrap-italia/)
6
+ * Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS
7
+ * Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)
8
+ * --------------------------------------------------------------------------
9
+ */
10
+
11
+
3
12
  let ticking = false;
4
13
  let callbacks = [];
5
14
 
@@ -29,15 +38,17 @@ const onDocumentScroll = (callback) => {
29
38
  return
30
39
  }
31
40
  if (!callbacks.length) {
32
- document.addEventListener('scroll', (evt) => {
33
- if (!ticking) {
34
- window.requestAnimationFrame(() => {
35
- callbacks.forEach((cbObj) => cbObj.cb._execute(evt));
36
- ticking = false;
37
- });
38
- ticking = true;
39
- }
40
- });
41
+ if (typeof window !== 'undefined' && typeof document !== 'undefined') {
42
+ document.addEventListener('scroll', (evt) => {
43
+ if (!ticking) {
44
+ window.requestAnimationFrame(() => {
45
+ callbacks.forEach((cbObj) => cbObj.cb._execute(evt));
46
+ ticking = false;
47
+ });
48
+ ticking = true;
49
+ }
50
+ });
51
+ }
41
52
  }
42
53
 
43
54
  if (typeof callback === 'function') {
@@ -1 +1 @@
1
- {"version":3,"file":"on-document-scroll.js","sources":["../../../src/js/plugins/util/on-document-scroll.js"],"sourcesContent":["import { v4 as uuidv4 } from 'uuid'\n\nlet ticking = false\nlet callbacks = []\n\nclass ScrollCallback {\n constructor(id, callback) {\n this.id = id\n this._callback = callback\n }\n\n //Public\n dispose() {\n removeCallBack(this.id)\n }\n\n //Private\n _execute(data) {\n this._callback(data)\n }\n}\n\nconst removeCallBack = (id) => {\n callbacks = callbacks.filter((cb) => cb.id !== id)\n}\n\nconst onDocumentScroll = (callback) => {\n if (typeof document === 'undefined') {\n return\n }\n if (!callbacks.length) {\n document.addEventListener('scroll', (evt) => {\n if (!ticking) {\n window.requestAnimationFrame(() => {\n callbacks.forEach((cbObj) => cbObj.cb._execute(evt))\n ticking = false\n })\n ticking = true\n }\n })\n }\n\n if (typeof callback === 'function') {\n const newCb = new ScrollCallback(uuidv4(), callback)\n callbacks.push({\n id: newCb.id,\n cb: newCb,\n })\n return newCb\n }\n\n console.error('[onDocumentScroll] the provided data has to be of type function')\n return null\n}\n\nexport default onDocumentScroll\n"],"names":["uuidv4"],"mappings":";;AAEA,IAAI,OAAO,GAAG;AACd,IAAI,SAAS,GAAG;;AAEhB,MAAM,cAAc,CAAC;AACrB,EAAE,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE;AAC5B,IAAI,IAAI,CAAC,EAAE,GAAG;AACd,IAAI,IAAI,CAAC,SAAS,GAAG;AACrB;;AAEA;AACA,EAAE,OAAO,GAAG;AACZ,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;AAC1B;;AAEA;AACA,EAAE,QAAQ,CAAC,IAAI,EAAE;AACjB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI;AACvB;AACA;;AAEA,MAAM,cAAc,GAAG,CAAC,EAAE,KAAK;AAC/B,EAAE,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE;AACnD;;AAEK,MAAC,gBAAgB,GAAG,CAAC,QAAQ,KAAK;AACvC,EAAE,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACvC,IAAI;AACJ;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACzB,IAAI,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK;AACjD,MAAM,IAAI,CAAC,OAAO,EAAE;AACpB,QAAQ,MAAM,CAAC,qBAAqB,CAAC,MAAM;AAC3C,UAAU,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC7D,UAAU,OAAO,GAAG;AACpB,SAAS;AACT,QAAQ,OAAO,GAAG;AAClB;AACA,KAAK;AACL;;AAEA,EAAE,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AACtC,IAAI,MAAM,KAAK,GAAG,IAAI,cAAc,CAACA,EAAM,EAAE,EAAE,QAAQ;AACvD,IAAI,SAAS,CAAC,IAAI,CAAC;AACnB,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE;AAClB,MAAM,EAAE,EAAE,KAAK;AACf,KAAK;AACL,IAAI,OAAO;AACX;;AAEA,EAAE,OAAO,CAAC,KAAK,CAAC,iEAAiE;AACjF,EAAE,OAAO;AACT;;;;"}
1
+ {"version":3,"file":"on-document-scroll.js","sources":["../../../src/js/plugins/util/on-document-scroll.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap Italia (https://italia.github.io/bootstrap-italia/)\n * Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS\n * Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { v4 as uuidv4 } from 'uuid'\n\nlet ticking = false\nlet callbacks = []\n\nclass ScrollCallback {\n constructor(id, callback) {\n this.id = id\n this._callback = callback\n }\n\n //Public\n dispose() {\n removeCallBack(this.id)\n }\n\n //Private\n _execute(data) {\n this._callback(data)\n }\n}\n\nconst removeCallBack = (id) => {\n callbacks = callbacks.filter((cb) => cb.id !== id)\n}\n\nconst onDocumentScroll = (callback) => {\n if (typeof document === 'undefined') {\n return\n }\n if (!callbacks.length) {\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n document.addEventListener('scroll', (evt) => {\n if (!ticking) {\n window.requestAnimationFrame(() => {\n callbacks.forEach((cbObj) => cbObj.cb._execute(evt))\n ticking = false\n })\n ticking = true\n }\n })\n }\n }\n\n if (typeof callback === 'function') {\n const newCb = new ScrollCallback(uuidv4(), callback)\n callbacks.push({\n id: newCb.id,\n cb: newCb,\n })\n return newCb\n }\n\n console.error('[onDocumentScroll] the provided data has to be of type function')\n return null\n}\n\nexport default onDocumentScroll\n"],"names":["uuidv4"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAIA,IAAI,OAAO,GAAG;AACd,IAAI,SAAS,GAAG;;AAEhB,MAAM,cAAc,CAAC;AACrB,EAAE,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE;AAC5B,IAAI,IAAI,CAAC,EAAE,GAAG;AACd,IAAI,IAAI,CAAC,SAAS,GAAG;AACrB;;AAEA;AACA,EAAE,OAAO,GAAG;AACZ,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;AAC1B;;AAEA;AACA,EAAE,QAAQ,CAAC,IAAI,EAAE;AACjB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI;AACvB;AACA;;AAEA,MAAM,cAAc,GAAG,CAAC,EAAE,KAAK;AAC/B,EAAE,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE;AACnD;;AAEK,MAAC,gBAAgB,GAAG,CAAC,QAAQ,KAAK;AACvC,EAAE,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACvC,IAAI;AACJ;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACzB,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AAC1E,MAAM,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK;AACnD,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,UAAU,MAAM,CAAC,qBAAqB,CAAC,MAAM;AAC7C,YAAY,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC/D,YAAY,OAAO,GAAG;AACtB,WAAW;AACX,UAAU,OAAO,GAAG;AACpB;AACA,OAAO;AACP;AACA;;AAEA,EAAE,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AACtC,IAAI,MAAM,KAAK,GAAG,IAAI,cAAc,CAACA,EAAM,EAAE,EAAE,QAAQ;AACvD,IAAI,SAAS,CAAC,IAAI,CAAC;AACnB,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE;AAClB,MAAM,EAAE,EAAE,KAAK;AACf,KAAK;AACL,IAAI,OAAO;AACX;;AAEA,EAAE,OAAO,CAAC,KAAK,CAAC,iEAAiE;AACjF,EAAE,OAAO;AACT;;;;"}
@@ -1,3 +1,11 @@
1
+ /**
2
+ * --------------------------------------------------------------------------
3
+ * Bootstrap Italia (https://italia.github.io/bootstrap-italia/)
4
+ * Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS
5
+ * Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)
6
+ * --------------------------------------------------------------------------
7
+ */
8
+
1
9
  /**
2
10
  * Prevents page scroll
3
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"pageScroll.js","sources":["../../../src/js/plugins/util/pageScroll.js"],"sourcesContent":["/**\n * Prevents page scroll\n */\n\nconst CLASS_SCROLL_DISABLED = 'pagescroll-scroll-disabled'\n\nlet disabled = false\nlet currentScrollPos = typeof document === 'undefined' ? 0 : document.scrollingElement.scrollTop\nconst htmlContainer = typeof document === 'undefined' ? null : document.querySelector('html')\n\nexport function disablePageScroll() {\n if (typeof document === 'undefined') {\n return\n }\n disabled = true\n currentScrollPos = document.scrollingElement.scrollTop\n htmlContainer.classList.add(CLASS_SCROLL_DISABLED)\n}\n\nexport function enablePageScroll() {\n if (typeof document === 'undefined') {\n return\n }\n disabled = false\n htmlContainer.classList.remove(CLASS_SCROLL_DISABLED)\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('scroll', () => {\n if (disabled) {\n document.scrollingElement.scrollTop = currentScrollPos\n }\n })\n}\n"],"names":[],"mappings":"AAAA;AACA;AACA;;AAEA,MAAM,qBAAqB,GAAG;;AAE9B,IAAI,QAAQ,GAAG;AACf,IAAI,gBAAgB,GAAG,OAAO,QAAQ,KAAK,WAAW,GAAG,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC;AACvF,MAAM,aAAa,GAAG,OAAO,QAAQ,KAAK,WAAW,GAAG,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM;;AAErF,SAAS,iBAAiB,GAAG;AACpC,EAAE,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACvC,IAAI;AACJ;AACA,EAAE,QAAQ,GAAG;AACb,EAAE,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;AAC/C,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB;AACnD;;AAEO,SAAS,gBAAgB,GAAG;AACnC,EAAE,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACvC,IAAI;AACJ;AACA,EAAE,QAAQ,GAAG;AACb,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB;AACtD;;AAEA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACrC,EAAE,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM;AAC5C,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,QAAQ,CAAC,gBAAgB,CAAC,SAAS,GAAG;AAC5C;AACA,GAAG;AACH;;;;"}
1
+ {"version":3,"file":"pageScroll.js","sources":["../../../src/js/plugins/util/pageScroll.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap Italia (https://italia.github.io/bootstrap-italia/)\n * Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS\n * Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Prevents page scroll\n */\n\nconst CLASS_SCROLL_DISABLED = 'pagescroll-scroll-disabled'\n\nlet disabled = false\nlet currentScrollPos = typeof document === 'undefined' ? 0 : document.scrollingElement.scrollTop\nconst htmlContainer = typeof document === 'undefined' ? null : document.querySelector('html')\n\nexport function disablePageScroll() {\n if (typeof document === 'undefined') {\n return\n }\n disabled = true\n currentScrollPos = document.scrollingElement.scrollTop\n htmlContainer.classList.add(CLASS_SCROLL_DISABLED)\n}\n\nexport function enablePageScroll() {\n if (typeof document === 'undefined') {\n return\n }\n disabled = false\n htmlContainer.classList.remove(CLASS_SCROLL_DISABLED)\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('scroll', () => {\n if (disabled) {\n document.scrollingElement.scrollTop = currentScrollPos\n }\n })\n}\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,MAAM,qBAAqB,GAAG;;AAE9B,IAAI,QAAQ,GAAG;AACf,IAAI,gBAAgB,GAAG,OAAO,QAAQ,KAAK,WAAW,GAAG,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC;AACvF,MAAM,aAAa,GAAG,OAAO,QAAQ,KAAK,WAAW,GAAG,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM;;AAErF,SAAS,iBAAiB,GAAG;AACpC,EAAE,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACvC,IAAI;AACJ;AACA,EAAE,QAAQ,GAAG;AACb,EAAE,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;AAC/C,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB;AACnD;;AAEO,SAAS,gBAAgB,GAAG;AACnC,EAAE,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACvC,IAAI;AACJ;AACA,EAAE,QAAQ,GAAG;AACb,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB;AACtD;;AAEA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACrC,EAAE,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM;AAC5C,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,QAAQ,CAAC,gBAAgB,CAAC,SAAS,GAAG;AAC5C;AACA,GAAG;AACH;;;;"}