igniteui-webcomponents 6.2.0 → 6.3.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/components/accordion/accordion.js +1 -4
  2. package/components/accordion/accordion.js.map +1 -1
  3. package/components/button/themes/button/button.base.css.js +1 -1
  4. package/components/button/themes/button/button.base.css.js.map +1 -1
  5. package/components/button/themes/button/shared/button.common.css.js +1 -1
  6. package/components/button/themes/button/shared/button.common.css.js.map +1 -1
  7. package/components/button/themes/button/shared/button.fluent.css.js +1 -1
  8. package/components/button/themes/button/shared/button.fluent.css.js.map +1 -1
  9. package/components/button/themes/button/shared/button.indigo.css.js +1 -1
  10. package/components/button/themes/button/shared/button.indigo.css.js.map +1 -1
  11. package/components/button/themes/icon-button/icon-button.base.css.js +1 -1
  12. package/components/button/themes/icon-button/icon-button.base.css.js.map +1 -1
  13. package/components/button/themes/icon-button/shared/icon-button.bootstrap.css.js +1 -1
  14. package/components/button/themes/icon-button/shared/icon-button.bootstrap.css.js.map +1 -1
  15. package/components/button/themes/icon-button/shared/icon-button.fluent.css.js +1 -1
  16. package/components/button/themes/icon-button/shared/icon-button.fluent.css.js.map +1 -1
  17. package/components/button/themes/icon-button/shared/icon-button.indigo.css.js +1 -1
  18. package/components/button/themes/icon-button/shared/icon-button.indigo.css.js.map +1 -1
  19. package/components/button/themes/icon-button/shared/icon-button.material.css.js +1 -1
  20. package/components/button/themes/icon-button/shared/icon-button.material.css.js.map +1 -1
  21. package/components/button-group/themes/shared/button/button.bootstrap.css.js +1 -1
  22. package/components/button-group/themes/shared/button/button.bootstrap.css.js.map +1 -1
  23. package/components/button-group/themes/shared/button/button.common.css.js +1 -1
  24. package/components/button-group/themes/shared/button/button.common.css.js.map +1 -1
  25. package/components/button-group/themes/shared/button/button.indigo.css.js +1 -1
  26. package/components/button-group/themes/shared/button/button.indigo.css.js.map +1 -1
  27. package/components/calendar/days-view/days-view.js +1 -3
  28. package/components/calendar/days-view/days-view.js.map +1 -1
  29. package/components/calendar/months-view/months-view.js +1 -3
  30. package/components/calendar/months-view/months-view.js.map +1 -1
  31. package/components/calendar/themes/year-month-view.base.css.js +1 -1
  32. package/components/calendar/themes/year-month-view.base.css.js.map +1 -1
  33. package/components/calendar/years-view/years-view.js +1 -3
  34. package/components/calendar/years-view/years-view.js.map +1 -1
  35. package/components/carousel/carousel.js +0 -3
  36. package/components/carousel/carousel.js.map +1 -1
  37. package/components/chat/assets/file.png +0 -0
  38. package/components/chat/assets/json.png +0 -0
  39. package/components/chat/assets/link.png +0 -0
  40. package/components/chat/chat-input.d.ts +54 -0
  41. package/components/chat/chat-input.js +137 -0
  42. package/components/chat/chat-input.js.map +1 -0
  43. package/components/chat/chat-message-list.d.ts +70 -0
  44. package/components/chat/chat-message-list.js +89 -0
  45. package/components/chat/chat-message-list.js.map +1 -0
  46. package/components/chat/chat-message.d.ts +47 -0
  47. package/components/chat/chat-message.js +70 -0
  48. package/components/chat/chat-message.js.map +1 -0
  49. package/components/chat/chat-renderer.d.ts +14 -0
  50. package/components/chat/chat-renderer.js +39 -0
  51. package/components/chat/chat-renderer.js.map +1 -0
  52. package/components/chat/chat-state.d.ts +250 -0
  53. package/components/chat/chat-state.js +538 -0
  54. package/components/chat/chat-state.js.map +1 -0
  55. package/components/chat/chat.d.ts +177 -0
  56. package/components/chat/chat.js +250 -0
  57. package/components/chat/chat.js.map +1 -0
  58. package/components/chat/markdown-renderer.d.ts +72 -0
  59. package/components/chat/markdown-renderer.js +71 -0
  60. package/components/chat/markdown-renderer.js.map +1 -0
  61. package/components/chat/message-attachments.d.ts +38 -0
  62. package/components/chat/message-attachments.js +49 -0
  63. package/components/chat/message-attachments.js.map +1 -0
  64. package/components/chat/plain-text-renderer.d.ts +15 -0
  65. package/components/chat/plain-text-renderer.js +7 -0
  66. package/components/chat/plain-text-renderer.js.map +1 -0
  67. package/components/chat/themes/chat.base.css.d.ts +1 -0
  68. package/components/chat/themes/chat.base.css.js +3 -0
  69. package/components/chat/themes/chat.base.css.js.map +1 -0
  70. package/components/chat/themes/dark/chat.bootstrap.css.d.ts +1 -0
  71. package/components/chat/themes/dark/chat.bootstrap.css.js +3 -0
  72. package/components/chat/themes/dark/chat.bootstrap.css.js.map +1 -0
  73. package/components/chat/themes/dark/chat.fluent.css.d.ts +1 -0
  74. package/components/chat/themes/dark/chat.fluent.css.js +3 -0
  75. package/components/chat/themes/dark/chat.fluent.css.js.map +1 -0
  76. package/components/chat/themes/dark/chat.indigo.css.d.ts +1 -0
  77. package/components/chat/themes/dark/chat.indigo.css.js +3 -0
  78. package/components/chat/themes/dark/chat.indigo.css.js.map +1 -0
  79. package/components/chat/themes/dark/chat.material.css.d.ts +1 -0
  80. package/components/chat/themes/dark/chat.material.css.js +3 -0
  81. package/components/chat/themes/dark/chat.material.css.js.map +1 -0
  82. package/components/chat/themes/input.base.css.d.ts +1 -0
  83. package/components/chat/themes/input.base.css.js +3 -0
  84. package/components/chat/themes/input.base.css.js.map +1 -0
  85. package/components/chat/themes/input.d.ts +2 -0
  86. package/components/chat/themes/input.js +35 -0
  87. package/components/chat/themes/input.js.map +1 -0
  88. package/components/chat/themes/light/chat.bootstrap.css.d.ts +1 -0
  89. package/components/chat/themes/light/chat.bootstrap.css.js +3 -0
  90. package/components/chat/themes/light/chat.bootstrap.css.js.map +1 -0
  91. package/components/chat/themes/light/chat.fluent.css.d.ts +1 -0
  92. package/components/chat/themes/light/chat.fluent.css.js +3 -0
  93. package/components/chat/themes/light/chat.fluent.css.js.map +1 -0
  94. package/components/chat/themes/light/chat.indigo.css.d.ts +1 -0
  95. package/components/chat/themes/light/chat.indigo.css.js +3 -0
  96. package/components/chat/themes/light/chat.indigo.css.js.map +1 -0
  97. package/components/chat/themes/light/chat.material.css.d.ts +1 -0
  98. package/components/chat/themes/light/chat.material.css.js +3 -0
  99. package/components/chat/themes/light/chat.material.css.js.map +1 -0
  100. package/components/chat/themes/light/chat.shared.css.d.ts +1 -0
  101. package/components/chat/themes/light/chat.shared.css.js +3 -0
  102. package/components/chat/themes/light/chat.shared.css.js.map +1 -0
  103. package/components/chat/themes/message-attachments.base.css.d.ts +1 -0
  104. package/components/chat/themes/message-attachments.base.css.js +3 -0
  105. package/components/chat/themes/message-attachments.base.css.js.map +1 -0
  106. package/components/chat/themes/message-list.base.css.d.ts +1 -0
  107. package/components/chat/themes/message-list.base.css.js +3 -0
  108. package/components/chat/themes/message-list.base.css.js.map +1 -0
  109. package/components/chat/themes/message.base.css.d.ts +1 -0
  110. package/components/chat/themes/message.base.css.js +3 -0
  111. package/components/chat/themes/message.base.css.js.map +1 -0
  112. package/components/chat/themes/message.d.ts +2 -0
  113. package/components/chat/themes/message.js +28 -0
  114. package/components/chat/themes/message.js.map +1 -0
  115. package/components/chat/themes/shared/chat-message/chat-message.bootstrap.css.d.ts +1 -0
  116. package/components/chat/themes/shared/chat-message/chat-message.bootstrap.css.js +3 -0
  117. package/components/chat/themes/shared/chat-message/chat-message.bootstrap.css.js.map +1 -0
  118. package/components/chat/themes/shared/chat-message/chat-message.common.css.d.ts +1 -0
  119. package/components/chat/themes/shared/chat-message/chat-message.common.css.js +3 -0
  120. package/components/chat/themes/shared/chat-message/chat-message.common.css.js.map +1 -0
  121. package/components/chat/themes/shared/chat-message/chat-message.fluent.css.d.ts +1 -0
  122. package/components/chat/themes/shared/chat-message/chat-message.fluent.css.js +3 -0
  123. package/components/chat/themes/shared/chat-message/chat-message.fluent.css.js.map +1 -0
  124. package/components/chat/themes/shared/chat-message/chat-message.indigo.css.d.ts +1 -0
  125. package/components/chat/themes/shared/chat-message/chat-message.indigo.css.js +3 -0
  126. package/components/chat/themes/shared/chat-message/chat-message.indigo.css.js.map +1 -0
  127. package/components/chat/themes/shared/chat.bootstrap.css.d.ts +1 -0
  128. package/components/chat/themes/shared/chat.bootstrap.css.js +3 -0
  129. package/components/chat/themes/shared/chat.bootstrap.css.js.map +1 -0
  130. package/components/chat/themes/shared/chat.common.css.d.ts +1 -0
  131. package/components/chat/themes/shared/chat.common.css.js +3 -0
  132. package/components/chat/themes/shared/chat.common.css.js.map +1 -0
  133. package/components/chat/themes/shared/chat.indigo.css.d.ts +1 -0
  134. package/components/chat/themes/shared/chat.indigo.css.js +3 -0
  135. package/components/chat/themes/shared/chat.indigo.css.js.map +1 -0
  136. package/components/chat/themes/shared/input/input.bootstrap.css.d.ts +1 -0
  137. package/components/chat/themes/shared/input/input.bootstrap.css.js +3 -0
  138. package/components/chat/themes/shared/input/input.bootstrap.css.js.map +1 -0
  139. package/components/chat/themes/shared/input/input.common.css.d.ts +1 -0
  140. package/components/chat/themes/shared/input/input.common.css.js +3 -0
  141. package/components/chat/themes/shared/input/input.common.css.js.map +1 -0
  142. package/components/chat/themes/shared/input/input.fluent.css.d.ts +1 -0
  143. package/components/chat/themes/shared/input/input.fluent.css.js +3 -0
  144. package/components/chat/themes/shared/input/input.fluent.css.js.map +1 -0
  145. package/components/chat/themes/shared/input/input.indigo.css.d.ts +1 -0
  146. package/components/chat/themes/shared/input/input.indigo.css.js +3 -0
  147. package/components/chat/themes/shared/input/input.indigo.css.js.map +1 -0
  148. package/components/chat/themes/shared/input/input.material.css.d.ts +1 -0
  149. package/components/chat/themes/shared/input/input.material.css.js +3 -0
  150. package/components/chat/themes/shared/input/input.material.css.js.map +1 -0
  151. package/components/chat/themes/shared/message-attachments.common.css.d.ts +1 -0
  152. package/components/chat/themes/shared/message-attachments.common.css.js +3 -0
  153. package/components/chat/themes/shared/message-attachments.common.css.js.map +1 -0
  154. package/components/chat/themes/shared/message-list.common.css.d.ts +1 -0
  155. package/components/chat/themes/shared/message-list.common.css.js +3 -0
  156. package/components/chat/themes/shared/message-list.common.css.js.map +1 -0
  157. package/components/chat/themes/themes.d.ts +2 -0
  158. package/components/chat/themes/themes.js +48 -0
  159. package/components/chat/themes/themes.js.map +1 -0
  160. package/components/chat/types.d.ts +244 -0
  161. package/components/chat/types.js +15 -0
  162. package/components/chat/types.js.map +1 -0
  163. package/components/checkbox/themes/dark/switch/switch.bootstrap.css.js +1 -1
  164. package/components/checkbox/themes/dark/switch/switch.bootstrap.css.js.map +1 -1
  165. package/components/checkbox/themes/dark/switch/switch.fluent.css.js +1 -1
  166. package/components/checkbox/themes/dark/switch/switch.fluent.css.js.map +1 -1
  167. package/components/checkbox/themes/dark/switch/switch.indigo.css.js +1 -1
  168. package/components/checkbox/themes/dark/switch/switch.indigo.css.js.map +1 -1
  169. package/components/checkbox/themes/dark/switch/switch.material.css.js +1 -1
  170. package/components/checkbox/themes/dark/switch/switch.material.css.js.map +1 -1
  171. package/components/checkbox/themes/light/switch/switch.bootstrap.css.js +1 -1
  172. package/components/checkbox/themes/light/switch/switch.bootstrap.css.js.map +1 -1
  173. package/components/checkbox/themes/light/switch/switch.fluent.css.js +1 -1
  174. package/components/checkbox/themes/light/switch/switch.fluent.css.js.map +1 -1
  175. package/components/checkbox/themes/light/switch/switch.indigo.css.js +1 -1
  176. package/components/checkbox/themes/light/switch/switch.indigo.css.js.map +1 -1
  177. package/components/checkbox/themes/light/switch/switch.material.css.js +1 -1
  178. package/components/checkbox/themes/light/switch/switch.material.css.js.map +1 -1
  179. package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js +1 -1
  180. package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js.map +1 -1
  181. package/components/checkbox/themes/shared/switch/switch.common.css.js +1 -1
  182. package/components/checkbox/themes/shared/switch/switch.common.css.js.map +1 -1
  183. package/components/checkbox/themes/shared/switch/switch.fluent.css.js +1 -1
  184. package/components/checkbox/themes/shared/switch/switch.fluent.css.js.map +1 -1
  185. package/components/checkbox/themes/shared/switch/switch.indigo.css.js +1 -1
  186. package/components/checkbox/themes/shared/switch/switch.indigo.css.js.map +1 -1
  187. package/components/chip/themes/chip.base.css.js +1 -1
  188. package/components/chip/themes/chip.base.css.js.map +1 -1
  189. package/components/chip/themes/shared/chip.indigo.css.js +1 -1
  190. package/components/chip/themes/shared/chip.indigo.css.js.map +1 -1
  191. package/components/combo/controllers/navigation.js +1 -1
  192. package/components/combo/controllers/navigation.js.map +1 -1
  193. package/components/combo/themes/combo-item.base.css.js +1 -1
  194. package/components/combo/themes/combo-item.base.css.js.map +1 -1
  195. package/components/combo/themes/combo.base.css.js +1 -1
  196. package/components/combo/themes/combo.base.css.js.map +1 -1
  197. package/components/combo/themes/shared/combo.bootstrap.css.js +1 -1
  198. package/components/combo/themes/shared/combo.bootstrap.css.js.map +1 -1
  199. package/components/combo/themes/shared/combo.common.css.js +1 -1
  200. package/components/combo/themes/shared/combo.common.css.js.map +1 -1
  201. package/components/combo/themes/shared/combo.fluent.css.js +1 -1
  202. package/components/combo/themes/shared/combo.fluent.css.js.map +1 -1
  203. package/components/combo/themes/shared/combo.indigo.css.js +1 -1
  204. package/components/combo/themes/shared/combo.indigo.css.js.map +1 -1
  205. package/components/combo/themes/shared/combo.material.css.js +1 -1
  206. package/components/combo/themes/shared/combo.material.css.js.map +1 -1
  207. package/components/common/context.d.ts +5 -1
  208. package/components/common/context.js +2 -1
  209. package/components/common/context.js.map +1 -1
  210. package/components/common/controllers/key-bindings.js +4 -3
  211. package/components/common/controllers/key-bindings.js.map +1 -1
  212. package/components/common/definitions/defineAllComponents.js +2 -0
  213. package/components/common/definitions/defineAllComponents.js.map +1 -1
  214. package/components/common/i18n/chat.resources.d.ts +8 -0
  215. package/components/common/i18n/chat.resources.js +8 -0
  216. package/components/common/i18n/chat.resources.js.map +1 -0
  217. package/components/common/util.d.ts +14 -0
  218. package/components/common/util.js +51 -1
  219. package/components/common/util.js.map +1 -1
  220. package/components/date-picker/date-picker.js +2 -2
  221. package/components/date-picker/date-picker.js.map +1 -1
  222. package/components/date-picker/themes/shared/date-picker.common.css.js +1 -1
  223. package/components/date-picker/themes/shared/date-picker.common.css.js.map +1 -1
  224. package/components/date-range-picker/date-range-picker.js +0 -1
  225. package/components/date-range-picker/date-range-picker.js.map +1 -1
  226. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js +1 -1
  227. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js.map +1 -1
  228. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js +1 -1
  229. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js.map +1 -1
  230. package/components/date-time-input/date-time-input.js +1 -1
  231. package/components/date-time-input/date-time-input.js.map +1 -1
  232. package/components/dropdown/themes/dropdown-group.base.css.js +1 -1
  233. package/components/dropdown/themes/dropdown-group.base.css.js.map +1 -1
  234. package/components/dropdown/themes/dropdown-item.base.css.js +1 -1
  235. package/components/dropdown/themes/dropdown-item.base.css.js.map +1 -1
  236. package/components/dropdown/themes/shared/group/dropdown-group.fluent.css.js +1 -1
  237. package/components/dropdown/themes/shared/group/dropdown-group.fluent.css.js.map +1 -1
  238. package/components/dropdown/themes/shared/header/dropdown-header.common.css.js +1 -1
  239. package/components/dropdown/themes/shared/header/dropdown-header.common.css.js.map +1 -1
  240. package/components/dropdown/themes/shared/header/dropdown-header.indigo.css.js +1 -1
  241. package/components/dropdown/themes/shared/header/dropdown-header.indigo.css.js.map +1 -1
  242. package/components/dropdown/themes/shared/item/dropdown-item.indigo.css.js +1 -1
  243. package/components/dropdown/themes/shared/item/dropdown-item.indigo.css.js.map +1 -1
  244. package/components/expansion-panel/expansion-panel.js +0 -1
  245. package/components/expansion-panel/expansion-panel.js.map +1 -1
  246. package/components/expansion-panel/themes/expansion-panel.base.css.js +1 -1
  247. package/components/expansion-panel/themes/expansion-panel.base.css.js.map +1 -1
  248. package/components/expansion-panel/themes/shared/expansion-panel.indigo.css.js +1 -1
  249. package/components/expansion-panel/themes/shared/expansion-panel.indigo.css.js.map +1 -1
  250. package/components/file-input/themes/shared/file-input.bootstrap.css.js +1 -1
  251. package/components/file-input/themes/shared/file-input.bootstrap.css.js.map +1 -1
  252. package/components/input/themes/shared/input.bootstrap.css.js +1 -1
  253. package/components/input/themes/shared/input.bootstrap.css.js.map +1 -1
  254. package/components/input/themes/shared/input.common.css.js +1 -1
  255. package/components/input/themes/shared/input.common.css.js.map +1 -1
  256. package/components/input/themes/shared/input.fluent.css.js +1 -1
  257. package/components/input/themes/shared/input.fluent.css.js.map +1 -1
  258. package/components/input/themes/shared/input.indigo.css.js +1 -1
  259. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  260. package/components/input/themes/shared/input.material.css.js +1 -1
  261. package/components/input/themes/shared/input.material.css.js.map +1 -1
  262. package/components/list/themes/header.base.css.js +1 -1
  263. package/components/list/themes/header.base.css.js.map +1 -1
  264. package/components/list/themes/item.base.css.js +1 -1
  265. package/components/list/themes/item.base.css.js.map +1 -1
  266. package/components/list/themes/shared/header/list-header.indigo.css.js +1 -1
  267. package/components/list/themes/shared/header/list-header.indigo.css.js.map +1 -1
  268. package/components/list/themes/shared/item/list-item.indigo.css.js +1 -1
  269. package/components/list/themes/shared/item/list-item.indigo.css.js.map +1 -1
  270. package/components/rating/rating.js +0 -1
  271. package/components/rating/rating.js.map +1 -1
  272. package/components/select/themes/dark/select.bootstrap.css.js +1 -1
  273. package/components/select/themes/dark/select.bootstrap.css.js.map +1 -1
  274. package/components/select/themes/light/select.bootstrap.css.js +1 -1
  275. package/components/select/themes/light/select.bootstrap.css.js.map +1 -1
  276. package/components/select/themes/shared/select.bootstrap.css.js +1 -1
  277. package/components/select/themes/shared/select.bootstrap.css.js.map +1 -1
  278. package/components/select/themes/shared/select.common.css.js +1 -1
  279. package/components/select/themes/shared/select.common.css.js.map +1 -1
  280. package/components/select/themes/shared/select.material.css.js +1 -1
  281. package/components/select/themes/shared/select.material.css.js.map +1 -1
  282. package/components/slider/slider-base.js +0 -1
  283. package/components/slider/slider-base.js.map +1 -1
  284. package/components/tabs/tabs.js +0 -1
  285. package/components/tabs/tabs.js.map +1 -1
  286. package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
  287. package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
  288. package/components/textarea/themes/shared/textarea.common.css.js +1 -1
  289. package/components/textarea/themes/shared/textarea.common.css.js.map +1 -1
  290. package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
  291. package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
  292. package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
  293. package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
  294. package/components/textarea/themes/shared/textarea.material.css.js +1 -1
  295. package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
  296. package/components/textarea/themes/textarea.base.css.js +1 -1
  297. package/components/textarea/themes/textarea.base.css.js.map +1 -1
  298. package/components/tree/themes/item.base.css.js +1 -1
  299. package/components/tree/themes/item.base.css.js.map +1 -1
  300. package/components/tree/themes/shared/item.indigo.css.js +1 -1
  301. package/components/tree/themes/shared/item.indigo.css.js.map +1 -1
  302. package/components/tree/tree.js +3 -1
  303. package/components/tree/tree.js.map +1 -1
  304. package/components/tree/tree.navigation.js +3 -3
  305. package/components/tree/tree.navigation.js.map +1 -1
  306. package/components/tree/tree.selection.js +6 -2
  307. package/components/tree/tree.selection.js.map +1 -1
  308. package/custom-elements.json +8212 -6063
  309. package/igniteui-webcomponents.css-data.json +1 -1
  310. package/igniteui-webcomponents.html-data.json +1 -1
  311. package/index.d.ts +6 -0
  312. package/index.js +4 -0
  313. package/index.js.map +1 -1
  314. package/package.json +1 -1
  315. package/themes/dark/bootstrap.css +1 -1
  316. package/themes/dark/fluent.css +1 -1
  317. package/themes/dark/indigo.css +1 -1
  318. package/themes/dark/material.css +1 -1
  319. package/themes/light/bootstrap.css +1 -1
  320. package/themes/light/fluent.css +1 -1
  321. package/themes/light/indigo.css +1 -1
  322. package/themes/light/material.css +1 -1
  323. package/web-types.json +2 -2
