igniteui-webcomponents 7.2.3 → 7.3.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (980) hide show
  1. package/CHANGELOG.md +156 -0
  2. package/animations/player.d.ts +4 -11
  3. package/animations/player.js +4 -10
  4. package/animations/player.js.map +1 -1
  5. package/animations/view-transition.d.ts +44 -0
  6. package/animations/view-transition.js +81 -0
  7. package/animations/view-transition.js.map +1 -0
  8. package/components/accordion/accordion.d.ts +1 -1
  9. package/components/accordion/accordion.js +7 -6
  10. package/components/accordion/accordion.js.map +1 -1
  11. package/components/avatar/avatar.js +10 -10
  12. package/components/avatar/avatar.js.map +1 -1
  13. package/components/avatar/themes/themes.d.ts +1 -1
  14. package/components/avatar/themes/themes.js.map +1 -1
  15. package/components/badge/badge.d.ts +1 -1
  16. package/components/badge/badge.js +5 -5
  17. package/components/badge/badge.js.map +1 -1
  18. package/components/badge/themes/themes.d.ts +1 -1
  19. package/components/badge/themes/themes.js.map +1 -1
  20. package/components/banner/banner.d.ts +2 -2
  21. package/components/banner/banner.js +8 -8
  22. package/components/banner/banner.js.map +1 -1
  23. package/components/banner/themes/themes.d.ts +1 -1
  24. package/components/banner/themes/themes.js.map +1 -1
  25. package/components/button/button-base.d.ts +2 -2
  26. package/components/button/button-base.js +15 -12
  27. package/components/button/button-base.js.map +1 -1
  28. package/components/button/button.d.ts +3 -3
  29. package/components/button/button.js +2 -2
  30. package/components/button/button.js.map +1 -1
  31. package/components/button/icon-button.js +12 -12
  32. package/components/button/icon-button.js.map +1 -1
  33. package/components/button/themes/button/themes.d.ts +1 -1
  34. package/components/button/themes/button/themes.js.map +1 -1
  35. package/components/button/themes/icon-button/themes.d.ts +1 -1
  36. package/components/button/themes/icon-button/themes.js.map +1 -1
  37. package/components/button-group/button-group.d.ts +42 -21
  38. package/components/button-group/button-group.js +101 -106
  39. package/components/button-group/button-group.js.map +1 -1
  40. package/components/button-group/themes/button.d.ts +1 -1
  41. package/components/button-group/themes/button.js.map +1 -1
  42. package/components/button-group/themes/group.d.ts +1 -1
  43. package/components/button-group/themes/group.js.map +1 -1
  44. package/components/button-group/toggle-button.d.ts +17 -10
  45. package/components/button-group/toggle-button.js +28 -13
  46. package/components/button-group/toggle-button.js.map +1 -1
  47. package/components/calendar/base.d.ts +29 -10
  48. package/components/calendar/base.js +12 -15
  49. package/components/calendar/base.js.map +1 -1
  50. package/components/calendar/calendar.d.ts +39 -8
  51. package/components/calendar/calendar.js +96 -85
  52. package/components/calendar/calendar.js.map +1 -1
  53. package/components/calendar/days-view/days-view.d.ts +49 -22
  54. package/components/calendar/days-view/days-view.js +102 -163
  55. package/components/calendar/days-view/days-view.js.map +1 -1
  56. package/components/calendar/helpers.d.ts +3 -62
  57. package/components/calendar/helpers.js +6 -110
  58. package/components/calendar/helpers.js.map +1 -1
  59. package/components/calendar/months-view/months-view.d.ts +7 -21
  60. package/components/calendar/months-view/months-view.js +30 -83
  61. package/components/calendar/months-view/months-view.js.map +1 -1
  62. package/components/calendar/selection.d.ts +21 -0
  63. package/components/calendar/selection.js +42 -0
  64. package/components/calendar/selection.js.map +1 -0
  65. package/components/calendar/themes/calendar.d.ts +1 -1
  66. package/components/calendar/themes/calendar.js.map +1 -1
  67. package/components/calendar/themes/days.d.ts +1 -1
  68. package/components/calendar/themes/days.js.map +1 -1
  69. package/components/calendar/themes/year-month.d.ts +1 -1
  70. package/components/calendar/themes/year-month.js.map +1 -1
  71. package/components/calendar/types.d.ts +18 -0
  72. package/components/calendar/types.js.map +1 -1
  73. package/components/calendar/year-month-view.base.d.ts +44 -0
  74. package/components/calendar/year-month-view.base.js +89 -0
  75. package/components/calendar/year-month-view.base.js.map +1 -0
  76. package/components/calendar/years-view/years-view.d.ts +7 -20
  77. package/components/calendar/years-view/years-view.js +25 -79
  78. package/components/calendar/years-view/years-view.js.map +1 -1
  79. package/components/card/card.actions.js +2 -2
  80. package/components/card/card.actions.js.map +1 -1
  81. package/components/card/card.content.d.ts +1 -1
  82. package/components/card/card.content.js +2 -2
  83. package/components/card/card.content.js.map +1 -1
  84. package/components/card/card.d.ts +1 -1
  85. package/components/card/card.header.js +2 -2
  86. package/components/card/card.header.js.map +1 -1
  87. package/components/card/card.js +2 -2
  88. package/components/card/card.js.map +1 -1
  89. package/components/card/card.media.d.ts +1 -1
  90. package/components/card/card.media.js +1 -1
  91. package/components/card/card.media.js.map +1 -1
  92. package/components/card/themes/actions.d.ts +1 -1
  93. package/components/card/themes/actions.js.map +1 -1
  94. package/components/card/themes/container.d.ts +1 -1
  95. package/components/card/themes/container.js.map +1 -1
  96. package/components/card/themes/content.d.ts +1 -1
  97. package/components/card/themes/content.js.map +1 -1
  98. package/components/card/themes/header.d.ts +1 -1
  99. package/components/card/themes/header.js.map +1 -1
  100. package/components/carousel/animations.d.ts +1 -1
  101. package/components/carousel/animations.js +2 -2
  102. package/components/carousel/animations.js.map +1 -1
  103. package/components/carousel/carousel-indicator-container.js +4 -4
  104. package/components/carousel/carousel-indicator-container.js.map +1 -1
  105. package/components/carousel/carousel-indicator.d.ts +1 -1
  106. package/components/carousel/carousel-indicator.js +5 -5
  107. package/components/carousel/carousel-indicator.js.map +1 -1
  108. package/components/carousel/carousel-slide.d.ts +1 -1
  109. package/components/carousel/carousel-slide.js +9 -9
  110. package/components/carousel/carousel-slide.js.map +1 -1
  111. package/components/carousel/carousel.d.ts +7 -7
  112. package/components/carousel/carousel.js +40 -30
  113. package/components/carousel/carousel.js.map +1 -1
  114. package/components/carousel/themes/container.d.ts +1 -1
  115. package/components/carousel/themes/container.js.map +1 -1
  116. package/components/carousel/themes/indicator-container.d.ts +1 -1
  117. package/components/carousel/themes/indicator-container.js.map +1 -1
  118. package/components/chat/chat-input.d.ts +4 -4
  119. package/components/chat/chat-input.js +13 -12
  120. package/components/chat/chat-input.js.map +1 -1
  121. package/components/chat/chat-message.d.ts +1 -1
  122. package/components/chat/chat-message.js +7 -6
  123. package/components/chat/chat-message.js.map +1 -1
  124. package/components/chat/chat-state.d.ts +2 -2
  125. package/components/chat/chat-state.js +2 -1
  126. package/components/chat/chat-state.js.map +1 -1
  127. package/components/chat/chat.d.ts +4 -4
  128. package/components/chat/chat.js +13 -13
  129. package/components/chat/chat.js.map +1 -1
  130. package/components/chat/message-attachments.js +5 -5
  131. package/components/chat/message-attachments.js.map +1 -1
  132. package/components/chat/themes/attachments.d.ts +1 -1
  133. package/components/chat/themes/attachments.js.map +1 -1
  134. package/components/chat/themes/input.d.ts +1 -1
  135. package/components/chat/themes/input.js.map +1 -1
  136. package/components/chat/themes/message.d.ts +1 -1
  137. package/components/chat/themes/message.js.map +1 -1
  138. package/components/chat/themes/themes.d.ts +1 -1
  139. package/components/chat/themes/themes.js.map +1 -1
  140. package/components/chat/types.d.ts +2 -2
  141. package/components/chat/types.js.map +1 -1
  142. package/components/chat/utils.d.ts +1 -1
  143. package/components/chat/utils.js +3 -3
  144. package/components/chat/utils.js.map +1 -1
  145. package/components/checkbox/checkbox-base.d.ts +7 -7
  146. package/components/checkbox/checkbox-base.js +7 -7
  147. package/components/checkbox/checkbox-base.js.map +1 -1
  148. package/components/checkbox/checkbox.js +7 -6
  149. package/components/checkbox/checkbox.js.map +1 -1
  150. package/components/checkbox/switch.js +7 -6
  151. package/components/checkbox/switch.js.map +1 -1
  152. package/components/checkbox/themes/checkbox-themes.d.ts +1 -1
  153. package/components/checkbox/themes/checkbox-themes.js.map +1 -1
  154. package/components/checkbox/themes/switch-themes.d.ts +1 -1
  155. package/components/checkbox/themes/switch-themes.js.map +1 -1
  156. package/components/checkbox/validators.d.ts +1 -1
  157. package/components/checkbox/validators.js +1 -1
  158. package/components/checkbox/validators.js.map +1 -1
  159. package/components/chip/chip.d.ts +9 -3
  160. package/components/chip/chip.js +10 -6
  161. package/components/chip/chip.js.map +1 -1
  162. package/components/chip/themes/chip.base.css.js +1 -1
  163. package/components/chip/themes/chip.base.css.js.map +1 -1
  164. package/components/chip/themes/dark/chip.bootstrap.css.js +1 -1
  165. package/components/chip/themes/dark/chip.bootstrap.css.js.map +1 -1
  166. package/components/chip/themes/dark/chip.fluent.css.js +1 -1
  167. package/components/chip/themes/dark/chip.fluent.css.js.map +1 -1
  168. package/components/chip/themes/dark/chip.indigo.css.js +1 -1
  169. package/components/chip/themes/dark/chip.indigo.css.js.map +1 -1
  170. package/components/chip/themes/dark/chip.material.css.js +1 -1
  171. package/components/chip/themes/dark/chip.material.css.js.map +1 -1
  172. package/components/chip/themes/light/chip.bootstrap.css.js +1 -1
  173. package/components/chip/themes/light/chip.bootstrap.css.js.map +1 -1
  174. package/components/chip/themes/light/chip.fluent.css.js +1 -1
  175. package/components/chip/themes/light/chip.fluent.css.js.map +1 -1
  176. package/components/chip/themes/light/chip.indigo.css.js +1 -1
  177. package/components/chip/themes/light/chip.indigo.css.js.map +1 -1
  178. package/components/chip/themes/light/chip.material.css.js +1 -1
  179. package/components/chip/themes/light/chip.material.css.js.map +1 -1
  180. package/components/chip/themes/light/chip.shared.css.js +1 -1
  181. package/components/chip/themes/light/chip.shared.css.js.map +1 -1
  182. package/components/chip/themes/shared/chip.bootstrap.css.js +1 -1
  183. package/components/chip/themes/shared/chip.bootstrap.css.js.map +1 -1
  184. package/components/chip/themes/shared/chip.common.css.js +1 -1
  185. package/components/chip/themes/shared/chip.common.css.js.map +1 -1
  186. package/components/chip/themes/shared/chip.fluent.css.js +1 -1
  187. package/components/chip/themes/shared/chip.fluent.css.js.map +1 -1
  188. package/components/chip/themes/shared/chip.indigo.css.js +1 -1
  189. package/components/chip/themes/shared/chip.indigo.css.js.map +1 -1
  190. package/components/chip/themes/themes.d.ts +1 -1
  191. package/components/chip/themes/themes.js.map +1 -1
  192. package/components/combo/combo-header.js +2 -2
  193. package/components/combo/combo-header.js.map +1 -1
  194. package/components/combo/combo-item.d.ts +0 -2
  195. package/components/combo/combo-item.js +4 -7
  196. package/components/combo/combo-item.js.map +1 -1
  197. package/components/combo/combo.d.ts +84 -26
  198. package/components/combo/combo.js +197 -152
  199. package/components/combo/combo.js.map +1 -1
  200. package/components/combo/controllers/data.d.ts +30 -3
  201. package/components/combo/controllers/data.js +34 -9
  202. package/components/combo/controllers/data.js.map +1 -1
  203. package/components/combo/controllers/navigation.d.ts +8 -2
  204. package/components/combo/controllers/navigation.js +11 -12
  205. package/components/combo/controllers/navigation.js.map +1 -1
  206. package/components/combo/operations/filter.d.ts +17 -1
  207. package/components/combo/operations/filter.js +29 -9
  208. package/components/combo/operations/filter.js.map +1 -1
  209. package/components/combo/operations/group.js +1 -1
  210. package/components/combo/operations/group.js.map +1 -1
  211. package/components/combo/themes/combo.base.css.js +1 -1
  212. package/components/combo/themes/combo.base.css.js.map +1 -1
  213. package/components/combo/themes/themes.d.ts +1 -1
  214. package/components/combo/themes/themes.js.map +1 -1
  215. package/components/combo/types.d.ts +8 -4
  216. package/components/combo/types.js.map +1 -1
  217. package/components/combo/validators.d.ts +1 -1
  218. package/components/combo/validators.js.map +1 -1
  219. package/components/date-picker/date-picker.base.d.ts +294 -0
  220. package/components/date-picker/date-picker.base.js +480 -0
  221. package/components/date-picker/date-picker.base.js.map +1 -0
  222. package/components/date-picker/date-picker.d.ts +52 -172
  223. package/components/date-picker/date-picker.js +88 -393
  224. package/components/date-picker/date-picker.js.map +1 -1
  225. package/components/date-picker/themes/themes.d.ts +1 -1
  226. package/components/date-picker/themes/themes.js.map +1 -1
  227. package/components/date-picker/validators.d.ts +1 -1
  228. package/components/date-picker/validators.js +2 -2
  229. package/components/date-picker/validators.js.map +1 -1
  230. package/components/date-range-picker/date-range-input.d.ts +12 -14
  231. package/components/date-range-picker/date-range-input.js +42 -98
  232. package/components/date-range-picker/date-range-input.js.map +1 -1
  233. package/components/date-range-picker/date-range-mask-parser.d.ts +22 -34
  234. package/components/date-range-picker/date-range-mask-parser.js +38 -69
  235. package/components/date-range-picker/date-range-mask-parser.js.map +1 -1
  236. package/components/date-range-picker/date-range-picker.d.ts +98 -191
  237. package/components/date-range-picker/date-range-picker.js +210 -530
  238. package/components/date-range-picker/date-range-picker.js.map +1 -1
  239. package/components/date-range-picker/predefined-ranges-area.d.ts +2 -2
  240. package/components/date-range-picker/predefined-ranges-area.js +5 -5
  241. package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
  242. package/components/date-range-picker/themes/ranges-themes.d.ts +1 -1
  243. package/components/date-range-picker/themes/ranges-themes.js.map +1 -1
  244. package/components/date-range-picker/themes/themes.d.ts +1 -1
  245. package/components/date-range-picker/themes/themes.js.map +1 -1
  246. package/components/date-range-picker/validators.d.ts +1 -1
  247. package/components/date-range-picker/validators.js +15 -22
  248. package/components/date-range-picker/validators.js.map +1 -1
  249. package/components/date-time-input/date-part.d.ts +18 -1
  250. package/components/date-time-input/date-part.js +10 -0
  251. package/components/date-time-input/date-part.js.map +1 -1
  252. package/components/date-time-input/date-time-input.base.d.ts +74 -12
  253. package/components/date-time-input/date-time-input.base.js +99 -27
  254. package/components/date-time-input/date-time-input.base.js.map +1 -1
  255. package/components/date-time-input/date-time-input.d.ts +13 -23
  256. package/components/date-time-input/date-time-input.js +45 -65
  257. package/components/date-time-input/date-time-input.js.map +1 -1
  258. package/components/date-time-input/datetime-mask-parser.d.ts +45 -109
  259. package/components/date-time-input/datetime-mask-parser.js +88 -139
  260. package/components/date-time-input/datetime-mask-parser.js.map +1 -1
  261. package/components/date-time-input/validators.d.ts +1 -1
  262. package/components/date-time-input/validators.js +2 -2
  263. package/components/date-time-input/validators.js.map +1 -1
  264. package/components/dialog/dialog.d.ts +2 -2
  265. package/components/dialog/dialog.js +21 -22
  266. package/components/dialog/dialog.js.map +1 -1
  267. package/components/dialog/themes/themes.d.ts +1 -1
  268. package/components/dialog/themes/themes.js.map +1 -1
  269. package/components/divider/divider.d.ts +2 -1
  270. package/components/divider/divider.js +3 -3
  271. package/components/divider/divider.js.map +1 -1
  272. package/components/divider/themes/themes.d.ts +1 -1
  273. package/components/divider/themes/themes.js.map +1 -1
  274. package/components/dropdown/dropdown-group.d.ts +10 -3
  275. package/components/dropdown/dropdown-group.js +21 -5
  276. package/components/dropdown/dropdown-group.js.map +1 -1
  277. package/components/dropdown/dropdown-header.d.ts +2 -2
  278. package/components/dropdown/dropdown-header.js +7 -2
  279. package/components/dropdown/dropdown-header.js.map +1 -1
  280. package/components/dropdown/dropdown-item.d.ts +4 -4
  281. package/components/dropdown/dropdown-item.js +3 -3
  282. package/components/dropdown/dropdown-item.js.map +1 -1
  283. package/components/dropdown/dropdown.d.ts +75 -32
  284. package/components/dropdown/dropdown.js +189 -110
  285. package/components/dropdown/dropdown.js.map +1 -1
  286. package/components/dropdown/themes/container.d.ts +1 -1
  287. package/components/dropdown/themes/container.js.map +1 -1
  288. package/components/dropdown/themes/group.d.ts +1 -1
  289. package/components/dropdown/themes/group.js.map +1 -1
  290. package/components/dropdown/themes/header.d.ts +1 -1
  291. package/components/dropdown/themes/header.js.map +1 -1
  292. package/components/dropdown/themes/item.d.ts +1 -1
  293. package/components/dropdown/themes/item.js.map +1 -1
  294. package/components/expansion-panel/expansion-panel.d.ts +14 -5
  295. package/components/expansion-panel/expansion-panel.js +10 -9
  296. package/components/expansion-panel/expansion-panel.js.map +1 -1
  297. package/components/expansion-panel/themes/themes.d.ts +1 -1
  298. package/components/expansion-panel/themes/themes.js.map +1 -1
  299. package/components/file-input/file-input.d.ts +20 -12
  300. package/components/file-input/file-input.js +17 -12
  301. package/components/file-input/file-input.js.map +1 -1
  302. package/components/file-input/themes/themes.d.ts +1 -1
  303. package/components/file-input/themes/themes.js.map +1 -1
  304. package/components/file-input/validators.d.ts +1 -1
  305. package/components/file-input/validators.js +1 -1
  306. package/components/file-input/validators.js.map +1 -1
  307. package/components/focus-trap/focus-trap.js +3 -2
  308. package/components/focus-trap/focus-trap.js.map +1 -1
  309. package/components/highlight/highlight.js +2 -2
  310. package/components/highlight/highlight.js.map +1 -1
  311. package/components/highlight/service.d.ts +4 -1
  312. package/components/highlight/service.js +23 -7
  313. package/components/highlight/service.js.map +1 -1
  314. package/components/highlight/themes/themes.d.ts +1 -1
  315. package/components/highlight/themes/themes.js.map +1 -1
  316. package/components/icon/icon-references.d.ts +3 -2
  317. package/components/icon/icon-references.js +103 -491
  318. package/components/icon/icon-references.js.map +1 -1
  319. package/components/icon/icon-state.broadcast.d.ts +14 -17
  320. package/components/icon/icon-state.broadcast.js +19 -20
  321. package/components/icon/icon-state.broadcast.js.map +1 -1
  322. package/components/icon/icon.d.ts +14 -25
  323. package/components/icon/icon.js +37 -24
  324. package/components/icon/icon.js.map +1 -1
  325. package/components/icon/icon.registry.d.ts +69 -131
  326. package/components/icon/icon.registry.js +51 -53
  327. package/components/icon/icon.registry.js.map +1 -1
  328. package/components/icon/internal-icons-lib.js +2 -2
  329. package/components/icon/internal-icons-lib.js.map +1 -1
  330. package/components/icon/registry/parser.d.ts +15 -3
  331. package/components/icon/registry/parser.js +36 -11
  332. package/components/icon/registry/parser.js.map +1 -1
  333. package/components/icon/registry/types.d.ts +55 -11
  334. package/components/icon/registry/types.js.map +1 -1
  335. package/components/icon/themes/icon.base.css.js +1 -1
  336. package/components/icon/themes/icon.base.css.js.map +1 -1
  337. package/components/icon/themes/shared/icon.common.css.js +1 -1
  338. package/components/icon/themes/shared/icon.common.css.js.map +1 -1
  339. package/components/icon/themes/themes.d.ts +1 -1
  340. package/components/icon/themes/themes.js.map +1 -1
  341. package/components/input/input-base.d.ts +12 -12
  342. package/components/input/input-base.js +13 -15
  343. package/components/input/input-base.js.map +1 -1
  344. package/components/input/input.d.ts +15 -12
  345. package/components/input/input.js +8 -8
  346. package/components/input/input.js.map +1 -1
  347. package/components/input/themes/input.base.css.js +1 -1
  348. package/components/input/themes/input.base.css.js.map +1 -1
  349. package/components/input/themes/shared/input.bootstrap.css.js +1 -1
  350. package/components/input/themes/shared/input.bootstrap.css.js.map +1 -1
  351. package/components/input/themes/shared/input.common.css.js +1 -1
  352. package/components/input/themes/shared/input.common.css.js.map +1 -1
  353. package/components/input/themes/shared/input.fluent.css.js +1 -1
  354. package/components/input/themes/shared/input.fluent.css.js.map +1 -1
  355. package/components/input/themes/shared/input.indigo.css.js +1 -1
  356. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  357. package/components/input/themes/shared/input.material.css.js +1 -1
  358. package/components/input/themes/shared/input.material.css.js.map +1 -1
  359. package/components/input/themes/themes.d.ts +1 -1
  360. package/components/input/themes/themes.js.map +1 -1
  361. package/components/input/validators.d.ts +1 -1
  362. package/components/input/validators.js +1 -1
  363. package/components/input/validators.js.map +1 -1
  364. package/components/list/list-header.js +3 -3
  365. package/components/list/list-header.js.map +1 -1
  366. package/components/list/list-item.js +3 -3
  367. package/components/list/list-item.js.map +1 -1
  368. package/components/list/list.js +3 -3
  369. package/components/list/list.js.map +1 -1
  370. package/components/list/themes/container.d.ts +1 -1
  371. package/components/list/themes/container.js.map +1 -1
  372. package/components/list/themes/header.d.ts +1 -1
  373. package/components/list/themes/header.js.map +1 -1
  374. package/components/list/themes/item.d.ts +1 -1
  375. package/components/list/themes/item.js.map +1 -1
  376. package/components/mask-input/mask-history.d.ts +99 -0
  377. package/components/mask-input/mask-history.js +95 -0
  378. package/components/mask-input/mask-history.js.map +1 -0
  379. package/components/mask-input/mask-input.d.ts +14 -9
  380. package/components/mask-input/mask-input.js +20 -23
  381. package/components/mask-input/mask-input.js.map +1 -1
  382. package/components/mask-input/mask-parser.d.ts +20 -2
  383. package/components/mask-input/mask-parser.js +21 -13
  384. package/components/mask-input/mask-parser.js.map +1 -1
  385. package/components/mask-input/validators.d.ts +1 -1
  386. package/components/mask-input/validators.js +1 -1
  387. package/components/mask-input/validators.js.map +1 -1
  388. package/components/nav-drawer/nav-drawer-header-item.d.ts +1 -1
  389. package/components/nav-drawer/nav-drawer-header-item.js +2 -2
  390. package/components/nav-drawer/nav-drawer-header-item.js.map +1 -1
  391. package/components/nav-drawer/nav-drawer-item.d.ts +2 -2
  392. package/components/nav-drawer/nav-drawer-item.js +4 -4
  393. package/components/nav-drawer/nav-drawer-item.js.map +1 -1
  394. package/components/nav-drawer/nav-drawer.d.ts +3 -3
  395. package/components/nav-drawer/nav-drawer.js +11 -14
  396. package/components/nav-drawer/nav-drawer.js.map +1 -1
  397. package/components/nav-drawer/themes/container.base.css.js +1 -1
  398. package/components/nav-drawer/themes/container.base.css.js.map +1 -1
  399. package/components/nav-drawer/themes/container.d.ts +1 -1
  400. package/components/nav-drawer/themes/container.js +2 -3
  401. package/components/nav-drawer/themes/container.js.map +1 -1
  402. package/components/nav-drawer/themes/dark/container/nav-drawer.shared.css.js +1 -1
  403. package/components/nav-drawer/themes/dark/container/nav-drawer.shared.css.js.map +1 -1
  404. package/components/nav-drawer/themes/header-item.d.ts +1 -1
  405. package/components/nav-drawer/themes/header-item.js.map +1 -1
  406. package/components/nav-drawer/themes/item.d.ts +1 -1
  407. package/components/nav-drawer/themes/item.js.map +1 -1
  408. package/components/nav-drawer/themes/light/container/nav-drawer.bootstrap.css.js +1 -1
  409. package/components/nav-drawer/themes/light/container/nav-drawer.bootstrap.css.js.map +1 -1
  410. package/components/nav-drawer/themes/light/container/nav-drawer.fluent.css.js +1 -1
  411. package/components/nav-drawer/themes/light/container/nav-drawer.fluent.css.js.map +1 -1
  412. package/components/nav-drawer/themes/light/container/nav-drawer.indigo.css.js +1 -1
  413. package/components/nav-drawer/themes/light/container/nav-drawer.indigo.css.js.map +1 -1
  414. package/components/nav-drawer/themes/light/container/nav-drawer.shared.css.js +1 -1
  415. package/components/nav-drawer/themes/light/container/nav-drawer.shared.css.js.map +1 -1
  416. package/components/nav-drawer/themes/shared/container/nav-drawer.bootstrap.css.js +1 -1
  417. package/components/nav-drawer/themes/shared/container/nav-drawer.bootstrap.css.js.map +1 -1
  418. package/components/nav-drawer/themes/shared/container/nav-drawer.indigo.css.js +1 -1
  419. package/components/nav-drawer/themes/shared/container/nav-drawer.indigo.css.js.map +1 -1
  420. package/components/nav-drawer/themes/shared/container/nav-drawer.material.css.js +1 -1
  421. package/components/nav-drawer/themes/shared/container/nav-drawer.material.css.js.map +1 -1
  422. package/components/navbar/navbar.js +2 -2
  423. package/components/navbar/navbar.js.map +1 -1
  424. package/components/navbar/themes/themes.d.ts +1 -1
  425. package/components/navbar/themes/themes.js.map +1 -1
  426. package/components/popover/popover.d.ts +10 -3
  427. package/components/popover/popover.js +114 -99
  428. package/components/popover/popover.js.map +1 -1
  429. package/components/progress/base.d.ts +1 -1
  430. package/components/progress/base.js +5 -4
  431. package/components/progress/base.js.map +1 -1
  432. package/components/progress/circular-gradient.d.ts +2 -2
  433. package/components/progress/circular-gradient.js +1 -1
  434. package/components/progress/circular-gradient.js.map +1 -1
  435. package/components/progress/circular-progress.d.ts +15 -15
  436. package/components/progress/circular-progress.js +7 -6
  437. package/components/progress/circular-progress.js.map +1 -1
  438. package/components/progress/linear-progress.d.ts +12 -12
  439. package/components/progress/linear-progress.js +4 -4
  440. package/components/progress/linear-progress.js.map +1 -1
  441. package/components/progress/themes/circular/circular.progress.base.css.js +1 -1
  442. package/components/progress/themes/circular/circular.progress.base.css.js.map +1 -1
  443. package/components/progress/themes/circular/themes.d.ts +1 -1
  444. package/components/progress/themes/circular/themes.js.map +1 -1
  445. package/components/progress/themes/linear/linear.progress.base.css.js +1 -1
  446. package/components/progress/themes/linear/linear.progress.base.css.js.map +1 -1
  447. package/components/progress/themes/linear/themes.d.ts +1 -1
  448. package/components/progress/themes/linear/themes.js.map +1 -1
  449. package/components/qr-code/model/encode.d.ts +20 -0
  450. package/components/qr-code/model/encode.js +166 -0
  451. package/components/qr-code/model/encode.js.map +1 -0
  452. package/components/qr-code/model/error-correction.d.ts +15 -0
  453. package/components/qr-code/model/error-correction.js +1114 -0
  454. package/components/qr-code/model/error-correction.js.map +1 -0
  455. package/components/qr-code/model/mask.d.ts +11 -0
  456. package/components/qr-code/model/mask.js +161 -0
  457. package/components/qr-code/model/mask.js.map +1 -0
  458. package/components/qr-code/model/matrix.d.ts +15 -0
  459. package/components/qr-code/model/matrix.js +277 -0
  460. package/components/qr-code/model/matrix.js.map +1 -0
  461. package/components/qr-code/qr-code.d.ts +134 -0
  462. package/components/qr-code/qr-code.js +221 -0
  463. package/components/qr-code/qr-code.js.map +1 -0
  464. package/components/qr-code/renderer/constants.d.ts +26 -0
  465. package/components/qr-code/renderer/constants.js +5 -0
  466. package/components/qr-code/renderer/constants.js.map +1 -0
  467. package/components/qr-code/renderer/corner.d.ts +23 -0
  468. package/components/qr-code/renderer/corner.js +25 -0
  469. package/components/qr-code/renderer/corner.js.map +1 -0
  470. package/components/qr-code/renderer/dots.d.ts +14 -0
  471. package/components/qr-code/renderer/dots.js +7 -0
  472. package/components/qr-code/renderer/dots.js.map +1 -0
  473. package/components/qr-code/renderer/helpers.d.ts +18 -0
  474. package/components/qr-code/renderer/helpers.js +158 -0
  475. package/components/qr-code/renderer/helpers.js.map +1 -0
  476. package/components/qr-code/renderer/image.d.ts +23 -0
  477. package/components/qr-code/renderer/image.js +29 -0
  478. package/components/qr-code/renderer/image.js.map +1 -0
  479. package/components/qr-code/themes/dark/qr-code.bootstrap.css.js +3 -0
  480. package/components/qr-code/themes/dark/qr-code.bootstrap.css.js.map +1 -0
  481. package/components/qr-code/themes/dark/qr-code.fluent.css.d.ts +1 -0
  482. package/components/qr-code/themes/dark/qr-code.fluent.css.js +3 -0
  483. package/components/qr-code/themes/dark/qr-code.fluent.css.js.map +1 -0
  484. package/components/qr-code/themes/dark/qr-code.indigo.css.d.ts +1 -0
  485. package/components/qr-code/themes/dark/qr-code.indigo.css.js +3 -0
  486. package/components/qr-code/themes/dark/qr-code.indigo.css.js.map +1 -0
  487. package/components/qr-code/themes/dark/qr-code.material.css.d.ts +1 -0
  488. package/components/qr-code/themes/dark/qr-code.material.css.js +3 -0
  489. package/components/qr-code/themes/dark/qr-code.material.css.js.map +1 -0
  490. package/components/qr-code/themes/light/qr-code.bootstrap.css.d.ts +1 -0
  491. package/components/qr-code/themes/light/qr-code.bootstrap.css.js +3 -0
  492. package/components/qr-code/themes/light/qr-code.bootstrap.css.js.map +1 -0
  493. package/components/qr-code/themes/light/qr-code.fluent.css.d.ts +1 -0
  494. package/components/qr-code/themes/light/qr-code.fluent.css.js +3 -0
  495. package/components/qr-code/themes/light/qr-code.fluent.css.js.map +1 -0
  496. package/components/qr-code/themes/light/qr-code.indigo.css.d.ts +1 -0
  497. package/components/qr-code/themes/light/qr-code.indigo.css.js +3 -0
  498. package/components/qr-code/themes/light/qr-code.indigo.css.js.map +1 -0
  499. package/components/qr-code/themes/light/qr-code.material.css.d.ts +1 -0
  500. package/components/qr-code/themes/light/qr-code.material.css.js +3 -0
  501. package/components/qr-code/themes/light/qr-code.material.css.js.map +1 -0
  502. package/components/qr-code/themes/light/qr-code.shared.css.d.ts +1 -0
  503. package/components/qr-code/themes/light/qr-code.shared.css.js +3 -0
  504. package/components/qr-code/themes/light/qr-code.shared.css.js.map +1 -0
  505. package/components/qr-code/themes/qr-code.base.css.d.ts +1 -0
  506. package/components/qr-code/themes/qr-code.base.css.js +3 -0
  507. package/components/qr-code/themes/qr-code.base.css.js.map +1 -0
  508. package/components/qr-code/themes/shared/qr-code.common.css.d.ts +1 -0
  509. package/components/qr-code/themes/shared/qr-code.common.css.js +3 -0
  510. package/components/qr-code/themes/shared/qr-code.common.css.js.map +1 -0
  511. package/components/qr-code/themes/themes.d.ts +2 -0
  512. package/components/qr-code/themes/themes.js +46 -0
  513. package/components/qr-code/themes/themes.js.map +1 -0
  514. package/components/qr-code/types.d.ts +16 -0
  515. package/components/qr-code/types.js +2 -0
  516. package/components/qr-code/types.js.map +1 -0
  517. package/components/radio/controller.d.ts +35 -0
  518. package/components/radio/controller.js +100 -0
  519. package/components/radio/controller.js.map +1 -0
  520. package/components/radio/radio.d.ts +26 -14
  521. package/components/radio/radio.js +47 -36
  522. package/components/radio/radio.js.map +1 -1
  523. package/components/radio/themes/themes.d.ts +1 -1
  524. package/components/radio/themes/themes.js.map +1 -1
  525. package/components/radio/validators.d.ts +1 -1
  526. package/components/radio/validators.js +5 -3
  527. package/components/radio/validators.js.map +1 -1
  528. package/components/radio-group/radio-group.d.ts +19 -10
  529. package/components/radio-group/radio-group.js +50 -41
  530. package/components/radio-group/radio-group.js.map +1 -1
  531. package/components/radio-group/themes/themes.d.ts +1 -1
  532. package/components/radio-group/themes/themes.js.map +1 -1
  533. package/components/rating/rating-symbol.d.ts +1 -1
  534. package/components/rating/rating-symbol.js +1 -1
  535. package/components/rating/rating-symbol.js.map +1 -1
  536. package/components/rating/rating.d.ts +6 -6
  537. package/components/rating/rating.js +12 -9
  538. package/components/rating/rating.js.map +1 -1
  539. package/components/rating/themes/themes.d.ts +1 -1
  540. package/components/rating/themes/themes.js.map +1 -1
  541. package/components/resize-container/resize-container.d.ts +4 -4
  542. package/components/resize-container/resize-container.js +4 -4
  543. package/components/resize-container/resize-container.js.map +1 -1
  544. package/components/resize-container/resize-controller.js +2 -2
  545. package/components/resize-container/resize-controller.js.map +1 -1
  546. package/components/resize-container/themes/themes.d.ts +1 -1
  547. package/components/resize-container/themes/themes.js.map +1 -1
  548. package/components/ripple/ripple.d.ts +1 -1
  549. package/components/ripple/ripple.js +3 -2
  550. package/components/ripple/ripple.js.map +1 -1
  551. package/components/select/select-group.d.ts +9 -2
  552. package/components/select/select-group.js +21 -5
  553. package/components/select/select-group.js.map +1 -1
  554. package/components/select/select-header.d.ts +1 -1
  555. package/components/select/select-header.js +7 -2
  556. package/components/select/select-header.js.map +1 -1
  557. package/components/select/select-item.d.ts +4 -4
  558. package/components/select/select-item.js +3 -3
  559. package/components/select/select-item.js.map +1 -1
  560. package/components/select/select.d.ts +49 -22
  561. package/components/select/select.js +132 -67
  562. package/components/select/select.js.map +1 -1
  563. package/components/select/themes/select.base.css.js +1 -1
  564. package/components/select/themes/select.base.css.js.map +1 -1
  565. package/components/select/themes/themes.d.ts +1 -1
  566. package/components/select/themes/themes.js.map +1 -1
  567. package/components/select/validators.d.ts +1 -1
  568. package/components/select/validators.js +1 -1
  569. package/components/select/validators.js.map +1 -1
  570. package/components/slider/range-slider.d.ts +2 -2
  571. package/components/slider/range-slider.js +8 -8
  572. package/components/slider/range-slider.js.map +1 -1
  573. package/components/slider/slider-base.js +18 -14
  574. package/components/slider/slider-base.js.map +1 -1
  575. package/components/slider/slider-label.js +1 -1
  576. package/components/slider/slider-label.js.map +1 -1
  577. package/components/slider/slider.d.ts +3 -3
  578. package/components/slider/slider.js +6 -6
  579. package/components/slider/slider.js.map +1 -1
  580. package/components/slider/themes/themes.d.ts +1 -1
  581. package/components/slider/themes/themes.js.map +1 -1
  582. package/components/snackbar/snackbar.d.ts +3 -3
  583. package/components/snackbar/snackbar.js +8 -8
  584. package/components/snackbar/snackbar.js.map +1 -1
  585. package/components/snackbar/themes/themes.d.ts +1 -1
  586. package/components/snackbar/themes/themes.js.map +1 -1
  587. package/components/splitter/splitter.d.ts +106 -23
  588. package/components/splitter/splitter.js +234 -147
  589. package/components/splitter/splitter.js.map +1 -1
  590. package/components/splitter/themes/themes.d.ts +1 -1
  591. package/components/splitter/themes/themes.js.map +1 -1
  592. package/components/splitter/types.d.ts +14 -3
  593. package/components/splitter/types.js.map +1 -1
  594. package/components/stepper/common/animations.d.ts +1 -1
  595. package/components/stepper/common/animations.js +2 -2
  596. package/components/stepper/common/animations.js.map +1 -1
  597. package/components/stepper/step.d.ts +1 -1
  598. package/components/stepper/step.js +7 -7
  599. package/components/stepper/step.js.map +1 -1
  600. package/components/stepper/stepper.d.ts +5 -5
  601. package/components/stepper/stepper.js +12 -9
  602. package/components/stepper/stepper.js.map +1 -1
  603. package/components/stepper/themes/step/themes.d.ts +1 -1
  604. package/components/stepper/themes/step/themes.js.map +1 -1
  605. package/components/tabs/tab-dom.d.ts +31 -28
  606. package/components/tabs/tab-dom.js +84 -34
  607. package/components/tabs/tab-dom.js.map +1 -1
  608. package/components/tabs/tab.d.ts +24 -6
  609. package/components/tabs/tab.js +34 -13
  610. package/components/tabs/tab.js.map +1 -1
  611. package/components/tabs/tabs.d.ts +36 -22
  612. package/components/tabs/tabs.js +118 -88
  613. package/components/tabs/tabs.js.map +1 -1
  614. package/components/tabs/themes/shared/tabs/tabs.indigo.css.js +1 -1
  615. package/components/tabs/themes/shared/tabs/tabs.indigo.css.js.map +1 -1
  616. package/components/tabs/themes/tab-themes.d.ts +1 -1
  617. package/components/tabs/themes/tab-themes.js.map +1 -1
  618. package/components/tabs/themes/tabs-themes.d.ts +1 -1
  619. package/components/tabs/themes/tabs-themes.js.map +1 -1
  620. package/components/tabs/themes/tabs.base.css.js +1 -1
  621. package/components/tabs/themes/tabs.base.css.js.map +1 -1
  622. package/components/textarea/textarea.d.ts +19 -14
  623. package/components/textarea/textarea.js +22 -16
  624. package/components/textarea/textarea.js.map +1 -1
  625. package/components/textarea/themes/themes.d.ts +1 -1
  626. package/components/textarea/themes/themes.js.map +1 -1
  627. package/components/textarea/validators.d.ts +1 -1
  628. package/components/textarea/validators.js +1 -1
  629. package/components/textarea/validators.js.map +1 -1
  630. package/components/theme-provider/theme-provider.d.ts +1 -1
  631. package/components/theme-provider/theme-provider.js +2 -2
  632. package/components/theme-provider/theme-provider.js.map +1 -1
  633. package/components/tile-manager/position.d.ts +1 -1
  634. package/components/tile-manager/position.js +2 -2
  635. package/components/tile-manager/position.js.map +1 -1
  636. package/components/tile-manager/resize-state.js +4 -3
  637. package/components/tile-manager/resize-state.js.map +1 -1
  638. package/components/tile-manager/themes/container.d.ts +1 -1
  639. package/components/tile-manager/themes/container.js.map +1 -1
  640. package/components/tile-manager/themes/tile.d.ts +1 -1
  641. package/components/tile-manager/themes/tile.js.map +1 -1
  642. package/components/tile-manager/tile-ghost-util.js +1 -1
  643. package/components/tile-manager/tile-ghost-util.js.map +1 -1
  644. package/components/tile-manager/tile-manager.d.ts +1 -1
  645. package/components/tile-manager/tile-manager.js +7 -7
  646. package/components/tile-manager/tile-manager.js.map +1 -1
  647. package/components/tile-manager/tile.d.ts +4 -4
  648. package/components/tile-manager/tile.js +29 -25
  649. package/components/tile-manager/tile.js.map +1 -1
  650. package/components/toast/themes/themes.d.ts +1 -1
  651. package/components/toast/themes/themes.js.map +1 -1
  652. package/components/toast/toast.d.ts +1 -1
  653. package/components/toast/toast.js +3 -3
  654. package/components/toast/toast.js.map +1 -1
  655. package/components/tooltip/controller.d.ts +18 -16
  656. package/components/tooltip/controller.js +62 -41
  657. package/components/tooltip/controller.js.map +1 -1
  658. package/components/tooltip/service.d.ts +2 -1
  659. package/components/tooltip/service.js +10 -15
  660. package/components/tooltip/service.js.map +1 -1
  661. package/components/tooltip/themes/shared/tooltip.common.css.js +1 -1
  662. package/components/tooltip/themes/shared/tooltip.common.css.js.map +1 -1
  663. package/components/tooltip/themes/shared/tooltip.indigo.css.js +1 -1
  664. package/components/tooltip/themes/shared/tooltip.indigo.css.js.map +1 -1
  665. package/components/tooltip/themes/themes.d.ts +1 -1
  666. package/components/tooltip/themes/themes.js.map +1 -1
  667. package/components/tooltip/themes/tooltip.base.css.js +1 -1
  668. package/components/tooltip/themes/tooltip.base.css.js.map +1 -1
  669. package/components/tooltip/tooltip.d.ts +64 -18
  670. package/components/tooltip/tooltip.js +112 -62
  671. package/components/tooltip/tooltip.js.map +1 -1
  672. package/components/tree/themes/container.base.css.js +1 -1
  673. package/components/tree/themes/container.base.css.js.map +1 -1
  674. package/components/tree/themes/container.d.ts +1 -1
  675. package/components/tree/themes/container.js.map +1 -1
  676. package/components/tree/themes/item.base.css.js +1 -1
  677. package/components/tree/themes/item.base.css.js.map +1 -1
  678. package/components/tree/themes/item.d.ts +1 -1
  679. package/components/tree/themes/item.js.map +1 -1
  680. package/components/tree/tree-item.d.ts +62 -36
  681. package/components/tree/tree-item.js +223 -233
  682. package/components/tree/tree-item.js.map +1 -1
  683. package/components/tree/tree.common.d.ts +16 -1
  684. package/components/tree/tree.common.js +40 -1
  685. package/components/tree/tree.common.js.map +1 -1
  686. package/components/tree/tree.d.ts +21 -14
  687. package/components/tree/tree.js +64 -72
  688. package/components/tree/tree.js.map +1 -1
  689. package/components/tree/tree.navigation.d.ts +39 -29
  690. package/components/tree/tree.navigation.js +140 -192
  691. package/components/tree/tree.navigation.js.map +1 -1
  692. package/components/tree/tree.selection.d.ts +32 -31
  693. package/components/tree/tree.selection.js +184 -178
  694. package/components/tree/tree.selection.js.map +1 -1
  695. package/components/types.js.map +1 -1
  696. package/components/validation-container/validation-container.d.ts +33 -6
  697. package/components/validation-container/validation-container.js +81 -70
  698. package/components/validation-container/validation-container.js.map +1 -1
  699. package/components/virtualization/engine.d.ts +92 -0
  700. package/components/virtualization/engine.js +217 -0
  701. package/components/virtualization/engine.js.map +1 -0
  702. package/components/virtualization/types.d.ts +53 -0
  703. package/components/virtualization/types.js +14 -0
  704. package/components/virtualization/types.js.map +1 -0
  705. package/components/virtualization/virtualization.d.ts +235 -0
  706. package/components/virtualization/virtualization.js +474 -0
  707. package/components/virtualization/virtualization.js.map +1 -0
  708. package/components/visually-hidden/visually-hidden.js +1 -1
  709. package/components/visually-hidden/visually-hidden.js.map +1 -1
  710. package/custom-elements.json +57500 -47242
  711. package/extras/chat-markdown-renderer.d.ts +1 -1
  712. package/extras/chat-markdown-renderer.js.map +1 -1
  713. package/igniteui-webcomponents.css-data.json +2 -2
  714. package/igniteui-webcomponents.html-data.json +1 -1
  715. package/index.d.ts +20 -15
  716. package/index.js +11 -9
  717. package/index.js.map +1 -1
  718. package/internals/abort-handler.js.map +1 -0
  719. package/internals/context.d.ts +39 -0
  720. package/{components/common → internals}/context.js +2 -1
  721. package/internals/context.js.map +1 -0
  722. package/internals/controllers/adopt-styles.d.ts +76 -0
  723. package/internals/controllers/adopt-styles.js +173 -0
  724. package/internals/controllers/adopt-styles.js.map +1 -0
  725. package/internals/controllers/aria-projection.d.ts +144 -0
  726. package/internals/controllers/aria-projection.js +138 -0
  727. package/internals/controllers/aria-projection.js.map +1 -0
  728. package/{components/common → internals}/controllers/async-consumer.js +8 -7
  729. package/internals/controllers/async-consumer.js.map +1 -0
  730. package/internals/controllers/command.js.map +1 -0
  731. package/{components/common → internals}/controllers/drag.js +3 -2
  732. package/internals/controllers/drag.js.map +1 -0
  733. package/{components/common → internals}/controllers/focus-ring.js +5 -2
  734. package/internals/controllers/focus-ring.js.map +1 -0
  735. package/{components/common → internals}/controllers/fullscreen.js +6 -3
  736. package/internals/controllers/fullscreen.js.map +1 -0
  737. package/{components/common → internals}/controllers/gestures.d.ts +1 -1
  738. package/{components/common → internals}/controllers/gestures.js +4 -4
  739. package/internals/controllers/gestures.js.map +1 -0
  740. package/{components/common → internals}/controllers/id-resolver.js +15 -21
  741. package/internals/controllers/id-resolver.js.map +1 -0
  742. package/{components/common → internals}/controllers/internals.d.ts +48 -3
  743. package/{components/common → internals}/controllers/internals.js +32 -0
  744. package/internals/controllers/internals.js.map +1 -0
  745. package/{components/common → internals}/controllers/key-bindings.d.ts +3 -6
  746. package/{components/common → internals}/controllers/key-bindings.js +43 -29
  747. package/internals/controllers/key-bindings.js.map +1 -0
  748. package/{components/common → internals}/controllers/mutation-observer.d.ts +5 -4
  749. package/internals/controllers/mutation-observer.js +74 -0
  750. package/internals/controllers/mutation-observer.js.map +1 -0
  751. package/{components/common → internals}/controllers/resize-observer.d.ts +11 -1
  752. package/{components/common → internals}/controllers/resize-observer.js +13 -2
  753. package/internals/controllers/resize-observer.js.map +1 -0
  754. package/{components/common → internals}/controllers/root-click.js +8 -13
  755. package/internals/controllers/root-click.js.map +1 -0
  756. package/{components/common → internals}/controllers/root-scroll.d.ts +11 -8
  757. package/internals/controllers/root-scroll.js +71 -0
  758. package/internals/controllers/root-scroll.js.map +1 -0
  759. package/{components/common → internals}/controllers/slot.d.ts +18 -2
  760. package/{components/common → internals}/controllers/slot.js +21 -6
  761. package/internals/controllers/slot.js.map +1 -0
  762. package/internals/date/compare.d.ts +2 -0
  763. package/internals/date/compare.js +23 -0
  764. package/internals/date/compare.js.map +1 -0
  765. package/internals/date/converters.d.ts +18 -0
  766. package/internals/date/converters.js +73 -0
  767. package/internals/date/converters.js.map +1 -0
  768. package/{components/calendar → internals/date}/model.d.ts +6 -3
  769. package/{components/calendar → internals/date}/model.js +23 -0
  770. package/internals/date/model.js.map +1 -0
  771. package/internals/decorators/blazorAdditionalDependencies.js.map +1 -0
  772. package/internals/decorators/blazorDeepImport.js.map +1 -0
  773. package/internals/decorators/blazorInclude.js.map +1 -0
  774. package/internals/decorators/blazorIndirectRender.js.map +1 -0
  775. package/internals/decorators/blazorSuppressComponent.js.map +1 -0
  776. package/internals/decorators/shadow-options.js.map +1 -0
  777. package/internals/decorators/watch.js.map +1 -0
  778. package/internals/definitions/defineAllComponents.js +153 -0
  779. package/internals/definitions/defineAllComponents.js.map +1 -0
  780. package/internals/definitions/defineComponents.js.map +1 -0
  781. package/internals/definitions/register.js.map +1 -0
  782. package/{components/common → internals}/i18n/EN/calendar.resources.js +1 -1
  783. package/internals/i18n/EN/calendar.resources.js.map +1 -0
  784. package/internals/i18n/EN/chat.resources.js.map +1 -0
  785. package/internals/i18n/EN/date-picker.resources.js.map +1 -0
  786. package/internals/i18n/EN/date-range-picker.resources.js.map +1 -0
  787. package/internals/i18n/i18n-controller.js.map +1 -0
  788. package/{components/common → internals}/i18n/utils.js +1 -1
  789. package/internals/i18n/utils.js.map +1 -0
  790. package/{components/common → internals}/mixins/alert.d.ts +2 -2
  791. package/{components/common → internals}/mixins/alert.js +3 -3
  792. package/internals/mixins/alert.js.map +1 -0
  793. package/{components/common → internals}/mixins/combo-box.d.ts +10 -2
  794. package/{components/common → internals}/mixins/combo-box.js +9 -4
  795. package/internals/mixins/combo-box.js.map +1 -0
  796. package/internals/mixins/constructor.js.map +1 -0
  797. package/internals/mixins/event-emitter.js.map +1 -0
  798. package/{components/common → internals}/mixins/forms/associated-required.js +10 -19
  799. package/internals/mixins/forms/associated-required.js.map +1 -0
  800. package/{components/common → internals}/mixins/forms/associated.d.ts +1 -1
  801. package/{components/common → internals}/mixins/forms/associated.js +66 -51
  802. package/internals/mixins/forms/associated.js.map +1 -0
  803. package/{components/common → internals}/mixins/forms/form-transformers.d.ts +1 -1
  804. package/{components/common → internals}/mixins/forms/form-transformers.js +2 -2
  805. package/internals/mixins/forms/form-transformers.js.map +1 -0
  806. package/internals/mixins/forms/form-value.js.map +1 -0
  807. package/{components/common → internals}/mixins/forms/types.d.ts +7 -7
  808. package/internals/mixins/forms/types.js.map +1 -0
  809. package/{components/common → internals}/mixins/mask-behavior.d.ts +11 -3
  810. package/{components/common → internals}/mixins/mask-behavior.js +117 -29
  811. package/internals/mixins/mask-behavior.js.map +1 -0
  812. package/{components/common → internals}/mixins/option.d.ts +0 -2
  813. package/{components/common → internals}/mixins/option.js +1 -4
  814. package/internals/mixins/option.js.map +1 -0
  815. package/internals/part-map.js.map +1 -0
  816. package/{components/common → internals}/templates/input-shell.d.ts +8 -1
  817. package/{components/common → internals}/templates/input-shell.js +14 -4
  818. package/internals/templates/input-shell.js.map +1 -0
  819. package/{components/common → internals}/templates/masked-input.d.ts +8 -2
  820. package/{components/common → internals}/templates/masked-input.js +5 -3
  821. package/internals/templates/masked-input.js.map +1 -0
  822. package/internals/utils/arrays.d.ts +53 -0
  823. package/internals/utils/arrays.js +31 -0
  824. package/internals/utils/arrays.js.map +1 -0
  825. package/internals/utils/dom.d.ts +92 -0
  826. package/internals/utils/dom.js +143 -0
  827. package/internals/utils/dom.js.map +1 -0
  828. package/internals/utils/events.d.ts +41 -0
  829. package/internals/utils/events.js +37 -0
  830. package/internals/utils/events.js.map +1 -0
  831. package/internals/utils/lit.d.ts +8 -0
  832. package/internals/utils/lit.js +15 -0
  833. package/internals/utils/lit.js.map +1 -0
  834. package/internals/utils/math.d.ts +50 -0
  835. package/internals/utils/math.js +38 -0
  836. package/internals/utils/math.js.map +1 -0
  837. package/internals/utils/objects.d.ts +25 -0
  838. package/internals/utils/objects.js +125 -0
  839. package/internals/utils/objects.js.map +1 -0
  840. package/internals/utils/strings.d.ts +44 -0
  841. package/internals/utils/strings.js +46 -0
  842. package/internals/utils/strings.js.map +1 -0
  843. package/internals/utils/types.d.ts +13 -0
  844. package/internals/utils/types.js +31 -0
  845. package/internals/utils/types.js.map +1 -0
  846. package/{components/common → internals}/validators.d.ts +1 -1
  847. package/{components/common → internals}/validators.js +4 -2
  848. package/internals/validators.js.map +1 -0
  849. package/package.json +15 -7
  850. package/skills/igniteui-wc-generate-from-image-design/references/gotchas.md +15 -1
  851. package/themes/dark/bootstrap.css +1 -1
  852. package/themes/dark/fluent.css +1 -1
  853. package/themes/dark/indigo.css +1 -1
  854. package/themes/dark/material.css +1 -1
  855. package/themes/light/bootstrap.css +1 -1
  856. package/themes/light/fluent.css +1 -1
  857. package/themes/light/indigo.css +1 -1
  858. package/themes/light/material.css +1 -1
  859. package/theming/theming-controller.d.ts +2 -2
  860. package/theming/theming-controller.js.map +1 -1
  861. package/web-types.json +3 -3
  862. package/components/calendar/model.js.map +0 -1
  863. package/components/combo/combo-list.d.ts +0 -11
  864. package/components/combo/combo-list.js +0 -13
  865. package/components/combo/combo-list.js.map +0 -1
  866. package/components/common/abort-handler.js.map +0 -1
  867. package/components/common/context.d.ts +0 -25
  868. package/components/common/context.js.map +0 -1
  869. package/components/common/controllers/adopt-styles.d.ts +0 -124
  870. package/components/common/controllers/adopt-styles.js +0 -75
  871. package/components/common/controllers/adopt-styles.js.map +0 -1
  872. package/components/common/controllers/async-consumer.js.map +0 -1
  873. package/components/common/controllers/command.js.map +0 -1
  874. package/components/common/controllers/drag.js.map +0 -1
  875. package/components/common/controllers/focus-ring.js.map +0 -1
  876. package/components/common/controllers/fullscreen.js.map +0 -1
  877. package/components/common/controllers/gestures.js.map +0 -1
  878. package/components/common/controllers/id-resolver.js.map +0 -1
  879. package/components/common/controllers/internals.js.map +0 -1
  880. package/components/common/controllers/key-bindings.js.map +0 -1
  881. package/components/common/controllers/mutation-observer.js +0 -69
  882. package/components/common/controllers/mutation-observer.js.map +0 -1
  883. package/components/common/controllers/resize-observer.js.map +0 -1
  884. package/components/common/controllers/root-click.js.map +0 -1
  885. package/components/common/controllers/root-scroll.js +0 -63
  886. package/components/common/controllers/root-scroll.js.map +0 -1
  887. package/components/common/controllers/slot.js.map +0 -1
  888. package/components/common/decorators/blazorAdditionalDependencies.js.map +0 -1
  889. package/components/common/decorators/blazorDeepImport.js.map +0 -1
  890. package/components/common/decorators/blazorInclude.js.map +0 -1
  891. package/components/common/decorators/blazorIndirectRender.js.map +0 -1
  892. package/components/common/decorators/blazorSuppressComponent.js.map +0 -1
  893. package/components/common/decorators/shadow-options.js.map +0 -1
  894. package/components/common/decorators/watch.js.map +0 -1
  895. package/components/common/definitions/defineAllComponents.js +0 -151
  896. package/components/common/definitions/defineAllComponents.js.map +0 -1
  897. package/components/common/definitions/defineComponents.js.map +0 -1
  898. package/components/common/definitions/register.js.map +0 -1
  899. package/components/common/i18n/EN/calendar.resources.js.map +0 -1
  900. package/components/common/i18n/EN/chat.resources.js.map +0 -1
  901. package/components/common/i18n/EN/date-picker.resources.js.map +0 -1
  902. package/components/common/i18n/EN/date-range-picker.resources.js.map +0 -1
  903. package/components/common/i18n/i18n-controller.js.map +0 -1
  904. package/components/common/i18n/utils.js.map +0 -1
  905. package/components/common/mixins/alert.js.map +0 -1
  906. package/components/common/mixins/combo-box.js.map +0 -1
  907. package/components/common/mixins/constructor.js.map +0 -1
  908. package/components/common/mixins/event-emitter.js.map +0 -1
  909. package/components/common/mixins/forms/associated-required.js.map +0 -1
  910. package/components/common/mixins/forms/associated.js.map +0 -1
  911. package/components/common/mixins/forms/form-transformers.js.map +0 -1
  912. package/components/common/mixins/forms/form-value.js.map +0 -1
  913. package/components/common/mixins/forms/types.js.map +0 -1
  914. package/components/common/mixins/mask-behavior.js.map +0 -1
  915. package/components/common/mixins/option.js.map +0 -1
  916. package/components/common/part-map.js.map +0 -1
  917. package/components/common/templates/input-shell.js.map +0 -1
  918. package/components/common/templates/masked-input.js.map +0 -1
  919. package/components/common/util.d.ts +0 -196
  920. package/components/common/util.js +0 -390
  921. package/components/common/util.js.map +0 -1
  922. package/components/common/validators.js.map +0 -1
  923. package/components/icon/registry/default-map.d.ts +0 -107
  924. package/components/icon/registry/default-map.js +0 -25
  925. package/components/icon/registry/default-map.js.map +0 -1
  926. package/components/nav-drawer/themes/shared/container/nav-drawer.fluent.css.js +0 -3
  927. package/components/nav-drawer/themes/shared/container/nav-drawer.fluent.css.js.map +0 -1
  928. package/components/radio/utils.d.ts +0 -13
  929. package/components/radio/utils.js +0 -37
  930. package/components/radio/utils.js.map +0 -1
  931. /package/components/{nav-drawer/themes/shared/container/nav-drawer.fluent.css.d.ts → qr-code/themes/dark/qr-code.bootstrap.css.d.ts} +0 -0
  932. /package/{components/common → internals}/abort-handler.d.ts +0 -0
  933. /package/{components/common → internals}/abort-handler.js +0 -0
  934. /package/{components/common → internals}/controllers/async-consumer.d.ts +0 -0
  935. /package/{components/common → internals}/controllers/command.d.ts +0 -0
  936. /package/{components/common → internals}/controllers/command.js +0 -0
  937. /package/{components/common → internals}/controllers/drag.d.ts +0 -0
  938. /package/{components/common → internals}/controllers/focus-ring.d.ts +0 -0
  939. /package/{components/common → internals}/controllers/fullscreen.d.ts +0 -0
  940. /package/{components/common → internals}/controllers/id-resolver.d.ts +0 -0
  941. /package/{components/common → internals}/controllers/root-click.d.ts +0 -0
  942. /package/{components/common → internals}/decorators/blazorAdditionalDependencies.d.ts +0 -0
  943. /package/{components/common → internals}/decorators/blazorAdditionalDependencies.js +0 -0
  944. /package/{components/common → internals}/decorators/blazorDeepImport.d.ts +0 -0
  945. /package/{components/common → internals}/decorators/blazorDeepImport.js +0 -0
  946. /package/{components/common → internals}/decorators/blazorInclude.d.ts +0 -0
  947. /package/{components/common → internals}/decorators/blazorInclude.js +0 -0
  948. /package/{components/common → internals}/decorators/blazorIndirectRender.d.ts +0 -0
  949. /package/{components/common → internals}/decorators/blazorIndirectRender.js +0 -0
  950. /package/{components/common → internals}/decorators/blazorSuppressComponent.d.ts +0 -0
  951. /package/{components/common → internals}/decorators/blazorSuppressComponent.js +0 -0
  952. /package/{components/common → internals}/decorators/shadow-options.d.ts +0 -0
  953. /package/{components/common → internals}/decorators/shadow-options.js +0 -0
  954. /package/{components/common → internals}/decorators/watch.d.ts +0 -0
  955. /package/{components/common → internals}/decorators/watch.js +0 -0
  956. /package/{components/common → internals}/definitions/defineAllComponents.d.ts +0 -0
  957. /package/{components/common → internals}/definitions/defineComponents.d.ts +0 -0
  958. /package/{components/common → internals}/definitions/defineComponents.js +0 -0
  959. /package/{components/common → internals}/definitions/register.d.ts +0 -0
  960. /package/{components/common → internals}/definitions/register.js +0 -0
  961. /package/{components/common → internals}/i18n/EN/calendar.resources.d.ts +0 -0
  962. /package/{components/common → internals}/i18n/EN/chat.resources.d.ts +0 -0
  963. /package/{components/common → internals}/i18n/EN/chat.resources.js +0 -0
  964. /package/{components/common → internals}/i18n/EN/date-picker.resources.d.ts +0 -0
  965. /package/{components/common → internals}/i18n/EN/date-picker.resources.js +0 -0
  966. /package/{components/common → internals}/i18n/EN/date-range-picker.resources.d.ts +0 -0
  967. /package/{components/common → internals}/i18n/EN/date-range-picker.resources.js +0 -0
  968. /package/{components/common → internals}/i18n/i18n-controller.d.ts +0 -0
  969. /package/{components/common → internals}/i18n/i18n-controller.js +0 -0
  970. /package/{components/common → internals}/i18n/utils.d.ts +0 -0
  971. /package/{components/common → internals}/mixins/constructor.d.ts +0 -0
  972. /package/{components/common → internals}/mixins/constructor.js +0 -0
  973. /package/{components/common → internals}/mixins/event-emitter.d.ts +0 -0
  974. /package/{components/common → internals}/mixins/event-emitter.js +0 -0
  975. /package/{components/common → internals}/mixins/forms/associated-required.d.ts +0 -0
  976. /package/{components/common → internals}/mixins/forms/form-value.d.ts +0 -0
  977. /package/{components/common → internals}/mixins/forms/form-value.js +0 -0
  978. /package/{components/common → internals}/mixins/forms/types.js +0 -0
  979. /package/{components/common → internals}/part-map.d.ts +0 -0
  980. /package/{components/common → internals}/part-map.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"carousel.js","sourceRoot":"","sources":["../../../src/components/carousel/carousel.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACL,yBAAyB,GAE1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,kBAAkB,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EACL,qBAAqB,GAEtB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EACL,cAAc,EACd,SAAS,EACT,UAAU,EACV,MAAM,EACN,OAAO,GACR,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,wBAAwB,GAEzB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACL,iBAAiB,EAGjB,QAAQ,GACT,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EACL,oBAAoB,EACpB,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,kBAAkB,EAClB,OAAO,EACP,KAAK,EACL,IAAI,EACJ,IAAI,GACL,MAAM,mBAAmB,CAAC;AAC3B,OAAO,gBAAgB,MAAM,iBAAiB,CAAC;AAK/C,OAAO,6BAA6B,MAAM,yBAAyB,CAAC;AACpE,OAAO,sCAAsC,MAAM,mCAAmC,CAAC;AACvF,OAAO,yBAAyB,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,wCAAwC,CAAC;AAQ1E,IAAI,MAAM,GAAG,CAAC,CAAC;AACf,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;AAuBtE,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,iBAAiB,CAGjE,UAAU,CAAC;aACG,WAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,AAAnB,CAAoB;aACjB,YAAO,GAAG,cAAc,AAAjB,CAAkB;IAGzC,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CACf,oBAAoB,EACpB,6BAA6B,EAC7B,sCAAsC,EACtC,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,CACnB,CAAC;IACJ,CAAC;IAoCO,mBAAmB;QACzB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAUD,IAAY,uBAAuB;QACjC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC7C,CAAC;IAED,IAAY,oBAAoB;QAC9B,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC;IAClD,CAAC;IAED,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IACnD,CAAC;IA2DD,IAAW,qBAAqB,CAAC,KAAa;QAC5C,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;IACtC,CAAC;IAED,IAAW,qBAAqB;QAC9B,OAAO,CACL,IAAI,CAAC,sBAAsB;YAC3B,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,MAAM,CAC7C,CAAC;IACJ,CAAC;IAYD,IAAW,iBAAiB,CAAC,KAAa;QACxC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;IAClC,CAAC;IAED,IAAW,iBAAiB;QAC1B,OAAO,CACL,IAAI,CAAC,kBAAkB,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,MAAM,CACzE,CAAC;IACJ,CAAC;IA8BD,IAAW,MAAM,CAAC,KAAa;QAC7B,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,KAAK,CAAC;IACtC,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;IACrC,CAAC;IAOD,IAAW,eAAe,CAAC,KAA+B;QACxD,IAAI,CAAC,eAAe,CAAC,eAAe,GAAG,KAAK,CAAC;IAC/C,CAAC;IAED,IAAW,eAAe;QACxB,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC;IAC9C,CAAC;IAMD,IAAW,MAAM;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAKD,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAKD,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAC9D,CAAC;IAKD,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAKD,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IASS,eAAe;QACvB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAGS,eAAe;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAMD;QACE,KAAK,EAAE,CAAC;QAlQO,gBAAW,GAAG,gBAAgB,MAAM,EAAE,EAAE,CAAC;QAClD,YAAO,GAAG,KAAK,CAAC;QAEhB,wCAAmC,GAAG,KAAK,CAAC;QAC5C,2BAAsB,GAAG,KAAK,CAAC;QAC/B,mBAAc,GAAG,KAAK,CAAC;QAEvB,YAAO,GAAgC,EAAE,CAAC;QAC1C,yBAAoB,GAAoC,EAAE,CAAC;QAM3D,aAAQ,GAAG,KAAK,CAAC;QAER,WAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE;YAChD,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI,CAAC,iBAAiB;YAChC,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEc,oBAAe,GAC9B,iBAAiB,CAA2B,IAAI,EAAE;YAChD,SAAS,EAAE,yBAAyB;SACrC,CAAC,CAAC;QAEY,aAAQ,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE;YACpD,OAAO,EAAE,eAAe;YACxB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QASc,gCAA2B,GAAG,SAAS,EAAkB,CAAC;QAC1D,4BAAuB,GAAG,SAAS,EAAkB,CAAC;QACtD,mBAAc,GAAG,SAAS,EAAsB,CAAC;QACjD,mBAAc,GAAG,SAAS,EAAsB,CAAC;QA2B3D,gBAAW,GAAG,KAAK,CAAC;QAWpB,8BAAyB,GAAG,KAAK,CAAC;QAOlC,mBAAc,GAAG,KAAK,CAAC;QAOvB,mBAAc,GAAG,KAAK,CAAC;QAOvB,aAAQ,GAAG,KAAK,CAAC;QAOjB,0BAAqB,GAAkC,KAAK,CAAC;QAsD7D,2BAAsB,GAAG,EAAE,CAAC;QAO5B,kBAAa,GAAkC,OAAO,CAAC;QA2F5D,sBAAsB,CAAC,IAAI,EAAE;YAC3B,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,mBAAmB,EAAE,UAAU;aAChC;SACF,CAAC,CAAC;QAEH,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAEhC,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC3E,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC3E,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACpE,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAErE,qBAAqB,CAAC,IAAI,EAAE;YAC1B,GAAG,EAAE,IAAI,CAAC,2BAA2B;YACrC,SAAS,EAAE,IAAI;SAChB,CAAC;aACC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,sBAAsB,CAAC;aAC9C,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,sBAAsB,CAAC;aAC/C,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,oBAAoB,CAAC;aAC1C,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAEhD,cAAc,CAAC,IAAI,EAAE;YACnB,GAAG,EAAE,IAAI,CAAC,uBAAuB;SAClC,CAAC;aACC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC;aACrC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC;aACvC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC;aACjC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAEnC,cAAc,CAAC,IAAI,EAAE;YACnB,GAAG,EAAE,IAAI,CAAC,cAAc;SACzB,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAEjE,cAAc,CAAC,IAAI,EAAE;YACnB,GAAG,EAAE,IAAI,CAAC,cAAc;SACzB,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAE7D,wBAAwB,CAAC,IAAI,EAAE;YAC7B,QAAQ,EAAE,IAAI,CAAC,iBAAiB;YAChC,MAAM,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC;YAC3C,MAAM,EAAE;gBACN,eAAe,EAAE,CAAC,QAAQ,CAAC;gBAC3B,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;IACL,CAAC;IAEkB,KAAK,CAAC,YAAY;QACnC,MAAM,IAAI,CAAC,cAAc,CAAC;QAC1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,cAAc,CACjB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CACtE,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,EACxB,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,GACsB;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAElE,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAC9B,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CACxD,CAAC;QAEF,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YAChD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;gBAC9B,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;YACvB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IAMO,iBAAiB,CACvB,MAAkE;QAElE,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE;gBAC1D,QAAQ,EAAE,yBAAyB,CAAC,OAAO;aAC5C,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE;gBACvE,QAAQ,EAAE,6BAA6B,CAAC,OAAO;aAChD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,yBAAyB,CAAC,KAAmB;QACnD,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC;QAE5D,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IAEO,uBAAuB,CAAC,KAAiB;QAG/C,MAAM,IAAI,GAAG,KAAK,CAAC,aAAqB,CAAC;QAEzC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC;QAE/C,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACjC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,KAAmB;QACrD,MAAM,SAAS,GAAG,kBAAkB,CAClC,6BAA6B,CAAC,OAAO,EACrC,KAAK,CACL,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC,uBAAuB;YACxC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC;YAC9C,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAE3D,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CACzE,CAAC;IACJ,CAAC;IAMO,KAAK,CAAC,gBAAgB;QAC5B,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC;QAChD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC;QAChD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC;QAChD,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CACpE,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC;QAChD,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CACpE,CAAC;IACJ,CAAC;IAMO,oBAAoB,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAc;QAC9D,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,kBAAkB,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAc;QAChE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAG,GAAG,EAAE;gBACpB,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChB,OAAO,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACtD,CAAC;gBACD,OAAO,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACtD,CAAC,CAAC;YAEF,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAMO,gCAAgC;QACtC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAEO,oCAAoC;QAC1C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC9B,QAAgC;QAEhC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;QAED,IAAI,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAEO,yBAAyB;QAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,yBAAyB;YAAE,OAAO;QAE7D,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,KAAgC;QACrD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;QAEhC,IAAI,IAAI,CAAC,mCAAmC,EAAE,CAAC;YAC7C,IAAI,CAAC,uBAAuB;gBAC1B,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE;gBACjD,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;YAElD,IAAI,CAAC,mCAAmC,GAAG,KAAK,CAAC;QACnD,CAAC;IACH,CAAC;IAEO,0BAA0B;QAChC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YAClD,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;YACjD,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAChC,SAAS,CAAC,KAAK,GAAG,GAAG,CAAC;QACxB,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAClC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,CAAC;IACH,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;gBACpC,IACE,IAAI,CAAC,SAAS;oBACd,IAAI,CAAC,KAAK;oBACV,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,EAC5C,CAAC;oBACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;oBAClD,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC9D,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,CAAC;YACH,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAC1B,SAAoC,EACpC,YAAuC,EACvC,GAAoB;QAEpB,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YAEnB,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC7B,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YAC/B,MAAM,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACtC,YAAY,CAAC,QAAQ,GAAG,KAAK,CAAC;QAChC,CAAC;aAAM,CAAC;YAEN,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC7B,YAAY,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC9C,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YAC/B,MAAM,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAClD,YAAY,CAAC,QAAQ,GAAG,KAAK,CAAC;QAChC,CAAC;IACH,CAAC;IASM,IAAI;QACT,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAKM,KAAK;QACV,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAKM,KAAK,CAAC,IAAI;QACf,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;IAKM,KAAK,CAAC,IAAI;QACf,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YAC/D,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;IAiBM,KAAK,CAAC,MAAM,CACjB,YAAgD,EAChD,kBAAoC;QAEpC,IAAI,KAAa,CAAC;QAClB,IAAI,KAA4C,CAAC;QAEjD,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACrC,KAAK,GAAG,YAAY,CAAC;YACrB,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,YAAY,CAAC;YACrB,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACrD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,GAAG,GAAG,kBAAkB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAE3E,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IAMO,iBAAiB;QACvB,OAAO,IAAI,CAAA;;UAEL,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;;;qBAGb,IAAI,CAAC,eAAe,CAAC,uBAAuB;YACzD,gBAAgB;wBACA,IAAI,CAAC,WAAW;oBACpB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC;iBACzC,IAAI,CAAC,oCAAoC;;;;;;;;;;;;UAYhD,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;;;qBAGb,IAAI,CAAC,eAAe,CAAC,mBAAmB,IAAI,YAAY;wBACrD,IAAI,CAAC,WAAW;oBACpB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC;iBACtD,IAAI,CAAC,gCAAgC;;;;;;;;;;KAUjD,CAAC;IACJ,CAAC;IAES,CAAC,iBAAiB;QAC1B,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;YACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YAErD,MAAM,IAAI,CAAA;;;oBAGI,KAAK,CAAC,MAAM;mBACb,CAAC;;;;oBAIA,QAAQ,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;;;;;oBAK7C,QAAQ,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;;;OAG9C,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,yBAAyB;QAC/B,MAAM,KAAK,GAAG;YACZ,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,IAAI,CAAC,qBAAqB,KAAK,OAAO;SAC9C,CAAC;QAEF,OAAO,IAAI,CAAA;;;YAGH,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC;;iBAE5B,OAAO,CAAC,KAAK,CAAC;;0CAEW,IAAI,CAAC,qBAAqB;cACtD,KAAK,CACL,IAAI,CAAC,uBAAuB;YAC1B,CAAC,CAAC,IAAI,CAAC,0BAA0B,EAAE;YACnC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAC7B;;;;KAIR,CAAC;IACJ,CAAC;IAEO,YAAY;QAClB,MAAM,KAAK,GAAG;YACZ,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,IAAI,CAAC,qBAAqB,KAAK,OAAO;SAC9C,CAAC;QACF,MAAM,KAAK,GAAG,YAAY,CACxB,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,OAAO,GAAG,CAAC,EAChB,IAAI,CAAC,KAAK,CACX,CAAC;QAEF,OAAO,IAAI,CAAA;kBACG,OAAO,CAAC,KAAK,CAAC;gBAChB,KAAK;;KAEhB,CAAC;IACJ,CAAC;IAEkB,MAAM;QACvB,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,oBAAoB,CAAC;QACzE,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,oBAAoB,CAAC;QAEnE,OAAO,IAAI,CAAA;;UAEL,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;UAC/D,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,yBAAyB,EAAE;UAC5D,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,OAAO;;YAEtC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC;eAClC,IAAI,CAAC,WAAW;sBACT,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ;;;;;KAKlE,CAAC;IACJ,CAAC;;AA7wBO;IADP,KAAK,EAAE;0DACyC;AAGzC;IADP,KAAK,EAAE;sDACiB;AAuBR;IADhB,QAAQ,CAAC,6BAA6B,CAAC,OAAO,CAAC;gEACgC;AAgCzE;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;yDAC3C;AAWpB;IALN,QAAQ,CAAC;QACR,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,8BAA8B;KAC1C,CAAC;uEACuC;AAOlC;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;4DAC3C;AAOvB;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;4DAC3C;AAOvB;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;sDACnB;AAOjB;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,wBAAwB,EAAE,CAAC;mEACkB;AASpE;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,yBAAyB,EAAE,CAAC;iEAGlD;AAmBD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC;6DAG9C;AAeM;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;sDACS;AAO7B;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,0BAA0B,EAAE,CAAC;oEAC/B;AAO5B;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;2DACoB;AAO9D;IADC,QAAQ,EAAE;kDAGV;AAWD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;2DAG9B;AAiDS;IAHT,KAAK,CAAC,eAAe,CAAC;IACtB,KAAK,CAAC,mBAAmB,CAAC;IAC1B,KAAK,CAAC,uBAAuB,CAAC;2DAG9B;AAGS;IADT,KAAK,CAAC,UAAU,CAAC;2DAOjB","sourcesContent":["import { ContextProvider } from '@lit/context';\nimport {\n CarouselResourceStringsEN,\n type ICarouselResourceStrings,\n} from 'igniteui-i18n-core';\nimport { html, LitElement, nothing } from 'lit';\nimport { property, queryAll, state } from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport IgcButtonComponent from '../button/button.js';\nimport { carouselContext } from '../common/context.js';\nimport {\n addGesturesController,\n type SwipeEvent,\n} from '../common/controllers/gestures.js';\nimport { addInternalsController } from '../common/controllers/internals.js';\nimport {\n addKeybindings,\n arrowLeft,\n arrowRight,\n endKey,\n homeKey,\n} from '../common/controllers/key-bindings.js';\nimport {\n createMutationController,\n type MutationControllerParams,\n} from '../common/controllers/mutation-observer.js';\nimport {\n addSlotController,\n type InferSlotNames,\n type SlotChangeCallbackParameters,\n setSlots,\n} from '../common/controllers/slot.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { addI18nController } from '../common/i18n/i18n-controller.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { partMap } from '../common/part-map.js';\nimport {\n addSafeEventListener,\n asNumber,\n first,\n formatString,\n getElementFromPath,\n isEmpty,\n isLTR,\n last,\n wrap,\n} from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport type {\n CarouselIndicatorsOrientation,\n HorizontalTransitionAnimation,\n} from '../types.js';\nimport IgcCarouselIndicatorComponent from './carousel-indicator.js';\nimport IgcCarouselIndicatorContainerComponent from './carousel-indicator-container.js';\nimport IgcCarouselSlideComponent from './carousel-slide.js';\nimport { styles } from './themes/carousel.base.css.js';\nimport { all } from './themes/container.js';\nimport { styles as shared } from './themes/shared/carousel.common.css.js';\n\nexport interface IgcCarouselComponentEventMap {\n igcSlideChanged: CustomEvent<number>;\n igcPlaying: CustomEvent<void>;\n igcPaused: CustomEvent<void>;\n}\n\nlet nextId = 1;\nconst Slots = setSlots('indicator', 'previous-button', 'next-button');\n\n/**\n * The `igc-carousel` presents a set of `igc-carousel-slide`s by sequentially displaying a subset of one or more slides.\n *\n * @element igc-carousel\n *\n * @slot Default slot for the carousel. Any projected `igc-carousel-slide` components should be projected here.\n * @slot previous-button - Renders content inside the previous button.\n * @slot next-button - Renders content inside the next button.\n *\n * @fires igcSlideChanged - Emitted when the current active slide is changed either by user interaction or by the interval callback.\n * @fires igcPlaying - Emitted when the carousel enters playing state by a user interaction.\n * @fires igcPaused - Emitted when the carousel enters paused state by a user interaction.\n *\n * @csspart navigation - The wrapper container of each carousel navigation button.\n * @csspart previous - The wrapper container of the carousel previous navigation button.\n * @csspart next - The wrapper container of the carousel next navigation button.\n * @csspart dot - The carousel dot indicator container.\n * @csspart active - The carousel active dot indicator container.\n * @csspart label - The label container of the carousel indicators.\n * @csspart start - The wrapping container of all carousel indicators when indicators-orientation is set to start.\n */\nexport default class IgcCarouselComponent extends EventEmitterMixin<\n IgcCarouselComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static styles = [styles, shared];\n public static readonly tagName = 'igc-carousel';\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcCarouselComponent,\n IgcCarouselIndicatorComponent,\n IgcCarouselIndicatorContainerComponent,\n IgcCarouselSlideComponent,\n IgcIconComponent,\n IgcButtonComponent\n );\n }\n\n //#region Internal state\n\n private readonly _carouselId = `igc-carousel-${nextId++}`;\n private _paused = false;\n private _lastInterval!: ReturnType<typeof setInterval> | null;\n private _hasKeyboardInteractionOnIndicators = false;\n private _hasPointerInteraction = false;\n private _hasInnerFocus = false;\n\n private _slides: IgcCarouselSlideComponent[] = [];\n private _projectedIndicators: IgcCarouselIndicatorComponent[] = [];\n\n @state()\n private _activeSlide!: IgcCarouselSlideComponent;\n\n @state()\n private _playing = false;\n\n private readonly _slots = addSlotController(this, {\n slots: Slots,\n onChange: this._handleSlotChange,\n initial: true,\n });\n\n private readonly _i18nController =\n addI18nController<ICarouselResourceStrings>(this, {\n defaultEN: CarouselResourceStringsEN,\n });\n\n private readonly _context = new ContextProvider(this, {\n context: carouselContext,\n initialValue: this,\n });\n\n private _setCarouselContext(): void {\n this._context.setValue(this, true);\n }\n\n @queryAll(IgcCarouselIndicatorComponent.tagName)\n private readonly _defaultIndicators!: NodeListOf<IgcCarouselIndicatorComponent>;\n\n private readonly _carouselSlidesContainerRef = createRef<HTMLDivElement>();\n private readonly _indicatorsContainerRef = createRef<HTMLDivElement>();\n private readonly _prevButtonRef = createRef<IgcButtonComponent>();\n private readonly _nextButtonRef = createRef<IgcButtonComponent>();\n\n private get _hasProjectedIndicators(): boolean {\n return !isEmpty(this._projectedIndicators);\n }\n\n private get _showIndicatorsLabel(): boolean {\n return this.total > this.maximumIndicatorsCount;\n }\n\n private get _nextIndex(): number {\n return wrap(0, this.total - 1, this.current + 1);\n }\n\n private get _previousIndex(): number {\n return wrap(0, this.total - 1, this.current - 1);\n }\n\n //#endregion\n\n //#region Public attributes and properties\n\n /**\n * Whether the carousel should skip rotating to the first slide after it reaches the last.\n * @attr disable-loop\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-loop' })\n public disableLoop = false;\n\n /**\n * Whether the carousel should ignore use interactions and not pause on them.\n * @attr disable-pause-on-interaction\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'disable-pause-on-interaction',\n })\n public disablePauseOnInteraction = false;\n\n /**\n * Whether the carousel should skip rendering of the default navigation buttons.\n * @attr hide-navigation\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-navigation' })\n public hideNavigation = false;\n\n /**\n * Whether the carousel should render the indicator controls (dots).\n * @attr hide-indicators\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-indicators' })\n public hideIndicators = false;\n\n /**\n * Whether the carousel has vertical alignment.\n * @attr vertical\n */\n @property({ type: Boolean, reflect: true })\n public vertical = false;\n\n /**\n * Sets the orientation of the indicator controls (dots).\n * @attr indicators-orientation\n */\n @property({ attribute: 'indicators-orientation' })\n public indicatorsOrientation: CarouselIndicatorsOrientation = 'end';\n\n /**\n * The format used to set the aria-label on the carousel indicators.\n * Instances of '{0}' will be replaced with the index of the corresponding slide.\n *\n * @attr indicators-label-format\n */\n @property({ attribute: 'indicators-label-format' })\n public set indicatorsLabelFormat(value: string) {\n this._indicatorsLabelFormat = value;\n }\n\n public get indicatorsLabelFormat() {\n return (\n this._indicatorsLabelFormat ??\n `${this.resourceStrings.carousel_slide} {0}`\n );\n }\n private _indicatorsLabelFormat: string | undefined;\n\n /**\n * The format used to set the aria-label on the carousel slides and the text displayed\n * when the number of indicators is greater than tha maximum indicator count.\n * Instances of '{0}' will be replaced with the index of the corresponding slide.\n * Instances of '{1}' will be replaced with the total amount of slides.\n *\n * @attr slides-label-format\n */\n @property({ attribute: 'slides-label-format' })\n public set slidesLabelFormat(value: string) {\n this._slidesLabelFormat = value;\n }\n\n public get slidesLabelFormat() {\n return (\n this._slidesLabelFormat ?? `{0} ${this.resourceStrings.carousel_of} {1}`\n );\n }\n\n private _slidesLabelFormat: string | undefined;\n\n /**\n * The duration in milliseconds between changing the active slide.\n * @attr interval\n */\n @property({ type: Number })\n public interval: number | undefined;\n\n /**\n * Controls the maximum indicator controls (dots) that can be shown. Default value is `10`.\n * @attr maximum-indicators-count\n */\n @property({ type: Number, attribute: 'maximum-indicators-count' })\n public maximumIndicatorsCount = 10;\n\n /**\n * The animation type.\n * @attr animation-type\n */\n @property({ attribute: 'animation-type' })\n public animationType: HorizontalTransitionAnimation = 'slide';\n\n /**\n * Gets/Sets the locale used for getting language, affecting resource strings.\n * @attr locale\n */\n @property()\n public set locale(value: string) {\n this._i18nController.locale = value;\n }\n\n public get locale() {\n return this._i18nController.locale;\n }\n\n /**\n * The resource strings for localization.\n * Currently only aria-label attributes are localized for the carousel.\n */\n @property({ attribute: false })\n public set resourceStrings(value: ICarouselResourceStrings) {\n this._i18nController.resourceStrings = value;\n }\n\n public get resourceStrings(): ICarouselResourceStrings {\n return this._i18nController.resourceStrings;\n }\n\n /* blazorSuppress */\n /**\n * The slides of the carousel.\n */\n public get slides(): IgcCarouselSlideComponent[] {\n return Array.from(this._slides);\n }\n\n /**\n * The total number of slides.\n */\n public get total(): number {\n return this._slides.length;\n }\n\n /**\n * The index of the current active slide.\n */\n public get current(): number {\n return Math.max(0, this._slides.indexOf(this._activeSlide));\n }\n\n /**\n * Whether the carousel is in playing state.\n */\n public get isPlaying(): boolean {\n return this._playing;\n }\n\n /**\n * Whether the carousel in in paused state.\n */\n public get isPaused(): boolean {\n return this._paused;\n }\n\n //#endregion\n\n //#region Watchers\n\n @watch('animationType')\n @watch('slidesLabelFormat')\n @watch('indicatorsLabelFormat')\n protected _contextChanged(): void {\n this._setCarouselContext();\n }\n\n @watch('interval')\n protected _intervalChange(): void {\n if (!this.isPlaying) {\n this._playing = true;\n }\n\n this._restartInterval();\n }\n\n //#endregion\n\n //#region Life-cycle hooks and observer callback\n\n constructor() {\n super();\n\n addInternalsController(this, {\n initialARIA: {\n role: 'region',\n ariaRoleDescription: 'carousel',\n },\n });\n\n addThemingController(this, all);\n\n addSafeEventListener(this, 'pointerenter', this._handlePointerInteraction);\n addSafeEventListener(this, 'pointerleave', this._handlePointerInteraction);\n addSafeEventListener(this, 'focusin', this._handleFocusInteraction);\n addSafeEventListener(this, 'focusout', this._handleFocusInteraction);\n\n addGesturesController(this, {\n ref: this._carouselSlidesContainerRef,\n touchOnly: true,\n })\n .set('swipe-left', this._handleHorizontalSwipe)\n .set('swipe-right', this._handleHorizontalSwipe)\n .set('swipe-up', this._handleVerticalSwipe)\n .set('swipe-down', this._handleVerticalSwipe);\n\n addKeybindings(this, {\n ref: this._indicatorsContainerRef,\n })\n .set(arrowLeft, this._handleArrowLeft)\n .set(arrowRight, this._handleArrowRight)\n .set(homeKey, this._handleHomeKey)\n .set(endKey, this._handleEndKey);\n\n addKeybindings(this, {\n ref: this._prevButtonRef,\n }).setActivateHandler(this._handleNavigationInteractionPrevious);\n\n addKeybindings(this, {\n ref: this._nextButtonRef,\n }).setActivateHandler(this._handleNavigationInteractionNext);\n\n createMutationController(this, {\n callback: this._observerCallback,\n filter: [IgcCarouselSlideComponent.tagName],\n config: {\n attributeFilter: ['active'],\n childList: true,\n subtree: true,\n },\n });\n }\n\n protected override async firstUpdated(): Promise<void> {\n await this.updateComplete;\n this._setCarouselContext();\n\n if (!isEmpty(this._slides)) {\n this._activateSlide(\n this._slides.findLast((slide) => slide.active) ?? first(this._slides)\n );\n }\n }\n\n private _observerCallback({\n changes: { added, attributes },\n }: MutationControllerParams<IgcCarouselSlideComponent>) {\n const activeSlides = this._slides.filter((slide) => slide.active);\n\n if (activeSlides.length <= 1) {\n return;\n }\n\n const idx = this._slides.indexOf(\n added.length ? last(added).node : last(attributes).node\n );\n\n for (const [i, slide] of this._slides.entries()) {\n if (slide.active && i !== idx) {\n slide.active = false;\n }\n }\n\n this._activateSlide(this._slides[idx]);\n }\n\n //#endregion\n\n //#region Event listeners\n\n private _handleSlotChange(\n params: SlotChangeCallbackParameters<InferSlotNames<typeof Slots>>\n ): void {\n if (params.isDefault || params.isInitial) {\n this._slides = this._slots.getAssignedElements('[default]', {\n selector: IgcCarouselSlideComponent.tagName,\n });\n }\n\n if (params.slot === 'indicator') {\n this._projectedIndicators = this._slots.getAssignedElements('indicator', {\n selector: IgcCarouselIndicatorComponent.tagName,\n });\n }\n }\n\n private _handlePointerInteraction(event: PointerEvent): void {\n this._hasPointerInteraction = event.type === 'pointerenter';\n\n if (!this._hasInnerFocus) {\n this._handlePauseOnInteraction();\n }\n }\n\n private _handleFocusInteraction(event: FocusEvent): void {\n // focusin - element that lost focus\n // focusout - element that gained focus\n const node = event.relatedTarget as Node;\n\n if (this.contains(node)) {\n return;\n }\n\n this._hasInnerFocus = event.type === 'focusin';\n\n if (!this._hasPointerInteraction) {\n this._handlePauseOnInteraction();\n }\n }\n\n private async _handleIndicatorClick(event: PointerEvent): Promise<void> {\n const indicator = getElementFromPath(\n IgcCarouselIndicatorComponent.tagName,\n event\n )!;\n\n const index = this._hasProjectedIndicators\n ? this._projectedIndicators.indexOf(indicator)\n : Array.from(this._defaultIndicators).indexOf(indicator);\n\n this._handleInteraction(() =>\n this.select(this._slides[index], index > this.current ? 'next' : 'prev')\n );\n }\n\n //#endregion\n\n //#region Keyboard event listeners\n\n private async _handleArrowLeft(): Promise<void> {\n this._hasKeyboardInteractionOnIndicators = true;\n this._handleInteraction(isLTR(this) ? this.prev : this.next);\n }\n\n private async _handleArrowRight(): Promise<void> {\n this._hasKeyboardInteractionOnIndicators = true;\n this._handleInteraction(isLTR(this) ? this.next : this.prev);\n }\n\n private async _handleHomeKey(): Promise<void> {\n this._hasKeyboardInteractionOnIndicators = true;\n this._handleInteraction(() =>\n this.select(isLTR(this) ? first(this._slides) : last(this._slides))\n );\n }\n\n private async _handleEndKey(): Promise<void> {\n this._hasKeyboardInteractionOnIndicators = true;\n this._handleInteraction(() =>\n this.select(isLTR(this) ? last(this._slides) : first(this._slides))\n );\n }\n\n //#endregion\n\n //#region Gestures event listeners\n\n private _handleVerticalSwipe({ data: { direction } }: SwipeEvent): void {\n if (this.vertical) {\n this._handleInteraction(direction === 'up' ? this.next : this.prev);\n }\n }\n\n private _handleHorizontalSwipe({ data: { direction } }: SwipeEvent): void {\n if (!this.vertical) {\n const callback = () => {\n if (isLTR(this)) {\n return direction === 'left' ? this.next : this.prev;\n }\n return direction === 'left' ? this.prev : this.next;\n };\n\n this._handleInteraction(callback());\n }\n }\n\n //#endregion\n\n //#region Internal API\n\n private _handleNavigationInteractionNext(): void {\n this._handleInteraction(this.next);\n }\n\n private _handleNavigationInteractionPrevious(): void {\n this._handleInteraction(this.prev);\n }\n\n private async _handleInteraction(\n callback: () => Promise<boolean>\n ): Promise<void> {\n if (this.interval) {\n this._resetInterval();\n }\n\n if (await callback.call(this)) {\n this.emitEvent('igcSlideChanged', { detail: this.current });\n }\n\n if (this.interval) {\n this._restartInterval();\n }\n }\n\n private _handlePauseOnInteraction(): void {\n if (!this.interval || this.disablePauseOnInteraction) return;\n\n if (this.isPlaying) {\n this.pause();\n this.emitEvent('igcPaused');\n } else {\n this.play();\n this.emitEvent('igcPlaying');\n }\n }\n\n private _activateSlide(slide: IgcCarouselSlideComponent): void {\n if (this._activeSlide) {\n this._activeSlide.active = false;\n }\n\n this._activeSlide = slide;\n this._activeSlide.active = true;\n\n if (this._hasKeyboardInteractionOnIndicators) {\n this._hasProjectedIndicators\n ? this._projectedIndicators[this.current].focus()\n : this._defaultIndicators[this.current].focus();\n\n this._hasKeyboardInteractionOnIndicators = false;\n }\n }\n\n private _updateProjectedIndicators(): void {\n for (const [idx, slide] of this._slides.entries()) {\n const indicator = this._projectedIndicators[idx];\n indicator.active = slide.active;\n indicator.index = idx;\n }\n\n if (this._activeSlide) {\n this.setAttribute('aria-controls', this._activeSlide.id);\n }\n }\n\n private _resetInterval(): void {\n if (this._lastInterval) {\n clearInterval(this._lastInterval);\n this._lastInterval = null;\n }\n }\n\n private _restartInterval(): void {\n this._resetInterval();\n\n if (asNumber(this.interval) > 0) {\n this._lastInterval = setInterval(() => {\n if (\n this.isPlaying &&\n this.total &&\n !(this.disableLoop && this._nextIndex === 0)\n ) {\n this.select(this.slides[this._nextIndex], 'next');\n this.emitEvent('igcSlideChanged', { detail: this.current });\n } else {\n this.pause();\n }\n }, this.interval);\n }\n }\n\n private async _animateSlides(\n nextSlide: IgcCarouselSlideComponent,\n currentSlide: IgcCarouselSlideComponent,\n dir: 'next' | 'prev'\n ): Promise<void> {\n if (dir === 'next') {\n // Animate slides in next direction\n currentSlide.previous = true;\n currentSlide.toggleAnimation('out');\n this._activateSlide(nextSlide);\n await nextSlide.toggleAnimation('in');\n currentSlide.previous = false;\n } else {\n // Animate slides in previous direction\n currentSlide.previous = true;\n currentSlide.toggleAnimation('in', 'reverse');\n this._activateSlide(nextSlide);\n await nextSlide.toggleAnimation('out', 'reverse');\n currentSlide.previous = false;\n }\n }\n\n //#endregion\n\n //#region Public API\n\n /**\n * Resumes playing of the carousel slides.\n */\n public play(): void {\n if (!this.isPlaying) {\n this._paused = false;\n this._playing = true;\n this._restartInterval();\n }\n }\n\n /**\n * Pauses the carousel rotation of slides.\n */\n public pause(): void {\n if (this.isPlaying) {\n this._playing = false;\n this._paused = true;\n this._resetInterval();\n }\n }\n\n /**\n * Switches to the next slide, runs any animations, and returns if the operation was successful.\n */\n public async next(): Promise<boolean> {\n if (this.disableLoop && this._nextIndex === 0) {\n this.pause();\n return false;\n }\n\n return await this.select(this._slides[this._nextIndex], 'next');\n }\n\n /**\n * Switches to the previous slide, runs any animations, and returns if the operation was successful.\n */\n public async prev(): Promise<boolean> {\n if (this.disableLoop && this._previousIndex === this.total - 1) {\n this.pause();\n return false;\n }\n\n return await this.select(this._slides[this._previousIndex], 'prev');\n }\n\n /* blazorSuppress */\n /**\n * Switches to the passed-in slide, runs any animations, and returns if the operation was successful.\n */\n public async select(\n slide: IgcCarouselSlideComponent,\n animationDirection?: 'next' | 'prev'\n ): Promise<boolean>;\n /**\n * Switches to slide by index, runs any animations, and returns if the operation was successful.\n */\n public async select(\n index: number,\n animationDirection?: 'next' | 'prev'\n ): Promise<boolean>;\n public async select(\n slideOrIndex: IgcCarouselSlideComponent | number,\n animationDirection?: 'next' | 'prev'\n ): Promise<boolean> {\n let index: number;\n let slide: IgcCarouselSlideComponent | undefined;\n\n if (typeof slideOrIndex === 'number') {\n index = slideOrIndex;\n slide = this._slides.at(index);\n } else {\n slide = slideOrIndex;\n index = this._slides.indexOf(slide);\n }\n\n if (index === this.current || index === -1 || !slide) {\n return false;\n }\n\n const dir = animationDirection ?? (index > this.current ? 'next' : 'prev');\n\n await this._animateSlides(slide, this._activeSlide, dir);\n return true;\n }\n\n //#endregion\n\n //#region Template renderers\n\n private _renderNavigation() {\n return html`\n <igc-button\n ${ref(this._prevButtonRef)}\n type=\"button\"\n part=\"navigation previous\"\n aria-label=${this.resourceStrings.carousel_previous_slide ??\n 'previous slide'}\n aria-controls=${this._carouselId}\n ?disabled=${this.disableLoop && this.current === 0}\n @click=${this._handleNavigationInteractionPrevious}\n >\n <slot name=\"previous-button\">\n <igc-icon\n name=\"carousel_prev\"\n collection=\"default\"\n aria-hidden=\"true\"\n ></igc-icon>\n </slot>\n </igc-button>\n\n <igc-button\n ${ref(this._nextButtonRef)}\n type=\"button\"\n part=\"navigation next\"\n aria-label=${this.resourceStrings.carousel_next_slide ?? 'next slide'}\n aria-controls=${this._carouselId}\n ?disabled=${this.disableLoop && this.current === this.total - 1}\n @click=${this._handleNavigationInteractionNext}\n >\n <slot name=\"next-button\">\n <igc-icon\n name=\"carousel_next\"\n collection=\"default\"\n aria-hidden=\"true\"\n ></igc-icon>\n </slot>\n </igc-button>\n `;\n }\n\n protected *_renderIndicators() {\n for (const [i, slide] of this._slides.entries()) {\n const forward = slide.active ? 'visible' : 'hidden';\n const backward = slide.active ? 'hidden' : 'visible';\n\n yield html`\n <igc-carousel-indicator\n exportparts=\"indicator, active, inactive\"\n .active=${slide.active}\n .index=${i}\n >\n <div\n part=\"dot\"\n style=${styleMap({ visibility: backward, zIndex: 1 })}\n ></div>\n <div\n part=\"dot active\"\n slot=\"active\"\n style=${styleMap({ visibility: forward })}\n ></div>\n </igc-carousel-indicator>\n `;\n }\n }\n\n private _renderIndicatorContainer() {\n const parts = {\n indicators: true,\n start: this.indicatorsOrientation === 'start',\n };\n\n return html`\n <igc-carousel-indicator-container>\n <div\n ${ref(this._indicatorsContainerRef)}\n role=\"tablist\"\n part=${partMap(parts)}\n >\n <slot name=\"indicator\" @click=${this._handleIndicatorClick}>\n ${cache(\n this._hasProjectedIndicators\n ? this._updateProjectedIndicators()\n : this._renderIndicators()\n )}\n </slot>\n </div>\n </igc-carousel-indicator-container>\n `;\n }\n\n private _renderLabel() {\n const parts = {\n label: true,\n indicators: true,\n start: this.indicatorsOrientation === 'start',\n };\n const value = formatString(\n this.slidesLabelFormat,\n this.current + 1,\n this.total\n );\n\n return html`\n <div part=${partMap(parts)}>\n <span>${value}</span>\n </div>\n `;\n }\n\n protected override render() {\n const hasNoIndicators = this.hideIndicators || this._showIndicatorsLabel;\n const hasLabel = !this.hideIndicators && this._showIndicatorsLabel;\n\n return html`\n <section>\n ${cache(this.hideNavigation ? nothing : this._renderNavigation())}\n ${hasNoIndicators ? nothing : this._renderIndicatorContainer()}\n ${hasLabel ? this._renderLabel() : nothing}\n <div\n ${ref(this._carouselSlidesContainerRef)}\n id=${this._carouselId}\n aria-live=${this.interval && this._playing ? 'off' : 'polite'}\n >\n <slot></slot>\n </div>\n </section>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-carousel': IgcCarouselComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"carousel.js","sourceRoot":"","sources":["../../../src/components/carousel/carousel.ts"],"names":[],"mappings":"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","sourcesContent":["import { ContextProvider } from '@lit/context';\nimport {\n CarouselResourceStringsEN,\n type ICarouselResourceStrings,\n} from 'igniteui-i18n-core';\nimport { html, LitElement, nothing } from 'lit';\nimport { property, queryAll, state } from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { carouselContext } from '#internals/context.js';\nimport {\n addGesturesController,\n type SwipeEvent,\n} from '#internals/controllers/gestures.js';\nimport { addInternalsController } from '#internals/controllers/internals.js';\nimport {\n addKeybindings,\n arrowLeft,\n arrowRight,\n endKey,\n homeKey,\n} from '#internals/controllers/key-bindings.js';\nimport {\n createMutationController,\n type MutationControllerParams,\n} from '#internals/controllers/mutation-observer.js';\nimport {\n addSlotController,\n type InferSlotNames,\n type SlotChangeCallbackParameters,\n setSlots,\n} from '#internals/controllers/slot.js';\nimport { shadowOptions } from '#internals/decorators/shadow-options.js';\nimport { watch } from '#internals/decorators/watch.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport { addI18nController } from '#internals/i18n/i18n-controller.js';\nimport type { Constructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { partMap } from '#internals/part-map.js';\nimport { firstOf, isEmpty, lastOf } from '#internals/utils/arrays.js';\nimport { isLTR } from '#internals/utils/dom.js';\nimport {\n addSafeEventListener,\n getElementFromPath,\n} from '#internals/utils/events.js';\nimport { asNumber, wrap } from '#internals/utils/math.js';\nimport { createIdGenerator, formatString } from '#internals/utils/strings.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport IgcButtonComponent from '../button/button.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport type {\n CarouselIndicatorsOrientation,\n HorizontalTransitionAnimation,\n} from '../types.js';\nimport IgcCarouselIndicatorContainerComponent from './carousel-indicator-container.js';\nimport IgcCarouselIndicatorComponent from './carousel-indicator.js';\nimport IgcCarouselSlideComponent from './carousel-slide.js';\nimport { styles } from './themes/carousel.base.css.js';\nimport { all } from './themes/container.js';\nimport { styles as shared } from './themes/shared/carousel.common.css.js';\n\nexport interface IgcCarouselComponentEventMap {\n igcSlideChanged: CustomEvent<number>;\n igcPlaying: CustomEvent<void>;\n igcPaused: CustomEvent<void>;\n}\n\nconst nextId = createIdGenerator('igc-carousel');\nconst Slots = setSlots('indicator', 'previous-button', 'next-button');\n\n/**\n * The carousel presents a set of slides by sequentially displaying a subset of one or more.\n *\n * @element igc-carousel\n *\n * @slot Default slot for the carousel. Any carousel slides should be projected here.\n * @slot previous-button - Renders content inside the previous button.\n * @slot next-button - Renders content inside the next button.\n *\n * @fires igcSlideChanged - Emitted when the current active slide is changed either by user interaction or by the interval callback.\n * @fires igcPlaying - Emitted when the carousel enters playing state by a user interaction.\n * @fires igcPaused - Emitted when the carousel enters paused state by a user interaction.\n *\n * @csspart navigation - The wrapper container of each carousel navigation button.\n * @csspart previous - The wrapper container of the carousel previous navigation button.\n * @csspart next - The wrapper container of the carousel next navigation button.\n * @csspart dot - The carousel dot indicator container.\n * @csspart active - The carousel active dot indicator container.\n * @csspart label - The label container of the carousel indicators.\n * @csspart start - The wrapping container of all carousel indicators when indicators-orientation is set to start.\n */\n@shadowOptions({ delegatesFocus: true })\nexport default class IgcCarouselComponent extends EventEmitterMixin<\n IgcCarouselComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static styles = [styles, shared];\n public static readonly tagName = 'igc-carousel';\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcCarouselComponent,\n IgcCarouselIndicatorComponent,\n IgcCarouselIndicatorContainerComponent,\n IgcCarouselSlideComponent,\n IgcIconComponent,\n IgcButtonComponent\n );\n }\n\n //#region Internal state\n\n private readonly _carouselId = nextId();\n private _paused = false;\n private _lastInterval!: ReturnType<typeof setInterval> | null;\n private _hasKeyboardInteractionOnIndicators = false;\n private _hasPointerInteraction = false;\n private _hasInnerFocus = false;\n\n private _slides: IgcCarouselSlideComponent[] = [];\n private _projectedIndicators: IgcCarouselIndicatorComponent[] = [];\n\n @state()\n private _activeSlide!: IgcCarouselSlideComponent;\n\n @state()\n private _playing = false;\n\n private readonly _slots = addSlotController(this, {\n slots: Slots,\n onChange: this._handleSlotChange,\n initial: true,\n });\n\n private readonly _i18nController =\n addI18nController<ICarouselResourceStrings>(this, {\n defaultEN: CarouselResourceStringsEN,\n });\n\n private readonly _context = new ContextProvider(this, {\n context: carouselContext,\n initialValue: this,\n });\n\n private _setCarouselContext(): void {\n this._context.setValue(this, true);\n }\n\n @queryAll(IgcCarouselIndicatorComponent.tagName)\n private readonly _defaultIndicators!: NodeListOf<IgcCarouselIndicatorComponent>;\n\n private readonly _carouselSlidesContainerRef = createRef<HTMLDivElement>();\n private readonly _indicatorsContainerRef = createRef<HTMLDivElement>();\n private readonly _prevButtonRef = createRef<IgcButtonComponent>();\n private readonly _nextButtonRef = createRef<IgcButtonComponent>();\n\n private get _hasProjectedIndicators(): boolean {\n return !isEmpty(this._projectedIndicators);\n }\n\n private get _showIndicatorsLabel(): boolean {\n return this.total > this.maximumIndicatorsCount;\n }\n\n private get _nextIndex(): number {\n return wrap(0, this.total - 1, this.current + 1);\n }\n\n private get _previousIndex(): number {\n return wrap(0, this.total - 1, this.current - 1);\n }\n\n //#endregion\n\n //#region Public attributes and properties\n\n /**\n * Whether the carousel should skip rotating to the first slide after it reaches the last.\n * @attr disable-loop\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-loop' })\n public disableLoop = false;\n\n /**\n * Whether the carousel should ignore use interactions and not pause on them.\n * @attr disable-pause-on-interaction\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'disable-pause-on-interaction',\n })\n public disablePauseOnInteraction = false;\n\n /**\n * Whether the carousel should skip rendering of the default navigation buttons.\n * @attr hide-navigation\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-navigation' })\n public hideNavigation = false;\n\n /**\n * Whether the carousel should render the indicator controls (dots).\n * @attr hide-indicators\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-indicators' })\n public hideIndicators = false;\n\n /**\n * Whether the carousel has vertical alignment.\n * @attr vertical\n */\n @property({ type: Boolean, reflect: true })\n public vertical = false;\n\n /**\n * Sets the orientation of the indicator controls (dots).\n * @attr indicators-orientation\n */\n @property({ attribute: 'indicators-orientation' })\n public indicatorsOrientation: CarouselIndicatorsOrientation = 'end';\n\n /**\n * The format used to set the aria-label on the carousel indicators.\n * Instances of '{0}' will be replaced with the index of the corresponding slide.\n *\n * @attr indicators-label-format\n */\n @property({ attribute: 'indicators-label-format' })\n public set indicatorsLabelFormat(value: string) {\n this._indicatorsLabelFormat = value;\n }\n\n public get indicatorsLabelFormat() {\n return (\n this._indicatorsLabelFormat ??\n `${this.resourceStrings.carousel_slide} {0}`\n );\n }\n private _indicatorsLabelFormat: string | undefined;\n\n /**\n * The format used to set the aria-label on the carousel slides and the text displayed\n * when the number of indicators is greater than tha maximum indicator count.\n * Instances of '{0}' will be replaced with the index of the corresponding slide.\n * Instances of '{1}' will be replaced with the total amount of slides.\n *\n * @attr slides-label-format\n */\n @property({ attribute: 'slides-label-format' })\n public set slidesLabelFormat(value: string) {\n this._slidesLabelFormat = value;\n }\n\n public get slidesLabelFormat() {\n return (\n this._slidesLabelFormat ?? `{0} ${this.resourceStrings.carousel_of} {1}`\n );\n }\n\n private _slidesLabelFormat: string | undefined;\n\n /**\n * The duration in milliseconds between changing the active slide.\n * @attr interval\n */\n @property({ type: Number })\n public interval: number | undefined;\n\n /**\n * The maximum number of indicator controls (dots) that can be shown. Default value is `10`.\n * @attr maximum-indicators-count\n */\n @property({ type: Number, attribute: 'maximum-indicators-count' })\n public maximumIndicatorsCount = 10;\n\n /**\n * The animation type.\n * @attr animation-type\n */\n @property({ attribute: 'animation-type' })\n public animationType: HorizontalTransitionAnimation = 'slide';\n\n /**\n * Gets/Sets the locale used for getting language, affecting resource strings.\n * @attr locale\n */\n @property()\n public set locale(value: string) {\n this._i18nController.locale = value;\n }\n\n public get locale() {\n return this._i18nController.locale;\n }\n\n /**\n * The resource strings for localization.\n * Currently only aria-label attributes are localized for the carousel.\n */\n @property({ attribute: false })\n public set resourceStrings(value: ICarouselResourceStrings) {\n this._i18nController.resourceStrings = value;\n }\n\n public get resourceStrings(): ICarouselResourceStrings {\n return this._i18nController.resourceStrings;\n }\n\n /* blazorSuppress */\n /**\n * The slides of the carousel.\n */\n public get slides(): IgcCarouselSlideComponent[] {\n return Array.from(this._slides);\n }\n\n /**\n * The total number of slides.\n */\n public get total(): number {\n return this._slides.length;\n }\n\n /**\n * The index of the current active slide.\n */\n public get current(): number {\n return Math.max(0, this._slides.indexOf(this._activeSlide));\n }\n\n /**\n * Whether the carousel is in playing state.\n */\n public get isPlaying(): boolean {\n return this._playing;\n }\n\n /**\n * Whether the carousel in in paused state.\n */\n public get isPaused(): boolean {\n return this._paused;\n }\n\n //#endregion\n\n //#region Watchers\n\n @watch('animationType')\n @watch('slidesLabelFormat')\n @watch('indicatorsLabelFormat')\n protected _contextChanged(): void {\n this._setCarouselContext();\n }\n\n @watch('interval')\n protected _intervalChange(): void {\n if (!this.isPlaying) {\n this._playing = true;\n }\n\n this._restartInterval();\n }\n\n //#endregion\n\n //#region Life-cycle hooks and observer callback\n\n constructor() {\n super();\n\n addInternalsController(this, {\n initialARIA: {\n role: 'region',\n ariaRoleDescription: 'carousel',\n },\n });\n\n addThemingController(this, all);\n\n addSafeEventListener(this, 'pointerenter', this._handlePointerInteraction);\n addSafeEventListener(this, 'pointerleave', this._handlePointerInteraction);\n addSafeEventListener(this, 'focusin', this._handleFocusInteraction);\n addSafeEventListener(this, 'focusout', this._handleFocusInteraction);\n\n addGesturesController(this, {\n ref: this._carouselSlidesContainerRef,\n touchOnly: true,\n })\n .set('swipe-left', this._handleHorizontalSwipe)\n .set('swipe-right', this._handleHorizontalSwipe)\n .set('swipe-up', this._handleVerticalSwipe)\n .set('swipe-down', this._handleVerticalSwipe);\n\n addKeybindings(this, {\n ref: this._indicatorsContainerRef,\n })\n .set(arrowLeft, this._handleArrowLeft)\n .set(arrowRight, this._handleArrowRight)\n .set(homeKey, this._handleHomeKey)\n .set(endKey, this._handleEndKey);\n\n addKeybindings(this, {\n ref: this._prevButtonRef,\n }).setActivateHandler(this._handleNavigationInteractionPrevious);\n\n addKeybindings(this, {\n ref: this._nextButtonRef,\n }).setActivateHandler(this._handleNavigationInteractionNext);\n\n createMutationController(this, {\n callback: this._observerCallback,\n filter: [IgcCarouselSlideComponent.tagName],\n config: {\n attributeFilter: ['active'],\n childList: true,\n subtree: true,\n },\n });\n }\n\n protected override async firstUpdated(): Promise<void> {\n await this.updateComplete;\n this._setCarouselContext();\n\n if (!isEmpty(this._slides)) {\n this._activateSlide(\n this._slides.findLast((slide) => slide.active) ?? firstOf(this._slides)\n );\n }\n }\n\n private _observerCallback({\n changes: { added, attributes },\n }: MutationControllerParams<IgcCarouselSlideComponent>) {\n const activeSlides = this._slides.filter((slide) => slide.active);\n\n if (activeSlides.length <= 1) {\n return;\n }\n\n const idx = this._slides.indexOf(\n added.length ? lastOf(added).node : lastOf(attributes).node\n );\n\n for (const [i, slide] of this._slides.entries()) {\n if (slide.active && i !== idx) {\n slide.active = false;\n }\n }\n\n this._activateSlide(this._slides[idx]);\n }\n\n //#endregion\n\n //#region Event listeners\n\n private _handleSlotChange(\n params: SlotChangeCallbackParameters<InferSlotNames<typeof Slots>>\n ): void {\n if (params.isDefault || params.isInitial) {\n this._slides = this._slots.getAssignedElements('[default]', {\n selector: IgcCarouselSlideComponent.tagName,\n });\n }\n\n if (params.slot === 'indicator') {\n this._projectedIndicators = this._slots.getAssignedElements('indicator', {\n selector: IgcCarouselIndicatorComponent.tagName,\n });\n }\n }\n\n private _handlePointerInteraction(event: PointerEvent): void {\n this._hasPointerInteraction = event.type === 'pointerenter';\n\n if (!this._hasInnerFocus) {\n this._handlePauseOnInteraction();\n }\n }\n\n private _handleFocusInteraction(event: FocusEvent): void {\n // focusin - element that lost focus\n // focusout - element that gained focus\n const node = event.relatedTarget as Node;\n\n if (this.contains(node)) {\n return;\n }\n\n this._hasInnerFocus = event.type === 'focusin';\n\n if (!this._hasPointerInteraction) {\n this._handlePauseOnInteraction();\n }\n }\n\n private async _handleIndicatorClick(event: PointerEvent): Promise<void> {\n const indicator = getElementFromPath(\n IgcCarouselIndicatorComponent.tagName,\n event\n )!;\n\n const index = this._hasProjectedIndicators\n ? this._projectedIndicators.indexOf(indicator)\n : Array.from(this._defaultIndicators).indexOf(indicator);\n\n this._handleInteraction(() =>\n this.select(this._slides[index], index > this.current ? 'next' : 'prev')\n );\n }\n\n //#endregion\n\n //#region Keyboard event listeners\n\n private async _handleArrowLeft(): Promise<void> {\n this._hasKeyboardInteractionOnIndicators = true;\n this._handleInteraction(isLTR(this) ? this.prev : this.next);\n }\n\n private async _handleArrowRight(): Promise<void> {\n this._hasKeyboardInteractionOnIndicators = true;\n this._handleInteraction(isLTR(this) ? this.next : this.prev);\n }\n\n private async _handleHomeKey(): Promise<void> {\n this._hasKeyboardInteractionOnIndicators = true;\n this._handleInteraction(() =>\n this.select(isLTR(this) ? firstOf(this._slides) : lastOf(this._slides))\n );\n }\n\n private async _handleEndKey(): Promise<void> {\n this._hasKeyboardInteractionOnIndicators = true;\n this._handleInteraction(() =>\n this.select(isLTR(this) ? lastOf(this._slides) : firstOf(this._slides))\n );\n }\n\n //#endregion\n\n //#region Gestures event listeners\n\n private _handleVerticalSwipe({ data: { direction } }: SwipeEvent): void {\n if (this.vertical) {\n this._handleInteraction(direction === 'up' ? this.next : this.prev);\n }\n }\n\n private _handleHorizontalSwipe({ data: { direction } }: SwipeEvent): void {\n if (!this.vertical) {\n const callback = () => {\n if (isLTR(this)) {\n return direction === 'left' ? this.next : this.prev;\n }\n return direction === 'left' ? this.prev : this.next;\n };\n\n this._handleInteraction(callback());\n }\n }\n\n //#endregion\n\n //#region Internal API\n\n private _handleNavigationInteractionNext(): void {\n this._handleInteraction(this.next);\n }\n\n private _handleNavigationInteractionPrevious(): void {\n this._handleInteraction(this.prev);\n }\n\n private async _handleInteraction(\n callback: () => Promise<boolean>\n ): Promise<void> {\n if (this.interval) {\n this._resetInterval();\n }\n\n if (await callback.call(this)) {\n this.emitEvent('igcSlideChanged', { detail: this.current });\n }\n\n if (this.interval) {\n this._restartInterval();\n }\n }\n\n private _handlePauseOnInteraction(): void {\n if (!this.interval || this.disablePauseOnInteraction) return;\n\n if (this.isPlaying) {\n this.pause();\n this.emitEvent('igcPaused');\n } else {\n this.play();\n this.emitEvent('igcPlaying');\n }\n }\n\n private _activateSlide(slide: IgcCarouselSlideComponent): void {\n if (this._activeSlide) {\n this._activeSlide.active = false;\n }\n\n this._activeSlide = slide;\n this._activeSlide.active = true;\n\n if (this._hasKeyboardInteractionOnIndicators) {\n this._hasProjectedIndicators\n ? this._projectedIndicators[this.current].focus()\n : this._defaultIndicators[this.current].focus();\n\n this._hasKeyboardInteractionOnIndicators = false;\n }\n }\n\n private _updateProjectedIndicators(): void {\n for (const [idx, slide] of this._slides.entries()) {\n const indicator = this._projectedIndicators[idx];\n indicator.active = slide.active;\n indicator.index = idx;\n }\n\n if (this._activeSlide) {\n this.setAttribute('aria-controls', this._activeSlide.id);\n }\n }\n\n private _resetInterval(): void {\n if (this._lastInterval) {\n clearInterval(this._lastInterval);\n this._lastInterval = null;\n }\n }\n\n private _restartInterval(): void {\n this._resetInterval();\n\n if (asNumber(this.interval) > 0) {\n this._lastInterval = setInterval(() => {\n if (\n this.isPlaying &&\n this.total &&\n !(this.disableLoop && this._nextIndex === 0)\n ) {\n this.select(this.slides[this._nextIndex], 'next');\n this.emitEvent('igcSlideChanged', { detail: this.current });\n } else {\n this.pause();\n }\n }, this.interval);\n }\n }\n\n private async _animateSlides(\n nextSlide: IgcCarouselSlideComponent,\n currentSlide: IgcCarouselSlideComponent,\n dir: 'next' | 'prev'\n ): Promise<void> {\n if (dir === 'next') {\n // Animate slides in next direction\n currentSlide.previous = true;\n currentSlide.toggleAnimation('out');\n this._activateSlide(nextSlide);\n await nextSlide.toggleAnimation('in');\n currentSlide.previous = false;\n } else {\n // Animate slides in previous direction\n currentSlide.previous = true;\n currentSlide.toggleAnimation('in', 'reverse');\n this._activateSlide(nextSlide);\n await nextSlide.toggleAnimation('out', 'reverse');\n currentSlide.previous = false;\n }\n }\n\n //#endregion\n\n //#region Public API\n\n /**\n * Resumes playing of the carousel slides.\n */\n public play(): void {\n if (!this.isPlaying) {\n this._paused = false;\n this._playing = true;\n this._restartInterval();\n }\n }\n\n /**\n * Pauses the rotation of the carousel slides.\n */\n public pause(): void {\n if (this.isPlaying) {\n this._playing = false;\n this._paused = true;\n this._resetInterval();\n }\n }\n\n /**\n * Switches to the next slide, runs any animations, and returns if the operation was successful.\n */\n public async next(): Promise<boolean> {\n if (this.disableLoop && this._nextIndex === 0) {\n this.pause();\n return false;\n }\n\n return await this.select(this._slides[this._nextIndex], 'next');\n }\n\n /**\n * Switches to the previous slide, runs any animations, and returns if the operation was successful.\n */\n public async prev(): Promise<boolean> {\n if (this.disableLoop && this._previousIndex === this.total - 1) {\n this.pause();\n return false;\n }\n\n return await this.select(this._slides[this._previousIndex], 'prev');\n }\n\n /* blazorSuppress */\n /**\n * Switches to the passed-in slide, runs any animations, and returns if the operation was successful.\n */\n public async select(\n slide: IgcCarouselSlideComponent,\n animationDirection?: 'next' | 'prev'\n ): Promise<boolean>;\n /**\n * Switches to slide by index, runs any animations, and returns if the operation was successful.\n */\n public async select(\n index: number,\n animationDirection?: 'next' | 'prev'\n ): Promise<boolean>;\n public async select(\n slideOrIndex: IgcCarouselSlideComponent | number,\n animationDirection?: 'next' | 'prev'\n ): Promise<boolean> {\n let index: number;\n let slide: IgcCarouselSlideComponent | undefined;\n\n if (typeof slideOrIndex === 'number') {\n index = slideOrIndex;\n slide = this._slides.at(index);\n } else {\n slide = slideOrIndex;\n index = this._slides.indexOf(slide);\n }\n\n if (index === this.current || index === -1 || !slide) {\n return false;\n }\n\n const dir = animationDirection ?? (index > this.current ? 'next' : 'prev');\n\n await this._animateSlides(slide, this._activeSlide, dir);\n return true;\n }\n\n //#endregion\n\n //#region Template renderers\n\n private _renderNavigation() {\n return html`\n <igc-button\n ${ref(this._prevButtonRef)}\n type=\"button\"\n part=\"navigation previous\"\n aria-label=${\n this.resourceStrings.carousel_previous_slide ?? 'previous slide'\n }\n aria-controls=${this._carouselId}\n ?disabled=${this.disableLoop && this.current === 0}\n @click=${this._handleNavigationInteractionPrevious}\n >\n <slot name=\"previous-button\">\n <igc-icon\n name=\"carousel_prev\"\n collection=\"default\"\n aria-hidden=\"true\"\n ></igc-icon>\n </slot>\n </igc-button>\n\n <igc-button\n ${ref(this._nextButtonRef)}\n type=\"button\"\n part=\"navigation next\"\n aria-label=${this.resourceStrings.carousel_next_slide ?? 'next slide'}\n aria-controls=${this._carouselId}\n ?disabled=${this.disableLoop && this.current === this.total - 1}\n @click=${this._handleNavigationInteractionNext}\n >\n <slot name=\"next-button\">\n <igc-icon\n name=\"carousel_next\"\n collection=\"default\"\n aria-hidden=\"true\"\n ></igc-icon>\n </slot>\n </igc-button>\n `;\n }\n\n private _renderIndicators() {\n return this._slides.map((slide, i) => {\n const forward = slide.active ? 'visible' : 'hidden';\n const backward = slide.active ? 'hidden' : 'visible';\n\n return html`\n <igc-carousel-indicator\n exportparts=\"indicator, active, inactive\"\n .active=${slide.active}\n .index=${i}\n >\n <div\n part=\"dot\"\n style=${styleMap({ visibility: backward, zIndex: 1 })}\n ></div>\n <div\n part=\"dot active\"\n slot=\"active\"\n style=${styleMap({ visibility: forward })}\n ></div>\n </igc-carousel-indicator>\n `;\n });\n }\n\n private _renderIndicatorContainer() {\n const parts = {\n indicators: true,\n start: this.indicatorsOrientation === 'start',\n };\n\n return html`\n <igc-carousel-indicator-container>\n <div\n ${ref(this._indicatorsContainerRef)}\n role=\"tablist\"\n part=${partMap(parts)}\n >\n <slot name=\"indicator\" @click=${this._handleIndicatorClick}>\n ${cache(\n this._hasProjectedIndicators\n ? this._updateProjectedIndicators()\n : this._renderIndicators()\n )}\n </slot>\n </div>\n </igc-carousel-indicator-container>\n `;\n }\n\n private _renderLabel() {\n const parts = {\n label: true,\n indicators: true,\n start: this.indicatorsOrientation === 'start',\n };\n const value = formatString(\n this.slidesLabelFormat,\n this.current + 1,\n this.total\n );\n\n return html`\n <div part=${partMap(parts)}>\n <span>${value}</span>\n </div>\n `;\n }\n\n protected override render() {\n const hasNoIndicators = this.hideIndicators || this._showIndicatorsLabel;\n const hasLabel = !this.hideIndicators && this._showIndicatorsLabel;\n\n return html`\n <section>\n ${hasNoIndicators ? nothing : this._renderIndicatorContainer()}\n ${cache(this.hideNavigation ? nothing : this._renderNavigation())}\n ${hasLabel ? this._renderLabel() : nothing}\n <div\n ${ref(this._carouselSlidesContainerRef)}\n id=${this._carouselId}\n aria-live=${this.interval && this._playing ? 'off' : 'polite'}\n >\n <slot></slot>\n </div>\n </section>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-carousel': IgcCarouselComponent;\n }\n}\n"]}
@@ -1,2 +1,2 @@
1
- import type { Themes } from '../../../theming/types.js';
1
+ import type { Themes } from '#theming/types.js';
2
2
  export declare const all: Themes;
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/components/carousel/themes/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAI1B,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAEvE,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAEnE,MAAM,KAAK,GAAG;IACZ,MAAM,EAAE,GAAG,CAAA;MACP,WAAW;GACd;IACD,SAAS,EAAE,GAAG,CAAA;MACV,SAAS,IAAI,cAAc;GAC9B;IACD,QAAQ,EAAE,GAAG,CAAA;MACT,aAAa;GAChB;IACD,MAAM,EAAE,GAAG,CAAA;MACP,MAAM,IAAI,WAAW;GACxB;IACD,MAAM,EAAE,GAAG,CAAA;MACP,MAAM,IAAI,WAAW;GACxB;CACF,CAAC;AAEF,MAAM,IAAI,GAAG;IACX,MAAM,EAAE,GAAG,CAAA;MACP,UAAU;GACb;IACD,SAAS,EAAE,GAAG,CAAA;MACV,SAAS,IAAI,aAAa;GAC7B;IACD,QAAQ,EAAE,GAAG,CAAA;MACT,YAAY;GACf;IACD,MAAM,EAAE,GAAG,CAAA;MACP,MAAM,IAAI,UAAU;GACvB;IACD,MAAM,EAAE,GAAG,CAAA;MACP,MAAM,IAAI,UAAU;GACvB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAW,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC","sourcesContent":["import { css } from 'lit';\n\nimport type { Themes } from '../../../theming/types.js';\n// Dark Overrides\nimport { styles as bootstrapDark } from './dark/carousel.bootstrap.css.js';\nimport { styles as fluentDark } from './dark/carousel.fluent.css.js';\nimport { styles as indigoDark } from './dark/carousel.indigo.css.js';\nimport { styles as materialDark } from './dark/carousel.material.css.js';\nimport { styles as sharedDark } from './dark/carousel.shared.css.js';\n// Light Overrides\nimport { styles as bootstrapLight } from './light/carousel.bootstrap.css.js';\nimport { styles as fluentLight } from './light/carousel.fluent.css.js';\nimport { styles as indigoLight } from './light/carousel.indigo.css.js';\nimport { styles as materialLight } from './light/carousel.material.css.js';\nimport { styles as sharedLight } from './light/carousel.shared.css.js';\n// Shared Styles\nimport { styles as bootstrap } from './shared/carousel.bootstrap.css.js';\nimport { styles as fluent } from './shared/carousel.fluent.css.js';\nimport { styles as indigo } from './shared/carousel.indigo.css.js';\n\nconst light = {\n shared: css`\n ${sharedLight}\n `,\n bootstrap: css`\n ${bootstrap} ${bootstrapLight}\n `,\n material: css`\n ${materialLight}\n `,\n fluent: css`\n ${fluent} ${fluentLight}\n `,\n indigo: css`\n ${indigo} ${indigoLight}\n `,\n};\n\nconst dark = {\n shared: css`\n ${sharedDark}\n `,\n bootstrap: css`\n ${bootstrap} ${bootstrapDark}\n `,\n material: css`\n ${materialDark}\n `,\n fluent: css`\n ${fluent} ${fluentDark}\n `,\n indigo: css`\n ${indigo} ${indigoDark}\n `,\n};\n\nexport const all: Themes = { light, dark };\n"]}
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/components/carousel/themes/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAI1B,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAEvE,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAEnE,MAAM,KAAK,GAAG;IACZ,MAAM,EAAE,GAAG,CAAA;MACP,WAAW;GACd;IACD,SAAS,EAAE,GAAG,CAAA;MACV,SAAS,IAAI,cAAc;GAC9B;IACD,QAAQ,EAAE,GAAG,CAAA;MACT,aAAa;GAChB;IACD,MAAM,EAAE,GAAG,CAAA;MACP,MAAM,IAAI,WAAW;GACxB;IACD,MAAM,EAAE,GAAG,CAAA;MACP,MAAM,IAAI,WAAW;GACxB;CACF,CAAC;AAEF,MAAM,IAAI,GAAG;IACX,MAAM,EAAE,GAAG,CAAA;MACP,UAAU;GACb;IACD,SAAS,EAAE,GAAG,CAAA;MACV,SAAS,IAAI,aAAa;GAC7B;IACD,QAAQ,EAAE,GAAG,CAAA;MACT,YAAY;GACf;IACD,MAAM,EAAE,GAAG,CAAA;MACP,MAAM,IAAI,UAAU;GACvB;IACD,MAAM,EAAE,GAAG,CAAA;MACP,MAAM,IAAI,UAAU;GACvB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAW,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC","sourcesContent":["import { css } from 'lit';\n\nimport type { Themes } from '#theming/types.js';\n// Dark Overrides\nimport { styles as bootstrapDark } from './dark/carousel.bootstrap.css.js';\nimport { styles as fluentDark } from './dark/carousel.fluent.css.js';\nimport { styles as indigoDark } from './dark/carousel.indigo.css.js';\nimport { styles as materialDark } from './dark/carousel.material.css.js';\nimport { styles as sharedDark } from './dark/carousel.shared.css.js';\n// Light Overrides\nimport { styles as bootstrapLight } from './light/carousel.bootstrap.css.js';\nimport { styles as fluentLight } from './light/carousel.fluent.css.js';\nimport { styles as indigoLight } from './light/carousel.indigo.css.js';\nimport { styles as materialLight } from './light/carousel.material.css.js';\nimport { styles as sharedLight } from './light/carousel.shared.css.js';\n// Shared Styles\nimport { styles as bootstrap } from './shared/carousel.bootstrap.css.js';\nimport { styles as fluent } from './shared/carousel.fluent.css.js';\nimport { styles as indigo } from './shared/carousel.indigo.css.js';\n\nconst light = {\n shared: css`\n ${sharedLight}\n `,\n bootstrap: css`\n ${bootstrap} ${bootstrapLight}\n `,\n material: css`\n ${materialLight}\n `,\n fluent: css`\n ${fluent} ${fluentLight}\n `,\n indigo: css`\n ${indigo} ${indigoLight}\n `,\n};\n\nconst dark = {\n shared: css`\n ${sharedDark}\n `,\n bootstrap: css`\n ${bootstrap} ${bootstrapDark}\n `,\n material: css`\n ${materialDark}\n `,\n fluent: css`\n ${fluent} ${fluentDark}\n `,\n indigo: css`\n ${indigo} ${indigoDark}\n `,\n};\n\nexport const all: Themes = { light, dark };\n"]}
@@ -1,2 +1,2 @@
1
- import type { Themes } from '../../../theming/types.js';
1
+ import type { Themes } from '#theming/types.js';
2
2
  export declare const all: Themes;
@@ -1 +1 @@
1
- {"version":3,"file":"indicator-container.js","sourceRoot":"","sources":["../../../../src/components/carousel/themes/indicator-container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAI1B,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,mEAAmE,CAAC;AACxG,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,gEAAgE,CAAC;AAClG,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,gEAAgE,CAAC;AAElG,MAAM,KAAK,GAAG;IACZ,SAAS,EAAE,GAAG,CAAA;MACV,SAAS;GACZ;IACD,MAAM,EAAE,GAAG,CAAA;MACP,MAAM;GACT;IACD,MAAM,EAAE,GAAG,CAAA;MACP,MAAM;GACT;CACF,CAAC;AAEF,MAAM,IAAI,GAAG;IACX,SAAS,EAAE,GAAG,CAAA;MACV,SAAS;GACZ;IACD,MAAM,EAAE,GAAG,CAAA;MACP,MAAM;GACT;IACD,MAAM,EAAE,GAAG,CAAA;MACP,MAAM;GACT;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAW,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC","sourcesContent":["import { css } from 'lit';\n\nimport type { Themes } from '../../../theming/types.js';\n// Shared Styles\nimport { styles as bootstrap } from './shared/indicator-container/indicator-container.bootstrap.css.js';\nimport { styles as fluent } from './shared/indicator-container/indicator-container.fluent.css.js';\nimport { styles as indigo } from './shared/indicator-container/indicator-container.indigo.css.js';\n\nconst light = {\n bootstrap: css`\n ${bootstrap}\n `,\n fluent: css`\n ${fluent}\n `,\n indigo: css`\n ${indigo}\n `,\n};\n\nconst dark = {\n bootstrap: css`\n ${bootstrap}\n `,\n fluent: css`\n ${fluent}\n `,\n indigo: css`\n ${indigo}\n `,\n};\n\nexport const all: Themes = { light, dark };\n"]}
1
+ {"version":3,"file":"indicator-container.js","sourceRoot":"","sources":["../../../../src/components/carousel/themes/indicator-container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAI1B,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,mEAAmE,CAAC;AACxG,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,gEAAgE,CAAC;AAClG,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,gEAAgE,CAAC;AAElG,MAAM,KAAK,GAAG;IACZ,SAAS,EAAE,GAAG,CAAA;MACV,SAAS;GACZ;IACD,MAAM,EAAE,GAAG,CAAA;MACP,MAAM;GACT;IACD,MAAM,EAAE,GAAG,CAAA;MACP,MAAM;GACT;CACF,CAAC;AAEF,MAAM,IAAI,GAAG;IACX,SAAS,EAAE,GAAG,CAAA;MACV,SAAS;GACZ;IACD,MAAM,EAAE,GAAG,CAAA;MACP,MAAM;GACT;IACD,MAAM,EAAE,GAAG,CAAA;MACP,MAAM;GACT;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAW,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC","sourcesContent":["import { css } from 'lit';\n\nimport type { Themes } from '#theming/types.js';\n// Shared Styles\nimport { styles as bootstrap } from './shared/indicator-container/indicator-container.bootstrap.css.js';\nimport { styles as fluent } from './shared/indicator-container/indicator-container.fluent.css.js';\nimport { styles as indigo } from './shared/indicator-container/indicator-container.indigo.css.js';\n\nconst light = {\n bootstrap: css`\n ${bootstrap}\n `,\n fluent: css`\n ${fluent}\n `,\n indigo: css`\n ${indigo}\n `,\n};\n\nconst dark = {\n bootstrap: css`\n ${bootstrap}\n `,\n fluent: css`\n ${fluent}\n `,\n indigo: css`\n ${indigo}\n `,\n};\n\nexport const all: Themes = { light, dark };\n"]}
@@ -1,6 +1,6 @@
1
1
  import { LitElement, type PropertyValues } from 'lit';
2
2
  /**
3
- * A web component that provides the input area for the `igc-chat` interface.
3
+ * A web component that provides the input area for the chat interface.
4
4
  *
5
5
  * It supports:
6
6
  * - Text input with automatic resizing
@@ -17,11 +17,11 @@ import { LitElement, type PropertyValues } from 'lit';
17
17
  * @fires igcInputBlur - Fired when the input area loses focus
18
18
  * @fires igcAttachmentDrag - Fired when dragging a file over the input
19
19
  * @fires igcAttachmentDrop - Fired when a file is dropped into the input
20
- * @fires igcChange - Fired when file input changes (delegated from `<igc-file-input>`)
20
+ * @fires igcChange - Fired when the file input changes (delegated from the underlying file input).
21
21
  *
22
22
  * @csspart input-container - Container for the input section
23
23
  * @csspart input-wrapper - Wrapper around the text input
24
- * @csspart text-input - The `<igc-textarea>` component
24
+ * @csspart text-input - The underlying textarea component.
25
25
  * @csspart actions-container - Container for file upload/send buttons
26
26
  * @csspart send-button - The send icon button
27
27
  * @csspart attachments - Container for rendering attachments
@@ -35,7 +35,7 @@ export default class IgcChatInputComponent extends LitElement {
35
35
  private readonly _defaults;
36
36
  private _userIsTyping;
37
37
  private _userLastTypeTime;
38
- private _typingTimeout;
38
+ private _typingTimeout?;
39
39
  private readonly _adoptedStyles;
40
40
  private readonly _stateChanged;
41
41
  private readonly _stateConsumer;
@@ -10,15 +10,17 @@ import { query, state } from 'lit/decorators.js';
10
10
  import { cache } from 'lit/directives/cache.js';
11
11
  import { ifDefined } from 'lit/directives/if-defined.js';
12
12
  import { until } from 'lit/directives/until.js';
13
- import { addThemingController } from '../../theming/theming-controller.js';
13
+ import { chatContext, chatUserInputContext } from '#internals/context.js';
14
+ import { addAdoptedStylesController } from '#internals/controllers/adopt-styles.js';
15
+ import { enterKey, tabKey } from '#internals/controllers/key-bindings.js';
16
+ import { registerComponent } from '#internals/definitions/register.js';
17
+ import { partMap } from '#internals/part-map.js';
18
+ import { isEmpty } from '#internals/utils/arrays.js';
19
+ import { hasFiles } from '#internals/utils/dom.js';
20
+ import { bindIf, trimmedHtml } from '#internals/utils/lit.js';
21
+ import { addThemingController } from '#theming/theming-controller.js';
14
22
  import IgcIconButtonComponent from '../button/icon-button.js';
15
23
  import IgcChipComponent from '../chip/chip.js';
16
- import { chatContext, chatUserInputContext } from '../common/context.js';
17
- import { addAdoptedStylesController } from '../common/controllers/adopt-styles.js';
18
- import { enterKey, tabKey } from '../common/controllers/key-bindings.js';
19
- import { registerComponent } from '../common/definitions/register.js';
20
- import { partMap } from '../common/part-map.js';
21
- import { bindIf, hasFiles, isEmpty, trimmedHtml } from '../common/util.js';
22
24
  import IgcIconComponent from '../icon/icon.js';
23
25
  import IgcTextareaComponent from '../textarea/textarea.js';
24
26
  import { styles } from './themes/input.base.css.js';
@@ -50,7 +52,6 @@ export default class IgcChatInputComponent extends LitElement {
50
52
  });
51
53
  this._userIsTyping = false;
52
54
  this._userLastTypeTime = Date.now();
53
- this._typingTimeout = 0;
54
55
  this._adoptedStyles = addAdoptedStylesController(this);
55
56
  this._stateChanged = () => {
56
57
  this._shouldAdoptRootStyles = Boolean(this._state.options?.adoptRootStyles);
@@ -286,10 +287,10 @@ export default class IgcChatInputComponent extends LitElement {
286
287
  >
287
288
  ${this._state.hasInputAttachments
288
289
  ? html `
289
- <div part="attachments" role="list" aria-label="Attachments">
290
- ${until(this._getRenderer('inputAttachments')(inputCtx))}
291
- </div>
292
- `
290
+ <div part="attachments" role="list" aria-label="Attachments">
291
+ ${until(this._getRenderer('inputAttachments')(inputCtx))}
292
+ </div>
293
+ `
293
294
  : nothing}
294
295
 
295
296
  <div part="input-wrapper">
@@ -1 +1 @@
1
- {"version":3,"file":"chat-input.js","sourceRoot":"","sources":["../../../src/components/chat/chat-input.ts"],"names":[],"mappings":"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","sourcesContent":["import { ContextConsumer, consume } from '@lit/context';\nimport { html, LitElement, nothing, type PropertyValues } from 'lit';\nimport { query, state } from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { until } from 'lit/directives/until.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport IgcIconButtonComponent from '../button/icon-button.js';\nimport IgcChipComponent from '../chip/chip.js';\nimport { chatContext, chatUserInputContext } from '../common/context.js';\nimport { addAdoptedStylesController } from '../common/controllers/adopt-styles.js';\nimport { enterKey, tabKey } from '../common/controllers/key-bindings.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { partMap } from '../common/part-map.js';\nimport { bindIf, hasFiles, isEmpty, trimmedHtml } from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcTextareaComponent from '../textarea/textarea.js';\nimport type { ChatState } from './chat-state.js';\nimport { styles } from './themes/input.base.css.js';\nimport { all } from './themes/input.js';\nimport { styles as shared } from './themes/shared/input/input.common.css.js';\nimport type {\n ChatInputRenderContext,\n ChatRenderContext,\n ChatTemplateRenderer,\n IgcChatMessageAttachment,\n} from './types.js';\nimport {\n type ChatAcceptedFileTypes,\n getChatAcceptedFiles,\n getIconName,\n} from './utils.js';\n\ntype DefaultInputRenderers = {\n input: ChatTemplateRenderer<ChatInputRenderContext>;\n inputActions: ChatTemplateRenderer<ChatRenderContext>;\n inputActionsEnd: ChatTemplateRenderer<ChatRenderContext>;\n inputActionsStart: ChatTemplateRenderer<ChatRenderContext>;\n inputAttachments: ChatTemplateRenderer<ChatInputRenderContext>;\n fileUploadButton: ChatTemplateRenderer<ChatRenderContext>;\n sendButton: ChatTemplateRenderer<ChatRenderContext>;\n};\n\n/* blazorSuppress */\n/**\n * A web component that provides the input area for the `igc-chat` interface.\n *\n * It supports:\n * - Text input with automatic resizing\n * - Sending messages on Enter key (with Shift+Enter for newlines)\n * - File attachments via file picker or drag-and-drop\n * - Customizable templates for send button, attachments, and text input\n * - Emits various chat-related events (typing, input focus/blur, attachment drop, etc.)\n *\n * @element igc-chat-input\n *\n * @slot - Default unnamed slot for rendering inside the component\n * @fires igcTypingChange - Fired when the user starts/stops typing\n * @fires igcInputFocus - Fired when the input area receives focus\n * @fires igcInputBlur - Fired when the input area loses focus\n * @fires igcAttachmentDrag - Fired when dragging a file over the input\n * @fires igcAttachmentDrop - Fired when a file is dropped into the input\n * @fires igcChange - Fired when file input changes (delegated from `<igc-file-input>`)\n *\n * @csspart input-container - Container for the input section\n * @csspart input-wrapper - Wrapper around the text input\n * @csspart text-input - The `<igc-textarea>` component\n * @csspart actions-container - Container for file upload/send buttons\n * @csspart send-button - The send icon button\n * @csspart attachments - Container for rendering attachments\n * @csspart attachment-wrapper - Wrapper for individual attachment\n * @csspart attachment-name - Display name of an attachment\n */\nexport default class IgcChatInputComponent extends LitElement {\n public static readonly tagName = 'igc-chat-input';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcChatInputComponent,\n IgcTextareaComponent,\n IgcIconButtonComponent,\n IgcChipComponent,\n IgcIconComponent\n );\n }\n\n private readonly _defaults: Readonly<DefaultInputRenderers> = Object.freeze({\n fileUploadButton: () => this._renderFileUploadButton(),\n input: () => this._renderTextArea(),\n inputActions: () => this._renderActionsArea(),\n inputActionsEnd: () => nothing,\n inputActionsStart: () => nothing,\n inputAttachments: (ctx) => this._renderAttachmentsArea(ctx.attachments),\n sendButton: () => this._renderSendButton(),\n });\n\n private _userIsTyping = false;\n private _userLastTypeTime = Date.now();\n private _typingTimeout = 0;\n\n private readonly _adoptedStyles = addAdoptedStylesController(this);\n\n private readonly _stateChanged = () => {\n this._shouldAdoptRootStyles = Boolean(this._state.options?.adoptRootStyles);\n };\n\n private readonly _stateConsumer = new ContextConsumer(this, {\n context: chatContext,\n callback: this._stateChanged,\n subscribe: true,\n });\n\n @consume({ context: chatUserInputContext, subscribe: true })\n private readonly _userInputState!: ChatState;\n\n @query(IgcTextareaComponent.tagName)\n private readonly _textInputElement?: IgcTextareaComponent;\n\n @query('#input_attachments')\n protected readonly _fileInput?: HTMLInputElement;\n\n @state()\n private _parts = { 'input-container': true, dragging: false };\n\n @state()\n private _shouldAdoptRootStyles = false;\n\n private get _state(): ChatState {\n return this._stateConsumer.value!;\n }\n\n private get _acceptedTypes(): ChatAcceptedFileTypes | null {\n return this._state.acceptedFileTypes;\n }\n\n constructor() {\n super();\n addThemingController(this, all, { themeChange: this._adoptPageStyles });\n }\n\n protected override update(props: PropertyValues): void {\n if (props.has('_shouldAdoptRootStyles')) {\n this._adoptedStyles.shouldAdoptStyles(this._shouldAdoptRootStyles);\n }\n super.update(props);\n }\n\n /** @internal */\n public focusInput(): void {\n this._textInputElement?.focus();\n }\n\n private _adoptPageStyles(): void {\n this._adoptedStyles.invalidateCache(this.ownerDocument);\n this._adoptedStyles.shouldAdoptStyles(this._shouldAdoptRootStyles);\n }\n\n private _getRenderer<U extends keyof DefaultInputRenderers>(\n name: U\n ): DefaultInputRenderers[U] {\n return this._state.options?.renderers\n ? ((this._state.options.renderers[name] ??\n this._defaults[name]) as DefaultInputRenderers[U])\n : this._defaults[name];\n }\n\n private async _sendMessage(): Promise<void> {\n if (\n !this._userInputState.hasInputValue &&\n !this._userInputState.hasInputAttachments\n ) {\n return;\n }\n\n this._userInputState.addMessageWithEvent({\n text: this._userInputState.inputValue,\n attachments: this._userInputState.inputAttachments,\n });\n\n this.style.height = 'auto';\n\n await this._userInputState.host.updateComplete;\n this.focusInput();\n }\n\n private _setTypingStateAndEmit(state: boolean): void {\n this._userIsTyping = state;\n this._userInputState.emitUserTypingState(state);\n }\n\n private _handleAttachmentRemoved(attachment: IgcChatMessageAttachment): void {\n const current = this._userInputState.inputAttachments;\n\n if (this._state.emitAttachmentRemoved(attachment)) {\n this._state.inputAttachments = current.toSpliced(\n current.indexOf(attachment),\n 1\n );\n }\n }\n\n private _handleKeydown(event: KeyboardEvent): void {\n this._userLastTypeTime = Date.now();\n const isEnterKey = event.key.toLowerCase() === enterKey.toLowerCase();\n const isTab = event.key.toLocaleLowerCase() === tabKey.toLowerCase();\n\n if (isTab && !this._userIsTyping) {\n return;\n }\n\n if (isEnterKey && !event.shiftKey) {\n event.preventDefault();\n this._sendMessage();\n\n if (this._userIsTyping) {\n clearTimeout(this._typingTimeout);\n this._setTypingStateAndEmit(false);\n }\n\n return;\n }\n\n clearTimeout(this._typingTimeout);\n const delay = this._state.stopTypingDelay;\n\n if (!this._userIsTyping) {\n this._setTypingStateAndEmit(true);\n }\n\n this._typingTimeout = setTimeout(() => {\n if (this._userIsTyping && this._userLastTypeTime + delay <= Date.now()) {\n this._setTypingStateAndEmit(false);\n }\n }, delay);\n }\n\n private _handleFileInputClick(): void {\n this._fileInput?.showPicker();\n }\n\n private _handleFocusState(event: FocusEvent): void {\n this._state.emitEvent(\n event.type === 'focus' ? 'igcInputFocus' : 'igcInputBlur'\n );\n }\n\n private _handleDragEnter(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n const validFiles = getChatAcceptedFiles(event, this._acceptedTypes);\n this._parts = { 'input-container': true, dragging: !isEmpty(validFiles) };\n this._state.emitEvent('igcAttachmentDrag');\n }\n\n private _handleDragOver(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n }\n\n private _handleDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n // Check if we're actually leaving the container\n const rect = (event.currentTarget as HTMLElement).getBoundingClientRect();\n const x = event.clientX;\n const y = event.clientY;\n\n if (\n x <= rect.left ||\n x >= rect.right ||\n y <= rect.top ||\n y >= rect.bottom\n ) {\n this._parts = { 'input-container': true, dragging: false };\n }\n }\n\n private _handleDrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this._parts = { 'input-container': true, dragging: false };\n\n const validFiles = getChatAcceptedFiles(event, this._acceptedTypes);\n this._state.emitEvent('igcAttachmentDrop');\n this._state.attachFilesWithEvent(validFiles);\n this.requestUpdate();\n }\n\n private _handleInput({ detail }: CustomEvent<string>): void {\n this._state.inputValue = detail;\n this._state.emitEvent('igcInputChange', { detail });\n }\n\n private _handleFileUpload(event: Event): void {\n const input = event.target as HTMLInputElement;\n\n if (hasFiles(input)) {\n this._state.attachFilesWithEvent(Array.from(input.files!));\n }\n }\n\n /**\n * Default attachments area template used when no custom template is provided.\n * Renders the list of input attachments as chips.\n * @returns TemplateResult containing the attachments area\n */\n private _renderAttachmentsArea(attachments: IgcChatMessageAttachment[]) {\n return html`${attachments?.map(\n (attachment) => html`\n <div part=\"attachment-wrapper\" role=\"listitem\">\n <igc-chip\n removable\n @igcRemove=${() => this._handleAttachmentRemoved(attachment)}\n >\n <igc-icon\n part=\"attachment-icon\"\n slot=\"prefix\"\n name=${getIconName(attachment.file?.type ?? attachment.type)}\n ></igc-icon>\n <span part=\"attachment-name\">${attachment.name}</span>\n </igc-chip>\n </div>\n `\n )} `;\n }\n\n /**\n * Default text area template used when no custom template is provided.\n * Renders a text area for user input.\n * @returns TemplateResult containing the text area\n */\n private _renderTextArea() {\n return html`\n <igc-textarea\n part=\"text-input\"\n aria-label=\"Chat text input\"\n placeholder=${ifDefined(this._state.options?.inputPlaceholder)}\n resize=\"auto\"\n rows=\"1\"\n .value=${this._userInputState?.inputValue}\n @igcInput=${this._handleInput}\n @keydown=${this._handleKeydown}\n @focus=${this._handleFocusState}\n @blur=${this._handleFocusState}\n ></igc-textarea>\n `;\n }\n\n private _renderFileUploadButton() {\n const accepted = this._state.options?.acceptedFiles;\n const attachmentsDisabled = this._state.options?.disableInputAttachments;\n\n return html`${cache(\n attachmentsDisabled\n ? nothing\n : html`\n <label for=\"input_attachments\" part=\"file-upload\">\n <igc-icon-button\n aria-label=\"Attach files\"\n variant=\"flat\"\n name=\"attach_file\"\n @click=${this._handleFileInputClick}\n ></igc-icon-button>\n <input\n type=\"file\"\n id=\"input_attachments\"\n tabindex=\"-1\"\n name=\"input_attachments\"\n aria-label=\"Upload button\"\n multiple\n accept=${bindIf(accepted, accepted)}\n @change=${this._handleFileUpload}\n />\n </label>\n `\n )}`;\n }\n\n private _renderSendButton() {\n const enabled =\n this._state.hasInputValue || this._state.hasInputAttachments;\n\n return html`\n <igc-icon-button\n aria-label=\"Send message\"\n name=\"send_message\"\n variant=\"contained\"\n part=\"send-button\"\n ?disabled=${!enabled}\n @click=${this._sendMessage}\n ></igc-icon-button>\n `;\n }\n\n private _renderActionsArea() {\n const ctx: ChatRenderContext = { instance: this._state.host };\n\n return trimmedHtml`\n <div part=\"file-upload-container\">\n ${this._getRenderer('fileUploadButton')(ctx)}\n </div>\n <div part=\"input-actions-start\">\n ${this._getRenderer('inputActionsStart')(ctx)}\n </div>\n <div part=\"send-button-container\">${this._getRenderer('sendButton')(ctx)}</div>\n <div part=\"input-actions-end\">\n ${this._getRenderer('inputActionsEnd')(ctx)}\n </div>\n `;\n }\n\n protected override render() {\n const ctx: ChatRenderContext = { instance: this._state.host };\n\n const inputCtx: ChatInputRenderContext = {\n ...ctx,\n attachments: this._state.inputAttachments,\n value: this._state.inputValue,\n };\n\n return html`\n <div\n part=${partMap(this._parts)}\n @dragenter=${this._handleDragEnter}\n @dragover=${this._handleDragOver}\n @dragleave=${this._handleDragLeave}\n @drop=${this._handleDrop}\n >\n ${this._state.hasInputAttachments\n ? html`\n <div part=\"attachments\" role=\"list\" aria-label=\"Attachments\">\n ${until(this._getRenderer('inputAttachments')(inputCtx))}\n </div>\n `\n : nothing}\n\n <div part=\"input-wrapper\">\n ${until(this._getRenderer('input')(inputCtx))}\n </div>\n\n <div part=\"actions-container\">\n ${until(this._getRenderer('inputActions')(ctx))}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-chat-input': IgcChatInputComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"chat-input.js","sourceRoot":"","sources":["../../../src/components/chat/chat-input.ts"],"names":[],"mappings":"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","sourcesContent":["import { ContextConsumer, consume } from '@lit/context';\nimport { html, LitElement, nothing, type PropertyValues } from 'lit';\nimport { query, state } from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { until } from 'lit/directives/until.js';\nimport { chatContext, chatUserInputContext } from '#internals/context.js';\nimport { addAdoptedStylesController } from '#internals/controllers/adopt-styles.js';\nimport { enterKey, tabKey } from '#internals/controllers/key-bindings.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport { partMap } from '#internals/part-map.js';\nimport { isEmpty } from '#internals/utils/arrays.js';\nimport { hasFiles } from '#internals/utils/dom.js';\nimport { bindIf, trimmedHtml } from '#internals/utils/lit.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport IgcIconButtonComponent from '../button/icon-button.js';\nimport IgcChipComponent from '../chip/chip.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcTextareaComponent from '../textarea/textarea.js';\nimport type { ChatState } from './chat-state.js';\nimport { styles } from './themes/input.base.css.js';\nimport { all } from './themes/input.js';\nimport { styles as shared } from './themes/shared/input/input.common.css.js';\nimport type {\n ChatInputRenderContext,\n ChatRenderContext,\n ChatTemplateRenderer,\n IgcChatMessageAttachment,\n} from './types.js';\nimport {\n type ChatAcceptedFileTypes,\n getChatAcceptedFiles,\n getIconName,\n} from './utils.js';\n\ntype DefaultInputRenderers = {\n input: ChatTemplateRenderer<ChatInputRenderContext>;\n inputActions: ChatTemplateRenderer<ChatRenderContext>;\n inputActionsEnd: ChatTemplateRenderer<ChatRenderContext>;\n inputActionsStart: ChatTemplateRenderer<ChatRenderContext>;\n inputAttachments: ChatTemplateRenderer<ChatInputRenderContext>;\n fileUploadButton: ChatTemplateRenderer<ChatRenderContext>;\n sendButton: ChatTemplateRenderer<ChatRenderContext>;\n};\n\n/* blazorSuppress */\n/**\n * A web component that provides the input area for the chat interface.\n *\n * It supports:\n * - Text input with automatic resizing\n * - Sending messages on Enter key (with Shift+Enter for newlines)\n * - File attachments via file picker or drag-and-drop\n * - Customizable templates for send button, attachments, and text input\n * - Emits various chat-related events (typing, input focus/blur, attachment drop, etc.)\n *\n * @element igc-chat-input\n *\n * @slot - Default unnamed slot for rendering inside the component\n * @fires igcTypingChange - Fired when the user starts/stops typing\n * @fires igcInputFocus - Fired when the input area receives focus\n * @fires igcInputBlur - Fired when the input area loses focus\n * @fires igcAttachmentDrag - Fired when dragging a file over the input\n * @fires igcAttachmentDrop - Fired when a file is dropped into the input\n * @fires igcChange - Fired when the file input changes (delegated from the underlying file input).\n *\n * @csspart input-container - Container for the input section\n * @csspart input-wrapper - Wrapper around the text input\n * @csspart text-input - The underlying textarea component.\n * @csspart actions-container - Container for file upload/send buttons\n * @csspart send-button - The send icon button\n * @csspart attachments - Container for rendering attachments\n * @csspart attachment-wrapper - Wrapper for individual attachment\n * @csspart attachment-name - Display name of an attachment\n */\nexport default class IgcChatInputComponent extends LitElement {\n public static readonly tagName = 'igc-chat-input';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcChatInputComponent,\n IgcTextareaComponent,\n IgcIconButtonComponent,\n IgcChipComponent,\n IgcIconComponent\n );\n }\n\n private readonly _defaults: Readonly<DefaultInputRenderers> = Object.freeze({\n fileUploadButton: () => this._renderFileUploadButton(),\n input: () => this._renderTextArea(),\n inputActions: () => this._renderActionsArea(),\n inputActionsEnd: () => nothing,\n inputActionsStart: () => nothing,\n inputAttachments: (ctx) => this._renderAttachmentsArea(ctx.attachments),\n sendButton: () => this._renderSendButton(),\n });\n\n private _userIsTyping = false;\n private _userLastTypeTime = Date.now();\n private _typingTimeout?: ReturnType<typeof setTimeout>;\n\n private readonly _adoptedStyles = addAdoptedStylesController(this);\n\n private readonly _stateChanged = () => {\n this._shouldAdoptRootStyles = Boolean(this._state.options?.adoptRootStyles);\n };\n\n private readonly _stateConsumer = new ContextConsumer(this, {\n context: chatContext,\n callback: this._stateChanged,\n subscribe: true,\n });\n\n @consume({ context: chatUserInputContext, subscribe: true })\n private readonly _userInputState!: ChatState;\n\n @query(IgcTextareaComponent.tagName)\n private readonly _textInputElement?: IgcTextareaComponent;\n\n @query('#input_attachments')\n protected readonly _fileInput?: HTMLInputElement;\n\n @state()\n private _parts = { 'input-container': true, dragging: false };\n\n @state()\n private _shouldAdoptRootStyles = false;\n\n private get _state(): ChatState {\n return this._stateConsumer.value!;\n }\n\n private get _acceptedTypes(): ChatAcceptedFileTypes | null {\n return this._state.acceptedFileTypes;\n }\n\n constructor() {\n super();\n addThemingController(this, all, { themeChange: this._adoptPageStyles });\n }\n\n protected override update(props: PropertyValues): void {\n if (props.has('_shouldAdoptRootStyles')) {\n this._adoptedStyles.shouldAdoptStyles(this._shouldAdoptRootStyles);\n }\n super.update(props);\n }\n\n /** @internal */\n public focusInput(): void {\n this._textInputElement?.focus();\n }\n\n private _adoptPageStyles(): void {\n this._adoptedStyles.invalidateCache(this.ownerDocument);\n this._adoptedStyles.shouldAdoptStyles(this._shouldAdoptRootStyles);\n }\n\n private _getRenderer<U extends keyof DefaultInputRenderers>(\n name: U\n ): DefaultInputRenderers[U] {\n return this._state.options?.renderers\n ? ((this._state.options.renderers[name] ??\n this._defaults[name]) as DefaultInputRenderers[U])\n : this._defaults[name];\n }\n\n private async _sendMessage(): Promise<void> {\n if (\n !this._userInputState.hasInputValue &&\n !this._userInputState.hasInputAttachments\n ) {\n return;\n }\n\n this._userInputState.addMessageWithEvent({\n text: this._userInputState.inputValue,\n attachments: this._userInputState.inputAttachments,\n });\n\n this.style.height = 'auto';\n\n await this._userInputState.host.updateComplete;\n this.focusInput();\n }\n\n private _setTypingStateAndEmit(state: boolean): void {\n this._userIsTyping = state;\n this._userInputState.emitUserTypingState(state);\n }\n\n private _handleAttachmentRemoved(attachment: IgcChatMessageAttachment): void {\n const current = this._userInputState.inputAttachments;\n\n if (this._state.emitAttachmentRemoved(attachment)) {\n this._state.inputAttachments = current.toSpliced(\n current.indexOf(attachment),\n 1\n );\n }\n }\n\n private _handleKeydown(event: KeyboardEvent): void {\n this._userLastTypeTime = Date.now();\n const isEnterKey = event.key.toLowerCase() === enterKey.toLowerCase();\n const isTab = event.key.toLocaleLowerCase() === tabKey.toLowerCase();\n\n if (isTab && !this._userIsTyping) {\n return;\n }\n\n if (isEnterKey && !event.shiftKey) {\n event.preventDefault();\n this._sendMessage();\n\n if (this._userIsTyping) {\n clearTimeout(this._typingTimeout);\n this._setTypingStateAndEmit(false);\n }\n\n return;\n }\n\n clearTimeout(this._typingTimeout);\n const delay = this._state.stopTypingDelay;\n\n if (!this._userIsTyping) {\n this._setTypingStateAndEmit(true);\n }\n\n this._typingTimeout = setTimeout(() => {\n if (this._userIsTyping && this._userLastTypeTime + delay <= Date.now()) {\n this._setTypingStateAndEmit(false);\n }\n }, delay);\n }\n\n private _handleFileInputClick(): void {\n this._fileInput?.showPicker();\n }\n\n private _handleFocusState(event: FocusEvent): void {\n this._state.emitEvent(\n event.type === 'focus' ? 'igcInputFocus' : 'igcInputBlur'\n );\n }\n\n private _handleDragEnter(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n const validFiles = getChatAcceptedFiles(event, this._acceptedTypes);\n this._parts = { 'input-container': true, dragging: !isEmpty(validFiles) };\n this._state.emitEvent('igcAttachmentDrag');\n }\n\n private _handleDragOver(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n }\n\n private _handleDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n // Check if we're actually leaving the container\n const rect = (event.currentTarget as HTMLElement).getBoundingClientRect();\n const x = event.clientX;\n const y = event.clientY;\n\n if (\n x <= rect.left ||\n x >= rect.right ||\n y <= rect.top ||\n y >= rect.bottom\n ) {\n this._parts = { 'input-container': true, dragging: false };\n }\n }\n\n private _handleDrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this._parts = { 'input-container': true, dragging: false };\n\n const validFiles = getChatAcceptedFiles(event, this._acceptedTypes);\n this._state.emitEvent('igcAttachmentDrop');\n this._state.attachFilesWithEvent(validFiles);\n this.requestUpdate();\n }\n\n private _handleInput({ detail }: CustomEvent<string>): void {\n this._state.inputValue = detail;\n this._state.emitEvent('igcInputChange', { detail });\n }\n\n private _handleFileUpload(event: Event): void {\n const input = event.target as HTMLInputElement;\n\n if (hasFiles(input)) {\n this._state.attachFilesWithEvent(Array.from(input.files!));\n }\n }\n\n /**\n * Default attachments area template used when no custom template is provided.\n * Renders the list of input attachments as chips.\n * @returns TemplateResult containing the attachments area\n */\n private _renderAttachmentsArea(attachments: IgcChatMessageAttachment[]) {\n return html`${attachments?.map(\n (attachment) => html`\n <div part=\"attachment-wrapper\" role=\"listitem\">\n <igc-chip\n removable\n @igcRemove=${() => this._handleAttachmentRemoved(attachment)}\n >\n <igc-icon\n part=\"attachment-icon\"\n slot=\"prefix\"\n name=${getIconName(attachment.file?.type ?? attachment.type)}\n ></igc-icon>\n <span part=\"attachment-name\">${attachment.name}</span>\n </igc-chip>\n </div>\n `\n )} `;\n }\n\n /**\n * Default text area template used when no custom template is provided.\n * Renders a text area for user input.\n * @returns TemplateResult containing the text area\n */\n private _renderTextArea() {\n return html`\n <igc-textarea\n part=\"text-input\"\n aria-label=\"Chat text input\"\n placeholder=${ifDefined(this._state.options?.inputPlaceholder)}\n resize=\"auto\"\n rows=\"1\"\n .value=${this._userInputState?.inputValue}\n @igcInput=${this._handleInput}\n @keydown=${this._handleKeydown}\n @focus=${this._handleFocusState}\n @blur=${this._handleFocusState}\n ></igc-textarea>\n `;\n }\n\n private _renderFileUploadButton() {\n const accepted = this._state.options?.acceptedFiles;\n const attachmentsDisabled = this._state.options?.disableInputAttachments;\n\n return html`${cache(\n attachmentsDisabled\n ? nothing\n : html`\n <label for=\"input_attachments\" part=\"file-upload\">\n <igc-icon-button\n aria-label=\"Attach files\"\n variant=\"flat\"\n name=\"attach_file\"\n @click=${this._handleFileInputClick}\n ></igc-icon-button>\n <input\n type=\"file\"\n id=\"input_attachments\"\n tabindex=\"-1\"\n name=\"input_attachments\"\n aria-label=\"Upload button\"\n multiple\n accept=${bindIf(accepted, accepted)}\n @change=${this._handleFileUpload}\n />\n </label>\n `\n )}`;\n }\n\n private _renderSendButton() {\n const enabled =\n this._state.hasInputValue || this._state.hasInputAttachments;\n\n return html`\n <igc-icon-button\n aria-label=\"Send message\"\n name=\"send_message\"\n variant=\"contained\"\n part=\"send-button\"\n ?disabled=${!enabled}\n @click=${this._sendMessage}\n ></igc-icon-button>\n `;\n }\n\n private _renderActionsArea() {\n const ctx: ChatRenderContext = { instance: this._state.host };\n\n return trimmedHtml`\n <div part=\"file-upload-container\">\n ${this._getRenderer('fileUploadButton')(ctx)}\n </div>\n <div part=\"input-actions-start\">\n ${this._getRenderer('inputActionsStart')(ctx)}\n </div>\n <div part=\"send-button-container\">${this._getRenderer('sendButton')(ctx)}</div>\n <div part=\"input-actions-end\">\n ${this._getRenderer('inputActionsEnd')(ctx)}\n </div>\n `;\n }\n\n protected override render() {\n const ctx: ChatRenderContext = { instance: this._state.host };\n\n const inputCtx: ChatInputRenderContext = {\n ...ctx,\n attachments: this._state.inputAttachments,\n value: this._state.inputValue,\n };\n\n return html`\n <div\n part=${partMap(this._parts)}\n @dragenter=${this._handleDragEnter}\n @dragover=${this._handleDragOver}\n @dragleave=${this._handleDragLeave}\n @drop=${this._handleDrop}\n >\n ${\n this._state.hasInputAttachments\n ? html`\n <div part=\"attachments\" role=\"list\" aria-label=\"Attachments\">\n ${until(this._getRenderer('inputAttachments')(inputCtx))}\n </div>\n `\n : nothing\n }\n\n <div part=\"input-wrapper\">\n ${until(this._getRenderer('input')(inputCtx))}\n </div>\n\n <div part=\"actions-container\">\n ${until(this._getRenderer('inputActions')(ctx))}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-chat-input': IgcChatInputComponent;\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { LitElement, type PropertyValues } from 'lit';
2
2
  import type { IgcChatMessage } from './types.js';
3
3
  /**
4
- * A chat message component for displaying individual messages in `<igc-chat>`.
4
+ * A chat message component for displaying individual messages in the chat component.
5
5
  *
6
6
  * @element igc-chat-message
7
7
  *
@@ -9,13 +9,14 @@ import { html, LitElement, nothing } from 'lit';
9
9
  import { property, state } from 'lit/decorators.js';
10
10
  import { cache } from 'lit/directives/cache.js';
11
11
  import { until } from 'lit/directives/until.js';
12
- import { addThemingController } from '../../theming/theming-controller.js';
12
+ import { chatContext } from '#internals/context.js';
13
+ import { addAdoptedStylesController } from '#internals/controllers/adopt-styles.js';
14
+ import { registerComponent } from '#internals/definitions/register.js';
15
+ import { partMap } from '#internals/part-map.js';
16
+ import { isEmpty } from '#internals/utils/arrays.js';
17
+ import { trimmedHtml } from '#internals/utils/lit.js';
18
+ import { addThemingController } from '#theming/theming-controller.js';
13
19
  import IgcIconButtonComponent from '../button/icon-button.js';
14
- import { chatContext } from '../common/context.js';
15
- import { addAdoptedStylesController } from '../common/controllers/adopt-styles.js';
16
- import { registerComponent } from '../common/definitions/register.js';
17
- import { partMap } from '../common/part-map.js';
18
- import { isEmpty, trimmedHtml } from '../common/util.js';
19
20
  import IgcMessageAttachmentsComponent from './message-attachments.js';
20
21
  import { styles } from './themes/message.base.css.js';
21
22
  import { all } from './themes/message.js';
@@ -1 +1 @@
1
- {"version":3,"file":"chat-message.js","sourceRoot":"","sources":["../../../src/components/chat/chat-message.ts"],"names":[],"mappings":"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","sourcesContent":["import { ContextConsumer } from '@lit/context';\nimport { html, LitElement, nothing, type PropertyValues } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { until } from 'lit/directives/until.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport IgcIconButtonComponent from '../button/icon-button.js';\nimport { chatContext } from '../common/context.js';\nimport { addAdoptedStylesController } from '../common/controllers/adopt-styles.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { partMap } from '../common/part-map.js';\nimport { isEmpty, trimmedHtml } from '../common/util.js';\nimport type { ChatState } from './chat-state.js';\nimport IgcMessageAttachmentsComponent from './message-attachments.js';\nimport { styles } from './themes/message.base.css.js';\nimport { all } from './themes/message.js';\nimport { styles as shared } from './themes/shared/chat-message/chat-message.common.css.js';\nimport type {\n ChatMessageRenderContext,\n ChatTemplateRenderer,\n IgcChatMessage,\n} from './types.js';\n\nconst LIKE_INACTIVE = 'thumb_up_inactive';\nconst LIKE_ACTIVE = 'thumb_up_active';\nconst DISLIKE_INACTIVE = 'thumb_down_inactive';\nconst DISLIKE_ACTIVE = 'thumb_down_active';\nconst COPY_CONTENT = 'copy_content';\nconst REGENERATE = 'regenerate';\n\ntype DefaultMessageRenderers = {\n messageHeader: ChatTemplateRenderer<ChatMessageRenderContext>;\n messageContent: ChatTemplateRenderer<ChatMessageRenderContext>;\n messageAttachments: ChatTemplateRenderer<ChatMessageRenderContext>;\n messageActions: ChatTemplateRenderer<ChatMessageRenderContext>;\n};\n\n/* blazorSuppress */\n/**\n * A chat message component for displaying individual messages in `<igc-chat>`.\n *\n * @element igc-chat-message\n *\n *\n * This component renders a single chat message including:\n * - Message text (sanitized)\n * - Attachments (if any)\n * - Custom templates for message content and actions (if provided via chat options)\n *\n * It distinguishes sent messages from received messages by comparing\n * the message sender with the current user ID from chat state.\n *\n * The message text is sanitized with DOMPurify before rendering,\n * and can be rendered with a markdown renderer if provided.\n */\nexport default class IgcChatMessageComponent extends LitElement {\n public static readonly tagName = 'igc-chat-message';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcChatMessageComponent,\n IgcMessageAttachmentsComponent,\n IgcIconButtonComponent\n );\n }\n\n private readonly _adoptedStyles = addAdoptedStylesController(this);\n\n private readonly _defaults = Object.freeze<DefaultMessageRenderers>({\n messageHeader: () => this._renderHeader(),\n messageContent: () => this._renderContent(),\n messageAttachments: () => this._renderAttachments(),\n messageActions: () => this._renderActions(),\n });\n\n private readonly _stateChanged = () => {\n this._shouldAdoptRootStyles = Boolean(this._state.options?.adoptRootStyles);\n };\n\n private readonly _stateConsumer = new ContextConsumer(this, {\n context: chatContext,\n callback: this._stateChanged,\n subscribe: true,\n });\n\n @state()\n private _shouldAdoptRootStyles = false;\n\n private get _state(): ChatState {\n return this._stateConsumer.value!;\n }\n\n /**\n * The chat message to render.\n */\n @property({ attribute: false })\n public message!: IgcChatMessage;\n\n constructor() {\n super();\n addThemingController(this, all, { themeChange: this._adoptPageStyles });\n }\n\n protected override update(props: PropertyValues): void {\n if (props.has('_shouldAdoptRootStyles')) {\n this._adoptedStyles.shouldAdoptStyles(this._shouldAdoptRootStyles);\n }\n super.update(props);\n }\n\n private _adoptPageStyles(): void {\n this._adoptedStyles.invalidateCache(this.ownerDocument);\n this._adoptedStyles.shouldAdoptStyles(this._shouldAdoptRootStyles);\n }\n\n private _getRenderer(name: keyof DefaultMessageRenderers) {\n return this._state.options?.renderers\n ? (this._state.options.renderers[name] ?? this._defaults[name])\n : this._defaults[name];\n }\n\n private async _handleCopy(): Promise<void> {\n const text = this.message.text;\n const separator = text ? '\\n\\n' : '';\n const attachments = this.message.attachments ?? [];\n const {\n chat_attachment_label,\n chat_attachments_list_label,\n chat_message_copied,\n } = this._state.resourceStrings;\n\n const attachmentsText = isEmpty(attachments)\n ? ''\n : attachments\n .map(\n ({ name, url }) => `${name ?? chat_attachment_label}: ${url ?? ''}`\n )\n .join('\\n');\n\n const payload = attachmentsText\n ? `${text}${separator}${chat_attachments_list_label}:\\n${attachmentsText}`\n : text;\n\n try {\n await navigator.clipboard.writeText(payload);\n this._state.showActionToast(chat_message_copied!);\n } catch (err) {\n throw new Error(`Failed to copy message: ${err}`);\n }\n }\n\n private _handleMessageActionClick(event: PointerEvent): void {\n const targetButton = event.target as HTMLElement;\n const button = targetButton.closest(IgcIconButtonComponent.tagName);\n\n if (!button) {\n return;\n }\n\n let reaction = button.name;\n\n switch (reaction) {\n case LIKE_INACTIVE:\n case LIKE_ACTIVE:\n reaction = this.message.reactions?.includes(LIKE_ACTIVE)\n ? LIKE_INACTIVE\n : LIKE_ACTIVE;\n break;\n case DISLIKE_INACTIVE:\n case DISLIKE_ACTIVE:\n reaction = this.message.reactions?.includes(DISLIKE_ACTIVE)\n ? DISLIKE_INACTIVE\n : DISLIKE_ACTIVE;\n break;\n case COPY_CONTENT:\n reaction = COPY_CONTENT;\n this._handleCopy();\n break;\n case REGENERATE:\n reaction = REGENERATE;\n break;\n default:\n reaction = '';\n }\n\n this.message.reactions = reaction ? [reaction] : [];\n this._state.emitMessageReaction({ message: this.message, reaction });\n this.requestUpdate();\n }\n\n private _renderHeader() {\n return nothing;\n }\n\n private _renderContent() {\n return html`${this.message.text}`;\n }\n\n private _renderActions() {\n const isSent = this.message.sender === this._state.currentUserId;\n const hasText = this.message.text.trim();\n const hasAttachments = !isEmpty(this.message.attachments ?? []);\n const isTyping = this._state.options?.isTyping;\n const isLastMessage = this.message === this._state.messages.at(-1);\n const resourceStrings = this._state.resourceStrings!;\n\n if (isSent || !(hasText || hasAttachments) || (isLastMessage && isTyping)) {\n return nothing;\n }\n\n return html`\n ${this._renderActionButton(\n COPY_CONTENT,\n resourceStrings.chat_reaction_copy!\n )}\n ${this._renderActionButton(\n this.message.reactions?.includes(LIKE_ACTIVE)\n ? LIKE_ACTIVE\n : LIKE_INACTIVE,\n resourceStrings.chat_reaction_like!\n )}\n ${this._renderActionButton(\n this.message.reactions?.includes(DISLIKE_ACTIVE)\n ? DISLIKE_ACTIVE\n : DISLIKE_INACTIVE,\n resourceStrings.chat_reaction_dislike!\n )}\n ${this._renderActionButton(\n REGENERATE,\n resourceStrings.chat_reaction_regenerate!\n )}\n `;\n }\n\n private _renderActionButton(name: string, tooltipMessage: string) {\n return html`\n <igc-icon-button\n id=${`${name}-button`}\n name=${name}\n variant=\"flat\"\n @pointerenter=${({ target }: PointerEvent) =>\n this._state.showActionsTooltip(target as Element, tooltipMessage)}\n @focus=${({ target }: FocusEvent) =>\n this._state.showActionsTooltip(target as Element, tooltipMessage)}\n ></igc-icon-button>\n `;\n }\n\n private _renderAttachments() {\n return isEmpty(this.message.attachments ?? [])\n ? nothing\n : html`\n <igc-message-attachments\n .message=${this.message}\n exportparts=\"\n attachment,\n attachment-header,\n attachment-icon,\n file-name,\n attachment-content\"\n ></igc-message-attachments>\n `;\n }\n\n private _renderMessage() {\n const ctx: ChatMessageRenderContext = {\n message: this.message,\n instance: this._state.host,\n };\n\n return trimmedHtml`\n <div part=\"message-header\">\n ${until(this._getRenderer('messageHeader')(ctx))}\n </div>\n <div part=\"plain-text\">\n ${until(this._getRenderer('messageContent')(ctx))}\n </div>\n <div part=\"message-attachments\">\n ${until(this._getRenderer('messageAttachments')(ctx))}\n </div>\n <div part=\"message-actions\" @click=${this._handleMessageActionClick}>\n ${until(this._getRenderer('messageActions')(ctx))}\n </div>\n `;\n }\n\n protected override render() {\n const messageRenderer = this._state.options?.renderers?.message;\n const ctx: ChatMessageRenderContext = {\n message: this.message,\n instance: this._state.host,\n };\n\n const parts = {\n 'message-container': true,\n received: !this._state.isCurrentUserMessage(this.message),\n sent: this._state.isCurrentUserMessage(this.message),\n };\n\n return html`\n ${cache(\n this.message\n ? html`\n <div part=${partMap(parts)}>\n ${cache(\n messageRenderer\n ? until(messageRenderer(ctx))\n : this._renderMessage()\n )}\n </div>\n `\n : nothing\n )}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-chat-message': IgcChatMessageComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"chat-message.js","sourceRoot":"","sources":["../../../src/components/chat/chat-message.ts"],"names":[],"mappings":"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","sourcesContent":["import { ContextConsumer } from '@lit/context';\nimport { html, LitElement, nothing, type PropertyValues } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { until } from 'lit/directives/until.js';\nimport { chatContext } from '#internals/context.js';\nimport { addAdoptedStylesController } from '#internals/controllers/adopt-styles.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport { partMap } from '#internals/part-map.js';\nimport { isEmpty } from '#internals/utils/arrays.js';\nimport { trimmedHtml } from '#internals/utils/lit.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport IgcIconButtonComponent from '../button/icon-button.js';\nimport type { ChatState } from './chat-state.js';\nimport IgcMessageAttachmentsComponent from './message-attachments.js';\nimport { styles } from './themes/message.base.css.js';\nimport { all } from './themes/message.js';\nimport { styles as shared } from './themes/shared/chat-message/chat-message.common.css.js';\nimport type {\n ChatMessageRenderContext,\n ChatTemplateRenderer,\n IgcChatMessage,\n} from './types.js';\n\nconst LIKE_INACTIVE = 'thumb_up_inactive';\nconst LIKE_ACTIVE = 'thumb_up_active';\nconst DISLIKE_INACTIVE = 'thumb_down_inactive';\nconst DISLIKE_ACTIVE = 'thumb_down_active';\nconst COPY_CONTENT = 'copy_content';\nconst REGENERATE = 'regenerate';\n\ntype DefaultMessageRenderers = {\n messageHeader: ChatTemplateRenderer<ChatMessageRenderContext>;\n messageContent: ChatTemplateRenderer<ChatMessageRenderContext>;\n messageAttachments: ChatTemplateRenderer<ChatMessageRenderContext>;\n messageActions: ChatTemplateRenderer<ChatMessageRenderContext>;\n};\n\n/* blazorSuppress */\n/**\n * A chat message component for displaying individual messages in the chat component.\n *\n * @element igc-chat-message\n *\n *\n * This component renders a single chat message including:\n * - Message text (sanitized)\n * - Attachments (if any)\n * - Custom templates for message content and actions (if provided via chat options)\n *\n * It distinguishes sent messages from received messages by comparing\n * the message sender with the current user ID from chat state.\n *\n * The message text is sanitized with DOMPurify before rendering,\n * and can be rendered with a markdown renderer if provided.\n */\nexport default class IgcChatMessageComponent extends LitElement {\n public static readonly tagName = 'igc-chat-message';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcChatMessageComponent,\n IgcMessageAttachmentsComponent,\n IgcIconButtonComponent\n );\n }\n\n private readonly _adoptedStyles = addAdoptedStylesController(this);\n\n private readonly _defaults = Object.freeze<DefaultMessageRenderers>({\n messageHeader: () => this._renderHeader(),\n messageContent: () => this._renderContent(),\n messageAttachments: () => this._renderAttachments(),\n messageActions: () => this._renderActions(),\n });\n\n private readonly _stateChanged = () => {\n this._shouldAdoptRootStyles = Boolean(this._state.options?.adoptRootStyles);\n };\n\n private readonly _stateConsumer = new ContextConsumer(this, {\n context: chatContext,\n callback: this._stateChanged,\n subscribe: true,\n });\n\n @state()\n private _shouldAdoptRootStyles = false;\n\n private get _state(): ChatState {\n return this._stateConsumer.value!;\n }\n\n /**\n * The chat message to render.\n */\n @property({ attribute: false })\n public message!: IgcChatMessage;\n\n constructor() {\n super();\n addThemingController(this, all, { themeChange: this._adoptPageStyles });\n }\n\n protected override update(props: PropertyValues): void {\n if (props.has('_shouldAdoptRootStyles')) {\n this._adoptedStyles.shouldAdoptStyles(this._shouldAdoptRootStyles);\n }\n super.update(props);\n }\n\n private _adoptPageStyles(): void {\n this._adoptedStyles.invalidateCache(this.ownerDocument);\n this._adoptedStyles.shouldAdoptStyles(this._shouldAdoptRootStyles);\n }\n\n private _getRenderer(name: keyof DefaultMessageRenderers) {\n return this._state.options?.renderers\n ? (this._state.options.renderers[name] ?? this._defaults[name])\n : this._defaults[name];\n }\n\n private async _handleCopy(): Promise<void> {\n const text = this.message.text;\n const separator = text ? '\\n\\n' : '';\n const attachments = this.message.attachments ?? [];\n const {\n chat_attachment_label,\n chat_attachments_list_label,\n chat_message_copied,\n } = this._state.resourceStrings;\n\n const attachmentsText = isEmpty(attachments)\n ? ''\n : attachments\n .map(\n ({ name, url }) => `${name ?? chat_attachment_label}: ${url ?? ''}`\n )\n .join('\\n');\n\n const payload = attachmentsText\n ? `${text}${separator}${chat_attachments_list_label}:\\n${attachmentsText}`\n : text;\n\n try {\n await navigator.clipboard.writeText(payload);\n this._state.showActionToast(chat_message_copied!);\n } catch (err) {\n throw new Error(`Failed to copy message: ${err}`);\n }\n }\n\n private _handleMessageActionClick(event: PointerEvent): void {\n const targetButton = event.target as HTMLElement;\n const button = targetButton.closest(IgcIconButtonComponent.tagName);\n\n if (!button) {\n return;\n }\n\n let reaction = button.name;\n\n switch (reaction) {\n case LIKE_INACTIVE:\n case LIKE_ACTIVE:\n reaction = this.message.reactions?.includes(LIKE_ACTIVE)\n ? LIKE_INACTIVE\n : LIKE_ACTIVE;\n break;\n case DISLIKE_INACTIVE:\n case DISLIKE_ACTIVE:\n reaction = this.message.reactions?.includes(DISLIKE_ACTIVE)\n ? DISLIKE_INACTIVE\n : DISLIKE_ACTIVE;\n break;\n case COPY_CONTENT:\n reaction = COPY_CONTENT;\n this._handleCopy();\n break;\n case REGENERATE:\n reaction = REGENERATE;\n break;\n default:\n reaction = '';\n }\n\n this.message.reactions = reaction ? [reaction] : [];\n this._state.emitMessageReaction({ message: this.message, reaction });\n this.requestUpdate();\n }\n\n private _renderHeader() {\n return nothing;\n }\n\n private _renderContent() {\n return html`${this.message.text}`;\n }\n\n private _renderActions() {\n const isSent = this.message.sender === this._state.currentUserId;\n const hasText = this.message.text.trim();\n const hasAttachments = !isEmpty(this.message.attachments ?? []);\n const isTyping = this._state.options?.isTyping;\n const isLastMessage = this.message === this._state.messages.at(-1);\n const resourceStrings = this._state.resourceStrings!;\n\n if (isSent || !(hasText || hasAttachments) || (isLastMessage && isTyping)) {\n return nothing;\n }\n\n return html`\n ${this._renderActionButton(\n COPY_CONTENT,\n resourceStrings.chat_reaction_copy!\n )}\n ${this._renderActionButton(\n this.message.reactions?.includes(LIKE_ACTIVE)\n ? LIKE_ACTIVE\n : LIKE_INACTIVE,\n resourceStrings.chat_reaction_like!\n )}\n ${this._renderActionButton(\n this.message.reactions?.includes(DISLIKE_ACTIVE)\n ? DISLIKE_ACTIVE\n : DISLIKE_INACTIVE,\n resourceStrings.chat_reaction_dislike!\n )}\n ${this._renderActionButton(\n REGENERATE,\n resourceStrings.chat_reaction_regenerate!\n )}\n `;\n }\n\n private _renderActionButton(name: string, tooltipMessage: string) {\n return html`\n <igc-icon-button\n id=${`${name}-button`}\n name=${name}\n variant=\"flat\"\n @pointerenter=${({ target }: PointerEvent) =>\n this._state.showActionsTooltip(target as Element, tooltipMessage)}\n @focus=${({ target }: FocusEvent) =>\n this._state.showActionsTooltip(target as Element, tooltipMessage)}\n ></igc-icon-button>\n `;\n }\n\n private _renderAttachments() {\n return isEmpty(this.message.attachments ?? [])\n ? nothing\n : html`\n <igc-message-attachments\n .message=${this.message}\n exportparts=\"\n attachment,\n attachment-header,\n attachment-icon,\n file-name,\n attachment-content\"\n ></igc-message-attachments>\n `;\n }\n\n private _renderMessage() {\n const ctx: ChatMessageRenderContext = {\n message: this.message,\n instance: this._state.host,\n };\n\n return trimmedHtml`\n <div part=\"message-header\">\n ${until(this._getRenderer('messageHeader')(ctx))}\n </div>\n <div part=\"plain-text\">\n ${until(this._getRenderer('messageContent')(ctx))}\n </div>\n <div part=\"message-attachments\">\n ${until(this._getRenderer('messageAttachments')(ctx))}\n </div>\n <div part=\"message-actions\" @click=${this._handleMessageActionClick}>\n ${until(this._getRenderer('messageActions')(ctx))}\n </div>\n `;\n }\n\n protected override render() {\n const messageRenderer = this._state.options?.renderers?.message;\n const ctx: ChatMessageRenderContext = {\n message: this.message,\n instance: this._state.host,\n };\n\n const parts = {\n 'message-container': true,\n received: !this._state.isCurrentUserMessage(this.message),\n sent: this._state.isCurrentUserMessage(this.message),\n };\n\n return html`\n ${cache(\n this.message\n ? html`\n <div part=${partMap(parts)}>\n ${cache(\n messageRenderer\n ? until(messageRenderer(ctx))\n : this._renderMessage()\n )}\n </div>\n `\n : nothing\n )}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-chat-message': IgcChatMessageComponent;\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import type { IChatResourceStrings } from 'igniteui-i18n-core';
2
- import type { IgcChatResourceStrings } from '../common/i18n/EN/chat.resources.js';
3
- import type { UnpackCustomEvent } from '../common/mixins/event-emitter.js';
2
+ import type { IgcChatResourceStrings } from '#internals/i18n/EN/chat.resources.js';
3
+ import type { UnpackCustomEvent } from '#internals/mixins/event-emitter.js';
4
4
  import type IgcChatComponent from './chat.js';
5
5
  import type { IgcChatComponentEventMap } from './chat.js';
6
6
  import type { ChatSuggestionsPosition, IgcChatMessage, IgcChatMessageAttachment, IgcChatMessageReaction, IgcChatOptions } from './types.js';