@planningcenter/chat-react-native 3.42.3-qa-staging.0 → 3.42.3-qa-staging.2

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 (694) hide show
  1. package/build/components/conversation/attachments/attachment_card.d.ts +3 -3
  2. package/build/components/conversation/attachments/attachment_card.d.ts.map +1 -1
  3. package/build/components/conversation/attachments/attachment_card.js +3 -7
  4. package/build/components/conversation/attachments/attachment_card.js.map +1 -1
  5. package/build/components/conversation/attachments/attachment_deleting_overlay.d.ts +1 -2
  6. package/build/components/conversation/attachments/attachment_deleting_overlay.d.ts.map +1 -1
  7. package/build/components/conversation/attachments/attachment_deleting_overlay.js +12 -7
  8. package/build/components/conversation/attachments/attachment_deleting_overlay.js.map +1 -1
  9. package/build/components/conversation/attachments/audio_attachment.d.ts +1 -2
  10. package/build/components/conversation/attachments/audio_attachment.d.ts.map +1 -1
  11. package/build/components/conversation/attachments/audio_attachment.js +6 -23
  12. package/build/components/conversation/attachments/audio_attachment.js.map +1 -1
  13. package/build/components/conversation/attachments/expanded_link.d.ts +1 -2
  14. package/build/components/conversation/attachments/expanded_link.d.ts.map +1 -1
  15. package/build/components/conversation/attachments/expanded_link.js +2 -8
  16. package/build/components/conversation/attachments/expanded_link.js.map +1 -1
  17. package/build/components/conversation/attachments/generic_file_attachment.d.ts +1 -2
  18. package/build/components/conversation/attachments/generic_file_attachment.d.ts.map +1 -1
  19. package/build/components/conversation/attachments/generic_file_attachment.js +2 -12
  20. package/build/components/conversation/attachments/generic_file_attachment.js.map +1 -1
  21. package/build/components/conversation/attachments/giphy_attachment.d.ts +1 -2
  22. package/build/components/conversation/attachments/giphy_attachment.d.ts.map +1 -1
  23. package/build/components/conversation/attachments/giphy_attachment.js +2 -7
  24. package/build/components/conversation/attachments/giphy_attachment.js.map +1 -1
  25. package/build/components/conversation/attachments/image_attachment.d.ts +1 -2
  26. package/build/components/conversation/attachments/image_attachment.d.ts.map +1 -1
  27. package/build/components/conversation/attachments/image_attachment.js +16 -53
  28. package/build/components/conversation/attachments/image_attachment.js.map +1 -1
  29. package/build/components/conversation/attachments/video_attachment.d.ts +1 -2
  30. package/build/components/conversation/attachments/video_attachment.d.ts.map +1 -1
  31. package/build/components/conversation/attachments/video_attachment.js +3 -13
  32. package/build/components/conversation/attachments/video_attachment.js.map +1 -1
  33. package/build/components/conversation/conversation_start_banner.d.ts +1 -2
  34. package/build/components/conversation/conversation_start_banner.d.ts.map +1 -1
  35. package/build/components/conversation/conversation_start_banner.js +2 -14
  36. package/build/components/conversation/conversation_start_banner.js.map +1 -1
  37. package/build/components/conversation/empty_conversation_blank_state.d.ts +1 -1
  38. package/build/components/conversation/empty_conversation_blank_state.d.ts.map +1 -1
  39. package/build/components/conversation/empty_conversation_blank_state.js +2 -9
  40. package/build/components/conversation/empty_conversation_blank_state.js.map +1 -1
  41. package/build/components/conversation/jump_to_bottom_button.d.ts +1 -1
  42. package/build/components/conversation/jump_to_bottom_button.d.ts.map +1 -1
  43. package/build/components/conversation/jump_to_bottom_button.js +2 -10
  44. package/build/components/conversation/jump_to_bottom_button.js.map +1 -1
  45. package/build/components/conversation/message.d.ts +1 -2
  46. package/build/components/conversation/message.d.ts.map +1 -1
  47. package/build/components/conversation/message.js +2 -53
  48. package/build/components/conversation/message.js.map +1 -1
  49. package/build/components/conversation/message_attachments.d.ts +1 -2
  50. package/build/components/conversation/message_attachments.d.ts.map +1 -1
  51. package/build/components/conversation/message_attachments.js +17 -21
  52. package/build/components/conversation/message_attachments.js.map +1 -1
  53. package/build/components/conversation/message_form/message_form_attachment_file.d.ts +1 -2
  54. package/build/components/conversation/message_form/message_form_attachment_file.d.ts.map +1 -1
  55. package/build/components/conversation/message_form/message_form_attachment_file.js +2 -2
  56. package/build/components/conversation/message_form/message_form_attachment_file.js.map +1 -1
  57. package/build/components/conversation/message_form/message_form_attachment_image.d.ts +1 -2
  58. package/build/components/conversation/message_form/message_form_attachment_image.d.ts.map +1 -1
  59. package/build/components/conversation/message_form/message_form_attachment_image.js +2 -2
  60. package/build/components/conversation/message_form/message_form_attachment_image.js.map +1 -1
  61. package/build/components/conversation/message_form/message_form_attachment_video.d.ts +1 -2
  62. package/build/components/conversation/message_form/message_form_attachment_video.d.ts.map +1 -1
  63. package/build/components/conversation/message_form/message_form_attachment_video.js +2 -2
  64. package/build/components/conversation/message_form/message_form_attachment_video.js.map +1 -1
  65. package/build/components/conversation/message_form.d.ts +5 -6
  66. package/build/components/conversation/message_form.d.ts.map +1 -1
  67. package/build/components/conversation/message_form.js +20 -82
  68. package/build/components/conversation/message_form.js.map +1 -1
  69. package/build/components/conversation/message_markdown.d.ts +1 -2
  70. package/build/components/conversation/message_markdown.d.ts.map +1 -1
  71. package/build/components/conversation/message_markdown.js +8 -16
  72. package/build/components/conversation/message_markdown.js.map +1 -1
  73. package/build/components/conversation/message_reaction.d.ts +1 -2
  74. package/build/components/conversation/message_reaction.d.ts.map +1 -1
  75. package/build/components/conversation/message_reaction.js +3 -5
  76. package/build/components/conversation/message_reaction.js.map +1 -1
  77. package/build/components/conversation/message_read_receipts.d.ts +1 -2
  78. package/build/components/conversation/message_read_receipts.d.ts.map +1 -1
  79. package/build/components/conversation/message_read_receipts.js +3 -13
  80. package/build/components/conversation/message_read_receipts.js.map +1 -1
  81. package/build/components/conversation/messages_disabled_banners.d.ts +7 -3
  82. package/build/components/conversation/messages_disabled_banners.d.ts.map +1 -1
  83. package/build/components/conversation/messages_disabled_banners.js +11 -11
  84. package/build/components/conversation/messages_disabled_banners.js.map +1 -1
  85. package/build/components/conversation/reply_connectors.d.ts +2 -2
  86. package/build/components/conversation/reply_connectors.d.ts.map +1 -1
  87. package/build/components/conversation/reply_connectors.js +18 -50
  88. package/build/components/conversation/reply_connectors.js.map +1 -1
  89. package/build/components/conversation/reply_shadow_message.d.ts +1 -2
  90. package/build/components/conversation/reply_shadow_message.d.ts.map +1 -1
  91. package/build/components/conversation/reply_shadow_message.js +16 -46
  92. package/build/components/conversation/reply_shadow_message.js.map +1 -1
  93. package/build/components/conversation/system_message.d.ts +1 -2
  94. package/build/components/conversation/system_message.d.ts.map +1 -1
  95. package/build/components/conversation/system_message.js +3 -12
  96. package/build/components/conversation/system_message.js.map +1 -1
  97. package/build/components/conversation/typing_indicator.d.ts +1 -2
  98. package/build/components/conversation/typing_indicator.d.ts.map +1 -1
  99. package/build/components/conversation/typing_indicator.js +3 -13
  100. package/build/components/conversation/typing_indicator.js.map +1 -1
  101. package/build/components/conversations/conversation_actions.d.ts +2 -2
  102. package/build/components/conversations/conversation_actions.d.ts.map +1 -1
  103. package/build/components/conversations/conversation_actions.js +4 -10
  104. package/build/components/conversations/conversation_actions.js.map +1 -1
  105. package/build/components/conversations/conversation_preview.d.ts +2 -3
  106. package/build/components/conversations/conversation_preview.d.ts.map +1 -1
  107. package/build/components/conversations/conversation_preview.js +7 -37
  108. package/build/components/conversations/conversation_preview.js.map +1 -1
  109. package/build/components/conversations/conversations.d.ts +1 -1
  110. package/build/components/conversations/conversations.d.ts.map +1 -1
  111. package/build/components/conversations/conversations.js +16 -17
  112. package/build/components/conversations/conversations.js.map +1 -1
  113. package/build/components/conversations/conversations_blank_state.d.ts +1 -2
  114. package/build/components/conversations/conversations_blank_state.d.ts.map +1 -1
  115. package/build/components/conversations/conversations_blank_state.js +2 -12
  116. package/build/components/conversations/conversations_blank_state.js.map +1 -1
  117. package/build/components/conversations/mute_indicator.d.ts +1 -2
  118. package/build/components/conversations/mute_indicator.d.ts.map +1 -1
  119. package/build/components/conversations/mute_indicator.js +2 -2
  120. package/build/components/conversations/mute_indicator.js.map +1 -1
  121. package/build/components/conversations/swipeable_toggle_button.d.ts +1 -2
  122. package/build/components/conversations/swipeable_toggle_button.d.ts.map +1 -1
  123. package/build/components/conversations/swipeable_toggle_button.js +3 -10
  124. package/build/components/conversations/swipeable_toggle_button.js.map +1 -1
  125. package/build/components/conversations/unread_count_badge.d.ts +1 -2
  126. package/build/components/conversations/unread_count_badge.d.ts.map +1 -1
  127. package/build/components/conversations/unread_count_badge.js +3 -7
  128. package/build/components/conversations/unread_count_badge.js.map +1 -1
  129. package/build/components/display/action_button.d.ts +1 -1
  130. package/build/components/display/action_button.d.ts.map +1 -1
  131. package/build/components/display/action_button.js +3 -13
  132. package/build/components/display/action_button.js.map +1 -1
  133. package/build/components/display/adult_requirement_notice.d.ts +1 -2
  134. package/build/components/display/adult_requirement_notice.d.ts.map +1 -1
  135. package/build/components/display/adult_requirement_notice.js +2 -4
  136. package/build/components/display/adult_requirement_notice.js.map +1 -1
  137. package/build/components/display/avatar.d.ts +1 -2
  138. package/build/components/display/avatar.d.ts.map +1 -1
  139. package/build/components/display/avatar.js +2 -7
  140. package/build/components/display/avatar.js.map +1 -1
  141. package/build/components/display/avatar_group.d.ts +1 -2
  142. package/build/components/display/avatar_group.d.ts.map +1 -1
  143. package/build/components/display/avatar_group.js +2 -9
  144. package/build/components/display/avatar_group.js.map +1 -1
  145. package/build/components/display/badge.d.ts +1 -2
  146. package/build/components/display/badge.d.ts.map +1 -1
  147. package/build/components/display/badge.js +6 -37
  148. package/build/components/display/badge.js.map +1 -1
  149. package/build/components/display/banner.d.ts +3 -3
  150. package/build/components/display/banner.d.ts.map +1 -1
  151. package/build/components/display/banner.js +4 -11
  152. package/build/components/display/banner.js.map +1 -1
  153. package/build/components/display/banner_collapsible.d.ts +2 -2
  154. package/build/components/display/banner_collapsible.d.ts.map +1 -1
  155. package/build/components/display/banner_collapsible.js +2 -10
  156. package/build/components/display/banner_collapsible.js.map +1 -1
  157. package/build/components/display/button.d.ts +1 -2
  158. package/build/components/display/button.d.ts.map +1 -1
  159. package/build/components/display/button.js +3 -14
  160. package/build/components/display/button.js.map +1 -1
  161. package/build/components/display/child_notice.d.ts +1 -2
  162. package/build/components/display/child_notice.d.ts.map +1 -1
  163. package/build/components/display/child_notice.js +3 -15
  164. package/build/components/display/child_notice.js.map +1 -1
  165. package/build/components/display/conversation_avatar.d.ts +1 -2
  166. package/build/components/display/conversation_avatar.d.ts.map +1 -1
  167. package/build/components/display/conversation_avatar.js +5 -9
  168. package/build/components/display/conversation_avatar.js.map +1 -1
  169. package/build/components/display/emoji_avatar.d.ts +1 -2
  170. package/build/components/display/emoji_avatar.d.ts.map +1 -1
  171. package/build/components/display/emoji_avatar.js +2 -12
  172. package/build/components/display/emoji_avatar.js.map +1 -1
  173. package/build/components/display/file_attachment_preview.d.ts +1 -1
  174. package/build/components/display/file_attachment_preview.d.ts.map +1 -1
  175. package/build/components/display/file_attachment_preview.js +3 -17
  176. package/build/components/display/file_attachment_preview.js.map +1 -1
  177. package/build/components/display/heading.d.ts +1 -2
  178. package/build/components/display/heading.d.ts.map +1 -1
  179. package/build/components/display/heading.js +2 -4
  180. package/build/components/display/heading.js.map +1 -1
  181. package/build/components/display/icon.d.ts +1 -2
  182. package/build/components/display/icon.d.ts.map +1 -1
  183. package/build/components/display/icon.js +4 -4
  184. package/build/components/display/icon.js.map +1 -1
  185. package/build/components/display/icon_avatar.d.ts +1 -2
  186. package/build/components/display/icon_avatar.d.ts.map +1 -1
  187. package/build/components/display/icon_avatar.js +2 -12
  188. package/build/components/display/icon_avatar.js.map +1 -1
  189. package/build/components/display/icon_button.d.ts +1 -2
  190. package/build/components/display/icon_button.d.ts.map +1 -1
  191. package/build/components/display/icon_button.js +3 -5
  192. package/build/components/display/icon_button.js.map +1 -1
  193. package/build/components/display/image.d.ts +1 -2
  194. package/build/components/display/image.d.ts.map +1 -1
  195. package/build/components/display/image.js +3 -7
  196. package/build/components/display/image.js.map +1 -1
  197. package/build/components/display/image_attachment_preview.d.ts +1 -1
  198. package/build/components/display/image_attachment_preview.d.ts.map +1 -1
  199. package/build/components/display/image_attachment_preview.js +2 -7
  200. package/build/components/display/image_attachment_preview.js.map +1 -1
  201. package/build/components/display/keyboard_view.d.ts +1 -2
  202. package/build/components/display/keyboard_view.d.ts.map +1 -1
  203. package/build/components/display/keyboard_view.js +4 -9
  204. package/build/components/display/keyboard_view.js.map +1 -1
  205. package/build/components/display/person.d.ts +1 -2
  206. package/build/components/display/person.d.ts.map +1 -1
  207. package/build/components/display/person.js +2 -12
  208. package/build/components/display/person.js.map +1 -1
  209. package/build/components/display/platform_modal_header_buttons.d.ts +3 -3
  210. package/build/components/display/platform_modal_header_buttons.d.ts.map +1 -1
  211. package/build/components/display/platform_modal_header_buttons.js +5 -10
  212. package/build/components/display/platform_modal_header_buttons.js.map +1 -1
  213. package/build/components/display/pressable_row.d.ts +1 -1
  214. package/build/components/display/pressable_row.d.ts.map +1 -1
  215. package/build/components/display/pressable_row.js +2 -7
  216. package/build/components/display/pressable_row.js.map +1 -1
  217. package/build/components/display/spinner.d.ts +1 -2
  218. package/build/components/display/spinner.d.ts.map +1 -1
  219. package/build/components/display/spinner.js +3 -9
  220. package/build/components/display/spinner.js.map +1 -1
  221. package/build/components/display/switch.d.ts +1 -2
  222. package/build/components/display/switch.d.ts.map +1 -1
  223. package/build/components/display/switch.js +2 -2
  224. package/build/components/display/switch.js.map +1 -1
  225. package/build/components/display/tabs.d.ts +1 -1
  226. package/build/components/display/tabs.d.ts.map +1 -1
  227. package/build/components/display/tabs.js +21 -31
  228. package/build/components/display/tabs.js.map +1 -1
  229. package/build/components/display/text.d.ts +1 -2
  230. package/build/components/display/text.d.ts.map +1 -1
  231. package/build/components/display/text.js +2 -4
  232. package/build/components/display/text.js.map +1 -1
  233. package/build/components/display/text_button.d.ts +1 -2
  234. package/build/components/display/text_button.d.ts.map +1 -1
  235. package/build/components/display/text_button.js +3 -8
  236. package/build/components/display/text_button.js.map +1 -1
  237. package/build/components/display/text_inline_button.d.ts +1 -2
  238. package/build/components/display/text_inline_button.d.ts.map +1 -1
  239. package/build/components/display/text_inline_button.js +4 -5
  240. package/build/components/display/text_inline_button.js.map +1 -1
  241. package/build/components/display/text_input.d.ts +1 -1
  242. package/build/components/display/text_input.d.ts.map +1 -1
  243. package/build/components/display/text_input.js +2 -1
  244. package/build/components/display/text_input.js.map +1 -1
  245. package/build/components/display/toggle_button.d.ts +1 -2
  246. package/build/components/display/toggle_button.d.ts.map +1 -1
  247. package/build/components/display/toggle_button.js +3 -9
  248. package/build/components/display/toggle_button.js.map +1 -1
  249. package/build/components/display/video_attachment_preview.d.ts +1 -1
  250. package/build/components/display/video_attachment_preview.d.ts.map +1 -1
  251. package/build/components/display/video_attachment_preview.js +3 -20
  252. package/build/components/display/video_attachment_preview.js.map +1 -1
  253. package/build/components/group_conversation_list.d.ts +1 -1
  254. package/build/components/group_conversation_list.d.ts.map +1 -1
  255. package/build/components/group_conversation_list.js +4 -14
  256. package/build/components/group_conversation_list.js.map +1 -1
  257. package/build/components/page/component_error_boundary.d.ts +2 -2
  258. package/build/components/page/component_error_boundary.d.ts.map +1 -1
  259. package/build/components/page/component_error_boundary.js +2 -4
  260. package/build/components/page/component_error_boundary.js.map +1 -1
  261. package/build/components/page/loading.d.ts +1 -2
  262. package/build/components/page/loading.d.ts.map +1 -1
  263. package/build/components/page/loading.js +2 -4
  264. package/build/components/page/loading.js.map +1 -1
  265. package/build/components/page/page_error_boundary.d.ts +2 -2
  266. package/build/components/page/page_error_boundary.d.ts.map +1 -1
  267. package/build/components/page/page_error_boundary.js +11 -32
  268. package/build/components/page/page_error_boundary.js.map +1 -1
  269. package/build/components/primitive/avatar_primitive.js +14 -41
  270. package/build/components/primitive/avatar_primitive.js.map +1 -1
  271. package/build/components/primitive/banner_primitive.js +10 -18
  272. package/build/components/primitive/banner_primitive.js.map +1 -1
  273. package/build/components/primitive/blank_state_primitive.js +8 -12
  274. package/build/components/primitive/blank_state_primitive.js.map +1 -1
  275. package/build/components/primitive/form_sheet.d.ts +1 -1
  276. package/build/components/primitive/form_sheet.d.ts.map +1 -1
  277. package/build/components/primitive/form_sheet.js +9 -22
  278. package/build/components/primitive/form_sheet.js.map +1 -1
  279. package/build/components/safe_area_modal.d.ts +1 -1
  280. package/build/components/safe_area_modal.d.ts.map +1 -1
  281. package/build/components/safe_area_modal.js +2 -3
  282. package/build/components/safe_area_modal.js.map +1 -1
  283. package/build/contexts/api_provider.d.ts +1 -2
  284. package/build/contexts/api_provider.d.ts.map +1 -1
  285. package/build/contexts/api_provider.js +3 -5
  286. package/build/contexts/api_provider.js.map +1 -1
  287. package/build/contexts/chat_context.d.ts +2 -1
  288. package/build/contexts/chat_context.d.ts.map +1 -1
  289. package/build/contexts/chat_context.js +9 -2
  290. package/build/contexts/chat_context.js.map +1 -1
  291. package/build/contexts/conversation_context.d.ts +2 -2
  292. package/build/contexts/conversation_context.d.ts.map +1 -1
  293. package/build/contexts/conversation_context.js +3 -2
  294. package/build/contexts/conversation_context.js.map +1 -1
  295. package/build/contexts/conversations_context.d.ts +2 -2
  296. package/build/contexts/conversations_context.d.ts.map +1 -1
  297. package/build/contexts/conversations_context.js +3 -2
  298. package/build/contexts/conversations_context.js.map +1 -1
  299. package/build/contexts/session_context.d.ts +1 -1
  300. package/build/contexts/session_context.d.ts.map +1 -1
  301. package/build/contexts/session_context.js +3 -2
  302. package/build/contexts/session_context.js.map +1 -1
  303. package/build/hooks/direct_messages/find_direct_message_conversation.d.ts +14 -0
  304. package/build/hooks/direct_messages/find_direct_message_conversation.d.ts.map +1 -0
  305. package/build/hooks/direct_messages/find_direct_message_conversation.js +10 -0
  306. package/build/hooks/direct_messages/find_direct_message_conversation.js.map +1 -0
  307. package/build/hooks/direct_messages/resolve_message_available_members_link.d.ts +16 -0
  308. package/build/hooks/direct_messages/resolve_message_available_members_link.d.ts.map +1 -0
  309. package/build/hooks/direct_messages/resolve_message_available_members_link.js +24 -0
  310. package/build/hooks/direct_messages/resolve_message_available_members_link.js.map +1 -0
  311. package/build/hooks/direct_messages/use_find_or_create_direct_message_conversation.d.ts.map +1 -1
  312. package/build/hooks/direct_messages/use_find_or_create_direct_message_conversation.js +1 -8
  313. package/build/hooks/direct_messages/use_find_or_create_direct_message_conversation.js.map +1 -1
  314. package/build/hooks/direct_messages/use_message_available_members.d.ts +6 -0
  315. package/build/hooks/direct_messages/use_message_available_members.d.ts.map +1 -0
  316. package/build/hooks/direct_messages/use_message_available_members.js +40 -0
  317. package/build/hooks/direct_messages/use_message_available_members.js.map +1 -0
  318. package/build/hooks/direct_messages/use_message_available_members_action.d.ts +6 -0
  319. package/build/hooks/direct_messages/use_message_available_members_action.d.ts.map +1 -0
  320. package/build/hooks/direct_messages/use_message_available_members_action.js +30 -0
  321. package/build/hooks/direct_messages/use_message_available_members_action.js.map +1 -0
  322. package/build/hooks/index.d.ts +1 -1
  323. package/build/hooks/index.d.ts.map +1 -1
  324. package/build/hooks/index.js +1 -1
  325. package/build/hooks/index.js.map +1 -1
  326. package/build/hooks/use_animated_message_background_color.d.ts +2 -2
  327. package/build/hooks/use_conversation.d.ts +1 -1
  328. package/build/hooks/use_conversation.d.ts.map +1 -1
  329. package/build/hooks/use_conversation.js +1 -0
  330. package/build/hooks/use_conversation.js.map +1 -1
  331. package/build/hooks/use_conversation_membership.d.ts +1 -1
  332. package/build/hooks/use_conversation_membership.d.ts.map +1 -1
  333. package/build/hooks/use_conversations_actions.d.ts +36 -36
  334. package/build/hooks/use_current_person.d.ts.map +1 -1
  335. package/build/hooks/use_current_person.js +1 -0
  336. package/build/hooks/use_current_person.js.map +1 -1
  337. package/build/hooks/use_direct_messages_eligible.d.ts +2 -0
  338. package/build/hooks/use_direct_messages_eligible.d.ts.map +1 -0
  339. package/build/hooks/use_direct_messages_eligible.js +9 -0
  340. package/build/hooks/use_direct_messages_eligible.js.map +1 -0
  341. package/build/hooks/use_features.d.ts +0 -1
  342. package/build/hooks/use_features.d.ts.map +1 -1
  343. package/build/hooks/use_features.js +0 -1
  344. package/build/hooks/use_features.js.map +1 -1
  345. package/build/hooks/use_person_settings.d.ts +1 -1
  346. package/build/index.d.ts +2 -1
  347. package/build/index.d.ts.map +1 -1
  348. package/build/index.js.map +1 -1
  349. package/build/navigation/chat_access_gate.d.ts +2 -2
  350. package/build/navigation/chat_access_gate.d.ts.map +1 -1
  351. package/build/navigation/chat_access_gate.js +6 -5
  352. package/build/navigation/chat_access_gate.js.map +1 -1
  353. package/build/navigation/index.d.ts +37 -39
  354. package/build/navigation/index.d.ts.map +1 -1
  355. package/build/navigation/index.js +21 -23
  356. package/build/navigation/index.js.map +1 -1
  357. package/build/navigation/screenLayout.d.ts +2 -2
  358. package/build/navigation/screenLayout.d.ts.map +1 -1
  359. package/build/navigation/screenLayout.js +3 -9
  360. package/build/navigation/screenLayout.js.map +1 -1
  361. package/build/polyfills/events/EventTarget.d.ts +1 -1
  362. package/build/polyfills/events/EventTarget.d.ts.map +1 -1
  363. package/build/polyfills/events/EventTarget.js.map +1 -1
  364. package/build/screens/age_check/age_check_required_screen.d.ts +1 -2
  365. package/build/screens/age_check/age_check_required_screen.d.ts.map +1 -1
  366. package/build/screens/age_check/age_check_required_screen.js +3 -46
  367. package/build/screens/age_check/age_check_required_screen.js.map +1 -1
  368. package/build/screens/age_check/age_check_underage_screen.d.ts +1 -2
  369. package/build/screens/age_check/age_check_underage_screen.d.ts.map +1 -1
  370. package/build/screens/age_check/age_check_underage_screen.js +2 -25
  371. package/build/screens/age_check/age_check_underage_screen.js.map +1 -1
  372. package/build/screens/age_check/components/age_check_select_birthdate_modal.d.ts +1 -2
  373. package/build/screens/age_check/components/age_check_select_birthdate_modal.d.ts.map +1 -1
  374. package/build/screens/age_check/components/age_check_select_birthdate_modal.js +6 -25
  375. package/build/screens/age_check/components/age_check_select_birthdate_modal.js.map +1 -1
  376. package/build/screens/attachment_actions/attachment_actions_screen.d.ts +1 -2
  377. package/build/screens/attachment_actions/attachment_actions_screen.d.ts.map +1 -1
  378. package/build/screens/attachment_actions/attachment_actions_screen.js +3 -5
  379. package/build/screens/attachment_actions/attachment_actions_screen.js.map +1 -1
  380. package/build/screens/avatar_picker/avatar_picker_screen.d.ts +1 -2
  381. package/build/screens/avatar_picker/avatar_picker_screen.d.ts.map +1 -1
  382. package/build/screens/avatar_picker/avatar_picker_screen.js +9 -36
  383. package/build/screens/avatar_picker/avatar_picker_screen.js.map +1 -1
  384. package/build/screens/avatar_picker/avatar_preview.d.ts +1 -1
  385. package/build/screens/avatar_picker/avatar_preview.d.ts.map +1 -1
  386. package/build/screens/avatar_picker/avatar_preview.js +5 -9
  387. package/build/screens/avatar_picker/avatar_preview.js.map +1 -1
  388. package/build/screens/avatar_picker/color_picker.d.ts +1 -2
  389. package/build/screens/avatar_picker/color_picker.d.ts.map +1 -1
  390. package/build/screens/avatar_picker/color_picker.js +4 -5
  391. package/build/screens/avatar_picker/color_picker.js.map +1 -1
  392. package/build/screens/avatar_picker/emoji_tab.d.ts +1 -2
  393. package/build/screens/avatar_picker/emoji_tab.d.ts.map +1 -1
  394. package/build/screens/avatar_picker/emoji_tab.js +12 -13
  395. package/build/screens/avatar_picker/emoji_tab.js.map +1 -1
  396. package/build/screens/avatar_picker/icon_grid.d.ts +1 -2
  397. package/build/screens/avatar_picker/icon_grid.d.ts.map +1 -1
  398. package/build/screens/avatar_picker/icon_grid.js +4 -5
  399. package/build/screens/avatar_picker/icon_grid.js.map +1 -1
  400. package/build/screens/avatar_picker/upload_tab.d.ts +1 -2
  401. package/build/screens/avatar_picker/upload_tab.d.ts.map +1 -1
  402. package/build/screens/avatar_picker/upload_tab.js +3 -4
  403. package/build/screens/avatar_picker/upload_tab.js.map +1 -1
  404. package/build/screens/bug_report_screen.d.ts +1 -2
  405. package/build/screens/bug_report_screen.d.ts.map +1 -1
  406. package/build/screens/bug_report_screen.js +11 -117
  407. package/build/screens/bug_report_screen.js.map +1 -1
  408. package/build/screens/conversation/message_read_receipts_screen.d.ts +1 -2
  409. package/build/screens/conversation/message_read_receipts_screen.d.ts.map +1 -1
  410. package/build/screens/conversation/message_read_receipts_screen.js +4 -20
  411. package/build/screens/conversation/message_read_receipts_screen.js.map +1 -1
  412. package/build/screens/conversation_details_screen.d.ts +1 -2
  413. package/build/screens/conversation_details_screen.d.ts.map +1 -1
  414. package/build/screens/conversation_details_screen.js +43 -106
  415. package/build/screens/conversation_details_screen.js.map +1 -1
  416. package/build/screens/conversation_filter_recipients/components/checkbox_row.d.ts +1 -1
  417. package/build/screens/conversation_filter_recipients/components/checkbox_row.d.ts.map +1 -1
  418. package/build/screens/conversation_filter_recipients/components/checkbox_row.js +3 -9
  419. package/build/screens/conversation_filter_recipients/components/checkbox_row.js.map +1 -1
  420. package/build/screens/conversation_filter_recipients/components/header_row.d.ts +1 -1
  421. package/build/screens/conversation_filter_recipients/components/header_row.d.ts.map +1 -1
  422. package/build/screens/conversation_filter_recipients/components/header_row.js +2 -12
  423. package/build/screens/conversation_filter_recipients/components/header_row.js.map +1 -1
  424. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.d.ts +1 -2
  425. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.d.ts.map +1 -1
  426. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.js +20 -44
  427. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.js.map +1 -1
  428. package/build/screens/conversation_filters/components/conversation_filters.d.ts +1 -2
  429. package/build/screens/conversation_filters/components/conversation_filters.d.ts.map +1 -1
  430. package/build/screens/conversation_filters/components/conversation_filters.js +13 -14
  431. package/build/screens/conversation_filters/components/conversation_filters.js.map +1 -1
  432. package/build/screens/conversation_filters/components/rows.d.ts +6 -6
  433. package/build/screens/conversation_filters/components/rows.d.ts.map +1 -1
  434. package/build/screens/conversation_filters/components/rows.js +7 -34
  435. package/build/screens/conversation_filters/components/rows.js.map +1 -1
  436. package/build/screens/conversation_filters/context/conversation_filter_context.d.ts +1 -1
  437. package/build/screens/conversation_filters/context/conversation_filter_context.d.ts.map +1 -1
  438. package/build/screens/conversation_filters/context/conversation_filter_context.js +2 -1
  439. package/build/screens/conversation_filters/context/conversation_filter_context.js.map +1 -1
  440. package/build/screens/conversation_filters/group_filters.d.ts +1 -2
  441. package/build/screens/conversation_filters/group_filters.d.ts.map +1 -1
  442. package/build/screens/conversation_filters/group_filters.js +2 -2
  443. package/build/screens/conversation_filters/group_filters.js.map +1 -1
  444. package/build/screens/conversation_filters/team_filters.d.ts +1 -2
  445. package/build/screens/conversation_filters/team_filters.d.ts.map +1 -1
  446. package/build/screens/conversation_filters/team_filters.js +2 -2
  447. package/build/screens/conversation_filters/team_filters.js.map +1 -1
  448. package/build/screens/conversation_filters_screen.d.ts +1 -2
  449. package/build/screens/conversation_filters_screen.d.ts.map +1 -1
  450. package/build/screens/conversation_filters_screen.js +4 -16
  451. package/build/screens/conversation_filters_screen.js.map +1 -1
  452. package/build/screens/conversation_new/components/avatar_selection_row.d.ts +2 -3
  453. package/build/screens/conversation_new/components/avatar_selection_row.d.ts.map +1 -1
  454. package/build/screens/conversation_new/components/avatar_selection_row.js +6 -16
  455. package/build/screens/conversation_new/components/avatar_selection_row.js.map +1 -1
  456. package/build/screens/conversation_new/components/filter_by_plan.d.ts +3 -4
  457. package/build/screens/conversation_new/components/filter_by_plan.d.ts.map +1 -1
  458. package/build/screens/conversation_new/components/filter_by_plan.js +22 -46
  459. package/build/screens/conversation_new/components/filter_by_plan.js.map +1 -1
  460. package/build/screens/conversation_new/components/form_list.d.ts +2 -3
  461. package/build/screens/conversation_new/components/form_list.d.ts.map +1 -1
  462. package/build/screens/conversation_new/components/form_list.js +4 -6
  463. package/build/screens/conversation_new/components/form_list.js.map +1 -1
  464. package/build/screens/conversation_new/components/gender_filter_toggle.d.ts +1 -2
  465. package/build/screens/conversation_new/components/gender_filter_toggle.d.ts.map +1 -1
  466. package/build/screens/conversation_new/components/gender_filter_toggle.js +4 -20
  467. package/build/screens/conversation_new/components/gender_filter_toggle.js.map +1 -1
  468. package/build/screens/conversation_new/components/groups_form.d.ts +1 -2
  469. package/build/screens/conversation_new/components/groups_form.d.ts.map +1 -1
  470. package/build/screens/conversation_new/components/groups_form.js +4 -30
  471. package/build/screens/conversation_new/components/groups_form.js.map +1 -1
  472. package/build/screens/conversation_new/components/services_form.d.ts +1 -2
  473. package/build/screens/conversation_new/components/services_form.d.ts.map +1 -1
  474. package/build/screens/conversation_new/components/services_form.js +27 -61
  475. package/build/screens/conversation_new/components/services_form.js.map +1 -1
  476. package/build/screens/conversation_new/components/source_app_error_card.d.ts +1 -1
  477. package/build/screens/conversation_new/components/source_app_error_card.d.ts.map +1 -1
  478. package/build/screens/conversation_new/components/source_app_error_card.js +2 -3
  479. package/build/screens/conversation_new/components/source_app_error_card.js.map +1 -1
  480. package/build/screens/conversation_new/conversation_new_screen.d.ts +1 -2
  481. package/build/screens/conversation_new/conversation_new_screen.d.ts.map +1 -1
  482. package/build/screens/conversation_new/conversation_new_screen.js +4 -4
  483. package/build/screens/conversation_new/conversation_new_screen.js.map +1 -1
  484. package/build/screens/conversation_notification_level_select_screen.d.ts +1 -2
  485. package/build/screens/conversation_notification_level_select_screen.d.ts.map +1 -1
  486. package/build/screens/conversation_notification_level_select_screen.js +4 -6
  487. package/build/screens/conversation_notification_level_select_screen.js.map +1 -1
  488. package/build/screens/conversation_screen.d.ts +2 -3
  489. package/build/screens/conversation_screen.d.ts.map +1 -1
  490. package/build/screens/conversation_screen.js +26 -65
  491. package/build/screens/conversation_screen.js.map +1 -1
  492. package/build/screens/conversation_select_recipients/components/groups_recipient_row.d.ts +1 -1
  493. package/build/screens/conversation_select_recipients/components/groups_recipient_row.d.ts.map +1 -1
  494. package/build/screens/conversation_select_recipients/components/groups_recipient_row.js +2 -1
  495. package/build/screens/conversation_select_recipients/components/groups_recipient_row.js.map +1 -1
  496. package/build/screens/conversation_select_recipients/components/recipient_link_row.d.ts +1 -2
  497. package/build/screens/conversation_select_recipients/components/recipient_link_row.d.ts.map +1 -1
  498. package/build/screens/conversation_select_recipients/components/recipient_link_row.js +2 -15
  499. package/build/screens/conversation_select_recipients/components/recipient_link_row.js.map +1 -1
  500. package/build/screens/conversation_select_recipients/components/restricted_group_row.d.ts +1 -2
  501. package/build/screens/conversation_select_recipients/components/restricted_group_row.d.ts.map +1 -1
  502. package/build/screens/conversation_select_recipients/components/restricted_group_row.js +2 -14
  503. package/build/screens/conversation_select_recipients/components/restricted_group_row.js.map +1 -1
  504. package/build/screens/conversation_select_recipients/components/team_recipient_row.d.ts +1 -1
  505. package/build/screens/conversation_select_recipients/components/team_recipient_row.d.ts.map +1 -1
  506. package/build/screens/conversation_select_recipients/components/team_recipient_row.js +2 -1
  507. package/build/screens/conversation_select_recipients/components/team_recipient_row.js.map +1 -1
  508. package/build/screens/conversation_select_recipients/components/view_more_link_row.d.ts +1 -1
  509. package/build/screens/conversation_select_recipients/components/view_more_link_row.d.ts.map +1 -1
  510. package/build/screens/conversation_select_recipients/components/view_more_link_row.js +2 -5
  511. package/build/screens/conversation_select_recipients/components/view_more_link_row.js.map +1 -1
  512. package/build/screens/conversation_select_recipients/conversation_new_entry_screen.d.ts +1 -2
  513. package/build/screens/conversation_select_recipients/conversation_new_entry_screen.d.ts.map +1 -1
  514. package/build/screens/conversation_select_recipients/conversation_new_entry_screen.js +4 -11
  515. package/build/screens/conversation_select_recipients/conversation_new_entry_screen.js.map +1 -1
  516. package/build/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.d.ts +1 -1
  517. package/build/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.d.ts.map +1 -1
  518. package/build/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.js +24 -85
  519. package/build/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.js.map +1 -1
  520. package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.d.ts +1 -2
  521. package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.d.ts.map +1 -1
  522. package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.js +7 -14
  523. package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.js.map +1 -1
  524. package/build/screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen.d.ts +1 -2
  525. package/build/screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen.d.ts.map +1 -1
  526. package/build/screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen.js +15 -18
  527. package/build/screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen.js.map +1 -1
  528. package/build/screens/conversation_select_recipients/types/screen_props.d.ts +2 -0
  529. package/build/screens/conversation_select_recipients/types/screen_props.d.ts.map +1 -1
  530. package/build/screens/conversation_select_recipients/types/screen_props.js.map +1 -1
  531. package/build/screens/conversation_select_type_screen.d.ts +1 -2
  532. package/build/screens/conversation_select_type_screen.d.ts.map +1 -1
  533. package/build/screens/conversation_select_type_screen.js +7 -17
  534. package/build/screens/conversation_select_type_screen.js.map +1 -1
  535. package/build/screens/conversations/components/chat_group_badge.d.ts +1 -2
  536. package/build/screens/conversations/components/chat_group_badge.d.ts.map +1 -1
  537. package/build/screens/conversations/components/chat_group_badge.js +3 -4
  538. package/build/screens/conversations/components/chat_group_badge.js.map +1 -1
  539. package/build/screens/conversations/components/list_header_action_button.d.ts +1 -2
  540. package/build/screens/conversations/components/list_header_action_button.d.ts.map +1 -1
  541. package/build/screens/conversations/components/list_header_action_button.js +3 -5
  542. package/build/screens/conversations/components/list_header_action_button.js.map +1 -1
  543. package/build/screens/conversations/components/list_header_component.d.ts +1 -2
  544. package/build/screens/conversations/components/list_header_component.d.ts.map +1 -1
  545. package/build/screens/conversations/components/list_header_component.js +22 -45
  546. package/build/screens/conversations/components/list_header_component.js.map +1 -1
  547. package/build/screens/conversations/conversations_screen.d.ts +1 -2
  548. package/build/screens/conversations/conversations_screen.d.ts.map +1 -1
  549. package/build/screens/conversations/conversations_screen.js +2 -6
  550. package/build/screens/conversations/conversations_screen.js.map +1 -1
  551. package/build/screens/design_system_screen.d.ts +1 -2
  552. package/build/screens/design_system_screen.d.ts.map +1 -1
  553. package/build/screens/design_system_screen.js +35 -558
  554. package/build/screens/design_system_screen.js.map +1 -1
  555. package/build/screens/get_help_screen.d.ts +1 -1
  556. package/build/screens/get_help_screen.d.ts.map +1 -1
  557. package/build/screens/get_help_screen.js +4 -25
  558. package/build/screens/get_help_screen.js.map +1 -1
  559. package/build/screens/group_notification_level_select_screen.d.ts +1 -2
  560. package/build/screens/group_notification_level_select_screen.d.ts.map +1 -1
  561. package/build/screens/group_notification_level_select_screen.js +2 -4
  562. package/build/screens/group_notification_level_select_screen.js.map +1 -1
  563. package/build/screens/group_notification_settings_screen.d.ts +1 -2
  564. package/build/screens/group_notification_settings_screen.d.ts.map +1 -1
  565. package/build/screens/group_notification_settings_screen.js +3 -25
  566. package/build/screens/group_notification_settings_screen.js.map +1 -1
  567. package/build/screens/message_actions_screen.d.ts +1 -2
  568. package/build/screens/message_actions_screen.d.ts.map +1 -1
  569. package/build/screens/message_actions_screen.js +12 -28
  570. package/build/screens/message_actions_screen.js.map +1 -1
  571. package/build/screens/message_report/components/message_preview.d.ts +1 -2
  572. package/build/screens/message_report/components/message_preview.d.ts.map +1 -1
  573. package/build/screens/message_report/components/message_preview.js +2 -22
  574. package/build/screens/message_report/components/message_preview.js.map +1 -1
  575. package/build/screens/message_report/components/report_reason_list.d.ts +1 -2
  576. package/build/screens/message_report/components/report_reason_list.d.ts.map +1 -1
  577. package/build/screens/message_report/components/report_reason_list.js +4 -13
  578. package/build/screens/message_report/components/report_reason_list.js.map +1 -1
  579. package/build/screens/message_report_screen.d.ts +1 -2
  580. package/build/screens/message_report_screen.d.ts.map +1 -1
  581. package/build/screens/message_report_screen.js +9 -61
  582. package/build/screens/message_report_screen.js.map +1 -1
  583. package/build/screens/not_found.d.ts +1 -2
  584. package/build/screens/not_found.d.ts.map +1 -1
  585. package/build/screens/not_found.js +2 -5
  586. package/build/screens/not_found.js.map +1 -1
  587. package/build/screens/notification_settings/hooks/groups.d.ts +1 -1
  588. package/build/screens/notification_settings/hooks/groups.d.ts.map +1 -1
  589. package/build/screens/notification_settings_screen.d.ts +1 -2
  590. package/build/screens/notification_settings_screen.d.ts.map +1 -1
  591. package/build/screens/notification_settings_screen.js +28 -66
  592. package/build/screens/notification_settings_screen.js.map +1 -1
  593. package/build/screens/preferred_app_selection_screen.d.ts +1 -2
  594. package/build/screens/preferred_app_selection_screen.d.ts.map +1 -1
  595. package/build/screens/preferred_app_selection_screen.js +3 -21
  596. package/build/screens/preferred_app_selection_screen.js.map +1 -1
  597. package/build/screens/reactions_screen.d.ts +1 -2
  598. package/build/screens/reactions_screen.d.ts.map +1 -1
  599. package/build/screens/reactions_screen.js +7 -19
  600. package/build/screens/reactions_screen.js.map +1 -1
  601. package/build/screens/send_giphy_screen.d.ts +1 -2
  602. package/build/screens/send_giphy_screen.d.ts.map +1 -1
  603. package/build/screens/send_giphy_screen.js +5 -31
  604. package/build/screens/send_giphy_screen.js.map +1 -1
  605. package/build/screens/settings_screen.d.ts +1 -2
  606. package/build/screens/settings_screen.d.ts.map +1 -1
  607. package/build/screens/settings_screen.js +6 -28
  608. package/build/screens/settings_screen.js.map +1 -1
  609. package/build/screens/system_message_people_screen.d.ts +1 -2
  610. package/build/screens/system_message_people_screen.d.ts.map +1 -1
  611. package/build/screens/system_message_people_screen.js +4 -10
  612. package/build/screens/system_message_people_screen.js.map +1 -1
  613. package/build/screens/team_conversation_screen.d.ts +1 -1
  614. package/build/screens/team_conversation_screen.d.ts.map +1 -1
  615. package/build/screens/team_conversation_screen.js +4 -12
  616. package/build/screens/team_conversation_screen.js.map +1 -1
  617. package/build/types/resources/direct_message_candidate.d.ts +1 -0
  618. package/build/types/resources/direct_message_candidate.d.ts.map +1 -1
  619. package/build/types/resources/direct_message_candidate.js.map +1 -1
  620. package/build/types/resources/member.d.ts +1 -0
  621. package/build/types/resources/member.d.ts.map +1 -1
  622. package/build/types/resources/member.js.map +1 -1
  623. package/build/types/resources/member_ability.d.ts +1 -0
  624. package/build/types/resources/member_ability.d.ts.map +1 -1
  625. package/build/types/resources/member_ability.js.map +1 -1
  626. package/build/types/resources/person.d.ts +1 -0
  627. package/build/types/resources/person.d.ts.map +1 -1
  628. package/build/types/resources/person.js.map +1 -1
  629. package/build/utils/index.d.ts +1 -0
  630. package/build/utils/index.d.ts.map +1 -1
  631. package/build/utils/index.js +1 -0
  632. package/build/utils/index.js.map +1 -1
  633. package/build/utils/liquid_glass.d.ts +3 -0
  634. package/build/utils/liquid_glass.d.ts.map +1 -0
  635. package/build/utils/liquid_glass.js +9 -0
  636. package/build/utils/liquid_glass.js.map +1 -0
  637. package/build/utils/sha_256.js.map +1 -1
  638. package/build/utils/system_messages.d.ts +1 -1
  639. package/build/utils/system_messages.d.ts.map +1 -1
  640. package/build/utils/system_messages.js.map +1 -1
  641. package/build/utils/theme.d.ts +2 -2
  642. package/build/utils/theme.d.ts.map +1 -1
  643. package/build/utils/theme.js +1 -1
  644. package/build/utils/theme.js.map +1 -1
  645. package/package.json +12 -12
  646. package/src/__tests__/hooks/resolve_message_available_members_link.test.ts +72 -0
  647. package/src/__tests__/hooks/use_attachment_uploader.test.tsx +1 -0
  648. package/src/__tests__/hooks/use_direct_messages_eligible.test.tsx +77 -0
  649. package/src/__tests__/hooks/use_font_scale.test.ts +7 -3
  650. package/src/__tests__/utils/liquid_glass.ts +40 -0
  651. package/src/__tests__/utils/native_adapters/configuration.ts +1 -1
  652. package/src/__tests__/utils/system_messages.ts +1 -1
  653. package/src/__tests__/utils/uri.ts +8 -50
  654. package/src/__utils__/handlers.ts +5 -6
  655. package/src/components/conversation/attachments/attachment_deleting_overlay.tsx +10 -3
  656. package/src/components/conversation/messages_disabled_banners.tsx +31 -4
  657. package/src/components/page/__tests__/component_error_boundary.test.tsx +1 -1
  658. package/src/components/page/__tests__/error_boundary.test.tsx +6 -2
  659. package/src/components/page/__tests__/page_error_boundary.test.tsx +1 -1
  660. package/src/contexts/chat_context.tsx +8 -0
  661. package/src/hooks/direct_messages/find_direct_message_conversation.ts +16 -0
  662. package/src/hooks/direct_messages/resolve_message_available_members_link.ts +42 -0
  663. package/src/hooks/direct_messages/use_find_or_create_direct_message_conversation.ts +2 -11
  664. package/src/hooks/direct_messages/use_message_available_members.ts +65 -0
  665. package/src/hooks/direct_messages/use_message_available_members_action.ts +34 -0
  666. package/src/hooks/index.ts +1 -1
  667. package/src/hooks/use_conversation.ts +1 -0
  668. package/src/hooks/use_current_person.ts +1 -0
  669. package/src/hooks/use_direct_messages_eligible.ts +11 -0
  670. package/src/hooks/use_features.ts +0 -1
  671. package/src/index.tsx +2 -1
  672. package/src/navigation/index.tsx +2 -2
  673. package/src/polyfills/events/EventTarget.ts +1 -1
  674. package/src/screens/conversation_filters/components/conversation_filters.tsx +3 -3
  675. package/src/screens/conversation_screen.tsx +9 -1
  676. package/src/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.tsx +18 -4
  677. package/src/screens/conversation_select_recipients/types/screen_props.tsx +2 -0
  678. package/src/screens/conversation_select_type_screen.tsx +4 -7
  679. package/src/screens/conversations/components/list_header_component.tsx +3 -3
  680. package/src/screens/settings_screen.tsx +3 -3
  681. package/src/types/resources/direct_message_candidate.ts +5 -0
  682. package/src/types/resources/member.ts +1 -0
  683. package/src/types/resources/member_ability.ts +1 -0
  684. package/src/types/resources/person.ts +1 -0
  685. package/src/utils/index.ts +1 -0
  686. package/src/utils/liquid_glass.ts +12 -0
  687. package/src/utils/sha_256.ts +24 -24
  688. package/src/utils/system_messages.ts +1 -1
  689. package/src/utils/theme.ts +3 -8
  690. package/build/hooks/use_direct_messages_enabled.d.ts +0 -2
  691. package/build/hooks/use_direct_messages_enabled.d.ts.map +0 -1
  692. package/build/hooks/use_direct_messages_enabled.js +0 -16
  693. package/build/hooks/use_direct_messages_enabled.js.map +0 -1
  694. package/src/hooks/use_direct_messages_enabled.ts +0 -23
