igniteui-webcomponents 6.3.0-alpha.1 → 6.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 (380) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/components/accordion/themes/accordion.base.css.js +1 -1
  3. package/components/accordion/themes/accordion.base.css.js.map +1 -1
  4. package/components/banner/themes/banner.base.css.js +1 -1
  5. package/components/banner/themes/banner.base.css.js.map +1 -1
  6. package/components/banner/themes/shared/banner.bootstrap.css.js +1 -1
  7. package/components/banner/themes/shared/banner.bootstrap.css.js.map +1 -1
  8. package/components/banner/themes/shared/banner.fluent.css.js +1 -1
  9. package/components/banner/themes/shared/banner.fluent.css.js.map +1 -1
  10. package/components/banner/themes/shared/banner.indigo.css.js +1 -1
  11. package/components/banner/themes/shared/banner.indigo.css.js.map +1 -1
  12. package/components/banner/themes/shared/banner.material.css.js +1 -1
  13. package/components/banner/themes/shared/banner.material.css.js.map +1 -1
  14. package/components/button/themes/button/button.base.css.js +1 -1
  15. package/components/button/themes/button/button.base.css.js.map +1 -1
  16. package/components/button/themes/button/shared/button.common.css.js +1 -1
  17. package/components/button/themes/button/shared/button.common.css.js.map +1 -1
  18. package/components/button/themes/button/shared/button.fluent.css.js +1 -1
  19. package/components/button/themes/button/shared/button.fluent.css.js.map +1 -1
  20. package/components/button/themes/button/shared/button.indigo.css.js +1 -1
  21. package/components/button/themes/button/shared/button.indigo.css.js.map +1 -1
  22. package/components/calendar/calendar.d.ts +1 -1
  23. package/components/calendar/themes/calendar.base.css.js +1 -1
  24. package/components/calendar/themes/calendar.base.css.js.map +1 -1
  25. package/components/calendar/themes/days-view.base.css.js +1 -1
  26. package/components/calendar/themes/days-view.base.css.js.map +1 -1
  27. package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js +1 -1
  28. package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js.map +1 -1
  29. package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js +1 -1
  30. package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js.map +1 -1
  31. package/components/calendar/themes/shared/bootstrap/year-month-view.bootstrap.css.js +1 -1
  32. package/components/calendar/themes/shared/bootstrap/year-month-view.bootstrap.css.js.map +1 -1
  33. package/components/calendar/themes/shared/fluent/calendar.fluent.css.js +1 -1
  34. package/components/calendar/themes/shared/fluent/calendar.fluent.css.js.map +1 -1
  35. package/components/calendar/themes/shared/indigo/calendar.indigo.css.js +1 -1
  36. package/components/calendar/themes/shared/indigo/calendar.indigo.css.js.map +1 -1
  37. package/components/calendar/themes/shared/material/calendar.material.css.js +1 -1
  38. package/components/calendar/themes/shared/material/calendar.material.css.js.map +1 -1
  39. package/components/calendar/themes/year-month-view.base.css.js +1 -1
  40. package/components/calendar/themes/year-month-view.base.css.js.map +1 -1
  41. package/components/card/themes/card.actions.base.css.js +1 -1
  42. package/components/card/themes/card.actions.base.css.js.map +1 -1
  43. package/components/card/themes/card.content.base.css.js +1 -1
  44. package/components/card/themes/card.content.base.css.js.map +1 -1
  45. package/components/card/themes/card.header.base.css.js +1 -1
  46. package/components/card/themes/card.header.base.css.js.map +1 -1
  47. package/components/card/themes/shared/actions/card.actions.bootstrap.css.js +1 -1
  48. package/components/card/themes/shared/actions/card.actions.bootstrap.css.js.map +1 -1
  49. package/components/card/themes/shared/actions/card.actions.indigo.css.js +1 -1
  50. package/components/card/themes/shared/actions/card.actions.indigo.css.js.map +1 -1
  51. package/components/card/themes/shared/container/card.bootstrap.css.js +1 -1
  52. package/components/card/themes/shared/container/card.bootstrap.css.js.map +1 -1
  53. package/components/card/themes/shared/container/card.indigo.css.js +1 -1
  54. package/components/card/themes/shared/container/card.indigo.css.js.map +1 -1
  55. package/components/card/themes/shared/content/card.content.bootstrap.css.js +1 -1
  56. package/components/card/themes/shared/content/card.content.bootstrap.css.js.map +1 -1
  57. package/components/card/themes/shared/header/card.header.fluent.css.js +1 -1
  58. package/components/card/themes/shared/header/card.header.fluent.css.js.map +1 -1
  59. package/components/card/themes/shared/header/card.header.indigo.css.js +1 -1
  60. package/components/card/themes/shared/header/card.header.indigo.css.js.map +1 -1
  61. package/components/carousel/themes/carousel.base.css.js +1 -1
  62. package/components/carousel/themes/carousel.base.css.js.map +1 -1
  63. package/components/carousel/themes/shared/carousel.indigo.css.js +1 -1
  64. package/components/carousel/themes/shared/carousel.indigo.css.js.map +1 -1
  65. package/components/chat/chat-input.d.ts +47 -11
  66. package/components/chat/chat-input.js +186 -72
  67. package/components/chat/chat-input.js.map +1 -1
  68. package/components/chat/chat-message.d.ts +17 -2
  69. package/components/chat/chat-message.js +126 -26
  70. package/components/chat/chat-message.js.map +1 -1
  71. package/components/chat/chat-state.d.ts +18 -135
  72. package/components/chat/chat-state.js +56 -398
  73. package/components/chat/chat-state.js.map +1 -1
  74. package/components/chat/chat.d.ts +36 -64
  75. package/components/chat/chat.js +163 -119
  76. package/components/chat/chat.js.map +1 -1
  77. package/components/chat/extras/markdown-renderer.d.ts +23 -0
  78. package/components/chat/extras/markdown-renderer.js +44 -0
  79. package/components/chat/extras/markdown-renderer.js.map +1 -0
  80. package/components/chat/message-attachments.d.ts +23 -5
  81. package/components/chat/message-attachments.js +94 -12
  82. package/components/chat/message-attachments.js.map +1 -1
  83. package/components/chat/themes/attachments.d.ts +2 -0
  84. package/components/chat/themes/attachments.js +14 -0
  85. package/components/chat/themes/attachments.js.map +1 -0
  86. package/components/chat/themes/chat.base.css.js +1 -1
  87. package/components/chat/themes/chat.base.css.js.map +1 -1
  88. package/components/chat/themes/dark/chat.indigo.css.js +1 -1
  89. package/components/chat/themes/dark/chat.indigo.css.js.map +1 -1
  90. package/components/chat/themes/input.base.css.js +1 -1
  91. package/components/chat/themes/input.base.css.js.map +1 -1
  92. package/components/chat/themes/light/chat.indigo.css.js +1 -1
  93. package/components/chat/themes/light/chat.indigo.css.js.map +1 -1
  94. package/components/chat/themes/light/chat.shared.css.js +1 -1
  95. package/components/chat/themes/light/chat.shared.css.js.map +1 -1
  96. package/components/chat/themes/message-attachments.base.css.js +1 -1
  97. package/components/chat/themes/message-attachments.base.css.js.map +1 -1
  98. package/components/chat/themes/message.base.css.js +1 -1
  99. package/components/chat/themes/message.base.css.js.map +1 -1
  100. package/components/chat/themes/shared/chat.bootstrap.css.js +1 -1
  101. package/components/chat/themes/shared/chat.bootstrap.css.js.map +1 -1
  102. package/components/chat/themes/shared/chat.common.css.js +1 -1
  103. package/components/chat/themes/shared/chat.common.css.js.map +1 -1
  104. package/components/chat/themes/shared/chat.fluent.css.js +3 -0
  105. package/components/chat/themes/shared/chat.fluent.css.js.map +1 -0
  106. package/components/chat/themes/shared/chat.indigo.css.js +1 -1
  107. package/components/chat/themes/shared/chat.indigo.css.js.map +1 -1
  108. package/components/chat/themes/shared/input/input.bootstrap.css.js +1 -1
  109. package/components/chat/themes/shared/input/input.bootstrap.css.js.map +1 -1
  110. package/components/chat/themes/shared/input/input.fluent.css.js +1 -1
  111. package/components/chat/themes/shared/input/input.fluent.css.js.map +1 -1
  112. package/components/chat/themes/shared/input/input.material.css.js +1 -1
  113. package/components/chat/themes/shared/input/input.material.css.js.map +1 -1
  114. package/components/chat/themes/shared/message-attachments/message-attachments.common.css.js +3 -0
  115. package/components/chat/themes/shared/message-attachments/message-attachments.common.css.js.map +1 -0
  116. package/components/chat/themes/shared/message-attachments/message-attachments.indigo.css.js +3 -0
  117. package/components/chat/themes/shared/message-attachments/message-attachments.indigo.css.js.map +1 -0
  118. package/components/chat/themes/themes.js +3 -2
  119. package/components/chat/themes/themes.js.map +1 -1
  120. package/components/chat/types.d.ts +26 -133
  121. package/components/chat/types.js +1 -14
  122. package/components/chat/types.js.map +1 -1
  123. package/components/chat/utils.d.ts +16 -0
  124. package/components/chat/utils.js +86 -0
  125. package/components/chat/utils.js.map +1 -0
  126. package/components/checkbox/checkbox-base.d.ts +1 -1
  127. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js +1 -1
  128. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js.map +1 -1
  129. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js +1 -1
  130. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js.map +1 -1
  131. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js +1 -1
  132. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js.map +1 -1
  133. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js +1 -1
  134. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js.map +1 -1
  135. package/components/chip/themes/shared/chip.indigo.css.js +1 -1
  136. package/components/chip/themes/shared/chip.indigo.css.js.map +1 -1
  137. package/components/combo/themes/combo-item.base.css.js +1 -1
  138. package/components/combo/themes/combo-item.base.css.js.map +1 -1
  139. package/components/combo/themes/combo.base.css.js +1 -1
  140. package/components/combo/themes/combo.base.css.js.map +1 -1
  141. package/components/combo/themes/shared/combo.bootstrap.css.js +1 -1
  142. package/components/combo/themes/shared/combo.bootstrap.css.js.map +1 -1
  143. package/components/combo/themes/shared/combo.fluent.css.js +1 -1
  144. package/components/combo/themes/shared/combo.fluent.css.js.map +1 -1
  145. package/components/combo/themes/shared/combo.indigo.css.js +1 -1
  146. package/components/combo/themes/shared/combo.indigo.css.js.map +1 -1
  147. package/components/combo/themes/shared/combo.material.css.js +1 -1
  148. package/components/combo/themes/shared/combo.material.css.js.map +1 -1
  149. package/components/common/context.d.ts +4 -1
  150. package/components/common/context.js +2 -1
  151. package/components/common/context.js.map +1 -1
  152. package/components/common/i18n/chat.resources.d.ts +4 -4
  153. package/components/common/i18n/chat.resources.js +4 -4
  154. package/components/common/i18n/chat.resources.js.map +1 -1
  155. package/components/common/util.d.ts +8 -0
  156. package/components/common/util.js +33 -1
  157. package/components/common/util.js.map +1 -1
  158. package/components/date-picker/themes/date-picker.base.css.js +1 -1
  159. package/components/date-picker/themes/date-picker.base.css.js.map +1 -1
  160. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js +1 -1
  161. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js.map +1 -1
  162. package/components/date-picker/themes/shared/date-picker.common.css.js +1 -1
  163. package/components/date-picker/themes/shared/date-picker.common.css.js.map +1 -1
  164. package/components/date-picker/themes/shared/date-picker.fluent.css.js +1 -1
  165. package/components/date-picker/themes/shared/date-picker.fluent.css.js.map +1 -1
  166. package/components/date-picker/themes/shared/date-picker.indigo.css.js +1 -1
  167. package/components/date-picker/themes/shared/date-picker.indigo.css.js.map +1 -1
  168. package/components/date-range-picker/date-range-picker.base.css.js +1 -1
  169. package/components/date-range-picker/date-range-picker.base.css.js.map +1 -1
  170. package/components/date-range-picker/date-range-picker.d.ts +1 -1
  171. package/components/date-range-picker/predefined-ranges-area.base.css.js +1 -1
  172. package/components/date-range-picker/predefined-ranges-area.base.css.js.map +1 -1
  173. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js +1 -1
  174. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js.map +1 -1
  175. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js +1 -1
  176. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js.map +1 -1
  177. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js +1 -1
  178. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js.map +1 -1
  179. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js +1 -1
  180. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js.map +1 -1
  181. package/components/dialog/themes/dialog.base.css.js +1 -1
  182. package/components/dialog/themes/dialog.base.css.js.map +1 -1
  183. package/components/dialog/themes/shared/dialog.bootstrap.css.js +1 -1
  184. package/components/dialog/themes/shared/dialog.bootstrap.css.js.map +1 -1
  185. package/components/dialog/themes/shared/dialog.common.css.js +1 -1
  186. package/components/dialog/themes/shared/dialog.common.css.js.map +1 -1
  187. package/components/dialog/themes/shared/dialog.fluent.css.js +1 -1
  188. package/components/dialog/themes/shared/dialog.fluent.css.js.map +1 -1
  189. package/components/dialog/themes/shared/dialog.indigo.css.js +1 -1
  190. package/components/dialog/themes/shared/dialog.indigo.css.js.map +1 -1
  191. package/components/dropdown/themes/dropdown-item.base.css.js +1 -1
  192. package/components/dropdown/themes/dropdown-item.base.css.js.map +1 -1
  193. package/components/dropdown/themes/shared/dropdown.indigo.css.js +1 -1
  194. package/components/dropdown/themes/shared/dropdown.indigo.css.js.map +1 -1
  195. package/components/dropdown/themes/shared/item/dropdown-item.indigo.css.js +1 -1
  196. package/components/dropdown/themes/shared/item/dropdown-item.indigo.css.js.map +1 -1
  197. package/components/expansion-panel/themes/expansion-panel.base.css.js +1 -1
  198. package/components/expansion-panel/themes/expansion-panel.base.css.js.map +1 -1
  199. package/components/expansion-panel/themes/shared/expansion-panel.indigo.css.js +1 -1
  200. package/components/expansion-panel/themes/shared/expansion-panel.indigo.css.js.map +1 -1
  201. package/components/file-input/file-input.d.ts +0 -4
  202. package/components/file-input/file-input.js +12 -15
  203. package/components/file-input/file-input.js.map +1 -1
  204. package/components/file-input/themes/shared/file-input.material.css.js +1 -1
  205. package/components/file-input/themes/shared/file-input.material.css.js.map +1 -1
  206. package/components/icon/icon-references.js +130 -0
  207. package/components/icon/icon-references.js.map +1 -1
  208. package/components/icon/internal-icons-lib.js +66 -0
  209. package/components/icon/internal-icons-lib.js.map +1 -1
  210. package/components/input/input.d.ts +0 -4
  211. package/components/input/input.js +9 -11
  212. package/components/input/input.js.map +1 -1
  213. package/components/input/themes/shared/input.common.css.js +1 -1
  214. package/components/input/themes/shared/input.common.css.js.map +1 -1
  215. package/components/input/themes/shared/input.fluent.css.js +1 -1
  216. package/components/input/themes/shared/input.fluent.css.js.map +1 -1
  217. package/components/input/themes/shared/input.indigo.css.js +1 -1
  218. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  219. package/components/input/themes/shared/input.material.css.js +1 -1
  220. package/components/input/themes/shared/input.material.css.js.map +1 -1
  221. package/components/list/themes/dark/container/list.indigo.css.js +1 -1
  222. package/components/list/themes/dark/container/list.indigo.css.js.map +1 -1
  223. package/components/list/themes/dark/header/list-header.indigo.css.js +1 -1
  224. package/components/list/themes/dark/header/list-header.indigo.css.js.map +1 -1
  225. package/components/list/themes/dark/item/list-item.indigo.css.js +1 -1
  226. package/components/list/themes/dark/item/list-item.indigo.css.js.map +1 -1
  227. package/components/list/themes/light/container/list.indigo.css.js +1 -1
  228. package/components/list/themes/light/container/list.indigo.css.js.map +1 -1
  229. package/components/list/themes/light/header/list-header.indigo.css.js +1 -1
  230. package/components/list/themes/light/header/list-header.indigo.css.js.map +1 -1
  231. package/components/list/themes/light/item/list-item.indigo.css.js +1 -1
  232. package/components/list/themes/light/item/list-item.indigo.css.js.map +1 -1
  233. package/components/nav-drawer/themes/shared/container/nav-drawer.bootstrap.css.js +1 -1
  234. package/components/nav-drawer/themes/shared/container/nav-drawer.bootstrap.css.js.map +1 -1
  235. package/components/nav-drawer/themes/shared/container/nav-drawer.indigo.css.js +1 -1
  236. package/components/nav-drawer/themes/shared/container/nav-drawer.indigo.css.js.map +1 -1
  237. package/components/nav-drawer/themes/shared/container/nav-drawer.material.css.js +1 -1
  238. package/components/nav-drawer/themes/shared/container/nav-drawer.material.css.js.map +1 -1
  239. package/components/nav-drawer/themes/shared/header-item/header-item.bootstrap.css.js +1 -1
  240. package/components/nav-drawer/themes/shared/header-item/header-item.bootstrap.css.js.map +1 -1
  241. package/components/nav-drawer/themes/shared/header-item/header-item.fluent.css.js +1 -1
  242. package/components/nav-drawer/themes/shared/header-item/header-item.fluent.css.js.map +1 -1
  243. package/components/nav-drawer/themes/shared/header-item/header-item.indigo.css.js +1 -1
  244. package/components/nav-drawer/themes/shared/header-item/header-item.indigo.css.js.map +1 -1
  245. package/components/nav-drawer/themes/shared/header-item/header-item.material.css.js +1 -1
  246. package/components/nav-drawer/themes/shared/header-item/header-item.material.css.js.map +1 -1
  247. package/components/nav-drawer/themes/shared/item/item.bootstrap.css.js +1 -1
  248. package/components/nav-drawer/themes/shared/item/item.bootstrap.css.js.map +1 -1
  249. package/components/nav-drawer/themes/shared/item/item.fluent.css.js +1 -1
  250. package/components/nav-drawer/themes/shared/item/item.fluent.css.js.map +1 -1
  251. package/components/nav-drawer/themes/shared/item/item.indigo.css.js +1 -1
  252. package/components/nav-drawer/themes/shared/item/item.indigo.css.js.map +1 -1
  253. package/components/nav-drawer/themes/shared/item/item.material.css.js +1 -1
  254. package/components/nav-drawer/themes/shared/item/item.material.css.js.map +1 -1
  255. package/components/navbar/themes/navbar.base.css.js +1 -1
  256. package/components/navbar/themes/navbar.base.css.js.map +1 -1
  257. package/components/navbar/themes/shared/navbar.bootstrap.css.js +1 -1
  258. package/components/navbar/themes/shared/navbar.bootstrap.css.js.map +1 -1
  259. package/components/navbar/themes/shared/navbar.indigo.css.js +1 -1
  260. package/components/navbar/themes/shared/navbar.indigo.css.js.map +1 -1
  261. package/components/progress/themes/linear/shared/linear.progress.fluent.css.js +1 -1
  262. package/components/progress/themes/linear/shared/linear.progress.fluent.css.js.map +1 -1
  263. package/components/progress/themes/linear/shared/linear.progress.indigo.css.js +1 -1
  264. package/components/progress/themes/linear/shared/linear.progress.indigo.css.js.map +1 -1
  265. package/components/radio/themes/shared/radio.bootstrap.css.js +1 -1
  266. package/components/radio/themes/shared/radio.bootstrap.css.js.map +1 -1
  267. package/components/radio/themes/shared/radio.fluent.css.js +1 -1
  268. package/components/radio/themes/shared/radio.fluent.css.js.map +1 -1
  269. package/components/radio/themes/shared/radio.indigo.css.js +1 -1
  270. package/components/radio/themes/shared/radio.indigo.css.js.map +1 -1
  271. package/components/radio/themes/shared/radio.material.css.js +1 -1
  272. package/components/radio/themes/shared/radio.material.css.js.map +1 -1
  273. package/components/radio-group/themes/radio-group.base.css.js +1 -1
  274. package/components/radio-group/themes/radio-group.base.css.js.map +1 -1
  275. package/components/radio-group/themes/shared/radio-group.bootstrap.css.js +1 -1
  276. package/components/radio-group/themes/shared/radio-group.bootstrap.css.js.map +1 -1
  277. package/components/radio-group/themes/shared/radio-group.fluent.css.js +1 -1
  278. package/components/radio-group/themes/shared/radio-group.fluent.css.js.map +1 -1
  279. package/components/radio-group/themes/shared/radio-group.indigo.css.js +1 -1
  280. package/components/radio-group/themes/shared/radio-group.indigo.css.js.map +1 -1
  281. package/components/radio-group/themes/shared/radio-group.material.css.js +1 -1
  282. package/components/radio-group/themes/shared/radio-group.material.css.js.map +1 -1
  283. package/components/rating/themes/rating.base.css.js +1 -1
  284. package/components/rating/themes/rating.base.css.js.map +1 -1
  285. package/components/rating/themes/shared/rating.indigo.css.js +1 -1
  286. package/components/rating/themes/shared/rating.indigo.css.js.map +1 -1
  287. package/components/resize-container/resize-container.d.ts +1 -1
  288. package/components/select/select.js +0 -1
  289. package/components/select/select.js.map +1 -1
  290. package/components/select/themes/shared/select.bootstrap.css.js +1 -1
  291. package/components/select/themes/shared/select.bootstrap.css.js.map +1 -1
  292. package/components/select/themes/shared/select.fluent.css.js +1 -1
  293. package/components/select/themes/shared/select.fluent.css.js.map +1 -1
  294. package/components/select/themes/shared/select.indigo.css.js +1 -1
  295. package/components/select/themes/shared/select.indigo.css.js.map +1 -1
  296. package/components/select/themes/shared/select.material.css.js +1 -1
  297. package/components/select/themes/shared/select.material.css.js.map +1 -1
  298. package/components/slider/themes/shared/slider.common.css.js +1 -1
  299. package/components/slider/themes/shared/slider.common.css.js.map +1 -1
  300. package/components/slider/themes/slider.base.css.js +1 -1
  301. package/components/slider/themes/slider.base.css.js.map +1 -1
  302. package/components/snackbar/themes/shared/snackbar.indigo.css.js +1 -1
  303. package/components/snackbar/themes/shared/snackbar.indigo.css.js.map +1 -1
  304. package/components/snackbar/themes/snackbar.base.css.js +1 -1
  305. package/components/snackbar/themes/snackbar.base.css.js.map +1 -1
  306. package/components/stepper/step.d.ts +1 -1
  307. package/components/tabs/themes/shared/tab/tab.bootstrap.css.js +1 -1
  308. package/components/tabs/themes/shared/tab/tab.bootstrap.css.js.map +1 -1
  309. package/components/tabs/themes/shared/tab/tab.fluent.css.js +1 -1
  310. package/components/tabs/themes/shared/tab/tab.fluent.css.js.map +1 -1
  311. package/components/tabs/themes/shared/tab/tab.indigo.css.js +1 -1
  312. package/components/tabs/themes/shared/tab/tab.indigo.css.js.map +1 -1
  313. package/components/tabs/themes/shared/tab/tab.material.css.js +1 -1
  314. package/components/tabs/themes/shared/tab/tab.material.css.js.map +1 -1
  315. package/components/textarea/textarea.d.ts +1 -1
  316. package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
  317. package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
  318. package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
  319. package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
  320. package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
  321. package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
  322. package/components/textarea/themes/shared/textarea.material.css.js +1 -1
  323. package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
  324. package/components/textarea/themes/textarea.base.css.js +1 -1
  325. package/components/textarea/themes/textarea.base.css.js.map +1 -1
  326. package/components/tile-manager/resize-state.js +1 -1
  327. package/components/tile-manager/resize-state.js.map +1 -1
  328. package/components/toast/themes/shared/toast.bootstrap.css.js +1 -1
  329. package/components/toast/themes/shared/toast.bootstrap.css.js.map +1 -1
  330. package/components/toast/themes/shared/toast.common.css.js +1 -1
  331. package/components/toast/themes/shared/toast.common.css.js.map +1 -1
  332. package/components/toast/themes/shared/toast.fluent.css.js +1 -1
  333. package/components/toast/themes/shared/toast.fluent.css.js.map +1 -1
  334. package/components/toast/themes/toast.base.css.js +1 -1
  335. package/components/toast/themes/toast.base.css.js.map +1 -1
  336. package/components/tooltip/themes/tooltip.base.css.js +1 -1
  337. package/components/tooltip/themes/tooltip.base.css.js.map +1 -1
  338. package/components/tree/themes/item.base.css.js +1 -1
  339. package/components/tree/themes/item.base.css.js.map +1 -1
  340. package/components/tree/themes/shared/item.common.css.js +1 -1
  341. package/components/tree/themes/shared/item.common.css.js.map +1 -1
  342. package/components/tree/themes/shared/item.indigo.css.js +1 -1
  343. package/components/tree/themes/shared/item.indigo.css.js.map +1 -1
  344. package/components/tree/themes/shared/item.material.css.js +1 -1
  345. package/components/tree/themes/shared/item.material.css.js.map +1 -1
  346. package/custom-elements.json +24401 -24643
  347. package/extras/index.d.ts +1 -0
  348. package/extras/index.js +2 -0
  349. package/extras/index.js.map +1 -0
  350. package/igniteui-webcomponents.css-data.json +1 -1
  351. package/igniteui-webcomponents.html-data.json +1 -1
  352. package/index.d.ts +1 -3
  353. package/index.js +0 -2
  354. package/index.js.map +1 -1
  355. package/package.json +6 -2
  356. package/web-types.json +2 -2
  357. package/components/chat/assets/file.png +0 -0
  358. package/components/chat/assets/json.png +0 -0
  359. package/components/chat/assets/link.png +0 -0
  360. package/components/chat/chat-message-list.d.ts +0 -70
  361. package/components/chat/chat-message-list.js +0 -89
  362. package/components/chat/chat-message-list.js.map +0 -1
  363. package/components/chat/chat-renderer.d.ts +0 -14
  364. package/components/chat/chat-renderer.js +0 -39
  365. package/components/chat/chat-renderer.js.map +0 -1
  366. package/components/chat/markdown-renderer.d.ts +0 -72
  367. package/components/chat/markdown-renderer.js +0 -71
  368. package/components/chat/markdown-renderer.js.map +0 -1
  369. package/components/chat/plain-text-renderer.d.ts +0 -15
  370. package/components/chat/plain-text-renderer.js +0 -7
  371. package/components/chat/plain-text-renderer.js.map +0 -1
  372. package/components/chat/themes/message-list.base.css.js +0 -3
  373. package/components/chat/themes/message-list.base.css.js.map +0 -1
  374. package/components/chat/themes/shared/message-attachments.common.css.js +0 -3
  375. package/components/chat/themes/shared/message-attachments.common.css.js.map +0 -1
  376. package/components/chat/themes/shared/message-list.common.css.js +0 -3
  377. package/components/chat/themes/shared/message-list.common.css.js.map +0 -1
  378. /package/components/chat/themes/{message-list.base.css.d.ts → shared/chat.fluent.css.d.ts} +0 -0
  379. /package/components/chat/themes/shared/{message-attachments.common.css.d.ts → message-attachments/message-attachments.common.css.d.ts} +0 -0
  380. /package/components/chat/themes/shared/{message-list.common.css.d.ts → message-attachments/message-attachments.indigo.css.d.ts} +0 -0
