@iamproperty/components 7.7.1--beta14 → 7.7.1--beta16

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 (507) hide show
  1. package/README.md +25 -2
  2. package/assets/css/components/actionbar.component.css +1 -1
  3. package/assets/css/components/actionbar.component.css.map +1 -1
  4. package/assets/css/components/address-lookup.component.css +1 -1
  5. package/assets/css/components/address-lookup.component.css.map +1 -1
  6. package/assets/css/components/advanced-select.component.css +1 -0
  7. package/assets/css/components/advanced-select.component.css.map +1 -0
  8. package/assets/css/components/applied-filters.css +1 -1
  9. package/assets/css/components/applied-filters.css.map +1 -1
  10. package/assets/css/components/barchart.component.css +1 -1
  11. package/assets/css/components/barchart.component.css.map +1 -1
  12. package/assets/css/components/bento-grid.global.css +1 -1
  13. package/assets/css/components/bento-grid.global.css.map +1 -1
  14. package/assets/css/components/button.component.css +1 -0
  15. package/assets/css/components/button.component.css.map +1 -0
  16. package/assets/css/components/calendar.component.css +1 -1
  17. package/assets/css/components/calendar.component.css.map +1 -1
  18. package/assets/css/components/calendar.config.css +1 -1
  19. package/assets/css/components/calendar.config.css.map +1 -1
  20. package/assets/css/components/card.component.css +1 -1
  21. package/assets/css/components/card.component.css.map +1 -1
  22. package/assets/css/components/card.module.css +1 -1
  23. package/assets/css/components/card.module.css.map +1 -1
  24. package/assets/css/components/carousel.component.css +1 -1
  25. package/assets/css/components/carousel.component.css.map +1 -1
  26. package/assets/css/components/carousel.config.css +1 -1
  27. package/assets/css/components/carousel.config.css.map +1 -1
  28. package/assets/css/components/charts.config.css +1 -1
  29. package/assets/css/components/charts.config.css.map +1 -1
  30. package/assets/css/components/collapsible-side.css +1 -1
  31. package/assets/css/components/collapsible-side.css.map +1 -1
  32. package/assets/css/components/config.component.css +1 -1
  33. package/assets/css/components/config.component.css.map +1 -1
  34. package/assets/css/components/content.component.css +1 -1
  35. package/assets/css/components/content.component.css.map +1 -1
  36. package/assets/css/components/doughnutchart.component.css +1 -1
  37. package/assets/css/components/doughnutchart.component.css.map +1 -1
  38. package/assets/css/components/fileupload.css +1 -1
  39. package/assets/css/components/fileupload.css.map +1 -1
  40. package/assets/css/components/filter-card.component.css +1 -1
  41. package/assets/css/components/filter-card.component.css.map +1 -1
  42. package/assets/css/components/header.component.css +1 -1
  43. package/assets/css/components/header.component.css.map +1 -1
  44. package/assets/css/components/input.component.css +1 -1
  45. package/assets/css/components/input.component.css.map +1 -1
  46. package/assets/css/components/menu.component.css +1 -1
  47. package/assets/css/components/menu.component.css.map +1 -1
  48. package/assets/css/components/menu.global.css +1 -1
  49. package/assets/css/components/menu.global.css.map +1 -1
  50. package/assets/css/components/milestone.css +1 -1
  51. package/assets/css/components/milestone.css.map +1 -1
  52. package/assets/css/components/modal.component.css +1 -1
  53. package/assets/css/components/modal.component.css.map +1 -1
  54. package/assets/css/components/multi-step-modal.component.css +1 -1
  55. package/assets/css/components/multi-step-modal.component.css.map +1 -1
  56. package/assets/css/components/multiselect.css +1 -1
  57. package/assets/css/components/multiselect.css.map +1 -1
  58. package/assets/css/components/nav.component.css +1 -1
  59. package/assets/css/components/nav.component.css.map +1 -1
  60. package/assets/css/components/nav.docs.css +1 -1
  61. package/assets/css/components/nav.docs.css.map +1 -1
  62. package/assets/css/components/nav.global.css +1 -1
  63. package/assets/css/components/nav.global.css.map +1 -1
  64. package/assets/css/components/notification.css +1 -1
  65. package/assets/css/components/notification.css.map +1 -1
  66. package/assets/css/components/pagination.css +1 -1
  67. package/assets/css/components/pagination.css.map +1 -1
  68. package/assets/css/components/password.component.css +1 -1
  69. package/assets/css/components/password.component.css.map +1 -1
  70. package/assets/css/components/popover.component.css +1 -1
  71. package/assets/css/components/popover.component.css.map +1 -1
  72. package/assets/css/components/rank.component.css +1 -1
  73. package/assets/css/components/rank.component.css.map +1 -1
  74. package/assets/css/components/rankings.component.css +1 -1
  75. package/assets/css/components/rankings.component.css.map +1 -1
  76. package/assets/css/components/rankings.global.css +1 -1
  77. package/assets/css/components/rankings.global.css.map +1 -1
  78. package/assets/css/components/record-card.component.css +1 -1
  79. package/assets/css/components/record-card.component.css.map +1 -1
  80. package/assets/css/components/search.component.css +1 -0
  81. package/assets/css/components/search.component.css.map +1 -0
  82. package/assets/css/components/slider.css +1 -1
  83. package/assets/css/components/slider.css.map +1 -1
  84. package/assets/css/components/split-button.component.css +1 -1
  85. package/assets/css/components/split-button.component.css.map +1 -1
  86. package/assets/css/components/std-nav-standalone.component.css +1 -0
  87. package/assets/css/components/std-nav-standalone.component.css.map +1 -0
  88. package/assets/css/components/table-basic.global.css +1 -1
  89. package/assets/css/components/table-basic.global.css.map +1 -1
  90. package/assets/css/components/table.global.css +1 -1
  91. package/assets/css/components/table.global.css.map +1 -1
  92. package/assets/css/components/tabs.component.css +1 -1
  93. package/assets/css/components/tabs.component.css.map +1 -1
  94. package/assets/css/components/tabs.config.css +1 -1
  95. package/assets/css/components/tabs.config.css.map +1 -1
  96. package/assets/css/components/tag.component.css +1 -1
  97. package/assets/css/components/tag.component.css.map +1 -1
  98. package/assets/css/components/video-card.component.css +1 -1
  99. package/assets/css/components/video-card.component.css.map +1 -1
  100. package/assets/css/components/video-modal.component.css +1 -1
  101. package/assets/css/components/video-modal.component.css.map +1 -1
  102. package/assets/css/components/video.component.css +1 -1
  103. package/assets/css/components/video.component.css.map +1 -1
  104. package/assets/css/core.min.css +1 -1
  105. package/assets/css/core.min.css.map +1 -1
  106. package/assets/css/elements/badge-tag.css +1 -1
  107. package/assets/css/elements/badge-tag.css.map +1 -1
  108. package/assets/css/elements/buttons--global.css +1 -1
  109. package/assets/css/elements/buttons--global.css.map +1 -1
  110. package/assets/css/elements/buttons--special.css +1 -1
  111. package/assets/css/elements/buttons--special.css.map +1 -1
  112. package/assets/css/elements/buttons.css +1 -1
  113. package/assets/css/elements/buttons.css.map +1 -1
  114. package/assets/css/elements/container.css +1 -1
  115. package/assets/css/elements/container.css.map +1 -1
  116. package/assets/css/elements/details.css +1 -1
  117. package/assets/css/elements/details.css.map +1 -1
  118. package/assets/css/elements/dialog.css +1 -1
  119. package/assets/css/elements/dialog.css.map +1 -1
  120. package/assets/css/elements/dropdown.css +1 -1
  121. package/assets/css/elements/dropdown.css.map +1 -1
  122. package/assets/css/elements/forms.css +1 -1
  123. package/assets/css/elements/forms.css.map +1 -1
  124. package/assets/css/elements/input.css +1 -1
  125. package/assets/css/elements/input.css.map +1 -1
  126. package/assets/css/elements/links--collapsible-side.css +1 -1
  127. package/assets/css/elements/links--collapsible-side.css.map +1 -1
  128. package/assets/css/elements/links--global.css +1 -1
  129. package/assets/css/elements/links--global.css.map +1 -1
  130. package/assets/css/elements/links.css +1 -1
  131. package/assets/css/elements/links.css.map +1 -1
  132. package/assets/css/elements/lists--tick-list.css +1 -1
  133. package/assets/css/elements/lists--tick-list.css.map +1 -1
  134. package/assets/css/elements/modal.css +1 -1
  135. package/assets/css/elements/modal.css.map +1 -1
  136. package/assets/css/elements/popover.css +1 -1
  137. package/assets/css/elements/popover.css.map +1 -1
  138. package/assets/css/elements/prefix.css +1 -1
  139. package/assets/css/elements/prefix.css.map +1 -1
  140. package/assets/css/elements/select.css +1 -0
  141. package/assets/css/elements/select.css.map +1 -0
  142. package/assets/css/elements/tooltips.css +1 -1
  143. package/assets/css/elements/tooltips.css.map +1 -1
  144. package/assets/css/elements/type.css +1 -1
  145. package/assets/css/elements/type.css.map +1 -1
  146. package/assets/css/style.min.css +1 -1
  147. package/assets/css/style.min.css.map +1 -1
  148. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  149. package/assets/js/components/actionbar/actionbar.component.js +5 -3
  150. package/assets/js/components/actionbar/actionbar.component.min.js +10 -8
  151. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  152. package/assets/js/components/address-lookup/address-lookup.component.js +12 -6
  153. package/assets/js/components/address-lookup/address-lookup.component.min.js +9 -7
  154. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  155. package/assets/js/components/advanced-select/advanced-select.component.js +8 -17
  156. package/assets/js/components/advanced-select/advanced-select.component.min.js +7 -17
  157. package/assets/js/components/advanced-select/advanced-select.component.min.js.map +1 -1
  158. package/assets/js/components/applied-filters/applied-filters.component.min.js +3 -3
  159. package/assets/js/components/barchart/barchart.component.min.js +5 -5
  160. package/assets/js/components/bento-grid/bento-grid.component.min.js +2 -2
  161. package/assets/js/components/button/button.component.js +49 -0
  162. package/assets/js/components/button/button.component.min.js +13 -0
  163. package/assets/js/components/button/button.component.min.js.map +1 -0
  164. package/assets/js/components/calendar/calendar.component.min.js +5 -5
  165. package/assets/js/components/card/card.component.min.js +21 -19
  166. package/assets/js/components/card/card.component.min.js.map +1 -1
  167. package/assets/js/components/carousel/carousel.component.js +144 -52
  168. package/assets/js/components/carousel/carousel.component.min.js +15 -21
  169. package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
  170. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +3 -3
  171. package/assets/js/components/config/config.component.min.js +8 -8
  172. package/assets/js/components/content/content.component.js +21 -5
  173. package/assets/js/components/content/content.component.min.js +5 -7
  174. package/assets/js/components/content/content.component.min.js.map +1 -1
  175. package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
  176. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +7 -7
  177. package/assets/js/components/doughnutchart/doughnutchart.component.min.js.map +1 -1
  178. package/assets/js/components/fileupload/fileupload.component.min.js +4 -4
  179. package/assets/js/components/filter-card/filter-card.component.min.js +20 -18
  180. package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -1
  181. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  182. package/assets/js/components/form/form.component.min.js +1 -1
  183. package/assets/js/components/header/header.component.min.js +2 -2
  184. package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
  185. package/assets/js/components/input/input.component.min.js +2 -2
  186. package/assets/js/components/input-range/input-range.component.min.js +1 -1
  187. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  188. package/assets/js/components/menu/menu.component.js +1 -0
  189. package/assets/js/components/menu/menu.component.min.js +3 -3
  190. package/assets/js/components/menu/menu.component.min.js.map +1 -1
  191. package/assets/js/components/milestone/milestone.component.min.js +1 -1
  192. package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
  193. package/assets/js/components/modal/modal.component.min.js +4 -4
  194. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  195. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +4 -4
  196. package/assets/js/components/multiselect/multiselect.component.min.js +4 -4
  197. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  198. package/assets/js/components/nav/nav.component.js +4 -3
  199. package/assets/js/components/nav/nav.component.min.js +6 -6
  200. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  201. package/assets/js/components/notification/notification.component.min.js +2 -2
  202. package/assets/js/components/pagination/pagination.component.min.js +4 -4
  203. package/assets/js/components/password/password.component.min.js +5 -5
  204. package/assets/js/components/popover/popover.component.min.js +4 -4
  205. package/assets/js/components/rank/rank.component.min.js +1 -1
  206. package/assets/js/components/rankings/rankings.component.min.js +3 -3
  207. package/assets/js/components/rating/rating.component.min.js +1 -1
  208. package/assets/js/components/record-card/record-card.component.min.js +18 -16
  209. package/assets/js/components/record-card/record-card.component.min.js.map +1 -1
  210. package/assets/js/components/search/search.component.js +9 -13
  211. package/assets/js/components/search/search.component.min.js +9 -18
  212. package/assets/js/components/search/search.component.min.js.map +1 -1
  213. package/assets/js/components/slider/slider.component.min.js +3 -3
  214. package/assets/js/components/split-button/split-button.component.js +1 -1
  215. package/assets/js/components/split-button/split-button.component.min.js +6 -6
  216. package/assets/js/components/split-button/split-button.component.min.js.map +1 -1
  217. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +11 -9
  218. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js.map +1 -1
  219. package/assets/js/components/std-nav/std-nav.component.js +179 -0
  220. package/assets/js/components/std-nav/std-nav.component.min.js +66 -0
  221. package/assets/js/components/std-nav/std-nav.component.min.js.map +1 -0
  222. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.js +60 -0
  223. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.min.js +20 -0
  224. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.min.js.map +1 -0
  225. package/assets/js/components/table/table.component.min.js +6 -6
  226. package/assets/js/components/table/table.component.min.js.map +1 -1
  227. package/assets/js/components/table-ajax/table-ajax.component.min.js +7 -7
  228. package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -1
  229. package/assets/js/components/table-basic/table-basic.component.min.js +2 -2
  230. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +4 -4
  231. package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -1
  232. package/assets/js/components/table-submit/table-submit.component.min.js +6 -6
  233. package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
  234. package/assets/js/components/tabs/tabs.component.min.js +4 -4
  235. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  236. package/assets/js/components/tag/tag.component.min.js +3 -3
  237. package/assets/js/components/tooltip/tooltip.component.min.js +1 -1
  238. package/assets/js/components/video/video.component.min.js +5 -5
  239. package/assets/js/components/video-card/video-card.component.min.js +18 -16
  240. package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
  241. package/assets/js/components/video-modal/video-modal.component.min.js +2 -2
  242. package/assets/js/components/word-count/word-count.component.min.js +1 -1
  243. package/assets/js/modules/advanced-select.js +30 -4
  244. package/assets/js/modules/card.module.js +16 -14
  245. package/assets/js/modules/carousel.js +11 -11
  246. package/assets/js/modules/nav.js +78 -0
  247. package/assets/js/modules/tabs.js +9 -1
  248. package/assets/js/scripts.bundle.js +1 -1
  249. package/assets/js/scripts.bundle.min.js +1 -1
  250. package/assets/sass/_corefiles.scss +1 -0
  251. package/assets/sass/_utilities.scss +1 -0
  252. package/assets/sass/components/actionbar.component.scss +15 -1
  253. package/assets/sass/components/address-lookup.component.scss +134 -2
  254. package/assets/sass/components/advanced-select.component.scss +59 -0
  255. package/assets/sass/components/bento-grid.global.scss +2 -2
  256. package/assets/sass/components/button.component.scss +5 -0
  257. package/assets/sass/components/calendar.component.scss +1 -1
  258. package/assets/sass/components/calendar.config.scss +1 -1
  259. package/assets/sass/components/card.component.scss +2 -2
  260. package/assets/sass/components/card.module.scss +8 -3
  261. package/assets/sass/components/carousel.component.scss +522 -519
  262. package/assets/sass/components/carousel.config.scss +4 -44
  263. package/assets/sass/components/charts.config.scss +1 -1
  264. package/assets/sass/components/config.component.scss +1 -1
  265. package/assets/sass/components/filter-card.component.scss +5 -5
  266. package/assets/sass/components/header.component.scss +1 -1
  267. package/assets/sass/components/menu.component.scss +21 -16
  268. package/assets/sass/components/menu.global.scss +7 -11
  269. package/assets/sass/components/milestone.scss +2 -2
  270. package/assets/sass/components/modal.component.scss +1 -0
  271. package/assets/sass/components/multiselect.scss +8 -0
  272. package/assets/sass/components/nav.component.scss +21 -10
  273. package/assets/sass/components/nav.docs.scss +1 -2
  274. package/assets/sass/components/nav.global.scss +174 -45
  275. package/assets/sass/components/pagination.scss +2 -2
  276. package/assets/sass/components/popover.component.scss +37 -2
  277. package/assets/sass/components/search.component.scss +2 -0
  278. package/assets/sass/components/split-button.component.scss +3 -1
  279. package/assets/sass/components/std-nav-standalone.component.scss +228 -0
  280. package/assets/sass/components/table-basic.global.scss +3 -3
  281. package/assets/sass/components/table.global.scss +1 -1
  282. package/assets/sass/components/tabs.config.scss +2 -2
  283. package/assets/sass/components/video.component.scss +1 -1
  284. package/assets/sass/elements/badge-tag.css +6 -2
  285. package/assets/sass/elements/buttons--global.css +4 -4
  286. package/assets/sass/elements/buttons--special.css +2 -53
  287. package/assets/sass/elements/container.scss +1 -1
  288. package/assets/sass/elements/details.css +3 -3
  289. package/assets/sass/elements/dialog.scss +9 -5
  290. package/assets/sass/elements/dropdown.css +188 -44
  291. package/assets/sass/elements/forms.scss +36 -522
  292. package/assets/sass/elements/input.scss +0 -7
  293. package/assets/sass/elements/links--collapsible-side.scss +1 -1
  294. package/assets/sass/elements/links--global.scss +5 -1
  295. package/assets/sass/elements/lists--tick-list.scss +2 -2
  296. package/assets/sass/elements/modal.scss +1 -1
  297. package/assets/sass/elements/popover.scss +1 -1
  298. package/assets/sass/elements/prefix.scss +1 -1
  299. package/assets/sass/elements/select.scss +238 -0
  300. package/assets/sass/elements/tooltips.scss +1 -1
  301. package/assets/sass/elements/type.css +10 -0
  302. package/assets/sass/email.scss +1 -1
  303. package/assets/sass/error.scss +0 -1
  304. package/assets/sass/foundations/colours.scss +0 -1
  305. package/assets/sass/foundations/debug.scss +6 -0
  306. package/assets/sass/foundations/reboot.scss +81 -1
  307. package/assets/sass/foundations/root.scss +20 -2
  308. package/assets/sass/main.scss +0 -1
  309. package/assets/sass/{_grid.scss → utilities/grid.scss} +120 -80
  310. package/assets/ts/components/actionbar/actionbar.component.ts +5 -3
  311. package/assets/ts/components/address-lookup/address-lookup.component.ts +18 -6
  312. package/assets/ts/components/advanced-select/advanced-select.component.ts +12 -17
  313. package/assets/ts/components/button/button.component.ts +66 -0
  314. package/assets/ts/components/carousel/carousel.component.ts +189 -58
  315. package/assets/ts/components/content/content.component.ts +33 -5
  316. package/assets/ts/components/menu/menu.component.ts +4 -0
  317. package/assets/ts/components/nav/nav.component.ts +5 -7
  318. package/assets/ts/components/search/search.component.ts +14 -13
  319. package/assets/ts/components/split-button/split-button.component.ts +1 -1
  320. package/assets/ts/components/std-address-lookup/std-address-lookup.component.ts +0 -1
  321. package/assets/ts/components/std-nav/std-nav.component.ts +235 -0
  322. package/assets/ts/components/std-nav-standalone/std-nav-standalone.component.ts +76 -0
  323. package/assets/ts/modules/advanced-select.ts +47 -7
  324. package/assets/ts/modules/card.module.ts +16 -14
  325. package/assets/ts/modules/carousel.ts +11 -11
  326. package/assets/ts/modules/nav.ts +91 -0
  327. package/assets/ts/modules/tabs.ts +10 -1
  328. package/dist/components.es.js +27 -27
  329. package/dist/components.umd.js +343 -272
  330. package/package.json +11 -10
  331. package/src/components/Button/Button.vue +20 -0
  332. package/src/components/STDNav/STDNav.vue +22 -0
  333. package/src/components/STDNavStandalone/STDNavStandalone.vue +22 -0
  334. package/assets/bootstrap/LICENSE +0 -22
  335. package/assets/bootstrap/README.md +0 -247
  336. package/assets/bootstrap/js/index.esm.js +0 -19
  337. package/assets/bootstrap/js/index.umd.js +0 -34
  338. package/assets/bootstrap/js/src/alert.js +0 -87
  339. package/assets/bootstrap/js/src/base-component.js +0 -85
  340. package/assets/bootstrap/js/src/button.js +0 -72
  341. package/assets/bootstrap/js/src/carousel.js +0 -475
  342. package/assets/bootstrap/js/src/collapse.js +0 -302
  343. package/assets/bootstrap/js/src/dom/data.js +0 -55
  344. package/assets/bootstrap/js/src/dom/event-handler.js +0 -320
  345. package/assets/bootstrap/js/src/dom/manipulator.js +0 -71
  346. package/assets/bootstrap/js/src/dom/selector-engine.js +0 -83
  347. package/assets/bootstrap/js/src/dropdown.js +0 -445
  348. package/assets/bootstrap/js/src/modal.js +0 -373
  349. package/assets/bootstrap/js/src/offcanvas.js +0 -283
  350. package/assets/bootstrap/js/src/popover.js +0 -97
  351. package/assets/bootstrap/js/src/scrollspy.js +0 -290
  352. package/assets/bootstrap/js/src/tab.js +0 -307
  353. package/assets/bootstrap/js/src/toast.js +0 -220
  354. package/assets/bootstrap/js/src/tooltip.js +0 -651
  355. package/assets/bootstrap/js/src/util/backdrop.js +0 -149
  356. package/assets/bootstrap/js/src/util/component-functions.js +0 -34
  357. package/assets/bootstrap/js/src/util/config.js +0 -66
  358. package/assets/bootstrap/js/src/util/focustrap.js +0 -115
  359. package/assets/bootstrap/js/src/util/index.js +0 -336
  360. package/assets/bootstrap/js/src/util/sanitizer.js +0 -118
  361. package/assets/bootstrap/js/src/util/scrollbar.js +0 -114
  362. package/assets/bootstrap/js/src/util/swipe.js +0 -146
  363. package/assets/bootstrap/js/src/util/template-factory.js +0 -160
  364. package/assets/bootstrap/package.json +0 -180
  365. package/assets/bootstrap/scss/_accordion.scss +0 -146
  366. package/assets/bootstrap/scss/_alert.scss +0 -71
  367. package/assets/bootstrap/scss/_badge.scss +0 -38
  368. package/assets/bootstrap/scss/_breadcrumb.scss +0 -40
  369. package/assets/bootstrap/scss/_button-group.scss +0 -142
  370. package/assets/bootstrap/scss/_buttons.scss +0 -186
  371. package/assets/bootstrap/scss/_card.scss +0 -234
  372. package/assets/bootstrap/scss/_carousel.scss +0 -229
  373. package/assets/bootstrap/scss/_close.scss +0 -40
  374. package/assets/bootstrap/scss/_containers.scss +0 -41
  375. package/assets/bootstrap/scss/_dropdown.scss +0 -248
  376. package/assets/bootstrap/scss/_forms.scss +0 -9
  377. package/assets/bootstrap/scss/_functions.scss +0 -302
  378. package/assets/bootstrap/scss/_grid.scss +0 -33
  379. package/assets/bootstrap/scss/_helpers.scss +0 -10
  380. package/assets/bootstrap/scss/_images.scss +0 -42
  381. package/assets/bootstrap/scss/_list-group.scss +0 -191
  382. package/assets/bootstrap/scss/_maps.scss +0 -54
  383. package/assets/bootstrap/scss/_mixins.scss +0 -43
  384. package/assets/bootstrap/scss/_modal.scss +0 -237
  385. package/assets/bootstrap/scss/_nav.scss +0 -172
  386. package/assets/bootstrap/scss/_navbar.scss +0 -276
  387. package/assets/bootstrap/scss/_offcanvas.scss +0 -143
  388. package/assets/bootstrap/scss/_pagination.scss +0 -109
  389. package/assets/bootstrap/scss/_placeholders.scss +0 -51
  390. package/assets/bootstrap/scss/_popover.scss +0 -196
  391. package/assets/bootstrap/scss/_progress.scss +0 -59
  392. package/assets/bootstrap/scss/_reboot.scss +0 -610
  393. package/assets/bootstrap/scss/_root.scss +0 -73
  394. package/assets/bootstrap/scss/_spinners.scss +0 -85
  395. package/assets/bootstrap/scss/_tables.scss +0 -164
  396. package/assets/bootstrap/scss/_toasts.scss +0 -70
  397. package/assets/bootstrap/scss/_tooltip.scss +0 -120
  398. package/assets/bootstrap/scss/_transitions.scss +0 -27
  399. package/assets/bootstrap/scss/_type.scss +0 -106
  400. package/assets/bootstrap/scss/_utilities.scss +0 -647
  401. package/assets/bootstrap/scss/_variables-dark.scss +0 -87
  402. package/assets/bootstrap/scss/_variables.scss +0 -1633
  403. package/assets/bootstrap/scss/bootstrap-grid.scss +0 -64
  404. package/assets/bootstrap/scss/bootstrap-reboot.scss +0 -9
  405. package/assets/bootstrap/scss/bootstrap-utilities.scss +0 -15
  406. package/assets/bootstrap/scss/bootstrap.scss +0 -51
  407. package/assets/bootstrap/scss/forms/_floating-labels.scss +0 -74
  408. package/assets/bootstrap/scss/forms/_form-check.scss +0 -175
  409. package/assets/bootstrap/scss/forms/_form-control.scss +0 -194
  410. package/assets/bootstrap/scss/forms/_form-range.scss +0 -91
  411. package/assets/bootstrap/scss/forms/_form-select.scss +0 -71
  412. package/assets/bootstrap/scss/forms/_form-text.scss +0 -11
  413. package/assets/bootstrap/scss/forms/_input-group.scss +0 -129
  414. package/assets/bootstrap/scss/forms/_labels.scss +0 -36
  415. package/assets/bootstrap/scss/forms/_validation.scss +0 -12
  416. package/assets/bootstrap/scss/helpers/_clearfix.scss +0 -3
  417. package/assets/bootstrap/scss/helpers/_color-bg.scss +0 -10
  418. package/assets/bootstrap/scss/helpers/_colored-links.scss +0 -12
  419. package/assets/bootstrap/scss/helpers/_focus-ring.scss +0 -5
  420. package/assets/bootstrap/scss/helpers/_icon-link.scss +0 -25
  421. package/assets/bootstrap/scss/helpers/_position.scss +0 -36
  422. package/assets/bootstrap/scss/helpers/_ratio.scss +0 -26
  423. package/assets/bootstrap/scss/helpers/_stacks.scss +0 -15
  424. package/assets/bootstrap/scss/helpers/_stretched-link.scss +0 -15
  425. package/assets/bootstrap/scss/helpers/_text-truncation.scss +0 -7
  426. package/assets/bootstrap/scss/helpers/_visually-hidden.scss +0 -8
  427. package/assets/bootstrap/scss/helpers/_vr.scss +0 -8
  428. package/assets/bootstrap/scss/mixins/_alert.scss +0 -15
  429. package/assets/bootstrap/scss/mixins/_backdrop.scss +0 -14
  430. package/assets/bootstrap/scss/mixins/_banner.scss +0 -9
  431. package/assets/bootstrap/scss/mixins/_border-radius.scss +0 -78
  432. package/assets/bootstrap/scss/mixins/_box-shadow.scss +0 -18
  433. package/assets/bootstrap/scss/mixins/_breakpoints.scss +0 -127
  434. package/assets/bootstrap/scss/mixins/_buttons.scss +0 -70
  435. package/assets/bootstrap/scss/mixins/_caret.scss +0 -64
  436. package/assets/bootstrap/scss/mixins/_clearfix.scss +0 -9
  437. package/assets/bootstrap/scss/mixins/_color-mode.scss +0 -21
  438. package/assets/bootstrap/scss/mixins/_color-scheme.scss +0 -7
  439. package/assets/bootstrap/scss/mixins/_container.scss +0 -11
  440. package/assets/bootstrap/scss/mixins/_deprecate.scss +0 -10
  441. package/assets/bootstrap/scss/mixins/_forms.scss +0 -152
  442. package/assets/bootstrap/scss/mixins/_gradients.scss +0 -47
  443. package/assets/bootstrap/scss/mixins/_grid.scss +0 -151
  444. package/assets/bootstrap/scss/mixins/_image.scss +0 -16
  445. package/assets/bootstrap/scss/mixins/_list-group.scss +0 -24
  446. package/assets/bootstrap/scss/mixins/_lists.scss +0 -7
  447. package/assets/bootstrap/scss/mixins/_pagination.scss +0 -10
  448. package/assets/bootstrap/scss/mixins/_reset-text.scss +0 -17
  449. package/assets/bootstrap/scss/mixins/_resize.scss +0 -6
  450. package/assets/bootstrap/scss/mixins/_table-variants.scss +0 -24
  451. package/assets/bootstrap/scss/mixins/_text-truncate.scss +0 -8
  452. package/assets/bootstrap/scss/mixins/_transition.scss +0 -26
  453. package/assets/bootstrap/scss/mixins/_utilities.scss +0 -97
  454. package/assets/bootstrap/scss/mixins/_visually-hidden.scss +0 -29
  455. package/assets/bootstrap/scss/utilities/_api.scss +0 -47
  456. package/assets/bootstrap/scss/vendor/_rfs.scss +0 -354
  457. package/assets/favicons/README.md +0 -21
  458. package/assets/ts/README.md +0 -12
  459. package/assets/ts/components/actionbar/README.md +0 -56
  460. package/assets/ts/components/applied-filters/README.md +0 -20
  461. package/assets/ts/components/bento-grid/README.md +0 -31
  462. package/assets/ts/components/carousel/README.md +0 -38
  463. package/assets/ts/components/chart/README.md +0 -35
  464. package/assets/ts/components/collapsible-side/README.md +0 -38
  465. package/assets/ts/components/filterlist/README.md +0 -32
  466. package/assets/ts/components/header/README.md +0 -38
  467. package/assets/ts/components/inline-edit/README.md +0 -31
  468. package/assets/ts/components/multiselect/README.md +0 -35
  469. package/assets/ts/components/nav/README.md +0 -57
  470. package/assets/ts/components/notification/README.md +0 -47
  471. package/assets/ts/components/pagination/README.md +0 -37
  472. package/assets/ts/components/search/README.md +0 -35
  473. package/assets/ts/components/slider/README.md +0 -26
  474. package/assets/ts/components/table/README.md +0 -40
  475. package/assets/ts/components/table-basic/README.md +0 -40
  476. package/assets/ts/components/tabs/README.md +0 -34
  477. package/src/components/Accordion/README.md +0 -31
  478. package/src/components/Actionbar/README.md +0 -41
  479. package/src/components/AppliedFilters/README.md +0 -5
  480. package/src/components/Banner/README.md +0 -22
  481. package/src/components/Card/README.md +0 -24
  482. package/src/components/Carousel/README.md +0 -20
  483. package/src/components/Chart/README.md +0 -17
  484. package/src/components/CollapsibleSideMenu/README.md +0 -23
  485. package/src/components/FileUpload/README.md +0 -13
  486. package/src/components/Filterlist/README.md +0 -17
  487. package/src/components/Header/README.md +0 -27
  488. package/src/components/InlineEdit/README.md +0 -7
  489. package/src/components/Input/README.md +0 -17
  490. package/src/components/Marketing/README.md +0 -20
  491. package/src/components/Multiselect/README.md +0 -12
  492. package/src/components/Nav/README.md +0 -42
  493. package/src/components/Nav-old/README.md +0 -22
  494. package/src/components/NoteFeed/README.md +0 -16
  495. package/src/components/Notification/README.md +0 -32
  496. package/src/components/Pagination/README.md +0 -22
  497. package/src/components/PropertySearchbar/README.md +0 -25
  498. package/src/components/Search/README.md +0 -11
  499. package/src/components/Slider/README.md +0 -11
  500. package/src/components/Snapshot/README.md +0 -20
  501. package/src/components/SplitButton/README.md +0 -19
  502. package/src/components/Stepper/README.md +0 -32
  503. package/src/components/Table/README.md +0 -49
  504. package/src/components/Tabs/README.md +0 -29
  505. package/src/components/Testimonial/README.md +0 -25
  506. package/src/components/Timeline/README.md +0 -18
  507. package/src/foundations/Logo/README.md +0 -21
