@cellarnode/ui 0.178.1 → 0.179.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/dist/brand/brand-field-provenance.js +3 -3
  2. package/dist/brand/brand-field-provenance.js.map +1 -1
  3. package/dist/brand/brand-generation-context-form.js +2 -2
  4. package/dist/brand/brand-generation-recovery.js +2 -2
  5. package/dist/brand/brand-generation-recovery.js.map +1 -1
  6. package/dist/brand/brand-image-asset-slot-card.js +1 -1
  7. package/dist/brand/brand-image-chooser.js +1 -1
  8. package/dist/brand/brand-image-source-picker.js +1 -1
  9. package/dist/brand/brand-profile-form-lists.js +2 -2
  10. package/dist/brand/brand-profile-form-people.js +2 -2
  11. package/dist/brand/brand-profile-review-media.js +1 -1
  12. package/dist/brand/brand-profile-workspace-parts.js +1 -1
  13. package/dist/brand/brand-profile-workspace.js +1 -1
  14. package/dist/brand/brand-provenance-summary.js +1 -1
  15. package/dist/brand/brand-summary-card.js +1 -1
  16. package/dist/brand/brand-summary-card.js.map +1 -1
  17. package/dist/chat/chat-composer.d.ts +3 -1
  18. package/dist/chat/chat-composer.d.ts.map +1 -1
  19. package/dist/chat/chat-composer.js +3 -3
  20. package/dist/chat/chat-composer.js.map +1 -1
  21. package/dist/chat/chat-surface.d.ts +23 -2
  22. package/dist/chat/chat-surface.d.ts.map +1 -1
  23. package/dist/chat/chat-surface.js +77 -41
  24. package/dist/chat/chat-surface.js.map +1 -1
  25. package/dist/chat/index.d.ts +2 -0
  26. package/dist/chat/index.d.ts.map +1 -1
  27. package/dist/chat/index.js +1 -0
  28. package/dist/chat/index.js.map +1 -1
  29. package/dist/chat/messenger-layout.js +2 -2
  30. package/dist/chat/messenger-layout.js.map +1 -1
  31. package/dist/chat/messenger-screen/room-panel.d.ts +24 -0
  32. package/dist/chat/messenger-screen/room-panel.d.ts.map +1 -1
  33. package/dist/chat/messenger-screen/room-panel.js +56 -13
  34. package/dist/chat/messenger-screen/room-panel.js.map +1 -1
  35. package/dist/chat/messenger-screen/types.d.ts +2 -0
  36. package/dist/chat/messenger-screen/types.d.ts.map +1 -1
  37. package/dist/chat/use-stick-to-bottom.d.ts +45 -0
  38. package/dist/chat/use-stick-to-bottom.d.ts.map +1 -0
  39. package/dist/chat/use-stick-to-bottom.js +191 -0
  40. package/dist/chat/use-stick-to-bottom.js.map +1 -0
  41. package/dist/chat-ably/use-presence.d.ts +13 -0
  42. package/dist/chat-ably/use-presence.d.ts.map +1 -1
  43. package/dist/chat-ably/use-presence.js +35 -0
  44. package/dist/chat-ably/use-presence.js.map +1 -1
  45. package/dist/components/access-model-select.d.ts.map +1 -1
  46. package/dist/components/access-model-select.js +2 -1
  47. package/dist/components/access-model-select.js.map +1 -1
  48. package/dist/components/accordion.js +1 -1
  49. package/dist/components/animated-select.js +1 -1
  50. package/dist/components/animated-select.js.map +1 -1
  51. package/dist/components/animated-shadcn-select.js +1 -1
  52. package/dist/components/animated-shadcn-select.js.map +1 -1
  53. package/dist/components/avatar-stack.js +3 -3
  54. package/dist/components/avatar-stack.js.map +1 -1
  55. package/dist/components/avatar.js +1 -1
  56. package/dist/components/avatar.js.map +1 -1
  57. package/dist/components/bottle-extract-dialog.js +2 -2
  58. package/dist/components/bottle-extract-dialog.js.map +1 -1
  59. package/dist/components/bottle-extraction-inline-progress.js +1 -1
  60. package/dist/components/bottle-extraction-inline-progress.js.map +1 -1
  61. package/dist/components/card-actions-trigger.js +1 -1
  62. package/dist/components/card-actions-trigger.js.map +1 -1
  63. package/dist/components/checkbox.js +1 -1
  64. package/dist/components/checkbox.js.map +1 -1
  65. package/dist/components/closure-select.d.ts.map +1 -1
  66. package/dist/components/closure-select.js +2 -1
  67. package/dist/components/closure-select.js.map +1 -1
  68. package/dist/components/colour-picker-field.js +1 -1
  69. package/dist/components/colour-picker-field.js.map +1 -1
  70. package/dist/components/composition-editor.js +1 -1
  71. package/dist/components/composition-editor.js.map +1 -1
  72. package/dist/components/confirmation/beverage-comparison-modal.js +1 -1
  73. package/dist/components/confirmation/beverage-comparison-modal.js.map +1 -1
  74. package/dist/components/confirmation/confirmation-card.js +2 -2
  75. package/dist/components/confirmation/confirmation-card.js.map +1 -1
  76. package/dist/components/confirmation/cross-portfolio-nudge-sheet.js +5 -5
  77. package/dist/components/confirmation/cross-portfolio-nudge-sheet.js.map +1 -1
  78. package/dist/components/corner-style-picker.js +1 -1
  79. package/dist/components/corner-style-picker.js.map +1 -1
  80. package/dist/components/country-code-multi-select.d.ts.map +1 -1
  81. package/dist/components/country-code-multi-select.js +2 -1
  82. package/dist/components/country-code-multi-select.js.map +1 -1
  83. package/dist/components/country-code-select.d.ts.map +1 -1
  84. package/dist/components/country-code-select.js +4 -2
  85. package/dist/components/country-code-select.js.map +1 -1
  86. package/dist/components/currency-select.d.ts.map +1 -1
  87. package/dist/components/currency-select.js +2 -1
  88. package/dist/components/currency-select.js.map +1 -1
  89. package/dist/components/delivery-terms-select.d.ts.map +1 -1
  90. package/dist/components/delivery-terms-select.js +2 -1
  91. package/dist/components/delivery-terms-select.js.map +1 -1
  92. package/dist/components/enterprise-type-select.d.ts.map +1 -1
  93. package/dist/components/enterprise-type-select.js +2 -1
  94. package/dist/components/enterprise-type-select.js.map +1 -1
  95. package/dist/components/inset-drawer.js +1 -1
  96. package/dist/components/inset-drawer.js.map +1 -1
  97. package/dist/components/link.d.ts +1 -1
  98. package/dist/components/link.d.ts.map +1 -1
  99. package/dist/components/link.js +3 -2
  100. package/dist/components/link.js.map +1 -1
  101. package/dist/components/offer-card.js +1 -1
  102. package/dist/components/offer-card.js.map +1 -1
  103. package/dist/components/packaging-select.d.ts.map +1 -1
  104. package/dist/components/packaging-select.js +2 -1
  105. package/dist/components/packaging-select.js.map +1 -1
  106. package/dist/components/picker-empty-guidance.js +1 -1
  107. package/dist/components/picker-empty-guidance.js.map +1 -1
  108. package/dist/components/preflight-verdict-sheet.js +2 -2
  109. package/dist/components/preflight-verdict-sheet.js.map +1 -1
  110. package/dist/components/price-range-picker.js +1 -1
  111. package/dist/components/price-range-picker.js.map +1 -1
  112. package/dist/components/procurement-channel-select.d.ts.map +1 -1
  113. package/dist/components/procurement-channel-select.js +2 -1
  114. package/dist/components/procurement-channel-select.js.map +1 -1
  115. package/dist/components/product-card.js +1 -1
  116. package/dist/components/product-card.js.map +1 -1
  117. package/dist/components/product-picker-drawer.js +4 -4
  118. package/dist/components/product-picker-drawer.js.map +1 -1
  119. package/dist/components/radio.js +1 -1
  120. package/dist/components/radio.js.map +1 -1
  121. package/dist/components/region-select.d.ts.map +1 -1
  122. package/dist/components/region-select.js +2 -1
  123. package/dist/components/region-select.js.map +1 -1
  124. package/dist/components/scroll-area.js +1 -1
  125. package/dist/components/shadcn-badge.js +2 -2
  126. package/dist/components/shadcn-badge.js.map +1 -1
  127. package/dist/components/shadcn-button.d.ts.map +1 -1
  128. package/dist/components/shadcn-button.js +2 -2
  129. package/dist/components/shadcn-button.js.map +1 -1
  130. package/dist/components/shadcn-input.js +1 -1
  131. package/dist/components/shadcn-input.js.map +1 -1
  132. package/dist/components/shadcn-select.js +1 -1
  133. package/dist/components/shadcn-select.js.map +1 -1
  134. package/dist/components/shadcn-textarea.js +1 -1
  135. package/dist/components/shadcn-textarea.js.map +1 -1
  136. package/dist/components/source-composite.js +1 -1
  137. package/dist/components/source-composite.js.map +1 -1
  138. package/dist/components/source-drawer.js +1 -1
  139. package/dist/components/source-drawer.js.map +1 -1
  140. package/dist/components/supporting-pane-layout.d.ts +6 -1
  141. package/dist/components/supporting-pane-layout.d.ts.map +1 -1
  142. package/dist/components/supporting-pane-layout.js +65 -12
  143. package/dist/components/supporting-pane-layout.js.map +1 -1
  144. package/dist/components/switch.js +1 -1
  145. package/dist/components/switch.js.map +1 -1
  146. package/dist/components/table.js +1 -1
  147. package/dist/components/table.js.map +1 -1
  148. package/dist/components/tabs.js +1 -1
  149. package/dist/components/text.js +1 -1
  150. package/dist/components/text.js.map +1 -1
  151. package/dist/components/toast.js +1 -1
  152. package/dist/components/toast.js.map +1 -1
  153. package/dist/components/variant-picker-dialog.js +6 -6
  154. package/dist/components/variant-picker-dialog.js.map +1 -1
  155. package/dist/components/variant-picker-hero.js +1 -1
  156. package/dist/components/variant-picker-hero.js.map +1 -1
  157. package/dist/components/year-picker.js +1 -1
  158. package/dist/components/year-picker.js.map +1 -1
  159. package/dist/fic-label/ingredient-input.js +1 -1
  160. package/dist/fic-label/ingredient-input.js.map +1 -1
  161. package/dist/globe/globe-view.js +1 -1
  162. package/dist/globe/globe-view.js.map +1 -1
  163. package/dist/image-upload/focal-point-picker.js +1 -1
  164. package/dist/image-upload/focal-point-picker.js.map +1 -1
  165. package/dist/insight-band/next-best-action-card.js +1 -1
  166. package/dist/insight-band/next-best-action-card.js.map +1 -1
  167. package/dist/marketing/pricing-table.js +1 -1
  168. package/dist/marketing/qr/qr-customizer-controls.js +1 -1
  169. package/dist/marketing/qr/qr-customizer-controls.js.map +1 -1
  170. package/dist/notifications/notification-tray.js +1 -1
  171. package/dist/notifications/notification-tray.js.map +1 -1
  172. package/dist/offer/attachments-card.js +1 -1
  173. package/dist/offer/attachments-card.js.map +1 -1
  174. package/dist/offer/index.d.ts +1 -1
  175. package/dist/offer/index.d.ts.map +1 -1
  176. package/dist/offer/index.js.map +1 -1
  177. package/dist/offer/negotiation-flow-timeline.js +1 -1
  178. package/dist/offer/negotiation-flow-timeline.js.map +1 -1
  179. package/dist/offer/offer-branch-shared.d.ts +1 -1
  180. package/dist/offer/offer-branch-shared.js +1 -1
  181. package/dist/offer/offer-evaluation-sections.js +1 -1
  182. package/dist/offer/offer-page.d.ts +62 -2
  183. package/dist/offer/offer-page.d.ts.map +1 -1
  184. package/dist/offer/offer-page.js +122 -14
  185. package/dist/offer/offer-page.js.map +1 -1
  186. package/dist/offer/parties-card.d.ts.map +1 -1
  187. package/dist/offer/parties-card.js +1 -1
  188. package/dist/offer/parties-card.js.map +1 -1
  189. package/dist/offer/reviews-summary.js +1 -1
  190. package/dist/offer/reviews-summary.js.map +1 -1
  191. package/dist/offer/sticky-scroll-padding.d.ts +4 -0
  192. package/dist/offer/sticky-scroll-padding.d.ts.map +1 -0
  193. package/dist/offer/sticky-scroll-padding.js +54 -0
  194. package/dist/offer/sticky-scroll-padding.js.map +1 -0
  195. package/dist/offer/timeline-event.js +1 -1
  196. package/dist/offer/timeline-event.js.map +1 -1
  197. package/dist/opportunities/opportunity-detail-header.js +1 -1
  198. package/dist/opportunities/opportunity-detail-header.js.map +1 -1
  199. package/dist/opportunities/opportunity-detail-panel.js +1 -1
  200. package/dist/opportunities/opportunity-detail-panel.js.map +1 -1
  201. package/dist/opportunities/opportunity-filter-bar.js +1 -1
  202. package/dist/opportunities/opportunity-filter-bar.js.map +1 -1
  203. package/dist/opportunities/opportunity-stacked-card.js +2 -2
  204. package/dist/opportunities/opportunity-stacked-card.js.map +1 -1
  205. package/dist/opportunities/wizard/allowed-delivery-terms-section.js +1 -1
  206. package/dist/opportunities/wizard/allowed-delivery-terms-section.js.map +1 -1
  207. package/dist/opportunities/wizard/opportunity-wizard.js +2 -2
  208. package/dist/opportunities/wizard/opportunity-wizard.js.map +1 -1
  209. package/dist/opportunities/wizard/step-opportunities.js +8 -8
  210. package/dist/opportunities/wizard/step-pricing-timeline.js +4 -4
  211. package/dist/opportunities/wizard/step-review.js +1 -1
  212. package/dist/opportunities/wizard/step-tender-basics.js +2 -2
  213. package/dist/opportunities/wizard/wizard-stepper.js +1 -1
  214. package/dist/opportunities/wizard/wizard-task-frame.js +1 -1
  215. package/dist/org/billing-address-source.js +2 -2
  216. package/dist/org/public-location-notice.js +2 -2
  217. package/dist/pdf-tool/live/pdf-label-layer.js +1 -1
  218. package/dist/pdf-tool/live/pdf-label-layer.js.map +1 -1
  219. package/dist/portfolio/portfolio-folder-card.js +1 -1
  220. package/dist/portfolio/portfolio-folder-card.js.map +1 -1
  221. package/dist/portfolio-import/beverage-comparison-modal.js +5 -5
  222. package/dist/portfolio-import/beverage-comparison-modal.js.map +1 -1
  223. package/dist/portfolio-import/bottle-photos-status.js +1 -1
  224. package/dist/portfolio-import/bottle-photos-status.js.map +1 -1
  225. package/dist/portfolio-import/import-job-detail-view.js +1 -1
  226. package/dist/portfolio-import/import-job-detail-view.js.map +1 -1
  227. package/dist/portfolio-import/product-gallery.js +1 -1
  228. package/dist/portfolio-import/product-gallery.js.map +1 -1
  229. package/dist/product-editor/product-editor-surface.js +1 -1
  230. package/dist/product-editor/product-editor-surface.js.map +1 -1
  231. package/dist/product-editor/tabs/product-status-tab.js +1 -1
  232. package/dist/product-editor/tabs/product-status-tab.js.map +1 -1
  233. package/dist/product-editor/tabs/resources/awards-panel.js +2 -2
  234. package/dist/product-editor/tabs/resources/awards-panel.js.map +1 -1
  235. package/dist/profile/business-details.js +1 -1
  236. package/dist/profile/business-details.js.map +1 -1
  237. package/dist/profile/product-detail-drawer.js +2 -2
  238. package/dist/profile/product-detail-drawer.js.map +1 -1
  239. package/package.json +1 -1
  240. package/src/theme/tokens.css +7 -1
