@k2b/ui 0.27.0 → 0.29.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 (323) hide show
  1. package/README.md +1 -1
  2. package/dist/base.css +147 -2
  3. package/dist/browser/actions/ContextMenu.js +35 -4
  4. package/dist/browser/actions/ContextMenu.js.map +1 -1
  5. package/dist/browser/actions/DragAndDrop.js +89 -0
  6. package/dist/browser/actions/DragAndDrop.js.map +1 -0
  7. package/dist/browser/actions/Dropdown.js +184 -158
  8. package/dist/browser/actions/Dropdown.js.map +1 -1
  9. package/dist/browser/actions/GestureMenu.js +95 -139
  10. package/dist/browser/actions/GestureMenu.js.map +1 -1
  11. package/dist/browser/actions/Toolbar.js +379 -48
  12. package/dist/browser/actions/Toolbar.js.map +1 -1
  13. package/dist/browser/actions/drag-and-drop-messages.js +75 -0
  14. package/dist/browser/actions/drag-and-drop-messages.js.map +1 -0
  15. package/dist/browser/actions/drag-and-drop.js +692 -0
  16. package/dist/browser/actions/drag-and-drop.js.map +1 -0
  17. package/dist/browser/actions/index.js +1 -0
  18. package/dist/browser/actions/index.js.map +1 -1
  19. package/dist/browser/actions/menu-rows.js +15 -0
  20. package/dist/browser/actions/menu-rows.js.map +1 -0
  21. package/dist/browser/actions/menu-sheet.js +154 -0
  22. package/dist/browser/actions/menu-sheet.js.map +1 -0
  23. package/dist/browser/actions/toolbar-messages.js +20 -0
  24. package/dist/browser/actions/toolbar-messages.js.map +1 -0
  25. package/dist/browser/chart-inspection.js +3 -0
  26. package/dist/browser/chart-inspection.js.map +1 -0
  27. package/dist/browser/chat/ChatComposer.js +714 -410
  28. package/dist/browser/chat/ChatComposer.js.map +1 -1
  29. package/dist/browser/chat/ChatDecision.js +778 -0
  30. package/dist/browser/chat/ChatDecision.js.map +1 -0
  31. package/dist/browser/chat/ChatPrimitives.js +34 -28
  32. package/dist/browser/chat/ChatPrimitives.js.map +1 -1
  33. package/dist/browser/chat/ChatTimeline.js.map +1 -1
  34. package/dist/browser/chat/chat-messages.js +25 -1
  35. package/dist/browser/chat/chat-messages.js.map +1 -1
  36. package/dist/browser/chat/command-search.js +13 -3
  37. package/dist/browser/chat/command-search.js.map +1 -1
  38. package/dist/browser/chat/index.js +8 -1
  39. package/dist/browser/chat/index.js.map +1 -1
  40. package/dist/browser/chat/reaction-people.js +15 -0
  41. package/dist/browser/chat/reaction-people.js.map +1 -0
  42. package/dist/browser/chat/types.js.map +1 -1
  43. package/dist/browser/content/Calendar.js +3 -3
  44. package/dist/browser/content/Calendar.js.map +1 -1
  45. package/dist/browser/content/Chart.js +60 -86
  46. package/dist/browser/content/Chart.js.map +1 -1
  47. package/dist/browser/content/ChartSnapshotView.js +7 -10
  48. package/dist/browser/content/ChartSnapshotView.js.map +1 -1
  49. package/dist/browser/content/FileBrowser.js +2 -2
  50. package/dist/browser/content/FileBrowser.js.map +1 -1
  51. package/dist/browser/content/FileTree.js +42 -36
  52. package/dist/browser/content/FileTree.js.map +1 -1
  53. package/dist/browser/content/FileTypeIcon.js +72 -0
  54. package/dist/browser/content/FileTypeIcon.js.map +1 -0
  55. package/dist/browser/content/FileView.js +2 -2
  56. package/dist/browser/content/FileView.js.map +1 -1
  57. package/dist/browser/content/MessageRow.js +330 -448
  58. package/dist/browser/content/MessageRow.js.map +1 -1
  59. package/dist/browser/content/ReactionBar.js +419 -0
  60. package/dist/browser/content/ReactionBar.js.map +1 -0
  61. package/dist/browser/content/ReferenceChip.js +162 -0
  62. package/dist/browser/content/ReferenceChip.js.map +1 -0
  63. package/dist/browser/content/calendar-pointer.js +9 -0
  64. package/dist/browser/content/calendar-pointer.js.map +1 -1
  65. package/dist/browser/content/calendar-time-view.js +6 -3
  66. package/dist/browser/content/calendar-time-view.js.map +1 -1
  67. package/dist/browser/content/chart-inspection-core.js +557 -0
  68. package/dist/browser/content/chart-inspection-core.js.map +1 -0
  69. package/dist/browser/content/chart-inspection.js +10 -445
  70. package/dist/browser/content/chart-inspection.js.map +1 -1
  71. package/dist/browser/content/chart-line-gaps.js +1 -1
  72. package/dist/browser/content/chart-line-gaps.js.map +1 -1
  73. package/dist/browser/content/chart-snapshot.js +1 -1
  74. package/dist/browser/content/chart-snapshot.js.map +1 -1
  75. package/dist/browser/content/index.js +3 -0
  76. package/dist/browser/content/index.js.map +1 -1
  77. package/dist/browser/feedback/dialog-core.js +135 -23
  78. package/dist/browser/feedback/dialog-core.js.map +1 -1
  79. package/dist/browser/index.js +1 -0
  80. package/dist/browser/index.js.map +1 -1
  81. package/dist/browser/input-mode.js +40 -0
  82. package/dist/browser/input-mode.js.map +1 -0
  83. package/dist/browser/inputs/FileDropTarget.js +24 -9
  84. package/dist/browser/inputs/FileDropTarget.js.map +1 -1
  85. package/dist/browser/inputs/FileInputs.js +2 -2
  86. package/dist/browser/inputs/FileInputs.js.map +1 -1
  87. package/dist/browser/inputs/SelectChip.js +9 -0
  88. package/dist/browser/inputs/SelectChip.js.map +1 -1
  89. package/dist/browser/inputs/emoji/EmojiPicker.js +13 -0
  90. package/dist/browser/inputs/emoji/EmojiPicker.js.map +1 -1
  91. package/dist/browser/inputs/file-drop.js.map +1 -1
  92. package/dist/browser/layout/AppOverview.js +1 -1
  93. package/dist/browser/layout/AppOverview.js.map +1 -1
  94. package/dist/browser/layout/AppWorkspace.js +644 -445
  95. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  96. package/dist/browser/layout/DetailPanel.js +283 -197
  97. package/dist/browser/layout/DetailPanel.js.map +1 -1
  98. package/dist/browser/layout/Discussion.js +233 -185
  99. package/dist/browser/layout/Discussion.js.map +1 -1
  100. package/dist/browser/layout/PanelDialog.js +88 -86
  101. package/dist/browser/layout/PanelDialog.js.map +1 -1
  102. package/dist/browser/layout/ResizeSeparator.js +81 -0
  103. package/dist/browser/layout/ResizeSeparator.js.map +1 -0
  104. package/dist/browser/layout/SidebarSwitcher.js +9 -2
  105. package/dist/browser/layout/SidebarSwitcher.js.map +1 -1
  106. package/dist/browser/layout/TabBar.js +15 -12
  107. package/dist/browser/layout/TabBar.js.map +1 -1
  108. package/dist/browser/layout/TableOfContents.js +10 -2
  109. package/dist/browser/layout/TableOfContents.js.map +1 -1
  110. package/dist/browser/layout/app-workspace-controller.js +130 -17
  111. package/dist/browser/layout/app-workspace-controller.js.map +1 -1
  112. package/dist/browser/layout/detail-panel-messages.js +35 -0
  113. package/dist/browser/layout/detail-panel-messages.js.map +1 -0
  114. package/dist/browser/layout/index.js +3 -1
  115. package/dist/browser/layout/index.js.map +1 -1
  116. package/dist/browser/layout/resize-separator.js +90 -0
  117. package/dist/browser/layout/resize-separator.js.map +1 -0
  118. package/dist/browser/layout/workspace-messages.js +12 -2
  119. package/dist/browser/layout/workspace-messages.js.map +1 -1
  120. package/dist/browser/surfaces/Avatar.js +50 -20
  121. package/dist/browser/surfaces/Avatar.js.map +1 -1
  122. package/dist/browser/surfaces/AvatarStack.js +406 -0
  123. package/dist/browser/surfaces/AvatarStack.js.map +1 -0
  124. package/dist/browser/surfaces/LinkCard.js +1 -1
  125. package/dist/browser/surfaces/LinkCard.js.map +1 -1
  126. package/dist/browser/surfaces/Placeholder.js +14 -3
  127. package/dist/browser/surfaces/Placeholder.js.map +1 -1
  128. package/dist/browser/surfaces/StatCell.js +23 -0
  129. package/dist/browser/surfaces/StatCell.js.map +1 -1
  130. package/dist/browser/surfaces/avatar-messages.js +8 -2
  131. package/dist/browser/surfaces/avatar-messages.js.map +1 -1
  132. package/dist/browser/surfaces/index.js +1 -0
  133. package/dist/browser/surfaces/index.js.map +1 -1
  134. package/dist/browser/widgets/Widget.js +1 -1
  135. package/dist/browser/widgets/Widget.js.map +1 -1
  136. package/dist/ssr/actions/ContextMenu.js +26 -3
  137. package/dist/ssr/actions/ContextMenu.js.map +1 -1
  138. package/dist/ssr/actions/DragAndDrop.js +63 -0
  139. package/dist/ssr/actions/DragAndDrop.js.map +1 -0
  140. package/dist/ssr/actions/Dropdown.js +140 -72
  141. package/dist/ssr/actions/Dropdown.js.map +1 -1
  142. package/dist/ssr/actions/GestureMenu.js +76 -107
  143. package/dist/ssr/actions/GestureMenu.js.map +1 -1
  144. package/dist/ssr/actions/Toolbar.js +294 -14
  145. package/dist/ssr/actions/Toolbar.js.map +1 -1
  146. package/dist/ssr/actions/drag-and-drop-messages.js +75 -0
  147. package/dist/ssr/actions/drag-and-drop-messages.js.map +1 -0
  148. package/dist/ssr/actions/drag-and-drop.js +692 -0
  149. package/dist/ssr/actions/drag-and-drop.js.map +1 -0
  150. package/dist/ssr/actions/index.js +1 -0
  151. package/dist/ssr/actions/index.js.map +1 -1
  152. package/dist/ssr/actions/menu-rows.js +15 -0
  153. package/dist/ssr/actions/menu-rows.js.map +1 -0
  154. package/dist/ssr/actions/menu-sheet.js +138 -0
  155. package/dist/ssr/actions/menu-sheet.js.map +1 -0
  156. package/dist/ssr/actions/toolbar-messages.js +20 -0
  157. package/dist/ssr/actions/toolbar-messages.js.map +1 -0
  158. package/dist/ssr/chart-inspection.js +3 -0
  159. package/dist/ssr/chart-inspection.js.map +1 -0
  160. package/dist/ssr/chat/ChatComposer.js +393 -102
  161. package/dist/ssr/chat/ChatComposer.js.map +1 -1
  162. package/dist/ssr/chat/ChatDecision.js +465 -0
  163. package/dist/ssr/chat/ChatDecision.js.map +1 -0
  164. package/dist/ssr/chat/ChatPrimitives.js +2 -2
  165. package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
  166. package/dist/ssr/chat/ChatTimeline.js.map +1 -1
  167. package/dist/ssr/chat/chat-messages.js +25 -1
  168. package/dist/ssr/chat/chat-messages.js.map +1 -1
  169. package/dist/ssr/chat/command-search.js +13 -3
  170. package/dist/ssr/chat/command-search.js.map +1 -1
  171. package/dist/ssr/chat/index.js +8 -1
  172. package/dist/ssr/chat/index.js.map +1 -1
  173. package/dist/ssr/chat/reaction-people.js +15 -0
  174. package/dist/ssr/chat/reaction-people.js.map +1 -0
  175. package/dist/ssr/chat/types.js.map +1 -1
  176. package/dist/ssr/content/Calendar.js +3 -3
  177. package/dist/ssr/content/Calendar.js.map +1 -1
  178. package/dist/ssr/content/Chart.js +25 -38
  179. package/dist/ssr/content/Chart.js.map +1 -1
  180. package/dist/ssr/content/ChartSnapshotView.js +7 -10
  181. package/dist/ssr/content/ChartSnapshotView.js.map +1 -1
  182. package/dist/ssr/content/FileBrowser.js +2 -2
  183. package/dist/ssr/content/FileBrowser.js.map +1 -1
  184. package/dist/ssr/content/FileTree.js +21 -14
  185. package/dist/ssr/content/FileTree.js.map +1 -1
  186. package/dist/ssr/content/FileTypeIcon.js +50 -0
  187. package/dist/ssr/content/FileTypeIcon.js.map +1 -0
  188. package/dist/ssr/content/FileView.js +2 -2
  189. package/dist/ssr/content/FileView.js.map +1 -1
  190. package/dist/ssr/content/MessageRow.js +98 -152
  191. package/dist/ssr/content/MessageRow.js.map +1 -1
  192. package/dist/ssr/content/ReactionBar.js +304 -0
  193. package/dist/ssr/content/ReactionBar.js.map +1 -0
  194. package/dist/ssr/content/ReferenceChip.js +121 -0
  195. package/dist/ssr/content/ReferenceChip.js.map +1 -0
  196. package/dist/ssr/content/calendar-pointer.js +9 -0
  197. package/dist/ssr/content/calendar-pointer.js.map +1 -1
  198. package/dist/ssr/content/calendar-time-view.js +6 -3
  199. package/dist/ssr/content/calendar-time-view.js.map +1 -1
  200. package/dist/ssr/content/chart-inspection-core.js +557 -0
  201. package/dist/ssr/content/chart-inspection-core.js.map +1 -0
  202. package/dist/ssr/content/chart-inspection.js +10 -445
  203. package/dist/ssr/content/chart-inspection.js.map +1 -1
  204. package/dist/ssr/content/chart-line-gaps.js +1 -1
  205. package/dist/ssr/content/chart-line-gaps.js.map +1 -1
  206. package/dist/ssr/content/chart-snapshot.js +1 -1
  207. package/dist/ssr/content/chart-snapshot.js.map +1 -1
  208. package/dist/ssr/content/index.js +3 -0
  209. package/dist/ssr/content/index.js.map +1 -1
  210. package/dist/ssr/feedback/dialog-core.js +135 -23
  211. package/dist/ssr/feedback/dialog-core.js.map +1 -1
  212. package/dist/ssr/index.js +1 -0
  213. package/dist/ssr/index.js.map +1 -1
  214. package/dist/ssr/input-mode.js +40 -0
  215. package/dist/ssr/input-mode.js.map +1 -0
  216. package/dist/ssr/inputs/FileDropTarget.js +17 -5
  217. package/dist/ssr/inputs/FileDropTarget.js.map +1 -1
  218. package/dist/ssr/inputs/FileInputs.js +2 -2
  219. package/dist/ssr/inputs/FileInputs.js.map +1 -1
  220. package/dist/ssr/inputs/SelectChip.js +9 -0
  221. package/dist/ssr/inputs/SelectChip.js.map +1 -1
  222. package/dist/ssr/inputs/emoji/EmojiPicker.js +12 -0
  223. package/dist/ssr/inputs/emoji/EmojiPicker.js.map +1 -1
  224. package/dist/ssr/inputs/file-drop.js.map +1 -1
  225. package/dist/ssr/layout/AppOverview.js +1 -1
  226. package/dist/ssr/layout/AppOverview.js.map +1 -1
  227. package/dist/ssr/layout/AppWorkspace.js +272 -95
  228. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  229. package/dist/ssr/layout/DetailPanel.js +112 -58
  230. package/dist/ssr/layout/DetailPanel.js.map +1 -1
  231. package/dist/ssr/layout/Discussion.js +63 -36
  232. package/dist/ssr/layout/Discussion.js.map +1 -1
  233. package/dist/ssr/layout/PanelDialog.js +7 -6
  234. package/dist/ssr/layout/PanelDialog.js.map +1 -1
  235. package/dist/ssr/layout/ResizeSeparator.js +45 -0
  236. package/dist/ssr/layout/ResizeSeparator.js.map +1 -0
  237. package/dist/ssr/layout/SidebarSwitcher.js +9 -2
  238. package/dist/ssr/layout/SidebarSwitcher.js.map +1 -1
  239. package/dist/ssr/layout/TabBar.js +1 -1
  240. package/dist/ssr/layout/TabBar.js.map +1 -1
  241. package/dist/ssr/layout/TableOfContents.js +10 -2
  242. package/dist/ssr/layout/TableOfContents.js.map +1 -1
  243. package/dist/ssr/layout/app-workspace-controller.js +130 -17
  244. package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
  245. package/dist/ssr/layout/detail-panel-messages.js +35 -0
  246. package/dist/ssr/layout/detail-panel-messages.js.map +1 -0
  247. package/dist/ssr/layout/index.js +3 -1
  248. package/dist/ssr/layout/index.js.map +1 -1
  249. package/dist/ssr/layout/resize-separator.js +90 -0
  250. package/dist/ssr/layout/resize-separator.js.map +1 -0
  251. package/dist/ssr/layout/workspace-messages.js +12 -2
  252. package/dist/ssr/layout/workspace-messages.js.map +1 -1
  253. package/dist/ssr/surfaces/Avatar.js +20 -2
  254. package/dist/ssr/surfaces/Avatar.js.map +1 -1
  255. package/dist/ssr/surfaces/AvatarStack.js +286 -0
  256. package/dist/ssr/surfaces/AvatarStack.js.map +1 -0
  257. package/dist/ssr/surfaces/LinkCard.js +1 -1
  258. package/dist/ssr/surfaces/LinkCard.js.map +1 -1
  259. package/dist/ssr/surfaces/Placeholder.js +4 -2
  260. package/dist/ssr/surfaces/Placeholder.js.map +1 -1
  261. package/dist/ssr/surfaces/StatCell.js +23 -0
  262. package/dist/ssr/surfaces/StatCell.js.map +1 -1
  263. package/dist/ssr/surfaces/avatar-messages.js +8 -2
  264. package/dist/ssr/surfaces/avatar-messages.js.map +1 -1
  265. package/dist/ssr/surfaces/index.js +1 -0
  266. package/dist/ssr/surfaces/index.js.map +1 -1
  267. package/dist/ssr/widgets/Widget.js +1 -1
  268. package/dist/ssr/widgets/Widget.js.map +1 -1
  269. package/dist/styles.css +1 -1
  270. package/dist/types/actions/ContextMenu.d.ts +9 -0
  271. package/dist/types/actions/DragAndDrop.d.ts +29 -0
  272. package/dist/types/actions/Dropdown.d.ts +12 -5
  273. package/dist/types/actions/GestureMenu.d.ts +6 -4
  274. package/dist/types/actions/Toolbar.d.ts +20 -0
  275. package/dist/types/actions/drag-and-drop-messages.d.ts +35 -0
  276. package/dist/types/actions/drag-and-drop.d.ts +36 -0
  277. package/dist/types/actions/index.d.ts +3 -1
  278. package/dist/types/actions/menu-rows.d.ts +5 -0
  279. package/dist/types/actions/menu-sheet.d.ts +22 -0
  280. package/dist/types/actions/toolbar-messages.d.ts +8 -0
  281. package/dist/types/chart-inspection.d.ts +2 -0
  282. package/dist/types/chat/ChatComposer.d.ts +26 -1
  283. package/dist/types/chat/ChatDecision.d.ts +133 -0
  284. package/dist/types/chat/ChatPrimitives.d.ts +4 -1
  285. package/dist/types/chat/ChatTimeline.d.ts +2 -1
  286. package/dist/types/chat/chat-messages.d.ts +13 -2
  287. package/dist/types/chat/command-search.d.ts +5 -0
  288. package/dist/types/chat/index.d.ts +25 -1
  289. package/dist/types/chat/reaction-people.d.ts +9 -0
  290. package/dist/types/chat/types.d.ts +54 -1
  291. package/dist/types/content/Chart.d.ts +11 -5
  292. package/dist/types/content/FileTypeIcon.d.ts +27 -0
  293. package/dist/types/content/MessageRow.d.ts +3 -10
  294. package/dist/types/content/ReactionBar.d.ts +32 -0
  295. package/dist/types/content/ReferenceChip.d.ts +49 -0
  296. package/dist/types/content/calendar-pointer.d.ts +6 -0
  297. package/dist/types/content/chart-inspection-core.d.ts +61 -0
  298. package/dist/types/content/chart-inspection.d.ts +4 -20
  299. package/dist/types/content/chart-snapshot.d.ts +1 -1
  300. package/dist/types/content/index.d.ts +5 -1
  301. package/dist/types/feedback/dialog-core.d.ts +16 -1
  302. package/dist/types/index.d.ts +1 -0
  303. package/dist/types/input-mode.d.ts +7 -0
  304. package/dist/types/inputs/FileDropTarget.d.ts +6 -3
  305. package/dist/types/inputs/SelectChip.d.ts +2 -0
  306. package/dist/types/inputs/file-drop.d.ts +2 -0
  307. package/dist/types/layout/AppWorkspace.d.ts +5 -3
  308. package/dist/types/layout/DetailPanel.d.ts +11 -0
  309. package/dist/types/layout/Discussion.d.ts +8 -0
  310. package/dist/types/layout/ResizeSeparator.d.ts +9 -0
  311. package/dist/types/layout/TabBar.d.ts +7 -0
  312. package/dist/types/layout/TableOfContents.d.ts +2 -0
  313. package/dist/types/layout/app-workspace-controller.d.ts +2 -0
  314. package/dist/types/layout/detail-panel-messages.d.ts +15 -0
  315. package/dist/types/layout/index.d.ts +3 -1
  316. package/dist/types/layout/resize-separator.d.ts +18 -0
  317. package/dist/types/layout/workspace-messages.d.ts +5 -0
  318. package/dist/types/surfaces/Avatar.d.ts +12 -0
  319. package/dist/types/surfaces/AvatarStack.d.ts +41 -0
  320. package/dist/types/surfaces/StatCell.d.ts +6 -0
  321. package/dist/types/surfaces/avatar-messages.d.ts +3 -0
  322. package/dist/types/surfaces/index.d.ts +3 -1
  323. package/package.json +7 -2