@@ -1,9 +1,37 @@
1
- import { generateThumbnailList, generatePipsHTML, carousel, updateCarousel } from '../../modules/carousel';
2
- import { trackComponent, trackComponentRegistered } from '../_global';
1
+ import { trackComponentRegistered } from '../_global';
3
2
  trackComponentRegistered('iam-carousel');
4
3
  class iamCarousel extends HTMLElement {
5
4
  constructor() {
6
5
  super();
6
+ this.generateThumbnailList = (carouselComponent) => {
7
+ const thumbnailImages = [];
8
+ Array.from(carouselComponent.querySelectorAll(':scope > :is(div,iam-card)')).forEach((slide, index) => {
9
+ if (slide.hasAttribute('data-thumbnail')) {
10
+ thumbnailImages[index] = slide.getAttribute('data-thumbnail');
11
+ }
12
+ });
13
+ return thumbnailImages;
14
+ };
15
+ this.generatePipsHTML = (carouselComponent, thumbnailImages) => {
16
+ const itemCount = carouselComponent.querySelectorAll(':scope > :is(div,iam-card)').length;
17
+ let pips = '';
18
+ for (let i = 1; i <= itemCount; i++) {
19
+ let pipContent = null;
20
+ let pipClass = '';
21
+ if (thumbnailImages.length && thumbnailImages[i - 1]) {
22
+ pipClass = 'has-thumbnail';
23
+ pipContent = `<img src="${thumbnailImages[i - 1]}" alt="Slide ${i}" height="148"/>`;
24
+ }
25
+ else {
26
+ pipContent = `Slide ${i}`;
27
+ }
28
+ pips += `<button class="control-${i} ${pipClass}" data-slide="${i}" ${i == 1 ? 'aria-current' : ''}>${pipContent}</button>`;
29
+ }
30
+ return pips;
31
+ };
32
+ this.progressPercent = (value, total) => {
33
+ return ((value) / (total)) * 100 + '%';
34
+ };
7
35
  this.attachShadow({ mode: 'open' });
8
36
  const assetLocation = document.body.hasAttribute('data-assets-location')
9
37
  ? document.body.getAttribute('data-assets-location')
@@ -15,69 +43,133 @@ class iamCarousel extends HTMLElement {
15
43
  ${loadCSS}
16
44
  ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
17
45
  </style>
18
- <div class="carousel" part="carousel">
19
- <div class="carousel__wrapper">
20
- <div class="carousel__inner">
21
- <div class="carousel__content" part="content">
22
- <slot></slot>
23
- </div>
24
- </div>
46
+ <div class="carousel-wrapper">
47
+ <div class="carousel" part="carousel">
48
+ <slot></slot>
49
+ </div>
50
+ <div class="carousel__controls"></div>
51
+ <div id="carousel__progress" class="carousel__progress">
52
+ <input type="range" min="0" max="100" value="0" step="1" />
25
53
  </div>
26
- <div class="carousel__btns" part="btns">
27
- <button class="btn btn-secondary btn-compact fa-plus-large btn-prev" data-go="0" disabled part="prev">
28
- Prev
29
- </button>
30
- <button class="btn btn-secondary btn-compact fa-plus-large btn-next" data-go="2" part="next">Next</button>
54
+ <div id="carousel__progress-sm" class="carousel__progress">
55
+ <input type="range" min="0" max="100" value="0" step="1" />
31
56
  </div>
32
-
33
- <div class="carousel__controls" part="controls"></div>
34
-
35
- <div class="carousel__progress" part="progress">
36
- <input type="range" min="0" max="100" value="1" step="1" />
57
+ <div id="carousel__progress-md" class="carousel__progress">
58
+ <input type="range" min="0" max="100" value="0" step="1" />
37
59
  </div>
38
60
  </div>
39
61
  `;
40
62
  this.shadowRoot.appendChild(template.content.cloneNode(true));
41
63
  }
42
64
  connectedCallback() {
43
- // eslint-disable-next-line @typescript-eslint/no-this-alias
44
- const carouselComponent = this;
45
- //const carouselElement = this.shadowRoot.querySelector('.carousel');
46
- //const row = this.shadowRoot.querySelector('.row');
47
- let thumbnailImages = [];
48
- const carouselControls = this.shadowRoot.querySelector('.carousel__controls');
49
- if (carouselComponent.querySelector('[data-thumbnail]')) {
50
- thumbnailImages = generateThumbnailList(carouselComponent);
51
- carouselComponent.classList.add('thumbnails');
65
+ var _a;
66
+ const carouselElement = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.carousel');
67
+ const carouselProgress = this.shadowRoot.querySelector('#carousel__progress [type="range"]');
68
+ const carouselProgressSM = this.shadowRoot.querySelector('#carousel__progress-sm [type="range"]');
69
+ const carouselProgressMD = this.shadowRoot.querySelector('#carousel__progress-md [type="range"]');
70
+ const itemCount = this.querySelectorAll(':scope > *').length;
71
+ const progressPercent = this.progressPercent;
72
+ let stepperInterval, stepperEvent = 'mouseup', stepperStart = 'mousedown';
73
+ if ('ontouchstart' in document.documentElement) {
74
+ stepperEvent = 'touchend';
75
+ stepperStart = 'touchstart';
52
76
  }
53
- // populate the pips
54
- carouselControls.innerHTML = generatePipsHTML(carouselComponent, thumbnailImages);
55
- Array.from(carouselComponent.querySelectorAll(':scope > div > img:first-child:last-child, :scope > div > picture:first-child:last-child img')).forEach((image) => {
56
- image.style.inset = '0 0.5rem 0 0.5rem';
57
- image.style.position = 'absolute';
58
- image.style.width = 'calc(100% - 1rem)';
59
- image.style.height = '100%';
60
- image.style['object-fit'] = 'cover';
61
- image.closest('div').classList.add('image__wrapper');
77
+ carouselElement === null || carouselElement === void 0 ? void 0 : carouselElement.innerHTML = this.innerHTML;
78
+ carouselElement === null || carouselElement === void 0 ? void 0 : carouselElement.setAttribute('data-smcols', this.getAttribute('data-smcols'));
79
+ carouselElement === null || carouselElement === void 0 ? void 0 : carouselElement.setAttribute('data-mdcols', this.getAttribute('data-mdcols'));
80
+ carouselProgress.setAttribute('max', itemCount);
81
+ carouselProgress.style.setProperty('--percent', progressPercent(carouselProgress.value, itemCount));
82
+ carouselProgress.addEventListener(stepperStart, () => {
83
+ clearInterval(stepperInterval);
84
+ stepperInterval = setInterval(function () {
85
+ carouselProgress.style.setProperty('--percent', progressPercent(carouselProgress.value, itemCount));
86
+ }, 10);
87
+ });
88
+ carouselProgress.addEventListener(stepperEvent, function () {
89
+ clearInterval(stepperInterval);
90
+ });
91
+ carouselProgress.addEventListener('change', () => {
92
+ clearInterval(stepperInterval);
93
+ carouselProgress.style.setProperty('--percent', progressPercent(carouselProgress.value, itemCount));
94
+ const scrollTo = Math.floor((carouselElement.scrollWidth / itemCount) * (carouselProgress.value - 1));
95
+ carouselElement.scrollTo({
96
+ top: 0,
97
+ left: scrollTo,
98
+ behavior: 'smooth',
99
+ });
100
+ });
101
+ // SM Progress bar
102
+ const smStep = this.getAttribute('data-smcols') ? this.getAttribute('data-smcols') : 1;
103
+ const smItemCount = Math.floor(itemCount / smStep) * smStep;
104
+ carouselProgressSM.setAttribute('max', smItemCount);
105
+ carouselProgressSM.setAttribute('step', smStep);
106
+ carouselProgressSM.style.setProperty('--percent', progressPercent(carouselProgressSM.value, smItemCount));
107
+ carouselProgressSM.addEventListener(stepperStart, () => {
108
+ clearInterval(stepperInterval);
109
+ stepperInterval = setInterval(function () {
110
+ carouselProgressSM.style.setProperty('--percent', progressPercent(carouselProgressSM.value, smItemCount));
111
+ });
62
112
  });
63
- carousel(carouselComponent);
64
- const observer = new MutationObserver(function (mutations) {
65
- mutations.forEach(function (mutationRecord) {
66
- const targetElement = mutationRecord.target;
67
- updateCarousel(targetElement);
113
+ carouselProgressSM.addEventListener(stepperEvent, function () {
114
+ clearInterval(stepperInterval);
115
+ });
116
+ carouselProgressSM.addEventListener('change', () => {
117
+ clearInterval(stepperInterval);
118
+ carouselProgressSM.style.setProperty('--percent', progressPercent(carouselProgressSM.value, smItemCount));
119
+ const scrollTo = Math.floor((carouselElement.scrollWidth / smItemCount) * carouselProgressSM.value);
120
+ console.log(carouselProgressSM.value);
121
+ carouselElement.scrollTo({
122
+ top: 0,
123
+ left: scrollTo,
124
+ behavior: 'smooth',
125
+ });
126
+ });
127
+ // MD Progress bar
128
+ const mdStep = this.getAttribute('data-smcols') ? this.getAttribute('data-smcols') : 1;
129
+ const mdItemCount = Math.floor(itemCount / mdStep) * mdStep;
130
+ carouselProgressMD.setAttribute('max', mdItemCount);
131
+ carouselProgressMD.setAttribute('step', mdStep);
132
+ carouselProgressMD.style.setProperty('--percent', progressPercent(carouselProgressMD.value, mdItemCount));
133
+ carouselProgressMD.addEventListener(stepperStart, () => {
134
+ clearInterval(stepperInterval);
135
+ stepperInterval = setInterval(function () {
136
+ carouselProgressMD.style.setProperty('--percent', progressPercent(carouselProgressMD.value, mdItemCount));
137
+ });
138
+ });
139
+ carouselProgressMD.addEventListener(stepperEvent, function () {
140
+ clearInterval(stepperInterval);
141
+ });
142
+ carouselProgressMD.addEventListener('change', () => {
143
+ clearInterval(stepperInterval);
144
+ carouselProgressMD.style.setProperty('--percent', progressPercent(carouselProgressMD.value, mdItemCount));
145
+ const scrollTo = Math.floor((carouselElement.scrollWidth / mdItemCount) * carouselProgressMD.value);
146
+ console.log(carouselProgressMD.value);
147
+ carouselElement.scrollTo({
148
+ top: 0,
149
+ left: scrollTo,
150
+ behavior: 'smooth',
68
151
  });
69
152
  });
70
- observer.observe(carouselComponent, {
71
- attributes: false,
72
- childList: true,
73
- subtree: true,
153
+ // Thumbnails
154
+ const carouselControls = this.shadowRoot.querySelector('.carousel__controls');
155
+ if (carouselElement.querySelector('[data-thumbnail]')) {
156
+ const thumbnailImages = this.generateThumbnailList(carouselElement);
157
+ carouselElement.classList.add('thumbnails');
158
+ carouselControls.innerHTML = this.generatePipsHTML(carouselElement, thumbnailImages);
159
+ }
160
+ carouselControls.addEventListener('click', (event) => {
161
+ var _a;
162
+ (_a = carouselControls === null || carouselControls === void 0 ? void 0 : carouselControls.querySelector('[aria-current]')) === null || _a === void 0 ? void 0 : _a.removeAttribute('aria-current');
163
+ if (event.target.closest('button[data-slide]')) {
164
+ event.target.closest('button[data-slide]').setAttribute('aria-current', 'true');
165
+ const scrollTo = Math.floor((carouselElement.scrollWidth / itemCount) * event.target.closest('button[data-slide]').getAttribute('data-slide'));
166
+ carouselElement.scrollTo({
167
+ top: 0,
168
+ left: scrollTo,
169
+ behavior: 'smooth',
170
+ });
171
+ }
74
172
  });
75
- trackComponent(carouselComponent, 'iam-carousel', [
76
- 'pip-clicked',
77
- 'next-clicked',
78
- 'prev-clicked',
79
- 'slider-changed',
80
- ]);
81
173
  }
82
174
  }
83
175
  export default iamCarousel;
@@ -1,32 +1,26 @@
1
1
  /*!
2
- * iamKey v7.7.1--beta14
2
+ * iamKey v7.7.1--beta16
3
3
  * Copyright 2022-2026 iamproperty
4
- */const W=function(o){const e=[];return Array.from(o.querySelectorAll(":scope > div")).forEach((a,r)=>{a.hasAttribute("data-thumbnail")&&(e[r]=a.getAttribute("data-thumbnail"))}),e},L=function(o,e){const a=o.querySelectorAll(":scope > div").length;let r="";for(let n=1;n<=a;n++){let t=null,i="";e.length&&e[n-1]?(i="has-thumbnail",t=`<img src="${e[n-1]}" alt="Slide ${n}" height="148"/>`):t=`Slide ${n}`,r+=`<button class="control-${n} ${i}" data-slide="${n}" ${n==1?"aria-current":""}>${t}</button>`}return r},w=function(o,e){return e==1?o:Math.ceil(o/e)*e-e+1},k=function(o,e){return(o-1)/(e-1)*100},P=function(o){let e;const a=o.shadowRoot.querySelector(".carousel"),r=a.querySelector(".carousel__inner"),n=a.querySelector(".carousel__controls"),t=a.querySelector('.carousel__progress [type="range"]'),i=o.querySelectorAll(":scope > div").length;let u=r.clientWidth,p=o.querySelector(":scope > div").scrollWidth,b=Math.round(u/p);t.setAttribute("min",1),t.setAttribute("step",b);let c=w(i,b);t.setAttribute("max",c),t.value=1;let g=k(1,c);t.style.setProperty("--percent",g+"%");let _,A="mouseup",S="mousedown";"ontouchstart"in document.documentElement&&(A="touchend",S="touchstart"),r.addEventListener("scroll",function(){clearTimeout(e),e=setTimeout(function(){const d=r.clientWidth,s=r.scrollWidth,v=r.scrollLeft;let l=Math.round(v/s*i)+1;const f=o.querySelector(":scope > div").scrollWidth,x=o.querySelector(":scope > div:last-child").offsetLeft,y=r.scrollLeft+d+r.getBoundingClientRect().left>=x+60,m=Math.round(d/f),z=Math.ceil(i/m)*m-i;t.setAttribute("step",m),z>0&&y&&(l=Math.floor(i/m)*m+1),Array.from(a.querySelectorAll(".carousel__controls button")).forEach(h=>{h.removeAttribute("aria-current")}),a.querySelector(".control-"+l).setAttribute("aria-current",!0),l==1?a.querySelector(".btn-prev").setAttribute("disabled","disabled"):a.querySelector(".btn-prev").removeAttribute("disabled"),l>i-m?a.querySelector(".btn-next").setAttribute("disabled","disabled"):a.querySelector(".btn-next").removeAttribute("disabled"),t.value=l,c=w(i,m),t.setAttribute("max",c),g=l/c*100,g=k(l,c),t.style.setProperty("--percent",g+"%")},100)},!1),n.addEventListener("click",function(d){for(let s=d.target;s&&s!=this;s=s.parentNode)if(typeof s.matches=="function"&&s.matches("button")){d.preventDefault(),Array.from(n.querySelectorAll("button")).forEach(f=>{f.removeAttribute("aria-current")}),s.setAttribute("aria-current",!0);const v=new CustomEvent("pip-clicked",{detail:{slide:s.getAttribute("data-slide")}});o.dispatchEvent(v);const l=o.querySelector(`:scope > *:nth-child(${s.getAttribute("data-slide")})`);r.scroll({top:0,left:l.offsetLeft-r.getBoundingClientRect().left,behavior:"smooth"});break}},!1),a.addEventListener("click",function(d){const s=r.clientWidth,v=o.querySelector(":scope > div").scrollWidth,l=Math.round(s/v),f=o.querySelector(":scope > div:last-child").offsetLeft,x=r.scrollLeft+s+r.getBoundingClientRect().left>=f+60,y=Math.ceil(i/l)*l-i,m=l-y,z=x&&y>0?m*v:r.clientWidth;for(let h=d.target;h&&h!=this;h=h.parentNode)if(typeof h.matches=="function"&&h.matches(".btn-next, .btn-prev")){const E=h.matches(".btn-next")?"next":"prev",q=new CustomEvent(`${E}-clicked`,{detail:{slide:h.getAttribute("data-go")}});o.dispatchEvent(q),d.preventDefault();const M=h.classList.contains("btn-prev")?r.scrollLeft-z:r.scrollLeft+r.clientWidth;r.scroll({top:0,left:M,behavior:"smooth"});break}},!1),t.addEventListener(S,function(){clearInterval(_),_=setInterval(function(){u=r.clientWidth,p=o.querySelector(":scope > div").scrollWidth,b=Math.round(u/p),t.setAttribute("step",b),c=w(i,b),t.setAttribute("max",c),g=k(t.value,c),t.style.setProperty("--percent",g+"%")},10)}),t.addEventListener(A,function(){clearInterval(_)}),t.addEventListener("change",function(){clearInterval(_);const d=o.querySelector(`:scope > *:nth-child(${t.value})`);r.scroll({top:0,left:d?d.offsetLeft-r.getBoundingClientRect().left:0,behavior:"smooth"});const s=new CustomEvent("slider-changed",{detail:{slide:t.value}});o.dispatchEvent(s)},!1)},I=function(o){const e=o.shadowRoot.querySelector(".carousel"),a=e.querySelector(".carousel__inner"),r=e.querySelector(".carousel__controls"),n=e.querySelector('.carousel__progress [type="range"]'),t=o.querySelectorAll(":scope > div").length;let i=a.clientWidth,u=o.querySelector(":scope > div").scrollWidth,p=Math.round(i/u);n.setAttribute("min",1),n.setAttribute("step",p);let b=w(t,p);n.setAttribute("max",b),n.value=1;let c=k(1,b);n.style.setProperty("--percent",c+"%"),r.innerHTML=L(o,[])},$=o=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:o})},C=(o,e,a)=>(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementAdded",element:e}),a.forEach(r=>{o.addEventListener(r,function(n){const t={event:r,element:e,target:n.target};Object.keys(n.detail).forEach(i=>{const u=n.detail[i];t[i]=u}),window.dataLayer.push(t)})}),!0);$("iam-carousel");class R extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),document.body.hasAttribute("data-assets-location")&&document.body.getAttribute("data-assets-location");const e=document.createElement("template");e.innerHTML=`
4
+ */const k=v=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:v})};k("iam-carousel");class y extends HTMLElement{constructor(){super(),this.generateThumbnailList=e=>{const t=[];return Array.from(e.querySelectorAll(":scope > :is(div,iam-card)")).forEach((r,o)=>{r.hasAttribute("data-thumbnail")&&(t[o]=r.getAttribute("data-thumbnail"))}),t},this.generatePipsHTML=(e,t)=>{const r=e.querySelectorAll(":scope > :is(div,iam-card)").length;let o="";for(let a=1;a<=r;a++){let i=null,n="";t.length&&t[a-1]?(n="has-thumbnail",i=`<img src="${t[a-1]}" alt="Slide ${a}" height="148"/>`):i=`Slide ${a}`,o+=`<button class="control-${a} ${n}" data-slide="${a}" ${a==1?"aria-current":""}>${i}</button>`}return o},this.progressPercent=(e,t)=>e/t*100+"%",this.attachShadow({mode:"open"}),document.body.hasAttribute("data-assets-location")&&document.body.getAttribute("data-assets-location");const l=document.createElement("template");l.innerHTML=`
5
5
  <style>
6
- @layer elements{button{border-radius:0;text-transform:none;margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button:focus:not(:focus-visible){outline:0}:is(button,[type=button],[type=reset],[type=submit],[role=button]){-webkit-appearance:button;&:not(:disabled){cursor:pointer}}.btn{--btn-margin: 1rem;--btn-padding-block: 0.75rem;--btn-padding-inline: 2.5rem;--btn-border-width: 2px;--btn-font-size: 1.125rem;--btn-line-height: 1.25rem;display:inline-block;font-weight:bold;text-align:left;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;color:var(--colour-btn);font-size:var(--btn-font-size);line-height:var(--btn-line-height);padding:var(--btn-padding-block) var(--btn-padding-inline);border-radius:1.5rem;margin-bottom:var(--btn-margin);background:none;transition:border .5s,background .5s,color .5s;height:auto;max-width:fit-content;appearance:none;white-space:nowrap;&:not(.btn-secondary)[class*=colour-]{--colour-btn-bg: var(--colour);--colour-btn-border: var(--colour)}&:is(.colour-primary,.colour-dark,.colour-danger,.colour-black){--colour-btn: #fcfcfc}&:not(.border-0){background:var(--colour-btn-bg);border:var(--btn-border-width) solid var(--colour-btn-border)}&:not(:last-child){margin-right:var(--btn-margin)}}@media screen and (min-width: 36em){.btn{--btn-margin: 1.5rem}}a:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) .btn,.btn:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){outline:0;text-decoration:none;background:var(--colour-btn-bg-hover);color:var(--colour-btn-hover);border-radius:1.5rem}a:is(:active,.active):not([disabled]) .btn,.btn:is(:active,.active):not([disabled]){filter:brightness(85%);transition:background .1s,color .1s;color:var(--colour-btn);border-radius:1.5rem}a:disabled .btn,.btn:disabled,[disabled] .btn,.btn[disabled]{opacity:.4;cursor:not-allowed}.btn.btn-complete{--colour: var(--colour-success);--colour-btn-bg-hover: var(--colour);--colour-btn-border-hover: var(--colour);--colour-btn-hover: var(--colour-primary-theme);--colour-btn-bg: var(--colour);--colour-btn-border: var(--colour);position:relative;padding-left:3.5rem;padding-right:3.5rem}a:is(:hover,:focus,.hover):not([disabled],:active,.active) .btn.btn-complete,.btn.btn-complete:is(:hover,:focus,.hover):not([disabled],:active,.active){padding-left:2.5rem;padding-right:2.5rem;&:before{content:"\uF00C";font-family:"Font Awesome 7 Pro";margin-right:1rem;font-style:inherit;width:1rem;display:inline-block;height:var(--btn-line-height);vertical-align:bottom}}.btn.btn-sm{--btn-padding-block: 0.5rem;--btn-padding-inline: 2rem;--btn-margin: 0.5rem;--btn-font-size: 1rem}.btn{&[class*=fa-]:before{content:var(--fa);font-family:"Font Awesome 7 Pro"}&[class*=fa-after]{padding-right:4rem}&[class*=fa-after]:before{margin-right:0;margin-right:.375rem;position:absolute;right:1.5rem;top:50%;transform:translate(0, -50%)}&:not(.btn-compact):before{margin-right:1rem}i[class*=fa-]{--fa-width: 1em;font-family:"Font Awesome 7 Pro";margin-right:1rem;line-height:1em;font-style:inherit;&:not(:first-child){margin-left:1rem;margin-right:0}}}.btn.btn--prompt{&:after{content:"";height:var(--btn-line-height);width:1rem;display:inline-block;background:currentColor;mask-image:var(--icon-arrow);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;vertical-align:bottom;margin-left:1rem}}a:is(:hover,:focus,.hover):not([disabled],:active,.active) .btn.btn--prompt,.btn.btn--prompt:is(:hover,:focus,.hover):not([disabled],:active,.active){&:after{margin-left:1.5rem;margin-right:-0.5rem}}.btn-filter{&:after{content:"\uF1DE";display:inline-block;margin-left:1em;margin-bottom:-0.15em;height:1em;width:1em;z-index:var(--index-focus);color:currentColor;font-weight:300;font-family:"Font Awesome 7 Pro"}}}@layer elements{.btn-secondary{color:var(--colour-btn-secondary);&:not(.border-0){background:var(--colour-btn-secondary-bg);border:2px solid var(--colour-btn-secondary-border)}}a:is(:hover,:focus,.hover,:active,.active):not([disabled]) .btn-secondary,.btn-secondary:is(:hover,:focus,.hover,:focus-within,:active,.active):not([disabled]){background:var(--colour-btn-secondary-bg-hover);color:var(--colour-btn-secondary-hover)}}@layer elements{.btn.btn-tertiary{background-color:transparent;border:none;color:var(--colour-link);margin:0 var(--btn-margin) var(--btn-margin) 0;padding:0;font-size:1.125rem;font-weight:normal;line-height:1.5rem;min-height:1.5rem;position:relative;&:after{position:absolute;content:"";top:100%;left:50%;height:2px;width:100%;transform:translate(-50%, 0);background:var(--colour-underline);transition:width .5s}&.text-decoration-none:after{width:0%}&[class*=fa-]{margin-left:0;margin-right:.5rem}&[class*=fa-]:not(:first-child){margin-left:.5rem;margin-right:0}&:is(:hover,:focus,.hover,:focus-within):not([disabled],:disabled,:active,.active){&:after{width:60% !important}}&:is(:active,.active):not([disabled],:disabled){color:var(--colour-active)}}}@layer elements{.btn-action{--btn-border-width: 1px;--btn-padding-block: 0.3125rem /* 5px */;--btn-padding-inline: 0.3125rem /* 5px */;--btn-margin: 0.5rem;border-radius:.25rem !important;font-weight:400 !important;font-size:1rem;line-height:1.25rem;&:not(.btn-primary){color:var(--colour-heading)}&:not(.btn-primary):not(.border-0){background-color:var(--colour-canvas-2);border:var(--btn-border-width) solid var(--colour-muted)}&.btn[class*=fa-]:before{content:var(--fa);margin-right:.375rem}&.icon-only{position:relative;text-indent:-300vw;overflow:hidden;min-width:1.75rem;&:before{position:absolute;left:0;top:0;min-width:1.75rem;text-align:center;text-indent:0;padding-inline:.25rem;line-height:1.85rem}}a:not(.btn-primary):is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) &,&:not(.btn-primary):is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){background:var(--colour-btn-action-hover-bg)}.btn-primary:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) &,&.btn-primary:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){filter:brightness(90%);background:var(--colour-btn-bg);border:var(--btn-border-width) solid var(--colour-btn-border);color:var(--colour-btn)}a:is(:active,.active):not([disabled]):not(.btn-primary) &,&:is(:active,.active):not([disabled]):not(.btn-primary){filter:brightness(85%);transition:all .1s;color:var(--colour-heading)}}.btn-action:not(.btn-compact).fa-compact-only:before{display:none !important}}@layer elements{.btn-compact{--compact-size: 3rem;padding:0 !important;margin-bottom:.5rem;text-align:center;width:var(--compact-size);min-width:var(--compact-size);max-width:var(--compact-size);height:var(--compact-size) !important;min-height:var(--compact-size) !important;max-height:var(--compact-size) !important;align-content:center;line-height:1 !important;text-indent:-500px;overflow:hidden;position:relative;font-size:1rem;&:not(:last-child){margin-right:.5rem}&:before{content:var(--fa);position:absolute;display:block;top:0;left:0;width:100%;height:100%;text-indent:0;line-height:calc(var(--compact-size) - .25rem);font-weight:900}[class*=fa-]:before{line-height:calc(var(--compact-size) - .25rem);@container style(--theme: dark){color:white}}&.btn-sm{--compact-size: 2.5rem;font-size:1rem;padding:0 !important}&.btn-action{--compact-size: 2rem;font-size:1rem;&:before{font-size:1em;font-weight:400}}&.btn-secondary{--colour-btn-bg: transparent;--colour-btn-border: transparent;border-color:transparent;&:not([class*=colour-]){--colour: var(--colour-light)}}&.btn-secondary:is(:hover,:focus,.hover,:active,.active,[aria-expanded],:focus-within):not([disabled]):not(.btn-collapse){background-color:var(--colour);color:var(--colour-primary-theme);border-color:var(--colour);&:is(.colour-primary,.colour-dark,.colour-danger,.colour-black){color:var(--colour-inverted)}}&[data-number]{position:relative}&[data-number]:after{content:attr(data-number);position:absolute;top:.5em;z-index:99;background:var(--colour-danger);height:1.5em;width:1.5em;border-radius:50%;text-indent:0;left:50%;font-size:.5em;line-height:1.5em;text-align:center;color:white;letter-spacing:-0.1em;font-family:arial,sans-serif}}.btn-compact{&:is(.fa-left,.fa-chevron-left,.fa-right,.fa-chevron-right,.fa-up,.fa-chevron-up,.fa-down,.fa-chevron-down,.fa-plus,.fa-bars,.fa-edit,.fa-envelope,.fa-calendar){--iso-display: block;--iso-font-size: 1.5rem;--iso-border-radius: 50%;--iso-text-indent: -500px}}@container style(--font-body){.btn-compact{font-size:var(--iso-font-size, 0.6rem) !important;text-indent:var(--iso-text-indent, 0px);white-space:initial;&:not(.btn-action){border-radius:var(--iso-border-radius, 0.25rem) !important}&:before{display:var(--iso-display, none);font-family:monospace !important;content:var(--iso) !important}}}@container style(--fa-font-regular){.btn-compact{text-indent:-500px;font-size:1rem !important;&:not(.btn-action){border-radius:50% !important}&:before{font-family:"Font Awesome 7 Pro" !important;content:var(--fa) !important;display:block}}}}@layer elements{.btn[popovertarget]{position:relative;anchor-name:--button2;&>.fa-chevron-down{display:none}&:not(:has(i)):after{content:"";display:inline-block;margin-right:.25em;margin-left:1em;height:.8em;width:.8em;z-index:var(--index-focus);background:currentColor;mask-image:var(--icon-arrow);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;transform:rotate(90deg)}&[aria-pressed]:after{transform:rotate(270deg)}}.btn:has(select){position:relative;padding:0;max-width:fit-content;min-width:fit-content;width:fit-content;select{all:unset !important;padding:var(--btn-padding-block) var(--btn-padding-inline) !important;padding-right:calc(var(--btn-padding-inline) + 2rem) !important;border-radius:1.5rem !important;appearance:none !important;background:none !important;border:none !important;color:currentColor !important;display:block;outline:none;font-weight:inherit !important;font-size:var(--btn-font-size) !important;line-height:var(--btn-line-height) !important;field-sizing:content !important;appearance:base-select !important;option{font-size:1rem;text-align:left;color:var(--colour-primary);padding-inline:var(--menu-item-padding, 0.5rem);padding-block:var(--menu-item-padding, 0.5rem) !important;border-radius:.25rem !important;&:not(:last-child){margin:var(--menu-item-margin, 0 0 0.25rem 0) !important}&:hover{background:var(--colour-light) !important}&:after{content:attr(data-email)}}}select::picker-icon{display:none}select::picker(select){appearance:base-select;background:var(--menu-bg, canvas);margin-block:var(--menu-margin, 0.25rem);padding:var(--menu-padding, 0.5rem) !important;border:none !important;border-radius:.5rem;box-shadow:0px 2px 9px rgba(0, 0, 0, 0.1);font-size:1rem}hr{height:1px !important;background-color:var(--menu-hr-border-color, var(--border-color, grey)) !important;width:100%;margin:var(--menu-item-margin, 0 0 0.25rem 0) !important;padding:0 !important}select option::checkmark{display:none}select selectedcontent span{display:none}&:after{position:absolute;top:.625rem;right:1.5rem;content:"";height:1.5rem;width:1rem;display:inline-block;background:currentColor;mask-image:var(--icon-arrow);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;vertical-align:bottom;margin-left:1rem;transform:rotate(90deg);pointer-events:none}}.btn-action:has(select){padding-block:0;padding-right:2rem;font-size:1em;select{margin:0rem 0rem !important;padding-right:2rem !important;margin-right:-2rem !important;font-size:1rem !important}&:after{top:.2rem;right:.5rem}}}@layer elements{.btn__group{display:flex;flex-direction:column;row-gap:var(--gap);reading-flow:source-order;margin-bottom:1.5rem;.btn-compact{max-width:fit-content;margin-inline:auto}}:where(.btn__group,iam-modal){reading-flow:source-order;.btn{margin-inline-end:0;width:100%;max-width:100%;text-align:center;white-space:normal;margin:0;&:not(:last-child){margin-right:0}}.btn-tertiary{max-width:fit-content;margin-block:0 !important;margin-inline:auto !important;order:3;reading-order:3}.btn-secondary{order:2;reading-order:2}.btn-primary{order:1;reading-order:1;margin:0;&:not(:last-child){margin:0}}}:is(iam-form,form) .btn__group{padding-top:1rem}@container (min-width: 36em){.btn__group{flex-direction:row;row-gap:0;gap:var(--gap);flex-wrap:wrap;.btn-tertiary{max-width:fit-content;margin-inline:0 !important;margin-block:auto;order:1}.btn-secondary{order:2}.btn-primary{order:3}.btn-compact{margin-inline:0;margin-block:auto}}:where(iam-modal,.btn__group){.btn{max-width:fit-content;white-space:nowrap;margin-block:auto}}.btn__group{.btn-tertiary{reading-order:1}.btn-secondary{reading-order:2}.btn-primary{reading-order:3}}iam-modal{.btn-tertiary{reading-order:3;order:1}.btn-secondary{order:2;reading-order:2}.btn-primary{order:3;reading-order:1}}.btn__group.text-end{justify-content:flex-end}:is(iam-form,form) .btn__group{justify-content:flex-end;padding-top:3rem}iam-modal .btn__group:last-child .btn,dialog .btn__group:last-child .btn{margin-bottom:0}}}*,*::before,*::after{box-sizing:border-box}:host{display:block;overflow:visible;container-type:inline-size}.carousel{margin-inline:calc(var(--carousel-spacing, 1.5rem)*-1);margin-bottom:2rem;display:block;overflow:visible}.carousel .carousel__wrapper{position:relative;overflow-x:clip}.carousel .carousel__inner{--gutter-x: 1rem;overflow-x:auto;padding-bottom:1rem;scroll-snap-type:x mandatory}.carousel .carousel__content{display:flex;flex-wrap:nowrap !important;margin-inline-end:0;padding-inline-start:var(--carousel-spacing, 1.5rem);padding-inline-end:var(--carousel-spacing, 1.5rem);margin-right:calc(-0.5*var(--gutter-x));margin-left:calc(-0.5*var(--gutter-x))}.carousel .col>*:last-child{margin-bottom:0;padding-bottom:0}::slotted(div){scroll-snap-align:start;scroll-margin-left:calc(var(--carousel-spacing, 1.5rem) - .5rem);flex-shrink:0;width:calc(100% + var(--last-item-extra, 0px));padding-right:.5rem;padding-left:.5rem;margin-top:var(--gutter-y)}::slotted(div:last-child){padding-inline-end:1.5rem;--last-item-extra: 1rem}@container (min-width: 36em){.carousel{margin-inline:calc(var(--carousel-spacing, 2.5rem)*-1)}.carousel .carousel__content{padding-inline-start:var(--carousel-spacing, 2.5rem);padding-inline-end:var(--carousel-spacing, 2.5rem)}:host([data-smcols]) ::slotted(div){scroll-snap-align:unset;flex:0 0 auto}:host([data-smcols="2"]) ::slotted(div){width:calc(50% + var(--last-item-extra, 0px))}:host([data-smcols="3"]) ::slotted(div){width:calc(33.3333333333% + var(--last-item-extra, 0px))}:host([data-smcols="4"]) ::slotted(div){width:calc(25% + var(--last-item-extra, 0px))}:host([data-smcols="2"]) ::slotted(div:nth-child(odd)),:host([data-smcols="3"]) ::slotted(div:nth-child(3n+1)),:host([data-smcols="4"]) ::slotted(div:nth-child(4n+1)){scroll-snap-align:start}::slotted(div){scroll-margin-left:calc(var(--carousel-spacing, 2.5rem) - .5rem)}::slotted(div:last-child){padding-inline-end:2.5rem;--last-item-extra: 2rem}}@container (min-width: 62em){.carousel{margin-inline:0;position:relative}.carousel__wrapper{overflow:hidden;margin-inline:-0.5rem}.carousel__content{padding-inline:0 !important;margin-inline:0 !important}::slotted(div){margin-left:0;scroll-margin-left:0}::slotted(div:last-child){padding-inline-end:.5rem;--last-item-extra: 0px}:host([data-mdcols]) ::slotted(div){scroll-snap-align:unset;flex:0 0 auto}:host([data-mdcols="2"]) ::slotted(div){width:calc(50% + var(--last-item-extra, 0px))}:host([data-mdcols="3"]) ::slotted(div){width:calc(33.3333333333% + var(--last-item-extra, 0px))}:host([data-mdcols="4"]) ::slotted(div){width:calc(25% + var(--last-item-extra, 0px))}:host([data-mdcols="5"]) ::slotted(div){width:calc(20% + var(--last-item-extra, 0px))}:host([data-mdcols="6"]) ::slotted(div){width:calc(16.6666666667% + var(--last-item-extra, 0px))}:host([data-mdcols="2"]) ::slotted(div:nth-child(odd)),:host([data-mdcols="3"]) ::slotted(div:nth-child(3n+1)),:host([data-mdcols="4"]) ::slotted(div:nth-child(4n+1)),:host([data-mdcols="5"]) ::slotted(div:nth-child(5n+1)),:host([data-mdcols="6"]) ::slotted(div:nth-child(6n+1)){scroll-snap-align:start}}.carousel__inner{scrollbar-width:none;-ms-overflow-style:none}.carousel__inner::-webkit-scrollbar{display:none}.carousel__btns{text-align:center;padding-bottom:.5rem}.btn-next,.btn-prev{margin:0 !important}.btn-next:after,.btn-prev:after{content:"";position:absolute;right:0;top:0;height:100%;width:100%;background:currentColor;mask-image:var(--icon-arrow);mask-size:50%;mask-repeat:no-repeat;mask-position:50% 60%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:50%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:55% 50%;transform:rotate(0deg)}.btn-prev:after{transform:rotate(180deg)}@container (min-width: 62em){.carousel__btns{padding-bottom:0}.btn-prev{position:absolute;top:50%;left:0;margin:-2rem 0 0 -3rem !important}.btn-next{position:absolute;top:50%;right:0;margin:-2rem -3rem 0 0 !important}}.carousel .carousel__controls{overflow:hidden;margin-inline:auto;margin-bottom:1rem;text-align:center;max-width:30rem}@container (min-width: 36em){.carousel .carousel__controls{width:100%}}.carousel .carousel__controls button{padding:0;margin:0 .2rem .2rem;border:none}.carousel .carousel__controls button{width:.5rem;height:.5rem;min-height:.5rem;border-radius:50%;text-indent:-50rem;overflow:hidden;background:#a5ecfd;margin-inline:.375rem;cursor:pointer;border:none}.carousel .carousel__controls button:hover{background-color:var(--colour-info)}.carousel .carousel__controls button:before{display:none}.carousel .carousel__controls button:first-child:last-child{display:none}.carousel__controls>button[aria-current]{--colour-active-thumbnail: var(--colour-info);border-color:var(--colour-active-thumbnail);background:var(--colour-info);width:1rem;height:1rem;min-height:1rem;margin-inline:.125rem}.carousel__controls>button[aria-current]:hover{background:var(--colour-info)}.carousel__progress{text-align:center;margin-bottom:1rem;display:none}input[type=range]{--track-size: 0.5rem;--track-colour: #a5ecfd;--thumb-colour: var(--colour-info);--thumb-size: 1rem;--thumb-size-outline: 0;width:90%;max-width:10.75rem;background:rgba(0,0,0,0);cursor:pointer;margin:0;height:1rem;border-radius:50%;accent-color:var(--thumb-colour);-webkit-appearance:none;appearance:none}input[type=range]::-webkit-slider-runnable-track{background:var(--track-colour);height:var(--track-size);border-radius:.5625rem}input[type=range]::-moz-range-track{background:var(--track-colour);height:var(--track-size);border-radius:.5625rem}input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--track-colour), var(--track-colour) var(--start-percent, 0%), var(--thumb-colour) var(--start-percent, 0%), var(--thumb-colour) calc(var(--percent, 0%)), var(--track-colour) calc(var(--percent, 0%)))}input[type=range]::-moz-range-track{background:linear-gradient(to right, var(--track-colour), var(--track-colour) var(--start-percent, 0%), var(--thumb-colour) var(--start-percent, 0%), var(--thumb-colour) calc(var(--percent, 0%)), var(--track-colour) calc(var(--percent, 0%)))}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;margin-top:-0.25rem;background-color:var(--thumb-colour);height:var(--thumb-size);width:var(--thumb-size);border-radius:50%;position:relative;z-index:99;pointer-events:all}input[type=range]::-moz-range-thumb{border:none;background-color:var(--thumb-colour);height:var(--thumb-size);width:var(--thumb-size);border-radius:50%;position:relative;z-index:99;pointer-events:all}input[type=range]:focus{outline:none}input[type=range]:hover::-webkit-slider-thumb,input[type=range]:focus::-webkit-slider-thumb{outline:var(--thumb-size-outline) solid var(--thumb-colour)}input[type=range]:active::-webkit-slider-thumb{outline:var(--thumb-size-outline) solid var(--thumb-colour)}input[type=range]:hover::-moz-range-thumb,input[type=range]:focus::-moz-range-thumb{outline:var(--thumb-size-outline) solid var(--thumb-colour)}input[type=range]:focus::-moz-range-thumb{outline:var(--thumb-size-outline) solid var(--thumb-colour)}.carousel__btns:has(~.carousel__controls button:first-child:nth-child(1):last-child){display:none}.carousel__controls:has(button:nth-child(5)){display:none}.carousel__controls:has(button:nth-child(5))~.carousel__progress{display:block}@container (min-width: 36em){:host([data-smcols="2"]) .carousel__controls>button:not(:nth-child(odd)),:host([data-smcols="3"]) .carousel__controls>button:not(:nth-child(3n+1)),:host([data-smcols="4"]) .carousel__controls>button:not(:nth-child(4n+1)){display:none}:host([data-smcols="2"]) .carousel__controls:has(button:first-child:nth-last-child(2)),:host([data-smcols="3"]) .carousel__controls:has(:is(button:first-child:nth-last-child(2),button:first-child:nth-last-child(3))),:host([data-smcols="4"]) .carousel__controls:has(:is(button:first-child:nth-last-child(2),button:first-child:nth-last-child(3),button:first-child:nth-last-child(4))),:host([data-smcols="2"]) .carousel__btns:has(~.carousel__controls button:first-child:nth-last-child(2)),:host([data-smcols="3"]) .carousel__btns:has(~.carousel__controls button:first-child:nth-last-child(2)),:host([data-smcols="3"]) .carousel__btns:has(~.carousel__controls button:first-child:nth-last-child(3)),:host([data-smcols="4"]) .carousel__btns:has(~.carousel__controls button:first-child:nth-last-child(2)),:host([data-smcols="4"]) .carousel__btns:has(~.carousel__controls button:first-child:nth-last-child(3)),:host([data-smcols="4"]) .carousel__btns:has(~.carousel__controls button:first-child:nth-last-child(4)){display:none}:host([data-smcols]) .carousel__controls{display:block}:host([data-smcols]) .carousel__controls~.carousel__progress{display:none}:host([data-smcols="2"]) .carousel__controls:has(button:nth-child(10)),:host([data-smcols="3"]) .carousel__controls:has(button:nth-child(15)),:host([data-smcols="4"]) .carousel__controls:has(button:nth-child(20)){display:none}:host([data-smcols="2"]) .carousel__controls:has(button:nth-child(10))~.carousel__progress,:host([data-smcols="3"]) .carousel__controls:has(button:nth-child(15))~.carousel__progress,:host([data-smcols="4"]) .carousel__controls:has(button:nth-child(20))~.carousel__progress{display:block}}@container (min-width: 62em){:host([data-mdcols]) .carousel__controls>button{display:inline-block !important}:host([data-mdcols]) .carousel__controls{display:block !important}:host([data-mdcols="2"]) .carousel__controls>button:not(:nth-child(odd)),:host([data-mdcols="3"]) .carousel__controls>button:not(:nth-child(3n+1)),:host([data-mdcols="4"]) .carousel__controls>button:not(:nth-child(4n+1)),:host([data-mdcols="5"]) .carousel__controls>button:not(:nth-child(5n+1)),:host([data-mdcols="6"]) .carousel__controls>button:not(:nth-child(6n+1)){display:none !important}:host([data-mdcols="2"]) .carousel__controls:has(button:first-child:nth-last-child(2)),:host([data-mdcols="3"]) .carousel__controls:has(:is(button:first-child:nth-last-child(2),button:first-child:nth-last-child(3))),:host([data-mdcols="4"]) .carousel__controls:has(:is(button:first-child:nth-last-child(2),button:first-child:nth-last-child(3),button:first-child:nth-last-child(4))),:host([data-mdcols="5"]) .carousel__controls:has(:is(button:first-child:nth-last-child(2),button:first-child:nth-last-child(3),button:first-child:nth-last-child(4),button:first-child:nth-last-child(5))),:host([data-mdcols="6"]) .carousel__controls:has(:is(button:first-child:nth-last-child(2),button:first-child:nth-last-child(3),button:first-child:nth-last-child(4),button:first-child:nth-last-child(5),button:first-child:nth-last-child(6))),:host([data-mdcols="2"]) .carousel__btns:has(~.carousel__controls button:first-child:nth-last-child(2)),:host([data-mdcols="3"]) .carousel__btns:has(~.carousel__controls button:first-child:nth-last-child(2)),:host([data-mdcols="3"]) .carousel__btns:has(~.carousel__controls button:first-child:nth-last-child(3)),:host([data-mdcols="4"]) .carousel__btns:has(~.carousel__controls button:first-child:nth-last-child(2)),:host([data-mdcols="4"]) .carousel__btns:has(~.carousel__controls button:first-child:nth-last-child(3)),:host([data-mdcols="4"]) .carousel__btns:has(~.carousel__controls button:first-child:nth-last-child(4)) :host([data-mdcols="5"]) .carousel__btns:has(~.carousel__controls button:first-child:nth-last-child(2)),:host([data-mdcols="5"]) .carousel__btns:has(~.carousel__controls button:first-child:nth-last-child(3)),:host([data-mdcols="5"]) .carousel__btns:has(~.carousel__controls button:first-child:nth-last-child(4)),:host([data-mdcols="5"]) .carousel__btns:has(~.carousel__controls button:first-child:nth-last-child(5)),:host([data-mdcols="6"]) .carousel__btns:has(~.carousel__controls button:first-child:nth-last-child(2)),:host([data-mdcols="6"]) .carousel__btns:has(~.carousel__controls button:first-child:nth-last-child(3)),:host([data-mdcols="6"]) .carousel__btns:has(~.carousel__controls button:first-child:nth-last-child(4)),:host([data-mdcols="6"]) .carousel__btns:has(~.carousel__controls button:first-child:nth-last-child(5)),:host([data-mdcols="6"]) .carousel__btns:has(~.carousel__controls button:first-child:nth-last-child(6)){display:none !important}:host([data-mdcols]) .carousel__controls{display:block !important}:host([data-mdcols]) .carousel__controls~.carousel__progress{display:none !important}:host([data-mdcols="2"]) .carousel__controls:has(button:nth-child(10)),:host([data-mdcols="3"]) .carousel__controls:has(button:nth-child(15)),:host([data-mdcols="4"]) .carousel__controls:has(button:nth-child(20)),:host([data-mdcols="5"]) .carousel__controls:has(button:nth-child(25)),:host([data-mdcols="6"]) .carousel__controls:has(button:nth-child(30)){display:none !important}:host([data-mdcols="2"]) .carousel__controls:has(button:nth-child(10))~.carousel__progress,:host([data-mdcols="3"]) .carousel__controls:has(button:nth-child(15))~.carousel__progress,:host([data-mdcols="4"]) .carousel__controls:has(button:nth-child(20))~.carousel__progress,:host([data-mdcols="5"]) .carousel__controls:has(button:nth-child(25))~.carousel__progress,:host([data-mdcols="6"]) .carousel__controls:has(button:nth-child(30))~.carousel__progress{display:block !important}}:host(.hide-btns) .carousel__btns,:host(.hide-controls) .carousel__controls{display:none}:host(.thumbnails) .carousel__controls{display:flex !important;flex-wrap:wrap;max-width:100%;overflow:visible}:host(.thumbnails) .carousel__controls button{padding:0;margin:0 .2rem .4rem;width:6rem;height:auto;aspect-ratio:var(--carousel-image-aspect-ratio, 3/2);border-radius:0;position:relative;border-radius:.25rem}:host(.thumbnails) .carousel__controls button img{position:absolute;inset:0;height:100%;width:100%;object-fit:cover;margin:0}:host(.thumbnails) .carousel__controls button[aria-current]{outline:2px solid var(--colour-info)}:host(.thumbnails) .carousel .carousel__btns{padding-bottom:.5rem}:host(.thumbnails) .carousel .btn-next,:host(.thumbnails) .carousel .btn-prev{position:relative;margin:0 !important}:host(.thumbnails) .carousel .carousel__progress{display:none !important}::slotted(div.image__wrapper){width:100%;aspect-ratio:var(--carousel-image-aspect-ratio, 3/2);position:relative}/*# sourceMappingURL=assets/css/components/carousel.component.css.map */
6
+ @layer elements{button{border-radius:0;text-transform:none;margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button:focus:not(:focus-visible){outline:0}:is(button,[type=button],[type=reset],[type=submit],[role=button]){-webkit-appearance:button;&:not(:disabled){cursor:pointer}}.btn{--btn-margin: 1rem;--btn-padding-block: 0.75rem;--btn-padding-inline: 2.5rem;--btn-border-width: 2px;--btn-font-size: 1.125rem;--btn-line-height: 1.25rem;display:inline-block;font-weight:bold;text-align:left;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;color:var(--colour-btn);font-size:var(--btn-font-size);line-height:var(--btn-line-height);padding:var(--btn-padding-block) var(--btn-padding-inline);border-radius:1.5rem;margin-bottom:var(--btn-margin);background:none;transition:border .5s,background .5s,color .5s;height:auto;max-width:fit-content;appearance:none;white-space:nowrap;&:not(.btn-secondary)[class*=colour-]{--colour-btn-bg: var(--colour);--colour-btn-border: var(--colour)}&:is(.colour-primary,.colour-dark,.colour-danger,.colour-black){--colour-btn: #fcfcfc}&:not(.border-0){background:var(--colour-btn-bg);border:var(--btn-border-width) solid var(--colour-btn-border)}&:not(:last-child){margin-right:var(--btn-margin)}}@media screen and (min-width: 36em){.btn{--btn-margin: 1.5rem}}a:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) .btn,.btn:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){outline:0;text-decoration:none;background:var(--colour-btn-bg-hover);color:var(--colour-btn-hover);border-radius:1.5rem}a:is(:active,.active):not([disabled]) .btn,.btn:is(:active,.active):not([disabled]){filter:brightness(85%);transition:background .1s,color .1s;color:var(--colour-btn);border-radius:1.5rem}a:disabled .btn,.btn:disabled,[disabled] .btn,.btn[disabled]{opacity:.4;cursor:not-allowed}.btn.btn-complete{--colour: var(--colour-success);--colour-btn-bg-hover: var(--colour);--colour-btn-border-hover: var(--colour);--colour-btn-hover: var(--colour-primary-theme);--colour-btn-bg: var(--colour);--colour-btn-border: var(--colour);position:relative;padding-left:3.5rem;padding-right:3.5rem}a:is(:hover,:focus,.hover):not([disabled],:active,.active) .btn.btn-complete,.btn.btn-complete:is(:hover,:focus,.hover):not([disabled],:active,.active){padding-left:2.5rem;padding-right:2.5rem;&:before{content:"\uF00C";font-family:var(--fa-family-classic);margin-right:1rem;font-style:inherit;width:1rem;display:inline-block;height:var(--btn-line-height);vertical-align:bottom}}.btn.btn-sm{--btn-padding-block: 0.5rem;--btn-padding-inline: 2rem;--btn-margin: 0.5rem;--btn-font-size: 1rem}.btn{&[class*=fa-]:before{content:var(--fa);font-family:var(--fa-family-classic)}&[class*=fa-after]{padding-right:4rem}&[class*=fa-after]:before{margin-right:0;margin-right:.375rem;position:absolute;right:1.5rem;top:50%;transform:translate(0, -50%)}&:not(.btn-compact):before{margin-right:1rem}i[class*=fa-]{--fa-width: 1em;font-family:var(--fa-family-classic);margin-right:1rem;line-height:1em;font-style:inherit;&:not(:first-child){margin-left:1rem;margin-right:0}}}.btn.btn--prompt{&:after{content:"";height:var(--btn-line-height);width:1rem;display:inline-block;background:currentColor;mask-image:var(--icon-arrow);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;vertical-align:bottom;margin-left:1rem}}a:is(:hover,:focus,.hover):not([disabled],:active,.active) .btn.btn--prompt,.btn.btn--prompt:is(:hover,:focus,.hover):not([disabled],:active,.active){&:after{margin-left:1.5rem;margin-right:-0.5rem}}.btn-filter{&:after{content:"\uF1DE";display:inline-block;margin-left:1em;margin-bottom:-0.15em;height:1em;width:1em;z-index:var(--index-focus);color:currentColor;font-weight:300;font-family:var(--fa-family-classic)}}}@layer elements{.btn-secondary{color:var(--colour-btn-secondary);&:not(.border-0){background:var(--colour-btn-secondary-bg);border:2px solid var(--colour-btn-secondary-border)}}a:is(:hover,:focus,.hover,:active,.active):not([disabled]) .btn-secondary,.btn-secondary:is(:hover,:focus,.hover,:focus-within,:active,.active):not([disabled]){background:var(--colour-btn-secondary-bg-hover);color:var(--colour-btn-secondary-hover)}}@layer elements{.btn.btn-tertiary{background-color:transparent;border:none;color:var(--colour-link);margin:0 var(--btn-margin) var(--btn-margin) 0;padding:0;font-size:1.125rem;font-weight:normal;line-height:1.5rem;min-height:1.5rem;position:relative;&:after{position:absolute;content:"";top:100%;left:50%;height:2px;width:100%;transform:translate(-50%, 0);background:var(--colour-underline);transition:width .5s}&.text-decoration-none:after{width:0%}&[class*=fa-]{margin-left:0;margin-right:.5rem}&[class*=fa-]:not(:first-child){margin-left:.5rem;margin-right:0}&:is(:hover,:focus,.hover,:focus-within):not([disabled],:disabled,:active,.active){&:after{width:60% !important}}&:is(:active,.active):not([disabled],:disabled){color:var(--colour-active)}}}@layer elements{.btn-action{--btn-border-width: 1px;--btn-padding-block: 0.3125rem /* 5px */;--btn-padding-inline: 0.3125rem /* 5px */;--btn-margin: 0.5rem;border-radius:.25rem !important;font-weight:400 !important;font-size:1rem;line-height:1.25rem;&:not(.btn-primary){color:var(--colour-heading)}&:not(.btn-primary):not(.border-0){background-color:var(--colour-canvas-2);border:var(--btn-border-width) solid var(--colour-muted)}&.btn[class*=fa-]:before{content:var(--fa);margin-right:.375rem}&.icon-only{position:relative;text-indent:-300vw;overflow:hidden;min-width:1.75rem;&:before{position:absolute;left:0;top:0;min-width:1.75rem;text-align:center;text-indent:0;padding-inline:.25rem;line-height:1.85rem}}a:not(.btn-primary):is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) &,&:not(.btn-primary):is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){background:var(--colour-btn-action-hover-bg)}.btn-primary:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) &,&.btn-primary:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){filter:brightness(90%);background:var(--colour-btn-bg);border:var(--btn-border-width) solid var(--colour-btn-border);color:var(--colour-btn)}a:is(:active,.active):not([disabled]):not(.btn-primary) &,&:is(:active,.active):not([disabled]):not(.btn-primary){filter:brightness(85%);transition:all .1s;color:var(--colour-heading)}}.btn-action:not(.btn-compact).fa-compact-only:before{display:none !important}}@layer elements{.btn-compact{--compact-size: 3rem;padding:0 !important;margin-bottom:.5rem;text-align:center;width:var(--compact-size);min-width:var(--compact-size);max-width:var(--compact-size);height:var(--compact-size) !important;min-height:var(--compact-size) !important;max-height:var(--compact-size) !important;align-content:center;line-height:1 !important;text-indent:-500px;overflow:hidden;position:relative;font-size:1rem;&:not(:last-child){margin-right:.5rem}&:before{content:var(--fa);position:absolute;display:block;top:0;left:0;width:100%;height:100%;text-indent:0;line-height:calc(var(--compact-size) - .25rem);font-weight:900}[class*=fa-]:before{line-height:calc(var(--compact-size) - .25rem);@container style(--theme: dark){color:white}}&.btn-sm{--compact-size: 2.5rem;font-size:1rem;padding:0 !important}&.btn-action{--compact-size: 2rem;font-size:1rem;&:before{font-size:1em;font-weight:400}}&.btn-secondary{--colour-btn-bg: transparent;--colour-btn-border: transparent;border-color:transparent;&:not([class*=colour-]){--colour: var(--colour-light)}}&.btn-secondary:is(:hover,:focus,.hover,:active,.active,[aria-expanded],:focus-within):not([disabled]):not(.btn-collapse){background-color:var(--colour);color:var(--colour-primary-theme);border-color:var(--colour);&:is(.colour-primary,.colour-dark,.colour-danger,.colour-black){color:var(--colour-inverted)}}&[data-number]{position:relative}&[data-number]:after{content:attr(data-number);position:absolute;top:.5em;z-index:99;background:var(--colour-danger);height:1.5em;width:1.5em;border-radius:50%;text-indent:0;left:50%;font-size:.5em;line-height:1.5em;text-align:center;color:white;letter-spacing:-0.1em;font-family:arial,sans-serif}}.btn-compact{&:is(.fa-left,.fa-chevron-left,.fa-right,.fa-chevron-right,.fa-up,.fa-chevron-up,.fa-down,.fa-chevron-down,.fa-plus,.fa-bars,.fa-edit,.fa-envelope,.fa-calendar){--iso-display: block;--iso-font-size: 1.5rem;--iso-border-radius: 50%;--iso-text-indent: -500px}}@container style(--font-body){.btn-compact{font-size:var(--iso-font-size, 0.6rem) !important;text-indent:var(--iso-text-indent, 0px);white-space:initial;&:not(.btn-action){border-radius:var(--iso-border-radius, 0.25rem) !important}&:before{display:var(--iso-display, none);font-family:monospace !important;content:var(--iso) !important}}}@container style(--fa-font-regular){.btn-compact{text-indent:-500px;font-size:1rem !important;&:not(.btn-action){border-radius:50% !important}&:before{font-family:"Font Awesome 7 Pro" !important;content:var(--fa) !important;display:block}}}}@layer elements{.btn[popovertarget]{position:relative;anchor-name:--button2;&>.fa-chevron-down{display:none}&:not(:has(i)):not(.no-icon):after{content:"";display:inline-block;margin-right:.25em;margin-left:1em;height:.8em;width:.8em;z-index:var(--index-focus);background:currentColor;mask-image:var(--icon-arrow);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;transform:rotate(90deg)}&[aria-pressed]:after{transform:rotate(270deg)}}.btn:has(select){position:relative;padding:0;max-width:fit-content;min-width:fit-content;width:fit-content;select{all:unset !important;padding:var(--btn-padding-block) var(--btn-padding-inline) !important;padding-right:calc(var(--btn-padding-inline) + 2rem) !important;border-radius:1.5rem !important;appearance:none !important;background:none !important;border:none !important;color:currentColor !important;display:block;outline:none;font-weight:inherit !important;font-size:var(--btn-font-size) !important;line-height:var(--btn-line-height) !important;field-sizing:content !important;appearance:base-select !important}&:after{position:absolute;top:.625rem;right:1.5rem;content:"";height:1.5rem;width:1rem;display:inline-block;background:currentColor;mask-image:var(--icon-arrow);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;vertical-align:bottom;margin-left:1rem;transform:rotate(90deg);pointer-events:none}}.btn-action:has(select){padding-block:0;padding-right:2rem;font-size:1em;select{margin:0rem 0rem !important;padding-right:2rem !important;margin-right:-2rem !important;font-size:1rem !important}&:after{top:.2rem;right:.5rem}}}@layer elements{.btn__group{display:flex;flex-direction:column;row-gap:var(--gap);reading-flow:source-order;margin-bottom:1.5rem;.btn-compact{max-width:fit-content;margin-inline:auto}}:where(.btn__group,iam-modal){reading-flow:source-order;.btn{margin-inline-end:0;width:100%;max-width:100%;text-align:center;white-space:normal;margin:0;&:not(:last-child){margin-right:0}}.btn-tertiary{max-width:fit-content;margin-block:0 !important;margin-inline:auto !important;order:3;reading-order:3}.btn-secondary{order:2;reading-order:2}.btn-primary{order:1;reading-order:1;margin:0;&:not(:last-child){margin:0}}}:is(iam-form,form) .btn__group{padding-top:1rem}@container (min-width: 36em){.btn__group{flex-direction:row;row-gap:0;gap:var(--gap);flex-wrap:wrap;.btn-tertiary{max-width:fit-content;margin-inline:0 !important;margin-block:auto;order:1}.btn-secondary{order:2}.btn-primary{order:3}.btn-compact{margin-inline:0;margin-block:auto}}:where(iam-modal,.btn__group){.btn{max-width:fit-content;white-space:nowrap;margin-block:auto}}.btn__group{.btn-tertiary{reading-order:1}.btn-secondary{reading-order:2}.btn-primary{reading-order:3}}iam-modal{.btn-tertiary{reading-order:3;order:1}.btn-secondary{order:2;reading-order:2}.btn-primary{order:3;reading-order:1}}.btn__group.text-end{justify-content:flex-end}:is(iam-form,form) .btn__group{justify-content:flex-end;padding-top:3rem}iam-modal .btn__group:last-child .btn,dialog .btn__group:last-child .btn{margin-bottom:0}}}*,*::before,*::after{box-sizing:border-box}@layer components{.carousel-wrapper{padding-inline:1.5rem;margin-inline:-1.5rem;overflow:hidden;container-type:inline-size;display:block;margin-bottom:var(--carousel-mb, 1.5rem)}.carousel{--button-height: 3rem;--marker-height: 1.25rem;--marker-mb: 1rem;padding-inline:.5rem;margin-inline:-0.5rem;padding-bottom:calc(1rem + var(--button-height) + var(--marker-height) + var(--marker-mb));scroll-padding:.5rem;display:grid;grid-auto-flow:column;gap:var(--gap);anchor-scope:all;anchor-name:--carousel;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;scroll-marker-group:before;scroll-behavior:smooth;grid-auto-flow:column;grid-auto-columns:calc(100%/var(--count, 1) - var(--gap)*(var(--count, 1) - 1)/var(--count, 1))}.carousel>*{container-type:scroll-state;grid-column:auto;min-height:100%;margin:0;scroll-snap-align:start}.carousel::scroll-button(*){cursor:pointer;position-anchor:--carousel;background:none;border:none;font-size:1rem !important;padding:0 !important;margin-bottom:.5rem;text-align:center;width:var(--button-height);height:var(--button-height);align-content:center;line-height:1 !important;overflow:hidden;font-size:1rem;font-family:"Font Awesome 7 Pro" !important;display:none;position:absolute;position-area:block-end center;border-radius:50%;margin-top:calc((var(--button-height) + var(--marker-height) + var(--marker-mb))*-1)}.carousel::scroll-button(left){display:inline-block;content:"\\f053"/"Scroll left" !important;margin-left:calc(var(--button-height)*-1) !important}.carousel::scroll-button(right){display:inline-block;content:"\\f054"/"Scroll right" !important;margin-right:calc(var(--button-height)*-1) !important}.carousel::scroll-button(*):disabled{pointer-events:none}.carousel::scroll-button(*):is(:hover,:focus-visible){outline-offset:5px;background-color:var(--colour-light);border-color:var(--colour)}@container (min-width: 62em){.carousel-wrapper .carousel{--button-height: 0rem}.carousel-wrapper .carousel::scroll-button(*){--button-height: 3rem;margin-top:-1rem}.carousel-wrapper .carousel::scroll-button(left){position-area:center inline-start}.carousel-wrapper .carousel::scroll-button(right){position-area:center inline-end}}.carousel::scroll-marker-group{position:absolute;position-anchor:--carousel;container:marker-group/inline-size;display:grid;place-content:safe center;box-sizing:border-box;border-radius:var(--radius-round);scrollbar-width:none;scroll-behavior:smooth;inline-size:100%;max-inline-size:100cqi;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;grid-auto-columns:var(--marker-height);grid-auto-rows:var(--marker-height);overflow-x:auto;top:auto;bottom:anchor(bottom);grid-auto-flow:column;justify-items:center;align-items:center;padding-block:0;margin-bottom:var(--marker-mb)}.carousel>*::scroll-marker{content:"";scroll-snap-align:start;cursor:pointer;text-decoration:none;interactivity:auto;width:.5rem;aspect-ratio:1;border-radius:50%;overflow:hidden;background:#a5ecfd;cursor:pointer;border:none}.carousel>*::scroll-marker:target-current{border-color:var(--colour-info);background:var(--colour-info);width:1rem;height:1rem;min-height:1rem;margin-inline:.125rem}.carousel-wrapper:has(.carousel>*:first-child:last-child){--hide-buttons: 1;--hide-markers: 1}@container (min-width: 36em){.carousel[data-smcols="2"]:not(:has(>*:nth-child(3))){--hide-buttons: 1;--hide-markers: 1;--button-height: 0rem;--marker-height: 0rem;--marker-mb: 0rem}.carousel[data-smcols="3"]:not(:has(>*:nth-child(4))){--hide-buttons: 1;--hide-markers: 1;--button-height: 0rem;--marker-height: 0rem;--marker-mb: 0rem}}@container (min-width: 62em){.carousel[data-mdcols="2"]:not(:has(>*:nth-child(3))){--hide-buttons: 1;--hide-markers: 1;--button-height: 0rem;--marker-height: 0rem;--marker-mb: 0rem}.carousel[data-mdcols="3"]:not(:has(>*:nth-child(4))){--hide-buttons: 1;--hide-markers: 1;--button-height: 0rem;--marker-height: 0rem;--marker-mb: 0rem}}@container (min-width: 36em){.carousel[data-smcols="2"]{--count: 2}.carousel[data-smcols="3"]{--count: 3}}@container (min-width: 64em){.carousel[data-mdcols="2"]{--count: 2}.carousel[data-mdcols="3"]{--count: 3}}@container style(--count){.carousel>*{scroll-snap-align:unset}.carousel>*::scroll-marker{display:none}}@container not scroll-state(snapped: x){.carousel>*{--opacity: 0}}@container style(--count: 2){.carousel>*:nth-child(2n-1){scroll-snap-align:start;scroll-snap-stop:always}.carousel>*:nth-child(2n-1)::scroll-marker{display:block}}@container style(--count: 3){.carousel>*:nth-child(3n-2){scroll-snap-align:start;scroll-snap-stop:always}.carousel>*:nth-child(3n-2)::scroll-marker{display:block}}@container style(--hide-buttons){.carousel-wrapper{--button-height: 0rem}.carousel-wrapper .carousel::scroll-button(*){display:none}}@container style(--hide-markers){.carousel-wrapper{--marker-height: 0rem;--marker-mb: 0rem}.carousel-wrapper .carousel::scroll-marker-group{display:none}}.admin-panel{--hide-buttons: 1}.admin-panel .carousel{--button-height: 0rem;--marker-mb: 0rem;margin-bottom:0}.carousel__progress{text-align:center;display:none}input[type=range]{--track-size: 0.5rem;--track-colour: #a5ecfd;--thumb-colour: var(--colour-info);--thumb-size: 1rem;--thumb-size-outline: 0;width:90%;max-width:10.75rem;background:rgba(0,0,0,0);cursor:pointer;margin:0;height:1rem;border-radius:50%;accent-color:var(--thumb-colour);-webkit-appearance:none;appearance:none}input[type=range]::-webkit-slider-runnable-track{background:var(--track-colour);height:var(--track-size);border-radius:.5625rem}input[type=range]::-moz-range-track{background:var(--track-colour);height:var(--track-size);border-radius:.5625rem}input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--track-colour), var(--track-colour) var(--start-percent, 0%), var(--thumb-colour) var(--start-percent, 0%), var(--thumb-colour) calc(var(--percent, 0%)), var(--track-colour) calc(var(--percent, 0%)))}input[type=range]::-moz-range-track{background:linear-gradient(to right, var(--track-colour), var(--track-colour) var(--start-percent, 0%), var(--thumb-colour) var(--start-percent, 0%), var(--thumb-colour) calc(var(--percent, 0%)), var(--track-colour) calc(var(--percent, 0%)))}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;margin-top:-0.25rem;background-color:var(--thumb-colour);height:var(--thumb-size);width:var(--thumb-size);border-radius:50%;position:relative;z-index:99;pointer-events:all}input[type=range]::-moz-range-thumb{border:none;background-color:var(--thumb-colour);height:var(--thumb-size);width:var(--thumb-size);border-radius:50%;position:relative;z-index:99;pointer-events:all}input[type=range]:focus{outline:none}input[type=range]:hover::-webkit-slider-thumb,input[type=range]:focus::-webkit-slider-thumb{outline:var(--thumb-size-outline) solid var(--thumb-colour)}input[type=range]:active::-webkit-slider-thumb{outline:var(--thumb-size-outline) solid var(--thumb-colour)}input[type=range]:hover::-moz-range-thumb,input[type=range]:focus::-moz-range-thumb{outline:var(--thumb-size-outline) solid var(--thumb-colour)}input[type=range]:focus::-moz-range-thumb{outline:var(--thumb-size-outline) solid var(--thumb-colour)}@supports not selector(::scroll-marker-group){.carousel{--button-height: 0rem;--marker-height: 0rem;--marker-mb: 0rem}#carousel__progress{display:block}@container (min-width: 36em){#carousel__progress{display:none}#carousel__progress-sm{display:block}}@container (min-width: 62em){#carousel__progress-sm{display:none}#carousel__progress-md{display:block}}}@supports selector(::scroll-marker-group){@container (max-width: 36em){.carousel:has(>*:nth-child(5)){--button-height: 0rem;--marker-height: 0rem;--marker-mb: 0rem;--hide-buttons: 1;--hide-markers: 1}.carousel:has(>*:nth-child(5))+#carousel__progress{display:block}}@container (min-width: 36em){#carousel__progress{display:none}.carousel[data-smcols="2"]:has(>*:nth-child(10)){--button-height: 0rem;--marker-height: 0rem;--marker-mb: 0rem;--hide-buttons: 1;--hide-markers: 1}.carousel[data-smcols="2"]:has(>*:nth-child(10))+#carousel__progress-sm{display:block}.carousel[data-smcols="3"]:has(>*:nth-child(15)){--button-height: 0rem;--marker-height: 0rem;--marker-mb: 0rem;--hide-buttons: 1;--hide-markers: 1}.carousel[data-smcols="3"]:has(>*:nth-child(15))+#carousel__progress-sm{display:block}}@container (min-width: 62em){#carousel__progress-sm{display:none}.carousel[data-mdcols="2"]:has(>*:nth-child(10)){--button-height: 0rem;--marker-height: 0rem;--marker-mb: 0rem;--hide-buttons: 1;--hide-markers: 1}.carousel[data-mdcols="2"]:has(>*:nth-child(10))+#carousel__progress-md{display:block}.carousel[data-mdcols="3"]:has(>*:nth-child(15)){--button-height: 0rem;--marker-height: 0rem;--marker-mb: 0rem;--hide-buttons: 1;--hide-markers: 1}.carousel[data-mdcols="3"]:has(>*:nth-child(15))+#carousel__progress-md{display:block}}}.carousel__controls{display:flex !important;flex-wrap:wrap;max-width:100%;overflow:visible}.carousel__controls button{padding:0;margin:0 .2rem .4rem;width:6rem;height:auto;aspect-ratio:var(--carousel-image-aspect-ratio, 3/2);border-radius:0;position:relative;border-radius:.25rem}.carousel__controls button img{position:absolute;inset:0;height:100%;width:100%;object-fit:cover;margin:0}.carousel__controls button[aria-current]{outline:2px solid var(--colour-info)}}/*# sourceMappingURL=assets/css/components/carousel.component.css.map */
7
7
 
8
8
  ${this.hasAttribute("css")?`@import "${this.getAttribute("css")}";`:""}
9
9
  </style>
10
- <div class="carousel" part="carousel">
11
- <div class="carousel__wrapper">
12
- <div class="carousel__inner">
13
- <div class="carousel__content" part="content">
14
- <slot></slot>
15
- </div>
16
- </div>
10
+ <div class="carousel-wrapper">
11
+ <div class="carousel" part="carousel">
12
+ <slot></slot>
17
13
  </div>
18
- <div class="carousel__btns" part="btns">
19
- <button class="btn btn-secondary btn-compact fa-plus-large btn-prev" data-go="0" disabled part="prev">
20
- Prev
21
- </button>
22
- <button class="btn btn-secondary btn-compact fa-plus-large btn-next" data-go="2" part="next">Next</button>
14
+ <div class="carousel__controls"></div>
15
+ <div id="carousel__progress" class="carousel__progress">
16
+ <input type="range" min="0" max="100" value="0" step="1" />
23
17
  </div>
24
-
25
- <div class="carousel__controls" part="controls"></div>
26
-
27
- <div class="carousel__progress" part="progress">
28
- <input type="range" min="0" max="100" value="1" step="1" />
18
+ <div id="carousel__progress-sm" class="carousel__progress">
19
+ <input type="range" min="0" max="100" value="0" step="1" />
20
+ </div>
21
+ <div id="carousel__progress-md" class="carousel__progress">
22
+ <input type="range" min="0" max="100" value="0" step="1" />
29
23
  </div>
30
24
  </div>
31
- `,this.shadowRoot.appendChild(e.content.cloneNode(!0))}connectedCallback(){const e=this;let a=[];const r=this.shadowRoot.querySelector(".carousel__controls");e.querySelector("[data-thumbnail]")&&(a=W(e),e.classList.add("thumbnails")),r.innerHTML=L(e,a),Array.from(e.querySelectorAll(":scope > div > img:first-child:last-child, :scope > div > picture:first-child:last-child img")).forEach(t=>{t.style.inset="0 0.5rem 0 0.5rem",t.style.position="absolute",t.style.width="calc(100% - 1rem)",t.style.height="100%",t.style["object-fit"]="cover",t.closest("div").classList.add("image__wrapper")}),P(e),new MutationObserver(function(t){t.forEach(function(i){const u=i.target;I(u)})}).observe(e,{attributes:!1,childList:!0,subtree:!0}),C(e,"iam-carousel",["pip-clicked","next-clicked","prev-clicked","slider-changed"])}}export{R as default};
25
+ `,this.shadowRoot.appendChild(l.content.cloneNode(!0))}connectedCallback(){var l;const e=(l=this.shadowRoot)===null||l===void 0?void 0:l.querySelector(".carousel"),t=this.shadowRoot.querySelector('#carousel__progress [type="range"]'),r=this.shadowRoot.querySelector('#carousel__progress-sm [type="range"]'),o=this.shadowRoot.querySelector('#carousel__progress-md [type="range"]'),a=this.querySelectorAll(":scope > *").length,i=this.progressPercent;let n,u="mouseup",h="mousedown";"ontouchstart"in document.documentElement&&(u="touchend",h="touchstart"),e==null||(e.innerHTML=this.innerHTML),e?.setAttribute("data-smcols",this.getAttribute("data-smcols")),e?.setAttribute("data-mdcols",this.getAttribute("data-mdcols")),t.setAttribute("max",a),t.style.setProperty("--percent",i(t.value,a)),t.addEventListener(h,()=>{clearInterval(n),n=setInterval(function(){t.style.setProperty("--percent",i(t.value,a))},10)}),t.addEventListener(u,function(){clearInterval(n)}),t.addEventListener("change",()=>{clearInterval(n),t.style.setProperty("--percent",i(t.value,a));const s=Math.floor(e.scrollWidth/a*(t.value-1));e.scrollTo({top:0,left:s,behavior:"smooth"})});const b=this.getAttribute("data-smcols")?this.getAttribute("data-smcols"):1,c=Math.floor(a/b)*b;r.setAttribute("max",c),r.setAttribute("step",b),r.style.setProperty("--percent",i(r.value,c)),r.addEventListener(h,()=>{clearInterval(n),n=setInterval(function(){r.style.setProperty("--percent",i(r.value,c))})}),r.addEventListener(u,function(){clearInterval(n)}),r.addEventListener("change",()=>{clearInterval(n),r.style.setProperty("--percent",i(r.value,c));const s=Math.floor(e.scrollWidth/c*r.value);console.log(r.value),e.scrollTo({top:0,left:s,behavior:"smooth"})});const p=this.getAttribute("data-smcols")?this.getAttribute("data-smcols"):1,m=Math.floor(a/p)*p;o.setAttribute("max",m),o.setAttribute("step",p),o.style.setProperty("--percent",i(o.value,m)),o.addEventListener(h,()=>{clearInterval(n),n=setInterval(function(){o.style.setProperty("--percent",i(o.value,m))})}),o.addEventListener(u,function(){clearInterval(n)}),o.addEventListener("change",()=>{clearInterval(n),o.style.setProperty("--percent",i(o.value,m));const s=Math.floor(e.scrollWidth/m*o.value);console.log(o.value),e.scrollTo({top:0,left:s,behavior:"smooth"})});const d=this.shadowRoot.querySelector(".carousel__controls");if(e.querySelector("[data-thumbnail]")){const s=this.generateThumbnailList(e);e.classList.add("thumbnails"),d.innerHTML=this.generatePipsHTML(e,s)}d.addEventListener("click",s=>{var g;if((g=d?.querySelector("[aria-current]"))===null||g===void 0||g.removeAttribute("aria-current"),s.target.closest("button[data-slide]")){s.target.closest("button[data-slide]").setAttribute("aria-current","true");const f=Math.floor(e.scrollWidth/a*s.target.closest("button[data-slide]").getAttribute("data-slide"));e.scrollTo({top:0,left:f,behavior:"smooth"})}})}}export{y as default};
32
26
  //# sourceMappingURL=carousel.component.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"carousel.component.min.js","sources":["../../modules/carousel.js","../_global.js","carousel.component.js"],"sourcesContent":["export const generateThumbnailList = function (carouselComponent) {\n const thumbnailImages = [];\n Array.from(carouselComponent.querySelectorAll(':scope > div')).forEach((slide, index) => {\n if (slide.hasAttribute('data-thumbnail')) {\n thumbnailImages[index] = slide.getAttribute('data-thumbnail');\n }\n });\n return thumbnailImages;\n};\nexport const generatePipsHTML = function (carouselComponent, thumbnailImages) {\n const itemCount = carouselComponent.querySelectorAll(':scope > div').length;\n let pips = '';\n for (let i = 1; i <= itemCount; i++) {\n let pipContent = null;\n let pipClass = '';\n if (thumbnailImages.length && thumbnailImages[i - 1]) {\n pipClass = 'has-thumbnail';\n pipContent = `<img src=\"${thumbnailImages[i - 1]}\" alt=\"Slide ${i}\" height=\"148\"/>`;\n }\n else {\n pipContent = `Slide ${i}`;\n }\n pips += `<button class=\"control-${i} ${pipClass}\" data-slide=\"${i}\" ${i == 1 ? 'aria-current' : ''}>${pipContent}</button>`;\n }\n return pips;\n};\nexport const getProgressMax = function (itemCount, visibleItems) {\n if (visibleItems == 1) {\n return itemCount;\n }\n const max = Math.ceil(itemCount / visibleItems) * visibleItems - visibleItems;\n return max + 1;\n};\nconst getProgressPercent = function (value, max) {\n return ((value - 1) / (max - 1)) * 100;\n};\nexport const carousel = function (carouselComponent) {\n let scrollTimeout;\n const carouselElement = carouselComponent.shadowRoot.querySelector('.carousel');\n const carouselInner = carouselElement.querySelector('.carousel__inner');\n const carouselControls = carouselElement.querySelector('.carousel__controls');\n const carouselProgress = carouselElement.querySelector('.carousel__progress [type=\"range\"]');\n const itemCount = carouselComponent.querySelectorAll(':scope > div').length;\n let scrollArea = carouselInner.clientWidth;\n let itemWidth = carouselComponent.querySelector(':scope > div').scrollWidth;\n let visibleItems = Math.round(scrollArea / itemWidth);\n carouselProgress.setAttribute('min', 1);\n carouselProgress.setAttribute('step', visibleItems);\n let progressMax = getProgressMax(itemCount, visibleItems);\n carouselProgress.setAttribute('max', progressMax);\n carouselProgress.value = 1;\n let percent = getProgressPercent(1, progressMax);\n carouselProgress.style.setProperty('--percent', percent + '%');\n let stepperInterval, stepperEvent = 'mouseup', stepperStart = 'mousedown';\n if ('ontouchstart' in document.documentElement) {\n stepperEvent = 'touchend';\n stepperStart = 'touchstart';\n }\n // On scroll we need to make sure the buttons get corrected and the next testimonial is shown\n carouselInner.addEventListener('scroll', function () {\n clearTimeout(scrollTimeout);\n scrollTimeout = setTimeout(function () {\n const scrollArea = carouselInner.clientWidth;\n const scrollWidth = carouselInner.scrollWidth;\n const scrollLeft = carouselInner.scrollLeft;\n let targetSlide = Math.round((scrollLeft / scrollWidth) * itemCount) + 1;\n const itemWidth = carouselComponent.querySelector(':scope > div').scrollWidth;\n const lastItemOffset = carouselComponent.querySelector(':scope > div:last-child').offsetLeft;\n //+60px here is to account for when the next offscreen slide is visible beneath the next arrow\n const lastItemInView = carouselInner.scrollLeft + scrollArea + carouselInner.getBoundingClientRect().left >= lastItemOffset + 60;\n const visibleItems = Math.round(scrollArea / itemWidth);\n //Check if theres room for more slides than we have\n const leftOverSpace = Math.ceil(itemCount / visibleItems) * visibleItems - itemCount;\n carouselProgress.setAttribute('step', visibleItems);\n if (leftOverSpace > 0 && lastItemInView) {\n targetSlide = Math.floor(itemCount / visibleItems) * visibleItems + 1;\n }\n Array.from(carouselElement.querySelectorAll('.carousel__controls button')).forEach((button) => {\n button.removeAttribute('aria-current');\n });\n carouselElement.querySelector('.control-' + targetSlide).setAttribute('aria-current', true);\n // Disable the previous button\n if (targetSlide == 1)\n carouselElement.querySelector('.btn-prev').setAttribute('disabled', 'disabled');\n else\n carouselElement.querySelector('.btn-prev').removeAttribute('disabled');\n // Disable the next button if the last item is in view\n if (targetSlide > itemCount - visibleItems)\n carouselElement.querySelector('.btn-next').setAttribute('disabled', 'disabled');\n else\n carouselElement.querySelector('.btn-next').removeAttribute('disabled');\n carouselProgress.value = targetSlide;\n progressMax = getProgressMax(itemCount, visibleItems);\n carouselProgress.setAttribute('max', progressMax);\n percent = (targetSlide / progressMax) * 100;\n percent = getProgressPercent(targetSlide, progressMax);\n carouselProgress.style.setProperty('--percent', percent + '%');\n }, 100);\n }, false);\n // when the buttons are used we need to make sure the carousel scrolls to the correct place\n carouselControls.addEventListener('click', function (e) {\n for (let target = e.target; target && target != this; target = target.parentNode) {\n if (typeof target.matches == 'function' && target.matches('button')) {\n e.preventDefault();\n Array.from(carouselControls.querySelectorAll('button')).forEach((button) => {\n button.removeAttribute('aria-current');\n });\n target.setAttribute('aria-current', true);\n const customEvent = new CustomEvent('pip-clicked', {\n detail: {\n slide: target.getAttribute('data-slide'),\n },\n });\n carouselComponent.dispatchEvent(customEvent);\n const el = carouselComponent.querySelector(`:scope > *:nth-child(${target.getAttribute('data-slide')})`);\n carouselInner.scroll({\n top: 0,\n left: el.offsetLeft - carouselInner.getBoundingClientRect().left,\n behavior: 'smooth',\n });\n break;\n }\n }\n }, false);\n carouselElement.addEventListener('click', function (e) {\n const scrollArea = carouselInner.clientWidth;\n //const scrollWidth = carouselInner.scrollWidth;\n const itemWidth = carouselComponent.querySelector(':scope > div').scrollWidth;\n const visibleItems = Math.round(scrollArea / itemWidth);\n const lastItemOffset = carouselComponent.querySelector(':scope > div:last-child').offsetLeft;\n const lastItemInView = carouselInner.scrollLeft + scrollArea + carouselInner.getBoundingClientRect().left >= lastItemOffset + 60;\n //Check if theres room for more slides than we have\n const leftOverSpace = Math.ceil(itemCount / visibleItems) * visibleItems - itemCount;\n /*\n When the last slide isn't filled with items, we only want to move back the number of items on the slide,\n rather than the total number of possible visible items\n */\n const spacesToMove = visibleItems - leftOverSpace;\n //Only want to change the amount of movement if the last item is visible\n const movement = lastItemInView && leftOverSpace > 0 ? spacesToMove * itemWidth : carouselInner.clientWidth;\n for (let target = e.target; target && target != this; target = target.parentNode) {\n if (typeof target.matches == 'function' && target.matches('.btn-next, .btn-prev')) {\n const direction = target.matches('.btn-next') ? 'next' : 'prev';\n const customEvent = new CustomEvent(`${direction}-clicked`, {\n detail: {\n slide: target.getAttribute('data-go'),\n },\n });\n carouselComponent.dispatchEvent(customEvent);\n e.preventDefault();\n const scrollTo = target.classList.contains('btn-prev')\n ? carouselInner.scrollLeft - movement\n : carouselInner.scrollLeft + carouselInner.clientWidth;\n carouselInner.scroll({\n top: 0,\n left: scrollTo,\n behavior: 'smooth',\n });\n break;\n }\n }\n }, false);\n carouselProgress.addEventListener(stepperStart, function () {\n clearInterval(stepperInterval);\n stepperInterval = setInterval(function () {\n scrollArea = carouselInner.clientWidth;\n itemWidth = carouselComponent.querySelector(':scope > div').scrollWidth;\n visibleItems = Math.round(scrollArea / itemWidth);\n carouselProgress.setAttribute('step', visibleItems);\n progressMax = getProgressMax(itemCount, visibleItems);\n carouselProgress.setAttribute('max', progressMax);\n percent = getProgressPercent(carouselProgress.value, progressMax);\n carouselProgress.style.setProperty('--percent', percent + '%');\n }, 10);\n });\n carouselProgress.addEventListener(stepperEvent, function () {\n clearInterval(stepperInterval);\n });\n carouselProgress.addEventListener('change', function () {\n clearInterval(stepperInterval);\n const target = carouselComponent.querySelector(`:scope > *:nth-child(${carouselProgress.value})`);\n carouselInner.scroll({\n top: 0,\n left: target ? target.offsetLeft - carouselInner.getBoundingClientRect().left : 0,\n behavior: 'smooth',\n });\n //const direction = target.matches('.btn-next') ? 'next' : 'prev';\n const customEvent = new CustomEvent(`slider-changed`, {\n detail: {\n slide: carouselProgress.value,\n },\n });\n carouselComponent.dispatchEvent(customEvent);\n }, false);\n};\nexport const updateCarousel = function (carouselComponent) {\n const carouselElement = carouselComponent.shadowRoot.querySelector('.carousel');\n const carouselInner = carouselElement.querySelector('.carousel__inner');\n const carouselControls = carouselElement.querySelector('.carousel__controls');\n const carouselProgress = carouselElement.querySelector('.carousel__progress [type=\"range\"]');\n const itemCount = carouselComponent.querySelectorAll(':scope > div').length;\n let scrollArea = carouselInner.clientWidth;\n let itemWidth = carouselComponent.querySelector(':scope > div').scrollWidth;\n let visibleItems = Math.round(scrollArea / itemWidth);\n carouselProgress.setAttribute('min', 1);\n carouselProgress.setAttribute('step', visibleItems);\n let progressMax = getProgressMax(itemCount, visibleItems);\n carouselProgress.setAttribute('max', progressMax);\n carouselProgress.value = 1;\n let percent = getProgressPercent(1, progressMax);\n carouselProgress.style.setProperty('--percent', percent + '%');\n carouselControls.innerHTML = generatePipsHTML(carouselComponent, []);\n};\nexport default carousel;\n","export const trackComponentRegistered = (componentName) => {\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'customElementRegistered',\n element: componentName,\n });\n};\nexport const trackComponent = (component, componentName, trackEvents) => {\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'customElementAdded',\n element: componentName,\n });\n trackEvents.forEach((eventName) => {\n component.addEventListener(eventName, function (event) {\n const eventDetails = {\n event: eventName,\n element: componentName,\n target: event.target,\n };\n Object.keys(event.detail).forEach((eventKey) => {\n const eventDetail = event.detail[eventKey];\n eventDetails[eventKey] = eventDetail;\n });\n window.dataLayer.push(eventDetails);\n });\n });\n return true;\n};\n","import { generateThumbnailList, generatePipsHTML, carousel, updateCarousel } from '../../modules/carousel';\nimport { trackComponent, trackComponentRegistered } from '../_global';\ntrackComponentRegistered('iam-carousel');\nclass iamCarousel extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const loadCSS = `@import \"${assetLocation}/css/components/carousel.component.css\";`;\n const template = document.createElement('template');\n template.innerHTML = /* HTML */ `\n <style>\n ${loadCSS}\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <div class=\"carousel\" part=\"carousel\">\n <div class=\"carousel__wrapper\">\n <div class=\"carousel__inner\">\n <div class=\"carousel__content\" part=\"content\">\n <slot></slot>\n </div>\n </div>\n </div>\n <div class=\"carousel__btns\" part=\"btns\">\n <button class=\"btn btn-secondary btn-compact fa-plus-large btn-prev\" data-go=\"0\" disabled part=\"prev\">\n Prev\n </button>\n <button class=\"btn btn-secondary btn-compact fa-plus-large btn-next\" data-go=\"2\" part=\"next\">Next</button>\n </div>\n\n <div class=\"carousel__controls\" part=\"controls\"></div>\n\n <div class=\"carousel__progress\" part=\"progress\">\n <input type=\"range\" min=\"0\" max=\"100\" value=\"1\" step=\"1\" />\n </div>\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const carouselComponent = this;\n //const carouselElement = this.shadowRoot.querySelector('.carousel');\n //const row = this.shadowRoot.querySelector('.row');\n let thumbnailImages = [];\n const carouselControls = this.shadowRoot.querySelector('.carousel__controls');\n if (carouselComponent.querySelector('[data-thumbnail]')) {\n thumbnailImages = generateThumbnailList(carouselComponent);\n carouselComponent.classList.add('thumbnails');\n }\n // populate the pips\n carouselControls.innerHTML = generatePipsHTML(carouselComponent, thumbnailImages);\n Array.from(carouselComponent.querySelectorAll(':scope > div > img:first-child:last-child, :scope > div > picture:first-child:last-child img')).forEach((image) => {\n image.style.inset = '0 0.5rem 0 0.5rem';\n image.style.position = 'absolute';\n image.style.width = 'calc(100% - 1rem)';\n image.style.height = '100%';\n image.style['object-fit'] = 'cover';\n image.closest('div').classList.add('image__wrapper');\n });\n carousel(carouselComponent);\n const observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutationRecord) {\n const targetElement = mutationRecord.target;\n updateCarousel(targetElement);\n });\n });\n observer.observe(carouselComponent, {\n attributes: false,\n childList: true,\n subtree: true,\n });\n trackComponent(carouselComponent, 'iam-carousel', [\n 'pip-clicked',\n 'next-clicked',\n 'prev-clicked',\n 'slider-changed',\n ]);\n }\n}\nexport default iamCarousel;\n"],"names":["generateThumbnailList","carouselComponent","thumbnailImages","slide","index","generatePipsHTML","itemCount","pips","i","pipContent","pipClass","getProgressMax","visibleItems","getProgressPercent","value","max","carousel","scrollTimeout","carouselElement","carouselInner","carouselControls","carouselProgress","scrollArea","itemWidth","progressMax","percent","stepperInterval","stepperEvent","stepperStart","scrollWidth","scrollLeft","targetSlide","lastItemOffset","lastItemInView","leftOverSpace","button","e","target","customEvent","el","spacesToMove","movement","direction","scrollTo","updateCarousel","trackComponentRegistered","componentName","trackComponent","component","trackEvents","eventName","event","eventDetails","eventKey","eventDetail","iamCarousel","template","image","mutations","mutationRecord","targetElement"],"mappings":";;;IAAO,MAAMA,EAAwB,SAAUC,EAAmB,CAC9D,MAAMC,EAAkB,CAAA,EACxB,aAAM,KAAKD,EAAkB,iBAAiB,cAAc,CAAC,EAAE,QAAQ,CAACE,EAAOC,IAAU,CACjFD,EAAM,aAAa,gBAAgB,IACnCD,EAAgBE,CAAK,EAAID,EAAM,aAAa,gBAAgB,EAEpE,CAAC,EACMD,CACX,EACaG,EAAmB,SAAUJ,EAAmBC,EAAiB,CAC1E,MAAMI,EAAYL,EAAkB,iBAAiB,cAAc,EAAE,OACrE,IAAIM,EAAO,GACX,QAASC,EAAI,EAAGA,GAAKF,EAAWE,IAAK,CACjC,IAAIC,EAAa,KACbC,EAAW,GACXR,EAAgB,QAAUA,EAAgBM,EAAI,CAAC,GAC/CE,EAAW,gBACXD,EAAa,aAAaP,EAAgBM,EAAI,CAAC,CAAC,gBAAgBA,CAAC,oBAGjEC,EAAa,SAASD,CAAC,GAE3BD,GAAQ,0BAA0BC,CAAC,IAAIE,CAAQ,iBAAiBF,CAAC,KAAKA,GAAK,EAAI,eAAiB,EAAE,IAAIC,CAAU,WACpH,CACA,OAAOF,CACX,EACaI,EAAiB,SAAUL,EAAWM,EAAc,CAC7D,OAAIA,GAAgB,EACTN,EAEC,KAAK,KAAKA,EAAYM,CAAY,EAAIA,EAAeA,EACpD,CACjB,EACMC,EAAqB,SAAUC,EAAOC,EAAK,CAC7C,OAASD,EAAQ,IAAMC,EAAM,GAAM,GACvC,EACaC,EAAW,SAAUf,EAAmB,CACjD,IAAIgB,EACJ,MAAMC,EAAkBjB,EAAkB,WAAW,cAAc,WAAW,EACxEkB,EAAgBD,EAAgB,cAAc,kBAAkB,EAChEE,EAAmBF,EAAgB,cAAc,qBAAqB,EACtEG,EAAmBH,EAAgB,cAAc,oCAAoC,EACrFZ,EAAYL,EAAkB,iBAAiB,cAAc,EAAE,OACrE,IAAIqB,EAAaH,EAAc,YAC3BI,EAAYtB,EAAkB,cAAc,cAAc,EAAE,YAC5DW,EAAe,KAAK,MAAMU,EAAaC,CAAS,EACpDF,EAAiB,aAAa,MAAO,CAAC,EACtCA,EAAiB,aAAa,OAAQT,CAAY,EAClD,IAAIY,EAAcb,EAAeL,EAAWM,CAAY,EACxDS,EAAiB,aAAa,MAAOG,CAAW,EAChDH,EAAiB,MAAQ,EACzB,IAAII,EAAUZ,EAAmB,EAAGW,CAAW,EAC/CH,EAAiB,MAAM,YAAY,YAAaI,EAAU,GAAG,EAC7D,IAAIC,EAAiBC,EAAe,UAAWC,EAAe,YAC1D,iBAAkB,SAAS,kBAC3BD,EAAe,WACfC,EAAe,cAGnBT,EAAc,iBAAiB,SAAU,UAAY,CACjD,aAAaF,CAAa,EAC1BA,EAAgB,WAAW,UAAY,CACnC,MAAMK,EAAaH,EAAc,YAC3BU,EAAcV,EAAc,YAC5BW,EAAaX,EAAc,WACjC,IAAIY,EAAc,KAAK,MAAOD,EAAaD,EAAevB,CAAS,EAAI,EACvE,MAAMiB,EAAYtB,EAAkB,cAAc,cAAc,EAAE,YAC5D+B,EAAiB/B,EAAkB,cAAc,yBAAyB,EAAE,WAE5EgC,EAAiBd,EAAc,WAAaG,EAAaH,EAAc,sBAAqB,EAAG,MAAQa,EAAiB,GACxHpB,EAAe,KAAK,MAAMU,EAAaC,CAAS,EAEhDW,EAAgB,KAAK,KAAK5B,EAAYM,CAAY,EAAIA,EAAeN,EAC3Ee,EAAiB,aAAa,OAAQT,CAAY,EAC9CsB,EAAgB,GAAKD,IACrBF,EAAc,KAAK,MAAMzB,EAAYM,CAAY,EAAIA,EAAe,GAExE,MAAM,KAAKM,EAAgB,iBAAiB,4BAA4B,CAAC,EAAE,QAASiB,GAAW,CAC3FA,EAAO,gBAAgB,cAAc,CACzC,CAAC,EACDjB,EAAgB,cAAc,YAAca,CAAW,EAAE,aAAa,eAAgB,EAAI,EAEtFA,GAAe,EACfb,EAAgB,cAAc,WAAW,EAAE,aAAa,WAAY,UAAU,EAE9EA,EAAgB,cAAc,WAAW,EAAE,gBAAgB,UAAU,EAErEa,EAAczB,EAAYM,EAC1BM,EAAgB,cAAc,WAAW,EAAE,aAAa,WAAY,UAAU,EAE9EA,EAAgB,cAAc,WAAW,EAAE,gBAAgB,UAAU,EACzEG,EAAiB,MAAQU,EACzBP,EAAcb,EAAeL,EAAWM,CAAY,EACpDS,EAAiB,aAAa,MAAOG,CAAW,EAChDC,EAAWM,EAAcP,EAAe,IACxCC,EAAUZ,EAAmBkB,EAAaP,CAAW,EACrDH,EAAiB,MAAM,YAAY,YAAaI,EAAU,GAAG,CACjE,EAAG,GAAG,CACV,EAAG,EAAK,EAERL,EAAiB,iBAAiB,QAAS,SAAUgB,EAAG,CACpD,QAASC,EAASD,EAAE,OAAQC,GAAUA,GAAU,KAAMA,EAASA,EAAO,WAClE,GAAI,OAAOA,EAAO,SAAW,YAAcA,EAAO,QAAQ,QAAQ,EAAG,CACjED,EAAE,eAAc,EAChB,MAAM,KAAKhB,EAAiB,iBAAiB,QAAQ,CAAC,EAAE,QAASe,GAAW,CACxEA,EAAO,gBAAgB,cAAc,CACzC,CAAC,EACDE,EAAO,aAAa,eAAgB,EAAI,EACxC,MAAMC,EAAc,IAAI,YAAY,cAAe,CAC/C,OAAQ,CACJ,MAAOD,EAAO,aAAa,YAAY,CAC/D,CACA,CAAiB,EACDpC,EAAkB,cAAcqC,CAAW,EAC3C,MAAMC,EAAKtC,EAAkB,cAAc,wBAAwBoC,EAAO,aAAa,YAAY,CAAC,GAAG,EACvGlB,EAAc,OAAO,CACjB,IAAK,EACL,KAAMoB,EAAG,WAAapB,EAAc,sBAAqB,EAAG,KAC5D,SAAU,QAC9B,CAAiB,EACD,KACJ,CAER,EAAG,EAAK,EACRD,EAAgB,iBAAiB,QAAS,SAAUkB,EAAG,CACnD,MAAMd,EAAaH,EAAc,YAE3BI,EAAYtB,EAAkB,cAAc,cAAc,EAAE,YAC5DW,EAAe,KAAK,MAAMU,EAAaC,CAAS,EAChDS,EAAiB/B,EAAkB,cAAc,yBAAyB,EAAE,WAC5EgC,EAAiBd,EAAc,WAAaG,EAAaH,EAAc,sBAAqB,EAAG,MAAQa,EAAiB,GAExHE,EAAgB,KAAK,KAAK5B,EAAYM,CAAY,EAAIA,EAAeN,EAKrEkC,EAAe5B,EAAesB,EAE9BO,EAAWR,GAAkBC,EAAgB,EAAIM,EAAejB,EAAYJ,EAAc,YAChG,QAASkB,EAASD,EAAE,OAAQC,GAAUA,GAAU,KAAMA,EAASA,EAAO,WAClE,GAAI,OAAOA,EAAO,SAAW,YAAcA,EAAO,QAAQ,sBAAsB,EAAG,CAC/E,MAAMK,EAAYL,EAAO,QAAQ,WAAW,EAAI,OAAS,OACnDC,EAAc,IAAI,YAAY,GAAGI,CAAS,WAAY,CACxD,OAAQ,CACJ,MAAOL,EAAO,aAAa,SAAS,CAC5D,CACA,CAAiB,EACDpC,EAAkB,cAAcqC,CAAW,EAC3CF,EAAE,eAAc,EAChB,MAAMO,EAAWN,EAAO,UAAU,SAAS,UAAU,EAC/ClB,EAAc,WAAasB,EAC3BtB,EAAc,WAAaA,EAAc,YAC/CA,EAAc,OAAO,CACjB,IAAK,EACL,KAAMwB,EACN,SAAU,QAC9B,CAAiB,EACD,KACJ,CAER,EAAG,EAAK,EACRtB,EAAiB,iBAAiBO,EAAc,UAAY,CACxD,cAAcF,CAAe,EAC7BA,EAAkB,YAAY,UAAY,CACtCJ,EAAaH,EAAc,YAC3BI,EAAYtB,EAAkB,cAAc,cAAc,EAAE,YAC5DW,EAAe,KAAK,MAAMU,EAAaC,CAAS,EAChDF,EAAiB,aAAa,OAAQT,CAAY,EAClDY,EAAcb,EAAeL,EAAWM,CAAY,EACpDS,EAAiB,aAAa,MAAOG,CAAW,EAChDC,EAAUZ,EAAmBQ,EAAiB,MAAOG,CAAW,EAChEH,EAAiB,MAAM,YAAY,YAAaI,EAAU,GAAG,CACjE,EAAG,EAAE,CACT,CAAC,EACDJ,EAAiB,iBAAiBM,EAAc,UAAY,CACxD,cAAcD,CAAe,CACjC,CAAC,EACDL,EAAiB,iBAAiB,SAAU,UAAY,CACpD,cAAcK,CAAe,EAC7B,MAAMW,EAASpC,EAAkB,cAAc,wBAAwBoB,EAAiB,KAAK,GAAG,EAChGF,EAAc,OAAO,CACjB,IAAK,EACL,KAAMkB,EAASA,EAAO,WAAalB,EAAc,sBAAqB,EAAG,KAAO,EAChF,SAAU,QACtB,CAAS,EAED,MAAMmB,EAAc,IAAI,YAAY,iBAAkB,CAClD,OAAQ,CACJ,MAAOjB,EAAiB,KACxC,CACA,CAAS,EACDpB,EAAkB,cAAcqC,CAAW,CAC/C,EAAG,EAAK,CACZ,EACaM,EAAiB,SAAU3C,EAAmB,CACvD,MAAMiB,EAAkBjB,EAAkB,WAAW,cAAc,WAAW,EACxEkB,EAAgBD,EAAgB,cAAc,kBAAkB,EAChEE,EAAmBF,EAAgB,cAAc,qBAAqB,EACtEG,EAAmBH,EAAgB,cAAc,oCAAoC,EACrFZ,EAAYL,EAAkB,iBAAiB,cAAc,EAAE,OACrE,IAAIqB,EAAaH,EAAc,YAC3BI,EAAYtB,EAAkB,cAAc,cAAc,EAAE,YAC5DW,EAAe,KAAK,MAAMU,EAAaC,CAAS,EACpDF,EAAiB,aAAa,MAAO,CAAC,EACtCA,EAAiB,aAAa,OAAQT,CAAY,EAClD,IAAIY,EAAcb,EAAeL,EAAWM,CAAY,EACxDS,EAAiB,aAAa,MAAOG,CAAW,EAChDH,EAAiB,MAAQ,EACzB,IAAII,EAAUZ,EAAmB,EAAGW,CAAW,EAC/CH,EAAiB,MAAM,YAAY,YAAaI,EAAU,GAAG,EAC7DL,EAAiB,UAAYf,EAAiBJ,EAAmB,CAAA,CAAE,CACvE,ECpNa4C,EAA4BC,GAAkB,CAEvD,OAAO,UAAY,OAAO,WAAa,CAAA,EACvC,OAAO,UAAU,KAAK,CAClB,MAAO,0BACP,QAASA,CACjB,CAAK,CACL,EACaC,EAAiB,CAACC,EAAWF,EAAeG,KAErD,OAAO,UAAY,OAAO,WAAa,CAAA,EACvC,OAAO,UAAU,KAAK,CAClB,MAAO,qBACP,QAASH,CACjB,CAAK,EACDG,EAAY,QAASC,GAAc,CAC/BF,EAAU,iBAAiBE,EAAW,SAAUC,EAAO,CACnD,MAAMC,EAAe,CACjB,MAAOF,EACP,QAASJ,EACT,OAAQK,EAAM,MAC9B,EACY,OAAO,KAAKA,EAAM,MAAM,EAAE,QAASE,GAAa,CAC5C,MAAMC,EAAcH,EAAM,OAAOE,CAAQ,EACzCD,EAAaC,CAAQ,EAAIC,CAC7B,CAAC,EACD,OAAO,UAAU,KAAKF,CAAY,CACtC,CAAC,CACL,CAAC,EACM,IC3BXP,EAAyB,cAAc,EACvC,MAAMU,UAAoB,WAAY,CAClC,aAAc,CACV,MAAK,EACL,KAAK,aAAa,CAAE,KAAM,MAAM,CAAE,EACZ,SAAS,KAAK,aAAa,sBAAsB,GACjE,SAAS,KAAK,aAAa,sBAAsB,EAGvD,MAAMC,EAAW,SAAS,cAAc,UAAU,EAClDA,EAAS,UAAuB;AAAA;AAAA;AAAA;AAAA,UAG9B,KAAK,aAAa,KAAK,EAAI,YAAY,KAAK,aAAa,KAAK,CAAC,KAAO,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAwB1E,KAAK,WAAW,YAAYA,EAAS,QAAQ,UAAU,EAAI,CAAC,CAChE,CACA,mBAAoB,CAEhB,MAAMvD,EAAoB,KAG1B,IAAIC,EAAkB,CAAA,EACtB,MAAMkB,EAAmB,KAAK,WAAW,cAAc,qBAAqB,EACxEnB,EAAkB,cAAc,kBAAkB,IAClDC,EAAkBF,EAAsBC,CAAiB,EACzDA,EAAkB,UAAU,IAAI,YAAY,GAGhDmB,EAAiB,UAAYf,EAAiBJ,EAAmBC,CAAe,EAChF,MAAM,KAAKD,EAAkB,iBAAiB,8FAA8F,CAAC,EAAE,QAASwD,GAAU,CAC9JA,EAAM,MAAM,MAAQ,oBACpBA,EAAM,MAAM,SAAW,WACvBA,EAAM,MAAM,MAAQ,oBACpBA,EAAM,MAAM,OAAS,OACrBA,EAAM,MAAM,YAAY,EAAI,QAC5BA,EAAM,QAAQ,KAAK,EAAE,UAAU,IAAI,gBAAgB,CACvD,CAAC,EACDzC,EAASf,CAAiB,EACT,IAAI,iBAAiB,SAAUyD,EAAW,CACvDA,EAAU,QAAQ,SAAUC,EAAgB,CACxC,MAAMC,EAAgBD,EAAe,OACrCf,EAAegB,CAAa,CAChC,CAAC,CACL,CAAC,EACQ,QAAQ3D,EAAmB,CAChC,WAAY,GACZ,UAAW,GACX,QAAS,EACrB,CAAS,EACD8C,EAAe9C,EAAmB,eAAgB,CAC9C,cACA,eACA,eACA,gBACZ,CAAS,CACL,CACJ"}