@@ -0,0 +1,47 @@
1
+ import { LitElement, nothing } from 'lit';
2
+ import type { IgcMessage } from './types.js';
3
+ /**
4
+ * A chat message component for displaying individual messages in `<igc-chat>`.
5
+ *
6
+ * @element igc-chat-message
7
+ *
8
+ * @fires igcMessageReact - Fired when a message is reacted to.
9
+ *
10
+ * This component renders a single chat message including:
11
+ * - Message text (sanitized)
12
+ * - Attachments (if any)
13
+ * - Custom templates for message content and actions (if provided via chat options)
14
+ *
15
+ * It distinguishes sent messages from received messages by comparing
16
+ * the message sender with the current user ID from chat state.
17
+ *
18
+ * The message text is sanitized with DOMPurify before rendering,
19
+ * and can be rendered with a markdown renderer if provided.
20
+ */
21
+ export default class IgcChatMessageComponent extends LitElement {
22
+ static readonly tagName = "igc-chat-message";
23
+ static styles: import("lit").CSSResult[];
24
+ static register(): void;
25
+ /**
26
+ * Injected chat state context. Provides message data, user info, and options.
27
+ */
28
+ private _chatState?;
29
+ /**
30
+ * The chat message to render.
31
+ */
32
+ message?: IgcMessage;
33
+ constructor();
34
+ protected firstUpdated(): void;
35
+ /**
36
+ * Renders the chat message template.
37
+ * - Applies 'sent' CSS class if the message sender matches current user.
38
+ * - Uses markdown rendering if configured.
39
+ * - Renders attachments and custom templates if provided.
40
+ */
41
+ protected render(): import("lit-html").TemplateResult<1> | typeof nothing;
42
+ }
43
+ declare global {
44
+ interface HTMLElementTagNameMap {
45
+ 'igc-chat-message': IgcChatMessageComponent;
46
+ }
47
+ }
@@ -0,0 +1,70 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { consume } from '@lit/context';
8
+ import { adoptStyles, html, LitElement, nothing } from 'lit';
9
+ import { property } from 'lit/decorators.js';
10
+ import { until } from 'lit/directives/until.js';
11
+ import { addThemingController } from '../../theming/theming-controller.js';
12
+ import IgcAvatarComponent from '../avatar/avatar.js';
13
+ import { chatContext } from '../common/context.js';
14
+ import { registerComponent } from '../common/definitions/register.js';
15
+ import { partMap } from '../common/part-map.js';
16
+ import IgcTooltipComponent from '../tooltip/tooltip.js';
17
+ import IgcMessageAttachmentsComponent from './message-attachments.js';
18
+ import { styles } from './themes/message.base.css.js';
19
+ import { all } from './themes/message.js';
20
+ import { styles as shared } from './themes/shared/chat-message/chat-message.common.css.js';
21
+ class IgcChatMessageComponent extends LitElement {
22
+ static register() {
23
+ registerComponent(IgcChatMessageComponent, IgcMessageAttachmentsComponent, IgcAvatarComponent, IgcTooltipComponent);
24
+ }
25
+ constructor() {
26
+ super();
27
+ addThemingController(this, all);
28
+ }
29
+ firstUpdated() {
30
+ adoptPageStyles(this);
31
+ }
32
+ render() {
33
+ const parts = {
34
+ 'message-container': true,
35
+ sent: this._chatState?.currentUserId === this.message?.sender,
36
+ };
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;
44
+ }
45
+ }
46
+ IgcChatMessageComponent.tagName = 'igc-chat-message';
47
+ IgcChatMessageComponent.styles = [styles, shared];
48
+ export default IgcChatMessageComponent;
49
+ __decorate([
50
+ consume({ context: chatContext, subscribe: true })
51
+ ], IgcChatMessageComponent.prototype, "_chatState", void 0);
52
+ __decorate([
53
+ property({ attribute: false })
54
+ ], 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
+ //# sourceMappingURL=chat-message.js.map
@@ -0,0 +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"]}
@@ -0,0 +1,14 @@
1
+ import type { ChatMessageRenderer, IgcChatTemplates, IgcMessage } from './types.js';
2
+ export declare class DefaultChatRenderer implements ChatMessageRenderer {
3
+ private baseTextRenderer;
4
+ private defaultTemplates;
5
+ private cache;
6
+ templates: Required<IgcChatTemplates>;
7
+ constructor(baseTextRenderer: ChatMessageRenderer, // e.g. PlainTextRenderer, MarkdownMessageRenderer
8
+ defaultTemplates: Required<IgcChatTemplates>, userTemplates?: Partial<IgcChatTemplates>);
9
+ protected renderText(message: IgcMessage): Promise<unknown>;
10
+ render(message: IgcMessage, ctx?: {
11
+ templates?: Partial<IgcChatTemplates>;
12
+ }): Promise<unknown>;
13
+ clearCache(): void;
14
+ }
@@ -0,0 +1,39 @@
1
+ export class DefaultChatRenderer {
2
+ constructor(baseTextRenderer, defaultTemplates, userTemplates) {
3
+ this.baseTextRenderer = baseTextRenderer;
4
+ this.defaultTemplates = defaultTemplates;
5
+ this.cache = new Map();
6
+ this.templates = {
7
+ ...this.defaultTemplates,
8
+ ...(userTemplates ?? {}),
9
+ };
10
+ }
11
+ async renderText(message) {
12
+ const rendered = await this.baseTextRenderer.render(message);
13
+ return rendered;
14
+ }
15
+ async render(message, ctx) {
16
+ const templates = { ...ctx?.templates, ...this.templates };
17
+ if (!message.id) {
18
+ const textContent = await this.baseTextRenderer.render(message);
19
+ return templates.messageTemplate(message, { textContent, templates });
20
+ }
21
+ if (this.cache.has(message.id)) {
22
+ const cached = this.cache.get(message.id);
23
+ if (cached && cached.text === message.text) {
24
+ return cached.rendered;
25
+ }
26
+ }
27
+ const textContent = await this.baseTextRenderer.render(message);
28
+ const rendered = templates.messageTemplate(message, {
29
+ textContent,
30
+ templates,
31
+ });
32
+ this.cache.set(message.id, { text: message.text, rendered });
33
+ return rendered;
34
+ }
35
+ clearCache() {
36
+ this.cache.clear();
37
+ }
38
+ }
39
+ //# sourceMappingURL=chat-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-renderer.js","sourceRoot":"","sources":["../../../src/components/chat/chat-renderer.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,mBAAmB;IAI9B,YACU,gBAAqC,EACrC,gBAA4C,EACpD,aAAyC;QAFjC,qBAAgB,GAAhB,gBAAgB,CAAqB;QACrC,qBAAgB,GAAhB,gBAAgB,CAA4B;QAL9C,UAAK,GAAG,IAAI,GAAG,EAA+C,CAAC;QAQrE,IAAI,CAAC,SAAS,GAAG;YACf,GAAG,IAAI,CAAC,gBAAgB;YACxB,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC;SACzB,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,UAAU,CAAC,OAAmB;QAC5C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,OAAmB,EACnB,GAA+C;QAE/C,MAAM,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC3D,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAEhB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAChE,OAAO,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC1C,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC3C,OAAO,MAAM,CAAC,QAAQ,CAAC;YACzB,CAAC;QACH,CAAC;QAGD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE;YAClD,WAAW;YACX,SAAS;SACV,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE7D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,UAAU;QACf,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF","sourcesContent":["import type {\n ChatMessageRenderer,\n IgcChatTemplates,\n IgcMessage,\n} from './types.js';\n\nexport class DefaultChatRenderer implements ChatMessageRenderer {\n private cache = new Map<string, { text: string; rendered: unknown }>();\n public templates: Required<IgcChatTemplates>;\n\n constructor(\n private baseTextRenderer: ChatMessageRenderer, // e.g. PlainTextRenderer, MarkdownMessageRenderer\n private defaultTemplates: Required<IgcChatTemplates>,\n userTemplates?: Partial<IgcChatTemplates>\n ) {\n this.templates = {\n ...this.defaultTemplates,\n ...(userTemplates ?? {}),\n };\n }\n\n protected async renderText(message: IgcMessage) {\n const rendered = await this.baseTextRenderer.render(message);\n return rendered;\n }\n\n public async render(\n message: IgcMessage,\n ctx?: { templates?: Partial<IgcChatTemplates> }\n ): Promise<unknown> {\n const templates = { ...ctx?.templates, ...this.templates };\n if (!message.id) {\n // No caching for messages without an ID\n const textContent = await this.baseTextRenderer.render(message);\n return templates.messageTemplate(message, { textContent, templates });\n }\n\n if (this.cache.has(message.id)) {\n const cached = this.cache.get(message.id);\n if (cached && cached.text === message.text) {\n return cached.rendered;\n }\n }\n\n // Cache miss or message text changed\n const textContent = await this.baseTextRenderer.render(message);\n const rendered = templates.messageTemplate(message, {\n textContent,\n templates,\n });\n this.cache.set(message.id, { text: message.text, rendered });\n\n return rendered;\n }\n\n public clearCache() {\n this.cache.clear();\n }\n}\n"]}
@@ -0,0 +1,250 @@
1
+ import { type Ref } from 'lit/directives/ref.js';
2
+ import type IgcTextareaComponent from '../textarea/textarea.js';
3
+ import type IgcChatComponent from './chat.js';
4
+ 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';
7
+ /**
8
+ * Internal state manager for the `<igc-chat>` component.
9
+ *
10
+ * Manages messages, input value, attachments, options, and event emissions.
11
+ */
12
+ export declare class ChatState {
13
+ private readonly _host;
14
+ /** Reference to the text area input component */
15
+ private _textArea;
16
+ /** The current list of messages */
17
+ private _messages;
18
+ /** Chat options/configuration */
19
+ private _options?;
20
+ /** List of current input attachments */
21
+ private _inputAttachments;
22
+ /** Current input text */
23
+ private _inputValue;
24
+ /**
25
+ * Cache of accepted file types, organized into extensions, mimeTypes, and wildcardTypes
26
+ */
27
+ private _acceptedTypesCache;
28
+ /** Default position of the suggestions */
29
+ private _suggestionsPosition;
30
+ /** Default time in milliseconds before dispatching stop typing event */
31
+ private _stopTypingDelay;
32
+ private _isTyping;
33
+ 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;
106
+ /**
107
+ * Gets the list of chat messages.
108
+ */
109
+ get messages(): IgcMessage[];
110
+ /**
111
+ * Sets the list of chat messages.
112
+ */
113
+ set messages(value: IgcMessage[]);
114
+ /**
115
+ * Gets current chat options.
116
+ */
117
+ get options(): IgcChatOptions | undefined;
118
+ /**
119
+ * Sets chat options and requests host update.
120
+ */
121
+ set options(value: IgcChatOptions);
122
+ /**
123
+ * Gets the current user ID from options or returns 'user' as fallback.
124
+ */
125
+ get currentUserId(): string;
126
+ /**
127
+ * Gets the current suggestionsPosition from options or returns the default value 'below-messages'.
128
+ */
129
+ get suggestionsPosition(): string;
130
+ /**
131
+ * Gets the current stopTypingDelay from options or returns the default value `3000`.
132
+ */
133
+ get stopTypingDelay(): number;
134
+ /**
135
+ * Gets the text area component.
136
+ */
137
+ get textArea(): IgcTextareaComponent | null;
138
+ /**
139
+ * Sets the text area component.
140
+ */
141
+ set textArea(value: IgcTextareaComponent);
142
+ /**
143
+ * Gets the text area component.
144
+ */
145
+ get textAreaRef(): Ref<IgcTextareaComponent>;
146
+ /**
147
+ * Gets the list of attachments currently attached to input.
148
+ */
149
+ get inputAttachments(): IgcMessageAttachment[];
150
+ /**
151
+ * Sets the input attachments and requests host update.
152
+ */
153
+ set inputAttachments(value: IgcMessageAttachment[]);
154
+ /**
155
+ * Gets the current input value.
156
+ */
157
+ get inputValue(): string;
158
+ /**
159
+ * Sets the current input value and requests host update.
160
+ */
161
+ 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;
186
+ /**
187
+ * Adds a new chat message.
188
+ * Emits 'igcMessageCreated' event which can be canceled to prevent adding.
189
+ * Clears input value and attachments on success.
190
+ * @param message Partial message object with optional id, sender, timestamp
191
+ */
192
+ addMessage: (message: {
193
+ id?: string;
194
+ text: string;
195
+ sender?: string;
196
+ timestamp?: Date;
197
+ attachments?: IgcMessageAttachment[];
198
+ }) => void;
199
+ /**
200
+ * Adds files as attachments to the input.
201
+ * Emits 'igcAttachmentChange' event which can be canceled to prevent adding.
202
+ * @param files Array of File objects to attach
203
+ */
204
+ attachFiles(files: File[]): void;
205
+ private getURL;
206
+ private isImageAttachment;
207
+ private _fileIconMap;
208
+ private getFileExtension;
209
+ handleKeyDown: (e: KeyboardEvent) => void;
210
+ private handleFocus;
211
+ private handleBlur;
212
+ private sendMessage;
213
+ private handleFileUpload;
214
+ /**
215
+ * Removes an attachment by index.
216
+ * Emits 'igcAttachmentChange' event which can be canceled to prevent removal.
217
+ * @param index Index of the attachment to remove
218
+ */
219
+ private removeAttachment;
220
+ /**
221
+ * Handles when a suggestion is clicked.
222
+ * Adds the suggestion as a new message and focuses the text area.
223
+ * @param suggestion The suggestion string clicked
224
+ */
225
+ handleSuggestionClick: (suggestion: string) => void;
226
+ /**
227
+ * Updates the chat options partially.
228
+ * @param options Partial options to merge with current options
229
+ */
230
+ updateOptions(options: Partial<IgcChatOptions>): void;
231
+ /**
232
+ * Updates the internal cache for accepted file types.
233
+ * Parses the acceptedFiles string option into extensions, mimeTypes, and wildcard types.
234
+ */
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;
249
+ }
250
+ export declare function createChatState(host: IgcChatComponent): ChatState;