@@ -13,54 +13,50 @@ var _tmpl$ = ["<span", " style=\"", "\">", "</span>"],
13
13
  _tmpl$7 = ["<time class=\"k2b-message-row__time\"", ">", "</time>"],
14
14
  _tmpl$8 = "<i class=\"ti ti-arrow-back-up\" aria-hidden=\"true\"></i>",
15
15
  _tmpl$9 = ["<span class=\"k2b-message-row__quote-text\"><span class=\"k2b-sr-only\">", " </span><span class=\"k2b-message-row__quote-author\">", "</span> ", "</span>"],
16
- _tmpl$0 = ["<span class=\"k2b-message-row__reaction\" role=\"img\"", "><span aria-hidden=\"true\">", "</span><span aria-hidden=\"true\">", "</span></span>"],
17
- _tmpl$1 = ["<button type=\"button\" class=\"k2b-message-row__reaction\"", "><span aria-hidden=\"true\">", "</span><span aria-hidden=\"true\">", "</span></button>"],
18
- _tmpl$10 = ["<img", " alt", " loading=\"lazy\" decoding=\"async\">"],
19
- _tmpl$11 = "<span class=\"k2b-message-row__media-play\" aria-hidden=\"true\"><i class=\"ti ti-player-play\"></i></span>",
20
- _tmpl$12 = ["<span class=\"k2b-message-row__media-duration\" aria-hidden=\"true\">", "</span>"],
21
- _tmpl$13 = ["<span class=\"k2b-message-row__media-more\" aria-hidden=\"true\">+", "</span>"],
22
- _tmpl$14 = ["<span class=\"k2b-message-row__avatar\" aria-hidden=\"true\">", "</span>"],
23
- _tmpl$15 = ["<div class=\"k2b-message-row__gutter\">", "</div>"],
24
- _tmpl$16 = ["<div class=\"k2b-message-row__meta\">", "</div>"],
25
- _tmpl$17 = ["<div class=\"k2b-message-row__marker\"><i class=\"ti ti-arrow-forward-up\" aria-hidden=\"true\"></i><span>", "</span></div>"],
26
- _tmpl$18 = ["<div", " class=\"k2b-content-markdown k2b-message-row__text\" data-heading-scale=\"compact\"", ">", "</div>"],
27
- _tmpl$19 = ["<span class=\"k2b-message-row__edited\">", "</span>"],
28
- _tmpl$20 = ["<div class=\"k2b-message-row__more-line\">", "", "</div>"],
29
- _tmpl$21 = ["<div class=\"k2b-message-row__bubble\"", ">", "</div>"],
30
- _tmpl$22 = ["<div class=\"k2b-message-row__marker\"><i class=\"ti ti-pencil\" aria-hidden=\"true\"></i><span class=\"k2b-message-row__edited\">", "</span></div>"],
31
- _tmpl$23 = ["<div class=\"k2b-message-row__media\" role=\"group\"", " style=\"", "\">", "</div>"],
32
- _tmpl$24 = ["<div class=\"k2b-message-row__files\">", "</div>"],
33
- _tmpl$25 = ["<div class=\"k2b-message-row__slot\" data-gesture-ignore>", "</div>"],
34
- _tmpl$26 = ["<div class=\"k2b-message-row__line\">", "</div>"],
35
- _tmpl$27 = ["<div class=\"k2b-message-row__footer\">", "", "</div>"],
36
- _tmpl$28 = ["<div class=\"k2b-message-row__actions\" role=\"group\"", ">", "</div>"],
37
- _tmpl$29 = ["<div", ">", "<div class=\"k2b-message-row__body\">", "", "", "", "", "", "", "", "", "", "", "</div>", "</div>"],
38
- _tmpl$30 = ["<span class=\"k2b-sr-only\">", ", ", ": </span>"],
39
- _tmpl$31 = ["<div class=\"k2b-message-row__meta\"><span class=\"k2b-sr-only\">", ", </span><time class=\"k2b-message-row__time\"", ">", "</time></div>"],
40
- _tmpl$32 = ["<div class=\"k2b-message-row__quote\">", "</div>"],
41
- _tmpl$33 = ["<button type=\"button\" class=\"k2b-message-row__quote\">", "</button>"],
42
- _tmpl$34 = ["<span class=\"k2b-message-row__deleted\"><i class=\"ti ti-message-off\" aria-hidden=\"true\"></i>", "</span>"],
43
- _tmpl$35 = "<span class=\"k2b-message-row__writing\"><span class=\"k2b-chat-progress-dots\" aria-hidden=\"true\"><span></span><span></span><span></span></span></span>",
44
- _tmpl$36 = ["<span class=\"k2b-message-row__file-icon\" aria-hidden=\"true\"><i", "></i></span>"],
45
- _tmpl$37 = ["<span class=\"k2b-message-row__file-detail\">", "</span>"],
46
- _tmpl$38 = ["<span class=\"k2b-message-row__file-copy\"><span class=\"k2b-message-row__file-name\">", "</span>", "</span>"],
47
- _tmpl$39 = ["<span class=\"k2b-message-row__thread-people\" aria-hidden=\"true\">", "</span>"],
48
- _tmpl$40 = ["<button type=\"button\" class=\"k2b-message-row__thread\">", "<span class=\"k2b-message-row__thread-count\">", "</span>", "</button>"],
49
- _tmpl$41 = ["<time class=\"k2b-message-row__thread-time\"", ">", "</time>"],
50
- _tmpl$42 = ["<div class=\"k2b-message-row__reactions\" role=\"group\"", ">", "", "</div>"],
51
- _tmpl$43 = "<i class=\"ti ti-mood-plus\" aria-hidden=\"true\"></i>",
52
- _tmpl$44 = "<i class=\"ti ti-clock\" aria-hidden=\"true\"></i>",
53
- _tmpl$45 = ["<span>", "</span>"],
54
- _tmpl$46 = "<i class=\"ti ti-alert-circle\" aria-hidden=\"true\"></i>",
55
- _tmpl$47 = "<i class=\"ti ti-check\" aria-hidden=\"true\"></i>",
56
- _tmpl$48 = ["<span class=\"k2b-sr-only\">", "</span>"],
57
- _tmpl$49 = "<i class=\"ti ti-checks\" aria-hidden=\"true\"></i>",
58
- _tmpl$50 = ["<span class=\"k2b-message-row__receipt\">", "</span>"],
59
- _tmpl$51 = "<i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\"></i>",
60
- _tmpl$52 = ["<span class=\"k2b-message-row__line-text\">", "</span>"],
61
- _tmpl$53 = ["<i", " aria-hidden=\"true\"></i>"],
62
- _tmpl$54 = ["<time", ">", "</time>"],
63
- _tmpl$55 = ["<div", ">", "<span>", "</span>", "</div>"];
16
+ _tmpl$0 = ["<img", " alt", " loading=\"lazy\" decoding=\"async\">"],
17
+ _tmpl$1 = "<span class=\"k2b-message-row__media-play\" aria-hidden=\"true\"><i class=\"ti ti-player-play\"></i></span>",
18
+ _tmpl$10 = ["<span class=\"k2b-message-row__media-duration\" aria-hidden=\"true\">", "</span>"],
19
+ _tmpl$11 = ["<span class=\"k2b-message-row__media-more\" aria-hidden=\"true\">+", "</span>"],
20
+ _tmpl$12 = ["<span class=\"k2b-message-row__avatar\" aria-hidden=\"true\">", "</span>"],
21
+ _tmpl$13 = ["<div class=\"k2b-message-row__gutter\">", "</div>"],
22
+ _tmpl$14 = ["<div class=\"k2b-message-row__meta\">", "</div>"],
23
+ _tmpl$15 = ["<div class=\"k2b-message-row__marker\"><i class=\"ti ti-arrow-forward-up\" aria-hidden=\"true\"></i><span>", "</span></div>"],
24
+ _tmpl$16 = ["<div", " class=\"k2b-content-markdown k2b-message-row__text\" data-heading-scale=\"compact\"", ">", "</div>"],
25
+ _tmpl$17 = ["<span class=\"k2b-message-row__edited\">", "</span>"],
26
+ _tmpl$18 = ["<div class=\"k2b-message-row__more-line\">", "", "</div>"],
27
+ _tmpl$19 = ["<div class=\"k2b-message-row__bubble\"", ">", "</div>"],
28
+ _tmpl$20 = ["<div class=\"k2b-message-row__marker\"><i class=\"ti ti-pencil\" aria-hidden=\"true\"></i><span class=\"k2b-message-row__edited\">", "</span></div>"],
29
+ _tmpl$21 = ["<div class=\"k2b-message-row__media\" role=\"group\"", " style=\"", "\">", "</div>"],
30
+ _tmpl$22 = ["<div class=\"k2b-message-row__files\">", "</div>"],
31
+ _tmpl$23 = ["<div class=\"k2b-message-row__slot\" data-gesture-ignore>", "</div>"],
32
+ _tmpl$24 = ["<div class=\"k2b-message-row__line\">", "</div>"],
33
+ _tmpl$25 = ["<div class=\"k2b-message-row__footer\">", "", "</div>"],
34
+ _tmpl$26 = ["<div class=\"k2b-message-row__actions\" role=\"group\"", ">", "</div>"],
35
+ _tmpl$27 = ["<div", ">", "<div class=\"k2b-message-row__body\">", "", "", "", "", "", "", "", "", "", "", "</div>", "</div>"],
36
+ _tmpl$28 = ["<span class=\"k2b-sr-only\">", ", ", ": </span>"],
37
+ _tmpl$29 = ["<div class=\"k2b-message-row__meta\"><span class=\"k2b-sr-only\">", ", </span><time class=\"k2b-message-row__time\"", ">", "</time></div>"],
38
+ _tmpl$30 = ["<div class=\"k2b-message-row__quote\">", "</div>"],
39
+ _tmpl$31 = ["<button type=\"button\" class=\"k2b-message-row__quote\">", "</button>"],
40
+ _tmpl$32 = ["<span class=\"k2b-message-row__deleted\"><i class=\"ti ti-message-off\" aria-hidden=\"true\"></i>", "</span>"],
41
+ _tmpl$33 = "<span class=\"k2b-message-row__writing\"><span class=\"k2b-chat-progress-dots\" aria-hidden=\"true\"><span></span><span></span><span></span></span></span>",
42
+ _tmpl$34 = ["<span class=\"k2b-message-row__file-icon\" aria-hidden=\"true\"><i", "></i></span>"],
43
+ _tmpl$35 = ["<span class=\"k2b-message-row__file-detail\">", "</span>"],
44
+ _tmpl$36 = ["<span class=\"k2b-message-row__file-copy\"><span class=\"k2b-message-row__file-name\">", "</span>", "</span>"],
45
+ _tmpl$37 = ["<span class=\"k2b-message-row__thread-people\" aria-hidden=\"true\">", "</span>"],
46
+ _tmpl$38 = ["<button type=\"button\" class=\"k2b-message-row__thread\">", "<span class=\"k2b-message-row__thread-count\">", "</span>", "</button>"],
47
+ _tmpl$39 = ["<time class=\"k2b-message-row__thread-time\"", ">", "</time>"],
48
+ _tmpl$40 = "<i class=\"ti ti-clock\" aria-hidden=\"true\"></i>",
49
+ _tmpl$41 = ["<span>", "</span>"],
50
+ _tmpl$42 = "<i class=\"ti ti-alert-circle\" aria-hidden=\"true\"></i>",
51
+ _tmpl$43 = "<i class=\"ti ti-check\" aria-hidden=\"true\"></i>",
52
+ _tmpl$44 = ["<span class=\"k2b-sr-only\">", "</span>"],
53
+ _tmpl$45 = "<i class=\"ti ti-checks\" aria-hidden=\"true\"></i>",
54
+ _tmpl$46 = ["<span class=\"k2b-message-row__receipt\">", "</span>"],
55
+ _tmpl$47 = "<i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\"></i>",
56
+ _tmpl$48 = ["<span class=\"k2b-message-row__line-text\">", "</span>"],
57
+ _tmpl$49 = ["<i", " aria-hidden=\"true\"></i>"],
58
+ _tmpl$50 = ["<time", ">", "</time>"],
59
+ _tmpl$51 = ["<div", ">", "<span>", "</span>", "</div>"];
64
60
  import { fileIcons } from "@k2b/stdlib";