1
+ {"version":3,"file":"carousel.component.min.js","sources":["../_global.js","carousel.component.js"],"sourcesContent":["export const trackComponentRegistered = (componentName) => {\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'customElementRegistered',\n element: componentName,\n });\n};\nexport const trackComponent = (component, componentName, trackEvents) => {\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'customElementAdded',\n element: componentName,\n });\n trackEvents.forEach((eventName) => {\n component.addEventListener(eventName, function (event) {\n const eventDetails = {\n event: eventName,\n element: componentName,\n target: event.target,\n };\n Object.keys(event.detail).forEach((eventKey) => {\n const eventDetail = event.detail[eventKey];\n eventDetails[eventKey] = eventDetail;\n });\n window.dataLayer.push(eventDetails);\n });\n });\n return true;\n};\n","import { trackComponentRegistered } from '../_global';\ntrackComponentRegistered('iam-carousel');\nclass iamCarousel extends HTMLElement {\n constructor() {\n super();\n this.generateThumbnailList = (carouselComponent) => {\n const thumbnailImages = [];\n Array.from(carouselComponent.querySelectorAll(':scope > :is(div,iam-card)')).forEach((slide, index) => {\n if (slide.hasAttribute('data-thumbnail')) {\n thumbnailImages[index] = slide.getAttribute('data-thumbnail');\n }\n });\n return thumbnailImages;\n };\n this.generatePipsHTML = (carouselComponent, thumbnailImages) => {\n const itemCount = carouselComponent.querySelectorAll(':scope > :is(div,iam-card)').length;\n let pips = '';\n for (let i = 1; i <= itemCount; i++) {\n let pipContent = null;\n let pipClass = '';\n if (thumbnailImages.length && thumbnailImages[i - 1]) {\n pipClass = 'has-thumbnail';\n pipContent = `<img src=\"${thumbnailImages[i - 1]}\" alt=\"Slide ${i}\" height=\"148\"/>`;\n }\n else {\n pipContent = `Slide ${i}`;\n }\n pips += `<button class=\"control-${i} ${pipClass}\" data-slide=\"${i}\" ${i == 1 ? 'aria-current' : ''}>${pipContent}</button>`;\n }\n return pips;\n };\n this.progressPercent = (value, total) => {\n return ((value) / (total)) * 100 + '%';\n };\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const loadCSS = `@import \"${assetLocation}/css/components/carousel.component.css\";`;\n const template = document.createElement('template');\n template.innerHTML = /* HTML */ `\n <style>\n ${loadCSS}\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <div class=\"carousel-wrapper\">\n <div class=\"carousel\" part=\"carousel\">\n <slot></slot>\n </div>\n <div class=\"carousel__controls\"></div>\n <div id=\"carousel__progress\" class=\"carousel__progress\">\n <input type=\"range\" min=\"0\" max=\"100\" value=\"0\" step=\"1\" />\n </div>\n <div id=\"carousel__progress-sm\" class=\"carousel__progress\">\n <input type=\"range\" min=\"0\" max=\"100\" value=\"0\" step=\"1\" />\n </div>\n <div id=\"carousel__progress-md\" class=\"carousel__progress\">\n <input type=\"range\" min=\"0\" max=\"100\" value=\"0\" step=\"1\" />\n </div>\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n var _a;\n const carouselElement = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.carousel');\n const carouselProgress = this.shadowRoot.querySelector('#carousel__progress [type=\"range\"]');\n const carouselProgressSM = this.shadowRoot.querySelector('#carousel__progress-sm [type=\"range\"]');\n const carouselProgressMD = this.shadowRoot.querySelector('#carousel__progress-md [type=\"range\"]');\n const itemCount = this.querySelectorAll(':scope > *').length;\n const progressPercent = this.progressPercent;\n let stepperInterval, stepperEvent = 'mouseup', stepperStart = 'mousedown';\n if ('ontouchstart' in document.documentElement) {\n stepperEvent = 'touchend';\n stepperStart = 'touchstart';\n }\n carouselElement === null || carouselElement === void 0 ? void 0 : carouselElement.innerHTML = this.innerHTML;\n carouselElement === null || carouselElement === void 0 ? void 0 : carouselElement.setAttribute('data-smcols', this.getAttribute('data-smcols'));\n carouselElement === null || carouselElement === void 0 ? void 0 : carouselElement.setAttribute('data-mdcols', this.getAttribute('data-mdcols'));\n carouselProgress.setAttribute('max', itemCount);\n carouselProgress.style.setProperty('--percent', progressPercent(carouselProgress.value, itemCount));\n carouselProgress.addEventListener(stepperStart, () => {\n clearInterval(stepperInterval);\n stepperInterval = setInterval(function () {\n carouselProgress.style.setProperty('--percent', progressPercent(carouselProgress.value, itemCount));\n }, 10);\n });\n carouselProgress.addEventListener(stepperEvent, function () {\n clearInterval(stepperInterval);\n });\n carouselProgress.addEventListener('change', () => {\n clearInterval(stepperInterval);\n carouselProgress.style.setProperty('--percent', progressPercent(carouselProgress.value, itemCount));\n const scrollTo = Math.floor((carouselElement.scrollWidth / itemCount) * (carouselProgress.value - 1));\n carouselElement.scrollTo({\n top: 0,\n left: scrollTo,\n behavior: 'smooth',\n });\n });\n // SM Progress bar\n const smStep = this.getAttribute('data-smcols') ? this.getAttribute('data-smcols') : 1;\n const smItemCount = Math.floor(itemCount / smStep) * smStep;\n carouselProgressSM.setAttribute('max', smItemCount);\n carouselProgressSM.setAttribute('step', smStep);\n carouselProgressSM.style.setProperty('--percent', progressPercent(carouselProgressSM.value, smItemCount));\n carouselProgressSM.addEventListener(stepperStart, () => {\n clearInterval(stepperInterval);\n stepperInterval = setInterval(function () {\n carouselProgressSM.style.setProperty('--percent', progressPercent(carouselProgressSM.value, smItemCount));\n });\n });\n carouselProgressSM.addEventListener(stepperEvent, function () {\n clearInterval(stepperInterval);\n });\n carouselProgressSM.addEventListener('change', () => {\n clearInterval(stepperInterval);\n carouselProgressSM.style.setProperty('--percent', progressPercent(carouselProgressSM.value, smItemCount));\n const scrollTo = Math.floor((carouselElement.scrollWidth / smItemCount) * carouselProgressSM.value);\n console.log(carouselProgressSM.value);\n carouselElement.scrollTo({\n top: 0,\n left: scrollTo,\n behavior: 'smooth',\n });\n });\n // MD Progress bar\n const mdStep = this.getAttribute('data-smcols') ? this.getAttribute('data-smcols') : 1;\n const mdItemCount = Math.floor(itemCount / mdStep) * mdStep;\n carouselProgressMD.setAttribute('max', mdItemCount);\n carouselProgressMD.setAttribute('step', mdStep);\n carouselProgressMD.style.setProperty('--percent', progressPercent(carouselProgressMD.value, mdItemCount));\n carouselProgressMD.addEventListener(stepperStart, () => {\n clearInterval(stepperInterval);\n stepperInterval = setInterval(function () {\n carouselProgressMD.style.setProperty('--percent', progressPercent(carouselProgressMD.value, mdItemCount));\n });\n });\n carouselProgressMD.addEventListener(stepperEvent, function () {\n clearInterval(stepperInterval);\n });\n carouselProgressMD.addEventListener('change', () => {\n clearInterval(stepperInterval);\n carouselProgressMD.style.setProperty('--percent', progressPercent(carouselProgressMD.value, mdItemCount));\n const scrollTo = Math.floor((carouselElement.scrollWidth / mdItemCount) * carouselProgressMD.value);\n console.log(carouselProgressMD.value);\n carouselElement.scrollTo({\n top: 0,\n left: scrollTo,\n behavior: 'smooth',\n });\n });\n // Thumbnails\n const carouselControls = this.shadowRoot.querySelector('.carousel__controls');\n if (carouselElement.querySelector('[data-thumbnail]')) {\n const thumbnailImages = this.generateThumbnailList(carouselElement);\n carouselElement.classList.add('thumbnails');\n carouselControls.innerHTML = this.generatePipsHTML(carouselElement, thumbnailImages);\n }\n carouselControls.addEventListener('click', (event) => {\n var _a;\n (_a = carouselControls === null || carouselControls === void 0 ? void 0 : carouselControls.querySelector('[aria-current]')) === null || _a === void 0 ? void 0 : _a.removeAttribute('aria-current');\n if (event.target.closest('button[data-slide]')) {\n event.target.closest('button[data-slide]').setAttribute('aria-current', 'true');\n const scrollTo = Math.floor((carouselElement.scrollWidth / itemCount) * event.target.closest('button[data-slide]').getAttribute('data-slide'));\n carouselElement.scrollTo({\n top: 0,\n left: scrollTo,\n behavior: 'smooth',\n });\n }\n });\n }\n}\nexport default iamCarousel;\n"],"names":["trackComponentRegistered","componentName","iamCarousel","carouselComponent","thumbnailImages","slide","index","itemCount","pips","i","pipContent","pipClass","value","total","template","_a","carouselElement","carouselProgress","carouselProgressSM","carouselProgressMD","progressPercent","stepperInterval","stepperEvent","stepperStart","scrollTo","smStep","smItemCount","mdStep","mdItemCount","carouselControls","event"],"mappings":"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"}