@k2b/ui 0.32.0 → 0.34.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 (292) hide show
  1. package/dist/base.css +14 -1
  2. package/dist/browser/actions/ContextMenu.js +13 -0
  3. package/dist/browser/actions/ContextMenu.js.map +1 -1
  4. package/dist/browser/actions/Dropdown.js +173 -102
  5. package/dist/browser/actions/Dropdown.js.map +1 -1
  6. package/dist/browser/actions/FilterChip.js +113 -56
  7. package/dist/browser/actions/FilterChip.js.map +1 -1
  8. package/dist/browser/actions/SelectionToolbar.js +129 -0
  9. package/dist/browser/actions/SelectionToolbar.js.map +1 -0
  10. package/dist/browser/actions/filter-messages.js +26 -2
  11. package/dist/browser/actions/filter-messages.js.map +1 -1
  12. package/dist/browser/actions/index.js +1 -0
  13. package/dist/browser/actions/index.js.map +1 -1
  14. package/dist/browser/actions/menu-rows.js +23 -3
  15. package/dist/browser/actions/menu-rows.js.map +1 -1
  16. package/dist/browser/actions/menu-sheet.js +2 -7
  17. package/dist/browser/actions/menu-sheet.js.map +1 -1
  18. package/dist/browser/charts.js +6 -0
  19. package/dist/browser/charts.js.map +1 -0
  20. package/dist/browser/chat/ChatComposer.js +616 -421
  21. package/dist/browser/chat/ChatComposer.js.map +1 -1
  22. package/dist/browser/chat/chat-messages.js +18 -0
  23. package/dist/browser/chat/chat-messages.js.map +1 -1
  24. package/dist/browser/chat/composer-document.js +19 -0
  25. package/dist/browser/chat/composer-document.js.map +1 -1
  26. package/dist/browser/chat/index.js.map +1 -1
  27. package/dist/browser/content/Calendar.js +39 -29
  28. package/dist/browser/content/Calendar.js.map +1 -1
  29. package/dist/browser/content/CalendarDayView.js +159 -165
  30. package/dist/browser/content/CalendarDayView.js.map +1 -1
  31. package/dist/browser/content/Chart.js +8 -0
  32. package/dist/browser/content/Chart.js.map +1 -1
  33. package/dist/browser/content/FileGrid.js +231 -9
  34. package/dist/browser/content/FileGrid.js.map +1 -1
  35. package/dist/browser/content/FileTypeIcon.js +15 -0
  36. package/dist/browser/content/FileTypeIcon.js.map +1 -1
  37. package/dist/browser/content/FileView.js +11 -4
  38. package/dist/browser/content/FileView.js.map +1 -1
  39. package/dist/browser/content/MessageRow.js +627 -343
  40. package/dist/browser/content/MessageRow.js.map +1 -1
  41. package/dist/browser/content/ReactionBar.js +20 -1
  42. package/dist/browser/content/ReactionBar.js.map +1 -1
  43. package/dist/browser/content/calendar-day-scroll.js +4 -3
  44. package/dist/browser/content/calendar-day-scroll.js.map +1 -1
  45. package/dist/browser/content/chart-bar.js +476 -0
  46. package/dist/browser/content/chart-bar.js.map +1 -0
  47. package/dist/browser/content/file-list-messages.js +52 -0
  48. package/dist/browser/content/file-list-messages.js.map +1 -0
  49. package/dist/browser/content/index.js +2 -2
  50. package/dist/browser/content/index.js.map +1 -1
  51. package/dist/browser/feedback/Tooltip.js +31 -14
  52. package/dist/browser/feedback/Tooltip.js.map +1 -1
  53. package/dist/browser/feedback/dialog-core.js +6 -0
  54. package/dist/browser/feedback/dialog-core.js.map +1 -1
  55. package/dist/browser/inputs/ChoiceList.js +178 -0
  56. package/dist/browser/inputs/ChoiceList.js.map +1 -0
  57. package/dist/browser/inputs/ChoiceSlider.js +314 -0
  58. package/dist/browser/inputs/ChoiceSlider.js.map +1 -0
  59. package/dist/browser/inputs/ChoiceTiles.js +135 -0
  60. package/dist/browser/inputs/ChoiceTiles.js.map +1 -0
  61. package/dist/browser/inputs/ColorChoices.js +120 -0
  62. package/dist/browser/inputs/ColorChoices.js.map +1 -0
  63. package/dist/browser/inputs/QrScanner.js +95 -13
  64. package/dist/browser/inputs/QrScanner.js.map +1 -1
  65. package/dist/browser/inputs/TextInput.js +19 -14
  66. package/dist/browser/inputs/TextInput.js.map +1 -1
  67. package/dist/browser/inputs/index.js +4 -0
  68. package/dist/browser/inputs/index.js.map +1 -1
  69. package/dist/browser/inputs/qr-messages.js +2 -0
  70. package/dist/browser/inputs/qr-messages.js.map +1 -1
  71. package/dist/browser/internal/radio-keys.js +13 -0
  72. package/dist/browser/internal/radio-keys.js.map +1 -0
  73. package/dist/browser/intl/shortcut-messages.js +4 -0
  74. package/dist/browser/intl/shortcut-messages.js.map +1 -1
  75. package/dist/browser/intl/shortcut.js +4 -0
  76. package/dist/browser/intl/shortcut.js.map +1 -1
  77. package/dist/browser/layout/AnchoredPopover.js +180 -0
  78. package/dist/browser/layout/AnchoredPopover.js.map +1 -0
  79. package/dist/browser/layout/AppWorkspace.js +684 -532
  80. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  81. package/dist/browser/layout/DetailPanel.js +443 -333
  82. package/dist/browser/layout/DetailPanel.js.map +1 -1
  83. package/dist/browser/layout/MobileShell.js +231 -42
  84. package/dist/browser/layout/MobileShell.js.map +1 -1
  85. package/dist/browser/layout/Settings.js +283 -175
  86. package/dist/browser/layout/Settings.js.map +1 -1
  87. package/dist/browser/layout/SidebarRailHint.js +79 -0
  88. package/dist/browser/layout/SidebarRailHint.js.map +1 -0
  89. package/dist/browser/layout/SidebarSwitcher.js +79 -66
  90. package/dist/browser/layout/SidebarSwitcher.js.map +1 -1
  91. package/dist/browser/layout/TabBar.js +18 -4
  92. package/dist/browser/layout/TabBar.js.map +1 -1
  93. package/dist/browser/layout/app-workspace-controller.js +11 -4
  94. package/dist/browser/layout/app-workspace-controller.js.map +1 -1
  95. package/dist/browser/layout/detail-panel-messages.js +4 -2
  96. package/dist/browser/layout/detail-panel-messages.js.map +1 -1
  97. package/dist/browser/layout/index.js +3 -1
  98. package/dist/browser/layout/index.js.map +1 -1
  99. package/dist/browser/layout/scroll-fade.js +32 -5
  100. package/dist/browser/layout/scroll-fade.js.map +1 -1
  101. package/dist/browser/layout/settings-messages.js +26 -2
  102. package/dist/browser/layout/settings-messages.js.map +1 -1
  103. package/dist/browser/surfaces/Avatar.js +2 -14
  104. package/dist/browser/surfaces/Avatar.js.map +1 -1
  105. package/dist/browser/surfaces/DotStrip.js +70 -0
  106. package/dist/browser/surfaces/DotStrip.js.map +1 -0
  107. package/dist/browser/surfaces/NoticeCard.js +46 -30
  108. package/dist/browser/surfaces/NoticeCard.js.map +1 -1
  109. package/dist/browser/surfaces/ProgressRing.js +3 -0
  110. package/dist/browser/surfaces/ProgressRing.js.map +1 -1
  111. package/dist/browser/surfaces/ResourceCard.js +125 -68
  112. package/dist/browser/surfaces/ResourceCard.js.map +1 -1
  113. package/dist/browser/surfaces/index.js +2 -0
  114. package/dist/browser/surfaces/index.js.map +1 -1
  115. package/dist/browser/surfaces/person-color.js +18 -0
  116. package/dist/browser/surfaces/person-color.js.map +1 -0
  117. package/dist/browser/surfaces/resource-messages.js +8 -4
  118. package/dist/browser/surfaces/resource-messages.js.map +1 -1
  119. package/dist/browser/widgets/Widget.js +3 -2
  120. package/dist/browser/widgets/Widget.js.map +1 -1
  121. package/dist/ssr/actions/ContextMenu.js +9 -0
  122. package/dist/ssr/actions/ContextMenu.js.map +1 -1
  123. package/dist/ssr/actions/Dropdown.js +65 -31
  124. package/dist/ssr/actions/Dropdown.js.map +1 -1
  125. package/dist/ssr/actions/FilterChip.js +67 -16
  126. package/dist/ssr/actions/FilterChip.js.map +1 -1
  127. package/dist/ssr/actions/SelectionToolbar.js +104 -0
  128. package/dist/ssr/actions/SelectionToolbar.js.map +1 -0
  129. package/dist/ssr/actions/filter-messages.js +26 -2
  130. package/dist/ssr/actions/filter-messages.js.map +1 -1
  131. package/dist/ssr/actions/index.js +1 -0
  132. package/dist/ssr/actions/index.js.map +1 -1
  133. package/dist/ssr/actions/menu-rows.js +23 -3
  134. package/dist/ssr/actions/menu-rows.js.map +1 -1
  135. package/dist/ssr/actions/menu-sheet.js +2 -7
  136. package/dist/ssr/actions/menu-sheet.js.map +1 -1
  137. package/dist/ssr/charts.js +6 -0
  138. package/dist/ssr/charts.js.map +1 -0
  139. package/dist/ssr/chat/ChatComposer.js +184 -76
  140. package/dist/ssr/chat/ChatComposer.js.map +1 -1
  141. package/dist/ssr/chat/chat-messages.js +18 -0
  142. package/dist/ssr/chat/chat-messages.js.map +1 -1
  143. package/dist/ssr/chat/composer-document.js +19 -0
  144. package/dist/ssr/chat/composer-document.js.map +1 -1
  145. package/dist/ssr/chat/index.js.map +1 -1
  146. package/dist/ssr/content/Calendar.js +40 -31
  147. package/dist/ssr/content/Calendar.js.map +1 -1
  148. package/dist/ssr/content/CalendarDayView.js +40 -48
  149. package/dist/ssr/content/CalendarDayView.js.map +1 -1
  150. package/dist/ssr/content/Chart.js +8 -0
  151. package/dist/ssr/content/Chart.js.map +1 -1
  152. package/dist/ssr/content/FileGrid.js +132 -5
  153. package/dist/ssr/content/FileGrid.js.map +1 -1
  154. package/dist/ssr/content/FileTypeIcon.js +15 -0
  155. package/dist/ssr/content/FileTypeIcon.js.map +1 -1
  156. package/dist/ssr/content/FileView.js +11 -4
  157. package/dist/ssr/content/FileView.js.map +1 -1
  158. package/dist/ssr/content/MessageRow.js +274 -91
  159. package/dist/ssr/content/MessageRow.js.map +1 -1
  160. package/dist/ssr/content/ReactionBar.js +20 -1
  161. package/dist/ssr/content/ReactionBar.js.map +1 -1
  162. package/dist/ssr/content/calendar-day-scroll.js +4 -3
  163. package/dist/ssr/content/calendar-day-scroll.js.map +1 -1
  164. package/dist/ssr/content/chart-bar.js +476 -0
  165. package/dist/ssr/content/chart-bar.js.map +1 -0
  166. package/dist/ssr/content/file-list-messages.js +52 -0
  167. package/dist/ssr/content/file-list-messages.js.map +1 -0
  168. package/dist/ssr/content/index.js +2 -2
  169. package/dist/ssr/content/index.js.map +1 -1
  170. package/dist/ssr/feedback/Tooltip.js +31 -14
  171. package/dist/ssr/feedback/Tooltip.js.map +1 -1
  172. package/dist/ssr/feedback/dialog-core.js +6 -0
  173. package/dist/ssr/feedback/dialog-core.js.map +1 -1
  174. package/dist/ssr/inputs/ChoiceList.js +95 -0
  175. package/dist/ssr/inputs/ChoiceList.js.map +1 -0
  176. package/dist/ssr/inputs/ChoiceSlider.js +191 -0
  177. package/dist/ssr/inputs/ChoiceSlider.js.map +1 -0
  178. package/dist/ssr/inputs/ChoiceTiles.js +61 -0
  179. package/dist/ssr/inputs/ChoiceTiles.js.map +1 -0
  180. package/dist/ssr/inputs/ColorChoices.js +60 -0
  181. package/dist/ssr/inputs/ColorChoices.js.map +1 -0
  182. package/dist/ssr/inputs/QrScanner.js +89 -10
  183. package/dist/ssr/inputs/QrScanner.js.map +1 -1
  184. package/dist/ssr/inputs/TextInput.js +17 -2
  185. package/dist/ssr/inputs/TextInput.js.map +1 -1
  186. package/dist/ssr/inputs/index.js +4 -0
  187. package/dist/ssr/inputs/index.js.map +1 -1
  188. package/dist/ssr/inputs/qr-messages.js +2 -0
  189. package/dist/ssr/inputs/qr-messages.js.map +1 -1
  190. package/dist/ssr/internal/radio-keys.js +13 -0
  191. package/dist/ssr/internal/radio-keys.js.map +1 -0
  192. package/dist/ssr/intl/shortcut-messages.js +4 -0
  193. package/dist/ssr/intl/shortcut-messages.js.map +1 -1
  194. package/dist/ssr/intl/shortcut.js +4 -0
  195. package/dist/ssr/intl/shortcut.js.map +1 -1
  196. package/dist/ssr/layout/AnchoredPopover.js +142 -0
  197. package/dist/ssr/layout/AnchoredPopover.js.map +1 -0
  198. package/dist/ssr/layout/AppWorkspace.js +287 -141
  199. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  200. package/dist/ssr/layout/DetailPanel.js +181 -108
  201. package/dist/ssr/layout/DetailPanel.js.map +1 -1
  202. package/dist/ssr/layout/MobileShell.js +118 -24
  203. package/dist/ssr/layout/MobileShell.js.map +1 -1
  204. package/dist/ssr/layout/Settings.js +122 -45
  205. package/dist/ssr/layout/Settings.js.map +1 -1
  206. package/dist/ssr/layout/SidebarRailHint.js +79 -0
  207. package/dist/ssr/layout/SidebarRailHint.js.map +1 -0
  208. package/dist/ssr/layout/SidebarSwitcher.js +13 -3
  209. package/dist/ssr/layout/SidebarSwitcher.js.map +1 -1
  210. package/dist/ssr/layout/TabBar.js +11 -3
  211. package/dist/ssr/layout/TabBar.js.map +1 -1
  212. package/dist/ssr/layout/app-workspace-controller.js +11 -4
  213. package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
  214. package/dist/ssr/layout/detail-panel-messages.js +4 -2
  215. package/dist/ssr/layout/detail-panel-messages.js.map +1 -1
  216. package/dist/ssr/layout/index.js +3 -1
  217. package/dist/ssr/layout/index.js.map +1 -1
  218. package/dist/ssr/layout/scroll-fade.js +32 -5
  219. package/dist/ssr/layout/scroll-fade.js.map +1 -1
  220. package/dist/ssr/layout/settings-messages.js +26 -2
  221. package/dist/ssr/layout/settings-messages.js.map +1 -1
  222. package/dist/ssr/surfaces/Avatar.js +2 -14
  223. package/dist/ssr/surfaces/Avatar.js.map +1 -1
  224. package/dist/ssr/surfaces/DotStrip.js +31 -0
  225. package/dist/ssr/surfaces/DotStrip.js.map +1 -0
  226. package/dist/ssr/surfaces/NoticeCard.js +21 -12
  227. package/dist/ssr/surfaces/NoticeCard.js.map +1 -1
  228. package/dist/ssr/surfaces/ProgressRing.js +3 -0
  229. package/dist/ssr/surfaces/ProgressRing.js.map +1 -1
  230. package/dist/ssr/surfaces/ResourceCard.js +40 -15
  231. package/dist/ssr/surfaces/ResourceCard.js.map +1 -1
  232. package/dist/ssr/surfaces/index.js +2 -0
  233. package/dist/ssr/surfaces/index.js.map +1 -1
  234. package/dist/ssr/surfaces/person-color.js +18 -0
  235. package/dist/ssr/surfaces/person-color.js.map +1 -0
  236. package/dist/ssr/surfaces/resource-messages.js +8 -4
  237. package/dist/ssr/surfaces/resource-messages.js.map +1 -1
  238. package/dist/ssr/widgets/Widget.js +3 -2
  239. package/dist/ssr/widgets/Widget.js.map +1 -1
  240. package/dist/styles.css +1 -1
  241. package/dist/types/actions/ContextMenu.d.ts +5 -0
  242. package/dist/types/actions/Dropdown.d.ts +19 -0
  243. package/dist/types/actions/FilterChip.d.ts +11 -0
  244. package/dist/types/actions/SelectionToolbar.d.ts +38 -0
  245. package/dist/types/actions/filter-messages.d.ts +12 -0
  246. package/dist/types/actions/index.d.ts +2 -0
  247. package/dist/types/actions/menu-rows.d.ts +7 -2
  248. package/dist/types/charts.d.ts +5 -0
  249. package/dist/types/chat/ChatComposer.d.ts +28 -0
  250. package/dist/types/chat/chat-messages.d.ts +9 -0
  251. package/dist/types/chat/composer-document.d.ts +5 -0
  252. package/dist/types/chat/index.d.ts +1 -1
  253. package/dist/types/content/Calendar.d.ts +7 -0
  254. package/dist/types/content/Chart.d.ts +2 -1
  255. package/dist/types/content/FileGrid.d.ts +43 -3
  256. package/dist/types/content/FileTypeIcon.d.ts +10 -0
  257. package/dist/types/content/FileView.d.ts +5 -1
  258. package/dist/types/content/MessageRow.d.ts +66 -2
  259. package/dist/types/content/calendar-day-scroll.d.ts +2 -1
  260. package/dist/types/content/chart-bar.d.ts +60 -0
  261. package/dist/types/content/file-list-messages.d.ts +24 -0
  262. package/dist/types/content/index.d.ts +4 -4
  263. package/dist/types/feedback/Tooltip.d.ts +8 -2
  264. package/dist/types/feedback/dialog-core.d.ts +3 -0
  265. package/dist/types/inputs/ChoiceList.d.ts +28 -0
  266. package/dist/types/inputs/ChoiceSlider.d.ts +36 -0
  267. package/dist/types/inputs/ChoiceTiles.d.ts +25 -0
  268. package/dist/types/inputs/ColorChoices.d.ts +19 -0
  269. package/dist/types/inputs/index.d.ts +8 -0
  270. package/dist/types/inputs/qr-messages.d.ts +1 -0
  271. package/dist/types/internal/radio-keys.d.ts +5 -0
  272. package/dist/types/intl/shortcut-messages.d.ts +2 -0
  273. package/dist/types/layout/AnchoredPopover.d.ts +31 -0
  274. package/dist/types/layout/AppWorkspace.d.ts +12 -0
  275. package/dist/types/layout/DetailPanel.d.ts +17 -0
  276. package/dist/types/layout/MobileShell.d.ts +55 -5
  277. package/dist/types/layout/Settings.d.ts +22 -0
  278. package/dist/types/layout/SidebarRailHint.d.ts +26 -0
  279. package/dist/types/layout/TabBar.d.ts +5 -0
  280. package/dist/types/layout/detail-panel-messages.d.ts +1 -0
  281. package/dist/types/layout/index.d.ts +5 -3
  282. package/dist/types/layout/scroll-fade.d.ts +5 -0
  283. package/dist/types/layout/settings-messages.d.ts +12 -0
  284. package/dist/types/surfaces/DotStrip.d.ts +22 -0
  285. package/dist/types/surfaces/NoticeCard.d.ts +3 -0
  286. package/dist/types/surfaces/ProgressRing.d.ts +2 -1
  287. package/dist/types/surfaces/ResourceCard.d.ts +9 -0
  288. package/dist/types/surfaces/index.d.ts +4 -1
  289. package/dist/types/surfaces/person-color.d.ts +10 -0
  290. package/dist/types/surfaces/resource-messages.d.ts +2 -0
  291. package/dist/types/widgets/Widget.d.ts +3 -2
  292. package/package.json +7 -2
