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
@@ -1,67 +1,26 @@
1
- import { html, nothing } from 'lit';
2
- import { ifDefined } from 'lit/directives/if-defined.js';
3
- import { createRef, ref } from 'lit/directives/ref.js';
4
1
  import { enterKey } from '../common/controllers/key-bindings.js';
5
2
  import { IgcChatResourceStringEN } from '../common/i18n/chat.resources.js';
6
- import { partMap } from '../common/part-map.js';
7
- import { registerIconFromText } from '../icon/icon.registry.js';
8
- import { DefaultChatRenderer } from './chat-renderer.js';
9
- import { PlainTextRenderer } from './plain-text-renderer.js';
10
- import { copyIcon, regenerateIcon, thumbDownIcon, thumbUpIcon, } from './types.js';
3
+ import { isEmpty, nanoid } from '../common/util.js';
4
+ import { parseAcceptedFileTypes } from './utils.js';
11
5
  export class ChatState {
12
- get _sharedTooltip() {
13
- return this._sharedTooltipRef?.value;
6
+ get acceptedFileTypes() {
7
+ return this._acceptedTypesCache;
14
8
  }
15
- getIconName(fileType) {
16
- if (fileType?.startsWith('image')) {
17
- return 'file-image';
18
- }
19
- return 'file-document';
20
- }
21
- renderDefaultAttachmentHeaderText(attachment, message) {
22
- return html `
23
- ${html `${message.sender !== this.currentUserId
24
- ? html `${attachment.type === 'image' ||
25
- attachment.file?.type.startsWith('image/')
26
- ? html `<igc-icon
27
- name="image"
28
- collection="material"
29
- part="attachment-icon"
30
- ></igc-icon>`
31
- : html `<igc-icon
32
- name="file"
33
- collection="material"
34
- part="attachment-icon"
35
- ></igc-icon>`}`
36
- : nothing} <span part="file-name">${attachment.name}</span>`}
37
- `;
38
- }
39
- handleHeaderClick(attachment) {
40
- this.emitEvent('igcAttachmentClick', { detail: attachment });
41
- }
42
- showTooltip(ev, text) {
43
- if (!this._sharedTooltip)
44
- return;
45
- this._sharedTooltip.message = text;
46
- this._sharedTooltip.hideDelay = 300;
47
- this._sharedTooltip.show(ev.composedPath()[0]);
9
+ get disableAutoScroll() {
10
+ return this._options?.disableAutoScroll ?? false;
48
11
  }
49
12
  get messages() {
50
13
  return this._messages;
51
14
  }
52
15
  set messages(value) {
53
16
  this._messages = value;
54
- this._host.requestUpdate();
55
17
  }
56
18
  get options() {
57
19
  return this._options;
58
20
  }
59
21
  set options(value) {
60
22
  this._options = value;
61
- this._host.requestUpdate();
62
- if (this._host.updateContextValue) {
63
- this._host.updateContextValue();
64
- }
23
+ this._contextUpdateFn.call(this._host);
65
24
  }
66
25
  get currentUserId() {
67
26
  return this._options?.currentUserId ?? 'user';
@@ -78,47 +37,27 @@ export class ChatState {
78
37
  set textArea(value) {
79
38
  this._textArea = value;
80
39
  }
81
- get textAreaRef() {
82
- return this._textAreaRef;
83
- }
84
40
  get inputAttachments() {
85
41
  return this._inputAttachments;
86
42
  }
87
43
  set inputAttachments(value) {
88
44
  this._inputAttachments = value;
89
- this._host.requestUpdate();
90
- if (this._host.updateContextValue) {
91
- this._host.updateContextValue();
92
- }
45
+ this._userInputContextUpdateFn.call(this._host);
93
46
  }
94
47
  get inputValue() {
95
48
  return this._inputValue;
96
49
  }
97
50
  set inputValue(value) {
98
51
  this._inputValue = value;
99
- this._host.requestUpdate();
100
- if (this._host.updateContextValue) {
101
- this._host.updateContextValue();
102
- }
52
+ this._userInputContextUpdateFn.call(this._host);
103
53
  }
104
- get defaultTemplates() {
105
- return this._defaultTemplates;
54
+ get hasInputValue() {
55
+ return this._inputValue.trim() !== '';
106
56
  }
107
- set defaultTemplates(templates) {
108
- this._defaultTemplates = { ...templates };
57
+ get hasInputAttachments() {
58
+ return !isEmpty(this._inputAttachments);
109
59
  }
110
- get mergedTemplates() {
111
- return { ...this._defaultTemplates, ...this.options?.templates };
112
- }
113
- get chatRenderer() {
114
- if (!this._chatRenderer ||
115
- this._chatRenderer !== this.options?.messageRenderer) {
116
- this._chatRenderer = new DefaultChatRenderer(this.options?.messageRenderer ?? new PlainTextRenderer(), this.mergedTemplates);
117
- this.options?.messageRenderer?.init?.();
118
- }
119
- return this._chatRenderer;
120
- }
121
- constructor(chat) {
60
+ constructor(chat, contextUpdateFn, userInputContextUpdateFn) {
122
61
  this._textArea = null;
123
62
  this._messages = [];
124
63
  this._inputAttachments = [];
@@ -128,259 +67,7 @@ export class ChatState {
128
67
  this._stopTypingDelay = 3000;
129
68
  this._isTyping = false;
130
69
  this._lastTyped = Date.now();
131
- this._fileIcon = new URL('./assets/file.png', import.meta.url).href;
132
- this._jsonIcon = new URL('./assets/json.png', import.meta.url).href;
133
- this._linkIcon = new URL('./assets/link.png', import.meta.url).href;
134
- this._textAreaRef = createRef();
135
- this._attachmentsButtonInputRef = createRef();
136
- this._sharedTooltipRef = createRef();
137
70
  this.resourceStrings = IgcChatResourceStringEN;
138
- this._defaultTemplates = {
139
- attachmentTemplate: (att, m) => this.renderDefaultAttachmentTemplate(att, m),
140
- attachmentsTemplate: (m, _ctx) => this.renderDefaultAttachmentsTemplate(m),
141
- attachmentHeaderTemplate: (att, msg) => this.renderDefaultAttachmentHeader(att, msg),
142
- attachmentContentTemplate: (att) => this.renderDefaultAttachmentContent(att),
143
- messageAuthorTemplate: () => { },
144
- messageTemplate: (m, ctx) => this.renderDefaultMessageTemplate(m, ctx),
145
- messageActionsTemplate: (message) => this.renderDefaultMessageActionsTemplate(message),
146
- suggestionPrefixTemplate: () => { },
147
- typingIndicatorTemplate: () => this.renderDefaultTypingIndicator(),
148
- textInputTemplate: () => this.renderDefaultTextArea(),
149
- textAreaActionsTemplate: () => this.renderDefaultActionsArea(),
150
- textAreaAttachmentsTemplate: (attachments) => this.renderDefaultAttachmentsArea(attachments),
151
- };
152
- this.renderDefaultAttachmentsArea = (attachments) => {
153
- return html `${attachments?.map((attachment, index) => html `
154
- <div part="attachment-wrapper" role="listitem">
155
- <igc-chip removable @igcRemove=${() => this.removeAttachment(index)}>
156
- <igc-icon
157
- slot="prefix"
158
- name=${this.getIconName(attachment.file?.type ?? attachment.type)}
159
- collection="material"
160
- ></igc-icon>
161
- <span part="attachment-name">${attachment.name}</span>
162
- </igc-chip>
163
- </div>
164
- `)} `;
165
- };
166
- this.renderDefaultTextArea = () => {
167
- return html ` <igc-textarea
168
- part="text-input"
169
- ${ref(this._textAreaRef)}
170
- .placeholder=${this.options?.inputPlaceholder}
171
- resize="auto"
172
- rows="1"
173
- .value=${this.inputValue}
174
- @igcInput=${this.handleInput}
175
- @focus=${this.handleFocus}
176
- @blur=${this.handleBlur}
177
- ></igc-textarea>`;
178
- };
179
- this.renderDefaultFileUploadButton = () => {
180
- if (this.options?.disableInputAttachments)
181
- return html ``;
182
- return html `
183
- <label for="input_attachments" part="upload-button">
184
- <igc-icon-button
185
- variant="flat"
186
- name="attachment"
187
- collection="material"
188
- @click=${() => this._attachmentsButtonInputRef?.value?.click()}
189
- ></igc-icon-button>
190
- <input
191
- type="file"
192
- id="input_attachments"
193
- name="input_attachments"
194
- ${ref(this._attachmentsButtonInputRef)}
195
- multiple
196
- accept=${ifDefined(this.options?.acceptedFiles === '' ? undefined : this.options?.acceptedFiles)}
197
- @change=${this.handleFileUpload}>
198
- </input>
199
- </label>
200
- `;
201
- };
202
- this.renderDefaultSendButton = () => {
203
- return html ` <igc-icon-button
204
- aria-label="Send message"
205
- name="send-message"
206
- collection="material"
207
- variant="contained"
208
- part="send-button"
209
- ?disabled=${!this.inputValue.trim() && this.inputAttachments.length === 0}
210
- @click=${this.sendMessage}
211
- ></igc-icon-button>`;
212
- };
213
- this.renderDefaultActionsArea = () => {
214
- return html ` ${this.renderDefaultFileUploadButton()}
215
- ${this.renderDefaultSendButton()}`;
216
- };
217
- this.renderDefaultTypingIndicator = () => {
218
- return html `<div part="typing-indicator">
219
- <div part="typing-dot"></div>
220
- <div part="typing-dot"></div>
221
- <div part="typing-dot"></div>
222
- </div>`;
223
- };
224
- this.renderDefaultMessageTemplate = (m, ctx) => {
225
- const templates = { ...this._defaultTemplates, ...ctx.templates };
226
- return html `
227
- ${templates.messageAuthorTemplate(m) ?? nothing}
228
- ${ctx?.textContent ?? m.text}
229
- ${m.attachments?.length
230
- ? html `<igc-message-attachments .message=${m}>
231
- </igc-message-attachments>`
232
- : nothing}
233
- ${templates.messageActionsTemplate(m) ?? nothing}
234
- `;
235
- };
236
- this.renderDefaultAttachmentHeader = (attachment, message) => {
237
- return this.renderDefaultAttachmentHeaderText(attachment, message);
238
- };
239
- this.renderDefaultAttachmentContent = (attachment) => {
240
- const ext = this.getFileExtension(attachment.name);
241
- const isImage = this.isImageAttachment(attachment);
242
- const url = isImage
243
- ? this.getURL(attachment)
244
- : (this._fileIconMap[ext] ?? this._fileIconMap['default']);
245
- const partName = isImage ? 'image-attachment' : 'file-attachment';
246
- return html `<img part="${partName}" src=${url} alt=${attachment.name} />`;
247
- };
248
- this.renderDefaultMessageActionsTemplate = (message) => {
249
- const isLastMessage = message === this.messages.at(-1);
250
- return message?.sender !== this.currentUserId &&
251
- message?.text.trim() &&
252
- (!isLastMessage || !this._isTyping)
253
- ? html `<div>
254
- <igc-icon-button
255
- id="copy-response-button"
256
- @pointerenter=${(ev) => this.showTooltip(ev, this.resourceStrings.reactionCopyResponse)}
257
- name="copy-response"
258
- collection="material"
259
- variant="flat"
260
- @click=${(e) => this.handleMessageActionClick(e, message)}
261
- ></igc-icon-button>
262
- <igc-icon-button
263
- id="good-response-button"
264
- @pointerenter=${(ev) => this.showTooltip(ev, this.resourceStrings.reactionGoodResponse)}
265
- name="good-response"
266
- collection="material"
267
- variant="flat"
268
- @click=${(e) => this.handleMessageActionClick(e, message)}
269
- ></igc-icon-button>
270
- <igc-icon-button
271
- id="bad-response-button"
272
- @pointerenter=${(ev) => this.showTooltip(ev, this.resourceStrings.reactionBadResponse)}
273
- name="bad-response"
274
- variant="flat"
275
- collection="material"
276
- @click=${(e) => this.handleMessageActionClick(e, message)}
277
- ></igc-icon-button>
278
- <igc-icon-button
279
- id="redo-button"
280
- @pointerenter=${(ev) => this.showTooltip(ev, this.resourceStrings.reactionRedo)}
281
- name="redo"
282
- variant="flat"
283
- collection="material"
284
- @click=${(e) => this.handleMessageActionClick(e, message)}
285
- ></igc-icon-button>
286
- <igc-tooltip
287
- id="sharedTooltip"
288
- ${ref(this._sharedTooltipRef)}
289
- ></igc-tooltip>
290
- </div>`
291
- : nothing;
292
- };
293
- this.handleMessageActionClick = (event, message) => {
294
- const reaction = event.target.getAttribute('name');
295
- this.emitEvent('igcMessageReact', {
296
- detail: { message, reaction },
297
- });
298
- };
299
- this.renderDefaultAttachmentTemplate = (att, msg) => {
300
- const isCurrentUser = msg.sender === this.currentUserId;
301
- const attachmentParts = {
302
- attachment: true,
303
- sent: isCurrentUser,
304
- };
305
- const contentParts = {
306
- 'attachment-content': true,
307
- sent: isCurrentUser,
308
- };
309
- const headerParts = {
310
- 'attachment-header': true,
311
- sent: isCurrentUser,
312
- };
313
- const content = html `<div part=${partMap(contentParts)}>
314
- ${this.mergedTemplates.attachmentContentTemplate(att)}
315
- </div>`;
316
- const header = html ` <div
317
- part=${partMap(headerParts)}
318
- role="button"
319
- @click=${() => this.handleHeaderClick(att)}
320
- >
321
- <div part="details">
322
- ${this.mergedTemplates.attachmentHeaderTemplate(att, msg)}
323
- </div>
324
- </div>`;
325
- return html `<div part=${partMap(attachmentParts)}>
326
- ${isCurrentUser ? content : nothing} ${header}
327
- ${!isCurrentUser ? content : nothing}
328
- </div> `;
329
- };
330
- this.renderDefaultAttachmentsTemplate = (m) => {
331
- return html `
332
- ${(m.attachments ?? []).map((att) => this.mergedTemplates.attachmentTemplate(att, m)) || nothing}
333
- `;
334
- };
335
- this.handleInput = ({ detail }) => {
336
- if (detail === this.inputValue)
337
- return;
338
- this.inputValue = detail;
339
- this.emitEvent('igcInputChange', { detail: { value: this.inputValue } });
340
- };
341
- this.emitEvent = (name, args) => {
342
- return this._host.emitEvent(name, args);
343
- };
344
- this.addMessage = (message) => {
345
- const newMessage = {
346
- id: message.id ?? Date.now().toString(),
347
- text: message.text,
348
- sender: message.sender ?? this.currentUserId,
349
- timestamp: message.timestamp ?? new Date(),
350
- attachments: message.attachments || [],
351
- };
352
- const allowed = this.emitEvent('igcMessageCreated', {
353
- detail: newMessage,
354
- cancelable: true,
355
- });
356
- if (allowed) {
357
- if (!this.messages.some((msg) => msg.id === newMessage.id)) {
358
- this.messages = [...this.messages, newMessage];
359
- }
360
- this.inputValue = '';
361
- this.inputAttachments = [];
362
- }
363
- };
364
- this.getURL = (attachment) => {
365
- if (attachment.url) {
366
- return attachment.url;
367
- }
368
- if (attachment.file) {
369
- return URL.createObjectURL(attachment.file);
370
- }
371
- return '';
372
- };
373
- this._fileIconMap = {
374
- pdf: this._fileIcon,
375
- doc: this._fileIcon,
376
- docx: this._fileIcon,
377
- xls: this._fileIcon,
378
- xlsx: this._fileIcon,
379
- txt: this._fileIcon,
380
- json: this._jsonIcon,
381
- link: this._linkIcon,
382
- default: this._fileIcon,
383
- };
384
71
  this.handleKeyDown = (e) => {
385
72
  if (e.key.toLowerCase() === enterKey.toLowerCase() && !e.shiftKey) {
386
73
  e.preventDefault();
@@ -407,12 +94,6 @@ export class ChatState {
407
94
  }, stopTypingDelay);
408
95
  }
409
96
  };
410
- this.handleFocus = () => {
411
- this.emitEvent('igcInputFocus');
412
- };
413
- this.handleBlur = () => {
414
- this.emitEvent('igcInputBlur');
415
- };
416
97
  this.sendMessage = () => {
417
98
  if (!this.inputValue.trim() && this.inputAttachments.length === 0)
418
99
  return;
@@ -428,14 +109,6 @@ export class ChatState {
428
109
  this._textArea?.focus();
429
110
  });
430
111
  };
431
- this.handleFileUpload = (e) => {
432
- const input = e.target;
433
- if (!input.files || input.files.length === 0)
434
- return;
435
- const files = Array.from(input.files);
436
- this.attachFiles(files);
437
- this._host.requestUpdate();
438
- };
439
112
  this.removeAttachment = (index) => {
440
113
  const allowed = this.emitEvent('igcAttachmentChange', {
441
114
  detail: this.inputAttachments.filter((_, i) => i !== index),
@@ -451,60 +124,54 @@ export class ChatState {
451
124
  this.textArea.focus();
452
125
  }
453
126
  };
454
- this.updateAcceptedTypesCache = () => {
455
- if (!this.options?.acceptedFiles) {
456
- this._acceptedTypesCache = null;
457
- return;
458
- }
459
- const types = this.options?.acceptedFiles
460
- .split(',')
461
- .map((type) => type.trim().toLowerCase());
462
- this._acceptedTypesCache = {
463
- extensions: new Set(types.filter((t) => t.startsWith('.'))),
464
- mimeTypes: new Set(types.filter((t) => !t.startsWith('.') && !t.endsWith('/*'))),
465
- wildcardTypes: new Set(types.filter((t) => t.endsWith('/*')).map((t) => t.slice(0, -2))),
466
- };
127
+ this._host = chat;
128
+ this._contextUpdateFn = contextUpdateFn;
129
+ this._userInputContextUpdateFn = userInputContextUpdateFn;
130
+ }
131
+ isCurrentUserMessage(message) {
132
+ return this.currentUserId === message?.sender;
133
+ }
134
+ emitEvent(name, args) {
135
+ return this._host.emitEvent(name, args);
136
+ }
137
+ addMessage(message) {
138
+ const newMessage = {
139
+ id: message.id ?? nanoid(),
140
+ text: message.text ?? '',
141
+ sender: message.sender ?? this.currentUserId,
142
+ timestamp: message.timestamp ?? new Date(),
143
+ attachments: message.attachments || [],
467
144
  };
468
- this.isFileTypeAccepted = (file, type = '') => {
469
- if (!this._acceptedTypesCache)
470
- return true;
471
- if (file === null && type === '')
472
- return false;
473
- const fileType = file != null ? file.type.toLowerCase() : type.toLowerCase();
474
- const fileExtension = file != null
475
- ? `.${file.name.split('.').pop()?.toLowerCase()}`
476
- : `.${type.split('/').pop()?.toLowerCase()}`;
477
- if (this._acceptedTypesCache.extensions.has(fileExtension)) {
478
- return true;
479
- }
480
- if (this._acceptedTypesCache.mimeTypes.has(fileType)) {
481
- return true;
145
+ const allowed = this.emitEvent('igcMessageCreated', {
146
+ detail: newMessage,
147
+ cancelable: true,
148
+ });
149
+ if (allowed) {
150
+ if (!this.messages.some((msg) => msg.id === newMessage.id)) {
151
+ this.messages = [...this.messages, newMessage];
482
152
  }
483
- const [fileBaseType] = fileType.split('/');
484
- return this._acceptedTypesCache.wildcardTypes.has(fileBaseType);
485
- };
486
- this._host = chat;
487
- registerIconFromText('copy-response', copyIcon, 'material');
488
- registerIconFromText('good-response', thumbUpIcon, 'material');
489
- registerIconFromText('bad-response', thumbDownIcon, 'material');
490
- registerIconFromText('redo', regenerateIcon, 'material');
153
+ this._host.requestUpdate('messages');
154
+ this.inputValue = '';
155
+ this.inputAttachments = [];
156
+ }
491
157
  }
492
158
  attachFiles(files) {
493
159
  const newAttachments = [];
494
- let count = this.inputAttachments.length;
495
- files.forEach((file) => {
496
- if (this.inputAttachments.find((a) => a.name === file.name)) {
497
- return;
160
+ const fileNames = new Set(this.inputAttachments.map((attachment) => attachment.file?.name ?? ''));
161
+ for (const file of files) {
162
+ if (fileNames.has(file.name)) {
163
+ continue;
498
164
  }
499
165
  const isImage = file.type.startsWith('image/');
166
+ const url = URL.createObjectURL(file);
500
167
  newAttachments.push({
501
- id: Date.now().toString() + count++,
502
- url: URL.createObjectURL(file),
168
+ id: nanoid(),
169
+ url,
503
170
  name: file.name,
504
- file: file,
505
- thumbnail: isImage ? URL.createObjectURL(file) : undefined,
171
+ file,
172
+ thumbnail: isImage ? url : undefined,
506
173
  });
507
- });
174
+ }
508
175
  const allowed = this.emitEvent('igcAttachmentChange', {
509
176
  detail: [...this.inputAttachments, ...newAttachments],
510
177
  cancelable: true,
@@ -517,22 +184,13 @@ export class ChatState {
517
184
  return (attachment.type === 'image' ||
518
185
  !!attachment.file?.type.startsWith('image/'));
519
186
  }
520
- getFileExtension(fileName) {
521
- const parts = fileName.split('.');
522
- if (parts.length > 1) {
523
- return parts.pop().toLowerCase();
524
- }
525
- return '';
526
- }
527
187
  updateOptions(options) {
528
188
  this.options = { ...this.options, ...options };
529
189
  }
530
- hasSlotContent(name) {
531
- return (this._host.renderRoot.querySelector(`slot[name=${name}]`)
532
- ?.childNodes.length !== 0);
190
+ updateAcceptedTypesCache() {
191
+ this._acceptedTypesCache = this.options?.acceptedFiles
192
+ ? parseAcceptedFileTypes(this.options.acceptedFiles)
193
+ : null;
533
194
  }
534
195
  }
535
- export function createChatState(host) {
536
- return new ChatState(host);
537
- }
538
196
  //# sourceMappingURL=chat-state.js.map