65
61
  import { createMemo, createSignal, createUniqueId, For, onCleanup, Show } from "solid-js";
66
62
  import { Button, IconButton } from "../actions/Button";
@@ -69,9 +65,9 @@ import { useChatMessages } from "../chat/chat-messages";
69
65
  import { announce } from "../feedback/announce";
70
66
  import { useLocale } from "../intl/locale";
71
67
  import { useUiMessages } from "../intl/messages";
72
- import { ScrollArea } from "../layout/ScrollArea";
73
68
  import { Avatar } from "../surfaces/Avatar";
74
69
  import { createSafeMarked, createSafeRenderer, escapeHtml } from "./MarkdownView";
70
+ import { ReactionBar } from "./ReactionBar";
75
71
 
76
72
  /** Messages by the same author within this time continue a group. */
77
73
  const GROUP_WINDOW_MS = 5 * 60_000;
@@ -100,6 +96,9 @@ const MEDIA_SHOWN = 4;
100
96
  /** A single image keeps its own aspect ratio within these bounds; beyond them it is cropped to fit. */
101
97
  const MEDIA_RATIO_MIN = 0.5;
102
98
  const MEDIA_RATIO_MAX = 3;
99
+
100
+ /** Reaction labels are read by screen readers and shown in the names hint. */
101
+
103
102
  const timestamp = value => value instanceof Date ? value.getTime() : new Date(value).getTime();