@@ -2,8 +2,8 @@ import { template as _$template } from "solid-js/web";
2
2
  import { delegateEvents as _$delegateEvents } from "solid-js/web";
3
3
  import { setProperty as _$setProperty } from "solid-js/web";
4
4
  import { use as _$use } from "solid-js/web";
5
- import { memo as _$memo } from "solid-js/web";
6
5
  import { getNextMarker as _$getNextMarker } from "solid-js/web";
6
+ import { memo as _$memo } from "solid-js/web";
7
7
  import { runHydrationEvents as _$runHydrationEvents } from "solid-js/web";
8
8
  import { setAttribute as _$setAttribute } from "solid-js/web";
9
9
  import { style as _$style } from "solid-js/web";
@@ -16,35 +16,35 @@ var _tmpl$ = /*#__PURE__*/_$template(`<span>`),
16
16
  _tmpl$2 = /*#__PURE__*/_$template(`<span role=img>`),
17
17
  _tmpl$3 = /*#__PURE__*/_$template(`<a target=_blank rel="noopener noreferrer">`),
18
18
  _tmpl$4 = /*#__PURE__*/_$template(`<button type=button>`),
19
- _tmpl$5 = /*#__PURE__*/_$template(`<span class=k2b-message-row__name>`),
20
- _tmpl$6 = /*#__PURE__*/_$template(`<span class=k2b-message-row__badge>`),
21
- _tmpl$7 = /*#__PURE__*/_$template(`<time class=k2b-message-row__time>`),
22
- _tmpl$8 = /*#__PURE__*/_$template(`<i class="ti ti-arrow-back-up"aria-hidden=true>`),
23
- _tmpl$9 = /*#__PURE__*/_$template(`<span class=k2b-message-row__quote-text><span class=k2b-sr-only><!$><!/> </span><span class=k2b-message-row__quote-author></span> <!$><!/>`),
24
- _tmpl$0 = /*#__PURE__*/_$template(`<img alt loading=lazy decoding=async>`, true, false, false),
25
- _tmpl$1 = /*#__PURE__*/_$template(`<span class=k2b-message-row__media-play aria-hidden=true><i class="ti ti-player-play">`),
26
- _tmpl$10 = /*#__PURE__*/_$template(`<span class=k2b-message-row__media-duration aria-hidden=true>`),
27
- _tmpl$11 = /*#__PURE__*/_$template(`<span class=k2b-message-row__media-more aria-hidden=true>+<!$><!/>`),
28
- _tmpl$12 = /*#__PURE__*/_$template(`<span class=k2b-message-row__avatar aria-hidden=true>`),
29
- _tmpl$13 = /*#__PURE__*/_$template(`<div class=k2b-message-row__gutter>`),
30
- _tmpl$14 = /*#__PURE__*/_$template(`<div class=k2b-message-row__meta>`),
31
- _tmpl$15 = /*#__PURE__*/_$template(`<div class=k2b-message-row__marker><i class="ti ti-arrow-forward-up"aria-hidden=true></i><span>`),
32
- _tmpl$16 = /*#__PURE__*/_$template(`<div class="k2b-content-markdown k2b-message-row__text"data-heading-scale=compact>`),
33
- _tmpl$17 = /*#__PURE__*/_$template(`<span class=k2b-message-row__edited>`),
34
- _tmpl$18 = /*#__PURE__*/_$template(`<div class=k2b-message-row__more-line><!$><!/><!$><!/>`),
35
- _tmpl$19 = /*#__PURE__*/_$template(`<div class=k2b-message-row__bubble>`),
36
- _tmpl$20 = /*#__PURE__*/_$template(`<div class=k2b-message-row__marker><i class="ti ti-pencil"aria-hidden=true></i><span class=k2b-message-row__edited>`),
37
- _tmpl$21 = /*#__PURE__*/_$template(`<div class=k2b-message-row__media role=group>`),
38
- _tmpl$22 = /*#__PURE__*/_$template(`<div class=k2b-message-row__files>`),
39
- _tmpl$23 = /*#__PURE__*/_$template(`<div class=k2b-message-row__slot data-gesture-ignore>`),
40
- _tmpl$24 = /*#__PURE__*/_$template(`<div class=k2b-message-row__line>`),
41
- _tmpl$25 = /*#__PURE__*/_$template(`<div class=k2b-message-row__footer><!$><!/><!$><!/>`),
42
- _tmpl$26 = /*#__PURE__*/_$template(`<div class=k2b-message-row__actions role=group>`),
43
- _tmpl$27 = /*#__PURE__*/_$template(`<div><!$><!/><div class=k2b-message-row__body><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/></div><!$><!/>`),
44
- _tmpl$28 = /*#__PURE__*/_$template(`<span class=k2b-sr-only><!$><!/>, <!$><!/>: `),
45
- _tmpl$29 = /*#__PURE__*/_$template(`<div class=k2b-message-row__meta><span class=k2b-sr-only><!$><!/>, </span><time class=k2b-message-row__time>`),
46
- _tmpl$30 = /*#__PURE__*/_$template(`<div class=k2b-message-row__quote>`),
47
- _tmpl$31 = /*#__PURE__*/_$template(`<button type=button class=k2b-message-row__quote>`),
19
+ _tmpl$5 = /*#__PURE__*/_$template(`<i class="ti ti-dots"aria-hidden=true>`),
20
+ _tmpl$6 = /*#__PURE__*/_$template(`<span class=k2b-message-row__name>`),
21
+ _tmpl$7 = /*#__PURE__*/_$template(`<span class=k2b-message-row__badge>`),
22
+ _tmpl$8 = /*#__PURE__*/_$template(`<time class=k2b-message-row__time>`),
23
+ _tmpl$9 = /*#__PURE__*/_$template(`<span class=k2b-message-row__quote-author><span class=k2b-sr-only><!$><!/> </span><!$><!/>`),
24
+ _tmpl$0 = /*#__PURE__*/_$template(`<span class=k2b-message-row__quote-text>`),
25
+ _tmpl$1 = /*#__PURE__*/_$template(`<div class=k2b-message-row__quote>`),
26
+ _tmpl$10 = /*#__PURE__*/_$template(`<button type=button class=k2b-message-row__quote>`),
27
+ _tmpl$11 = /*#__PURE__*/_$template(`<img alt loading=lazy decoding=async>`, true, false, false),
28
+ _tmpl$12 = /*#__PURE__*/_$template(`<span class=k2b-message-row__media-play aria-hidden=true><i class="ti ti-player-play">`),
29
+ _tmpl$13 = /*#__PURE__*/_$template(`<span class=k2b-message-row__media-duration aria-hidden=true>`),
30
+ _tmpl$14 = /*#__PURE__*/_$template(`<span class=k2b-message-row__media-more aria-hidden=true>+<!$><!/>`),
31
+ _tmpl$15 = /*#__PURE__*/_$template(`<span class=k2b-message-row__avatar aria-hidden=true>`),
32
+ _tmpl$16 = /*#__PURE__*/_$template(`<div class=k2b-message-row__gutter>`),
33
+ _tmpl$17 = /*#__PURE__*/_$template(`<div class=k2b-message-row__meta>`),
34
+ _tmpl$18 = /*#__PURE__*/_$template(`<div class=k2b-message-row__marker><i class="ti ti-arrow-forward-up"aria-hidden=true></i><span>`),
35
+ _tmpl$19 = /*#__PURE__*/_$template(`<div class="k2b-content-markdown k2b-message-row__text"data-heading-scale=compact>`),
36
+ _tmpl$20 = /*#__PURE__*/_$template(`<span class=k2b-message-row__edited>`),
37
+ _tmpl$21 = /*#__PURE__*/_$template(`<div class=k2b-message-row__more-line><!$><!/><!$><!/>`),
38
+ _tmpl$22 = /*#__PURE__*/_$template(`<div class=k2b-message-row__bubble><!$><!/><!$><!/><!$><!/>`),
39
+ _tmpl$23 = /*#__PURE__*/_$template(`<div class=k2b-message-row__marker><i class="ti ti-pencil"aria-hidden=true></i><span class=k2b-message-row__edited>`),
40
+ _tmpl$24 = /*#__PURE__*/_$template(`<div class=k2b-message-row__media role=group>`),
41
+ _tmpl$25 = /*#__PURE__*/_$template(`<div class=k2b-message-row__files>`),
42
+ _tmpl$26 = /*#__PURE__*/_$template(`<div class=k2b-message-row__slot data-gesture-ignore>`),
43
+ _tmpl$27 = /*#__PURE__*/_$template(`<div class=k2b-message-row__line>`),
44
+ _tmpl$28 = /*#__PURE__*/_$template(`<div class=k2b-message-row__footer><!$><!/><!$><!/>`),
45
+ _tmpl$29 = /*#__PURE__*/_$template(`<div><!$><!/><div class=k2b-message-row__body><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/>`),
46
+ _tmpl$30 = /*#__PURE__*/_$template(`<span class=k2b-sr-only><!$><!/>, <!$><!/>: `),
47
+ _tmpl$31 = /*#__PURE__*/_$template(`<div class=k2b-message-row__meta><span class=k2b-sr-only><!$><!/>, </span><time class=k2b-message-row__time>`),
48
48
  _tmpl$32 = /*#__PURE__*/_$template(`<span class=k2b-message-row__deleted><i class="ti ti-message-off"aria-hidden=true></i><!$><!/>`),