@@ -1 +1 @@
1
- {"version":3,"file":"age_check_underage_screen.d.ts","sourceRoot":"","sources":["../../../src/screens/age_check/age_check_underage_screen.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,MAAM,WAAW,2BAA2B;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,wBAAgB,sBAAsB,CAAC,EAAE,YAAY,EAAE,GAAE,2BAAgC,qBAuDxF"}
1
+ {"version":3,"file":"age_check_underage_screen.d.ts","sourceRoot":"","sources":["../../../src/screens/age_check/age_check_underage_screen.tsx"],"names":[],"mappings":"AAQA,MAAM,WAAW,2BAA2B;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,wBAAgB,sBAAsB,CAAC,EAAE,YAAY,EAAE,GAAE,2BAAgC,2CAuDxF"}
@@ -1,5 +1,5 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
1
2
  import { useRoute } from '@react-navigation/native';
2
- import React from 'react';
3
3
  import { Linking, StyleSheet, View, ScrollView } from 'react-native';
4
4
  import { Heading } from '../../components';
5
5
  import { Icon, Text, TextInlineButton } from '../../components/display';
@@ -16,30 +16,7 @@ export function AgeCheckUnderageScreen({ contactEmail } = {}) {
16
16
  const openTerms = () => {
17
17
  Linking.openURL('https://www.planningcenter.com/terms');
18
18
  };
19
- return (<ScrollView style={styles.scrollView} contentContainerStyle={styles.container}>
20
- <Icon name="general.outlinedTextMessage" size={32} style={styles.icon}/>
21
-
22
- <View style={styles.content}>
23
- <Heading variant="h3" style={styles.baseText}>
24
- Chat is only available for users 13 and older.
25
- </Heading>
26
- <Text variant="tertiary" style={styles.baseText}>
27
- If you submitted the wrong birthdate by accident,{` `}
28
- {email ? (<TextInlineButton onPress={openChurchAdminHelp} accessibilityRole="link" accessibilityHint="Opens email client to contact your church administrator" style={styles.linkText}>
29
- please contact your church administrator
30
- </TextInlineButton>) : (<>please contact your church administrator</>)}
31
- {` `}
32
- to update your profile.
33
- </Text>
34
- <Text variant="tertiary" style={styles.baseText}>
35
- For more information, view our{` `}
36
- <TextInlineButton onPress={openTerms} accessibilityRole="link" accessibilityHint="Opens terms of service in browser" style={styles.linkText}>
37
- terms of service
38
- </TextInlineButton>
39
- .
40
- </Text>
41
- </View>
42
- </ScrollView>);
19
+ return (_jsxs(ScrollView, { style: styles.scrollView, contentContainerStyle: styles.container, children: [_jsx(Icon, { name: "general.outlinedTextMessage", size: 32, style: styles.icon }), _jsxs(View, { style: styles.content, children: [_jsx(Heading, { variant: "h3", style: styles.baseText, children: "Chat is only available for users 13 and older." }), _jsxs(Text, { variant: "tertiary", style: styles.baseText, children: ["If you submitted the wrong birthdate by accident,", ` `, email ? (_jsx(TextInlineButton, { onPress: openChurchAdminHelp, accessibilityRole: "link", accessibilityHint: "Opens email client to contact your church administrator", style: styles.linkText, children: "please contact your church administrator" })) : (_jsx(_Fragment, { children: "please contact your church administrator" })), ` `, "to update your profile."] }), _jsxs(Text, { variant: "tertiary", style: styles.baseText, children: ["For more information, view our", ` `, _jsx(TextInlineButton, { onPress: openTerms, accessibilityRole: "link", accessibilityHint: "Opens terms of service in browser", style: styles.linkText, children: "terms of service" }), "."] })] })] }));
43
20
  }
44
21
  const useStyles = () => {
45
22
  const { colors } = useTheme();
@@ -1 +1 @@
1
- {"version":3,"file":"age_check_underage_screen.js","sourceRoot":"","sources":["../../../src/screens/age_check/age_check_underage_screen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useRoute, RouteProp } from '@react-navigation/native'\nimport React from 'react'\nimport { Linking, StyleSheet, View, ScrollView } from 'react-native'\nimport { Heading } from '../../components'\nimport { Icon, Text, TextInlineButton } from '../../components/display'\nimport { useTheme } from '../../hooks'\nimport type { AgeCheckParams } from './screen_props'\n\nexport interface AgeCheckUnderageScreenProps {\n contactEmail?: string\n}\n\nexport function AgeCheckUnderageScreen({ contactEmail }: AgeCheckUnderageScreenProps = {}) {\n const styles = useStyles()\n const route = useRoute<RouteProp<AgeCheckParams, 'UnderagePerson'>>()\n\n const email = contactEmail ?? route?.params?.contactEmail\n\n const openChurchAdminHelp = () => {\n if (!email) return\n Linking.openURL(`mailto:${email}`)\n }\n\n const openTerms = () => {\n Linking.openURL('https://www.planningcenter.com/terms')\n }\n\n return (\n <ScrollView style={styles.scrollView} contentContainerStyle={styles.container}>\n <Icon name=\"general.outlinedTextMessage\" size={32} style={styles.icon} />\n\n <View style={styles.content}>\n <Heading variant=\"h3\" style={styles.baseText}>\n Chat is only available for users 13 and older.\n </Heading>\n <Text variant=\"tertiary\" style={styles.baseText}>\n If you submitted the wrong birthdate by accident,{` `}\n {email ? (\n <TextInlineButton\n onPress={openChurchAdminHelp}\n accessibilityRole=\"link\"\n accessibilityHint=\"Opens email client to contact your church administrator\"\n style={styles.linkText}\n >\n please contact your church administrator\n </TextInlineButton>\n ) : (\n <>please contact your church administrator</>\n )}\n {` `}\n to update your profile.\n </Text>\n <Text variant=\"tertiary\" style={styles.baseText}>\n For more information, view our{` `}\n <TextInlineButton\n onPress={openTerms}\n accessibilityRole=\"link\"\n accessibilityHint=\"Opens terms of service in browser\"\n style={styles.linkText}\n >\n terms of service\n </TextInlineButton>\n .\n </Text>\n </View>\n </ScrollView>\n )\n}\n\nconst useStyles = () => {\n const { colors } = useTheme()\n return StyleSheet.create({\n scrollView: {\n flex: 1,\n },\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n gap: 16,\n padding: 16,\n minHeight: '100%',\n },\n icon: {\n color: colors.iconColorDefaultDisabled,\n },\n content: {\n alignItems: 'center',\n gap: 8,\n maxWidth: 250,\n },\n baseText: {\n textAlign: 'center',\n color: colors.textColorDefaultSecondary,\n },\n linkText: {\n fontSize: 14,\n },\n })\n}\n"]}
1
+ {"version":3,"file":"age_check_underage_screen.js","sourceRoot":"","sources":["../../../src/screens/age_check/age_check_underage_screen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useRoute, RouteProp } from '@react-navigation/native'\nimport React from 'react'\nimport { Linking, StyleSheet, View, ScrollView } from 'react-native'\nimport { Heading } from '../../components'\nimport { Icon, Text, TextInlineButton } from '../../components/display'\nimport { useTheme } from '../../hooks'\nimport type { AgeCheckParams } from './screen_props'\n\nexport interface AgeCheckUnderageScreenProps {\n contactEmail?: string\n}\n\nexport function AgeCheckUnderageScreen({ contactEmail }: AgeCheckUnderageScreenProps = {}) {\n const styles = useStyles()\n const route = useRoute<RouteProp<AgeCheckParams, 'UnderagePerson'>>()\n\n const email = contactEmail ?? route?.params?.contactEmail\n\n const openChurchAdminHelp = () => {\n if (!email) return\n Linking.openURL(`mailto:${email}`)\n }\n\n const openTerms = () => {\n Linking.openURL('https://www.planningcenter.com/terms')\n }\n\n return (\n <ScrollView style={styles.scrollView} contentContainerStyle={styles.container}>\n <Icon name=\"general.outlinedTextMessage\" size={32} style={styles.icon} />\n\n <View style={styles.content}>\n <Heading variant=\"h3\" style={styles.baseText}>\n Chat is only available for users 13 and older.\n </Heading>\n <Text variant=\"tertiary\" style={styles.baseText}>\n If you submitted the wrong birthdate by accident,{` `}\n {email ? (\n <TextInlineButton\n onPress={openChurchAdminHelp}\n accessibilityRole=\"link\"\n accessibilityHint=\"Opens email client to contact your church administrator\"\n style={styles.linkText}\n >\n please contact your church administrator\n </TextInlineButton>\n ) : (\n <>please contact your church administrator</>\n )}\n {` `}\n to update your profile.\n </Text>\n <Text variant=\"tertiary\" style={styles.baseText}>\n For more information, view our{` `}\n <TextInlineButton\n onPress={openTerms}\n accessibilityRole=\"link\"\n accessibilityHint=\"Opens terms of service in browser\"\n style={styles.linkText}\n >\n terms of service\n </TextInlineButton>\n .\n </Text>\n </View>\n </ScrollView>\n )\n}\n\nconst useStyles = () => {\n const { colors } = useTheme()\n return StyleSheet.create({\n scrollView: {\n flex: 1,\n },\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n gap: 16,\n padding: 16,\n minHeight: '100%',\n },\n icon: {\n color: colors.iconColorDefaultDisabled,\n },\n content: {\n alignItems: 'center',\n gap: 8,\n maxWidth: 250,\n },\n baseText: {\n textAlign: 'center',\n color: colors.textColorDefaultSecondary,\n },\n linkText: {\n fontSize: 14,\n },\n })\n}\n"]}
@@ -1,4 +1,3 @@
1
- import React from 'react';
2
1
  export type AgeCheckSelectBirthdateProps = {
3
2
  onChange: (date: Date) => void;
4
3
  onDismiss?: () => void;
@@ -7,5 +6,5 @@ export type AgeCheckSelectBirthdateProps = {
7
6
  value?: Date | null;
8
7
  visible?: boolean;
9
8
  };
10
- export declare function AgeCheckSelectBirthdateModal(props: AgeCheckSelectBirthdateProps): React.JSX.Element;
9
+ export declare function AgeCheckSelectBirthdateModal(props: AgeCheckSelectBirthdateProps): import("react/jsx-runtime").JSX.Element;
11
10
  //# sourceMappingURL=age_check_select_birthdate_modal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"age_check_select_birthdate_modal.d.ts","sourceRoot":"","sources":["../../../../src/screens/age_check/components/age_check_select_birthdate_modal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC9B,KAAK,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IACnB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,4BAA4B,qBAK/E"}
1
+ {"version":3,"file":"age_check_select_birthdate_modal.d.ts","sourceRoot":"","sources":["../../../../src/screens/age_check/components/age_check_select_birthdate_modal.tsx"],"names":[],"mappings":"AAOA,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC9B,KAAK,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IACnB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,4BAA4B,2CAK/E"}
@@ -1,3 +1,4 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
2
  import DateTimePicker from '@react-native-community/datetimepicker';
2
3
  import React from 'react';
3
4
  import { Modal, Platform, StyleSheet, View } from 'react-native';
@@ -6,10 +7,10 @@ import FormSheet from '../../../components/primitive/form_sheet';
6
7
  import { useTheme } from '../../../hooks';
7
8
  export function AgeCheckSelectBirthdateModal(props) {
8
9
  if (Platform.OS === 'ios')
9
- return <IOSBirthdateModal {...props}/>;
10
+ return _jsx(IOSBirthdateModal, { ...props });
10
11
  if (Platform.OS === 'android')
11
- return <AndroidBirthdatePicker {...props}/>;
12
- return <Text>Birthdate selection is not supported on this platform.</Text>;
12
+ return _jsx(AndroidBirthdatePicker, { ...props });
13
+ return _jsx(Text, { children: "Birthdate selection is not supported on this platform." });
13
14
  }
14
15
  const MINIMUM_BIRTHDATE = new Date(1900, 0, 1);
15
16
  function IOSBirthdateModal({ onChange, onDismiss, onRequestClose, onSubmit, value, visible, }) {
@@ -24,27 +25,7 @@ function IOSBirthdateModal({ onChange, onDismiss, onRequestClose, onSubmit, valu
24
25
  onSubmit(selected);
25
26
  onRequestClose();
26
27
  };
27
- return (<Modal visible={visible} animationType="slide" presentationStyle="pageSheet" onRequestClose={onRequestClose} onDismiss={onDismiss}>
28
- <FormSheet.Root style={styles.formSheet} contentStyle={styles.formSheetContent}>
29
- <FormSheet.Header>
30
- <FormSheet.HeaderTitle>Your birthdate</FormSheet.HeaderTitle>
31
- <FormSheet.HeaderActions>
32
- <FormSheet.HeaderTextButton onPress={onRequestClose}>Cancel</FormSheet.HeaderTextButton>
33
- <FormSheet.HeaderButton title="Save" onPress={handleSave}/>
34
- </FormSheet.HeaderActions>
35
- </FormSheet.Header>
36
- <View style={styles.content}>
37
- <View style={styles.card}>
38
- <Text nativeID="birthdateLabel" variant="tertiary" style={styles.label}>
39
- Birthdate
40
- </Text>
41
- <View style={styles.pickerContainer}>
42
- <DateTimePicker timeZoneName="UTC" accessibilityLabelledBy="birthdateLabel" testID="age-check-date-picker" mode="date" display="spinner" value={selected} minimumDate={MINIMUM_BIRTHDATE} maximumDate={today} onChange={handleChange}/>
43
- </View>
44
- </View>
45
- </View>
46
- </FormSheet.Root>
47
- </Modal>);
28
+ return (_jsx(Modal, { visible: visible, animationType: "slide", presentationStyle: "pageSheet", onRequestClose: onRequestClose, onDismiss: onDismiss, children: _jsxs(FormSheet.Root, { style: styles.formSheet, contentStyle: styles.formSheetContent, children: [_jsxs(FormSheet.Header, { children: [_jsx(FormSheet.HeaderTitle, { children: "Your birthdate" }), _jsxs(FormSheet.HeaderActions, { children: [_jsx(FormSheet.HeaderTextButton, { onPress: onRequestClose, children: "Cancel" }), _jsx(FormSheet.HeaderButton, { title: "Save", onPress: handleSave })] })] }), _jsx(View, { style: styles.content, children: _jsxs(View, { style: styles.card, children: [_jsx(Text, { nativeID: "birthdateLabel", variant: "tertiary", style: styles.label, children: "Birthdate" }), _jsx(View, { style: styles.pickerContainer, children: _jsx(DateTimePicker, { timeZoneName: "UTC", accessibilityLabelledBy: "birthdateLabel", testID: "age-check-date-picker", mode: "date", display: "spinner", value: selected, minimumDate: MINIMUM_BIRTHDATE, maximumDate: today, onChange: handleChange }) })] }) })] }) }));
48
29
  }
49
30
  function AndroidBirthdatePicker({ onRequestClose, onSubmit, value, visible, }) {
50
31
  if (!visible)
@@ -57,7 +38,7 @@ function AndroidBirthdatePicker({ onRequestClose, onSubmit, value, visible, }) {
57
38
  }
58
39
  onRequestClose();
59
40
  };
60
- return (<DateTimePicker timeZoneName="UTC" testID="age-check-date-picker-android" mode="date" display="spinner" value={selected} minimumDate={MINIMUM_BIRTHDATE} maximumDate={today} onChange={handleAndroidDateChange}/>);
41
+ return (_jsx(DateTimePicker, { timeZoneName: "UTC", testID: "age-check-date-picker-android", mode: "date", display: "spinner", value: selected, minimumDate: MINIMUM_BIRTHDATE, maximumDate: today, onChange: handleAndroidDateChange }));
61
42
  }
62
43
  const useStyles = () => {
63
44
  const { colors } = useTheme();
@@ -1 +1 @@
1
- {"version":3,"file":"age_check_select_birthdate_modal.js","sourceRoot":"","sources":["../../../../src/screens/age_check/components/age_check_select_birthdate_modal.tsx"],"names":[],"mappings":"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","sourcesContent":["import DateTimePicker, { DateTimePickerEvent } from '@react-native-community/datetimepicker'\nimport React from 'react'\nimport { Modal, Platform, StyleSheet, View } from 'react-native'\nimport { Text } from '../../../components/display/text'\nimport FormSheet from '../../../components/primitive/form_sheet'\nimport { useTheme } from '../../../hooks'\n\nexport type AgeCheckSelectBirthdateProps = {\n onChange: (date: Date) => void\n onDismiss?: () => void\n onRequestClose: () => void\n onSubmit: (date: Date) => void\n value?: Date | null\n visible?: boolean\n}\n\nexport function AgeCheckSelectBirthdateModal(props: AgeCheckSelectBirthdateProps) {\n if (Platform.OS === 'ios') return <IOSBirthdateModal {...props} />\n if (Platform.OS === 'android') return <AndroidBirthdatePicker {...props} />\n\n return <Text>Birthdate selection is not supported on this platform.</Text>\n}\n\nconst MINIMUM_BIRTHDATE = new Date(1900, 0, 1)\n\nfunction IOSBirthdateModal({\n onChange,\n onDismiss,\n onRequestClose,\n onSubmit,\n value,\n visible,\n}: AgeCheckSelectBirthdateProps) {\n const styles = useStyles()\n const today = React.useMemo(() => new Date(), [])\n const selected = value || today\n\n const handleChange = (_event: DateTimePickerEvent, date?: Date) => {\n if (date) onChange(date)\n }\n\n const handleSave = () => {\n onSubmit(selected)\n onRequestClose()\n }\n\n return (\n <Modal\n visible={visible}\n animationType=\"slide\"\n presentationStyle=\"pageSheet\"\n onRequestClose={onRequestClose}\n onDismiss={onDismiss}\n >\n <FormSheet.Root style={styles.formSheet} contentStyle={styles.formSheetContent}>\n <FormSheet.Header>\n <FormSheet.HeaderTitle>Your birthdate</FormSheet.HeaderTitle>\n <FormSheet.HeaderActions>\n <FormSheet.HeaderTextButton onPress={onRequestClose}>Cancel</FormSheet.HeaderTextButton>\n <FormSheet.HeaderButton title=\"Save\" onPress={handleSave} />\n </FormSheet.HeaderActions>\n </FormSheet.Header>\n <View style={styles.content}>\n <View style={styles.card}>\n <Text nativeID=\"birthdateLabel\" variant=\"tertiary\" style={styles.label}>\n Birthdate\n </Text>\n <View style={styles.pickerContainer}>\n <DateTimePicker\n timeZoneName=\"UTC\"\n accessibilityLabelledBy=\"birthdateLabel\"\n testID=\"age-check-date-picker\"\n mode=\"date\"\n display=\"spinner\"\n value={selected}\n minimumDate={MINIMUM_BIRTHDATE}\n maximumDate={today}\n onChange={handleChange}\n />\n </View>\n </View>\n </View>\n </FormSheet.Root>\n </Modal>\n )\n}\n\nfunction AndroidBirthdatePicker({\n onRequestClose,\n onSubmit,\n value,\n visible,\n}: AgeCheckSelectBirthdateProps) {\n if (!visible) return null\n\n const today = new Date()\n const selected = value || today\n\n const handleAndroidDateChange = (event: DateTimePickerEvent, selectedDate?: Date) => {\n if (event.type === 'set' && selectedDate) {\n onSubmit(selectedDate)\n }\n onRequestClose()\n }\n\n return (\n <DateTimePicker\n timeZoneName=\"UTC\"\n testID=\"age-check-date-picker-android\"\n mode=\"date\"\n display=\"spinner\"\n value={selected}\n minimumDate={MINIMUM_BIRTHDATE}\n maximumDate={today}\n onChange={handleAndroidDateChange}\n />\n )\n}\n\nconst useStyles = () => {\n const { colors } = useTheme()\n return StyleSheet.create({\n formSheet: {\n backgroundColor: colors.surfaceColor080,\n },\n formSheetContent: {\n flex: 1,\n },\n content: {\n flex: 1,\n backgroundColor: colors.surfaceColor080,\n padding: 16,\n justifyContent: 'flex-start',\n },\n card: {\n backgroundColor: colors.surfaceColor100,\n borderRadius: 8,\n padding: 16,\n },\n label: {\n marginBottom: 8,\n textTransform: 'uppercase',\n },\n pickerContainer: {\n backgroundColor: colors.surfaceColor100,\n borderRadius: 8,\n },\n })\n}\n"]}
1
+ {"version":3,"file":"age_check_select_birthdate_modal.js","sourceRoot":"","sources":["../../../../src/screens/age_check/components/age_check_select_birthdate_modal.tsx"],"names":[],"mappings":"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","sourcesContent":["import DateTimePicker, { DateTimePickerEvent } from '@react-native-community/datetimepicker'\nimport React from 'react'\nimport { Modal, Platform, StyleSheet, View } from 'react-native'\nimport { Text } from '../../../components/display/text'\nimport FormSheet from '../../../components/primitive/form_sheet'\nimport { useTheme } from '../../../hooks'\n\nexport type AgeCheckSelectBirthdateProps = {\n onChange: (date: Date) => void\n onDismiss?: () => void\n onRequestClose: () => void\n onSubmit: (date: Date) => void\n value?: Date | null\n visible?: boolean\n}\n\nexport function AgeCheckSelectBirthdateModal(props: AgeCheckSelectBirthdateProps) {\n if (Platform.OS === 'ios') return <IOSBirthdateModal {...props} />\n if (Platform.OS === 'android') return <AndroidBirthdatePicker {...props} />\n\n return <Text>Birthdate selection is not supported on this platform.</Text>\n}\n\nconst MINIMUM_BIRTHDATE = new Date(1900, 0, 1)\n\nfunction IOSBirthdateModal({\n onChange,\n onDismiss,\n onRequestClose,\n onSubmit,\n value,\n visible,\n}: AgeCheckSelectBirthdateProps) {\n const styles = useStyles()\n const today = React.useMemo(() => new Date(), [])\n const selected = value || today\n\n const handleChange = (_event: DateTimePickerEvent, date?: Date) => {\n if (date) onChange(date)\n }\n\n const handleSave = () => {\n onSubmit(selected)\n onRequestClose()\n }\n\n return (\n <Modal\n visible={visible}\n animationType=\"slide\"\n presentationStyle=\"pageSheet\"\n onRequestClose={onRequestClose}\n onDismiss={onDismiss}\n >\n <FormSheet.Root style={styles.formSheet} contentStyle={styles.formSheetContent}>\n <FormSheet.Header>\n <FormSheet.HeaderTitle>Your birthdate</FormSheet.HeaderTitle>\n <FormSheet.HeaderActions>\n <FormSheet.HeaderTextButton onPress={onRequestClose}>Cancel</FormSheet.HeaderTextButton>\n <FormSheet.HeaderButton title=\"Save\" onPress={handleSave} />\n </FormSheet.HeaderActions>\n </FormSheet.Header>\n <View style={styles.content}>\n <View style={styles.card}>\n <Text nativeID=\"birthdateLabel\" variant=\"tertiary\" style={styles.label}>\n Birthdate\n </Text>\n <View style={styles.pickerContainer}>\n <DateTimePicker\n timeZoneName=\"UTC\"\n accessibilityLabelledBy=\"birthdateLabel\"\n testID=\"age-check-date-picker\"\n mode=\"date\"\n display=\"spinner\"\n value={selected}\n minimumDate={MINIMUM_BIRTHDATE}\n maximumDate={today}\n onChange={handleChange}\n />\n </View>\n </View>\n </View>\n </FormSheet.Root>\n </Modal>\n )\n}\n\nfunction AndroidBirthdatePicker({\n onRequestClose,\n onSubmit,\n value,\n visible,\n}: AgeCheckSelectBirthdateProps) {\n if (!visible) return null\n\n const today = new Date()\n const selected = value || today\n\n const handleAndroidDateChange = (event: DateTimePickerEvent, selectedDate?: Date) => {\n if (event.type === 'set' && selectedDate) {\n onSubmit(selectedDate)\n }\n onRequestClose()\n }\n\n return (\n <DateTimePicker\n timeZoneName=\"UTC\"\n testID=\"age-check-date-picker-android\"\n mode=\"date\"\n display=\"spinner\"\n value={selected}\n minimumDate={MINIMUM_BIRTHDATE}\n maximumDate={today}\n onChange={handleAndroidDateChange}\n />\n )\n}\n\nconst useStyles = () => {\n const { colors } = useTheme()\n return StyleSheet.create({\n formSheet: {\n backgroundColor: colors.surfaceColor080,\n },\n formSheetContent: {\n flex: 1,\n },\n content: {\n flex: 1,\n backgroundColor: colors.surfaceColor080,\n padding: 16,\n justifyContent: 'flex-start',\n },\n card: {\n backgroundColor: colors.surfaceColor100,\n borderRadius: 8,\n padding: 16,\n },\n label: {\n marginBottom: 8,\n textTransform: 'uppercase',\n },\n pickerContainer: {\n backgroundColor: colors.surfaceColor100,\n borderRadius: 8,\n },\n })\n}\n"]}
@@ -1,5 +1,4 @@
1
1
  import { StaticScreenProps } from '@react-navigation/native';
2
- import React from 'react';
3
2
  export declare const AttachmentActionsScreenOptions: import("@react-navigation/native-stack").NativeStackNavigationOptions;
4
3
  export type AttachmentActionsScreenProps = StaticScreenProps<{
5
4
  attachmentId: string;
@@ -9,5 +8,5 @@ export type AttachmentActionsScreenProps = StaticScreenProps<{
9
8
  canDeleteNonAuthoredMessages: boolean;
10
9
  myMessage: boolean;
11
10
  }>;
12
- export declare function AttachmentActionsScreen({ route }: AttachmentActionsScreenProps): React.JSX.Element;
11
+ export declare function AttachmentActionsScreen({ route }: AttachmentActionsScreenProps): import("react/jsx-runtime").JSX.Element;
13
12
  //# sourceMappingURL=attachment_actions_screen.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachment_actions_screen.d.ts","sourceRoot":"","sources":["../../../src/screens/attachment_actions/attachment_actions_screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAiB,MAAM,0BAA0B,CAAA;AAC3E,OAAO,KAAsB,MAAM,OAAO,CAAA;AAK1C,eAAO,MAAM,8BAA8B,uEAEzC,CAAA;AAEF,MAAM,MAAM,4BAA4B,GAAG,iBAAiB,CAAC;IAC3D,YAAY,EAAE,MAAM,CAAA;IACpB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,4BAA4B,EAAE,OAAO,CAAA;IACrC,SAAS,EAAE,OAAO,CAAA;CACnB,CAAC,CAAA;AAEF,wBAAgB,uBAAuB,CAAC,EAAE,KAAK,EAAE,EAAE,4BAA4B,qBAgE9E"}
1
+ {"version":3,"file":"attachment_actions_screen.d.ts","sourceRoot":"","sources":["../../../src/screens/attachment_actions/attachment_actions_screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAiB,MAAM,0BAA0B,CAAA;AAM3E,eAAO,MAAM,8BAA8B,uEAEzC,CAAA;AAEF,MAAM,MAAM,4BAA4B,GAAG,iBAAiB,CAAC;IAC3D,YAAY,EAAE,MAAM,CAAA;IACpB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,4BAA4B,EAAE,OAAO,CAAA;IACrC,SAAS,EAAE,OAAO,CAAA;CACnB,CAAC,CAAA;AAEF,wBAAgB,uBAAuB,CAAC,EAAE,KAAK,EAAE,EAAE,4BAA4B,2CAgE9E"}
@@ -1,5 +1,6 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
2
  import { useNavigation } from '@react-navigation/native';
2
- import React, { useCallback } from 'react';
3
+ import { useCallback } from 'react';
3
4
  import { Alert, Linking, StyleSheet } from 'react-native';
4
5
  import FormSheet, { getFormSheetScreenOptions } from '../../components/primitive/form_sheet';
5
6
  import { useDeleteAttachment } from './hooks/useDeleteAttachment';
@@ -34,10 +35,7 @@ export function AttachmentActionsScreen({ route }) {
34
35
  Linking.openURL(attachmentUrl);
35
36
  navigation.goBack();
36
37
  };
37
- return (<FormSheet.Root contentStyle={styles.formSheetContent}>
38
- <FormSheet.Action iconName="general.newWindow" title="Open in browser" accessibilityRole="link" accessibilityLabel={`Open ${attachmentName} in browser`} accessibilityHint={`${attachmentName} can be downloaded and shared through the browser.`} onPress={handleOpenInBrowser}/>
39
- {canDelete && (<FormSheet.Action appearance="danger" iconName="publishing.trash" title={`Delete ${attachmentName}`} onPress={handleDeleteConfirm}/>)}
40
- </FormSheet.Root>);
38
+ return (_jsxs(FormSheet.Root, { contentStyle: styles.formSheetContent, children: [_jsx(FormSheet.Action, { iconName: "general.newWindow", title: "Open in browser", accessibilityRole: "link", accessibilityLabel: `Open ${attachmentName} in browser`, accessibilityHint: `${attachmentName} can be downloaded and shared through the browser.`, onPress: handleOpenInBrowser }), canDelete && (_jsx(FormSheet.Action, { appearance: "danger", iconName: "publishing.trash", title: `Delete ${attachmentName}`, onPress: handleDeleteConfirm }))] }));
41
39
  }
42
40
  const useStyles = () => {
43
41
  return StyleSheet.create({
@@ -1 +1 @@
1
- {"version":3,"file":"attachment_actions_screen.js","sourceRoot":"","sources":["../../../src/screens/attachment_actions/attachment_actions_screen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { StaticScreenProps, useNavigation } from '@react-navigation/native'\nimport React, { useCallback } from 'react'\nimport { Alert, Linking, StyleSheet } from 'react-native'\nimport FormSheet, { getFormSheetScreenOptions } from '../../components/primitive/form_sheet'\nimport { useDeleteAttachment } from './hooks/useDeleteAttachment'\n\nexport const AttachmentActionsScreenOptions = getFormSheetScreenOptions({\n headerTitle: 'Attachment actions',\n})\n\nexport type AttachmentActionsScreenProps = StaticScreenProps<{\n attachmentId: string\n attachmentContentType: string\n attachmentUrl: string\n conversation_id: number\n canDeleteNonAuthoredMessages: boolean\n myMessage: boolean\n}>\n\nexport function AttachmentActionsScreen({ route }: AttachmentActionsScreenProps) {\n const navigation = useNavigation()\n const {\n attachmentId,\n attachmentContentType,\n attachmentUrl,\n conversation_id,\n canDeleteNonAuthoredMessages,\n myMessage,\n } = route.params\n\n const attachmentName = getAttachmentLabelName(attachmentContentType)\n const canDelete = myMessage || canDeleteNonAuthoredMessages\n const styles = useStyles()\n\n const { handleDeleteAttachment } = useDeleteAttachment({\n conversation_id,\n attachmentId,\n attachmentName,\n })\n\n const handleDeleteConfirm = useCallback(() => {\n Alert.alert(\n `Delete ${attachmentName}`,\n 'Are you sure you want to permanently delete this attachment?',\n [\n { text: 'Cancel', style: 'cancel' },\n {\n text: 'Delete',\n style: 'destructive',\n onPress: () => {\n handleDeleteAttachment()\n navigation.goBack()\n },\n },\n ]\n )\n }, [attachmentName, handleDeleteAttachment, navigation])\n\n const handleOpenInBrowser = () => {\n Linking.openURL(attachmentUrl)\n navigation.goBack()\n }\n\n return (\n <FormSheet.Root contentStyle={styles.formSheetContent}>\n <FormSheet.Action\n iconName=\"general.newWindow\"\n title=\"Open in browser\"\n accessibilityRole=\"link\"\n accessibilityLabel={`Open ${attachmentName} in browser`}\n accessibilityHint={`${attachmentName} can be downloaded and shared through the browser.`}\n onPress={handleOpenInBrowser}\n />\n {canDelete && (\n <FormSheet.Action\n appearance=\"danger\"\n iconName=\"publishing.trash\"\n title={`Delete ${attachmentName}`}\n onPress={handleDeleteConfirm}\n />\n )}\n </FormSheet.Root>\n )\n}\n\nconst useStyles = () => {\n return StyleSheet.create({\n formSheetContent: {\n paddingTop: 16,\n },\n })\n}\n\nfunction getAttachmentLabelName(contentType: string) {\n if (contentType.startsWith('image/')) return 'image'\n if (contentType.startsWith('video/')) return 'video'\n if (contentType.startsWith('audio/')) return 'audio'\n if (contentType === 'application/pdf') return 'PDF'\n if (contentType.startsWith('application/')) return 'file'\n\n return ''\n}\n"]}
1
+ {"version":3,"file":"attachment_actions_screen.js","sourceRoot":"","sources":["../../../src/screens/attachment_actions/attachment_actions_screen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { StaticScreenProps, useNavigation } from '@react-navigation/native'\nimport React, { useCallback } from 'react'\nimport { Alert, Linking, StyleSheet } from 'react-native'\nimport FormSheet, { getFormSheetScreenOptions } from '../../components/primitive/form_sheet'\nimport { useDeleteAttachment } from './hooks/useDeleteAttachment'\n\nexport const AttachmentActionsScreenOptions = getFormSheetScreenOptions({\n headerTitle: 'Attachment actions',\n})\n\nexport type AttachmentActionsScreenProps = StaticScreenProps<{\n attachmentId: string\n attachmentContentType: string\n attachmentUrl: string\n conversation_id: number\n canDeleteNonAuthoredMessages: boolean\n myMessage: boolean\n}>\n\nexport function AttachmentActionsScreen({ route }: AttachmentActionsScreenProps) {\n const navigation = useNavigation()\n const {\n attachmentId,\n attachmentContentType,\n attachmentUrl,\n conversation_id,\n canDeleteNonAuthoredMessages,\n myMessage,\n } = route.params\n\n const attachmentName = getAttachmentLabelName(attachmentContentType)\n const canDelete = myMessage || canDeleteNonAuthoredMessages\n const styles = useStyles()\n\n const { handleDeleteAttachment } = useDeleteAttachment({\n conversation_id,\n attachmentId,\n attachmentName,\n })\n\n const handleDeleteConfirm = useCallback(() => {\n Alert.alert(\n `Delete ${attachmentName}`,\n 'Are you sure you want to permanently delete this attachment?',\n [\n { text: 'Cancel', style: 'cancel' },\n {\n text: 'Delete',\n style: 'destructive',\n onPress: () => {\n handleDeleteAttachment()\n navigation.goBack()\n },\n },\n ]\n )\n }, [attachmentName, handleDeleteAttachment, navigation])\n\n const handleOpenInBrowser = () => {\n Linking.openURL(attachmentUrl)\n navigation.goBack()\n }\n\n return (\n <FormSheet.Root contentStyle={styles.formSheetContent}>\n <FormSheet.Action\n iconName=\"general.newWindow\"\n title=\"Open in browser\"\n accessibilityRole=\"link\"\n accessibilityLabel={`Open ${attachmentName} in browser`}\n accessibilityHint={`${attachmentName} can be downloaded and shared through the browser.`}\n onPress={handleOpenInBrowser}\n />\n {canDelete && (\n <FormSheet.Action\n appearance=\"danger\"\n iconName=\"publishing.trash\"\n title={`Delete ${attachmentName}`}\n onPress={handleDeleteConfirm}\n />\n )}\n </FormSheet.Root>\n )\n}\n\nconst useStyles = () => {\n return StyleSheet.create({\n formSheetContent: {\n paddingTop: 16,\n },\n })\n}\n\nfunction getAttachmentLabelName(contentType: string) {\n if (contentType.startsWith('image/')) return 'image'\n if (contentType.startsWith('video/')) return 'video'\n if (contentType.startsWith('audio/')) return 'audio'\n if (contentType === 'application/pdf') return 'PDF'\n if (contentType.startsWith('application/')) return 'file'\n\n return ''\n}\n"]}
@@ -1,5 +1,4 @@
1
1
  import { StaticScreenProps } from '@react-navigation/native';
2
- import React from 'react';
3
2
  import { type AvatarUpdatePayload } from '../../hooks/use_conversation_avatar_update';
4
3
  export declare const AvatarPickerScreenOptions: import("@react-navigation/native-stack").NativeStackNavigationOptions;
5
4
  export declare const AvatarPickerCreateScreenOptions: import("@react-navigation/native-stack").NativeStackNavigationOptions;
@@ -8,5 +7,5 @@ export type AvatarPickerScreenProps = StaticScreenProps<{
8
7
  source_params?: Record<string, unknown>;
9
8
  avatar_selection?: AvatarUpdatePayload;
10
9
  }>;
11
- export declare function AvatarPickerScreen({ route }: AvatarPickerScreenProps): React.JSX.Element;
10
+ export declare function AvatarPickerScreen({ route }: AvatarPickerScreenProps): import("react/jsx-runtime").JSX.Element;
12
11
  //# sourceMappingURL=avatar_picker_screen.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"avatar_picker_screen.d.ts","sourceRoot":"","sources":["../../../src/screens/avatar_picker/avatar_picker_screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,iBAAiB,EAAiB,MAAM,0BAA0B,CAAA;AACzF,OAAO,KAAkC,MAAM,OAAO,CAAA;AAUtD,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,4CAA4C,CAAA;AAoBnD,eAAO,MAAM,yBAAyB,uEAIpC,CAAA;AAEF,eAAO,MAAM,+BAA+B,uEAI1C,CAAA;AAEF,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;IACtD,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,gBAAgB,CAAC,EAAE,mBAAmB,CAAA;CACvC,CAAC,CAAA;AAUF,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE,uBAAuB,qBAMpE"}
1
+ {"version":3,"file":"avatar_picker_screen.d.ts","sourceRoot":"","sources":["../../../src/screens/avatar_picker/avatar_picker_screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,iBAAiB,EAAiB,MAAM,0BAA0B,CAAA;AAWzF,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,4CAA4C,CAAA;AAoBnD,eAAO,MAAM,yBAAyB,uEAIpC,CAAA;AAEF,eAAO,MAAM,+BAA+B,uEAI1C,CAAA;AAEF,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;IACtD,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,gBAAgB,CAAC,EAAE,mBAAmB,CAAA;CACvC,CAAC,CAAA;AAUF,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE,uBAAuB,2CAMpE"}
@@ -1,5 +1,6 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
1
2
  import { StackActions, useNavigation } from '@react-navigation/native';
2
- import React, { useCallback, useReducer } from 'react';
3
+ import { useCallback, useReducer } from 'react';
3
4
  import { Platform, StyleSheet, View } from 'react-native';
4
5
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
5
6
  import { ConversationAvatar } from '../../components/display/conversation_avatar';
@@ -38,9 +39,9 @@ const TAB_LABELS = {
38
39
  export function AvatarPickerScreen({ route }) {
39
40
  const { conversation_id, source_params, avatar_selection } = route.params;
40
41
  if (conversation_id) {
41
- return <EditModeContent conversationId={conversation_id}/>;
42
+ return _jsx(EditModeContent, { conversationId: conversation_id });
42
43
  }
43
- return <CreateModeContent sourceParams={source_params} existingSelection={avatar_selection}/>;
44
+ return _jsx(CreateModeContent, { sourceParams: source_params, existingSelection: avatar_selection });
44
45
  }
45
46
  function EditModeContent({ conversationId }) {
46
47
  const navigation = useNavigation();
@@ -63,14 +64,7 @@ function EditModeContent({ conversationId }) {
63
64
  const handleRemove = useCallback(() => {
64
65
  mutation.mutate({ kind: 'clear' }, { onSuccess: () => dispatch({ type: 'CLEAR' }) });
65
66
  }, [mutation, dispatch]);
66
- return (<AvatarPickerFormSheet state={state} dispatch={dispatch} headerTitle="Update avatar" headerActions={<>
67
- {hasAvatar && (<FormSheet.HeaderTextButton onPress={handleRemove} appearance="danger">
68
- Remove
69
- </FormSheet.HeaderTextButton>)}
70
- <FormSheet.HeaderTextButton onPress={handleDone} disabled={mutation.isPending}>
71
- Done
72
- </FormSheet.HeaderTextButton>
73
- </>} fallbackPreview={<ConversationAvatar conversation={conversation} size="2xl" maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER_LANDMARK} style={{ width: previewDiameter, height: previewDiameter }}/>}/>);
67
+ return (_jsx(AvatarPickerFormSheet, { state: state, dispatch: dispatch, headerTitle: "Update avatar", headerActions: _jsxs(_Fragment, { children: [hasAvatar && (_jsx(FormSheet.HeaderTextButton, { onPress: handleRemove, appearance: "danger", children: "Remove" })), _jsx(FormSheet.HeaderTextButton, { onPress: handleDone, disabled: mutation.isPending, children: "Done" })] }), fallbackPreview: _jsx(ConversationAvatar, { conversation: conversation, size: "2xl", maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER_LANDMARK, style: { width: previewDiameter, height: previewDiameter } }) }));
74
68
  }
75
69
  function CreateModeContent({ sourceParams, existingSelection }) {
76
70
  const navigation = useNavigation();
@@ -88,40 +82,19 @@ function CreateModeContent({ sourceParams, existingSelection }) {
88
82
  navigation.goBack();
89
83
  }
90
84
  }, [state, navigation, sourceParams]);
91
- return (<AvatarPickerFormSheet state={state} dispatch={dispatch} headerTitle="Choose avatar" headerActions={<FormSheet.HeaderTextButton onPress={handleDone}>Done</FormSheet.HeaderTextButton>} fallbackPreview={<EmptyAvatarPlaceholder />}/>);
85
+ return (_jsx(AvatarPickerFormSheet, { state: state, dispatch: dispatch, headerTitle: "Choose avatar", headerActions: _jsx(FormSheet.HeaderTextButton, { onPress: handleDone, children: "Done" }), fallbackPreview: _jsx(EmptyAvatarPlaceholder, {}) }));
92
86
  }
93
87
  function AvatarPickerFormSheet({ state, dispatch, headerTitle, headerActions, fallbackPreview, }) {
94
88
  const styles = useStyles();
95
- return (<FormSheet.Root style={styles.formSheetRoot} contentStyle={styles.formSheetContent} showAndroidSheetGrabber={false}>
96
- <FormSheet.Header style={styles.header}>
97
- <FormSheet.HeaderTitle>{headerTitle}</FormSheet.HeaderTitle>
98
- <FormSheet.HeaderActions>{headerActions}</FormSheet.HeaderActions>
99
- </FormSheet.Header>
100
-
101
- <AvatarPreview state={state} fallback={fallbackPreview}/>
102
-
103
- <Tabs data={TABS} activeTab={state.activeTab} onTabPress={tab => dispatch({ type: 'SELECT_TAB', payload: tab })} renderItem={({ item }) => (<Text style={[styles.tabLabel, item === state.activeTab && styles.tabLabelActive]} maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER_LANDMARK}>
104
- {TAB_LABELS[item]}
105
- </Text>)} style={styles.tabs}/>
106
-
107
- <View style={styles.body}>
108
- {state.activeTab === 'icon' && (<IconGrid selectedIconKey={state.selectedType === 'icon' ? state.selectedKey : null} onIconSelect={iconKey => dispatch({ type: 'SELECT_ICON', payload: iconKey })}/>)}
109
- {state.activeTab === 'emoji' && (<EmojiTab onEmojiSelect={emoji => dispatch({ type: 'SELECT_EMOJI', payload: emoji })}/>)}
110
- {state.activeTab === 'upload' && (<UploadTab imagePreviewUri={state.imagePreviewUri} onImageSelect={asset => dispatch({ type: 'SET_IMAGE', payload: asset })}/>)}
111
- </View>
112
-
113
- {state.activeTab !== 'upload' && (<View style={styles.colorPickerWrapper}>
114
- <ColorPicker selectedColor={state.selectedColor} onColorSelect={color => dispatch({ type: 'SELECT_COLOR', payload: color })}/>
115
- </View>)}
116
- </FormSheet.Root>);
89
+ return (_jsxs(FormSheet.Root, { style: styles.formSheetRoot, contentStyle: styles.formSheetContent, showAndroidSheetGrabber: false, children: [_jsxs(FormSheet.Header, { style: styles.header, children: [_jsx(FormSheet.HeaderTitle, { children: headerTitle }), _jsx(FormSheet.HeaderActions, { children: headerActions })] }), _jsx(AvatarPreview, { state: state, fallback: fallbackPreview }), _jsx(Tabs, { data: TABS, activeTab: state.activeTab, onTabPress: tab => dispatch({ type: 'SELECT_TAB', payload: tab }), renderItem: ({ item }) => (_jsx(Text, { style: [styles.tabLabel, item === state.activeTab && styles.tabLabelActive], maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER_LANDMARK, children: TAB_LABELS[item] })), style: styles.tabs }), _jsxs(View, { style: styles.body, children: [state.activeTab === 'icon' && (_jsx(IconGrid, { selectedIconKey: state.selectedType === 'icon' ? state.selectedKey : null, onIconSelect: iconKey => dispatch({ type: 'SELECT_ICON', payload: iconKey }) })), state.activeTab === 'emoji' && (_jsx(EmojiTab, { onEmojiSelect: emoji => dispatch({ type: 'SELECT_EMOJI', payload: emoji }) })), state.activeTab === 'upload' && (_jsx(UploadTab, { imagePreviewUri: state.imagePreviewUri, onImageSelect: asset => dispatch({ type: 'SET_IMAGE', payload: asset }) }))] }), state.activeTab !== 'upload' && (_jsx(View, { style: styles.colorPickerWrapper, children: _jsx(ColorPicker, { selectedColor: state.selectedColor, onColorSelect: color => dispatch({ type: 'SELECT_COLOR', payload: color }) }) }))] }));
117
90
  }
118
91
  function EmptyAvatarPlaceholder() {
119
92
  const styles = useStyles();
120
93
  const diameter = usePreviewAvatarDiameter();
121
- return (<View style={[
94
+ return (_jsx(View, { style: [
122
95
  styles.emptyAvatarPlaceholder,
123
96
  { width: diameter, height: diameter, borderRadius: diameter / 2 },
124
- ]}/>);
97
+ ] }));
125
98
  }
126
99
  function hasValidSelection(state) {
127
100
  switch (state.selectedType) {
@@ -1 +1 @@
1
- {"version":3,"file":"avatar_picker_screen.js","sourceRoot":"","sources":["../../../src/screens/avatar_picker/avatar_picker_screen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { StackActions, StaticScreenProps, useNavigation } from '@react-navigation/native'\nimport React, { useCallback, useReducer } from 'react'\nimport { Platform, StyleSheet, View } from 'react-native'\nimport { useSafeAreaInsets } from 'react-native-safe-area-context'\nimport { ConversationAvatar } from '../../components/display/conversation_avatar'\nimport { Tabs } from '../../components/display/tabs'\nimport { Text } from '../../components/display/text'\nimport { coerceColorKey } from '../../components/display/utils/avatar_gradient_colors'\nimport FormSheet, { getFormSheetScreenOptions } from '../../components/primitive/form_sheet'\nimport { useTheme } from '../../hooks'\nimport { useConversation } from '../../hooks/use_conversation'\nimport {\n useConversationAvatarUpdate,\n type AvatarUpdatePayload,\n} from '../../hooks/use_conversation_avatar_update'\nimport { useFontScale } from '../../hooks/use_font_scale'\nimport { usePreviewAvatarDiameter } from '../../hooks/use_preview_avatar_diameter'\nimport { MAX_FONT_SIZE_MULTIPLIER_LANDMARK } from '../../utils'\nimport type { ImagePickerAsset } from '../../utils/native_adapters/image_picker'\nimport {\n avatarPickerReducer,\n initAvatarPickerState,\n initAvatarPickerStateFromPayload,\n initEmptyAvatarPickerState,\n type AvatarPickerAction,\n type AvatarPickerState,\n type AvatarTab,\n} from './avatar_picker_state'\nimport { AvatarPreview } from './avatar_preview'\nimport { ColorPicker } from './color_picker'\nimport { EmojiTab } from './emoji_tab'\nimport { IconGrid } from './icon_grid'\nimport { UploadTab } from './upload_tab'\n\nexport const AvatarPickerScreenOptions = getFormSheetScreenOptions({\n headerTitle: 'Update avatar',\n presentation: Platform.select({ android: 'modal', ios: 'formSheet' }),\n sheetAllowedDetents: [1],\n})\n\nexport const AvatarPickerCreateScreenOptions = getFormSheetScreenOptions({\n headerTitle: 'Choose avatar',\n presentation: Platform.select({ android: 'modal', ios: 'formSheet' }),\n sheetAllowedDetents: [1],\n})\n\nexport type AvatarPickerScreenProps = StaticScreenProps<{\n conversation_id?: number\n source_params?: Record<string, unknown>\n avatar_selection?: AvatarUpdatePayload\n}>\n\nconst TABS: AvatarTab[] = ['icon', 'emoji', 'upload']\n\nconst TAB_LABELS: Record<AvatarTab, string> = {\n icon: 'Icon',\n emoji: 'Emoji',\n upload: 'Upload',\n}\n\nexport function AvatarPickerScreen({ route }: AvatarPickerScreenProps) {\n const { conversation_id, source_params, avatar_selection } = route.params\n if (conversation_id) {\n return <EditModeContent conversationId={conversation_id} />\n }\n return <CreateModeContent sourceParams={source_params} existingSelection={avatar_selection} />\n}\n\nfunction EditModeContent({ conversationId }: { conversationId: number }) {\n const navigation = useNavigation()\n const { data: conversation } = useConversation({ conversation_id: conversationId })\n const mutation = useConversationAvatarUpdate({ conversationId })\n const previewDiameter = usePreviewAvatarDiameter()\n\n const [state, dispatch] = useReducer(avatarPickerReducer, conversation, initAvatarPickerState)\n\n const hasAvatar = state.selectedType !== null\n\n const handleDone = useCallback(() => {\n if (!state.isDirty) {\n navigation.goBack()\n return\n }\n\n const payload = buildPayload(state)\n if (payload) {\n mutation.mutate(payload)\n }\n navigation.goBack()\n }, [state, mutation, navigation])\n\n const handleRemove = useCallback(() => {\n mutation.mutate({ kind: 'clear' }, { onSuccess: () => dispatch({ type: 'CLEAR' }) })\n }, [mutation, dispatch])\n\n return (\n <AvatarPickerFormSheet\n state={state}\n dispatch={dispatch}\n headerTitle=\"Update avatar\"\n headerActions={\n <>\n {hasAvatar && (\n <FormSheet.HeaderTextButton onPress={handleRemove} appearance=\"danger\">\n Remove\n </FormSheet.HeaderTextButton>\n )}\n <FormSheet.HeaderTextButton onPress={handleDone} disabled={mutation.isPending}>\n Done\n </FormSheet.HeaderTextButton>\n </>\n }\n fallbackPreview={\n <ConversationAvatar\n conversation={conversation}\n size=\"2xl\"\n maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER_LANDMARK}\n style={{ width: previewDiameter, height: previewDiameter }}\n />\n }\n />\n )\n}\n\ninterface CreateModeContentProps {\n sourceParams?: Record<string, unknown>\n existingSelection?: AvatarUpdatePayload\n}\n\nfunction CreateModeContent({ sourceParams, existingSelection }: CreateModeContentProps) {\n const navigation = useNavigation()\n\n const [state, dispatch] = useReducer(avatarPickerReducer, existingSelection, selection =>\n selection ? initAvatarPickerStateFromPayload(selection) : initEmptyAvatarPickerState()\n )\n\n const handleDone = useCallback(() => {\n if (!state.isDirty) {\n navigation.goBack()\n return\n }\n\n const payload = buildPayload(state)\n if (payload) {\n navigation.dispatch(\n StackActions.popTo('ConversationNew', { ...sourceParams, avatar_selection: payload })\n )\n } else {\n navigation.goBack()\n }\n }, [state, navigation, sourceParams])\n\n return (\n <AvatarPickerFormSheet\n state={state}\n dispatch={dispatch}\n headerTitle=\"Choose avatar\"\n headerActions={\n <FormSheet.HeaderTextButton onPress={handleDone}>Done</FormSheet.HeaderTextButton>\n }\n fallbackPreview={<EmptyAvatarPlaceholder />}\n />\n )\n}\n\ninterface AvatarPickerFormSheetProps {\n state: AvatarPickerState\n dispatch: React.Dispatch<AvatarPickerAction>\n headerTitle: string\n headerActions: React.ReactNode\n fallbackPreview: React.ReactNode\n}\n\nfunction AvatarPickerFormSheet({\n state,\n dispatch,\n headerTitle,\n headerActions,\n fallbackPreview,\n}: AvatarPickerFormSheetProps) {\n const styles = useStyles()\n\n return (\n <FormSheet.Root\n style={styles.formSheetRoot}\n contentStyle={styles.formSheetContent}\n showAndroidSheetGrabber={false}\n >\n <FormSheet.Header style={styles.header}>\n <FormSheet.HeaderTitle>{headerTitle}</FormSheet.HeaderTitle>\n <FormSheet.HeaderActions>{headerActions}</FormSheet.HeaderActions>\n </FormSheet.Header>\n\n <AvatarPreview state={state} fallback={fallbackPreview} />\n\n <Tabs\n data={TABS}\n activeTab={state.activeTab}\n onTabPress={tab => dispatch({ type: 'SELECT_TAB', payload: tab })}\n renderItem={({ item }) => (\n <Text\n style={[styles.tabLabel, item === state.activeTab && styles.tabLabelActive]}\n maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER_LANDMARK}\n >\n {TAB_LABELS[item]}\n </Text>\n )}\n style={styles.tabs}\n />\n\n <View style={styles.body}>\n {state.activeTab === 'icon' && (\n <IconGrid\n selectedIconKey={state.selectedType === 'icon' ? state.selectedKey : null}\n onIconSelect={iconKey => dispatch({ type: 'SELECT_ICON', payload: iconKey })}\n />\n )}\n {state.activeTab === 'emoji' && (\n <EmojiTab onEmojiSelect={emoji => dispatch({ type: 'SELECT_EMOJI', payload: emoji })} />\n )}\n {state.activeTab === 'upload' && (\n <UploadTab\n imagePreviewUri={state.imagePreviewUri}\n onImageSelect={asset => dispatch({ type: 'SET_IMAGE', payload: asset })}\n />\n )}\n </View>\n\n {state.activeTab !== 'upload' && (\n <View style={styles.colorPickerWrapper}>\n <ColorPicker\n selectedColor={state.selectedColor}\n onColorSelect={color => dispatch({ type: 'SELECT_COLOR', payload: color })}\n />\n </View>\n )}\n </FormSheet.Root>\n )\n}\n\nfunction EmptyAvatarPlaceholder() {\n const styles = useStyles()\n const diameter = usePreviewAvatarDiameter()\n return (\n <View\n style={[\n styles.emptyAvatarPlaceholder,\n { width: diameter, height: diameter, borderRadius: diameter / 2 },\n ]}\n />\n )\n}\n\ntype ValidAvatarPickerState = AvatarPickerState &\n (\n | { selectedType: 'icon' | 'emoji'; selectedKey: string }\n | { selectedType: 'image'; imageAsset: ImagePickerAsset }\n )\n\nfunction hasValidSelection(state: AvatarPickerState): state is ValidAvatarPickerState {\n switch (state.selectedType) {\n case 'icon':\n case 'emoji':\n return state.selectedKey !== null\n case 'image':\n return state.imageAsset !== null\n case null:\n return false\n }\n}\n\nfunction buildPayload(state: AvatarPickerState): AvatarUpdatePayload | null {\n if (!hasValidSelection(state)) return null\n\n const color = coerceColorKey(state.selectedColor)\n\n switch (state.selectedType) {\n case 'icon':\n return { kind: 'icon', key: state.selectedKey, color }\n case 'emoji':\n return { kind: 'emoji', key: state.selectedKey, color }\n case 'image':\n return { kind: 'image', imageAsset: state.imageAsset, color }\n }\n}\n\nconst useStyles = () => {\n const { colors } = useTheme()\n const fontScale = useFontScale({ maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER_LANDMARK })\n const { top } = useSafeAreaInsets()\n\n return StyleSheet.create({\n formSheetRoot: {\n flex: 1,\n },\n formSheetContent: {\n flex: 1,\n },\n header: {\n paddingTop: Platform.select({ ios: 20, android: 20 + top }),\n },\n tabs: {\n minHeight: 52 * fontScale,\n borderBottomWidth: 1,\n borderBottomColor: colors.borderColorDefaultBase,\n backgroundColor: colors.fillColorNeutral100Inverted,\n zIndex: 1,\n },\n tabLabel: {\n fontSize: 14,\n color: colors.textColorDefaultSecondary,\n paddingVertical: 14 * fontScale,\n minWidth: 56 * fontScale,\n textAlign: 'center',\n },\n tabLabelActive: {\n color: colors.textColorDefaultPrimary,\n },\n body: {\n flex: 1,\n overflow: 'hidden',\n },\n colorPickerWrapper: {\n borderTopWidth: 1,\n borderTopColor: colors.borderColorDefaultBase,\n },\n emptyAvatarPlaceholder: {\n borderWidth: 2,\n borderStyle: 'dashed',\n borderColor: colors.borderColorDefaultBase,\n },\n })\n}\n"]}
1
+ {"version":3,"file":"avatar_picker_screen.js","sourceRoot":"","sources":["../../../src/screens/avatar_picker/avatar_picker_screen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { StackActions, StaticScreenProps, useNavigation } from '@react-navigation/native'\nimport React, { useCallback, useReducer } from 'react'\nimport { Platform, StyleSheet, View } from 'react-native'\nimport { useSafeAreaInsets } from 'react-native-safe-area-context'\nimport { ConversationAvatar } from '../../components/display/conversation_avatar'\nimport { Tabs } from '../../components/display/tabs'\nimport { Text } from '../../components/display/text'\nimport { coerceColorKey } from '../../components/display/utils/avatar_gradient_colors'\nimport FormSheet, { getFormSheetScreenOptions } from '../../components/primitive/form_sheet'\nimport { useTheme } from '../../hooks'\nimport { useConversation } from '../../hooks/use_conversation'\nimport {\n useConversationAvatarUpdate,\n type AvatarUpdatePayload,\n} from '../../hooks/use_conversation_avatar_update'\nimport { useFontScale } from '../../hooks/use_font_scale'\nimport { usePreviewAvatarDiameter } from '../../hooks/use_preview_avatar_diameter'\nimport { MAX_FONT_SIZE_MULTIPLIER_LANDMARK } from '../../utils'\nimport type { ImagePickerAsset } from '../../utils/native_adapters/image_picker'\nimport {\n avatarPickerReducer,\n initAvatarPickerState,\n initAvatarPickerStateFromPayload,\n initEmptyAvatarPickerState,\n type AvatarPickerAction,\n type AvatarPickerState,\n type AvatarTab,\n} from './avatar_picker_state'\nimport { AvatarPreview } from './avatar_preview'\nimport { ColorPicker } from './color_picker'\nimport { EmojiTab } from './emoji_tab'\nimport { IconGrid } from './icon_grid'\nimport { UploadTab } from './upload_tab'\n\nexport const AvatarPickerScreenOptions = getFormSheetScreenOptions({\n headerTitle: 'Update avatar',\n presentation: Platform.select({ android: 'modal', ios: 'formSheet' }),\n sheetAllowedDetents: [1],\n})\n\nexport const AvatarPickerCreateScreenOptions = getFormSheetScreenOptions({\n headerTitle: 'Choose avatar',\n presentation: Platform.select({ android: 'modal', ios: 'formSheet' }),\n sheetAllowedDetents: [1],\n})\n\nexport type AvatarPickerScreenProps = StaticScreenProps<{\n conversation_id?: number\n source_params?: Record<string, unknown>\n avatar_selection?: AvatarUpdatePayload\n}>\n\nconst TABS: AvatarTab[] = ['icon', 'emoji', 'upload']\n\nconst TAB_LABELS: Record<AvatarTab, string> = {\n icon: 'Icon',\n emoji: 'Emoji',\n upload: 'Upload',\n}\n\nexport function AvatarPickerScreen({ route }: AvatarPickerScreenProps) {\n const { conversation_id, source_params, avatar_selection } = route.params\n if (conversation_id) {\n return <EditModeContent conversationId={conversation_id} />\n }\n return <CreateModeContent sourceParams={source_params} existingSelection={avatar_selection} />\n}\n\nfunction EditModeContent({ conversationId }: { conversationId: number }) {\n const navigation = useNavigation()\n const { data: conversation } = useConversation({ conversation_id: conversationId })\n const mutation = useConversationAvatarUpdate({ conversationId })\n const previewDiameter = usePreviewAvatarDiameter()\n\n const [state, dispatch] = useReducer(avatarPickerReducer, conversation, initAvatarPickerState)\n\n const hasAvatar = state.selectedType !== null\n\n const handleDone = useCallback(() => {\n if (!state.isDirty) {\n navigation.goBack()\n return\n }\n\n const payload = buildPayload(state)\n if (payload) {\n mutation.mutate(payload)\n }\n navigation.goBack()\n }, [state, mutation, navigation])\n\n const handleRemove = useCallback(() => {\n mutation.mutate({ kind: 'clear' }, { onSuccess: () => dispatch({ type: 'CLEAR' }) })\n }, [mutation, dispatch])\n\n return (\n <AvatarPickerFormSheet\n state={state}\n dispatch={dispatch}\n headerTitle=\"Update avatar\"\n headerActions={\n <>\n {hasAvatar && (\n <FormSheet.HeaderTextButton onPress={handleRemove} appearance=\"danger\">\n Remove\n </FormSheet.HeaderTextButton>\n )}\n <FormSheet.HeaderTextButton onPress={handleDone} disabled={mutation.isPending}>\n Done\n </FormSheet.HeaderTextButton>\n </>\n }\n fallbackPreview={\n <ConversationAvatar\n conversation={conversation}\n size=\"2xl\"\n maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER_LANDMARK}\n style={{ width: previewDiameter, height: previewDiameter }}\n />\n }\n />\n )\n}\n\ninterface CreateModeContentProps {\n sourceParams?: Record<string, unknown>\n existingSelection?: AvatarUpdatePayload\n}\n\nfunction CreateModeContent({ sourceParams, existingSelection }: CreateModeContentProps) {\n const navigation = useNavigation()\n\n const [state, dispatch] = useReducer(avatarPickerReducer, existingSelection, selection =>\n selection ? initAvatarPickerStateFromPayload(selection) : initEmptyAvatarPickerState()\n )\n\n const handleDone = useCallback(() => {\n if (!state.isDirty) {\n navigation.goBack()\n return\n }\n\n const payload = buildPayload(state)\n if (payload) {\n navigation.dispatch(\n StackActions.popTo('ConversationNew', { ...sourceParams, avatar_selection: payload })\n )\n } else {\n navigation.goBack()\n }\n }, [state, navigation, sourceParams])\n\n return (\n <AvatarPickerFormSheet\n state={state}\n dispatch={dispatch}\n headerTitle=\"Choose avatar\"\n headerActions={\n <FormSheet.HeaderTextButton onPress={handleDone}>Done</FormSheet.HeaderTextButton>\n }\n fallbackPreview={<EmptyAvatarPlaceholder />}\n />\n )\n}\n\ninterface AvatarPickerFormSheetProps {\n state: AvatarPickerState\n dispatch: React.Dispatch<AvatarPickerAction>\n headerTitle: string\n headerActions: React.ReactNode\n fallbackPreview: React.ReactNode\n}\n\nfunction AvatarPickerFormSheet({\n state,\n dispatch,\n headerTitle,\n headerActions,\n fallbackPreview,\n}: AvatarPickerFormSheetProps) {\n const styles = useStyles()\n\n return (\n <FormSheet.Root\n style={styles.formSheetRoot}\n contentStyle={styles.formSheetContent}\n showAndroidSheetGrabber={false}\n >\n <FormSheet.Header style={styles.header}>\n <FormSheet.HeaderTitle>{headerTitle}</FormSheet.HeaderTitle>\n <FormSheet.HeaderActions>{headerActions}</FormSheet.HeaderActions>\n </FormSheet.Header>\n\n <AvatarPreview state={state} fallback={fallbackPreview} />\n\n <Tabs\n data={TABS}\n activeTab={state.activeTab}\n onTabPress={tab => dispatch({ type: 'SELECT_TAB', payload: tab })}\n renderItem={({ item }) => (\n <Text\n style={[styles.tabLabel, item === state.activeTab && styles.tabLabelActive]}\n maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER_LANDMARK}\n >\n {TAB_LABELS[item]}\n </Text>\n )}\n style={styles.tabs}\n />\n\n <View style={styles.body}>\n {state.activeTab === 'icon' && (\n <IconGrid\n selectedIconKey={state.selectedType === 'icon' ? state.selectedKey : null}\n onIconSelect={iconKey => dispatch({ type: 'SELECT_ICON', payload: iconKey })}\n />\n )}\n {state.activeTab === 'emoji' && (\n <EmojiTab onEmojiSelect={emoji => dispatch({ type: 'SELECT_EMOJI', payload: emoji })} />\n )}\n {state.activeTab === 'upload' && (\n <UploadTab\n imagePreviewUri={state.imagePreviewUri}\n onImageSelect={asset => dispatch({ type: 'SET_IMAGE', payload: asset })}\n />\n )}\n </View>\n\n {state.activeTab !== 'upload' && (\n <View style={styles.colorPickerWrapper}>\n <ColorPicker\n selectedColor={state.selectedColor}\n onColorSelect={color => dispatch({ type: 'SELECT_COLOR', payload: color })}\n />\n </View>\n )}\n </FormSheet.Root>\n )\n}\n\nfunction EmptyAvatarPlaceholder() {\n const styles = useStyles()\n const diameter = usePreviewAvatarDiameter()\n return (\n <View\n style={[\n styles.emptyAvatarPlaceholder,\n { width: diameter, height: diameter, borderRadius: diameter / 2 },\n ]}\n />\n )\n}\n\ntype ValidAvatarPickerState = AvatarPickerState &\n (\n | { selectedType: 'icon' | 'emoji'; selectedKey: string }\n | { selectedType: 'image'; imageAsset: ImagePickerAsset }\n )\n\nfunction hasValidSelection(state: AvatarPickerState): state is ValidAvatarPickerState {\n switch (state.selectedType) {\n case 'icon':\n case 'emoji':\n return state.selectedKey !== null\n case 'image':\n return state.imageAsset !== null\n case null:\n return false\n }\n}\n\nfunction buildPayload(state: AvatarPickerState): AvatarUpdatePayload | null {\n if (!hasValidSelection(state)) return null\n\n const color = coerceColorKey(state.selectedColor)\n\n switch (state.selectedType) {\n case 'icon':\n return { kind: 'icon', key: state.selectedKey, color }\n case 'emoji':\n return { kind: 'emoji', key: state.selectedKey, color }\n case 'image':\n return { kind: 'image', imageAsset: state.imageAsset, color }\n }\n}\n\nconst useStyles = () => {\n const { colors } = useTheme()\n const fontScale = useFontScale({ maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER_LANDMARK })\n const { top } = useSafeAreaInsets()\n\n return StyleSheet.create({\n formSheetRoot: {\n flex: 1,\n },\n formSheetContent: {\n flex: 1,\n },\n header: {\n paddingTop: Platform.select({ ios: 20, android: 20 + top }),\n },\n tabs: {\n minHeight: 52 * fontScale,\n borderBottomWidth: 1,\n borderBottomColor: colors.borderColorDefaultBase,\n backgroundColor: colors.fillColorNeutral100Inverted,\n zIndex: 1,\n },\n tabLabel: {\n fontSize: 14,\n color: colors.textColorDefaultSecondary,\n paddingVertical: 14 * fontScale,\n minWidth: 56 * fontScale,\n textAlign: 'center',\n },\n tabLabelActive: {\n color: colors.textColorDefaultPrimary,\n },\n body: {\n flex: 1,\n overflow: 'hidden',\n },\n colorPickerWrapper: {\n borderTopWidth: 1,\n borderTopColor: colors.borderColorDefaultBase,\n },\n emptyAvatarPlaceholder: {\n borderWidth: 2,\n borderStyle: 'dashed',\n borderColor: colors.borderColorDefaultBase,\n },\n })\n}\n"]}
@@ -4,6 +4,6 @@ interface AvatarPreviewProps {
4
4
  state: AvatarPickerState;
5
5
  fallback: React.ReactNode;
6
6
  }
7
- export declare function AvatarPreview({ state, fallback }: AvatarPreviewProps): React.JSX.Element;
7
+ export declare function AvatarPreview({ state, fallback }: AvatarPreviewProps): import("react/jsx-runtime").JSX.Element;
8
8
  export {};
9
9
  //# sourceMappingURL=avatar_preview.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"avatar_preview.d.ts","sourceRoot":"","sources":["../../../src/screens/avatar_picker/avatar_preview.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAE9D,UAAU,kBAAkB;IAC1B,KAAK,EAAE,iBAAiB,CAAA;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AA8BD,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,kBAAkB,qBAIpE"}
1
+ {"version":3,"file":"avatar_preview.d.ts","sourceRoot":"","sources":["../../../src/screens/avatar_picker/avatar_preview.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAE9D,UAAU,kBAAkB;IAC1B,KAAK,EAAE,iBAAiB,CAAA;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AA8BD,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,kBAAkB,2CAIpE"}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { StyleSheet, View } from 'react-native';
3
3
  import { EmojiAvatar } from '../../components/display/emoji_avatar';
4
4
  import { IconAvatar } from '../../components/display/icon_avatar';
@@ -15,19 +15,15 @@ function getPreviewNode(state, diameter) {
15
15
  case 'icon':
16
16
  if (!state.selectedKey)
17
17
  return null;
18
- return <IconAvatar iconKey={state.selectedKey} color={state.selectedColor} {...sizeProps}/>;
18
+ return _jsx(IconAvatar, { iconKey: state.selectedKey, color: state.selectedColor, ...sizeProps });
19
19
  case 'emoji':
20
20
  if (!state.selectedKey)
21
21
  return null;
22
- return <EmojiAvatar emoji={state.selectedKey} color={state.selectedColor} {...sizeProps}/>;
22
+ return _jsx(EmojiAvatar, { emoji: state.selectedKey, color: state.selectedColor, ...sizeProps });
23
23
  case 'image':
24
24
  if (!state.imagePreviewUri)
25
25
  return null;
26
- return (<AvatarPrimitive.Root {...sizeProps}>
27
- <AvatarPrimitive.Mask>
28
- <AvatarPrimitive.Image sourceUri={state.imagePreviewUri}/>
29
- </AvatarPrimitive.Mask>
30
- </AvatarPrimitive.Root>);
26
+ return (_jsx(AvatarPrimitive.Root, { ...sizeProps, children: _jsx(AvatarPrimitive.Mask, { children: _jsx(AvatarPrimitive.Image, { sourceUri: state.imagePreviewUri }) }) }));
31
27
  default:
32
28
  return null;
33
29
  }
@@ -35,7 +31,7 @@ function getPreviewNode(state, diameter) {
35
31
  export function AvatarPreview({ state, fallback }) {
36
32
  const diameter = usePreviewAvatarDiameter();
37
33
  const preview = getPreviewNode(state, diameter);
38
- return <View style={styles.container}>{preview ?? fallback}</View>;
34
+ return _jsx(View, { style: styles.container, children: preview ?? fallback });
39
35
  }
40
36
  const styles = StyleSheet.create({
41
37
  container: {
@@ -1 +1 @@
1
- {"version":3,"file":"avatar_preview.js","sourceRoot":"","sources":["../../../src/screens/avatar_picker/avatar_preview.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAA;AACjE,OAAO,eAAe,MAAM,6CAA6C,CAAA;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAA;AAClF,OAAO,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAA;AAQ/D,SAAS,cAAc,CAAC,KAAwB,EAAE,QAAgB;IAChE,MAAM,SAAS,GAAG;QAChB,IAAI,EAAE,KAAK;QACX,qBAAqB,EAAE,iCAAiC;QACxD,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;KACpC,CAAA;IAEV,QAAQ,KAAK,CAAC,YAAY,EAAE,CAAC;QAC3B,KAAK,MAAM;YACT,IAAI,CAAC,KAAK,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAA;YACnC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,SAAS,CAAC,EAAG,CAAA;QAC9F,KAAK,OAAO;YACV,IAAI,CAAC,KAAK,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAA;YACnC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,SAAS,CAAC,EAAG,CAAA;QAC7F,KAAK,OAAO;YACV,IAAI,CAAC,KAAK,CAAC,eAAe;gBAAE,OAAO,IAAI,CAAA;YACvC,OAAO,CACL,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAClC;UAAA,CAAC,eAAe,CAAC,IAAI,CACnB;YAAA,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,EAC1D;UAAA,EAAE,eAAe,CAAC,IAAI,CACxB;QAAA,EAAE,eAAe,CAAC,IAAI,CAAC,CACxB,CAAA;QACH;YACE,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAsB;IACnE,MAAM,QAAQ,GAAG,wBAAwB,EAAE,CAAA;IAC3C,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC/C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;AACpE,CAAC;AAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,UAAU,EAAE,QAAQ;QACpB,UAAU,EAAE,EAAE;QACd,aAAa,EAAE,EAAE;KAClB;CACF,CAAC,CAAA","sourcesContent":["import React from 'react'\nimport { StyleSheet, View } from 'react-native'\nimport { EmojiAvatar } from '../../components/display/emoji_avatar'\nimport { IconAvatar } from '../../components/display/icon_avatar'\nimport AvatarPrimitive from '../../components/primitive/avatar_primitive'\nimport { usePreviewAvatarDiameter } from '../../hooks/use_preview_avatar_diameter'\nimport { MAX_FONT_SIZE_MULTIPLIER_LANDMARK } from '../../utils'\nimport type { AvatarPickerState } from './avatar_picker_state'\n\ninterface AvatarPreviewProps {\n state: AvatarPickerState\n fallback: React.ReactNode\n}\n\nfunction getPreviewNode(state: AvatarPickerState, diameter: number): React.ReactNode {\n const sizeProps = {\n size: '2xl',\n maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER_LANDMARK,\n style: { width: diameter, height: diameter },\n } as const\n\n switch (state.selectedType) {\n case 'icon':\n if (!state.selectedKey) return null\n return <IconAvatar iconKey={state.selectedKey} color={state.selectedColor} {...sizeProps} />\n case 'emoji':\n if (!state.selectedKey) return null\n return <EmojiAvatar emoji={state.selectedKey} color={state.selectedColor} {...sizeProps} />\n case 'image':\n if (!state.imagePreviewUri) return null\n return (\n <AvatarPrimitive.Root {...sizeProps}>\n <AvatarPrimitive.Mask>\n <AvatarPrimitive.Image sourceUri={state.imagePreviewUri} />\n </AvatarPrimitive.Mask>\n </AvatarPrimitive.Root>\n )\n default:\n return null\n }\n}\n\nexport function AvatarPreview({ state, fallback }: AvatarPreviewProps) {\n const diameter = usePreviewAvatarDiameter()\n const preview = getPreviewNode(state, diameter)\n return <View style={styles.container}>{preview ?? fallback}</View>\n}\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n paddingTop: 24,\n paddingBottom: 16,\n },\n})\n"]}
1
+ {"version":3,"file":"avatar_preview.js","sourceRoot":"","sources":["../../../src/screens/avatar_picker/avatar_preview.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAA;AACjE,OAAO,eAAe,MAAM,6CAA6C,CAAA;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAA;AAClF,OAAO,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAA;AAQ/D,SAAS,cAAc,CAAC,KAAwB,EAAE,QAAgB;IAChE,MAAM,SAAS,GAAG;QAChB,IAAI,EAAE,KAAK;QACX,qBAAqB,EAAE,iCAAiC;QACxD,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;KACpC,CAAA;IAEV,QAAQ,KAAK,CAAC,YAAY,EAAE,CAAC;QAC3B,KAAK,MAAM;YACT,IAAI,CAAC,KAAK,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAA;YACnC,OAAO,KAAC,UAAU,IAAC,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,aAAa,KAAM,SAAS,GAAI,CAAA;QAC9F,KAAK,OAAO;YACV,IAAI,CAAC,KAAK,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAA;YACnC,OAAO,KAAC,WAAW,IAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,aAAa,KAAM,SAAS,GAAI,CAAA;QAC7F,KAAK,OAAO;YACV,IAAI,CAAC,KAAK,CAAC,eAAe;gBAAE,OAAO,IAAI,CAAA;YACvC,OAAO,CACL,KAAC,eAAe,CAAC,IAAI,OAAK,SAAS,YACjC,KAAC,eAAe,CAAC,IAAI,cACnB,KAAC,eAAe,CAAC,KAAK,IAAC,SAAS,EAAE,KAAK,CAAC,eAAe,GAAI,GACtC,GACF,CACxB,CAAA;QACH;YACE,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAsB;IACnE,MAAM,QAAQ,GAAG,wBAAwB,EAAE,CAAA;IAC3C,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC/C,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,YAAG,OAAO,IAAI,QAAQ,GAAQ,CAAA;AACpE,CAAC;AAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,UAAU,EAAE,QAAQ;QACpB,UAAU,EAAE,EAAE;QACd,aAAa,EAAE,EAAE;KAClB;CACF,CAAC,CAAA","sourcesContent":["import React from 'react'\nimport { StyleSheet, View } from 'react-native'\nimport { EmojiAvatar } from '../../components/display/emoji_avatar'\nimport { IconAvatar } from '../../components/display/icon_avatar'\nimport AvatarPrimitive from '../../components/primitive/avatar_primitive'\nimport { usePreviewAvatarDiameter } from '../../hooks/use_preview_avatar_diameter'\nimport { MAX_FONT_SIZE_MULTIPLIER_LANDMARK } from '../../utils'\nimport type { AvatarPickerState } from './avatar_picker_state'\n\ninterface AvatarPreviewProps {\n state: AvatarPickerState\n fallback: React.ReactNode\n}\n\nfunction getPreviewNode(state: AvatarPickerState, diameter: number): React.ReactNode {\n const sizeProps = {\n size: '2xl',\n maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER_LANDMARK,\n style: { width: diameter, height: diameter },\n } as const\n\n switch (state.selectedType) {\n case 'icon':\n if (!state.selectedKey) return null\n return <IconAvatar iconKey={state.selectedKey} color={state.selectedColor} {...sizeProps} />\n case 'emoji':\n if (!state.selectedKey) return null\n return <EmojiAvatar emoji={state.selectedKey} color={state.selectedColor} {...sizeProps} />\n case 'image':\n if (!state.imagePreviewUri) return null\n return (\n <AvatarPrimitive.Root {...sizeProps}>\n <AvatarPrimitive.Mask>\n <AvatarPrimitive.Image sourceUri={state.imagePreviewUri} />\n </AvatarPrimitive.Mask>\n </AvatarPrimitive.Root>\n )\n default:\n return null\n }\n}\n\nexport function AvatarPreview({ state, fallback }: AvatarPreviewProps) {\n const diameter = usePreviewAvatarDiameter()\n const preview = getPreviewNode(state, diameter)\n return <View style={styles.container}>{preview ?? fallback}</View>\n}\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n paddingTop: 24,\n paddingBottom: 16,\n },\n})\n"]}
@@ -1,9 +1,8 @@
1
- import React from 'react';
2
1
  import { type CustomAvatarColorKey } from '../../components/display/utils/avatar_gradient_colors';
3
2
  interface ColorPickerProps {
4
3
  selectedColor: string;
5
4
  onColorSelect: (color: CustomAvatarColorKey) => void;
6
5
  }
7
- export declare function ColorPicker({ selectedColor, onColorSelect }: ColorPickerProps): React.JSX.Element;
6
+ export declare function ColorPicker({ selectedColor, onColorSelect }: ColorPickerProps): import("react/jsx-runtime").JSX.Element;
8
7
  export {};
9
8
  //# sourceMappingURL=color_picker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"color_picker.d.ts","sourceRoot":"","sources":["../../../src/screens/avatar_picker/color_picker.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAG1C,OAAO,EAEL,KAAK,oBAAoB,EAE1B,MAAM,uDAAuD,CAAA;AAI9D,UAAU,gBAAgB;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAA;CACrD;AAED,wBAAgB,WAAW,CAAC,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,gBAAgB,qBAkC7E"}
1
+ {"version":3,"file":"color_picker.d.ts","sourceRoot":"","sources":["../../../src/screens/avatar_picker/color_picker.tsx"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,oBAAoB,EAE1B,MAAM,uDAAuD,CAAA;AAI9D,UAAU,gBAAgB;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAA;CACrD;AAED,wBAAgB,WAAW,CAAC,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,gBAAgB,2CAkC7E"}