@@ -5,7 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { consume } from '@lit/context';
8
- import { adoptStyles, html, LitElement, nothing } from 'lit';
8
+ import { html, LitElement, nothing } from 'lit';
9
9
  import { property } from 'lit/decorators.js';
10
10
  import { until } from 'lit/directives/until.js';
11
11
  import { addThemingController } from '../../theming/theming-controller.js';
@@ -13,34 +13,149 @@ import IgcAvatarComponent from '../avatar/avatar.js';
13
13
  import { chatContext } from '../common/context.js';
14
14
  import { registerComponent } from '../common/definitions/register.js';
15
15
  import { partMap } from '../common/part-map.js';
16
+ import { isEmpty } from '../common/util.js';
16
17
  import IgcTooltipComponent from '../tooltip/tooltip.js';
17
18
  import IgcMessageAttachmentsComponent from './message-attachments.js';
18
19
  import { styles } from './themes/message.base.css.js';
19
20
  import { all } from './themes/message.js';
20
21
  import { styles as shared } from './themes/shared/chat-message/chat-message.common.css.js';
22
+ import { chatMessageAdoptPageStyles, showChatActionsTooltip } from './utils.js';
23
+ const LIKE_INACTIVE = 'thumb_up_inactive';
24
+ const LIKE_ACTIVE = 'thumb_up_active';
25
+ const DISLIKE_INACTIVE = 'thumb_down_inactive';
26
+ const DISLIKE_ACTIVE = 'thumb_down_active';
21
27
  class IgcChatMessageComponent extends LitElement {
22
28
  static register() {
23
29
  registerComponent(IgcChatMessageComponent, IgcMessageAttachmentsComponent, IgcAvatarComponent, IgcTooltipComponent);
24
30
  }
25
31
  constructor() {
26
32
  super();
33
+ this._defaults = Object.freeze({
34
+ message: () => this._renderMessage(),
35
+ messageHeader: () => this._renderHeader(),
36
+ messageContent: () => this._renderContent(),
37
+ messageAttachments: () => this._renderAttachments(),
38
+ messageActions: () => this._renderActions(),
39
+ });
27
40
  addThemingController(this, all);
28
41
  }
29
42
  firstUpdated() {
30
- adoptPageStyles(this);
43
+ chatMessageAdoptPageStyles(this);
44
+ }
45
+ _getRenderer(name) {
46
+ return this._state.options?.renderers
47
+ ? (this._state.options.renderers[name] ?? this._defaults[name])
48
+ : this._defaults[name];
49
+ }
50
+ _handleMessageActionClick(event) {
51
+ const targetButton = event.target;
52
+ const button = targetButton.closest('igc-icon-button');
53
+ if (!button)
54
+ return;
55
+ let reaction = button.getAttribute('name');
56
+ if (this.message) {
57
+ if (reaction === LIKE_INACTIVE) {
58
+ reaction = LIKE_ACTIVE;
59
+ this.message.reactions = [reaction];
60
+ }
61
+ else if (reaction === DISLIKE_INACTIVE) {
62
+ reaction = DISLIKE_ACTIVE;
63
+ this.message.reactions = [reaction];
64
+ }
65
+ else if (reaction === this.message.reactions?.[0]) {
66
+ reaction = null;
67
+ this.message.reactions = [];
68
+ }
69
+ this.requestUpdate();
70
+ }
71
+ this._state.emitEvent('igcMessageReact', {
72
+ detail: { message: this.message, reaction },
73
+ });
74
+ }
75
+ _renderHeader() {
76
+ return nothing;
77
+ }
78
+ _renderContent() {
79
+ return this.message?.text
80
+ ? html `<pre part="plain-text">${this.message.text}</pre>`
81
+ : nothing;
82
+ }
83
+ _renderActions() {
84
+ const isSent = this.message?.sender === this._state.currentUserId;
85
+ const hasText = this.message?.text.trim();
86
+ const isTyping = this._state._isTyping;
87
+ const isLastMessage = this.message === this._state.messages.at(-1);
88
+ const resourceStrings = this._state.resourceStrings;
89
+ if (isSent || !hasText || (isLastMessage && isTyping)) {
90
+ return nothing;
91
+ }
92
+ return html `
93
+ <div @click=${this._handleMessageActionClick}>
94
+ ${this._renderActionButton('copy_content', resourceStrings.reactionCopy)}
95
+ ${this._renderActionButton(this.message?.reactions?.includes(LIKE_ACTIVE)
96
+ ? LIKE_ACTIVE
97
+ : LIKE_INACTIVE, resourceStrings.reactionLike)}
98
+ ${this._renderActionButton(this.message?.reactions?.includes(DISLIKE_ACTIVE)
99
+ ? DISLIKE_ACTIVE
100
+ : DISLIKE_INACTIVE, resourceStrings.reactionDislike)}
101
+ ${this._renderActionButton('regenerate', resourceStrings.reactionRegenerate)}
102
+ </div>
103
+ `;
104
+ }
105
+ _renderActionButton(name, tooltipMessage) {
106
+ return html `
107
+ <igc-icon-button
108
+ id=${`${name}-button`}
109
+ name=${name}
110
+ variant="flat"
111
+ @pointerenter=${({ target }) => showChatActionsTooltip(target, tooltipMessage)}
112
+ @focus=${({ target }) => showChatActionsTooltip(target, tooltipMessage)}
113
+ ></igc-icon-button>
114
+ `;
115
+ }
116
+ _renderAttachments() {
117
+ return isEmpty(this.message?.attachments ?? [])
118
+ ? nothing
119
+ : html `
120
+ <igc-message-attachments
121
+ .message=${this.message}
122
+ ></igc-message-attachments>
123
+ `;
124
+ }
125
+ _renderMessage() {
126
+ return this.message
127
+ ? html `${this._renderHeader()}${this._renderContent()}${this._renderAttachments()}${this._renderActions()}`
128
+ : nothing;
31
129
  }
32
130
  render() {
131
+ if (!this.message) {
132
+ return nothing;
133
+ }
33
134
  const parts = {
34
135
  'message-container': true,
35
- sent: this._chatState?.currentUserId === this.message?.sender,
136
+ sent: this._state.isCurrentUserMessage(this.message),
36
137
  };
37
- return this.message && this._chatState?.chatRenderer
38
- ? html `
39
- <div part=${partMap(parts)}>
40
- ${until(this._chatState.chatRenderer.render(this.message))}
41
- </div>
42
- `
43
- : nothing;
138
+ const options = this._state.options;
139
+ const ctx = {
140
+ param: this.message,
141
+ defaults: this._defaults,
142
+ options,
143
+ };
144
+ if (options?.renderers?.message) {
145
+ return html `
146
+ <div part=${partMap(parts)}>
147
+ ${until(options.renderers.message(ctx))}
148
+ </div>
149
+ `;
150
+ }
151
+ return html `
152
+ <div part=${partMap(parts)}>
153
+ ${until(this._getRenderer('messageHeader')(ctx))}
154
+ ${until(this._getRenderer('messageContent')(ctx))}
155
+ ${until(this._getRenderer('messageAttachments')(ctx))}
156
+ ${until(this._getRenderer('messageActions')(ctx))}
157
+ </div>
158
+ `;
44
159
  }
45
160
  }