49
49
  _tmpl$33 = /*#__PURE__*/_$template(`<span class=k2b-message-row__writing><span class=k2b-chat-progress-dots aria-hidden=true><span></span><span></span><span>`),
50
50
  _tmpl$34 = /*#__PURE__*/_$template(`<span class=k2b-message-row__file-icon aria-hidden=true><i>`),
@@ -61,18 +61,27 @@ var _tmpl$ = /*#__PURE__*/_$template(`<span>`),
61
61
  _tmpl$45 = /*#__PURE__*/_$template(`<span class=k2b-message-row__receipt>`),
62
62
  _tmpl$46 = /*#__PURE__*/_$template(`<i class="ti ti-loader-2 k2b-spin"aria-hidden=true>`),
63
63
  _tmpl$47 = /*#__PURE__*/_$template(`<span class=k2b-message-row__line-text>`),
64
- _tmpl$48 = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
65
- _tmpl$49 = /*#__PURE__*/_$template(`<time>`),
66
- _tmpl$50 = /*#__PURE__*/_$template(`<div><!$><!/><span></span><!$><!/>`);
64
+ _tmpl$48 = /*#__PURE__*/_$template(`<span class=k2b-message-row__origin><!$><!/><!$><!/>`),
65
+ _tmpl$49 = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
66
+ _tmpl$50 = /*#__PURE__*/_$template(`<button type=button class=k2b-message-row__origin><!$><!/><!$><!/>`),
67
+ _tmpl$51 = /*#__PURE__*/_$template(`<time>`),
68
+ _tmpl$52 = /*#__PURE__*/_$template(`<div><i aria-hidden=true></i><!$><!/><!$><!/><!$><!/>`),
69
+ _tmpl$53 = /*#__PURE__*/_$template(`<span class=k2b-message-event-row__text>`),
70
+ _tmpl$54 = /*#__PURE__*/_$template(`<a class="k2b-message-event-row__text k2b-message-event-row__link">`),
71
+ _tmpl$55 = /*#__PURE__*/_$template(`<button type=button><i class="ti ti-history"aria-hidden=true></i><span class=k2b-message-event-row__text></span><!$><!/><i aria-hidden=true>`),
72
+ _tmpl$56 = /*#__PURE__*/_$template(`<div><!$><!/><span></span><!$><!/>`);
67
73
  import { fileIcons } from "@k2b/stdlib";
68
74
  import { createMemo, createSignal, createUniqueId, For, onCleanup, Show } from "solid-js";
69
- import { Button, IconButton } from "../actions/Button";
75
+ import { Button } from "../actions/Button";
70
76
  import { copyText } from "../actions/CopyButton";
77
+ import { Dropdown } from "../actions/Dropdown";
78
+ import { GestureMenu } from "../actions/GestureMenu";
71
79
  import { useChatMessages } from "../chat/chat-messages";
72
80
  import { announce } from "../feedback/announce";
73
81
  import { useLocale } from "../intl/locale";
74
82
  import { useUiMessages } from "../intl/messages";
75
83
  import { Avatar } from "../surfaces/Avatar";
84
+ import { Kbd } from "./Kbd";
76
85
  import { createSafeMarked, createSafeRenderer, escapeHtml } from "./MarkdownView";
77
86
  import { ReactionBar } from "./ReactionBar";
78
87
 
@@ -89,6 +98,8 @@ const LINE_CHARS = 100;
89
98
  /** Lines at the bottom of a collapsed message that fade out, as `.k2b-message-row__text[data-collapsed]` draws them. */
90
99
  const FADE_LINES = 2;
91
100
  const COPIED_MS = 2_000;
101
+ /** Alt+click on these keeps its own meaning, such as downloading a link. */
102
+ const ALT_CLICK_IGNORE = "a[href], button, input, textarea, select, summary, label, audio, video, [role='button'], [role='link']";
92
103
  /** Links in messages may only use these schemes; other links show as their text. */
93
104
  const LINK_PROTOCOLS = ["https:", "http:", "mailto:"];
94
105
  /** Attachments open and load only from these schemes or from a relative URL. */
@@ -106,6 +117,8 @@ const MEDIA_RATIO_MAX = 3;
106
117
 
107
118
  /** Reaction labels are read by screen readers and shown in the names hint. */
108
119
 
120
+ /** Where a message belongs, shown as a small chip under it, for example its thread in a timeline of several. */
121
+
109
122
  const timestamp = value => value instanceof Date ? value.getTime() : new Date(value).getTime();
110
123
 