104
103
 
105
104
  /**
@@ -293,9 +292,6 @@ export function MessageRow(props) {
293
292
  const groupStart = () => props.groupStart ?? true;
294
293
  const hasLine = () => props.progress !== undefined || props.status !== undefined || props.receipt !== undefined;
295
294
  const reactions = () => props.deleted ? undefined : props.reactions;
296
- // Chips follow their keys, so a chip keeps its element, and focus, when the caller passes new objects for it.
297
- const reactionKeys = createMemo(() => reactions()?.map(reaction => reaction.key) ?? []);
298
- const reactionByKey = createMemo(() => new Map(reactions()?.map(reaction => [reaction.key, reaction])));
299
295
  const hasFooter = () => hasLine() || reactions() !== undefined;
300
296
  const writing = () => props.progress !== undefined && !props.deleted && props.text.trim() === "";
301
297
  const hasBubble = () => props.deleted || writing() || props.text.trim() !== "";
@@ -341,25 +337,6 @@ export function MessageRow(props) {
341
337
  const mediaLabel = (item, more) => [item.alt, item.kind === "video" ? [chatMessages().messageVideo, item.duration].filter(Boolean).join(" ") : "", more > 0 ? chatMessages().messageMoreAttachments({
342
338
  count: more
343
339
  }) : ""].filter(Boolean).join(", ");
344
-
345
- /** A toggle button, or with no `onToggleReaction` a labelled image that also says whether the reader reacted. */
346
- const reactionChip = (key, reaction) => {
347
- const label = own => chatMessages().messageReaction({
348
- emoji: reaction().emoji,
349
- count: reaction().count,
350
- names: reaction().label,
351
- own
352
- });
353
- return _$createComponent(Show, {
354
- get when() {
355
- return props.onToggleReaction;
356
- },
357
- get fallback() {
358
- return _$ssr(_tmpl$0, _$ssrAttribute("aria-label", _$escape(label(Boolean(reaction().own)), true), false) + _$ssrAttribute("title", _$escape(reaction().label, true), false) + _$ssrAttribute("data-own", reaction().own ? "" : _$escape(undefined, true), false), _$escape(reaction().emoji), _$escape(reaction().count));
359
- },
360
- children: toggle => _$ssr(_tmpl$1, _$ssrAttribute("aria-pressed", reaction().own ? "true" : "false", false) + _$ssrAttribute("aria-label", _$escape(label(false), true), false) + _$ssrAttribute("title", _$escape(reaction().label, true), false) + _$ssrAttribute("data-own", reaction().own ? "" : _$escape(undefined, true), false), _$escape(reaction().emoji), _$escape(reaction().count))
361
- });
362
- };
363
340
  const mediaItem = (item, index) => {
364
341
  const more = () => index() === shownMedia().length - 1 ? hiddenMedia() : 0;
365
342
  return _$createComponent(AttachmentTarget, {
@@ -379,17 +356,17 @@ export function MessageRow(props) {
379
356
  return item.href;
380
357
  },
381
358
  get children() {
382
- return [_$ssr(_tmpl$10, _$ssrAttribute("src", _$escape(attachmentUrl(item.src, true), true), false), _$ssrAttribute("width", item.width > 0 ? _$escape(item.width, true) : _$escape(undefined, true), false) + _$ssrAttribute("height", item.height > 0 ? _$escape(item.height, true) : _$escape(undefined, true), false)), _$createComponent(Show, {
359
+ return [_$ssr(_tmpl$0, _$ssrAttribute("src", _$escape(attachmentUrl(item.src, true), true), false), _$ssrAttribute("width", item.width > 0 ? _$escape(item.width, true) : _$escape(undefined, true), false) + _$ssrAttribute("height", item.height > 0 ? _$escape(item.height, true) : _$escape(undefined, true), false)), _$createComponent(Show, {
383
360
  get when() {
384
361
  return item.kind === "video";
385
362
  },
386
363
  get children() {
387
- return [_$ssr(_tmpl$11), _$createComponent(Show, {
364
+ return [_$ssr(_tmpl$1), _$createComponent(Show, {
388
365
  get when() {
389
366
  return item.duration;
390
367
  },
391
368
  get children() {
392
- return _$ssr(_tmpl$12, _$escape(item.duration));
369
+ return _$ssr(_tmpl$10, _$escape(item.duration));
393
370
  }
394
371
  })];
395
372
  }
@@ -398,23 +375,23 @@ export function MessageRow(props) {
398
375
  return more() > 0;
399
376
  },
400
377
  get children() {
401
- return _$ssr(_tmpl$13, _$escape(more()));
378
+ return _$ssr(_tmpl$11, _$escape(more()));
402
379
  }
403
380
  })];
404
381
  }
405
382
  });
406
383
  };
407
- return _$ssr(_tmpl$29, _$ssrAttribute("class", props.class ? `k2b-message-row ${_$escape(props.class, true)}` : "k2b-message-row", false) + _$ssrAttribute("data-own", props.own ? "" : _$escape(undefined, true), false) + _$ssrAttribute("data-group-start", groupStart() ? "" : _$escape(undefined, true), false) + _$ssrAttribute("data-status", _$escape(props.status, true), false) + _$ssrAttribute("data-media", media().length > 0 ? "" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
384
+ return _$ssr(_tmpl$27, _$ssrAttribute("class", props.class ? `k2b-message-row ${_$escape(props.class, true)}` : "k2b-message-row", false) + _$ssrAttribute("data-own", props.own ? "" : _$escape(undefined, true), false) + _$ssrAttribute("data-group-start", groupStart() ? "" : _$escape(undefined, true), false) + _$ssrAttribute("data-status", _$escape(props.status, true), false) + _$ssrAttribute("data-media", media().length > 0 ? "" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
408
385
  get when() {
409
386
  return !props.own;
410
387
  },
411
388
  get children() {
412
- return _$ssr(_tmpl$15, _$escape(_$createComponent(Show, {
389
+ return _$ssr(_tmpl$13, _$escape(_$createComponent(Show, {
413
390
  get when() {
414
391
  return groupStart();
415
392
  },
416
393
  get children() {
417
- return _$ssr(_tmpl$14, _$escape(_$createComponent(Avatar, {
394
+ return _$ssr(_tmpl$12, _$escape(_$createComponent(Avatar, {
418
395
  get name() {
419
396
  return props.author.name;
420
397
  },
@@ -434,7 +411,7 @@ export function MessageRow(props) {
434
411
  return groupStart();
435
412
  },
436
413
  get fallback() {
437
- return _$ssr(_tmpl$30, _$escape(props.author.name), _$escape(props.time));
414
+ return _$ssr(_tmpl$28, _$escape(props.author.name), _$escape(props.time));
438
415
  },
439
416
  get children() {
440
417
  return _$createComponent(Show, {
@@ -442,10 +419,10 @@ export function MessageRow(props) {
442
419
  return !props.own;
443
420
  },
444
421
  get fallback() {
445
- return _$ssr(_tmpl$31, _$escape(props.author.name), _$ssrAttribute("datetime", _$escape(dateTimeOf(props.dateTime), true), false), _$escape(props.time));
422
+ return _$ssr(_tmpl$29, _$escape(props.author.name), _$ssrAttribute("datetime", _$escape(dateTimeOf(props.dateTime), true), false), _$escape(props.time));
446
423
  },
447
424
  get children() {
448
- return _$ssr(_tmpl$16, _$escape(header()));
425
+ return _$ssr(_tmpl$14, _$escape(header()));
449
426
  }
450
427
  });
451
428
  }
@@ -454,7 +431,7 @@ export function MessageRow(props) {
454
431
  return _$memo(() => !!content())() && props.forwarded;
455
432
  },
456
433
  get children() {
457
- return _$ssr(_tmpl$17, _$escape(chatMessages().messageForwarded));
434
+ return _$ssr(_tmpl$15, _$escape(chatMessages().messageForwarded));
458
435
  }
459
436
  })), _$escape(_$createComponent(Show, {
460
437
  get when() {
@@ -465,21 +442,21 @@ export function MessageRow(props) {
465
442
  return value().onSelect;
466
443
  },
467
444
  get fallback() {
468
- return _$ssr(_tmpl$32, _$escape(quote(value())));
445
+ return _$ssr(_tmpl$30, _$escape(quote(value())));
469
446
  },
470
- children: select => _$ssr(_tmpl$33, _$escape(quote(value())))
447
+ children: select => _$ssr(_tmpl$31, _$escape(quote(value())))
471
448
  })
472
449
  })), _$escape(_$createComponent(Show, {
473
450
  get when() {
474
451
  return hasBubble();
475
452
  },
476
453
  get children() {
477
- return _$ssr(_tmpl$21, _$ssrAttribute("data-deleted", props.deleted ? "" : _$escape(undefined, true), false) + _$ssrAttribute("aria-busy", props.progress && !props.deleted ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
454
+ return _$ssr(_tmpl$19, _$ssrAttribute("data-deleted", props.deleted ? "" : _$escape(undefined, true), false) + _$ssrAttribute("aria-busy", props.progress && !props.deleted ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
478
455
  get when() {
479
456
  return !props.deleted;
480
457
  },
481
458
  get fallback() {
482
- return _$ssr(_tmpl$34, _$escape(chatMessages().messageDeleted));
459
+ return _$ssr(_tmpl$32, _$escape(chatMessages().messageDeleted));
483
460
  },
484
461
  get children() {
485
462
  return _$createComponent(Show, {
@@ -487,15 +464,15 @@ export function MessageRow(props) {
487
464
  return !writing();
488
465
  },
489
466
  get fallback() {
490
- return _$ssr(_tmpl$35);
467
+ return _$ssr(_tmpl$33);
491
468
  },
492
469
  get children() {
493
- return [_$ssr(_tmpl$18, _$ssrAttribute("id", _$escape(textId, true), false), _$ssrAttribute("data-collapsed", collapsed() ? "" : _$escape(undefined, true), false), rendered().html), _$createComponent(Show, {
470
+ return [_$ssr(_tmpl$16, _$ssrAttribute("id", _$escape(textId, true), false), _$ssrAttribute("data-collapsed", collapsed() ? "" : _$escape(undefined, true), false), rendered().html), _$createComponent(Show, {
494
471
  get when() {
495
472
  return collapsible();
496
473
  },
497
474
  get children() {
498
- return _$ssr(_tmpl$20, _$escape(_$createComponent(Button, {
475
+ return _$ssr(_tmpl$18, _$escape(_$createComponent(Button, {
499
476
  variant: "text",
500
477
  size: "xs",
501
478
  "class": "k2b-message-row__more",
@@ -512,7 +489,7 @@ export function MessageRow(props) {
512
489
  return props.edited;
513
490
  },
514
491
  get children() {
515
- return _$ssr(_tmpl$19, _$escape(chatMessages().messageEdited));
492
+ return _$ssr(_tmpl$17, _$escape(chatMessages().messageEdited));
516
493
  }
517
494
  })));
518
495
  }
@@ -527,14 +504,14 @@ export function MessageRow(props) {
527
504
  return _$memo(() => !!(content() && props.edited))() && !hasBubble();
528
505
  },
529
506
  get children() {
530
- return _$ssr(_tmpl$22, _$escape(chatMessages().messageEdited));
507
+ return _$ssr(_tmpl$20, _$escape(chatMessages().messageEdited));
531
508
  }
532
509
  })), _$escape(_$createComponent(Show, {
533
510
  get when() {
534
511
  return media().length > 0;
535
512
  },
536
513
  get children() {
537
- return _$ssr(_tmpl$23, _$ssrAttribute("aria-label", _$escape(chatMessages().attachments, true), false) + _$ssrAttribute("data-count", _$escape(Math.min(media().length, MEDIA_SHOWN), true), false), _$ssrStyle(media().length === 1 ? {
514
+ return _$ssr(_tmpl$21, _$ssrAttribute("aria-label", _$escape(chatMessages().attachments, true), false) + _$ssrAttribute("data-count", _$escape(Math.min(media().length, MEDIA_SHOWN), true), false), _$ssrStyle(media().length === 1 ? {
538
515
  width: mediaWidth(media()[0])
539
516
  } : undefined), _$escape(_$createComponent(For, {
540
517
  get each() {
@@ -548,7 +525,7 @@ export function MessageRow(props) {
548
525
  return files().length > 0;
549
526
  },
550
527
  get children() {
551
- return _$ssr(_tmpl$24, _$escape(_$createComponent(For, {
528
+ return _$ssr(_tmpl$22, _$escape(_$createComponent(For, {
552
529
  get each() {
553
530
  return files();
554
531
  },
@@ -561,12 +538,12 @@ export function MessageRow(props) {
561
538
  return file.href;
562
539
  },
563
540
  get children() {
564
- return [_$ssr(_tmpl$36, _$ssrAttribute("class", _$escape(fileIcon(file), true), false)), _$ssr(_tmpl$38, _$escape(file.name), _$escape(_$createComponent(Show, {
541
+ return [_$ssr(_tmpl$34, _$ssrAttribute("class", _$escape(fileIcon(file), true), false)), _$ssr(_tmpl$36, _$escape(file.name), _$escape(_$createComponent(Show, {
565
542
  get when() {
566
543
  return file.detail;
567
544
  },
568
545
  get children() {
569
- return _$ssr(_tmpl$37, _$escape(file.detail));
546
+ return _$ssr(_tmpl$35, _$escape(file.detail));
570
547
  }
571
548
  })))];
572
549
  }
@@ -578,25 +555,25 @@ export function MessageRow(props) {
578
555
  return _$memo(() => !!content())() && props.linkPreview;
579
556
  },
580
557
  get children() {
581
- return _$ssr(_tmpl$25, _$escape(props.linkPreview));
558
+ return _$ssr(_tmpl$23, _$escape(props.linkPreview));
582
559
  }
583
560
  })), _$escape(_$createComponent(Show, {
584
561
  get when() {
585
562
  return _$memo(() => !!content())() && props.card;
586
563
  },
587
564
  get children() {
588
- return _$ssr(_tmpl$25, _$escape(props.card));
565
+ return _$ssr(_tmpl$23, _$escape(props.card));
589
566
  }
590
567
  })), _$escape(_$createComponent(Show, {
591
568
  get when() {
592
569
  return props.thread;
593
570
  },
594
- children: thread => _$ssr(_tmpl$40, _$escape(_$createComponent(Show, {
571
+ children: thread => _$ssr(_tmpl$38, _$escape(_$createComponent(Show, {
595
572
  get when() {
596
573
  return (thread().participants?.length ?? 0) > 0;
597
574
  },
598
575
  get children() {
599
- return _$ssr(_tmpl$39, _$escape(_$createComponent(For, {
576
+ return _$ssr(_tmpl$37, _$escape(_$createComponent(For, {
600
577
  get each() {
601
578
  return thread().participants?.slice(0, 3);
602
579
  },
@@ -620,7 +597,7 @@ export function MessageRow(props) {
620
597
  get when() {
621
598
  return thread().lastReply;
622
599
  },
623
- children: time => _$ssr(_tmpl$41, _$ssrAttribute("datetime", _$escape(dateTimeOf(thread().lastReplyDateTime), true), false), _$escape(chatMessages().messageLastReply({
600
+ children: time => _$ssr(_tmpl$39, _$ssrAttribute("datetime", _$escape(dateTimeOf(thread().lastReplyDateTime), true), false), _$escape(chatMessages().messageLastReply({
624
601
  time: time()
625
602
  })))
626
603
  })))
@@ -629,58 +606,27 @@ export function MessageRow(props) {
629
606
  return hasFooter();
630
607
  },
631
608
  get children() {
632
- return _$ssr(_tmpl$27, _$escape(_$createComponent(Show, {
609
+ return _$ssr(_tmpl$25, _$escape(_$createComponent(Show, {
633
610
  get when() {
634
611
  return reactions();
635
612
  },
636
- children: list => _$ssr(_tmpl$42, _$ssrAttribute("aria-label", _$escape(chatMessages().messageReactions, true), false) + _$ssrAttribute("data-empty", list().length === 0 ? "" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
637
- get when() {
638
- return list().length > 0;
613
+ children: list => _$createComponent(ReactionBar, {
614
+ get reactions() {
615
+ return list();
639
616
  },
640
- get children() {
641
- return _$createComponent(ScrollArea, {
642
- orientation: "horizontal",
643
- "class": "k2b-message-row__reaction-list",
644
- get tabindex() {
645
- return props.onToggleReaction ? undefined : 0;
646
- },
647
- get children() {
648
- return _$createComponent(For, {
649
- get each() {
650
- return reactionKeys();
651
- },
652
- children: key => _$createComponent(Show, {
653
- get when() {
654
- return reactionByKey().get(key);
655
- },
656
- children: reaction => reactionChip(key, reaction)
657
- })
658
- });
659
- }
660
- });
661
- }
662
- })), _$escape(_$createComponent(Show, {
663
- get when() {
664
- return props.onAddReaction;
617
+ get onToggle() {
618
+ return props.onToggleReaction;
665
619
  },
666
- children: add => _$createComponent(IconButton, {
667
- get label() {
668
- return chatMessages().messageAddReaction;
669
- },
670
- size: "xs",
671
- "class": "k2b-message-row__react",
672
- onClick: event => add()(event.currentTarget),
673
- get children() {
674
- return _$ssr(_tmpl$43);
675
- }
676
- })
677
- })))
620
+ get onAdd() {
621
+ return props.onAddReaction;
622
+ }
623
+ })
678
624
  })), _$escape(_$createComponent(Show, {
679
625
  get when() {
680
626
  return hasLine();
681
627
  },
682
628
  get children() {
683
- return _$ssr(_tmpl$26, _$escape(_$createComponent(Show, {
629
+ return _$ssr(_tmpl$24, _$escape(_$createComponent(Show, {
684
630
  get when() {
685
631
  return props.progress;
686
632
  },
@@ -690,14 +636,14 @@ export function MessageRow(props) {
690
636
  return props.status === "pending";
691
637
  },
692
638
  get children() {
693
- return [_$ssr(_tmpl$44), _$ssr(_tmpl$45, _$escape(chatMessages().sending))];
639
+ return [_$ssr(_tmpl$40), _$ssr(_tmpl$41, _$escape(chatMessages().sending))];
694
640
  }
695
641
  }), _$createComponent(Show, {
696
642
  get when() {
697
643
  return props.status === "failed";
698
644
  },
699
645
  get children() {
700
- return [_$ssr(_tmpl$46), _$ssr(_tmpl$45, _$escape(chatMessages().messageNotSent)), _$createComponent(Show, {
646
+ return [_$ssr(_tmpl$42), _$ssr(_tmpl$41, _$escape(chatMessages().messageNotSent)), _$createComponent(Show, {
701
647
  get when() {
702
648
  return props.onRetry;
703
649
  },
@@ -726,16 +672,16 @@ export function MessageRow(props) {
726
672
  return props.status === "sent";
727
673
  },
728
674
  get children() {
729
- return [_$ssr(_tmpl$47), _$ssr(_tmpl$48, _$escape(chatMessages().messageSent))];
675
+ return [_$ssr(_tmpl$43), _$ssr(_tmpl$44, _$escape(chatMessages().messageSent))];
730
676
  }
731
677
  });
732
678
  },
733
- children: receipt => [_$ssr(_tmpl$49), _$ssr(_tmpl$50, _$escape(receipt()))]
679
+ children: receipt => [_$ssr(_tmpl$45), _$ssr(_tmpl$46, _$escape(receipt()))]
734
680
  });
735
681
  }
736
682
  })];
737
683
  },
738
- children: progress => [_$ssr(_tmpl$51), _$ssr(_tmpl$52, _$escape(progress().status)), _$createComponent(Show, {
684
+ children: progress => [_$ssr(_tmpl$47), _$ssr(_tmpl$48, _$escape(progress().status)), _$createComponent(Show, {
739
685
  get when() {
740
686
  return progress().onStop;
741
687
  },
@@ -757,7 +703,7 @@ export function MessageRow(props) {
757
703
  return (props.actions?.length ?? 0) > 0;
758
704
  },
759
705
  get children() {
760
- return _$ssr(_tmpl$28, _$ssrAttribute("aria-label", _$escape(chatMessages().messageActions, true), false), _$escape(_$createComponent(For, {
706
+ return _$ssr(_tmpl$26, _$ssrAttribute("aria-label", _$escape(chatMessages().messageActions, true), false), _$escape(_$createComponent(For, {
761
707
  get each() {
762
708
  return props.actions;
763
709
  },
@@ -771,7 +717,7 @@ export function MessageRow(props) {
771
717
  },
772
718
  onClick: () => action.onSelect(),
773
719
  get children() {
774
- return _$ssr(_tmpl$53, _$ssrAttribute("class", _$escape(action.icon, true), false));
720
+ return _$ssr(_tmpl$49, _$ssrAttribute("class", _$escape(action.icon, true), false));
775
721
  }
776
722
  })
777
723
  })));
@@ -781,17 +727,17 @@ export function MessageRow(props) {
781
727
 
782
728
  /** A quiet, centered line for something that happened in the conversation, such as a person joining. */
783
729
  export function MessageSystemRow(props) {
784
- return _$ssr(_tmpl$55, _$ssrAttribute("class", props.class ? `k2b-message-system-row ${_$escape(props.class, true)}` : "k2b-message-system-row", false), _$escape(_$createComponent(Show, {
730
+ return _$ssr(_tmpl$51, _$ssrAttribute("class", props.class ? `k2b-message-system-row ${_$escape(props.class, true)}` : "k2b-message-system-row", false), _$escape(_$createComponent(Show, {
785
731
  get when() {
786
732
  return props.icon;
787
733
  },
788
- children: icon => _$ssr(_tmpl$53, _$ssrAttribute("class", _$escape(icon(), true), false))
734
+ children: icon => _$ssr(_tmpl$49, _$ssrAttribute("class", _$escape(icon(), true), false))
789
735
  })), _$escape(props.children), _$escape(_$createComponent(Show, {
790
736
  get when() {
791
737
  return props.time;
792
738
  },
793
739
  get children() {
794
- return _$ssr(_tmpl$54, _$ssrAttribute("datetime", _$escape(dateTimeOf(props.dateTime), true), false), _$escape(props.time));
740
+ return _$ssr(_tmpl$50, _$ssrAttribute("datetime", _$escape(dateTimeOf(props.dateTime), true), false), _$escape(props.time));
795
741
  }
796
742
  })));
797
743
  }