@@ -18,10 +18,11 @@ import { useAbly } from "ably/react";
18
18
  import { ChatComposer, ChatMessageList, ChatPresenceRow, ChatShell, } from "../chat-surface.js";
19
19
  import { ConnectionBanner } from "../connection-banner.js";
20
20
  import { unreadStore } from "../unread-store.js";
21
+ import { getActiveChatRoom, setActiveChatRoom } from "./active-room-store.js";
21
22
  import { ChatRoom } from "../../chat-ably/chat-room.js";
22
23
  import { useChatMessages } from "../../chat-ably/use-chat-messages.js";
23
24
  import { useTyping } from "../../chat-ably/use-typing.js";
24
- import { usePresence } from "../../chat-ably/use-presence.js";
25
+ import { useGatedPresence } from "../../chat-ably/use-presence.js";
25
26
  import { useChatConnectionStatus } from "../../chat-ably/use-chat-connection-status.js";
26
27
  import { useAblyBannerState } from "../../chat-ably/use-ably-banner-state.js";
27
28
  import { COUNTERPARTY_SENDER_ORG_ID, adaptChatItem, getInitials, toSurfaceMessage, } from "./message-adapters.js";
@@ -75,11 +76,11 @@ function useLatestCallback(callback) {
75
76
  * (bridge component + children-as-function) survives the lift
76
77
  * unchanged.
77
78
  */
78
- function SdkLiveState({ children }) {
79
+ function SdkLiveState({ presenceActive, children, }) {
79
80
  const { messages, sendMessage, retryMessage, loadMore, hasMore, isLoadingHistory, isLoadingMore, } = useChatMessages();
80
81
  const { currentlyTyping, start: startTyping } = useTyping();
81
82
  const { currentStatus } = useChatConnectionStatus();
82
- const { presentMembers } = usePresence();
83
+ const { presentMembers } = useGatedPresence(presenceActive);
83
84
  // `useAbly()` returns the Ably Realtime instance owned by the
84
85
  // `<AblyProvider>` at the consumer's app shell. Cast through
85
86
  // `unknown` because the lib's TypeScript shim does not perfectly
@@ -138,12 +139,12 @@ export function MessengerRoomPanel(props) {
138
139
  // CEL-2115 — until the session knows who the user is (cold load of
139
140
  // a deep link), `<ChatRoom>` mounts no provider; `<SdkLiveState>`'s
140
141
  // room hooks must not render in that window.
141
- fallback: _jsx(MessengerRoomPanelPlaceholder, { label: props.labels?.loadingConversation }), children: _jsx(SdkLiveState, { children: (state) => (_jsx("div", { "data-chat-connection-status": state.connectionStatus, className: "flex min-w-0 max-w-full flex-1 flex-col overflow-hidden", children: _jsx(MessengerRoomPanelContent, { ...props, live: state }) })) }) }));
142
+ fallback: _jsx(MessengerRoomPanelPlaceholder, { label: props.labels?.loadingConversation }), children: _jsx(SdkLiveState, { presenceActive: props.active ?? true, children: (state) => (_jsx("div", { "data-chat-connection-status": state.connectionStatus, className: "flex min-w-0 max-w-full flex-1 flex-col overflow-hidden", children: _jsx(MessengerRoomPanelContent, { ...props, live: state }) })) }) }));
142
143
  }