111
124
  /**
@@ -400,41 +413,128 @@ export function MessageRow(props) {
400
413
  const fade = text.getBoundingClientRect().bottom - FADE_LINES * Number.parseFloat(getComputedStyle(text).lineHeight);
401
414
  if (event.target.getBoundingClientRect().bottom > fade) setExpanded(true);
402
415
  };
416
+
417
+ // The same entries serve "…", right-click, the keyboard, and a long press. Alt+click and keys show at the entry's end.
418
+ // Each menu gets its own entries: a rendered shortcut is a DOM node and can live in only one menu.
419
+ const entries = () => (props.actions ?? []).map(entry => ({
420
+ label: entry.label,
421
+ icon: entry.icon,
422
+ description: entry.description,
423
+ disabled: entry.disabled,
424
+ variant: entry.variant,
425
+ gesture: entry.gesture,
426
+ immediate: entry.immediate,
427
+ trailing: entry.altClick ? _$createComponent(Kbd, {
428
+ keys: "alt+click"
429
+ }) : entry.shortcut ? _$createComponent(Kbd, {
430
+ get keys() {
431
+ return entry.shortcut;
432
+ }
433
+ }) : undefined,
434
+ action: () => entry.onSelect()
435
+ }));
436
+ const menuItems = createMemo(entries);
437
+ const gestureItems = createMemo(entries);
438
+ const hasMenu = () => (props.actions?.length ?? 0) > 0;
439
+
440
+ // Alt+click (Option+click) on the message, not on a link or control inside it, runs the entry that asks for it.
441
+ const altClick = event => {
442
+ if (!event.altKey || event.button !== 0 || event.ctrlKey || event.metaKey || event.shiftKey) return;
443
+ const entry = props.actions?.find(action => action.altClick && !action.disabled);
444
+ const target = event.target instanceof Element ? event.target : null;
445
+ if (!entry || target?.closest(ALT_CLICK_IGNORE)) return;
446
+ event.preventDefault();
447
+ entry.onSelect();
448
+ };
449
+ const more = () => _$createComponent(Dropdown.Root, {
450
+ get items() {
451
+ return menuItems();
452
+ },
453
+ get label() {
454
+ return chatMessages().messageActions;
455
+ },
456
+ "class": "k2b-message-row__menu-root",
457
+ get position() {
458
+ return props.own ? "bottom-right" : "bottom-left";
459
+ },
460
+ phone: "sheet",
461
+ get children() {
462
+ return _$createComponent(Dropdown.Trigger, {
463
+ iconOnly: true,
464
+ variant: "ghost",
465
+ size: "sm",
466
+ get label() {
467
+ return chatMessages().messageActions;
468
+ },
469
+ "class": "k2b-message-row__menu",
470
+ get children() {
471
+ return _$getNextElement(_tmpl$5);
472
+ }
473
+ });
474
+ }
475
+ });
403
476
  const header = () => [(() => {
404
- var _el$5 = _$getNextElement(_tmpl$5);
405
- _$insert(_el$5, () => props.author.name);
406
- return _el$5;
477
+ var _el$6 = _$getNextElement(_tmpl$6);
478
+ _$insert(_el$6, () => props.author.name);
479
+ return _el$6;
407
480
  })(), _$createComponent(Show, {
408
481
  get when() {
409
482
  return props.badge;
410
483
  },
411
484
  get children() {
412
- var _el$6 = _$getNextElement(_tmpl$6);
413
- _$insert(_el$6, () => props.badge);
414
- return _el$6;
485
+ var _el$7 = _$getNextElement(_tmpl$7);
486
+ _$insert(_el$7, () => props.badge);
487
+ return _el$7;
415
488
  }
416
489
  }), (() => {
417
- var _el$7 = _$getNextElement(_tmpl$7);
418
- _$insert(_el$7, () => props.time);
419
- _$effect(() => _$setAttribute(_el$7, "datetime", dateTimeOf(props.dateTime)));
420
- return _el$7;
490
+ var _el$8 = _$getNextElement(_tmpl$8);
491
+ _$insert(_el$8, () => props.time);
492
+ _$effect(() => _$setAttribute(_el$8, "datetime", dateTimeOf(props.dateTime)));
493
+ return _el$8;
421
494
  })()];
422
- const quote = value => [_$getNextElement(_tmpl$8), (() => {
495
+ const quote = value => [(() => {
423
496
  var _el$9 = _$getNextElement(_tmpl$9),
424
497
  _el$0 = _el$9.firstChild,
425
498
  _el$10 = _el$0.firstChild,
426
499
  [_el$11, _co$] = _$getNextMarker(_el$10.nextSibling),
427
500
  _el$1 = _el$11.nextSibling,
428
501
  _el$12 = _el$0.nextSibling,
429
- _el$13 = _el$12.nextSibling,
430
- _el$14 = _el$13.nextSibling,
431
- [_el$15, _co$2] = _$getNextMarker(_el$14.nextSibling);
502
+ [_el$13, _co$2] = _$getNextMarker(_el$12.nextSibling);
432
503
  _$insert(_el$0, () => chatMessages().messageReplyTo, _el$11, _co$);
433
- _$insert(_el$12, () => value.author);
434
- _$insert(_el$9, () => value.text, _el$15, _co$2);
504
+ _$insert(_el$9, () => value.author, _el$13, _co$2);
435
505
  return _el$9;
506
+ })(), (() => {
507
+ var _el$14 = _$getNextElement(_tmpl$0);
508
+ _$insert(_el$14, () => value.text);
509
+ return _el$14;
436
510
  })()];
437
511
 
512
+ /** The answered message on a quiet tint at the top of the bubble, or in its place without one. */
513
+ const quoteBlock = () => _$createComponent(Show, {
514
+ get when() {
515
+ return _$memo(() => !!content())() && props.quote;
516
+ },
517
+ children: value => _$createComponent(Show, {
518
+ get when() {
519
+ return value().onSelect;
520
+ },
521
+ get fallback() {
522
+ return (() => {
523
+ var _el$15 = _$getNextElement(_tmpl$1);
524
+ _$insert(_el$15, () => quote(value()));
525
+ return _el$15;
526
+ })();
527
+ },
528
+ children: select => (() => {
529
+ var _el$16 = _$getNextElement(_tmpl$10);
530
+ _el$16.$$click = () => select()();
531
+ _$insert(_el$16, () => quote(value()));
532
+ _$runHydrationEvents();
533
+ return _el$16;
534
+ })()
535
+ })
536
+ });
537
+
438
538
  /** The picture's description, then that it is a video and how long, then how many more the grid hides. */