46
161
  IgcChatMessageComponent.tagName = 'igc-chat-message';
@@ -48,23 +163,8 @@ IgcChatMessageComponent.styles = [styles, shared];
48
163
  export default IgcChatMessageComponent;
49
164
  __decorate([
50
165
  consume({ context: chatContext, subscribe: true })
51
- ], IgcChatMessageComponent.prototype, "_chatState", void 0);
166
+ ], IgcChatMessageComponent.prototype, "_state", void 0);
52
167
  __decorate([
53
168
  property({ attribute: false })
54
169
  ], IgcChatMessageComponent.prototype, "message", void 0);
55
- function adoptPageStyles(message) {
56
- const sheets = [];
57
- for (const sheet of document.styleSheets) {
58
- try {
59
- const constructed = new CSSStyleSheet();
60
- for (const rule of sheet.cssRules) {
61
- constructed.insertRule(rule.cssText);
62
- }
63
- sheets.push(constructed);
64
- }
65
- catch { }
66
- }
67
- const ctor = message.constructor;
68
- adoptStyles(message.shadowRoot, [...ctor.elementStyles, ...sheets]);
69
- }
70
170
  //# sourceMappingURL=chat-message.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-message.js","sourceRoot":"","sources":["../../../src/components/chat/chat-message.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,kBAAkB,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AAExD,OAAO,8BAA8B,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,yDAAyD,CAAC;AAqB3F,MAAqB,uBAAwB,SAAQ,UAAU;IAKtD,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CACf,uBAAuB,EACvB,8BAA8B,EAC9B,kBAAkB,EAClB,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAcD;QACE,KAAK,EAAE,CAAC;QACR,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IAEkB,YAAY;QAC7B,eAAe,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAQkB,MAAM;QACvB,MAAM,KAAK,GAAG;YACZ,mBAAmB,EAAE,IAAI;YACzB,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,aAAa,KAAK,IAAI,CAAC,OAAO,EAAE,MAAM;SAC9D,CAAC;QAEF,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,YAAY;YAClD,CAAC,CAAC,IAAI,CAAA;sBACU,OAAO,CAAC,KAAK,CAAC;cACtB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;SAE7D;YACH,CAAC,CAAC,OAAO,CAAC;IACd,CAAC;;AArDsB,+BAAO,GAAG,kBAAkB,CAAC;AAC7B,8BAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;eAF9B,uBAAuB;AAkBlC;IADP,OAAO,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;2DACpB;AAMxB;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;wDACH;AAwC9B,SAAS,eAAe,CAAC,OAAgC;IACvD,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,aAAa,EAAE,CAAC;YACxC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAClC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,WAAgC,CAAC;IACtD,WAAW,CAAC,OAAO,CAAC,UAAW,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;AACvE,CAAC","sourcesContent":["import { consume } from '@lit/context';\nimport { adoptStyles, html, LitElement, nothing } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { until } from 'lit/directives/until.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport IgcAvatarComponent from '../avatar/avatar.js';\nimport { chatContext } from '../common/context.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { partMap } from '../common/part-map.js';\nimport IgcTooltipComponent from '../tooltip/tooltip.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 { IgcMessage } from './types.js';\n\n/**\n * A chat message component for displaying individual messages in `<igc-chat>`.\n *\n * @element igc-chat-message\n *\n * @fires igcMessageReact - Fired when a message is reacted to.\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 IgcAvatarComponent,\n IgcTooltipComponent\n );\n }\n\n /**\n * Injected chat state context. Provides message data, user info, and options.\n */\n @consume({ context: chatContext, subscribe: true })\n private _chatState?: ChatState;\n\n /**\n * The chat message to render.\n */\n @property({ attribute: false })\n public message?: IgcMessage;\n\n constructor() {\n super();\n addThemingController(this, all);\n }\n\n protected override firstUpdated(): void {\n adoptPageStyles(this);\n }\n\n /**\n * Renders the chat message template.\n * - Applies 'sent' CSS class if the message sender matches current user.\n * - Uses markdown rendering if configured.\n * - Renders attachments and custom templates if provided.\n */\n protected override render() {\n const parts = {\n 'message-container': true,\n sent: this._chatState?.currentUserId === this.message?.sender,\n };\n\n return this.message && this._chatState?.chatRenderer\n ? html`\n <div part=${partMap(parts)}>\n ${until(this._chatState.chatRenderer.render(this.message))}\n </div>\n `\n : nothing;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-chat-message': IgcChatMessageComponent;\n }\n}\n\n// REVIEW: Maybe put that behind a configuration flag as this is nasty.\nfunction adoptPageStyles(message: IgcChatMessageComponent): void {\n const sheets: CSSStyleSheet[] = [];\n\n for (const sheet of document.styleSheets) {\n try {\n const constructed = new CSSStyleSheet();\n for (const rule of sheet.cssRules) {\n constructed.insertRule(rule.cssText);\n }\n sheets.push(constructed);\n } catch {}\n }\n\n const ctor = message.constructor as typeof LitElement;\n adoptStyles(message.shadowRoot!, [...ctor.elementStyles, ...sheets]);\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 { consume } from '@lit/context';\nimport { html, LitElement, nothing } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { until } from 'lit/directives/until.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport IgcAvatarComponent from '../avatar/avatar.js';\nimport { chatContext } from '../common/context.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { partMap } from '../common/part-map.js';\nimport { isEmpty } from '../common/util.js';\nimport IgcTooltipComponent from '../tooltip/tooltip.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 { ChatTemplateRenderer, IgcMessage } from './types.js';\nimport { chatMessageAdoptPageStyles, showChatActionsTooltip } from './utils.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';\n\ntype DefaultMessageRenderers = {\n message: ChatTemplateRenderer<IgcMessage>;\n messageHeader: ChatTemplateRenderer<IgcMessage>;\n messageContent: ChatTemplateRenderer<IgcMessage>;\n messageAttachments: ChatTemplateRenderer<IgcMessage>;\n messageActions: ChatTemplateRenderer<IgcMessage>;\n};\n\n/**\n * A chat message component for displaying individual messages in `<igc-chat>`.\n *\n * @element igc-chat-message\n *\n * @fires igcMessageReact - Fired when a message is reacted to.\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 IgcAvatarComponent,\n IgcTooltipComponent\n );\n }\n\n /**\n * Injected chat state context. Provides message data, user info, and options.\n */\n @consume({ context: chatContext, subscribe: true })\n private readonly _state!: ChatState;\n\n private readonly _defaults = Object.freeze<DefaultMessageRenderers>({\n message: () => this._renderMessage(),\n messageHeader: () => this._renderHeader(),\n messageContent: () => this._renderContent(),\n messageAttachments: () => this._renderAttachments(),\n messageActions: () => this._renderActions(),\n });\n\n /**\n * The chat message to render.\n */\n @property({ attribute: false })\n public message?: IgcMessage;\n\n constructor() {\n super();\n addThemingController(this, all);\n }\n\n protected override firstUpdated(): void {\n chatMessageAdoptPageStyles(this);\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 _handleMessageActionClick(event: PointerEvent): void {\n const targetButton = event.target as HTMLElement;\n const button = targetButton.closest('igc-icon-button');\n if (!button) return;\n\n let reaction = button.getAttribute('name');\n if (this.message) {\n if (reaction === LIKE_INACTIVE) {\n reaction = LIKE_ACTIVE;\n this.message.reactions = [reaction];\n } else if (reaction === DISLIKE_INACTIVE) {\n reaction = DISLIKE_ACTIVE;\n this.message.reactions = [reaction];\n } else if (reaction === this.message.reactions?.[0]) {\n reaction = null;\n this.message.reactions = [];\n }\n\n this.requestUpdate();\n }\n\n this._state.emitEvent('igcMessageReact', {\n detail: { message: this.message, reaction },\n });\n }\n\n private _renderHeader() {\n return nothing;\n }\n\n private _renderContent() {\n return this.message?.text\n ? html`<pre part=\"plain-text\">${this.message.text}</pre>`\n : nothing;\n }\n\n private _renderActions() {\n const isSent = this.message?.sender === this._state.currentUserId;\n const hasText = this.message?.text.trim();\n const isTyping = this._state._isTyping;\n const isLastMessage = this.message === this._state.messages.at(-1);\n const resourceStrings = this._state.resourceStrings!;\n\n if (isSent || !hasText || (isLastMessage && isTyping)) {\n return nothing;\n }\n\n return html`\n <div @click=${this._handleMessageActionClick}>\n ${this._renderActionButton(\n 'copy_content',\n resourceStrings.reactionCopy\n )}\n ${this._renderActionButton(\n this.message?.reactions?.includes(LIKE_ACTIVE)\n ? LIKE_ACTIVE\n : LIKE_INACTIVE,\n resourceStrings.reactionLike\n )}\n ${this._renderActionButton(\n this.message?.reactions?.includes(DISLIKE_ACTIVE)\n ? DISLIKE_ACTIVE\n : DISLIKE_INACTIVE,\n resourceStrings.reactionDislike\n )}\n ${this._renderActionButton(\n 'regenerate',\n resourceStrings.reactionRegenerate\n )}\n </div>\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 showChatActionsTooltip(target as Element, tooltipMessage)}\n @focus=${({ target }: FocusEvent) =>\n showChatActionsTooltip(target as Element, tooltipMessage)}\n ></igc-icon-button>\n `;\n }\n\n // Default rendering logic for attachments\n private _renderAttachments() {\n return isEmpty(this.message?.attachments ?? [])\n ? nothing\n : html`\n <igc-message-attachments\n .message=${this.message}\n ></igc-message-attachments>\n `;\n }\n\n /**\n * Default message template used when no custom template is provided.\n * Renders the message text, sanitized for security.\n * @param message The chat message to render\n * @returns TemplateResult containing the rendered message\n */\n private _renderMessage() {\n return this.message\n ? html`${this._renderHeader()}${this._renderContent()}${this._renderAttachments()}${this._renderActions()}`\n : nothing;\n }\n\n /**\n * Renders the chat message template.\n * - Applies 'sent' CSS class if the message sender matches current user.\n * - Uses markdown rendering if configured.\n * - Renders attachments and custom templates if provided.\n */\n protected override render() {\n if (!this.message) {\n return nothing;\n }\n\n const parts = {\n 'message-container': true,\n sent: this._state.isCurrentUserMessage(this.message),\n };\n\n const options = this._state.options;\n const ctx = {\n param: this.message,\n defaults: this._defaults,\n options,\n };\n\n if (options?.renderers?.message) {\n return html`\n <div part=${partMap(parts)}>\n ${until(options.renderers.message(ctx))}\n </div>\n `;\n }\n\n return html`\n <div part=${partMap(parts)}>\n ${until(this._getRenderer('messageHeader')(ctx))}\n ${until(this._getRenderer('messageContent')(ctx))}\n ${until(this._getRenderer('messageAttachments')(ctx))}\n ${until(this._getRenderer('messageActions')(ctx))}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-chat-message': IgcChatMessageComponent;\n }\n}\n"]}