143
144
  function MessengerRoomPanelPlaceholder({ label }) {
144
145
  return (_jsx("div", { role: "status", "aria-busy": "true", "data-chat-room-pending": "", className: "flex min-w-0 max-w-full flex-1 items-center justify-center p-6 text-sm/6 text-muted-foreground", children: label ?? "Loading conversation" }));
145
146
  }
146
- function MessengerRoomPanelContent({ room, counterparty, currentUserId, currentUserName, currentOrgId, markRoomRead, orgMemberSource, attachmentSource, getAttachmentUploadAdapter, subscribeToAttachmentChanges, onOpenAttachment, formatAttachmentOnlyContent, attachmentsQueryKey, isReadOnly, labels, roomsQueryKey, onMarkReadSettled, onReconnected, live, }) {
147
+ function MessengerRoomPanelContent({ room, counterparty, currentUserId, currentUserName, currentOrgId, markRoomRead, orgMemberSource, attachmentSource, getAttachmentUploadAdapter, subscribeToAttachmentChanges, onOpenAttachment, formatAttachmentOnlyContent, attachmentsQueryKey, isReadOnly, labels, roomsQueryKey, onMarkReadSettled, onReconnected, active = true, composerInputRef, showHeader = true, live, }) {
147
148
  const roomId = room.id;
148
149
  const queryClient = useQueryClient();
149
150
  const [composerValue, setComposerValue] = React.useState("");
@@ -260,8 +261,8 @@ function MessengerRoomPanelContent({ room, counterparty, currentUserId, currentU
260
261
  /* ── Connection banner (mapping + first-connect suppression live in the lib) ── */
261
262
  const { bannerState, showBanner: showConnectionBanner } = useAblyBannerState(live.connectionStatus);
262
263
  /* ── Mark-read: optimistic zero + snapshot/rollback + in-flight dedupe ── */
263
- // The panel is the active surface whenever it is mounted (the screen
264
- // remounts it per room via `key`), so the tuple below records
264
+ // The panel is the active surface whenever it is mounted and `active` (the
265
+ // screen remounts it per room via `key`), so the tuple below records
265
266
  // "successfully marked" only AFTER the REST call resolves — a
266
267
  // transient failure does not lock the room out of future retries.
267
268
  const getMarkRoomRead = useLatestCallback(markRoomRead);
@@ -273,8 +274,22 @@ function MessengerRoomPanelContent({ room, counterparty, currentUserId, currentU
273
274
  // Track the in-flight room separately so we don't fire duplicate REST
274
275
  // calls while a previous attempt for the same room is still pending.
275
276
  const inflightRoomRef = React.useRef(null);
277
+ const activeRef = React.useRef(active);
278
+ // True once the panel was hidden after a mark-read request started, so a
279
+ // request that resolves for an already-reopened panel re-marks (messages may
280
+ // have arrived while it was hidden, and the server-side read marker predates them).
281
+ const hiddenSinceMarkRef = React.useRef(false);
282
+ const [remarkTick, setRemarkTick] = React.useState(0);
276
283
  React.useEffect(() => {
277
- const panelActive = true;
284
+ const panelActive = active;
285
+ activeRef.current = active;
286
+ if (!panelActive) {
287
+ hiddenSinceMarkRef.current = true;
288
+ // Hidden: never mark read, and forget the marker so that becoming active
289
+ // again marks the room (messages may have arrived while it was hidden).
290
+ lastMarkedRef.current = { ...lastMarkedRef.current, panelActive: false };
291
+ return;
292
+ }
278
293
  const last = lastMarkedRef.current;
279
294
  const becameActive = panelActive && !last.panelActive;
280
295
  const switchedRoom = panelActive && roomId && roomId !== last.roomId;
@@ -284,6 +299,7 @@ function MessengerRoomPanelContent({ room, counterparty, currentUserId, currentU
284
299
  if (inflightRoomRef.current === roomId)
285
300
  return;
286
301
  inflightRoomRef.current = roomId;
302
+ hiddenSinceMarkRef.current = false;
287
303
  // Snapshot the prior count so we can restore it if the server-side
288
304
  // mark-read call fails AND no fresh messages arrived in the
289
305
  // meantime — without the conditional, we'd clobber any inbound bump
@@ -298,7 +314,15 @@ function MessengerRoomPanelContent({ room, counterparty, currentUserId, currentU
298
314
  // unread until the next reconnect or staleTime expiry.
299
315
  void getMarkRoomRead()(roomId)
300
316
  .then(() => {
301
- lastMarkedRef.current = { panelActive: true, roomId };
317
+ // Hidden at any point during the flight: opening re-marks. If it is
318
+ // active again right now, re-mark immediately.
319
+ const needsRemark = activeRef.current && hiddenSinceMarkRef.current;
320
+ lastMarkedRef.current = { panelActive: needsRemark ? false : activeRef.current, roomId };
321
+ if (needsRemark) {
322
+ if (inflightRoomRef.current === roomId)
323
+ inflightRoomRef.current = null;
324
+ setRemarkTick((tick) => tick + 1);
325
+ }
302
326
  void queryClient.invalidateQueries({ queryKey: [...roomsQueryKey] });
303
327
  getOnMarkReadSettled()({ roomId, ok: true });
304
328
  })
@@ -315,7 +339,26 @@ function MessengerRoomPanelContent({ room, counterparty, currentUserId, currentU
315
339
  inflightRoomRef.current = null;
316
340
  }
317
341
  });
318
- }, [roomId, queryClient, roomsQueryKey, getMarkRoomRead, getOnMarkReadSettled]);
342
+ }, [
343
+ roomId,
344
+ active,
345
+ remarkTick,
346
+ queryClient,
347
+ roomsQueryKey,
348
+ getMarkRoomRead,
349
+ getOnMarkReadSettled,
350
+ ]);
351
+ // While the user is reading this room, tell the notification bridges so they
352
+ // do not bump unread or refetch for it. Clear only our own registration.
353
+ React.useEffect(() => {
354
+ if (!active)
355
+ return;
356
+ setActiveChatRoom(roomId);
357
+ return () => {
358
+ if (getActiveChatRoom() === roomId)
359
+ setActiveChatRoom(null);
360
+ };
361
+ }, [active, roomId]);
319
362
  /* ── Reconnect reconciliation ── */
320
363
  const getOnReconnected = useLatestCallback(() => onReconnected?.());
321
364
  React.useEffect(() => {
@@ -339,7 +382,7 @@ function MessengerRoomPanelContent({ room, counterparty, currentUserId, currentU
339
382
  getOnReconnected,
340
383
  ]);
341
384
  /* ── Render ── */
342
- return (_jsxs(_Fragment, { children: [showConnectionBanner ? (_jsx(ConnectionBanner, { state: bannerState, onRetry: live.reconnect, reconnectingMessage: labels?.connection?.reconnecting ?? "Reconnecting to live updates…", offlineMessage: labels?.connection?.offline ?? "You are offline. Messages will send when you reconnect.", connectedMessage: labels?.connection?.connected ?? "Back online. Messages syncing.", retryLabel: labels?.connection?.retry ?? "Retry", liveLabel: labels?.connection?.live ?? "Live", ariaLabels: labels?.connection?.aria })) : null, _jsx(ChatShell, { title: counterparty.name, subtitle: counterparty.subtitle, presence: _jsx(ChatPresenceRow, { participants: [
385
+ return (_jsxs(_Fragment, { children: [showConnectionBanner ? (_jsx(ConnectionBanner, { state: bannerState, onRetry: live.reconnect, reconnectingMessage: labels?.connection?.reconnecting ?? "Reconnecting to live updates…", offlineMessage: labels?.connection?.offline ?? "You are offline. Messages will send when you reconnect.", connectedMessage: labels?.connection?.connected ?? "Back online. Messages syncing.", retryLabel: labels?.connection?.retry ?? "Retry", liveLabel: labels?.connection?.live ?? "Live", ariaLabels: labels?.connection?.aria })) : null, _jsx(ChatShell, { hideTitle: !showHeader, title: counterparty.name, subtitle: counterparty.subtitle, presence: _jsx(ChatPresenceRow, { participants: [
343
386
  {
344
387
  id: COUNTERPARTY_SENDER_ORG_ID,
345
388
  name: counterparty.name,
@@ -354,7 +397,7 @@ function MessengerRoomPanelContent({ room, counterparty, currentUserId, currentU
354
397
  },
355
398
  ], typingNames: isTyping ? [counterparty.name] : [], connectionState: toConnectionState(live.connectionStatus) }), actions: live.hasMore ? (_jsx("button", { type: "button", disabled: live.isLoadingHistory, onClick: () => void live.loadMore(), className: "rounded-full bg-muted px-3 py-1.5 text-xs/5 font-medium text-muted-foreground transition-[background-color,color,transform] duration-[var(--duration-standard)] ease-[var(--ease-emphasized-strong)] hover:-translate-y-px hover:bg-muted/80 hover:text-foreground disabled:pointer-events-none disabled:opacity-50 motion-reduce:transition-none motion-reduce:hover:translate-y-0", children: live.isLoadingHistory
356
399
  ? (labels?.loadingOlder ?? "Loading")
357
- : (labels?.loadOlder ?? "Load older") })) : null, className: "flex-1 rounded-none border-0 ring-0 shadow-none", composer: isReadOnly ? (_jsx("div", { className: "rounded-[1.65rem] bg-muted/60 px-4 py-3 text-sm/6 text-muted-foreground ring-1 ring-border/60", children: readOnlyMessage })) : (_jsx(ChatComposer, { roomId: roomId, value: composerValue, onValueChange: setComposerValue, onTyping: () => void live.startTyping().catch(() => undefined), onSend: async (value, attachmentAttempt) => {
400
+ : (labels?.loadOlder ?? "Load older") })) : null, className: "flex-1 rounded-none border-0 ring-0 shadow-none", composer: isReadOnly ? (_jsx("div", { className: "rounded-[1.65rem] bg-muted/60 px-4 py-3 text-sm/6 text-muted-foreground ring-1 ring-border/60", children: readOnlyMessage })) : (_jsx(ChatComposer, { textareaRef: composerInputRef, roomId: roomId, value: composerValue, onValueChange: setComposerValue, onTyping: () => void live.startTyping().catch(() => undefined), onSend: async (value, attachmentAttempt) => {
358
401
  const submittedReplyId = attachmentAttempt
359
402
  ? attachmentAttempt.replyToMessageId
360
403
  : replyingTo?.messageId;
@@ -394,7 +437,7 @@ function MessengerRoomPanelContent({ room, counterparty, currentUserId, currentU
394
437
  notice: isConnected
395
438
  ? undefined
396
439
  : (labels?.composer?.liveUpdatesPaused ??
397
- "Live updates paused. Messages still send."), isSending: isSending, placeholder: labels?.composer?.placeholder ?? "Write a message", sendLabel: labels?.composer?.send ?? "Send", sendingLabel: labels?.composer?.sending ?? "Sending", fieldLabel: labels?.composer?.field ?? "Message", maxLength: 2_000 })), children: _jsx(ChatMessageList, { messages: surfaceMessages, currentParticipantId: currentOrgId, onReply: attachmentAttemptPending
440
+ "Live updates paused. Messages still send."), isSending: isSending, placeholder: labels?.composer?.placeholder ?? "Write a message", sendLabel: labels?.composer?.send ?? "Send", sendingLabel: labels?.composer?.sending ?? "Sending", fieldLabel: labels?.composer?.field ?? "Message", maxLength: 2_000 })), children: _jsx(ChatMessageList, { messages: surfaceMessages, currentParticipantId: currentOrgId, active: active, newMessagesLabel: labels?.newMessages, onReply: attachmentAttemptPending
398
441
  ? undefined
399
442
  : (messageId) => {
400
443
  const parent = surfaceMessages.find((message) => message.id === messageId);
@@ -1 +1 @@
1
- {"version":3,"file":"room-panel.js","sourceRoot":"","sources":["../../../src/chat/messenger-screen/room-panel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"room-panel.js","sourceRoot":"","sources":["../../../src/chat/messenger-screen/room-panel.tsx"],"names":[],"mappings":";AAAA,uEAAuE;AACvE,EAAE;AACF,8EAA8E;AAC9E,uDAAuD;AACvD,uEAAuE;AACvE,kEAAkE;AAClE,wEAAwE;AACxE,0DAA0D;AAC1D,EAAE;AACF,sEAAsE;AACtE,0DAA0D;AAC1D,sDAAsD;AAEtD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,SAAS,GAKV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAEvE,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EACL,0BAA0B,EAC1B,aAAa,EACb,WAAW,EACX,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAa/B,8BAA8B;AAE9B;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,WAAW,CAAC;AA2D7D;;;;;;;GAOG;AACH,SAAS,iBAAiB,CAAC,aAA+B;IACxD,QAAQ,aAAa,EAAE,CAAC;QACtB,KAAK,gBAAgB,CAAC,SAAS;YAC7B,OAAO,WAAW,CAAC;QACrB,KAAK,gBAAgB,CAAC,WAAW,CAAC;QAClC,KAAK,gBAAgB,CAAC,UAAU,CAAC;QACjC,KAAK,gBAAgB,CAAC,YAAY;YAChC,OAAO,YAAY,CAAC;QACtB;YACE,wEAAwE;YACxE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CAA0C,QAAW;IAC7E,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC;IACzB,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,mCAAmC;AAEnC;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,EACpB,cAAc,EACd,QAAQ,GAKT;IACC,MAAM,EACJ,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,gBAAgB,EAChB,aAAa,GACd,GAAG,eAAe,EAAE,CAAC;IACtB,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,CAAC;IAC5D,MAAM,EAAE,aAAa,EAAE,GAAG,uBAAuB,EAAE,CAAC;IACpD,MAAM,EAAE,cAAc,EAAE,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAC5D,8DAA8D;IAC9D,6DAA6D;IAC7D,iEAAiE;IACjE,mEAAmE;IACnE,kBAAkB;IAClB,MAAM,IAAI,GAAG,OAAO,EAA8B,CAAC;IAEnD,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CACpC,GAAG,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EACrD,CAAC,cAAc,CAAC,CACjB,CAAC;IAEF,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CACzB,GAAG,EAAE,CAAC,CAAC;QACL,QAAQ;QACR,WAAW;QACX,YAAY;QACZ,QAAQ;QACR,OAAO;QACP,gBAAgB;QAChB,aAAa;QACb,eAAe;QACf,WAAW;QACX,gBAAgB;QAChB,gBAAgB,EAAE,aAAa;QAC/B,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;KAC3C,CAAC,EACF;QACE,QAAQ;QACR,WAAW;QACX,YAAY;QACZ,QAAQ;QACR,OAAO;QACP,gBAAgB;QAChB,aAAa;QACb,eAAe;QACf,WAAW;QACX,gBAAgB;QAChB,aAAa;QACb,IAAI;KACL,CACF,CAAC;IAEF,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,mBAAmB;AAEnB;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAA8B;IAC/D,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAEjG,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAC/B,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,EACpD,CAAC,aAAa,EAAE,eAAe,CAAC,CACjC,CAAC;IAEF,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CACL,6CAC+B,SAAS,CAAC,gBAAgB,EACvD,SAAS,EAAC,yDAAyD,YAEnE,KAAC,yBAAyB,OAAK,KAAK,EAAE,IAAI,EAAE,SAAS,GAAI,GACrD,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,QAAQ,IACP,MAAM,EAAE,IAAI,CAAC,EAAE,EACf,WAAW,EAAE,WAAW;QACxB,+DAA+D;QAC/D,+DAA+D;QAC/D,qBAAqB;QACrB,eAAe,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,EAC/D,YAAY,EAAE,YAAY;QAC1B,mEAAmE;QACnE,oEAAoE;QACpE,6CAA6C;QAC7C,QAAQ,EAAE,KAAC,6BAA6B,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,mBAAmB,GAAI,YAErF,KAAC,YAAY,IAAC,cAAc,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,YAC/C,CAAC,KAAK,EAAE,EAAE,CAAC,CACV,6CAC+B,KAAK,CAAC,gBAAgB,EACnD,SAAS,EAAC,yDAAyD,YAEnE,KAAC,yBAAyB,OAAK,KAAK,EAAE,IAAI,EAAE,KAAK,GAAI,GACjD,CACP,GACY,GACN,CACZ,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CAAC,EAAE,KAAK,EAAsB;IAClE,OAAO,CACL,cACE,IAAI,EAAC,QAAQ,eACH,MAAM,4BACO,EAAE,EACzB,SAAS,EAAC,gGAAgG,YAEzG,KAAK,IAAI,sBAAsB,GAC5B,CACP,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,EACjC,IAAI,EACJ,YAAY,EACZ,aAAa,EACb,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,0BAA0B,EAC1B,4BAA4B,EAC5B,gBAAgB,EAChB,2BAA2B,EAC3B,mBAAmB,EACnB,UAAU,EACV,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,MAAM,GAAG,IAAI,EACb,gBAAgB,EAChB,UAAU,GAAG,IAAI,EACjB,IAAI,GACmD;IACvD,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IACvB,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAA+B,IAAI,CAAC,CAAC;IACvF,MAAM,CAAC,wBAAwB,EAAE,2BAA2B,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtF,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAC9D,EAAE,CACH,CAAC;IACF,MAAM,sBAAsB,GAAG,KAAK,CAAC,WAAW,CAC9C,CAAC,gBAAwB,EAAE,MAAoC,EAAE,EAAE;QACjE,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;YAAE,OAAO;QAC5D,oBAAoB,CAAC,CAAC,OAAO,EAAE,EAAE;YAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,CAAC;YAClF,IAAI,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,eAAe,GACnB,IAAI,CAAC,MAAM,KAAK,QAAQ;QACtB,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,IAAI,oCAAoC,CAAC;QACxE,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc;YACjC,gEAAgE,CAAC,CAAC;IAExE,MAAM,gBAAgB,GAAG,MAAM,EAAE,YAAY,IAAI,YAAY,CAAC;IAC9D,MAAM,oBAAoB,GAAG,MAAM,EAAE,gBAAgB,IAAI,UAAU,CAAC;IACpE,MAAM,cAAc,GAAG,MAAM,EAAE,MAAM,IAAI,iBAAiB,CAAC;IAE3D,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CACrC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAC/D,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CACvB,CAAC;IACF,MAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,CACtC,GAAG,EAAE,CAAC;QACJ,GAAG,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9E,CAAC,CAAC,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;QACtC,iCAAiC;KAClC,EACD,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,CACpC,CAAC;IACF,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,QAAQ,CAAC;QAC9C,QAAQ,EAAE,kBAAkB;QAC5B,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,OAAQ,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACvE,OAAO,EAAE,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC;QAClD,SAAS,EAAE,MAAM;KAClB,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CACpC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,EACvE,CAAC,oBAAoB,CAAC,CACvB,CAAC;IACF,MAAM,uBAAuB,GAAG,KAAK,CAAC,MAAM,CAAU,SAAS,CAAC,CAAC;IACjE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IACE,oBAAoB,KAAK,SAAS;YAClC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;YACrC,uBAAuB,CAAC,OAAO,KAAK,oBAAoB,EACxD,CAAC;YACD,OAAO;QACT,CAAC;QACD,uBAAuB,CAAC,OAAO,GAAG,oBAAoB,CAAC;QACvD,OAAO,CAAC,IAAI,CACV,8EAA8E;YAC5E,wGAAwG,CAC3G,CAAC;IACJ,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC3B,MAAM,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAChD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAmC,CAAC;QACxD,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;YAC1C,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe;gBAAE,SAAS;YAC1E,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACvB,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CACrC,GAAG,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,0BAA0B,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EACvF,CAAC,iBAAiB,EAAE,0BAA0B,CAAC,CAChD,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,iBAAiB,IAAI,CAAC,gBAAgB,IAAI,CAAC,4BAA4B;YAAE,OAAO;QACrF,OAAO,4BAA4B,CAAC,iBAAiB,EAAE,GAAG,EAAE;YAC1D,KAAK,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;IACL,CAAC,EAAE;QACD,iBAAiB;QACjB,kBAAkB;QAClB,gBAAgB;QAChB,WAAW;QACX,4BAA4B;KAC7B,CAAC,CAAC;IAEH,oDAAoD;IAEpD,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;QACrC,QAAQ,EAAE,CAAC,uBAAuB,EAAE,YAAY,CAAC;QACjD,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC;QACjC,SAAS,EAAE,MAAM;KAClB,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAkB,GAAG,EAAE;QACvD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QACxC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC9C,KAAK,MAAM,MAAM,IAAI,WAAW,IAAI,EAAE,EAAE,CAAC;YACvC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjC,4DAA4D;YAC5D,gEAAgE;YAChE,8BAA8B;YAC9B,IAAI,MAAM,CAAC,WAAW;gBAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;IACxC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,8BAA8B;IAE9B,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,SAAS,CAAC;IACzE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAC7B,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,EACvE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAChB,CAAC;IACF,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAC5B,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,aAAa,CAAC,EAC7D,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CACtC,CAAC;IACF,MAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,CACtC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,aAAa,CAAC,EAC9D,CAAC,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,CACvC,CAAC;IAEF,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CACnC,GAAG,EAAE,CACH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACzB,MAAM,OAAO,GAAG,aAAa,CAC3B,IAAI,EACJ,MAAM,EACN,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,oBAAoB,CACrB,CAAC;QACF,OAAO,gBAAgB,CACrB,OAAO,EACP,YAAY,EACZ,YAAY,CAAC,IAAI,EACjB,eAAe,EACf,gBAAgB,EAChB,sBAAsB,CACvB,CAAC;IACJ,CAAC,CAAC,EACJ;QACE,IAAI,CAAC,QAAQ;QACb,MAAM;QACN,aAAa;QACb,YAAY;QACZ,YAAY;QACZ,oBAAoB;QACpB,YAAY,CAAC,IAAI;QACjB,eAAe;QACf,gBAAgB;QAChB,sBAAsB;KACvB,CACF,CAAC;IAEF,mFAAmF;IAEnF,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,oBAAoB,EAAE,GAAG,kBAAkB,CAC1E,IAAI,CAAC,gBAAgB,CACtB,CAAC;IAEF,6EAA6E;IAE7E,2EAA2E;IAC3E,qEAAqE;IACrE,8DAA8D;IAC9D,kEAAkE;IAClE,MAAM,eAAe,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,CAAC,MAAuC,EAAE,EAAE,CACzF,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAC5B,CAAC;IAEF,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAA2C;QAC3E,WAAW,EAAE,KAAK;QAClB,MAAM,EAAE,EAAE;KACX,CAAC,CAAC;IACH,sEAAsE;IACtE,qEAAqE;IACrE,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAgB,IAAI,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACvC,yEAAyE;IACzE,6EAA6E;IAC7E,oFAAoF;IACpF,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,WAAW,GAAG,MAAM,CAAC;QAC3B,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,kBAAkB,CAAC,OAAO,GAAG,IAAI,CAAC;YAClC,yEAAyE;YACzE,wEAAwE;YACxE,aAAa,CAAC,OAAO,GAAG,EAAE,GAAG,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;YACzE,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC;QACnC,MAAM,YAAY,GAAG,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QACtD,MAAM,YAAY,GAAG,WAAW,IAAI,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC;QACrE,MAAM,UAAU,GAAG,CAAC,YAAY,IAAI,YAAY,CAAC,IAAI,MAAM,CAAC;QAC5D,IAAI,CAAC,UAAU;YAAE,OAAO;QACxB,IAAI,eAAe,CAAC,OAAO,KAAK,MAAM;YAAE,OAAO;QAC/C,eAAe,CAAC,OAAO,GAAG,MAAM,CAAC;QACjC,kBAAkB,CAAC,OAAO,GAAG,KAAK,CAAC;QACnC,mEAAmE;QACnE,4DAA4D;QAC5D,oEAAoE;QACpE,iDAAiD;QACjD,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9C,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC3B,kEAAkE;QAClE,oEAAoE;QACpE,+DAA+D;QAC/D,gEAAgE;QAChE,gEAAgE;QAChE,uDAAuD;QACvD,KAAK,eAAe,EAAE,CAAC,MAAM,CAAC;aAC3B,IAAI,CAAC,GAAG,EAAE;YACT,oEAAoE;YACpE,+CAA+C;YAC/C,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,IAAI,kBAAkB,CAAC,OAAO,CAAC;YACpE,aAAa,CAAC,OAAO,GAAG,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YACzF,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,eAAe,CAAC,OAAO,KAAK,MAAM;oBAAE,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;gBACvE,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;YACpC,CAAC;YACD,KAAK,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;YACrE,oBAAoB,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,YAAY,KAAK,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBAC5C,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YACzC,CAAC;YACD,KAAK,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;YACrE,oBAAoB,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,eAAe,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;gBACvC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;YACjC,CAAC;QACH,CAAC,CAAC,CAAC;IACP,CAAC,EAAE;QACD,MAAM;QACN,MAAM;QACN,UAAU;QACV,WAAW;QACX,aAAa;QACb,eAAe;QACf,oBAAoB;KACrB,CAAC,CAAC;IAEH,6EAA6E;IAC7E,yEAAyE;IACzE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC1B,OAAO,GAAG,EAAE;YACV,IAAI,iBAAiB,EAAE,KAAK,MAAM;gBAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAErB,oCAAoC;IAEpC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IACpE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,WAAW,EAAE,CAAC;YAChB,wDAAwD;YACxD,0DAA0D;YAC1D,gBAAgB;YAChB,KAAK,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;YACrE,IAAI,gBAAgB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACrC,KAAK,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC;YAC5E,CAAC;YACD,gBAAgB,EAAE,EAAE,CAAC;QACvB,CAAC;IACH,CAAC,EAAE;QACD,WAAW;QACX,WAAW;QACX,aAAa;QACb,gBAAgB;QAChB,IAAI,CAAC,OAAO;QACZ,kBAAkB;QAClB,gBAAgB;KACjB,CAAC,CAAC;IAEH,kBAAkB;IAElB,OAAO,CACL,8BACG,oBAAoB,CAAC,CAAC,CAAC,CACtB,KAAC,gBAAgB,IACf,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,IAAI,CAAC,SAAS,EACvB,mBAAmB,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,IAAI,+BAA+B,EACxF,cAAc,EACZ,MAAM,EAAE,UAAU,EAAE,OAAO,IAAI,yDAAyD,EAE1F,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,IAAI,gCAAgC,EACnF,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,IAAI,OAAO,EAChD,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,IAAI,MAAM,EAC7C,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,GACpC,CACH,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,SAAS,IACR,SAAS,EAAE,CAAC,UAAU,EACtB,KAAK,EAAE,YAAY,CAAC,IAAI,EACxB,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAC/B,QAAQ,EACN,KAAC,eAAe,IACd,YAAY,EAAE;wBACZ;4BACE,EAAE,EAAE,0BAA0B;4BAC9B,IAAI,EAAE,YAAY,CAAC,IAAI;4BACvB,QAAQ,EAAE,YAAY,CAAC,QAAQ;4BAC/B,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;yBAClD;wBACD;4BACE,EAAE,EAAE,YAAY;4BAChB,IAAI,EAAE,eAAe;4BACrB,QAAQ,EAAE,WAAW,CAAC,eAAe,CAAC;4BACtC,MAAM,EAAE,QAAQ;yBACjB;qBACF,EACD,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAChD,eAAe,EAAE,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,GACzD,EAEJ,OAAO,EACL,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CACb,iBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,EACnC,SAAS,EAAC,qXAAqX,YAE9X,IAAI,CAAC,gBAAgB;wBACpB,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,IAAI,SAAS,CAAC;wBACrC,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,IAAI,YAAY,CAAC,GAChC,CACV,CAAC,CAAC,CAAC,IAAI,EAEV,SAAS,EAAC,iDAAiD,EAC3D,QAAQ,EACN,UAAU,CAAC,CAAC,CAAC,CACX,cAAK,SAAS,EAAC,+FAA+F,YAC3G,eAAe,GACZ,CACP,CAAC,CAAC,CAAC,CACF,KAAC,YAAY,IACX,WAAW,EAAE,gBAAgB,EAC7B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,gBAAgB,EAC/B,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,EAC9D,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE;wBACzC,MAAM,gBAAgB,GAAG,iBAAiB;4BACxC,CAAC,CAAC,iBAAiB,CAAC,gBAAgB;4BACpC,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC;wBAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CACnC,KAAK,EACL,SAAS,EACT,gBAAgB,IAAI,iBAAiB,EAAE,gBAAgB;4BACrD,CAAC,CAAC;gCACE,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gCACnE,GAAG,CAAC,iBAAiB,EAAE,gBAAgB;oCACrC,CAAC,CAAC,EAAE,WAAW,EAAE,iBAAiB,CAAC,gBAAgB,EAAE;oCACrD,CAAC,CAAC,EAAE,CAAC;6BACR;4BACH,CAAC,CAAC,SAAS,CACd,CAAC;wBACF,IAAI,iBAAiB,EAAE,CAAC;4BACtB,sBAAsB,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;wBACrE,CAAC;6BAAM,CAAC;4BACN,aAAa,CAAC,CAAC,OAAO,EAAE,EAAE,CACxB,OAAO,EAAE,SAAS,KAAK,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CACzD,CAAC;wBACJ,CAAC;wBACD,OAAO,MAAM,CAAC;oBAChB,CAAC,EACD,iBAAiB,EAAE,iBAAiB,EACpC,sBAAsB,EAAE,2BAA2B,EACnD,kBAAkB,EAAE,CAAC,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,EAAE,EAAE;wBAC7D,oBAAoB,CAAC,CAAC,OAAO,EAAE,EAAE,CAC/B,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,CACrE,CAAC;wBACF,aAAa,CAAC,CAAC,OAAO,EAAE,EAAE,CACxB,OAAO,EAAE,SAAS,KAAK,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CACzD,CAAC;oBACJ,CAAC,EACD,iBAAiB,EAAE,iBAAiB,EACpC,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAC9C,2BAA2B,EACzB,2BAA2B;wBACzB,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,2BAA2B,CAAC,SAAS,CAAC,MAAM,CAAC;wBAC9D,CAAC,CAAC,SAAS,EAEf,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EACxC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAC7C,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAC/C,kBAAkB,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EACnD,uBAAuB,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAC7D,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;oBACrC,0DAA0D;oBAC1D,4DAA4D;oBAC5D,6DAA6D;oBAC7D,+DAA+D;oBAC/D,yDAAyD;oBACzD,6DAA6D;oBAC7D,iEAAiE;oBACjE,QAAQ,EAAE,IAAI,CAAC,gBAAgB;oBAC/B,+DAA+D;oBAC/D,yDAAyD;oBACzD,6DAA6D;oBAC7D,4DAA4D;oBAC5D,MAAM,EACJ,WAAW;wBACT,CAAC,CAAC,SAAS;wBACX,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,iBAAiB;4BACpC,2CAA2C,CAAC,EAElD,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,IAAI,iBAAiB,EAC/D,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,IAAI,MAAM,EAC3C,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,IAAI,SAAS,EACpD,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,IAAI,SAAS,EAChD,SAAS,EAAE,KAAK,GAChB,CACH,YAGH,KAAC,eAAe,IACd,QAAQ,EAAE,eAAe,EACzB,oBAAoB,EAAE,YAAY,EAClC,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,MAAM,EAAE,WAAW,EACrC,OAAO,EACL,wBAAwB;wBACtB,CAAC,CAAC,SAAS;wBACX,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE;4BACZ,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;4BAC3E,IAAI,CAAC,MAAM;gCAAE,OAAO;4BACpB,aAAa,CAAC;gCACZ,SAAS,EAAE,MAAM,CAAC,EAAE;gCACpB,UAAU,EAAE,MAAM,CAAC,UAAU;gCAC7B,OAAO,EACL,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;gCAC1E,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;6BACpC,CAAC,CAAC;wBACL,CAAC,EAEP,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EACnC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAChD,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAC7C,kBAAkB,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EACnD,uBAAuB,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAC7D,uBAAuB,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAC7D,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EACrD,gBAAgB,EACd,gBAAgB,IAAI,iBAAiB;wBACnC,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,CAAC;wBACtE,CAAC,CAAC,SAAS;oBAEf,2DAA2D;oBAC3D,mDAAmD;oBACnD,4BAA4B;oBAC5B,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE;wBACrB,KAAK,IAAI;6BACN,YAAY,CAAC,SAAS,CAAC;6BACvB,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;6BAC3D,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;oBAC5B,CAAC,EACD,UAAU,EACR,eAAK,SAAS,EAAC,kCAAkC,aAC/C,YAAG,SAAS,EAAC,qDAAqD,YAC/D,MAAM,EAAE,WAAW,EAAE,KAAK,IAAI,iBAAiB,GAC9C,EACJ,YAAG,SAAS,EAAC,oDAAoD,YAC9D,MAAM,EAAE,WAAW,EAAE,WAAW;oCAC/B,qEAAqE,GACrE,IACA,EAER,eAAe,EACb,QAAQ,CAAC,CAAC,CAAC,CACT,cAAK,SAAS,EAAC,4EAA4E,YACxF,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC,GAClD,CACP,CAAC,CAAC,CAAC,IAAI,GAEV,GACQ,IACX,CACJ,CAAC;AACJ,CAAC"}
@@ -128,6 +128,8 @@ export interface MessengerScreenLabels {
128
128
  /** Supports one `{{name}}` placeholder. Defaults to `"{{name}} typing"`. */
129
129
  typing?: string;
130
130
  loadOlder?: string;
131
+ /** Label of the jump-to-newest button shown when messages arrive while reading history. Defaults to `"New messages"`. */
132
+ newMessages?: string;
131
133
  loadingOlder?: string;
132
134
  /**
133
135
  * Shown in the room panel while the current user is not yet known
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/chat/messenger-screen/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/chat/messenger-screen/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /** Distance from the bottom, in px, still treated as "at the bottom". */
2
+ export declare const STICK_TO_BOTTOM_THRESHOLD_PX = 64;
3
+ export interface UseStickToBottomOptions {
4
+ scrollerRef: React.RefObject<HTMLElement | null>;
5
+ /** The element that wraps the messages; its growth (typing indicator, late images) keeps a pinned list pinned. */
6
+ contentRef: React.RefObject<HTMLElement | null>;
7
+ /** Message ids, oldest first. Identity changes (prepend, append, a different thread) are derived from this. */
8
+ ids: readonly string[];
9
+ /** Whether the newest message was sent by the viewer (always scrolls into view). */
10
+ lastIsOwn: boolean;
11
+ /** False while the list is hidden (closed pane). false to true scrolls to the newest message. */
12
+ active?: boolean;
13
+ /** Whether the scroller is mounted (the list renders an empty state without one). */
14
+ hasMessages: boolean;
15
+ }
16
+ /**
17
+ * Scroll behaviour for a chat log (CEL-2165). Always instant, never smooth, so
18
+ * it is reduced-motion safe by construction.
19
+ *
20
+ * The hook keeps an INTENT ("the viewer wants the newest message") rather than
21
+ * re-deriving it from scroll events. Only a genuine user action clears it: a
22
+ * scroll event that follows a wheel, touch, key or pointer input and ends more
23
+ * than `STICK_TO_BOTTOM_THRESHOLD_PX` from the bottom. Scroll events caused by
24
+ * our own writes or by layout (a pane settling to its final height) never do,
25
+ * so a list revealed while its container is still resizing ends up at the bottom.
26
+ *
27
+ * - Opens at the newest message, again whenever `active` turns true, and when
28
+ * the list is reused for a different thread (neither end id was in the
29
+ * previous list).
30
+ * - Appended messages follow the intent (or the viewer's own send); otherwise
31
+ * `hasNewBelow` turns true instead of moving the viewport.
32
+ * - Container or content height changes keep an intent-holding list at the bottom.
33
+ * - A scroll that settles within the threshold of the bottom re-pins, whatever
34
+ * caused it (a fling that lands at the bottom follows again).
35
+ * - `release()` drops the intent for code that scrolls the list itself (for
36
+ * example jumping to a quoted message); user input does this automatically.
37
+ * - Prepended older messages keep the visible position. The scroller must set
38
+ * `overflow-anchor: none` so browser anchoring does not also compensate.
39
+ */
40
+ export declare function useStickToBottom({ scrollerRef, contentRef, ids, lastIsOwn, active, hasMessages, }: UseStickToBottomOptions): {
41
+ hasNewBelow: boolean;
42
+ scrollToBottom: () => void;
43
+ release: () => void;
44
+ };
45
+ //# sourceMappingURL=use-stick-to-bottom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-stick-to-bottom.d.ts","sourceRoot":"","sources":["../../src/chat/use-stick-to-bottom.ts"],"names":[],"mappings":"AAEA,yEAAyE;AACzE,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAY/C,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACjD,kHAAkH;IAClH,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAChD,+GAA+G;IAC/G,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IACvB,oFAAoF;IACpF,SAAS,EAAE,OAAO,CAAC;IACnB,iGAAiG;IACjG,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qFAAqF;IACrF,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,WAAW,EACX,UAAU,EACV,GAAG,EACH,SAAS,EACT,MAAa,EACb,WAAW,GACZ,EAAE,uBAAuB;;;;EAmJzB"}
@@ -0,0 +1,191 @@
1
+ import { useCallback, useEffect, useLayoutEffect, useRef, useState } from "react";
2
+ /** Distance from the bottom, in px, still treated as "at the bottom". */
3
+ export const STICK_TO_BOTTOM_THRESHOLD_PX = 64;
4
+ /**
5
+ * A scroll event this soon after a wheel or key event is the user's. Wheel and
6
+ * key input arrive continuously while the user scrolls (including OS wheel
7
+ * momentum), so a short window is enough; longer would let a layout-caused
8
+ * scroll event right after the last input unpin a viewer who has stopped.
9
+ */
10
+ const USER_INPUT_WINDOW_MS = 300;
11
+ /** Touch fling momentum keeps scrolling after the finger lifts, with no input events. */
12
+ const TOUCH_MOMENTUM_WINDOW_MS = 1000;
13
+ /**
14
+ * Scroll behaviour for a chat log (CEL-2165). Always instant, never smooth, so
15
+ * it is reduced-motion safe by construction.
16
+ *
17
+ * The hook keeps an INTENT ("the viewer wants the newest message") rather than
18
+ * re-deriving it from scroll events. Only a genuine user action clears it: a
19
+ * scroll event that follows a wheel, touch, key or pointer input and ends more
20
+ * than `STICK_TO_BOTTOM_THRESHOLD_PX` from the bottom. Scroll events caused by
21
+ * our own writes or by layout (a pane settling to its final height) never do,
22
+ * so a list revealed while its container is still resizing ends up at the bottom.
23
+ *
24
+ * - Opens at the newest message, again whenever `active` turns true, and when
25
+ * the list is reused for a different thread (neither end id was in the
26
+ * previous list).
27
+ * - Appended messages follow the intent (or the viewer's own send); otherwise
28
+ * `hasNewBelow` turns true instead of moving the viewport.
29
+ * - Container or content height changes keep an intent-holding list at the bottom.
30
+ * - A scroll that settles within the threshold of the bottom re-pins, whatever
31
+ * caused it (a fling that lands at the bottom follows again).
32
+ * - `release()` drops the intent for code that scrolls the list itself (for
33
+ * example jumping to a quoted message); user input does this automatically.
34
+ * - Prepended older messages keep the visible position. The scroller must set
35
+ * `overflow-anchor: none` so browser anchoring does not also compensate.
36
+ */
37
+ export function useStickToBottom({ scrollerRef, contentRef, ids, lastIsOwn, active = true, hasMessages, }) {
38
+ const wantBottomRef = useRef(true);
39
+ const prevRef = useRef(null);
40
+ const heightRef = useRef(0);
41
+ const lastWrittenRef = useRef(null);
42
+ const userUntilRef = useRef(Number.NEGATIVE_INFINITY);
43
+ const pointerActiveRef = useRef(false);
44
+ const pendingBottomRef = useRef(false);
45
+ const [hasNewBelow, setHasNewBelow] = useState(false);
46
+ const firstId = ids[0];
47
+ const lastId = ids[ids.length - 1];
48
+ const writeBottom = useCallback(() => {
49
+ const el = scrollerRef.current;
50
+ if (!el)
51
+ return;
52
+ el.scrollTop = el.scrollHeight;
53
+ lastWrittenRef.current = el.scrollTop;
54
+ heightRef.current = el.scrollHeight;
55
+ }, [scrollerRef]);
56
+ const scrollToBottom = useCallback(() => {
57
+ if (!scrollerRef.current)
58
+ return;
59
+ wantBottomRef.current = true;
60
+ writeBottom();
61
+ setHasNewBelow(false);
62
+ }, [scrollerRef, writeBottom]);
63
+ // Messages changed.
64
+ useLayoutEffect(() => {
65
+ const el = scrollerRef.current;
66
+ if (!el)
67
+ return;
68
+ const prev = prevRef.current;
69
+ const sameThread = prev !== null &&
70
+ ((firstId !== undefined && prev.ids.has(firstId)) ||
71
+ (lastId !== undefined && prev.ids.has(lastId)));
72
+ if (!prev || !sameThread) {
73
+ scrollToBottom();
74
+ }
75
+ else if (prev.lastId !== lastId) {
76
+ if (wantBottomRef.current || lastIsOwn)
77
+ scrollToBottom();
78
+ else
79
+ setHasNewBelow(true);
80
+ }
81
+ else if (prev.firstId !== firstId && !wantBottomRef.current) {
82
+ el.scrollTop += el.scrollHeight - heightRef.current;
83
+ lastWrittenRef.current = el.scrollTop;
84
+ }
85
+ else if (wantBottomRef.current) {
86
+ writeBottom();
87
+ }
88
+ heightRef.current = el.scrollHeight;
89
+ prevRef.current = { ids: new Set(ids), firstId, lastId };
90
+ }, [ids, firstId, lastId, lastIsOwn, hasMessages, scrollerRef, scrollToBottom, writeBottom]);
91
+ // Hidden to visible: jump to the newest message. A hidden pane has no
92
+ // layout, so when there is nothing to scroll yet the ResizeObserver below
93
+ // finishes the job once it is measurable.
94
+ const wasActiveRef = useRef(active);
95
+ useLayoutEffect(() => {
96
+ const became = active && !wasActiveRef.current;
97
+ wasActiveRef.current = active;
98
+ if (!became)
99
+ return;
100
+ wantBottomRef.current = true;
101
+ const el = scrollerRef.current;
102
+ if (el && el.clientHeight > 0) {
103
+ scrollToBottom();
104
+ pendingBottomRef.current = false;
105
+ }
106
+ else {
107
+ pendingBottomRef.current = true;
108
+ }
109
+ }, [active, hasMessages, scrollerRef, scrollToBottom]);
110
+ // User input, scroll position and size observation.
111
+ useEffect(() => {
112
+ const el = scrollerRef.current;
113
+ if (!el)
114
+ return;
115
+ const markUser = () => {
116
+ userUntilRef.current = performance.now() + USER_INPUT_WINDOW_MS;
117
+ };
118
+ const markTouch = () => {
119
+ userUntilRef.current = performance.now() + TOUCH_MOMENTUM_WINDOW_MS;
120
+ };
121
+ // Any press inside the scroller (scrollbar, or a child such as a quote
122
+ // button) is user input until the pointer is released, however long a drag lasts.
123
+ const onPointerDown = () => {
124
+ pointerActiveRef.current = true;
125
+ };
126
+ const onPointerEnd = () => {
127
+ if (!pointerActiveRef.current)
128
+ return;
129
+ pointerActiveRef.current = false;
130
+ markUser();
131
+ };
132
+ const onScroll = () => {
133
+ const distance = el.scrollHeight - el.scrollTop - el.clientHeight;
134
+ const programmatic = lastWrittenRef.current === el.scrollTop;
135
+ const user = pointerActiveRef.current || performance.now() < userUntilRef.current;
136
+ if (distance <= STICK_TO_BOTTOM_THRESHOLD_PX) {
137
+ wantBottomRef.current = true;
138
+ setHasNewBelow(false);
139
+ }
140
+ else if (user && !programmatic) {
141
+ wantBottomRef.current = false;
142
+ }
143
+ lastWrittenRef.current = null;
144
+ heightRef.current = el.scrollHeight;
145
+ };
146
+ for (const name of ["wheel", "keydown"]) {
147
+ el.addEventListener(name, markUser, { passive: true });
148
+ }
149
+ for (const name of ["touchstart", "touchmove"]) {
150
+ el.addEventListener(name, markTouch, { passive: true });
151
+ }
152
+ el.addEventListener("pointerdown", onPointerDown, { passive: true });
153
+ window.addEventListener("pointerup", onPointerEnd);
154
+ window.addEventListener("pointercancel", onPointerEnd);
155
+ el.addEventListener("scroll", onScroll, { passive: true });
156
+ let observer;
157
+ if (typeof ResizeObserver !== "undefined") {
158
+ observer = new ResizeObserver(() => {
159
+ if (el.clientHeight === 0)
160
+ return;
161
+ if (pendingBottomRef.current) {
162
+ pendingBottomRef.current = false;
163
+ scrollToBottom();
164
+ }
165
+ else if (wantBottomRef.current) {
166
+ writeBottom();
167
+ }
168
+ heightRef.current = el.scrollHeight;
169
+ });
170
+ observer.observe(el);
171
+ if (contentRef.current)
172
+ observer.observe(contentRef.current);
173
+ }
174
+ return () => {
175
+ for (const name of ["wheel", "keydown"])
176
+ el.removeEventListener(name, markUser);
177
+ for (const name of ["touchstart", "touchmove"])
178
+ el.removeEventListener(name, markTouch);
179
+ el.removeEventListener("pointerdown", onPointerDown);
180
+ window.removeEventListener("pointerup", onPointerEnd);
181
+ window.removeEventListener("pointercancel", onPointerEnd);
182
+ el.removeEventListener("scroll", onScroll);
183
+ observer?.disconnect();
184
+ };
185
+ }, [scrollerRef, contentRef, scrollToBottom, writeBottom, hasMessages]);
186
+ const release = useCallback(() => {
187
+ wantBottomRef.current = false;
188
+ }, []);
189
+ return { hasNewBelow, scrollToBottom, release };
190
+ }
191
+ //# sourceMappingURL=use-stick-to-bottom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-stick-to-bottom.js","sourceRoot":"","sources":["../../src/chat/use-stick-to-bottom.ts"],"names":[],"mappings":"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"}
@@ -43,4 +43,17 @@ export interface UsePresenceResponse {
43
43
  * @see Spec §4.3, Arch §2.6
44
44
  */
45
45
  export declare function usePresence(): UsePresenceResponse;
46
+ /**
47
+ * Like {@link usePresence}, but the local user is in presence ONLY while
48
+ * `enabled` is true AND the room is attached: enters when both hold, leaves when
49
+ * either stops holding or on unmount. For a panel that stays mounted while
50
+ * hidden (an embedded pane) so the counterparty never sees someone present who
51
+ * is not looking. The SDK's own auto-enter cannot do this: it does not re-enter
52
+ * after a leave, so this hook drives enter and leave itself.
53
+ *
54
+ * `presence.enter` throws unless the room is attaching or attached, so the
55
+ * effect is keyed on the room status instead of retrying: a room that attaches
56
+ * late (a re-authorise, a detach and re-attach) re-runs the effect and enters.
57
+ */
58
+ export declare function useGatedPresence(enabled: boolean): UsePresenceResponse;
46
59
  //# sourceMappingURL=use-presence.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-presence.d.ts","sourceRoot":"","sources":["../../src/chat-ably/use-presence.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,cAAc,EAAE,cAAc,EAAE,CAAC;IACjC;;;;;;;;OAQG;IACH,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C;;;;OAIG;IACH,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,IAAI,mBAAmB,CAYjD"}
1
+ {"version":3,"file":"use-presence.d.ts","sourceRoot":"","sources":["../../src/chat-ably/use-presence.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI/D;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,cAAc,EAAE,cAAc,EAAE,CAAC;IACjC;;;;;;;;OAQG;IACH,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C;;;;OAIG;IACH,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,IAAI,mBAAmB,CAYjD;AAKD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,mBAAmB,CAkBtE"}
@@ -9,6 +9,7 @@
9
9
  // the public surface minimal. Add them here if a future consumer needs
10
10
  // them (e.g. live status updates without re-entering).
11
11
  import { usePresence as useSdkPresence, usePresenceListener } from "@ably/chat/react";
12
+ import * as React from "react";
12
13
  /**
13
14
  * `usePresence()` — composes `usePresence` (write) +
14
15
  * `usePresenceListener` (read) from `@ably/chat/react`. MUST be called
@@ -34,4 +35,38 @@ export function usePresence() {
34
35
  leave,
35
36
  };
36
37
  }
38
+ /** `RoomStatus.Attached`, compared as a string so this module does not import the enum. */
39
+ const ROOM_ATTACHED = "attached";
40
+ /**
41
+ * Like {@link usePresence}, but the local user is in presence ONLY while
42
+ * `enabled` is true AND the room is attached: enters when both hold, leaves when
43
+ * either stops holding or on unmount. For a panel that stays mounted while
44
+ * hidden (an embedded pane) so the counterparty never sees someone present who
45
+ * is not looking. The SDK's own auto-enter cannot do this: it does not re-enter
46
+ * after a leave, so this hook drives enter and leave itself.
47
+ *
48
+ * `presence.enter` throws unless the room is attaching or attached, so the
49
+ * effect is keyed on the room status instead of retrying: a room that attaches
50
+ * late (a re-authorise, a detach and re-attach) re-runs the effect and enters.
51
+ */
52
+ export function useGatedPresence(enabled) {
53
+ const { enter, leave, roomStatus } = useSdkPresence({ autoEnterLeave: false });
54
+ const { presenceData } = usePresenceListener();
55
+ const enterRef = React.useRef(enter);
56
+ const leaveRef = React.useRef(leave);
57
+ React.useEffect(() => {
58
+ enterRef.current = enter;
59
+ leaveRef.current = leave;
60
+ });
61
+ const attached = roomStatus === ROOM_ATTACHED;
62
+ React.useEffect(() => {
63
+ if (!enabled || !attached)
64
+ return;
65
+ void enterRef.current().catch(() => undefined);
66
+ return () => {
67
+ void leaveRef.current().catch(() => undefined);
68
+ };
69
+ }, [enabled, attached]);
70
+ return { presentMembers: presenceData, enter, leave };
71
+ }
37
72
  //# sourceMappingURL=use-presence.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-presence.js","sourceRoot":"","sources":["../../src/chat-ably/use-presence.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAC1E,qEAAqE;AACrE,uEAAuE;AACvE,4EAA4E;AAC5E,2EAA2E;AAC3E,uEAAuE;AACvE,uDAAuD;AAEvD,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAkCtF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW;IACzB,sEAAsE;IACtE,oEAAoE;IACpE,yDAAyD;IACzD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,cAAc,EAAE,CAAC;IAC1C,MAAM,EAAE,YAAY,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAE/C,OAAO;QACL,cAAc,EAAE,YAAY;QAC5B,KAAK;QACL,KAAK;KACN,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"use-presence.js","sourceRoot":"","sources":["../../src/chat-ably/use-presence.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAC1E,qEAAqE;AACrE,uEAAuE;AACvE,4EAA4E;AAC5E,2EAA2E;AAC3E,uEAAuE;AACvE,uDAAuD;AAGvD,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiC/B;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW;IACzB,sEAAsE;IACtE,oEAAoE;IACpE,yDAAyD;IACzD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,cAAc,EAAE,CAAC;IAC1C,MAAM,EAAE,YAAY,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAE/C,OAAO;QACL,cAAc,EAAE,YAAY;QAC5B,KAAK;QACL,KAAK;KACN,CAAC;AACJ,CAAC;AAED,2FAA2F;AAC3F,MAAM,aAAa,GAAG,UAAU,CAAC;AAEjC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/E,MAAM,EAAE,YAAY,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;QACzB,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAI,UAAqB,KAAK,aAAa,CAAC;IAC1D,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;YAAE,OAAO;QAClC,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC/C,OAAO,GAAG,EAAE;YACV,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxB,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACxD,CAAC"}