439
539
  const mediaLabel = (item, more) => [item.alt, item.kind === "video" ? [chatMessages().messageVideo, item.duration].filter(Boolean).join(" ") : "", more > 0 ? chatMessages().messageMoreAttachments({
440
540
  count: more
@@ -459,34 +559,34 @@ export function MessageRow(props) {
459
559
  },
460
560
  get children() {
461
561
  return [(() => {
462
- var _el$16 = _$getNextElement(_tmpl$0);
562
+ var _el$17 = _$getNextElement(_tmpl$11);
463
563
  _$effect(_p$ => {
464
564
  var _v$11 = attachmentUrl(item.src, true),
465
565
  _v$12 = item.width > 0 ? item.width : undefined,
466
566
  _v$13 = item.height > 0 ? item.height : undefined;
467
- _v$11 !== _p$.e && _$setAttribute(_el$16, "src", _p$.e = _v$11);
468
- _v$12 !== _p$.t && _$setAttribute(_el$16, "width", _p$.t = _v$12);
469
- _v$13 !== _p$.a && _$setAttribute(_el$16, "height", _p$.a = _v$13);
567
+ _v$11 !== _p$.e && _$setAttribute(_el$17, "src", _p$.e = _v$11);
568
+ _v$12 !== _p$.t && _$setAttribute(_el$17, "width", _p$.t = _v$12);
569
+ _v$13 !== _p$.a && _$setAttribute(_el$17, "height", _p$.a = _v$13);
470
570
  return _p$;
471
571
  }, {
472
572
  e: undefined,
473
573
  t: undefined,
474
574
  a: undefined
475
575
  });
476
- return _el$16;
576
+ return _el$17;
477
577
  })(), _$createComponent(Show, {
478
578
  get when() {
479
579
  return item.kind === "video";
480
580
  },
481
581
  get children() {
482
- return [_$getNextElement(_tmpl$1), _$createComponent(Show, {
582
+ return [_$getNextElement(_tmpl$12), _$createComponent(Show, {
483
583
  get when() {
484
584
  return item.duration;
485
585
  },
486
586
  get children() {
487
- var _el$18 = _$getNextElement(_tmpl$10);
488
- _$insert(_el$18, () => item.duration);
489
- return _el$18;
587
+ var _el$19 = _$getNextElement(_tmpl$13);
588
+ _$insert(_el$19, () => item.duration);
589
+ return _el$19;
490
590
  }
491
591
  })];
492
592
  }
@@ -495,59 +595,63 @@ export function MessageRow(props) {
495
595
  return more() > 0;
496
596
  },
497
597
  get children() {
498
- var _el$19 = _$getNextElement(_tmpl$11),
499
- _el$20 = _el$19.firstChild,
500
- _el$21 = _el$20.nextSibling,
501
- [_el$22, _co$3] = _$getNextMarker(_el$21.nextSibling);
502
- _$insert(_el$19, more, _el$22, _co$3);
503
- return _el$19;
598
+ var _el$20 = _$getNextElement(_tmpl$14),
599
+ _el$21 = _el$20.firstChild,
600
+ _el$22 = _el$21.nextSibling,
601
+ [_el$23, _co$3] = _$getNextMarker(_el$22.nextSibling);
602
+ _$insert(_el$20, more, _el$23, _co$3);
603
+ return _el$20;
504
604
  }
505
605
  })];
506
606
  }
507
607
  });
508
608
  };
509
- return (() => {
510
- var _el$23 = _$getNextElement(_tmpl$27),
511
- _el$75 = _el$23.firstChild,
609
+ const row = // biome-ignore lint/a11y/noStaticElementInteractions lint/a11y/useKeyWithClickEvents: Alt+click is a pointer shortcut for a menu entry that the keyboard reaches through "…".
610
+ (() => {
611
+ var _el$24 = _$getNextElement(_tmpl$29),
612
+ _el$85 = _el$24.firstChild,
613
+ [_el$86, _co$22] = _$getNextMarker(_el$85.nextSibling),
614
+ _el$27 = _el$86.nextSibling,
615
+ _el$59 = _el$27.firstChild,
616
+ [_el$60, _co$1] = _$getNextMarker(_el$59.nextSibling),
617
+ _el$61 = _el$60.nextSibling,
618
+ [_el$62, _co$10] = _$getNextMarker(_el$61.nextSibling),
619
+ _el$63 = _el$62.nextSibling,
620
+ [_el$64, _co$11] = _$getNextMarker(_el$63.nextSibling),
621
+ _el$65 = _el$64.nextSibling,
622
+ [_el$66, _co$12] = _$getNextMarker(_el$65.nextSibling),
623
+ _el$67 = _el$66.nextSibling,
624
+ [_el$68, _co$13] = _$getNextMarker(_el$67.nextSibling),
625
+ _el$69 = _el$68.nextSibling,
626
+ [_el$70, _co$14] = _$getNextMarker(_el$69.nextSibling),
627
+ _el$71 = _el$70.nextSibling,
628
+ [_el$72, _co$15] = _$getNextMarker(_el$71.nextSibling),
629
+ _el$73 = _el$72.nextSibling,
630
+ [_el$74, _co$16] = _$getNextMarker(_el$73.nextSibling),
631
+ _el$75 = _el$74.nextSibling,
512
632
  [_el$76, _co$17] = _$getNextMarker(_el$75.nextSibling),
513
- _el$26 = _el$76.nextSibling,
514
- _el$52 = _el$26.firstChild,
515
- [_el$53, _co$8] = _$getNextMarker(_el$52.nextSibling),
516
- _el$54 = _el$53.nextSibling,
517
- [_el$55, _co$9] = _$getNextMarker(_el$54.nextSibling),
518
- _el$56 = _el$55.nextSibling,
519
- [_el$57, _co$0] = _$getNextMarker(_el$56.nextSibling),
520
- _el$58 = _el$57.nextSibling,
521
- [_el$59, _co$1] = _$getNextMarker(_el$58.nextSibling),
522
- _el$60 = _el$59.nextSibling,
523
- [_el$61, _co$10] = _$getNextMarker(_el$60.nextSibling),
524
- _el$62 = _el$61.nextSibling,
525
- [_el$63, _co$11] = _$getNextMarker(_el$62.nextSibling),
526
- _el$64 = _el$63.nextSibling,
527
- [_el$65, _co$12] = _$getNextMarker(_el$64.nextSibling),
528
- _el$66 = _el$65.nextSibling,
529
- [_el$67, _co$13] = _$getNextMarker(_el$66.nextSibling),
530
- _el$68 = _el$67.nextSibling,
531
- [_el$69, _co$14] = _$getNextMarker(_el$68.nextSibling),
532
- _el$70 = _el$69.nextSibling,
533
- [_el$71, _co$15] = _$getNextMarker(_el$70.nextSibling),
534
- _el$72 = _el$71.nextSibling,
535
- [_el$73, _co$16] = _$getNextMarker(_el$72.nextSibling),
536
- _el$77 = _el$26.nextSibling,
537
- [_el$78, _co$18] = _$getNextMarker(_el$77.nextSibling);
538
- _$insert(_el$23, _$createComponent(Show, {
633
+ _el$77 = _el$76.nextSibling,
634
+ [_el$78, _co$18] = _$getNextMarker(_el$77.nextSibling),
635
+ _el$79 = _el$78.nextSibling,
636
+ [_el$80, _co$19] = _$getNextMarker(_el$79.nextSibling),
637
+ _el$81 = _el$80.nextSibling,
638
+ [_el$82, _co$20] = _$getNextMarker(_el$81.nextSibling),
639
+ _el$83 = _el$82.nextSibling,
640
+ [_el$84, _co$21] = _$getNextMarker(_el$83.nextSibling);
641
+ _el$24.$$click = altClick;
642
+ _$insert(_el$24, _$createComponent(Show, {
539
643
  get when() {
540
644
  return !props.own;
541
645
  },
542
646
  get children() {
543
- var _el$24 = _$getNextElement(_tmpl$13);
544
- _$insert(_el$24, _$createComponent(Show, {
647
+ var _el$25 = _$getNextElement(_tmpl$16);
648
+ _$insert(_el$25, _$createComponent(Show, {
545
649
  get when() {
546
650
  return groupStart();
547
651
  },
548
652
  get children() {
549
- var _el$25 = _$getNextElement(_tmpl$12);
550
- _$insert(_el$25, _$createComponent(Avatar, {
653
+ var _el$26 = _$getNextElement(_tmpl$15);
654
+ _$insert(_el$26, _$createComponent(Avatar, {
551
655
  get name() {
552
656
  return props.author.name;
553
657
  },
@@ -559,28 +663,28 @@ export function MessageRow(props) {
559
663
  },
560
664
  size: "sm"
561
665
  }));
562
- return _el$25;
666
+ return _el$26;
563
667
  }
564
668
  }));
565
- return _el$24;
669
+ return _el$25;
566
670
  }
567
- }), _el$76, _co$17);
568
- _$insert(_el$26, _$createComponent(Show, {
671
+ }), _el$86, _co$22);
672
+ _$insert(_el$27, _$createComponent(Show, {
569
673
  get when() {
570
674
  return groupStart();
571
675
  },
572
676
  get fallback() {
573
677
  return (() => {
574
- var _el$79 = _$getNextElement(_tmpl$28),
575
- _el$82 = _el$79.firstChild,
576
- [_el$83, _co$19] = _$getNextMarker(_el$82.nextSibling),
577
- _el$80 = _el$83.nextSibling,
578
- _el$84 = _el$80.nextSibling,
579
- [_el$85, _co$20] = _$getNextMarker(_el$84.nextSibling),
580
- _el$81 = _el$85.nextSibling;
581
- _$insert(_el$79, () => props.author.name, _el$83, _co$19);
582
- _$insert(_el$79, () => props.time, _el$85, _co$20);
583
- return _el$79;
678
+ var _el$87 = _$getNextElement(_tmpl$30),
679
+ _el$90 = _el$87.firstChild,
680
+ [_el$91, _co$23] = _$getNextMarker(_el$90.nextSibling),
681
+ _el$88 = _el$91.nextSibling,
682
+ _el$92 = _el$88.nextSibling,
683
+ [_el$93, _co$24] = _$getNextMarker(_el$92.nextSibling),
684
+ _el$89 = _el$93.nextSibling;
685
+ _$insert(_el$87, () => props.author.name, _el$91, _co$23);
686
+ _$insert(_el$87, () => props.time, _el$93, _co$24);
687
+ return _el$87;
584
688
  })();
585
689
  },
586
690
  get children() {
@@ -590,80 +694,71 @@ export function MessageRow(props) {
590
694
  },
591
695
  get fallback() {
592
696
  return (() => {
593
- var _el$86 = _$getNextElement(_tmpl$29),
594
- _el$87 = _el$86.firstChild,
595
- _el$89 = _el$87.firstChild,
596
- [_el$90, _co$21] = _$getNextMarker(_el$89.nextSibling),
597
- _el$88 = _el$90.nextSibling,
598
- _el$91 = _el$87.nextSibling;
599
- _$insert(_el$87, () => props.author.name, _el$90, _co$21);
600
- _$insert(_el$91, () => props.time);
601
- _$effect(() => _$setAttribute(_el$91, "datetime", dateTimeOf(props.dateTime)));
602
- return _el$86;
697
+ var _el$94 = _$getNextElement(_tmpl$31),
698
+ _el$95 = _el$94.firstChild,
699
+ _el$97 = _el$95.firstChild,
700
+ [_el$98, _co$25] = _$getNextMarker(_el$97.nextSibling),
701
+ _el$96 = _el$98.nextSibling,
702
+ _el$99 = _el$95.nextSibling;
703
+ _$insert(_el$95, () => props.author.name, _el$98, _co$25);
704
+ _$insert(_el$99, () => props.time);
705
+ _$effect(() => _$setAttribute(_el$99, "datetime", dateTimeOf(props.dateTime)));
706
+ return _el$94;
603
707
  })();
604
708
  },
605
709
  get children() {
606
- var _el$27 = _$getNextElement(_tmpl$14);
607
- _$insert(_el$27, header);
608
- return _el$27;
710
+ var _el$28 = _$getNextElement(_tmpl$17);
711
+ _$insert(_el$28, header);
712
+ return _el$28;
609
713
  }
610
714
  });
611
715
  }
612
- }), _el$53, _co$8);
613
- _$insert(_el$26, _$createComponent(Show, {
716
+ }), _el$60, _co$1);
717
+ _$insert(_el$27, _$createComponent(Show, {
614
718
  get when() {
615
719
  return _$memo(() => !!content())() && props.forwarded;
616
720
  },
617
721
  get children() {
618
- var _el$28 = _$getNextElement(_tmpl$15),
619
- _el$29 = _el$28.firstChild,
620
- _el$30 = _el$29.nextSibling;
621
- _$insert(_el$30, () => chatMessages().messageForwarded);
622
- return _el$28;
722
+ var _el$29 = _$getNextElement(_tmpl$18),
723
+ _el$30 = _el$29.firstChild,
724
+ _el$31 = _el$30.nextSibling;
725
+ _$insert(_el$31, () => chatMessages().messageForwarded);
726
+ return _el$29;
623
727
  }
624
- }), _el$55, _co$9);
625
- _$insert(_el$26, _$createComponent(Show, {
728
+ }), _el$62, _co$10);
729
+ _$insert(_el$27, _$createComponent(Show, {
626
730
  get when() {
627
- return _$memo(() => !!content())() && props.quote;
731
+ return !hasBubble();
628
732
  },
629
- children: value => _$createComponent(Show, {
630
- get when() {
631
- return value().onSelect;
632
- },
633
- get fallback() {
634
- return (() => {
635
- var _el$92 = _$getNextElement(_tmpl$30);
636
- _$insert(_el$92, () => quote(value()));
637
- return _el$92;
638
- })();
639
- },
640
- children: select => (() => {
641
- var _el$93 = _$getNextElement(_tmpl$31);
642
- _el$93.$$click = () => select()();
643
- _$insert(_el$93, () => quote(value()));
644
- _$runHydrationEvents();
645
- return _el$93;
646
- })()
647
- })
648
- }), _el$57, _co$0);
649
- _$insert(_el$26, _$createComponent(Show, {
733
+ get children() {
734
+ return quoteBlock();
735
+ }
736
+ }), _el$64, _co$11);
737
+ _$insert(_el$27, _$createComponent(Show, {
650
738
  get when() {
651
739
  return hasBubble();
652
740
  },
653
741
  get children() {
654
- var _el$31 = _$getNextElement(_tmpl$19);
655
- _$insert(_el$31, _$createComponent(Show, {
742
+ var _el$32 = _$getNextElement(_tmpl$22),
743
+ _el$40 = _el$32.firstChild,
744
+ [_el$41, _co$6] = _$getNextMarker(_el$40.nextSibling),
745
+ _el$42 = _el$41.nextSibling,
746
+ [_el$43, _co$7] = _$getNextMarker(_el$42.nextSibling),
747
+ _el$44 = _el$43.nextSibling,
748
+ [_el$45, _co$8] = _$getNextMarker(_el$44.nextSibling);
749
+ _$insert(_el$32, quoteBlock, _el$41, _co$6);
750
+ _$insert(_el$32, _$createComponent(Show, {
656
751
  get when() {
657
752
  return !props.deleted;
658
753
  },
659
754
  get fallback() {
660
755
  return (() => {
661
- var _el$94 = _$getNextElement(_tmpl$32),
662
- _el$95 = _el$94.firstChild,
663
- _el$96 = _el$95.nextSibling,
664
- [_el$97, _co$22] = _$getNextMarker(_el$96.nextSibling);
665
- _$insert(_el$94, () => chatMessages().messageDeleted, _el$97, _co$22);
666
- return _el$94;
756
+ var _el$100 = _$getNextElement(_tmpl$32),
757
+ _el$101 = _el$100.firstChild,
758
+ _el$102 = _el$101.nextSibling,
759
+ [_el$103, _co$26] = _$getNextMarker(_el$102.nextSibling);
760
+ _$insert(_el$100, () => chatMessages().messageDeleted, _el$103, _co$26);
761
+ return _el$100;
667
762
  })();
668
763
  },
669
764
  get children() {
@@ -676,35 +771,35 @@ export function MessageRow(props) {
676
771
  },
677
772
  get children() {
678
773
  return [(() => {
679
- var _el$32 = _$getNextElement(_tmpl$16);
680
- _el$32.$$focusin = revealFocus;
681
- _el$32.$$click = copyCode;
774
+ var _el$33 = _$getNextElement(_tmpl$19);
775
+ _el$33.$$focusin = revealFocus;
776
+ _el$33.$$click = copyCode;
682
777
  var _ref$ = text;
683
- typeof _ref$ === "function" ? _$use(_ref$, _el$32) : text = _el$32;
684
- _$setAttribute(_el$32, "id", textId);
778
+ typeof _ref$ === "function" ? _$use(_ref$, _el$33) : text = _el$33;
779
+ _$setAttribute(_el$33, "id", textId);
685
780
  _$effect(_p$ => {
686
781
  var _v$14 = collapsed() ? "" : undefined,
687
782
  _v$15 = rendered().html;
688
- _v$14 !== _p$.e && _$setAttribute(_el$32, "data-collapsed", _p$.e = _v$14);
689
- _v$15 !== _p$.t && _$setProperty(_el$32, "innerHTML", _p$.t = _v$15);
783
+ _v$14 !== _p$.e && _$setAttribute(_el$33, "data-collapsed", _p$.e = _v$14);
784
+ _v$15 !== _p$.t && _$setProperty(_el$33, "innerHTML", _p$.t = _v$15);
690
785
  return _p$;
691
786
  }, {
692
787
  e: undefined,
693
788
  t: undefined
694
789
  });
695
790
  _$runHydrationEvents();
696
- return _el$32;
791
+ return _el$33;
697
792
  })(), _$createComponent(Show, {
698
793
  get when() {
699
794
  return collapsible();
700
795
  },
701
796
  get children() {
702
- var _el$33 = _$getNextElement(_tmpl$18),
703
- _el$35 = _el$33.firstChild,
704
- [_el$36, _co$4] = _$getNextMarker(_el$35.nextSibling),
705
- _el$37 = _el$36.nextSibling,
706
- [_el$38, _co$5] = _$getNextMarker(_el$37.nextSibling);
707
- _$insert(_el$33, _$createComponent(Button, {
797
+ var _el$34 = _$getNextElement(_tmpl$21),
798
+ _el$36 = _el$34.firstChild,
799
+ [_el$37, _co$4] = _$getNextMarker(_el$36.nextSibling),
800
+ _el$38 = _el$37.nextSibling,
801
+ [_el$39, _co$5] = _$getNextMarker(_el$38.nextSibling);
802
+ _$insert(_el$34, _$createComponent(Button, {
708
803
  variant: "text",
709
804
  size: "xs",
710
805
  "class": "k2b-message-row__more",
@@ -716,56 +811,72 @@ export function MessageRow(props) {
716
811
  get children() {
717
812
  return _$memo(() => !!expanded())() ? chatMessages().messageShowLess : chatMessages().messageShowMore;
718
813
  }
719
- }), _el$36, _co$4);
720
- _$insert(_el$33, _$createComponent(Show, {
814
+ }), _el$37, _co$4);
815
+ _$insert(_el$34, _$createComponent(Show, {
721
816
  get when() {
722
817
  return props.edited;
723
818
  },
724
819
  get children() {
725
- var _el$34 = _$getNextElement(_tmpl$17);
726
- _$insert(_el$34, () => chatMessages().messageEdited);
727
- return _el$34;
820
+ var _el$35 = _$getNextElement(_tmpl$20);
821
+ _$insert(_el$35, () => chatMessages().messageEdited);
822
+ return _el$35;
728
823
  }
729
- }), _el$38, _co$5);
730
- return _el$33;
824
+ }), _el$39, _co$5);
825
+ return _el$34;
731
826
  }
732
827
  })];
733
828
  }
734
829
  });
735
830
  }
736
- }));
831
+ }), _el$43, _co$7);
832
+ _$insert(_el$32, _$createComponent(Show, {
833
+ get when() {
834
+ return hasMenu();
835
+ },
836
+ get children() {
837
+ return more();
838
+ }
839
+ }), _el$45, _co$8);
737
840
  _$effect(_p$ => {
738
841
  var _v$16 = props.deleted ? "" : undefined,
739
842
  _v$17 = props.progress && !props.deleted ? "true" : undefined;
740
- _v$16 !== _p$.e && _$setAttribute(_el$31, "data-deleted", _p$.e = _v$16);
741
- _v$17 !== _p$.t && _$setAttribute(_el$31, "aria-busy", _p$.t = _v$17);
843
+ _v$16 !== _p$.e && _$setAttribute(_el$32, "data-deleted", _p$.e = _v$16);
844
+ _v$17 !== _p$.t && _$setAttribute(_el$32, "aria-busy", _p$.t = _v$17);
742
845
  return _p$;
743
846
  }, {
744
847
  e: undefined,
745
848
  t: undefined
746
849
  });
747
- return _el$31;
850
+ return _el$32;
748
851
  }
749
- }), _el$59, _co$1);
750
- _$insert(_el$26, _$createComponent(Show, {
852
+ }), _el$66, _co$12);
853
+ _$insert(_el$27, _$createComponent(Show, {
854
+ get when() {
855
+ return _$memo(() => !!hasMenu())() && !hasBubble();
856
+ },
857
+ get children() {
858
+ return more();
859
+ }
860
+ }), _el$68, _co$13);
861
+ _$insert(_el$27, _$createComponent(Show, {
751
862
  get when() {
752
863
  return _$memo(() => !!(content() && props.edited))() && !hasBubble();
753
864
  },
754
865
  get children() {
755
- var _el$39 = _$getNextElement(_tmpl$20),
756
- _el$40 = _el$39.firstChild,
757
- _el$41 = _el$40.nextSibling;
758
- _$insert(_el$41, () => chatMessages().messageEdited);
759
- return _el$39;
866
+ var _el$46 = _$getNextElement(_tmpl$23),
867
+ _el$47 = _el$46.firstChild,
868
+ _el$48 = _el$47.nextSibling;
869
+ _$insert(_el$48, () => chatMessages().messageEdited);
870
+ return _el$46;
760
871
  }
761
- }), _el$61, _co$10);
762
- _$insert(_el$26, _$createComponent(Show, {
872
+ }), _el$70, _co$14);
873
+ _$insert(_el$27, _$createComponent(Show, {
763
874
  get when() {
764
875
  return media().length > 0;
765
876
  },
766
877
  get children() {
767
- var _el$42 = _$getNextElement(_tmpl$21);
768
- _$insert(_el$42, _$createComponent(For, {
878
+ var _el$49 = _$getNextElement(_tmpl$24);
879
+ _$insert(_el$49, _$createComponent(For, {
769
880
  get each() {
770
881
  return shownMedia();
771
882
  },
@@ -777,25 +888,25 @@ export function MessageRow(props) {
777
888
  _v$20 = media().length === 1 ? {
778
889
  width: mediaWidth(media()[0])
779
890
  } : undefined;
780
- _v$18 !== _p$.e && _$setAttribute(_el$42, "aria-label", _p$.e = _v$18);
781
- _v$19 !== _p$.t && _$setAttribute(_el$42, "data-count", _p$.t = _v$19);
782
- _p$.a = _$style(_el$42, _v$20, _p$.a);
891
+ _v$18 !== _p$.e && _$setAttribute(_el$49, "aria-label", _p$.e = _v$18);
892
+ _v$19 !== _p$.t && _$setAttribute(_el$49, "data-count", _p$.t = _v$19);
893
+ _p$.a = _$style(_el$49, _v$20, _p$.a);
783
894
  return _p$;
784
895
  }, {
785
896
  e: undefined,
786
897
  t: undefined,
787
898
  a: undefined
788
899
  });
789
- return _el$42;
900
+ return _el$49;
790
901
  }
791
- }), _el$63, _co$11);
792
- _$insert(_el$26, _$createComponent(Show, {
902
+ }), _el$72, _co$15);
903
+ _$insert(_el$27, _$createComponent(Show, {
793
904
  get when() {
794
905
  return files().length > 0;
795
906
  },
796
907
  get children() {
797
- var _el$43 = _$getNextElement(_tmpl$22);
798
- _$insert(_el$43, _$createComponent(For, {
908
+ var _el$50 = _$getNextElement(_tmpl$25);
909
+ _$insert(_el$50, _$createComponent(For, {
799
910
  get each() {
800
911
  return files();
801
912
  },
@@ -809,73 +920,73 @@ export function MessageRow(props) {
809
920
  },
810
921
  get children() {
811
922
  return [(() => {
812
- var _el$99 = _$getNextElement(_tmpl$34),
813
- _el$100 = _el$99.firstChild;
814
- _$effect(() => _$className(_el$100, fileIcon(file)));
815
- return _el$99;
923
+ var _el$105 = _$getNextElement(_tmpl$34),
924
+ _el$106 = _el$105.firstChild;
925
+ _$effect(() => _$className(_el$106, fileIcon(file)));
926
+ return _el$105;
816
927
  })(), (() => {
817
- var _el$101 = _$getNextElement(_tmpl$36),
818
- _el$102 = _el$101.firstChild,
819
- _el$104 = _el$102.nextSibling,
820
- [_el$105, _co$23] = _$getNextMarker(_el$104.nextSibling);
821
- _$insert(_el$102, () => file.name);
822
- _$insert(_el$101, _$createComponent(Show, {
928
+ var _el$107 = _$getNextElement(_tmpl$36),
929
+ _el$108 = _el$107.firstChild,
930
+ _el$110 = _el$108.nextSibling,
931
+ [_el$111, _co$27] = _$getNextMarker(_el$110.nextSibling);
932
+ _$insert(_el$108, () => file.name);
933
+ _$insert(_el$107, _$createComponent(Show, {
823
934
  get when() {
824
935
  return file.detail;
825
936
  },
826
937
  get children() {
827
- var _el$103 = _$getNextElement(_tmpl$35);
828
- _$insert(_el$103, () => file.detail);
829
- return _el$103;
938
+ var _el$109 = _$getNextElement(_tmpl$35);
939
+ _$insert(_el$109, () => file.detail);
940
+ return _el$109;
830
941
  }
831
- }), _el$105, _co$23);
832
- return _el$101;
942
+ }), _el$111, _co$27);
943
+ return _el$107;
833
944
  })()];
834
945
  }
835
946
  })
836
947
  }));
837
- return _el$43;
948
+ return _el$50;
838
949
  }
839
- }), _el$65, _co$12);
840
- _$insert(_el$26, _$createComponent(Show, {
950
+ }), _el$74, _co$16);
951
+ _$insert(_el$27, _$createComponent(Show, {
841
952
  get when() {
842
953
  return _$memo(() => !!content())() && props.linkPreview;
843
954
  },
844
955
  get children() {
845
- var _el$44 = _$getNextElement(_tmpl$23);
846
- _$insert(_el$44, () => props.linkPreview);
847
- return _el$44;
956
+ var _el$51 = _$getNextElement(_tmpl$26);
957
+ _$insert(_el$51, () => props.linkPreview);
958
+ return _el$51;
848
959
  }
849
- }), _el$67, _co$13);
850
- _$insert(_el$26, _$createComponent(Show, {
960
+ }), _el$76, _co$17);
961
+ _$insert(_el$27, _$createComponent(Show, {
851
962
  get when() {
852
963
  return _$memo(() => !!content())() && props.card;
853
964
  },
854
965
  get children() {
855
- var _el$45 = _$getNextElement(_tmpl$23);
856
- _$insert(_el$45, () => props.card);
857
- return _el$45;
966
+ var _el$52 = _$getNextElement(_tmpl$26);
967
+ _$insert(_el$52, () => props.card);
968
+ return _el$52;
858
969
  }
859
- }), _el$69, _co$14);
860
- _$insert(_el$26, _$createComponent(Show, {
970
+ }), _el$78, _co$18);
971
+ _$insert(_el$27, _$createComponent(Show, {
861
972
  get when() {
862
973
  return props.thread;
863
974
  },
864
975
  children: thread => (() => {
865
- var _el$106 = _$getNextElement(_tmpl$38),
866
- _el$109 = _el$106.firstChild,
867
- [_el$110, _co$24] = _$getNextMarker(_el$109.nextSibling),
868
- _el$108 = _el$110.nextSibling,
869
- _el$111 = _el$108.nextSibling,
870
- [_el$112, _co$25] = _$getNextMarker(_el$111.nextSibling);
871
- _el$106.$$click = () => thread().onOpen();
872
- _$insert(_el$106, _$createComponent(Show, {
976
+ var _el$112 = _$getNextElement(_tmpl$38),
977
+ _el$115 = _el$112.firstChild,
978
+ [_el$116, _co$28] = _$getNextMarker(_el$115.nextSibling),
979
+ _el$114 = _el$116.nextSibling,
980
+ _el$117 = _el$114.nextSibling,
981
+ [_el$118, _co$29] = _$getNextMarker(_el$117.nextSibling);
982
+ _el$112.$$click = () => thread().onOpen();
983
+ _$insert(_el$112, _$createComponent(Show, {
873
984
  get when() {
874
985
  return (thread().participants?.length ?? 0) > 0;
875
986
  },
876
987
  get children() {
877
- var _el$107 = _$getNextElement(_tmpl$37);
878
- _$insert(_el$107, _$createComponent(For, {
988
+ var _el$113 = _$getNextElement(_tmpl$37);
989
+ _$insert(_el$113, _$createComponent(For, {
879
990
  get each() {
880
991
  return thread().participants?.slice(0, 3);
881
992
  },
@@ -892,40 +1003,50 @@ export function MessageRow(props) {
892
1003
  size: "xs"
893
1004
  })
894
1005
  }));
895
- return _el$107;
1006
+ return _el$113;
896
1007
  }
897
- }), _el$110, _co$24);
898
- _$insert(_el$108, () => chatMessages().messageReplies({
1008
+ }), _el$116, _co$28);
1009
+ _$insert(_el$114, () => chatMessages().messageReplies({
899
1010
  count: thread().count
900
1011
  }));
901
- _$insert(_el$106, _$createComponent(Show, {
1012
+ _$insert(_el$112, _$createComponent(Show, {
902
1013
  get when() {
903
1014
  return thread().lastReply;
904
1015
  },
905
1016
  children: time => (() => {
906
- var _el$113 = _$getNextElement(_tmpl$39);
907
- _$insert(_el$113, () => chatMessages().messageLastReply({
1017
+ var _el$119 = _$getNextElement(_tmpl$39);
1018
+ _$insert(_el$119, () => chatMessages().messageLastReply({
908
1019
  time: time()
909
1020
  }));
910
- _$effect(() => _$setAttribute(_el$113, "datetime", dateTimeOf(thread().lastReplyDateTime)));
911
- return _el$113;
1021
+ _$effect(() => _$setAttribute(_el$119, "datetime", dateTimeOf(thread().lastReplyDateTime)));
1022
+ return _el$119;
912
1023
  })()
913
- }), _el$112, _co$25);
1024
+ }), _el$118, _co$29);
914
1025
  _$runHydrationEvents();
915
- return _el$106;
1026
+ return _el$112;
916
1027
  })()
917
- }), _el$71, _co$15);
918
- _$insert(_el$26, _$createComponent(Show, {
1028
+ }), _el$80, _co$19);
1029
+ _$insert(_el$27, _$createComponent(Show, {
1030
+ get when() {
1031
+ return props.origin;
1032
+ },
1033
+ children: origin => _$createComponent(OriginChip, {
1034
+ get origin() {
1035
+ return origin();
1036
+ }
1037
+ })
1038
+ }), _el$82, _co$20);
1039
+ _$insert(_el$27, _$createComponent(Show, {
919
1040
  get when() {
920
1041
  return hasFooter();
921
1042
  },
922
1043
  get children() {
923
- var _el$46 = _$getNextElement(_tmpl$25),
924
- _el$48 = _el$46.firstChild,
925
- [_el$49, _co$6] = _$getNextMarker(_el$48.nextSibling),
926
- _el$50 = _el$49.nextSibling,
927
- [_el$51, _co$7] = _$getNextMarker(_el$50.nextSibling);
928
- _$insert(_el$46, _$createComponent(Show, {
1044
+ var _el$53 = _$getNextElement(_tmpl$28),
1045
+ _el$55 = _el$53.firstChild,
1046
+ [_el$56, _co$9] = _$getNextMarker(_el$55.nextSibling),
1047
+ _el$57 = _el$56.nextSibling,
1048
+ [_el$58, _co$0] = _$getNextMarker(_el$57.nextSibling);
1049
+ _$insert(_el$53, _$createComponent(Show, {
929
1050
  get when() {
930
1051
  return reactions();
931
1052
  },
@@ -940,14 +1061,14 @@ export function MessageRow(props) {
940
1061
  return props.onAddReaction;
941
1062
  }
942
1063
  })
943
- }), _el$49, _co$6);
944
- _$insert(_el$46, _$createComponent(Show, {
1064
+ }), _el$56, _co$9);
1065
+ _$insert(_el$53, _$createComponent(Show, {
945
1066
  get when() {
946
1067
  return hasLine();
947
1068
  },
948
1069
  get children() {
949
- var _el$47 = _$getNextElement(_tmpl$24);
950
- _$insert(_el$47, _$createComponent(Show, {
1070
+ var _el$54 = _$getNextElement(_tmpl$27);
1071
+ _$insert(_el$54, _$createComponent(Show, {
951
1072
  get when() {
952
1073
  return props.progress;
953
1074
  },
@@ -958,9 +1079,9 @@ export function MessageRow(props) {
958
1079
  },
959
1080
  get children() {
960
1081
  return [_$getNextElement(_tmpl$40), (() => {
961
- var _el$115 = _$getNextElement(_tmpl$);
962
- _$insert(_el$115, () => chatMessages().sending);
963
- return _el$115;
1082
+ var _el$121 = _$getNextElement(_tmpl$);
1083
+ _$insert(_el$121, () => chatMessages().sending);
1084
+ return _el$121;
964
1085
  })()];
965
1086
  }
966
1087
  }), _$createComponent(Show, {
@@ -969,9 +1090,9 @@ export function MessageRow(props) {
969
1090
  },
970
1091
  get children() {
971
1092
  return [_$getNextElement(_tmpl$41), (() => {
972
- var _el$117 = _$getNextElement(_tmpl$);
973
- _$insert(_el$117, () => chatMessages().messageNotSent);
974
- return _el$117;
1093
+ var _el$123 = _$getNextElement(_tmpl$);
1094
+ _$insert(_el$123, () => chatMessages().messageNotSent);
1095
+ return _el$123;
975
1096
  })(), _$createComponent(Show, {
976
1097
  get when() {
977
1098
  return props.onRetry;
@@ -984,6 +1105,18 @@ export function MessageRow(props) {
984
1105
  return chatMessages().messageRetry;
985
1106
  }
986
1107
  })
1108
+ }), _$createComponent(Show, {
1109
+ get when() {
1110
+ return props.onDiscard;
1111
+ },
1112
+ children: discard => _$createComponent(Button, {
1113
+ variant: "text",
1114
+ size: "xs",
1115
+ onClick: () => discard()(),
1116
+ get children() {
1117
+ return chatMessages().messageDiscard;
1118
+ }
1119
+ })
987
1120
  })];
988
1121
  }
989
1122
  }), _$createComponent(Show, {
@@ -1002,26 +1135,26 @@ export function MessageRow(props) {
1002
1135
  },
1003
1136
  get children() {
1004
1137
  return [_$getNextElement(_tmpl$42), (() => {
1005
- var _el$119 = _$getNextElement(_tmpl$43);
1006
- _$insert(_el$119, () => chatMessages().messageSent);
1007
- return _el$119;
1138
+ var _el$125 = _$getNextElement(_tmpl$43);
1139
+ _$insert(_el$125, () => chatMessages().messageSent);
1140
+ return _el$125;
1008
1141
  })()];
1009
1142
  }
1010
1143
  });
1011
1144
  },
1012
1145
  children: receipt => [_$getNextElement(_tmpl$44), (() => {
1013
- var _el$121 = _$getNextElement(_tmpl$45);
1014
- _$insert(_el$121, receipt);
1015
- return _el$121;
1146
+ var _el$127 = _$getNextElement(_tmpl$45);
1147
+ _$insert(_el$127, receipt);
1148
+ return _el$127;
1016
1149
  })()]
1017
1150
  });
1018
1151
  }
1019
1152
  })];
1020
1153
  },
1021
1154
  children: progress => [_$getNextElement(_tmpl$46), (() => {
1022
- var _el$123 = _$getNextElement(_tmpl$47);
1023
- _$insert(_el$123, () => progress().status);
1024
- return _el$123;
1155
+ var _el$129 = _$getNextElement(_tmpl$47);
1156
+ _$insert(_el$129, () => progress().status);
1157
+ return _el$129;
1025
1158
  })(), _$createComponent(Show, {
1026
1159
  get when() {
1027
1160
  return progress().onStop;
@@ -1036,53 +1169,23 @@ export function MessageRow(props) {
1036
1169
  })
1037
1170
  })]
1038
1171
  }));
1039
- return _el$47;
1172
+ return _el$54;
1040
1173
  }
1041
- }), _el$51, _co$7);
1042
- return _el$46;
1043
- }
1044
- }), _el$73, _co$16);
1045
- _$insert(_el$23, _$createComponent(Show, {
1046
- get when() {
1047
- return (props.actions?.length ?? 0) > 0;
1048
- },
1049
- get children() {
1050
- var _el$74 = _$getNextElement(_tmpl$26);
1051
- _$insert(_el$74, _$createComponent(For, {
1052
- get each() {
1053
- return props.actions;
1054
- },
1055
- children: action => _$createComponent(IconButton, {
1056
- get label() {
1057
- return action.label;
1058
- },
1059
- size: "sm",
1060
- get disabled() {
1061
- return action.disabled;
1062
- },
1063
- onClick: () => action.onSelect(),
1064
- get children() {
1065
- var _el$124 = _$getNextElement(_tmpl$48);
1066
- _$effect(() => _$className(_el$124, action.icon));
1067
- return _el$124;
1068
- }
1069
- })
1070
- }));
1071
- _$effect(() => _$setAttribute(_el$74, "aria-label", chatMessages().messageActions));
1072
- return _el$74;
1174
+ }), _el$58, _co$0);
1175
+ return _el$53;
1073
1176
  }
1074
- }), _el$78, _co$18);
1177
+ }), _el$84, _co$21);
1075
1178
  _$effect(_p$ => {
1076
1179
  var _v$21 = props.class ? `k2b-message-row ${props.class}` : "k2b-message-row",
1077
1180
  _v$22 = props.own ? "" : undefined,
1078
1181
  _v$23 = groupStart() ? "" : undefined,
1079
1182
  _v$24 = props.status,
1080
1183
  _v$25 = media().length > 0 ? "" : undefined;
1081
- _v$21 !== _p$.e && _$className(_el$23, _p$.e = _v$21);
1082
- _v$22 !== _p$.t && _$setAttribute(_el$23, "data-own", _p$.t = _v$22);
1083
- _v$23 !== _p$.a && _$setAttribute(_el$23, "data-group-start", _p$.a = _v$23);
1084
- _v$24 !== _p$.o && _$setAttribute(_el$23, "data-status", _p$.o = _v$24);
1085
- _v$25 !== _p$.i && _$setAttribute(_el$23, "data-media", _p$.i = _v$25);
1184
+ _v$21 !== _p$.e && _$className(_el$24, _p$.e = _v$21);
1185
+ _v$22 !== _p$.t && _$setAttribute(_el$24, "data-own", _p$.t = _v$22);
1186
+ _v$23 !== _p$.a && _$setAttribute(_el$24, "data-group-start", _p$.a = _v$23);
1187
+ _v$24 !== _p$.o && _$setAttribute(_el$24, "data-status", _p$.o = _v$24);
1188
+ _v$25 !== _p$.i && _$setAttribute(_el$24, "data-media", _p$.i = _v$25);
1086
1189
  return _p$;
1087
1190
  }, {
1088
1191
  e: undefined,
@@ -1091,43 +1194,224 @@ export function MessageRow(props) {
1091
1194
  o: undefined,
1092
1195
  i: undefined
1093
1196
  });
1094
- return _el$23;
1197
+ _$runHydrationEvents();
1198
+ return _el$24;
1199
+ })();
1200
+ return _$createComponent(Show, {
1201
+ get when() {
1202
+ return hasMenu();
1203
+ },
1204
+ fallback: row,
1205
+ get children() {
1206
+ return _$createComponent(GestureMenu, {
1207
+ get items() {
1208
+ return gestureItems();
1209
+ },
1210
+ get label() {
1211
+ return chatMessages().messageMenu({
1212
+ author: props.author.name,
1213
+ time: props.time
1214
+ });
1215
+ },
1216
+ tabIndex: -1,
1217
+ children: row
1218
+ });
1219
+ }
1220
+ });
1221
+ }
1222
+
1223
+ /** Where a row belongs, such as its thread; a control when it opens that place. */
1224
+ function OriginChip(props) {
1225
+ return _$createComponent(Show, {
1226
+ get when() {
1227
+ return props.origin.onSelect;
1228
+ },
1229
+ get fallback() {
1230
+ return (() => {
1231
+ var _el$130 = _$getNextElement(_tmpl$48),
1232
+ _el$131 = _el$130.firstChild,
1233
+ [_el$132, _co$30] = _$getNextMarker(_el$131.nextSibling),
1234
+ _el$133 = _el$132.nextSibling,
1235
+ [_el$134, _co$31] = _$getNextMarker(_el$133.nextSibling);
1236
+ _$insert(_el$130, _$createComponent(Show, {
1237
+ get when() {
1238
+ return props.origin.icon;
1239
+ },
1240
+ children: icon => (() => {
1241
+ var _el$135 = _$getNextElement(_tmpl$49);
1242
+ _$effect(() => _$className(_el$135, icon()));
1243
+ return _el$135;
1244
+ })()
1245
+ }), _el$132, _co$30);
1246
+ _$insert(_el$130, () => props.origin.label, _el$134, _co$31);
1247
+ return _el$130;
1248
+ })();
1249
+ },
1250
+ children: select => (() => {
1251
+ var _el$136 = _$getNextElement(_tmpl$50),
1252
+ _el$137 = _el$136.firstChild,
1253
+ [_el$138, _co$32] = _$getNextMarker(_el$137.nextSibling),
1254
+ _el$139 = _el$138.nextSibling,
1255
+ [_el$140, _co$33] = _$getNextMarker(_el$139.nextSibling);
1256
+ _el$136.$$click = () => select()();
1257
+ _$insert(_el$136, _$createComponent(Show, {
1258
+ get when() {
1259
+ return props.origin.icon;
1260
+ },
1261
+ children: icon => (() => {
1262
+ var _el$141 = _$getNextElement(_tmpl$49);
1263
+ _$effect(() => _$className(_el$141, icon()));
1264
+ return _el$141;
1265
+ })()
1266
+ }), _el$138, _co$32);
1267
+ _$insert(_el$136, () => props.origin.label, _el$140, _co$33);
1268
+ _$effect(() => _$setAttribute(_el$136, "aria-label", props.origin.selectLabel));
1269
+ _$runHydrationEvents();
1270
+ return _el$136;
1271
+ })()
1272
+ });
1273
+ }
1274
+
1275
+ /**
1276
+ * A quiet line for a change to something the conversation is about, such as a task's new status: no bubble, aligned
1277
+ * with the messages' text, with its time at the end. It is no message: it never counts as unread.
1278
+ */
1279
+ export function MessageEventRow(props) {
1280
+ return (() => {
1281
+ var _el$142 = _$getNextElement(_tmpl$52),
1282
+ _el$143 = _el$142.firstChild,
1283
+ _el$145 = _el$143.nextSibling,
1284
+ [_el$146, _co$34] = _$getNextMarker(_el$145.nextSibling),
1285
+ _el$147 = _el$146.nextSibling,
1286
+ [_el$148, _co$35] = _$getNextMarker(_el$147.nextSibling),
1287
+ _el$149 = _el$148.nextSibling,
1288
+ [_el$150, _co$36] = _$getNextMarker(_el$149.nextSibling);
1289
+ _$insert(_el$142, _$createComponent(Show, {
1290
+ get when() {
1291
+ return props.href;
1292
+ },
1293
+ get fallback() {
1294
+ return (() => {
1295
+ var _el$151 = _$getNextElement(_tmpl$53);
1296
+ _$insert(_el$151, () => props.children);
1297
+ return _el$151;
1298
+ })();
1299
+ },
1300
+ children: href => (() => {
1301
+ var _el$152 = _$getNextElement(_tmpl$54);
1302
+ _$insert(_el$152, () => props.children);
1303
+ _$effect(() => _$setAttribute(_el$152, "href", href()));
1304
+ return _el$152;
1305
+ })()
1306
+ }), _el$146, _co$34);
1307
+ _$insert(_el$142, _$createComponent(Show, {
1308
+ get when() {
1309
+ return props.origin;
1310
+ },
1311
+ children: origin => _$createComponent(OriginChip, {
1312
+ get origin() {
1313
+ return origin();
1314
+ }
1315
+ })
1316
+ }), _el$148, _co$35);
1317
+ _$insert(_el$142, _$createComponent(Show, {
1318
+ get when() {
1319
+ return props.time;
1320
+ },
1321
+ get children() {
1322
+ var _el$144 = _$getNextElement(_tmpl$51);
1323
+ _$insert(_el$144, () => props.time);
1324
+ _$effect(() => _$setAttribute(_el$144, "datetime", dateTimeOf(props.dateTime)));
1325
+ return _el$144;
1326
+ }
1327
+ }), _el$150, _co$36);
1328
+ _$effect(_p$ => {
1329
+ var _v$26 = props.class ? `k2b-message-event-row ${props.class}` : "k2b-message-event-row",
1330
+ _v$27 = props.icon ?? "ti ti-point";
1331
+ _v$26 !== _p$.e && _$className(_el$142, _p$.e = _v$26);
1332
+ _v$27 !== _p$.t && _$className(_el$143, _p$.t = _v$27);
1333
+ return _p$;
1334
+ }, {
1335
+ e: undefined,
1336
+ t: undefined
1337
+ });
1338
+ return _el$142;
1339
+ })();
1340
+ }
1341
+
1342
+ /** Several event lines in a row as one line that opens them, such as "4 changes to Invitation and Light test". */
1343
+ export function MessageEventGroup(props) {
1344
+ return (() => {
1345
+ var _el$153 = _$getNextElement(_tmpl$55),
1346
+ _el$154 = _el$153.firstChild,
1347
+ _el$155 = _el$154.nextSibling,
1348
+ _el$158 = _el$155.nextSibling,
1349
+ [_el$159, _co$37] = _$getNextMarker(_el$158.nextSibling),
1350
+ _el$157 = _el$159.nextSibling;
1351
+ _el$153.$$click = () => props.onToggle();
1352
+ _$insert(_el$155, () => props.label);
1353
+ _$insert(_el$153, _$createComponent(Show, {
1354
+ get when() {
1355
+ return props.time;
1356
+ },
1357
+ get children() {
1358
+ var _el$156 = _$getNextElement(_tmpl$51);
1359
+ _$insert(_el$156, () => props.time);
1360
+ _$effect(() => _$setAttribute(_el$156, "datetime", dateTimeOf(props.dateTime)));
1361
+ return _el$156;
1362
+ }
1363
+ }), _el$159, _co$37);
1364
+ _$effect(_p$ => {
1365
+ var _v$28 = props.class ? `k2b-message-event-row k2b-message-event-group ${props.class}` : "k2b-message-event-row k2b-message-event-group",
1366
+ _v$29 = props.expanded,
1367
+ _v$30 = props.expanded ? "ti ti-chevron-up" : "ti ti-chevron-down";
1368
+ _v$28 !== _p$.e && _$className(_el$153, _p$.e = _v$28);
1369
+ _v$29 !== _p$.t && _$setAttribute(_el$153, "aria-expanded", _p$.t = _v$29);
1370
+ _v$30 !== _p$.a && _$className(_el$157, _p$.a = _v$30);
1371
+ return _p$;
1372
+ }, {
1373
+ e: undefined,
1374
+ t: undefined,
1375
+ a: undefined
1376
+ });
1377
+ _$runHydrationEvents();
1378
+ return _el$153;
1095
1379
  })();
1096
1380
  }
1097
1381
 
1098
1382
  /** A quiet, centered line for something that happened in the conversation, such as a person joining. */
1099
1383
  export function MessageSystemRow(props) {
1100
1384
  return (() => {
1101
- var _el$125 = _$getNextElement(_tmpl$50),
1102
- _el$128 = _el$125.firstChild,
1103
- [_el$129, _co$26] = _$getNextMarker(_el$128.nextSibling),
1104
- _el$126 = _el$129.nextSibling,
1105
- _el$130 = _el$126.nextSibling,
1106
- [_el$131, _co$27] = _$getNextMarker(_el$130.nextSibling);
1107
- _$insert(_el$125, _$createComponent(Show, {
1385
+ var _el$160 = _$getNextElement(_tmpl$56),
1386
+ _el$163 = _el$160.firstChild,
1387
+ [_el$164, _co$38] = _$getNextMarker(_el$163.nextSibling),
1388
+ _el$161 = _el$164.nextSibling,
1389
+ _el$165 = _el$161.nextSibling,
1390
+ [_el$166, _co$39] = _$getNextMarker(_el$165.nextSibling);
1391
+ _$insert(_el$160, _$createComponent(Show, {
1108
1392
  get when() {
1109
1393
  return props.icon;
1110
1394
  },
1111
1395
  children: icon => (() => {
1112
- var _el$132 = _$getNextElement(_tmpl$48);
1113
- _$effect(() => _$className(_el$132, icon()));
1114
- return _el$132;
1396
+ var _el$167 = _$getNextElement(_tmpl$49);
1397
+ _$effect(() => _$className(_el$167, icon()));
1398
+ return _el$167;
1115
1399
  })()
1116
- }), _el$129, _co$26);
1117
- _$insert(_el$126, () => props.children);
1118
- _$insert(_el$125, _$createComponent(Show, {
1400
+ }), _el$164, _co$38);
1401
+ _$insert(_el$161, () => props.children);
1402
+ _$insert(_el$160, _$createComponent(Show, {
1119
1403
  get when() {
1120
1404
  return props.time;
1121
1405
  },
1122
1406
  get children() {
1123
- var _el$127 = _$getNextElement(_tmpl$49);
1124
- _$insert(_el$127, () => props.time);
1125
- _$effect(() => _$setAttribute(_el$127, "datetime", dateTimeOf(props.dateTime)));
1126
- return _el$127;
1407
+ var _el$162 = _$getNextElement(_tmpl$51);
1408
+ _$insert(_el$162, () => props.time);
1409
+ _$effect(() => _$setAttribute(_el$162, "datetime", dateTimeOf(props.dateTime)));
1410
+ return _el$162;
1127
1411
  }
1128
- }), _el$131, _co$27);
1129
- _$effect(() => _$className(_el$125, props.class ? `k2b-message-system-row ${props.class}` : "k2b-message-system-row"));
1130
- return _el$125;
1412
+ }), _el$166, _co$39);
1413
+ _$effect(() => _$className(_el$160, props.class ? `k2b-message-system-row ${props.class}` : "k2b-message-system-row"));
1414
+ return _el$160;
1131
1415
  })();
1132
1416
  }
1133
1417
  _$delegateEvents(["click", "focusin"]);