@@ -1,9 +1,8 @@
1
- import { type Ref } from 'lit/directives/ref.js';
2
1
  import type IgcTextareaComponent from '../textarea/textarea.js';
3
2
  import type IgcChatComponent from './chat.js';
4
3
  import type { IgcChatComponentEventMap } from './chat.js';
5
- import { DefaultChatRenderer } from './chat-renderer.js';
6
- import { type IgcChatOptions, type IgcChatTemplates, type IgcMessage, type IgcMessageAttachment } from './types.js';
4
+ import type { IgcChatOptions, IgcMessage, IgcMessageAttachment } from './types.js';
5
+ import { type ChatAcceptedFileTypes } from './utils.js';
7
6
  /**
8
7
  * Internal state manager for the `<igc-chat>` component.
9
8
  *
@@ -11,6 +10,8 @@ import { type IgcChatOptions, type IgcChatTemplates, type IgcMessage, type IgcMe
11
10
  */
12
11
  export declare class ChatState {
13
12
  private readonly _host;
13
+ private readonly _contextUpdateFn;
14
+ private readonly _userInputContextUpdateFn;
14
15
  /** Reference to the text area input component */
15
16
  private _textArea;
16
17
  /** The current list of messages */
@@ -29,80 +30,11 @@ export declare class ChatState {
29
30
  private _suggestionsPosition;
30
31
  /** Default time in milliseconds before dispatching stop typing event */
31
32
  private _stopTypingDelay;
32
- private _isTyping;
33
+ _isTyping: boolean;
33
34
  private _lastTyped;
34
- private _fileIcon;
35
- private _jsonIcon;
36
- private _linkIcon;
37
- private readonly _textAreaRef;
38
- private readonly _attachmentsButtonInputRef;
39
- private readonly _sharedTooltipRef;
40
- private _chatRenderer?;
41
- private resourceStrings;
42
- /** Default templates of the chat components */
43
- private _defaultTemplates;
44
- /** The tooltip component used for showing action tooltips. */
45
- private get _sharedTooltip();
46
- private getIconName;
47
- /**
48
- * Default attachments area template used when no custom template is provided.
49
- * Renders the list of input attachments as chips.
50
- * @returns TemplateResult containing the attachments area
51
- */
52
- private renderDefaultAttachmentsArea;
53
- /**
54
- * Default text area template used when no custom template is provided.
55
- * Renders a text area for user input.
56
- * @returns TemplateResult containing the text area
57
- */
58
- private renderDefaultTextArea;
59
- /**
60
- * Default file upload button template used when no custom template is provided.
61
- * Renders a file input for attaching files.
62
- * @returns TemplateResult containing the file upload button
63
- */
64
- private renderDefaultFileUploadButton;
65
- /**
66
- * Default send button template used when no custom template is provided.
67
- * Renders a send button that submits the current input value and attachments.
68
- * @returns TemplateResult containing the send button
69
- */
70
- private renderDefaultSendButton;
71
- private renderDefaultActionsArea;
72
- /**
73
- * Default typing indicator template used when no custom template is provided.
74
- * Renders a simple typing indicator with three dots.
75
- * @returns TemplateResult containing the typing indicator
76
- */
77
- private renderDefaultTypingIndicator;
78
- /**
79
- * Default message template used when no custom template is provided.
80
- * Renders the message text, sanitized for security.
81
- * @param message The chat message to render
82
- * @returns TemplateResult containing the rendered message
83
- */
84
- private renderDefaultMessageTemplate;
85
- private renderDefaultAttachmentHeaderText;
86
- private handleHeaderClick;
87
- /**
88
- * Default attachment header template used when no custom template is provided.
89
- * Renders the attachment icon and name.
90
- * @param attachment The message attachment to render
91
- * @returns TemplateResult containing the rendered attachment header
92
- */
93
- private renderDefaultAttachmentHeader;
94
- /**
95
- * Default attachment content template used when no custom template is provided.
96
- * Renders the attachment content based on its type.
97
- * @param attachment The message attachment to render
98
- * @returns TemplateResult containing the rendered attachment content
99
- */
100
- private renderDefaultAttachmentContent;
101
- private renderDefaultMessageActionsTemplate;
102
- private handleMessageActionClick;
103
- private renderDefaultAttachmentTemplate;
104
- private renderDefaultAttachmentsTemplate;
105
- private showTooltip;
35
+ resourceStrings: import("../common/i18n/chat.resources.js").IgcChatResourceStrings;
36
+ get acceptedFileTypes(): ChatAcceptedFileTypes | null;
37
+ get disableAutoScroll(): boolean;
106
38
  /**
107
39
  * Gets the list of chat messages.
108
40
  */
@@ -139,10 +71,6 @@ export declare class ChatState {
139
71
  * Sets the text area component.
140
72
  */
141
73
  set textArea(value: IgcTextareaComponent);
142
- /**
143
- * Gets the text area component.
144
- */
145
- get textAreaRef(): Ref<IgcTextareaComponent>;
146
74
  /**
147
75
  * Gets the list of attachments currently attached to input.
148
76
  */
@@ -159,64 +87,33 @@ export declare class ChatState {
159
87
  * Sets the current input value and requests host update.
160
88
  */
161
89
  set inputValue(value: string);
162
- /** Returns all default templates applied in the chat component. */
163
- get defaultTemplates(): Required<IgcChatTemplates>;
164
- /** Sets the default templates applied in the chat component. */
165
- set defaultTemplates(templates: Required<IgcChatTemplates>);
166
- get mergedTemplates(): Required<IgcChatTemplates>;
167
- get chatRenderer(): DefaultChatRenderer | undefined;
168
- /**
169
- * Handles input text changes.
170
- * Updates internal inputValue and emits 'igcInputChange' event.
171
- * @param e Input event from the text area
172
- */
173
- private handleInput;
174
- /**
175
- * Creates an instance of ChatState.
176
- * @param chat The host `<igc-chat>` component.
177
- */
178
- constructor(chat: IgcChatComponent);
179
- /**
180
- * Emits a custom event from the host component.
181
- * @param name Event name (key of IgcChatComponentEventMap)
182
- * @param args Event detail or options
183
- * @returns true if event was not canceled, false otherwise
184
- */
185
- emitEvent: (name: keyof IgcChatComponentEventMap, args?: any) => boolean;
90
+ get hasInputValue(): boolean;
91
+ get hasInputAttachments(): boolean;
92
+ constructor(chat: IgcChatComponent, contextUpdateFn: () => unknown, userInputContextUpdateFn: () => unknown);
93
+ isCurrentUserMessage(message?: IgcMessage): boolean;
94
+ emitEvent(name: keyof IgcChatComponentEventMap, args?: any): boolean;
186
95
  /**
187
96
  * Adds a new chat message.
188
97
  * Emits 'igcMessageCreated' event which can be canceled to prevent adding.
189
98
  * Clears input value and attachments on success.
190
99
  * @param message Partial message object with optional id, sender, timestamp
191
100
  */
192
- addMessage: (message: {
193
- id?: string;
194
- text: string;
195
- sender?: string;
196
- timestamp?: Date;
197
- attachments?: IgcMessageAttachment[];
198
- }) => void;
101
+ addMessage(message: Partial<IgcMessage>): void;
199
102
  /**
200
103
  * Adds files as attachments to the input.
201
104
  * Emits 'igcAttachmentChange' event which can be canceled to prevent adding.
202
105
  * @param files Array of File objects to attach
203
106
  */
204
107
  attachFiles(files: File[]): void;
205
- private getURL;
206
- private isImageAttachment;
207
- private _fileIconMap;
208
- private getFileExtension;
108
+ isImageAttachment(attachment: IgcMessageAttachment): boolean;
209
109
  handleKeyDown: (e: KeyboardEvent) => void;
210
- private handleFocus;
211
- private handleBlur;
212
- private sendMessage;
213
- private handleFileUpload;
110
+ sendMessage: () => void;
214
111
  /**
215
112
  * Removes an attachment by index.
216
113
  * Emits 'igcAttachmentChange' event which can be canceled to prevent removal.
217
114
  * @param index Index of the attachment to remove
218
115
  */
219
- private removeAttachment;
116
+ removeAttachment: (index: number) => void;
220
117
  /**
221
118
  * Handles when a suggestion is clicked.
222
119
  * Adds the suggestion as a new message and focuses the text area.
@@ -232,19 +129,5 @@ export declare class ChatState {
232
129
  * Updates the internal cache for accepted file types.
233
130
  * Parses the acceptedFiles string option into extensions, mimeTypes, and wildcard types.
234
131
  */
235
- updateAcceptedTypesCache: () => void;
236
- /**
237
- * Checks if a file's type or extension is accepted by the chat's acceptedFiles setting.
238
- * @param file File object to check
239
- * @param type Optional MIME type override if no file provided
240
- * @returns True if accepted, false otherwise
241
- */
242
- isFileTypeAccepted: (file: File, type?: string) => boolean;
243
- /**
244
- * Checks if a slot is empty.
245
- * @param name Slot name to check
246
- * @returns True if the slot has content, false otherwise
247
- */
248
- hasSlotContent(name: string): boolean;
132
+ updateAcceptedTypesCache(): void;
249
133
  }
250
- export declare function createChatState(host: IgcChatComponent): ChatState;