{"version":3,"file":"chat.js","names":["define","_exports","_rest","Object","defineProperty","value","default","ChatMessage","pathFor","store","type","findArgs","targetMessageId","channelId","path","pageSize","messageId","direction","apiNameFor","resource","map","this","route","_component","_tracking","_helper","_object","_didInsert","_routing","_runloop","_service","_emptyState","_filterInput","_debounce","_environment","_truthHelpers","_discourseI18n","_list","_newMessage","_chatChannelCard","_component2","_templateFactory","ARCHIVED","TABS","BrowseChannels","dt7948","g","prototype","service","chatApi","i","modal","siteSettings","tracked","filter","currentTab","args","channelsCollection","channels","status","n","cached","tabs","chat_allow_archiving_channels","item","showChatNewMessageModal","show","action","setFilter","event","target","debouncedLoad","INPUT_DELAY","load","limit","focusFilterInput","input","schedule","focus","setComponentTemplate","createTemplateFactory","id","block","moduleName","scope","concat","LinkTo","eq","i18n","hash","isStrictMode","_template","_concatClass","_dIcon","_replaceEmoji","_chatUserAvatar","ChatChannelIcon","firstUser","channel","chatable","users","groupDirectMessage","isDirectMessageChannel","group","channelColorStyle","trustHTML","color","isThreadsList","thread","categoryChannelIcon","emoji","directChannelIcon","membershipsCount","_pluginOutlet","_userStatusMessage","_lazyHash","_chatChannelUnreadIndicator","ChatChannelName","currentUser","unreadIndicator","prefersName","enable_names","display_name_on_posts","prioritize_username_in_ux","directMessageTitle","length","name","username","user","join","showUserStatus","channelTitle","displayTitle","showPluginOutlet","get","_channelIcon","_channelName","_templateOnly","ChatChannelTitle","undefined","_modifier","_dButton","_chatChannelRow","_chatZero","ChannelsListDirect","chat","chatChannelsManager","site","inSidebar","createDirectMessageChannelLabel","canCreateDirectMessageChannel","showDirectMessageChannels","directMessageChannelsEmpty","userCanDirectMessage","directMessageChannels","channelList","truncatedUnstarredDirectMessageChannels","truncatedDirectMessageChannelsByActivity","toggleChannelSection","section","toggleSection","openNewMessageModal","and","or","not","on","fn","ChannelsListPublic","chatTrackingStateManager","router","hasUnreadThreads","shouldShowMyThreads","unstarredPublicMessageChannelsByActivity","allPublicChannelsByActivity","openBrowseChannels","transitionTo","ChannelsListStarred","starredChannels","starredChannelsByActivity","_channelsListDirect","_channelsListPublic","ChannelsList","_utils","_ajaxError","_getUrl","ChatChannelArchiveStatus","shouldRender","admin","isPresent","archive","channelArchiveFailedMessage","translationKey","topicId","completed","messages","total","totalMessages","topic_url","topicUrl","channelArchiveCompletedMessage","retryArchive","createChannelArchive","catch","popupAjaxError","_toggleChannelMembershipButton","gt","_comboBoxHeader","_channelTitle","ChatChannelChooserHeader","_selectKitRow","ChatChannelChooserRow","c","classNames","_comboBox","_selectKit","_chatChannelChooserHeader","_chatChannelChooserRow","ChatChannelChooser","nameProperty","modifyComponentForRow","pluginApiIdentifiers","selectKitOptions","headerComponent","_closeOnEscape","_ajax","_autoFocus","ChatChannelFilter","capabilities","loadingSlider","channelFilterResults","currentChannelFilter","currentChannelFilterResult","currentChannelFilterResultIndex","noResults","currentFilterResultPosition","clearInput","navigateToPreviousResult","newIndex","navigateToResult","navigateToNextResult","result","isIOS","document","activeElement","blur","onLoadTargetMessageId","clearFilteringState","loadSearchResults","isBlank","cancel","performSearch","searchRequest","abort","debouncedSearch","query","transitionStarted","ajax","data","channel_id","exclude_threads","sort","response","error","transitionEnded","ChatChannelLeaveBtn","desktopView","leaveChatTitleKey","ChatChannelMetadata","lastMessageFormattedDate","createdAt","lastMessage","lastMessageDate","showThreadUnreadDate","lastUnreadThreadDate","moment","calendar","sameDay","lastDay","lastWeek","sameElse","ChatChannelPreviewCard","showJoinButton","isOpen","canJoin","hasDescription","isEmpty","description","_willDestroy","_emberModifier","_decorators","_chatChannelMetadata","ChatChannelRow","isAtThreshold","shouldRemoveChannel","showRemoveButton","swipableRow","shouldReset","diff","rowStyle","registerSwipableRow","modifier","element","onReset","handler","addEventListener","once","removeEventListener","onRemoveChannel","unfollowChannel","classList","add","handleSwipe","onSwipeStart","passive","onSwipe","onSwipeEnd","_initialX","changedTouches","screenX","bind","threshold","window","innerWidth","touchX","shouldHandleSwipe","touch","leaveDirectMessageLabel","leaveChannelLabel","channelHasUnread","tracking","unreadCount","unreadThreadsCountSinceLastViewed","shouldRenderLastMessage","mobileView","firstDirectMessageUser","startTrackingStatus","statusManager","trackStatus","stopTrackingStatus","_dropdownMenu","_chatChannelSidebarContextNotificationSubmenu","ChatChannelSidebarContextMenu","menu","isTogglingStarred","currentUserMembership","starIcon","starred","starLabel","leaveLabel","toggleStarred","previousValue","newValue","updateCurrentUserChannelMembership","close","err","leaveChannel","custom_fields","last_chat_channel_id","remove","publicMessageChannels","routeModels","navigateToSettings","openNotificationSettings","_actionParam","identifier","component","modalForMobile","placement","onClose","ChatChannelSidebarContextNotificationSubmenu","isItemSelected","muted","notificationLevel","changePushNotifications","setting","updateCurrentUserChannelNotificationsSettings","notification_level","membership","toggleMuteChannel","_chatChannel","_chatChannelArchiveStatus","ChatChannelStatus","LONG_FORMAT","SHORT_FORMAT","VALID_FORMATS","format","includes","channelStatusIcon","CHANNEL_STATUSES","open","channelStatusMessage","longStatusMessage","shortStatusMessage","archived","closed","readOnly","OldChatChannelTitle","ChatChannelUnreadIndicator","showUnreadIndicator","mentionCount","publicUrgentCount","watchedThreadsUnreadCount","directUrgentCount","urgentCount","isUrgent","urgentBadgeCount","totalCount","_owner","_didUpdate","_url","_chatChannelStatus","_firstVisibleMessageId","_chatChannelSubscriptionManager","_chatConstants","_chatMessagesLoader","_chatPaneState","_checkMessageVisibility","_datesSeparatorsPositioner","_extractCurrentTopicInfo","_scrollHelpers","_chatMessage","_channel","_scrollToBottomArrow","_selectionManager","_chatChannelFilter","_chatChannelPreviewCard","_chatMentionWarnings","_chatMessage2","_chatMessagesContainer","_chatMessagesScroller","_chatNotices","_chatSkeleton","_chatUploadDropZone","ChatChannel","chatDraftsManager","chatStateManager","chatChannelScrollPositions","composer","pane","dialog","atBottom","uploadDropZone","isScrolling","scroller","paneState","getOwner","contextKey","pendingContextKey","onUserPresent","debouncedUpdateLastReadMessage","_mentionWarningsSeen","_unreachableGroupMentions","_overMembersLimitGroupMentions","registerScroller","messagesLoader","messagesManager","hasSavedScrollPosition","teardown","cancelHandlers","subscriptionManager","updateLastReadMessage","_performSearch","didResizePane","debounceFillPaneAttempt","apply","updatePendingContentFromScrollerPosition","fetchedOnce","canLoadMoreFuture","setup","clear","isFollowing","follow","draft","createDraftMessage","loadMessages","updateLastViewedAt","_element","onNewMessage","debounceHighlightOrFetchMessage","fetchMessages","fetch_from_last_read","message","handleIncomingMessage","shouldAutoScroll","userIsPresent","addMessage","addMessages","onAutoAdd","loading","processMessages","target_message_id","scrollToMessageId","highlight","position","lastReadMessageId","target_date","meta","_ignoreNextScroll","scrollToBottom","fetchMoreMessages","opts","loadMore","at","FUTURE","noScroll","forceAuto","scrollListToBottom","clearPendingMessages","options","findMessage","scrollListToMessage","_debouncedFillPaneAttemptHandler","fillPaneAttempt","fetchMessagesByDate","date","findFirstMessageOfDay","Date","firstOfResults","canLoadMorePast","highlightOrFetchMessage","firstMessageId","messageContainer","querySelector","checkMessageTopVisibility","PAST","foundFirstNew","newestMessage","forEach","messageData","index","ignored_users","hidden","requestedTargetMessageId","expanded","deleted_at","create","manager","preloadThreadTrackingState","thread_tracking","push","_debouncedHighlightOrFetchMessageHandler","assign","autoExpand","behavior","_debouncedUpdateLastReadMessageHandler","READ_INTERVAL_MS","firstFullyVisibleMessageId","firstMessage","lastReadId","markChannelAsRead","scrollToLatestMessage","onScroll","state","next","flushIgnoreNextScroll","updatePendingContentFromScrollState","atTop","up","distanceToTop","percentage","onScrollEnd","delete","set","firstVisibleId","onSendMessage","chat_maximum_message_length","alert","count","cook","editing","sendEditMessage","sendNewMessage","resetComposerMessage","resetDraft","sending","upload_ids","uploads","upload","editMessage","e","stageMessage","sendMessage","in_reply_to_id","inReplyTo","staged_id","client_created_at","toISOString","extractCurrentTopicInfo","_onSendError","stagedMessage","findStagedMessage","jqXHR","responseJSON","errors","cooked","markNetworkAsUnreliable","resendStagedMessage","then","markNetworkAsReliable","finally","onCloseFullScreen","prefersDrawer","routeTo","lastKnownAppURL","lastKnownChatURL","isDrawerActive","key","metaKey","ctrlKey","code","test","tagName","closest","preventDefault","addText","threadTracking","unread_count","mention_count","watched_threads_unread_count","prev","_dMenu","ChatComposerDropdown","onButtonClick","button","closeFn","synchronous","doubleClick","uploadButton","buttons","disabled","array","ChatComposerMessageDetails","_uploads","ChatComposerUpload","fileName","isDone","original_filename","previewImageSrc","getURLWithCDN","url","isImage","isVideo","isAudio","_pickFilesButton","_arrayTools","_object2","_trackedTools","_uppyUpload","_uppyMediaOptimizationPlugin","_utilities","_chatComposerUpload","ChatComposerUploads","mediaOptimizationWorker","autoTrackedArray","uppyUpload","useMultipartUploadsIfAvailable","uppyReady","composer_media_optimization_image_enabled","uppyWrapper","useUploadPlugin","optimizeFn","optimizeImage","runParallel","isMobileDevice","onPreProcessProgress","file","inProgressUpload","inProgressUploads","find","processing","onPreProcessComplete","uploadDone","_triggerUploadsChanged","uploadDropTargetOptions","body","onProgressUploadsChanged","inProgressUploadsCount","existingUploads","didReceiveAttrs","super","arguments","uppyInstance","cancelAll","cloneJSON","didInsertElement","composerInputEl","_pasteEventListener","willDestroyElement","showUploadsContainer","cancelUploading","cancelSingleUpload","fileId","removeUpload","removeValueFromArray","canUpload","canPasteHtml","types","clipboardHelpers","clipboardData","files","addFiles","pasted","onUploadChanged","_emoji","_data","_rsvp","_dTextarea","_emojiAutocompleteResults","_detached","_upsertHyperlink","_userAutocompleteResults","_hashtagAutocomplete","_loadEmojiSearchAliases","_optionalService","_text","_textareaTextManipulation","_userSearch","_userStatusOnAutocomplete","_virtualElementFromTextRange","_waitForKeyboard","_dAutocomplete","_forceScrollingElementPosition","_preventScrollOnFocus","_button","_chatComposerDropdown","_chatComposerMessageDetails","_chatComposerUploads","_chatReplyingIndicator","_chatComposerButtons","_chatMessageInteractor","_textareaInteractor","ChatComposer","chatComposerWarningsTracker","appEvents","emojiStore","composerPresenceManager","isFocused","shouldRenderMessageDetails","context","inlineButtons","chatComposerButtons","dropdownButtons","fileUploadElementId","canAttachUploads","chat_allow_uploads","persistDraft","setupAutocomplete","textarea","applyUserAutocomplete","applyEmojiAutocomplete","applyCategoryHashtagAutocomplete","setupTextareaInteractor","autofocus","ensureAtEnd","refreshHeight","applyAutocomplete","autocompleteHandler","TextareaAutocompleteHandler","didUpdateMessage","cancelPersistDraft","captureMentions","skipDebounce","didUpdateInReplyTo","_persistHandler","handleInlineButtonAction","buttonAction","stopPropagation","hasContent","minLength","chat_minimum_message_length","hasUploads","sendEnabled","off","insertDiscourseLocalDate","LocalDatesCreateModal","optionalRequire","model","insertDate","markup","getSelected","uploadClicked","click","computeIsFocused","onInput","draftSaved","reportReplyingPresence","trapMouseDown","onSend","reactingToLastMessage","deleteEmptyMessage","trim","reactionCode","startsWith","reaction","substring","replacements","emojiCode","normalizeEmoji","interactor","react","notifyState","presenceChannelName","modifySelection","sel","lineVal","applySurround","forceScrollPosition","isIpadOS","pageYOffset","scrollTo","onTextareaFocusOut","onTextareaFocusIn","onKeyDown","altKey","isComposing","isAutocompleteDisplayed","shiftKey","handleEscape","user_option","chat_send_shortcut","replyable","replyTo","editableMessage","lastUserMessage","editable","edit","openUpsertLinkModal","selected","linkText","toolbarEvent","text","onSelectEmoji","textareaInteractor","emojiTermStart","valueUpToCursor","valueAfterCursor","emojiTermEnd","setSelectionRange","emojiSelected","trackMentions","reset","addMentionedUser","userData","createRecord","mentionedUsers","enable_mentions","TRIGGER_KEY","width","treatAsTextarea","fixedTextareaPosition","autoSelectFirstSuggestion","transformComplete","obj","isUser","validateSearchResult","dataSource","term","destroyUserStatuses","includeGroups","presentUserNames","presenceChannel","cssClasses","initUserStatusHtml","onRender","renderUserStatusHtml","afterComplete","hashtagAutocompleteOptions","hashtag_configurations","enable_emoji","onKeyUp","cp","matches","exec","async","v","currentValue","currentCaretPos","selectionStart","emojiContext","incompleteMatch","match","menuOptions","groupIdentifier","didSelectEmoji","waitForClosedKeyboard","virtualElement","menuInstance","Promise","resolve","full","toLowerCase","Math","max","emoji_autocomplete_min_chars","SKIP","favorites","favoritesForContext","slice","emojiTranslation","custom_emoji_translation","allTranslations","translations","emojiDenied","denied_emojis","scale","isSkinTonableEmoji","x","searchAliases","emojiSearch","maxResults","diversity","exclude","list","src","emojiUrlFor","label","_bodyClass","_htmlClass","_resizableNode","ChatDrawer","chatDrawerSize","chatDrawerRouter","sizeTimer","rafTimer","hasUnreadMessages","drawerStyle","userCanChat","_checkSize","computeDrawerStyle","cancelAnimationFrame","_fireHiddenAppEvents","trigger","observes","height","size","style","escapeExpression","toString","drawerActions","openInFullPage","toggleExpand","_dynamicCheckSize","requestAnimationFrame","_performCheckSize","_startDynamicCheckSize","_clearDynamicCheckSize","throttle","isDestroying","isDestroyed","drawerContainer","getElementById","composerIsClosed","contains","setProperty","offsetLeft","openURL","activeChannel","stateFor","_routeFromURL","didOpenDrawer","recognize","localName","parent","storeAppURL","prefersFullPage","didToggleDrawer","isDrawerExpanded","didCloseDrawer","didResize","ChatEmojiAvatar","_unreadIndicator","ChatFooter","chatHistory","includeStarred","hasStarredChannels","includeThreads","chat_threads_enabled","directMessagesEnabled","userCanAccessDirectMessages","currentRouteName","routeName","currentRoute","enabledRouteCount","enable_public_channels","Boolean","shouldRenderFooter","hasPreloadedChannels","UnreadStarredIndicator","UnreadChannelsIndicator","UnreadDirectMessagesIndicator","UnreadThreadsIndicator","ChatHeader","previousURL","title","heading","constructor","updatePreviousURL","willDestroy","chat_enabled","isChatOpen","currentURL","forumLink","rootURL","ChatMentionWarnings","unreachableGroupMentions","overMembersLimitGroupMentions","hasTooManyMentions","tooManyMentions","channelWideMentionDisallowed","mentionsCount","unreachableGroupMentionsCount","overMembersLimitMentionsCount","hasUnreachableGroupMentions","hasOverMembersLimitGroupMentions","warningsCount","listStyleClass","warningHeaderText","tooManyMentionsBody","max_mentions_per_chat_message","siteSettingUrl","unreachableBody","group1","group2","overMembersLimitBody","messageFormat","groupCount","isAdmin","notificationLimit","max_users_notified_per_group_mention","_dom","_bookmarkIcon","_dropdownSelectBox","_chatMessageReaction","_chatMessageContainer","FULL","ChatMessageActionsDesktop","activeMessage","messageInteractor","shouldRenderFavoriteReactions","openEmojiPicker","_","container","boundary","clientWidth","computePosition","strategy","middleware","offset","mainAxis","hideUserInfo","crossAxis","flip","fallbackPlacements","shift","limiter","limitShift","hide","y","middlewareData","left","top","referenceHidden","escaped","visibility","pointerEvents","redirectScroll","targetElement","scrollTop","deltaY","_dModal","ChatMessageActionsMobile","hasExpandedReply","vibrate","userHasBeenActive","canVibrate","navigator","expandReply","collapseMenu","closeModal","actAndCloseMenu","fnId","operation","selectReaction","_decoratedHtml","_domFromString","_lightbox","_chatUpload","_collapser","isCollapsible","elements","Array","call","hasLazyVideo","hasImageOnebox","hasImage","hasGallery","ChatMessageCollapser","lightbox","cancelled","isConnected","uploadsHeader","optimized_video","uploadsRenderContext","signature","uploadSignature","cookedBodies","lazyVideoCooked","imageOneboxCooked","imageCooked","galleryCooked","lazyVideoComponent","getVideoAttributes","reduce","acc","lazy_videos_enabled","lazyVideoPredicate","videoAttributes","providerName","link","header","outerHTML","needsCollapser","imageOneboxPredicate","animatedImagePredicate","firstChild","firstElementChild","href","imagePredicate","alt","galleryPredicate","textContent","removeChild","some","nodeName","externalImageOnebox","thumbnail","short_path","_chatEmojiAvatar","ChatMessageInReplyToIndicator","hasThread","threadingEnabled","_getReactionText","ChatMessageReaction","tooltip","registerTooltip","disableTooltip","popoverContent","instance","register","content","animated","triggers","destroy","showCount","emojiString","emojiUrl","handleClick","onReaction","reacted","emojiUnescape","getReactionText","IS_PINNED_CLASS","ChatMessageSeparator","track","intersectionObserver","IntersectionObserver","entry","isIntersecting","intersectionRatio","boundingClientRect","intersectionRect","observe","disconnect","onDateClick","firstMessageOfTheDayAt","previousMessage","areDatesOnSameDay","startOfDay","formattedFirstMessageDate","calendarDate","isNewestMessage","a","b","getFullYear","getMonth","getDate","startOf","_chatMessageCollapser","ChatMessageText","isEdited","edited","_formatDate","_chatThreadParticipants","ChatMessageThreadIndicator","interactiveUser","threadMessageRoute","preview","lastReplyId","_emojiPicker","_later","_transformer","_updateUserStatusOnMention","_zoomCheck","_avatar","_error","_info","_leftGutter","_blocks","_chatMessageActionsMobile","_chatMessageInReplyToIndicator","_chatMessageSeparator","_chatMessageText","_chatMessageThreadIndicator","_onLongPress","MESSAGE_CONTEXT_THREAD","MENTION_KEYWORDS","addChatMessageDecorator","decorator","_chatMessageDecorators","resetChatMessageDecorators","chatChannelPane","chatThreadPane","interactedChatMessage","isActive","toggleCheckIfPossible","addedListener","selectingMessages","bulkSelect","select","threadContext","includeSeparator","deletedAndCollapsed","deletedAt","collapsed","hiddenAndCollapsed","deletedMessageLabel","recursiveCount","nextMessage","shouldRenderOpenEmojiPickerButton","interactive","userCanInteractWithChat","secondaryActionsIsExpanded","expand","recursiveExpand","refreshStatusOnMentions","toggleChecked","checked","willDestroyMessage","_invitationSentTimer","_disableMessageActionsHandler","_makeMessageActiveHandler","_onMouseEnterMessageDebouncedHandler","teardownMentionedUsers","querySelectorAll","mention","updateUserStatusOnMention","initMentionedUsers","isTrackingStatus","decorateMentions","allowChannelWideMentions","wideMentions","keyword","mentions","node","classes","applyValueTransformer","decorateCookedMessage","helper","staff","canModerate","onMouseEnter","emojiPickerOpen","_debouncedOnHoverMessage","onMouseMove","_setActiveMessage","onMouseLeave","toElement","relatedTarget","disableMouseEvents","onLongPressStart","persisted","onLongPressCancel","documentElement","onLongPressEnd","hasActiveState","hasReply","hideReplyToInfo","pinned","chatWebhookEvent","abs","force","showThreadIndicator","replyCount","shouldRenderStopMessageStreamingButton","streaming","onEmojiPickerClose","onEmojiPickerShow","stopMessageStreaming","lt","Input","Actions","_actions","_informative","Block","blockForType","definition","Error","_category","Element","elementForType","Button","interacting","createInteraction","action_id","CategoryElement","boxStyle","parent_color","parentBadgeStyle","_block","Blocks","interaction","Informative","_onResize","ChatMessagesContainer","_scrollableList","ChatMessagesScroller","_mention_without_membership","COMPONENT_DICT","mention_without_membership","ChatNotices","noticesManager","clearNotice","notice","_chatNotice","_chatRetentionReminder","noticesForChannel","notices","ChatPinnedMessagesList","messageBus","pinnedMessages","subscribe","onMessage","channelMessageBusLastId","markPinsAsRead","unsubscribe","busData","handlePinMessage","handleUnpinMessage","isUnseen","pin","pinned_by","lastViewedPinsAtSnapshot","pinned_at","decorateMessage","pinnedByText","lastViewedPinsAt","chat_message_id","pinned_by_id","hasUnseenPins","ChatReplyingIndicator","presence","updateSubscription","getChannel","subscribed","u","usernames","lastUsername","commaSeparatedUsernames","ChatRetentionReminderText","chatSettingsLink","countForChannelType","chat_dm_retention_days","chat_channel_retention_days","_chatRetentionReminderText","ChatRetentionReminder","isCategoryChannel","dismiss","method","chatable_type","chatableType","field","_conditionalLoadingSpinner","_loadMore2","_tabToSibling","_chatChannelTitle","_chatThreadHeading","ChatSearch","chatSearchQuery","currentSort","isLoading","hasMoreResults","lastQuery","enableQueryParams","searchMessages","resetResults","searchPromise","scopedChannelId","newMessages","messageObject","has_more","sortLabel","setCurrentSorting","closeMenu","onFilterChange","debouncedHandler","debounceFilterChange","replaceWith","queryParams","q","checkQueryChange","visitMessage","handleKeypress","accessibleMessageLabel","messagePreview","excerpt","threadInfo","threadTitle","ChatSidePanelResizer","_keyValueStore","_chatSidePanelResizer","MIN_PANEL_WIDTH","ChatSidePanel","setupSize","isFullPageActive","validWidth","min","getObject","mainContainerWidth","animate","duration","fill","storeWidth","mainPanelWidth","setObject","ChatSidebarIndicators","hasUnread","suffixArgs","unreadThreadsCount","urgencyClass","hasUrgent","hasUnreadDM","ChatSkeleton","placeholders","from","image","randomIntFromInterval","rows","reactions","floor","random","ChatThreadHeading","showHeading","_isElementInViewport","_item","_trackMessage","ChatThreadList","noThreadsLabel","onMessageBus","resizeObserver","ResizeObserver","loadThreads","threadsCollection","threads","handleLoadedThreads","threadsManager","sortedThreads","originalMessage","lastMessageId","threadA","threadB","lastReplyCreatedAt","lastThread","handleDeleteMessage","handleRestoreMessage","deletedOriginalMessageThread","deleted_id","restoredOriginalMessageThread","chat_message","threadModel","replace","setupChannelThreadState","ChatThreadParticipants","showParticipants","includeOriginalMessageUser","participantsUsers","participantUsers","otherCountLabel","otherParticipantCount","_threadSettings","_userChatThreadMembership","ChatThreadTitlePrompt","toasts","toastText","dismissLabel","primaryLabel","canShowToast","updateThreadTitlePrompt","updateCurrentUserThreadTitlePrompt","console","log","threadTitlePromptSeen","disableFutureThreadTitlePrompts","save","titleNotSet","hasReplies","THREAD_TITLE_PROMPT_THRESHOLD","showPrompts","show_thread_title_prompts","promptNotSeen","showProgressBar","class","actions","toast","_notificationLevels","_chatThreadTitlePrompt","_chatChannelThreadSubscriptionManager","_thread","ChatThread","chatThreadComposer","showChannelPreview","markThreadAsRead","details","scrollToTop","visible","thread_id","NotificationLevels","TRACKING","last_read_message_id","message_id","onSendError","scrollListToTop","stagedId","_computed","_chooseTopic","_radioButton","_textField","_categoryChooser","_tagChooser","NEW_TOPIC_SELECTION","NEW_MESSAGE_SELECTION","EXISTING_TOPIC_SELECTION","ChatToTopicSelector","newTopicSelection","existingTopicSelection","newMessageSelection","selection","equal","newTopic","existingTopic","newMessage","alias","canAddTags","canTagMessages","topicTitle","categoryId","tags","selectedTopicId","chatMessageIds","chatChannelId","newTopicInstruction","instructionLabels","computed","existingTopicInstruction","newMessageInstruction","_chatThread","ChatUploadDropZone","isThread","ChatUpload","loaded","IMAGE_TYPE","VIDEO_TYPE","AUDIO_TYPE","ATTACHMENT_TYPE","ratio","max_image_width","max_image_height","thumb_width","thumb_height","imageUrl","imageStyle","dominant_color","videoSourceUrl","baseUrl","isSafari","imageLoaded","_userAvatar","ChatUserAvatar","avatar","renderAvatar","imageSize","avatarSize","showPresence","isOnline","userPath","ChatUserDisplayName","shouldPrioritizeNameInUx","hasValidName","formattedUsername","formatUsername","shouldShowNameFirst","shouldShowNameLast","_chatUserDisplayName","ChatUserInfo","trackUserStatus","showStatus","showStatusDescription","ChatComposerButton","_chatComposer","ChatComposerChannel","composerId","debounce","destroyDraft","canModifyMessages","findLastMessage","findLastUserMessage","placeholder","messageRecipients","directMessageRecipients","commaSeparatedNames","channelName","ChatComposerSeparator","ChatComposerThread","channelComposer","ChatDirectMessageButton","startChatting","upsertDmChannel","_browseChannels","_navbar","ChatDrawerRoutesBrowse","_channelInfoMembers","_channelInfoNav","ChatDrawerRoutesMembers","backButton","models","_channelInfoSettings","ChatDrawerRoutesSettings","_chatPinnedMessagesList","ChatDrawerRoutesChannelPins","backLinkTitle","escapedTitle","ChatDrawerRoutesChannelThread","previousRoute","activeThread","_chatThreadList","ChatDrawerRoutesChannelThreads","ChatDrawerRoutesChannel","isFiltering","toggleIsFiltering","backBtnRoute","_chatFooter","ChatDrawerRoutesChannels","ChatDrawerRoutesDirectMessages","_chatSearch","ChatDrawerRoutesSearch","_channelsListStarred","ChatDrawerRoutesStarredChannels","_userThreads","ChatDrawerRoutesThreads","CHANNELS_TAB","STARRED_TAB","THREADS_TAB","FooterUnreadIndicator","badgeType","unstarredPublicChannelMentionCount","unstarredDMUrgentCount","starredChannelsUrgentCount","unstarredPublicChannelUnreadCount","starredChannelsUnreadCount","unstarredPublicMessageChannels","unstarredDirectMessageChannels","showUrgent","showUnread","_section","ChatForm","yieldableArgs","ChatFormRow","_row","ChatFormSection","row","_getUserChatSeparateSidebarMode","ChatHeaderIcon","currentUserInDnD","isInDoNotDisturb","chatSeparateSidebarMode","getUserChatSeparateSidebarMode","never","icon","targetUrl","openChat","isDrawerPreferred","ChatHeaderIconUnreadIndicator","allChannelUrgentCount","allChannelMentionCount","publicChannelUnreadCount","hasUnreads","indicatorPreference","chat_header_indicator_preference","showUrgentIndicator","onlyMentions","hasAnyIndicatorPreference","HEADER_INDICATOR_PREFERENCE_ALL_NEW","HEADER_INDICATOR_PREFERENCE_DM_AND_MENTIONS","urgentCountLabel","HEADER_INDICATOR_PREFERENCE_ONLY_MENTIONS","preferences","HEADER_INDICATOR_PREFERENCE_NEVER","EmptyState","List","loadCollection","itemComponent","debouncedLoadCollection","collection","Item","_membersCount","_membersSelector","AddMembers","membersCount","userCount","members","member","chat_enabled_user_count","maxMembers","chat_max_direct_message_users","saveGroupMembers","groups","addMembersToChannel","success","gte","Channel","unread_thread_count","showIndicator","MODES","search","new_group","add_members","ChatableGroup","group_with_too_many_members","isDisabled","enabled","_addMembers","_constants","_newGroup","_search","ChatMessageCreator","mode","componentForMode","changeMode","changeMembers","cancelAction","onCancel","_chatChatable","sortChatables","TYPE_PRIORITY","USER","DM_CHANNEL","CATEGORY_CHANNEL","GROUP","typePriority","chatables","matchA","matchQuality","MATCH_QUALITY_PARTIAL","matchB","typeA","typeB","ChatablesLoader","setOwner","includeUsers","includeCategoryChannels","includeDirectMessageChannels","preloadChannels","request","preloadedChannels","include_users","include_category_channels","include_direct_message_channels","excluded_memberships_channel_id","excludedMembershipsChannelId","results","direct_message_channels","category_channels","findChannel","allChannels","createUser","createChannel","getNext","current","currentIndex","findIndex","getPrevious","ListAction","_iterateList","ListHandler","handleKeydown","onHighlight","items","highlightedItem","onShifSelect","onSelect","_group","_listAction","_user","cantAddMoreMembersLabel","componentForItem","handleEnter","onShiftSelect","Member","MembersCount","countLabel","_chatablesLoader","_listHandler","_members","MembersSelector","highlightedMember","highlightedChatable","highlightedMemberIds","highlightMember","highlightChatable","selectChatable","chatableMembers","unselectMember","onChange","focusFilterAction","registerFocusFilterAction","actionFn","onFilter","searchHandler","fetch","loader","removedMember","_member","Members","addMoreMembersLabel","onSelectMember","onHighlightMember","NewGroup","newGroupTitle","createGroup","createDmChannel","ChatMessageCreatorSearchInput","filterPlaceholder","_searchInput","ChatMessageCreatorSearch","chatGuardian","canUseGroupChat","prefillAddMembers","onChangeMode","startOneToOneChannel","startGroupChannel","_userStatus","ChatableUser","disabledUserLabel","isUnread","Avatar","_settings","_formatChatDate","ChatMessageInfo","usernameClasses","prioritizeName","moderator","new_user","primary_group_name","isFlagged","reviewableId","userFlagStatus","prioritizeNameInUx","ChatMessageLeftGutter","_chatToTopicSelector","ChatModalArchiveChannel","saving","flash","flashType","buttonDisabled","min_topic_title_length","max_topic_title_length","labels","instructionsText","category_id","topic_id","archiveChannel","newTopicSelected","topic","_dTooltip","_withEventValue","_category3","DEFAULT_HINT","category","ChatModalCreateChannel","autoGeneratedSlug","categoryPermissionsHint","autoJoinWarning","loadingPermissionHint","editedEmoji","generateSlugHandler","autoJoinAvailable","max_chat_auto_joined_users","categorySelected","createDisabled","categoryName","onShow","onCategoryChange","findById","updatePermissionsHint","debouncedGenerateSlug","onNameChange","resetEmoji","onSave","formData","FormData","currentTarget","fromEntries","entries","auto_join_users","slug","threading_enabled","yesNoConfirm","didConfirm","extractError","buildCategorySlug","parentCategory","updateAutoJoinConfirmWarning","catPermissions","allowedGroups","allowed_groups","warning","private","members_count","groupName","fullSlug","categoryPermissions","settingLink","hint","generateSlug","ChatModalDeleteChannel","channelNameConfirmation","deleting","confirmed","deleteChannel","destroyChannel","_dModalCancel","DeleteMessagesConfirm","trashMessages","sourceChannel","selectedMessageIds","_charCounter","ChatModalEditChannelDescription","editedDescription","isSaveDisabled","descriptionMaxLength","onSaveChatChannelDescription","updateChannel","onChangeChatChannelDescription","_slugifyChannel","ChatModalEditChannelName","editedName","editedSlug","onChangeChatChannelName","onChangeChatChannelSlug","_chatChannelChooser","ChatModalMoveMessageToChannel","destinationChannelId","selectedMessageCount","disableMoveButton","availableChannels","moveMessages","moveChannelMessages","message_ids","destination_channel_id","first_moved_message_id","_messageCreator","ChatModalNewMessage","ChatModalThreadSettings","editedTitle","threadTitleLength","saveThread","editThread","ChatModalToggleChannelStatus","buttonLabel","isClosed","instructions","modalTitle","onStatusChange","updateChannelStatus","_browseChannelsButton","_closeDrawerButton","_closePinsButton","_closeThreadButton","_closeThreadsButton","_filter","_fullPageButton","_newChannelButton","_newDirectMessageButton","_openDrawerButton","_pinnedMessagesButton","_threadSettingsButton","_threadTrackingDropdown","_threadsListButton","_toggleDrawerButton","ChatNavbarActions","ChatNavbarBackButton","targetRoute","showBackButton","ChatNavbarBrowseChannelsButton","browseChannelsLabel","showBrowseChannelsButton","ChatNavbarChannelTitle","shouldLinkToSettings","isStarred","starTooltip","showStarButton","ChatNavbarCloseDrawerButton","closeDrawer","ChatNavbarClosePinsButton","closeButtonTitle","ChatNavbarCloseThreadButton","ChatNavbarCloseThreadsButton","ChatNavbarFilter","ChatNavbarFullPageButton","_noop","_backButton","_title","ChatNavbar","handleResize","clientHeight","_createChannel2","ChatNavbarNewChannelButton","ChatNavbarNewDirectMessageButton","showButtonComponent","ChatNavbarOpenDrawerButton","openDrawer","ChatNavbarPinnedMessagesButton","pinnedMessagesLabel","showButton","chat_pinned_messages","hasPinnedMessages","ChatNavbarSubTitle","ChatNavbarThreadSettingsButton","canChangeThreadSettings","openThreadSettings","_threadNotificationsTracking","ChatNavbarThreadTrackingDropdown","persistedNotificationLevel","threadNotificationLevel","REGULAR","updateThreadNotificationLevel","newNotificationLevel","currentNotificationLevel","updateCurrentUserThreadNotificationsSettings","_headerUnreadIndicator","ChatNavbarThreadsListButton","threadsListLabel","showThreadsListButton","_subTitle","ChatNavbarTitle","ChatNavbarToggleDrawerButton","_laterFn","MentionWithoutMembership","invitationsSent","userIds","user_ids","sendInvitations","invite","ChatPinnedMessagesListHeader","pinnedMessagesTitle","_chatUserInfo","ChatRouteChannelInfoMembers","now","updatedAt","showAddMembers","addMemberLabel","noMembershipsFoundLabel","noMembershipsLabel","onEnter","callback","params","listChannelMemberships","mutFilter","addMember","hideAddMember","openMemberCard","username_lower","removeMember","removeMemberFromChannel","canRemoveMember","canRemoveMembers","addMembersMode","canAddMembers","ChatRoutesChannelInfoNav","showTabs","_dToggleSwitch","_categoryBadge","_form","_archiveChannel","_deleteChannel","_editChannelDescription","_editChannelName","_toggleChannelStatus","NOTIFICATION_LEVELS","ChatRouteChannelInfoSettings","notificationLevels","settingsSectionTitle","channelInfoSectionTitle","categoryLabel","historyLabel","adminSectionTitle","membersLabel","descriptionSectionTitle","titleSectionTitle","descriptionPlaceholder","toggleThreadingLabel","toggleThreadingDescription","muteSectionLabel","channelWideMentionsLabel","autoJoinLabel","notificationsLevelLabel","canEditChannel","canEditChatChannel","shouldRenderDescriptionSection","shouldRenderStatusSection","shouldRenderArchiveRow","canArchiveChannel","canToggleChannelState","openChannelDisabledReason","isArchived","toggleChannelWideMentionsAvailable","toggleThreadingCategoryChannel","toggleThreadingDirectMessage","channelWideMentionsDescription","isChannelMuted","shouldRenderMuteSection","following","shouldRenderChannelWideMentionsAvailable","shouldRenderNotificationsLevelSection","shouldRenderSettingsSection","shouldRenderAdminSection","onToggleChannelWideMentions","_updateChannelProperty","allow_channel_wide_mentions","onToggleAutoJoinUsers","autoJoinUsers","onDisableAutoJoinUsers","onEnableAutoJoinUsers","confirm","onToggleMuted","saveNotificationSettings","frontendKey","backendKey","settings","property","onToggleThreadingEnabled","onToggleChannelState","onArchiveChannel","onDeleteChannel","onEditChannelTitle","onLeaveChannel","onEditChannelDescription","ChatRoutesChannelInfo","chatChannelInfoRouteOriginManager","editChannelTitle","_header","ChatRoutesChannelPins","ChatRoutesChannelThread","showfullTitle","setFullTitle","ChatRoutesChannelThreads","_chatSidePanel","_fullPageChat","ChatRoutesChannel","getChannelsRoute","ChatRoutesChannels","ChatRoutesDirectMessages","ChatRoutesSearch","ChatRoutesStarredChannels","ChatRoutesThreads","ScrollToBottomArrow","_deleteMessagesConfirm","_moveMessageToChannel","ChatSelectionManager","topicComposer","api","enableMove","anyMessagesSelected","deleteCountLimitReached","canDeleteMessages","every","canDeleteMessage","canDeleteSelf","canDeleteOthers","deleteButtonTitle","selectionCount","generateQuote","markdown","Blob","openMoveMessageModal","openDeleteMessagesModal","quoteMessages","quoteMarkdown","quoteMarkdownBlob","openOpts","chatableId","chatableUrl","focusComposer","fallbackToNewTopic","insertText","lookup","copyMessages","isTesting","clipboardCopyAsync","ChatThreadListHeader","threadListTitle","_threadUnreadIndicator","ChatThreadListItem","openThread","ThreadHeaderUnreadIndicator","unreadCountLabel","cappedUnreadCount","unreadThreadCount","ChatThreadHeader","backLink","prevPage","headerTitle","showThreadUnreadIndicator","openThreadTitleModal","Collapser","onToggle","FullPageChat","_createdBy","_topicLink","_highlightWatchedWords","ReviewableRefreshChatMessage","reviewable","chat_channel","messageCooked","payload","message_cooked","_fabricators","StyleguideComponent","Controls","Row","StyleguideExample","ChatStyleguideChatComposerMessageDetails","toggleMode","ChatStyleguideChatComposer","chatChannelComposer","toggleDisabled","toggleSending","_icon","ChatStyleguideChatHeaderIcon","indicatorPreferences","toggleIsActive","toggleCurrentUserInDnD","updateUnreadCount","updateUrgentCount","updateIndicatorPreference","_chatMessagesManager","ChatStyleguideChatMessage","toggleDeleted","toggleBookmarked","bookmark","toggleHighlighted","highlighted","toggleEdited","toggleThread","updateMessage","toggleReaction","toggleUpload","ChatStyleguideChatModalArchiveChannel","openModal","_createChannel","ChatStyleguideChatModalCreateChannel","ChatStyleguideChatModalDeleteChannel","ChatStyleguideChatModalEditChannelDescription","ChatStyleguideChatModalEditChannelName","ChatStyleguideChatModalMoveMessageToChannel","ChatStyleguideChatModalNewMessage","ChatStyleguideChatModalThreadSettings","ChatStyleguideChatModalToggleChannelStatus","ChatStyleguideChatThreadListItem","_chatHeaderIcon","_chatModalArchiveChannel","_chatModalCreateChannel","_chatModalDeleteChannel","_chatModalEditChannelDescription","_chatModalEditChannelName","_chatModalMoveMessageToChannel","_chatModalNewMessage","_chatModalThreadSettings","_chatModalToggleChannelStatus","_chatThreadListItem","ChatOrganism","SvgChatZero","_notificationsTracking","_chatNotificationLevels","ThreadNotificationsTracking","threadNotificationButtonLevels","ChatThreadTitle","ChatThreadUnreadIndicator","ToggleChannelMembershipButton","labelType","joinTitle","joinIcon","joinClass","leaveTitle","leaveIcon","leaveClass","onJoinChannel","followChannel","onJoin","leaveDestructive","onLeave","channelIcon","isSubcategoryChannel","EditCategoryChat","showSubcategoryChannels","categoryChannels","subcategoryChannels","hasSubcategoryChannels","displayedChannels","toggleSubcategoryChannels","loadChannels","localeCompare","ChatNotificationsListEmptyState","_notificationsList","UserMenuChatNotificationsList","dismissTypes","filterByTypes","emptyStateComponent","_threadTitle","_preview","_chatThreadPreview","UserThreads","trackedChannels","keys","userThreads","threadObject","trackChannel","t","ThreadPreview","lastReplyDate","leaveAgo","ChatBodyClass","_chatDrawer","ChatDrawerOutlet","_chatMessageActionsDesktop","ChatMessageActionsDesktopOutlet","_separator","ChatEmojiPicker","_chatHeader","enumerable","_directMessageButton","ChatButton","EMAIL_FREQUENCY_OPTIONS","PreferencesChatEmails","ChatPreferences","can_chat","_controller","ChatDraftChannelController","ChatController","shouldUseChatSidebar","shouldUseCoreSidebar","publicMessageChannelsEmpty","navigation_menu","shouldUseChatFooter","FOOTER_NAV_ROUTES","mainOutletModifierClasses","modifierClasses","isSidePanelExpanded","ChatChannelController","ChatChannelIndexController","ChatChannelThreadController","ChatIndexController","ChatNewMessageController","_string","ChatGuardianHelper","compute","inputs","camelize","_found","checkMessageBottomVisibility","dataset","parseInt","tz","timezone","guess","display","staged","_pluginApi","CHAT_NOTIFICATION_TYPES","initialize","canPlaySound","isPrimaryTab","withPluginApi","registerDesktopNotificationHandler","indicatorType","isMention","notification_type","chat_sound","INDICATOR_PREFERENCES","only_mentions","dm_and_mentions","is_direct_message_channel","play","_chat","registerEditCategoryTab","condition","enable_simplified_category_creation","_oneboxDecorators","_codeblockButtons","_hashtagDecorator","_highlightSyntax","initializeWithPluginApi","decorateChatMessage","decorateGithubOneboxBody","line","scrollingElement","_getScrollParent","scrollBarWidth","offsetHeight","scroll","offsetTop","renderChatTranscriptDates","forceLinksToOpenNewTab","decorateHashtags","chat_show_copy_button_on_codeblocks","cb","showFullscreen","showCopy","attachToGeneric","cleanup","maxParentSelector","scrollHeight","parentNode","transcriptEl","dateTimeRaw","dateTimeLinkEl","innerText","links","linkIndex","isInternal","samePrefix","setAttribute","_keyboardShortcuts","chatService","chatThreadListPane","openQuickChannelSelector","isInputSelection","isChatComposer","handleMoveUpShortcut","switchChannelUpOrDown","handleMoveDownShortcut","handleMoveUpUnreadShortcut","handleMoveDownUnreadShortcut","el","elementTagName","modifyComposerSelection","chatComposerContext","addKeyboardShortcut","PLATFORM_KEY_MODIFIER","global","help","keys1","keysDelimiter","keys2","shortcutsDelimiter","openInsertLinkModal","toggleChatDrawer","srcElement","isOpened","isPinnedMessagesPaneOpen","closeChat","markAllChannelsRead","_localDates","applyLocalDates","spoiler_enabled","applySpoiler","spoiler","_formatter","_iconLibrary","_richEditorExtension","_lastForcedRefreshAt","replaceIcon","ChatSetupInit","owner","addAboutPageActivity","periods","activityText","formatted_number","number","period","onPageChange","visit","registerHashtagType","registerChatComposerButton","displayed","dependentKeys","discourse_local_dates_enabled","decorateCookedElement","elem","currentUserTimezone","dateTimeEl","dateFormatted","start","_registeredDocumentTitleCountCallback","addDocumentTitleCounter","documentTitleCountCallback","addCardClickListenerSelector","headerIcons","after","before","addStyleguideSection","registerRichEditorExtension","getDocumentTitleCount","clearChatComposerButtons","_handleFocusChanged","hasFocus","_decorateUsernameSelector","_avatarUtils","_chatChannelSidebarContextMenu","_chatSidebarIndicators","_initSidebarState","addSidebarPanel","BaseCustomSidebarPanel","CHAT_PANEL","switchButtonLabel","switchButtonIcon","switchButtonDefaultUrl","initSidebarState","getCurrentUser","chat_search_enabled","addSidebarSection","BaseCustomSidebarSection","BaseCustomSidebarSectionLink","SidebarChatSearchSectionLink","prefixType","prefixValue","hideSectionHeader","SidebarChatMyThreadsSectionLink","suffixType","suffixValue","suffixCSSClass","displaySection","BaseStarredChannelLink","showSuffix","hoverType","isOneOnOneDM","isDM","slugifiedTitle","dasherize","replaceAll","decorateUsername","escapedDescription","avatarUrl","avatar_template","prefixColor","prefixBadge","read_restricted","prefixCSSClass","activeUsers","suffixComponent","userStatus","createChannelLink","SidebarChatStarredChannelLink","menuService","hoverValue","hoverTitle","hoverAction","onMenuClose","SidebarChatStarredChannelsSection","sectionLinks","SidebarChatChannelsSectionLink","SidebarChatChannelsSection","has_joinable_public_channels","currentUserCanJoinPublicChannels","actionsIcon","SidebarChatNewDirectMessagesSectionLink","SidebarChatDirectMessagesSectionLink","oneOnOneMessage","SidebarChatDirectMessagesSection","_chatNotificationsList","registerNotificationTypeRenderer","NotificationItemBase","linkTitle","linkHref","notification","chat_channel_title","chat_channel_slug","chat_channel_id","invited_by_username","notificationRoute","chat_thread_id","mentioned_by_username","i18nPrefix","i18nSuffix","username2","registerUserMenuTab","UserMenuTab","panelComponent","getUnreadCountForType","notificationTypes","addSaveableUserOption","page","ChatChannelSubscriptionManager","chatChannelNoticesManager","messageBusChannel","lastMessageBusId","handleSentMessage","handleReactionMessage","handleProcessedMessage","handleEditMessage","handleRefreshMessage","handleBulkDeleteMessage","handleSelfFlaggedMessage","handleFlaggedMessage","handleNewThreadCreated","handleThreadOriginalMessageUpdate","handleNotice","handleStagedMessage","created_at","processed","incrementVersion","deleted_ids","deletedId","targetMsg","deletedById","deleted_by_id","removeMessage","latest_not_deleted_message_id","user_flag_status","reviewable_id","fetchIfNotFound","channelOriginalMessage","original_message_id","update","alreadyApplied","pendingOptimisticPins","pinnedMessagesCount","pendingOptimisticUnpins","ChatChannelThreadSubscriptionManager","threadMessageBusLastId","values","valid","computeButton","ariaLabel","translatedAriaLabel","priority","isFunction","actionName","chatComposerButtonsDependentKeys","normalizedButton","translatedTitle","translatedLabel","descriptor","MATCH_QUALITY_PREFIX","MATCH_QUALITY_EXACT","DEFAULT_MESSAGE_PAGE_SIZE","CHAT_SEPARATE_SIDEBAR_MODE_NEVER","CHAT_SEPARATE_SIDEBAR_MODE_FULLSCREEN","CHAT_SEPARATE_SIDEBAR_MODE_ALWAYS","CHAT_SEND_SHORTCUT_META_ENTER","CHAT_SEND_SHORTCUT_ENTER","CHAT_QUICK_REACTION_TYPE_FREQUENT","CHAT_QUICK_REACTION_TYPE_CUSTOM","CHAT_QUICK_REACTIONS_CUSTOM_DEFAULT","CHAT_ATTRS","all_new","MESSAGE_CONTEXT_PINNED","selector","ChatMessageFlag","customSubmitLabel","submitLabel","targetsTopic","_rewriteFlagDescriptions","flags","flag","name_key","basePath","defaultValue","flagsAvailable","flagModal","flagTypes","flagModel","availableFlags","applies_to","notifyUserIndex","notifyUser","splice","flagMessage","flag_type_id","is_warning","isWarning","take_action","takeAction","queue_for_review","_bookmark","_flag2","_bookmarkFormData","_bookmark2","_emojiStore3","_chatMessageFlag","removeChatComposerSecondaryActions","actionIds","removedSecondaryActions","resetRemovedChatComposerSecondaryActions","Set","ChatMessageInteractor","emojiReactions","userQuickReactionsCustom","chat_quick_reaction_type","chat_quick_reactions_custom","split","frequentReactions","defaultReactions","default_emoji_reactions","DEFAULT_DIVERSITY","allReactionsInOrder","indexOf","canEdit","canInteractWithMessage","canRestoreMessage","canBookmark","canReply","canReact","canFlagMessage","canFlag","canPinMessage","canManagePins","canRebakeMessage","canDelete","secondaryActions","has","onSelectMessage","sortedIndices","findIndexOfMessage","lastSelectedMessage","copyText","clipboardCopy","copyLink","protocol","host","location","threadId","reactAction","reacting","publishReaction","trackEmojiForContext","errResult","REACTIONS","toggleBookmark","BookmarkFormData","createFor","afterSave","bookmarkFormData","saveData","attachedTo","afterDelete","user_id","flagTarget","setHidden","trashMessage","restore","restoreMessage","rebake","rebakeMessage","pinMessage","unpin","unpinMessage","reply","closeEmojiPicker","handleSecondaryActions","ChatMessagesLoader","loadedPast","nextTargetMessage","computeNextTargetMessage","page_size","cleanArgs","apiFunction","can_load_more_future","can_load_more_past","channelMessages","channelThreadMessages","k","findLast","ChatMessagesManager","stagedMessages","selectedMessages","clearSelectedMessages","uniqueItemsFromArray","stagedMessageId","m","WATCHING","buttonDetails","_userPresence","CHAT_PRESENCE_OPTIONS","userUnseenTime","browserHiddenTime","ChatPaneState","chatPanePendingManager","hasPendingContentBelow","onPresenceChange","onPresenceChangeCallback","removeOnPresenceChange","hasPendingMessages","hasPending","canScroll","computeIsScrolledAway","distanceToBottomPixels","distanceThresholdPixels","updateHasPendingContentBelow","isScrolledAway","computeHasPendingContentBelow","distanceToBottom","pixels","present","messageCount","maintainScrollPosition","addPendingMessages","_trackedBuiltIns","ChatThreadsManager","TrackedObject","_cached","TrackedMap","_unreadThreadOverview","unreadThreadOverview","markThreadUnread","existingThread","getFromCache","fetchFromServer","cache","message_bus_last_ids","thread_message_bus_last_id","hasChatIndicator","pref","ALL_NEW","DM_AND_MENTIONS","ONLY_MENTIONS","NEVER","getBoundingClientRect","bottom","Collection","resourceURL","_resourceURL","_handler","_params","_fetchedAll","loadMoreURL","load_more_url","totalRows","total_rows","Symbol","iterator","done","endpoint","filteredQueryParams","queryString","URLSearchParams","dates","reverse","nextElementSibling","prevLine","info","context_topic_id","currentPostNumber","currentPost","posts","postStream","post","post_number","previousPost","nextPost","context_post_ids","_instance","_chatDirectMessage","coreFabricators","incrementSequence","CHATABLE_TYPES","categoryChannel","directMessageChannel","chatable_id","can_delete_self","archive_failed","memberships_count","directMessage","original_message","threadPreview","last_reply_id","last_reply_created_at","last_reply_excerpt","participant_count","participant_users","MAX_DISPLAYED_USERNAMES","filterUsernames","pop","unnamedUserCount","joinUsernames","reactionIncludingCurrentUser","reactionText","chat_separate_sidebar_mode","always","fullscreen","_base","ChannelHashtagType","preloadedData","generateColorCssClasses","channelOrHashtag","colors","generateIconHTML","hashtag","onLoad","String","iconHTML","isLoaded","_panels","setCombinedSidebarMode","showSidebarSwitchPanelButtons","setSeparatedSidebarMode","hideSidebarSwitchPanelButtons","getSidebarPanel","MAIN_PANEL","setSidebarPanel","existing","pendingAdjustments","captured","heightDiff","messageEl","scrollIntoView","WeakMap","slugify","resolvedSlug","_destroyable","TextareaInteractor","textManipulation","eventPrefix","paste","registerDestructor","Event","bubbles","cancelable","dispatchEvent","ensureCaretAtEnd","blurAndFocus","isInside","html","domParser","parseFromString","mentionSpan","mentionLink","createElement","mentionText","createTextNode","appendChild","transformMentions","hashtagSpan","generatePlaceholderHashtagHTML","relative_url","transformHashtags","innerHTML","DOMParser","ChatChannelArchive","failed","archive_completed","archived_messages","archive_topic_id","total_messages","_tracking3","_guid","_getOwner","_chatThreadsManager","_chatChannelArchive","_chatTrackingState","_userChatChannelMembership","channelStatus","STAFF_READONLY_STATUSES","READONLY_STATUSES","getOwnerWithFallback","_currentUserMembership","_lastMessage","chatable_url","unicodeTitle","unicode_title","current_user_membership","last_message","initChatable","pinned_messages_count","lastViewedAt","can_delete_others","can_flag","userSilenced","user_silenced","can_moderate","can_remove_members","can_manage_pins","isReadOnly","isJoinable","can_join_chat_channel","ChatChatable","match_quality","has_chat_enabled","isGroup","isCategory","ChatDirectMessage","initUsers","initUsersModels","_bookmark3","_user3","_transformAutoLinks","static","version","mentionWarning","_deletedAt","_cooked","draft_saved","first_of_results","available_flags","chat_webhook_event","in_reply_to","replyToMsg","initChatMessageReactionModel","TrackedArray","initUserModel","mentioned_users","blocks","thread_title","newCooked","ensureCookFunctionInitialized","cookFunction","read","isOriginalThreadMessage","parseMentions","markdownOptions","toJSONDraft","JSON","stringify","actor","currentUserId","selfReaction","existingReaction","existingUserReaction","generateCookFunction","raw","featuresOverride","markdown_additional_options","limited_pretty_text_features","markdownItRules","limited_pretty_text_markdown_rules","hashtagTypesInPriorityOrder","hashtagIcons","hashtag_icons","Map","ChatNotice","text_content","notice_type","ChatThreadPreview","lastReplyExcerpt","lastReplyUser","participantCount","reply_count","last_reply_user","THREAD_STATUSES","last_message_id","ChatTrackingState","_unreadCount","_mentionCount","_watchedThreadsUnreadCount","triggerNotificationsChanged","UserChatChannelMembership","last_viewed_at","last_viewed_pins_at","has_unseen_pins","UserChatThreadMembership","thread_title_prompt_seen","isQuiet","MUTED","ChatLaterFn","modify","delay","ChatOnAnimationEnd","handleAnimationEnd","cancelEvent","ChatOnLongPress","handleTouchStart","timeout","touches","ChatOnScroll","throttledCallback","throttledHandler","immediate","ResizableNode","resizerSelector","didResizeContainer","_originalWidth","_originalHeight","_originalX","_originalY","_originalPageX","_originalPageY","vertical","horizontal","mutate","resetOnWindowResize","_startResize","_resizeWindow","_throttledResizeHandler","_minimumWidth","parseFloat","getComputedStyle","getPropertyValue","_minimumHeight","_eventValueForProperty","_resize","_stopResize","diffWidth","ceil","newStyle","containerStyle","containerWidth","containerHeight","DOWN","ChatScrollableList","lastScrollTop","computeInitialScrollTop","handleScroll","handleWheel","throttleComputeScroll","computeScroll","computeState","scrollTimer","throttleTimer","computeScrollDirection","computeDistanceToBottom","computeDistanceToTop","down","computeScrollTop","round","ChatTrackMessageSeparatorDate","ChatTrackMessage","didEnterViewport","didLeaveViewport","_intersectionObserverCallback","root","_chatStateManager","apiPrototype","getPrototypeOf","hasOwnProperty","addChatDrawerStateCallback","inReplyToId","post_ids","postIds","extendedClass","titleToken","currentModel","afterModel","paramsFor","threadMessageId","controllerFor","_discourse","ChatChannelLegacyRoute","redirect","ChatDraftChannelRoute","beforeModel","activate","_session","ChatRoute","transition","defaultHomepage","canHandleInDrawer","canHandleRoute","to","fullPageReload","requiresRefresh","currentProp","intent","targetName","urlFor","contexts","appURL","updatePresence","deactivate","RegExp","storeChatURL","_route","_default","ChatBrowseIndexRoute","_chatChannelDecorator","ChatChannelRoute","_chatChannelInfoRouteOriginManager","ChatChannelInfoRoute","origin","ORIGINS","browse","ChatChannelInfoIndexRoute","ChatChannelInfoMembersRoute","ChatChannelInfoSearchRoute","ChatChannelNearMessageWithThread","modelFor","ChatChannelNearMessage","ChatChannelPins","openSidePanel","closeSidePanel","ChatChannelThread","redirectToChannel","ChatChannelThreadNearMessage","ChatChannelThreads","ChatChannelsRoute","ChatDirectMessagesRoute","ChatIndexRoute","hasThreads","hasDirectMessages","isPublicChannelsEnabled","chat_preferred_index","ChatNewMessageRoute","recipients","ChatSearchRoute","ChatStarredChannelsRoute","_restrictedUser","PreferencesChatRoute","showFooter","setupController","controller","ChatAdminApi","exportMessages","_collection","ChatApi","getRequest","postRequest","move","deleteRequest","ignoreUnsent","messageIds","putRequest","createThread","originalMessageId","memberships","listCurrentUserChannels","notifications_settings","saveDraft","react_action","markAllChannelsAsRead","targets","userId","pinned_messages","CHAT_SOUNDS","bell","ding","ChatAudioManager","canPlay","tryPlay","setTimeout","audio","Audio","ChatChannelComposer","threadComposer","init","INFO_ROUTE_NAMESPACE","BACK_KEY","ChatChannelInfoRouteOriginManager","isBrowse","isChannel","ChatChannelNoticesManager","ChatChannelPane","cancelSelecting","ChatChannelScrollPositions","positions","ChatChannelsManager","chatSubscriptionsManager","userHasThreads","existingChannel","findStale","channelObject","channel_message_bus_last_id","storeDraftsForChannel","userChatDrafts","chat_drafts","storedDraft","parse","startChannelSubscription","unfollow","stopChannelSubscription","hasThreadedChannels","sortChannelsByProperty","publicMessageChannelsWithActivity","publicMessageChannelsByActivity","sortChannelsByActivity","sortChannelsByActivityUnreadsFirst","sortDirectMessageChannels","directMessageChannelsWithActivity","truncatedDirectMessageChannels","directMessageChannelsByActivity","sortDirectMessageChannelsByActivity","aUrgent","getChannelUrgentCount","bUrgent","aUnread","getChannelUnreadCount","bUnread","aHasActivity","bHasActivity","compareByLastActivity","aDate","displayPublicChannels","compareStarredChannels","aStarred","bStarred","aValue","bValue","withStarredPriority","compareFn","starredResult","compareChannelsByActivity","stats","urgent","unread","compareDirectMessageChannelsByActivity","MENTION_RESULT","ChatComposerWarningsTracker","mentionsTimer","resetMentionStats","currentMessage","_trackMentions","newMentions","recordNewWarnings","rebuildWarnings","newWarnings","unreachable","over_members_limit","invalid","memo","ChatDraftsManager","drafts","persist","_browse","_channelPins","_channelThread","_channelThreads","_channels","_directMessages","_starredChannels","_threads","ROUTES","extractParams","r","ChatDrawerRouter","drawerRoute","routeNames","forceParentRouteForIndex","activeChannelId","redirectedRoute","routeFromURL","ChatDrawerSize","STORE_NAMESPACE","MIN_HEIGHT","MIN_WIDTH","ChatGuardian","canUseChat","ChatHistory","history","_desktopNotifications","ChatNotificationManager","shouldRun","alertChannel","session","onNotification","ChatPanePendingManager","totalPendingMessageCount","countsByContext","getCount","setCount","newCount","oldCount","delta","ChatSearchQuery","chatDrawerStateCallbacks","resetChatDrawerStateCallbacks","PREFERRED_MODE_KEY","FULL_PAGE_CHAT","DRAWER_CHAT","ChatStateManager","_chatURL","_appURL","_store","publishStateChange","didExpandDrawer","didCollapseDrawer","isFullPagePreferred","hasNoPreferredMode","ChatSubscriptionsManager","_channelSubscriptions","_startChannelMentionsSubscription","_startKickFromChannelSubscription","_startChannelNewMessagesSubscription","_onNewMessages","_onNewMentions","_onKickFromChannel","startChannelsSubscriptions","messageBusIds","_startNewChannelSubscription","new_channel","_startChannelArchiveStatusSubscription","archive_status","_startUserTrackingStateSubscription","user_tracking_state","_startUserHasThreadsSubscription","user_has_threads","_startChannelsEditsSubscription","channel_edits","_startChannelsStatusChangesSubscription","channel_status","_startChannelsMetadataChangesSubscription","channel_metadata","stopChannelsSubscriptions","_stopNewChannelSubscription","_stopChannelArchiveStatusSubscription","_stopUserTrackingStateSubscription","_stopUserHasThreadsSubscription","_stopChannelsEditsSubscription","_stopChannelsStatusChangesSubscription","_stopChannelsMetadataChangesSubscription","lastId","_onChannelArchiveStatusUpdate","new_mentions","kick","firstChannel","new_messages","_onNewChannelMessage","_onNewThreadMessage","_updateActiveLastViewedAt","force_thread","_onUserTrackingStateUpdate","_onBulkUserTrackingStateUpdate","_onUserHasThreads","has_threads","_updateChannelTrackingData","unread_thread_overview","_onNewChannelSubscription","_onChannelMetadata","_onChannelEdits","_onChannelStatus","ChatThreadComposer","ChatThreadListPane","_chatChannelPane","ChatThreadPane","ChatTrackingStateManager","_onTriggerNotificationDebounceHandler","setupWithPreloadedState","channel_tracking","setState","publicChannels","directMessageUnreadCount","publicChannelMentionCount","directMessageMentionCount","dmMentionCount","_deprecated","CHAT_ONLINE_OPTIONS","Chat","isNetworkUnreliable","_activeMessage","_activeChannel","can_direct_message","userHasDirectMessages","channelsView","public_channels","_networkCheckHandler","loadingChannels","setupWithPreloadedChannels","global_presence_channel_state","storedChannel","hide_presence","enter","activeOptions","leave","title_count_mode","unreadOnly","getOrderedChannelsWithActivity","getOrderedChannels","directionUp","nextIndex","nextChannel","orderedChannels","activeIndexInOrdered","insertAfterIndex","channelAtPos","indexInActivity","_fireOpenFloatAppEvent","upsertDmChannelForUser","upsert","target_usernames","target_groups","getDmChannelForUsernames","addToolbarButton","toggleDrawer","InteractedChatMessage","secondaryOptionsOpen","_channelsList","_channelInfo","_chatAudioManager3","chatAudioManager","saved","chatQuickReactionTypes","chatSendShortcutOptions","meta_key","translateModKey","headerIndicatorOptions","chatSeparateSidebarModeOptions","chatSounds","userOption","emojis","only_chat_push_notifications","ignore_channel_wide_mention","handleEmojiSet","selectedEmoji","handleChatSoundSet","sound","handleSubmit","userOptions","shouldReload","reload","registerPlugin","md","discourse","features","inline","ruler","chatHtmlInlineRule","patterns","HTML_TAG_RE","silent","ch","token","pos","posMax","charCodeAt","lc","isLetter","str","linkLevel","isLinkClose","customMarkdownCookFn","allowList","registerOptions","bbcode","chatTranscriptRule","buildCookFunction","additionalOptions","chatAdditionalOpts","hashtagLookup","customCookFn","tag","tagInfo","messageIdStart","messageTimeStart","attrs","quote","multiQuote","noLink","channelLink","getURL","wrapperDivToken","unescapedChannelName","performEmojiUnescape","emojiSet","emojiCDNUrl","enableEmojiShortcuts","inlineEmoji","lazy","threadSvgHeader","threadUseSvg","threadTitleToken","unescapedThreadTitle","wrapperClasses","chained","avatarImg","lookupAvatar","displayName","spanToken","channelLinkToken","linkToken","emojiHtmlCache","emojiToken","extension","nodeSpec","datetime","rawContent","threadHtml","isolating","selectable","parseDOM","toDOM","wrapperElement","metaElement","channelLinkElement","userElement","formattedDateTime","messagesElement","threadDetailsElement","threadSummaryElement","threadElement","threadHeaderElement","threadTitleElement","serializeNode","utils","buildBBCodeAttrs","bbCodeAttrs","skipAttrs","write","div_chat_transcript_wrap_open","tokens","nextHtmlRaw","nesting","messagesHtml","threadHtmlRaw","attrGet","openNode","schema","nodes","div_chat_transcript_wrap_close","closeNode","div_chat_transcript_user","ignore","div_chat_transcript_user_avatar","div_chat_transcript_username","div_chat_transcript_datetime","div_chat_transcript_messages","div_chat_transcript_reaction","div_chat_transcript_reactions","div_chat_transcript_meta","details_chat_transcript_wrap","summary_chat_transcript","div_thread","div_thread_header","svg_thread_header","use_svg_thread","span_thread_title","html_raw","noCloseToken","span_open","span_close"],"sources":["discourse/plugins/chat/discourse/adapters/chat-message.js","discourse/plugins/chat/discourse/admin-chat-route-map.js","discourse/plugins/chat/discourse/chat-route-map.js","discourse/plugins/chat/discourse/components/browse-channels.js","discourse/plugins/chat/discourse/components/channel-icon/index.js","discourse/plugins/chat/discourse/components/channel-name/index.js","discourse/plugins/chat/discourse/components/channel-title/index.js","discourse/plugins/chat/discourse/components/channels-list-direct.js","discourse/plugins/chat/discourse/components/channels-list-public.js","discourse/plugins/chat/discourse/components/channels-list-starred.js","discourse/plugins/chat/discourse/components/channels-list.js","discourse/plugins/chat/discourse/components/chat-channel-archive-status.js","discourse/plugins/chat/discourse/components/chat-channel-card.js","discourse/plugins/chat/discourse/components/chat-channel-chooser-header.js","discourse/plugins/chat/discourse/components/chat-channel-chooser-row.js","discourse/plugins/chat/discourse/components/chat-channel-chooser.js","discourse/plugins/chat/discourse/components/chat-channel-filter.js","discourse/plugins/chat/discourse/components/chat-channel-leave-btn.js","discourse/plugins/chat/discourse/components/chat-channel-metadata.js","discourse/plugins/chat/discourse/components/chat-channel-preview-card.js","discourse/plugins/chat/discourse/components/chat-channel-row.js","discourse/plugins/chat/discourse/components/chat-channel-sidebar-context-menu.js","discourse/plugins/chat/discourse/components/chat-channel-sidebar-context-notification-submenu.js","discourse/plugins/chat/discourse/components/chat-channel-status.js","discourse/plugins/chat/discourse/components/chat-channel-title.js","discourse/plugins/chat/discourse/components/chat-channel-unread-indicator.js","discourse/plugins/chat/discourse/components/chat-channel.js","discourse/plugins/chat/discourse/components/chat-composer-dropdown.js","discourse/plugins/chat/discourse/components/chat-composer-message-details.js","discourse/plugins/chat/discourse/components/chat-composer-upload.js","discourse/plugins/chat/discourse/components/chat-composer-uploads.js","discourse/plugins/chat/discourse/components/chat-composer.js","discourse/plugins/chat/discourse/components/chat-drawer.js","discourse/plugins/chat/discourse/components/chat-emoji-avatar.js","discourse/plugins/chat/discourse/components/chat-footer.js","discourse/plugins/chat/discourse/components/chat-header.js","discourse/plugins/chat/discourse/components/chat-mention-warnings.js","discourse/plugins/chat/discourse/components/chat-message-actions-desktop.js","discourse/plugins/chat/discourse/components/chat-message-actions-mobile.js","discourse/plugins/chat/discourse/components/chat-message-collapser.js","discourse/plugins/chat/discourse/components/chat-message-in-reply-to-indicator.js","discourse/plugins/chat/discourse/components/chat-message-reaction.js","discourse/plugins/chat/discourse/components/chat-message-separator.js","discourse/plugins/chat/discourse/components/chat-message-text.js","discourse/plugins/chat/discourse/components/chat-message-thread-indicator.js","discourse/plugins/chat/discourse/components/chat-message.js","discourse/plugins/chat/discourse/components/chat-message/blocks/actions.js","discourse/plugins/chat/discourse/components/chat-message/blocks/block.js","discourse/plugins/chat/discourse/components/chat-message/blocks/element.js","discourse/plugins/chat/discourse/components/chat-message/blocks/elements/button.js","discourse/plugins/chat/discourse/components/chat-message/blocks/elements/category.js","discourse/plugins/chat/discourse/components/chat-message/blocks/index.js","discourse/plugins/chat/discourse/components/chat-message/blocks/informative.js","discourse/plugins/chat/discourse/components/chat-messages-container.js","discourse/plugins/chat/discourse/components/chat-messages-scroller.js","discourse/plugins/chat/discourse/components/chat-notice.js","discourse/plugins/chat/discourse/components/chat-notices.js","discourse/plugins/chat/discourse/components/chat-pinned-messages-list.js","discourse/plugins/chat/discourse/components/chat-replying-indicator.js","discourse/plugins/chat/discourse/components/chat-retention-reminder-text.js","discourse/plugins/chat/discourse/components/chat-retention-reminder.js","discourse/plugins/chat/discourse/components/chat-search.js","discourse/plugins/chat/discourse/components/chat-side-panel-resizer.js","discourse/plugins/chat/discourse/components/chat-side-panel.js","discourse/plugins/chat/discourse/components/chat-sidebar-indicators.js","discourse/plugins/chat/discourse/components/chat-skeleton.js","discourse/plugins/chat/discourse/components/chat-thread-heading.js","discourse/plugins/chat/discourse/components/chat-thread-list.js","discourse/plugins/chat/discourse/components/chat-thread-participants.js","discourse/plugins/chat/discourse/components/chat-thread-title-prompt.js","discourse/plugins/chat/discourse/components/chat-thread.js","discourse/plugins/chat/discourse/components/chat-to-topic-selector.js","discourse/plugins/chat/discourse/components/chat-upload-drop-zone.js","discourse/plugins/chat/discourse/components/chat-upload.js","discourse/plugins/chat/discourse/components/chat-user-avatar.js","discourse/plugins/chat/discourse/components/chat-user-display-name.js","discourse/plugins/chat/discourse/components/chat-user-info.js","discourse/plugins/chat/discourse/components/chat/composer/button.js","discourse/plugins/chat/discourse/components/chat/composer/channel.js","discourse/plugins/chat/discourse/components/chat/composer/separator.js","discourse/plugins/chat/discourse/components/chat/composer/thread.js","discourse/plugins/chat/discourse/components/chat/direct-message-button.js","discourse/plugins/chat/discourse/components/chat/drawer-routes/browse.js","discourse/plugins/chat/discourse/components/chat/drawer-routes/channel-info-members.js","discourse/plugins/chat/discourse/components/chat/drawer-routes/channel-info-settings.js","discourse/plugins/chat/discourse/components/chat/drawer-routes/channel-pins.js","discourse/plugins/chat/discourse/components/chat/drawer-routes/channel-thread.js","discourse/plugins/chat/discourse/components/chat/drawer-routes/channel-threads.js","discourse/plugins/chat/discourse/components/chat/drawer-routes/channel.js","discourse/plugins/chat/discourse/components/chat/drawer-routes/channels.js","discourse/plugins/chat/discourse/components/chat/drawer-routes/direct-messages.js","discourse/plugins/chat/discourse/components/chat/drawer-routes/search.js","discourse/plugins/chat/discourse/components/chat/drawer-routes/starred-channels.js","discourse/plugins/chat/discourse/components/chat/drawer-routes/threads.js","discourse/plugins/chat/discourse/components/chat/footer/unread-indicator.js","discourse/plugins/chat/discourse/components/chat/form.js","discourse/plugins/chat/discourse/components/chat/form/row.js","discourse/plugins/chat/discourse/components/chat/form/section.js","discourse/plugins/chat/discourse/components/chat/header/icon.js","discourse/plugins/chat/discourse/components/chat/header/icon/unread-indicator.js","discourse/plugins/chat/discourse/components/chat/list/empty-state.js","discourse/plugins/chat/discourse/components/chat/list/index.js","discourse/plugins/chat/discourse/components/chat/list/item.js","discourse/plugins/chat/discourse/components/chat/message-creator/add-members.js","discourse/plugins/chat/discourse/components/chat/message-creator/channel.js","discourse/plugins/chat/discourse/components/chat/message-creator/constants.js","discourse/plugins/chat/discourse/components/chat/message-creator/group.js","discourse/plugins/chat/discourse/components/chat/message-creator/index.js","discourse/plugins/chat/discourse/components/chat/message-creator/lib/chatables-loader.js","discourse/plugins/chat/discourse/components/chat/message-creator/lib/iterate-list.js","discourse/plugins/chat/discourse/components/chat/message-creator/list-action.js","discourse/plugins/chat/discourse/components/chat/message-creator/list-handler.js","discourse/plugins/chat/discourse/components/chat/message-creator/list.js","discourse/plugins/chat/discourse/components/chat/message-creator/member.js","discourse/plugins/chat/discourse/components/chat/message-creator/members-count.js","discourse/plugins/chat/discourse/components/chat/message-creator/members-selector.js","discourse/plugins/chat/discourse/components/chat/message-creator/members.js","discourse/plugins/chat/discourse/components/chat/message-creator/new-group.js","discourse/plugins/chat/discourse/components/chat/message-creator/search-input.js","discourse/plugins/chat/discourse/components/chat/message-creator/search.js","discourse/plugins/chat/discourse/components/chat/message-creator/user.js","discourse/plugins/chat/discourse/components/chat/message/avatar.js","discourse/plugins/chat/discourse/components/chat/message/error.js","discourse/plugins/chat/discourse/components/chat/message/info.js","discourse/plugins/chat/discourse/components/chat/message/left-gutter.js","discourse/plugins/chat/discourse/components/chat/modal/archive-channel.js","discourse/plugins/chat/discourse/components/chat/modal/create-channel.js","discourse/plugins/chat/discourse/components/chat/modal/delete-channel.js","discourse/plugins/chat/discourse/components/chat/modal/delete-messages-confirm.js","discourse/plugins/chat/discourse/components/chat/modal/edit-channel-description.js","discourse/plugins/chat/discourse/components/chat/modal/edit-channel-name.js","discourse/plugins/chat/discourse/components/chat/modal/move-message-to-channel.js","discourse/plugins/chat/discourse/components/chat/modal/new-message.js","discourse/plugins/chat/discourse/components/chat/modal/thread-settings.js","discourse/plugins/chat/discourse/components/chat/modal/toggle-channel-status.js","discourse/plugins/chat/discourse/components/chat/navbar/actions.js","discourse/plugins/chat/discourse/components/chat/navbar/back-button.js","discourse/plugins/chat/discourse/components/chat/navbar/browse-channels-button.js","discourse/plugins/chat/discourse/components/chat/navbar/channel-title.js","discourse/plugins/chat/discourse/components/chat/navbar/close-drawer-button.js","discourse/plugins/chat/discourse/components/chat/navbar/close-pins-button.js","discourse/plugins/chat/discourse/components/chat/navbar/close-thread-button.js","discourse/plugins/chat/discourse/components/chat/navbar/close-threads-button.js","discourse/plugins/chat/discourse/components/chat/navbar/filter.js","discourse/plugins/chat/discourse/components/chat/navbar/full-page-button.js","discourse/plugins/chat/discourse/components/chat/navbar/index.js","discourse/plugins/chat/discourse/components/chat/navbar/new-channel-button.js","discourse/plugins/chat/discourse/components/chat/navbar/new-direct-message-button.js","discourse/plugins/chat/discourse/components/chat/navbar/open-drawer-button.js","discourse/plugins/chat/discourse/components/chat/navbar/pinned-messages-button.js","discourse/plugins/chat/discourse/components/chat/navbar/sub-title.js","discourse/plugins/chat/discourse/components/chat/navbar/thread-settings-button.js","discourse/plugins/chat/discourse/components/chat/navbar/thread-tracking-dropdown.js","discourse/plugins/chat/discourse/components/chat/navbar/threads-list-button.js","discourse/plugins/chat/discourse/components/chat/navbar/title.js","discourse/plugins/chat/discourse/components/chat/navbar/toggle-drawer-button.js","discourse/plugins/chat/discourse/components/chat/notices/mention_without_membership.js","discourse/plugins/chat/discourse/components/chat/pinned-messages-list/header.js","discourse/plugins/chat/discourse/components/chat/routes/channel-info-members.js","discourse/plugins/chat/discourse/components/chat/routes/channel-info-nav.js","discourse/plugins/chat/discourse/components/chat/routes/channel-info-settings.js","discourse/plugins/chat/discourse/components/chat/routes/channel-info.js","discourse/plugins/chat/discourse/components/chat/routes/channel-pins.js","discourse/plugins/chat/discourse/components/chat/routes/channel-thread.js","discourse/plugins/chat/discourse/components/chat/routes/channel-threads.js","discourse/plugins/chat/discourse/components/chat/routes/channel.js","discourse/plugins/chat/discourse/components/chat/routes/channels.js","discourse/plugins/chat/discourse/components/chat/routes/direct-messages.js","discourse/plugins/chat/discourse/components/chat/routes/search.js","discourse/plugins/chat/discourse/components/chat/routes/starred-channels.js","discourse/plugins/chat/discourse/components/chat/routes/threads.js","discourse/plugins/chat/discourse/components/chat/scroll-to-bottom-arrow.js","discourse/plugins/chat/discourse/components/chat/selection-manager.js","discourse/plugins/chat/discourse/components/chat/thread-list/header.js","discourse/plugins/chat/discourse/components/chat/thread-list/item.js","discourse/plugins/chat/discourse/components/chat/thread/header-unread-indicator.js","discourse/plugins/chat/discourse/components/chat/thread/header.js","discourse/plugins/chat/discourse/components/collapser.js","discourse/plugins/chat/discourse/components/full-page-chat.js","discourse/plugins/chat/discourse/components/reviewable/chat-message.js","discourse/plugins/chat/discourse/components/styleguide/chat-composer-message-details.js","discourse/plugins/chat/discourse/components/styleguide/chat-composer.js","discourse/plugins/chat/discourse/components/styleguide/chat-header-icon.js","discourse/plugins/chat/discourse/components/styleguide/chat-message.js","discourse/plugins/chat/discourse/components/styleguide/chat-modal-archive-channel.js","discourse/plugins/chat/discourse/components/styleguide/chat-modal-create-channel.js","discourse/plugins/chat/discourse/components/styleguide/chat-modal-delete-channel.js","discourse/plugins/chat/discourse/components/styleguide/chat-modal-edit-channel-description.js","discourse/plugins/chat/discourse/components/styleguide/chat-modal-edit-channel-name.js","discourse/plugins/chat/discourse/components/styleguide/chat-modal-move-message-to-channel.js","discourse/plugins/chat/discourse/components/styleguide/chat-modal-new-message.js","discourse/plugins/chat/discourse/components/styleguide/chat-modal-thread-settings.js","discourse/plugins/chat/discourse/components/styleguide/chat-modal-toggle-channel-status.js","discourse/plugins/chat/discourse/components/styleguide/chat-thread-list-item.js","discourse/plugins/chat/discourse/components/styleguide/organisms/chat.js","discourse/plugins/chat/discourse/components/svg/chat-zero.js","discourse/plugins/chat/discourse/components/thread-notifications-tracking.js","discourse/plugins/chat/discourse/components/thread-title/index.js","discourse/plugins/chat/discourse/components/thread-unread-indicator/index.js","discourse/plugins/chat/discourse/components/toggle-channel-membership-button.js","discourse/plugins/chat/discourse/components/upsert-category/chat.js","discourse/plugins/chat/discourse/components/user-menu/chat-notifications-list-empty-state.js","discourse/plugins/chat/discourse/components/user-menu/chat-notifications-list.js","discourse/plugins/chat/discourse/components/user-threads/index.js","discourse/plugins/chat/discourse/components/user-threads/preview.js","discourse/plugins/chat/discourse/connectors/above-site-header/chat-body-class.js","discourse/plugins/chat/discourse/connectors/below-footer/chat-drawer-outlet.js","discourse/plugins/chat/discourse/connectors/below-footer/chat-message-actions-desktop-outlet.js","discourse/plugins/chat/discourse/connectors/chat-composer-inline-buttons/emoji-picker.js","discourse/plugins/chat/discourse/connectors/home-logo-wrapper/chat-header-connector.js","discourse/plugins/chat/discourse/connectors/user-card-below-message-button/chat-button.js","discourse/plugins/chat/discourse/connectors/user-preferences-emails-pref-email-settings/preferences-chat-emails.js","discourse/plugins/chat/discourse/connectors/user-preferences-nav/chat-preferences.js","discourse/plugins/chat/discourse/connectors/user-profile-controls/chat-button.js","discourse/plugins/chat/discourse/controllers/chat-draft-channel.js","discourse/plugins/chat/discourse/controllers/chat.js","discourse/plugins/chat/discourse/controllers/chat/channel.js","discourse/plugins/chat/discourse/controllers/chat/channel/index.js","discourse/plugins/chat/discourse/controllers/chat/channel/thread.js","discourse/plugins/chat/discourse/controllers/chat/index.js","discourse/plugins/chat/discourse/controllers/chat/new-message.js","discourse/plugins/chat/discourse/helpers/chat-guardian.js","discourse/plugins/chat/discourse/helpers/first-visible-message-id.js","discourse/plugins/chat/discourse/helpers/format-chat-date.js","discourse/plugins/chat/discourse/initializers/chat-audio.js","discourse/plugins/chat/discourse/initializers/chat-category-tab.js","discourse/plugins/chat/discourse/initializers/chat-decorators.js","discourse/plugins/chat/discourse/initializers/chat-keyboard-shortcuts.js","discourse/plugins/chat/discourse/initializers/chat-plugin-decorators.js","discourse/plugins/chat/discourse/initializers/chat-setup.js","discourse/plugins/chat/discourse/initializers/chat-sidebar.js","discourse/plugins/chat/discourse/initializers/chat-user-menu.js","discourse/plugins/chat/discourse/initializers/chat-user-options.js","discourse/plugins/chat/discourse/lib/chat-channel-subscription-manager.js","discourse/plugins/chat/discourse/lib/chat-channel-thread-subscription-manager.js","discourse/plugins/chat/discourse/lib/chat-composer-buttons.js","discourse/plugins/chat/discourse/lib/chat-constants.js","discourse/plugins/chat/discourse/lib/chat-message-container.js","discourse/plugins/chat/discourse/lib/chat-message-flag.js","discourse/plugins/chat/discourse/lib/chat-message-interactor.js","discourse/plugins/chat/discourse/lib/chat-messages-loader.js","discourse/plugins/chat/discourse/lib/chat-messages-manager.js","discourse/plugins/chat/discourse/lib/chat-notification-levels.js","discourse/plugins/chat/discourse/lib/chat-pane-state.js","discourse/plugins/chat/discourse/lib/chat-threads-manager.js","discourse/plugins/chat/discourse/lib/chat-user-preferences.js","discourse/plugins/chat/discourse/lib/check-message-visibility.js","discourse/plugins/chat/discourse/lib/collection.js","discourse/plugins/chat/discourse/lib/dates-separators-positioner.js","discourse/plugins/chat/discourse/lib/extract-current-topic-info.js","discourse/plugins/chat/discourse/lib/fabricators.js","discourse/plugins/chat/discourse/lib/get-reaction-text.js","discourse/plugins/chat/discourse/lib/get-user-chat-separate-sidebar-mode.js","discourse/plugins/chat/discourse/lib/hashtag-types/channel.js","discourse/plugins/chat/discourse/lib/init-sidebar-state.js","discourse/plugins/chat/discourse/lib/scroll-helpers.js","discourse/plugins/chat/discourse/lib/slugify-channel.js","discourse/plugins/chat/discourse/lib/textarea-interactor.js","discourse/plugins/chat/discourse/lib/transform-auto-links.js","discourse/plugins/chat/discourse/models/chat-channel-archive.js","discourse/plugins/chat/discourse/models/chat-channel.js","discourse/plugins/chat/discourse/models/chat-chatable.js","discourse/plugins/chat/discourse/models/chat-direct-message.js","discourse/plugins/chat/discourse/models/chat-message-reaction.js","discourse/plugins/chat/discourse/models/chat-message.js","discourse/plugins/chat/discourse/models/chat-notice.js","discourse/plugins/chat/discourse/models/chat-thread-preview.js","discourse/plugins/chat/discourse/models/chat-thread.js","discourse/plugins/chat/discourse/models/chat-tracking-state.js","discourse/plugins/chat/discourse/models/user-chat-channel-membership.js","discourse/plugins/chat/discourse/models/user-chat-thread-membership.js","discourse/plugins/chat/discourse/modifiers/chat/later-fn.js","discourse/plugins/chat/discourse/modifiers/chat/on-animation-end.js","discourse/plugins/chat/discourse/modifiers/chat/on-long-press.js","discourse/plugins/chat/discourse/modifiers/chat/on-scroll.js","discourse/plugins/chat/discourse/modifiers/chat/resizable-node.js","discourse/plugins/chat/discourse/modifiers/chat/scrollable-list.js","discourse/plugins/chat/discourse/modifiers/chat/track-message-separator-date.js","discourse/plugins/chat/discourse/modifiers/chat/track-message.js","discourse/plugins/chat/discourse/pre-initializers/chat-plugin-api.js","discourse/plugins/chat/discourse/preferences-chat-route-map.js","discourse/plugins/chat/discourse/routes/chat-channel-decorator.js","discourse/plugins/chat/discourse/routes/chat-channel-legacy.js","discourse/plugins/chat/discourse/routes/chat-draft-channel.js","discourse/plugins/chat/discourse/routes/chat.js","discourse/plugins/chat/discourse/routes/chat/browse.js","discourse/plugins/chat/discourse/routes/chat/browse/archived.js","discourse/plugins/chat/discourse/routes/chat/browse/index.js","discourse/plugins/chat/discourse/routes/chat/channel.js","discourse/plugins/chat/discourse/routes/chat/channel/info.js","discourse/plugins/chat/discourse/routes/chat/channel/info/index.js","discourse/plugins/chat/discourse/routes/chat/channel/info/members.js","discourse/plugins/chat/discourse/routes/chat/channel/info/search.js","discourse/plugins/chat/discourse/routes/chat/channel/near-message-with-thread.js","discourse/plugins/chat/discourse/routes/chat/channel/near-message.js","discourse/plugins/chat/discourse/routes/chat/channel/pins.js","discourse/plugins/chat/discourse/routes/chat/channel/thread.js","discourse/plugins/chat/discourse/routes/chat/channel/thread/near-message.js","discourse/plugins/chat/discourse/routes/chat/channel/threads.js","discourse/plugins/chat/discourse/routes/chat/channels.js","discourse/plugins/chat/discourse/routes/chat/direct-messages.js","discourse/plugins/chat/discourse/routes/chat/index.js","discourse/plugins/chat/discourse/routes/chat/new-message.js","discourse/plugins/chat/discourse/routes/chat/search.js","discourse/plugins/chat/discourse/routes/chat/starred-channels.js","discourse/plugins/chat/discourse/routes/chat/threads.js","discourse/plugins/chat/discourse/routes/preferences/chat.js","discourse/plugins/chat/discourse/services/chat-admin-api.js","discourse/plugins/chat/discourse/services/chat-api.js","discourse/plugins/chat/discourse/services/chat-audio-manager.js","discourse/plugins/chat/discourse/services/chat-channel-composer.js","discourse/plugins/chat/discourse/services/chat-channel-info-route-origin-manager.js","discourse/plugins/chat/discourse/services/chat-channel-notices-manager.js","discourse/plugins/chat/discourse/services/chat-channel-pane.js","discourse/plugins/chat/discourse/services/chat-channel-scroll-positions.js","discourse/plugins/chat/discourse/services/chat-channels-manager.js","discourse/plugins/chat/discourse/services/chat-composer-warnings-tracker.js","discourse/plugins/chat/discourse/services/chat-drafts-manager.js","discourse/plugins/chat/discourse/services/chat-drawer-router.js","discourse/plugins/chat/discourse/services/chat-drawer-size.js","discourse/plugins/chat/discourse/services/chat-guardian.js","discourse/plugins/chat/discourse/services/chat-history.js","discourse/plugins/chat/discourse/services/chat-notification-manager.js","discourse/plugins/chat/discourse/services/chat-pane-pending-manager.js","discourse/plugins/chat/discourse/services/chat-search-query.js","discourse/plugins/chat/discourse/services/chat-state-manager.js","discourse/plugins/chat/discourse/services/chat-subscriptions-manager.js","discourse/plugins/chat/discourse/services/chat-thread-composer.js","discourse/plugins/chat/discourse/services/chat-thread-list-pane.js","discourse/plugins/chat/discourse/services/chat-thread-pane.js","discourse/plugins/chat/discourse/services/chat-tracking-state-manager.js","discourse/plugins/chat/discourse/services/chat.js","discourse/plugins/chat/discourse/services/interacted-chat-message.js","discourse/plugins/chat/discourse/templates/chat.js","discourse/plugins/chat/discourse/templates/chat/browse.js","discourse/plugins/chat/discourse/templates/chat/browse/all.js","discourse/plugins/chat/discourse/templates/chat/browse/archived.js","discourse/plugins/chat/discourse/templates/chat/browse/closed.js","discourse/plugins/chat/discourse/templates/chat/browse/open.js","discourse/plugins/chat/discourse/templates/chat/channel.js","discourse/plugins/chat/discourse/templates/chat/channel/info.js","discourse/plugins/chat/discourse/templates/chat/channel/info/members.js","discourse/plugins/chat/discourse/templates/chat/channel/info/settings.js","discourse/plugins/chat/discourse/templates/chat/channel/pins.js","discourse/plugins/chat/discourse/templates/chat/channel/thread.js","discourse/plugins/chat/discourse/templates/chat/channel/threads.js","discourse/plugins/chat/discourse/templates/chat/channels.js","discourse/plugins/chat/discourse/templates/chat/direct-messages.js","discourse/plugins/chat/discourse/templates/chat/index.js","discourse/plugins/chat/discourse/templates/chat/search.js","discourse/plugins/chat/discourse/templates/chat/starred-channels.js","discourse/plugins/chat/discourse/templates/chat/threads.js","discourse/plugins/chat/discourse/templates/preferences/chat.js","discourse/plugins/chat/lib/discourse-markdown/chat-html-inline.js","discourse/plugins/chat/lib/discourse-markdown/chat-transcript.js","discourse/plugins/chat/lib/rich-editor-extension.js"],"sourcesContent":["define(\"discourse/plugins/chat/discourse/adapters/chat-message\", [\"exports\", \"discourse/adapters/rest\"], function (_exports, _rest) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatMessage extends _rest.default {\n    pathFor(store, type, findArgs) {\n      if (findArgs.targetMessageId) {\n        return `/chat/lookup/${findArgs.targetMessageId}.json?chat_channel_id=${findArgs.channelId}`;\n      }\n      let path = `/chat/${findArgs.channelId}/messages.json?page_size=${findArgs.pageSize}`;\n      if (findArgs.messageId) {\n        path += `&message_id=${findArgs.messageId}`;\n      }\n      if (findArgs.direction) {\n        path += `&direction=${findArgs.direction}`;\n      }\n      return path;\n    }\n    apiNameFor() {\n      return \"chat-message\";\n    }\n  }\n  _exports.default = ChatMessage;\n});","define(\"discourse/plugins/chat/discourse/admin-chat-route-map\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    resource: \"admin.adminPlugins.show\",\n    path: \"/plugins\",\n    map() {\n      this.route(\"discourse-chat-incoming-webhooks\", {\n        path: \"hooks\"\n      }, function () {\n        this.route(\"new\");\n        this.route(\"edit\", {\n          path: \"/:id/edit\"\n        });\n      });\n    }\n  };\n});","define(\"discourse/plugins/chat/discourse/chat-route-map\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _default;\n  /* eslint-disable ember/routes-segments-snake-case */\n  function _default() {\n    this.route(\"chat\", function () {\n      this.route(\"search\");\n      this.route(\"channel\", {\n        path: \"/c/:channelTitle/:channelId\"\n      }, function () {\n        this.route(\"near-message\", {\n          path: \"/:messageId\"\n        });\n        this.route(\"near-message-with-thread\", {\n          path: \"/:messageId/t/:threadId\"\n        });\n        this.route(\"threads\", {\n          path: \"/t\"\n        });\n        this.route(\"thread\", {\n          path: \"/t/:threadId\"\n        }, function () {\n          this.route(\"near-message\", {\n            path: \"/:messageId\"\n          });\n        });\n        this.route(\"pins\");\n      });\n      this.route(\"direct-messages\");\n      this.route(\"channels\");\n      this.route(\"starred-channels\");\n      this.route(\"threads\");\n      this.route(\"new-message\");\n      this.route(\"channel.info\", {\n        path: \"/c/:channelTitle/:channelId/info\"\n      }, function () {\n        this.route(\"members\");\n        this.route(\"settings\");\n      });\n      this.route(\"browse\", function () {\n        this.route(\"all\");\n        this.route(\"closed\");\n        this.route(\"open\");\n        this.route(\"archived\");\n      });\n      this.route(\"message\", {\n        path: \"/message/:messageId\"\n      });\n    });\n  }\n});","define(\"discourse/plugins/chat/discourse/components/browse-channels\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/helper\", \"@ember/object\", \"@ember/render-modifiers/modifiers/did-insert\", \"@ember/routing\", \"@ember/runloop\", \"@ember/service\", \"discourse/components/empty-state\", \"discourse/components/filter-input\", \"discourse/lib/debounce\", \"discourse/lib/environment\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/list\", \"discourse/plugins/chat/discourse/components/chat/modal/new-message\", \"discourse/plugins/chat/discourse/components/chat-channel-card\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _helper, _object, _didInsert, _routing, _runloop, _service, _emptyState, _filterInput, _debounce, _environment, _truthHelpers, _discourseI18n, _list, _newMessage, _chatChannelCard, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ARCHIVED = \"archived\";\n  const ALL = \"all\";\n  const OPEN = \"open\";\n  const CLOSED = \"closed\";\n  const TABS = [ALL, OPEN, CLOSED, ARCHIVED];\n  class BrowseChannels extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"filter\", [_tracking.tracked], function () {\n        return \"\";\n      });\n    }\n    #filter = (dt7948.i(this, \"filter\"), void 0);\n    get currentTab() {\n      return this.args.currentTab ?? ALL;\n    }\n    get channelsCollection() {\n      return this.chatApi.channels({\n        filter: this.filter,\n        status: this.currentTab\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"channelsCollection\", [_tracking.cached]);\n    }\n    get tabs() {\n      if (this.siteSettings.chat_allow_archiving_channels) {\n        return TABS;\n      } else {\n        return TABS.filter(item => item !== ARCHIVED);\n      }\n    }\n    showChatNewMessageModal() {\n      this.modal.show(_newMessage.default);\n    }\n    static {\n      dt7948.n(this.prototype, \"showChatNewMessageModal\", [_object.action]);\n    }\n    setFilter(event) {\n      this.filter = event.target.value;\n      (0, _debounce.default)(this.debouncedLoad, _environment.INPUT_DELAY);\n    }\n    static {\n      dt7948.n(this.prototype, \"setFilter\", [_object.action]);\n    }\n    debouncedLoad() {\n      this.channelsCollection.load({\n        limit: 10\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"debouncedLoad\", [_object.action]);\n    }\n    focusFilterInput(input) {\n      (0, _runloop.schedule)(\"afterRender\", () => input?.focus());\n    }\n    static {\n      dt7948.n(this.prototype, \"focusFilterInput\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"chat-browse-view\">\n        <div class=\"chat-browse-view__actions\">\n          <nav>\n            <ul class=\"nav-pills chat-browse-view__filters\">\n              {{#each this.tabs as |tab|}}\n                <li class={{concat \"chat-browse-view__filter -\" tab}}>\n                  <LinkTo\n                    @route={{concat \"chat.browse.\" tab}}\n                    class={{concat \"chat-browse-view__filter-link -\" tab}}\n                    @current-when={{eq tab this.currentTab}}\n                  >\n                    {{i18n (concat \"chat.browse.filter_\" tab)}}\n                  </LinkTo>\n                </li>\n              {{/each}}\n            </ul>\n          </nav>\n      \n          <FilterInput\n            {{didInsert this.focusFilterInput}}\n            @filterAction={{this.setFilter}}\n            @icons={{hash right=\"magnifying-glass\"}}\n            placeholder={{i18n \"chat.browse.filter_input_placeholder\"}}\n          />\n        </div>\n      \n        <div class=\"chat-browse-view__content_wrapper\">\n          <div class=\"chat-browse-view__content\">\n            <List\n              @collection={{this.channelsCollection}}\n              class=\"chat-browse-view__cards\"\n              as |list|\n            >\n              <list.Item as |channel|>\n                <ChatChannelCard @channel={{channel}} />\n              </list.Item>\n      \n              <list.EmptyState>\n                <EmptyState\n                  @title={{i18n \"chat.empty_state.title\"}}\n                  @body={{i18n \"chat.empty_state.direct_message\"}}\n                  @ctaLabel={{i18n \"chat.empty_state.direct_message_cta\"}}\n                  @ctaAction={{this.showChatNewMessageModal}}\n                />\n              </list.EmptyState>\n            </List>\n          </div>\n        </div>\n      </div>\n      */\n      {\n        \"id\": \"ewjPNsdD\",\n        \"block\": \"[[[10,0],[14,0,\\\"chat-browse-view\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-browse-view__actions\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"nav\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"ul\\\"],[14,0,\\\"nav-pills chat-browse-view__filters\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\\\"tabs\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[10,\\\"li\\\"],[15,0,[28,[32,0],[\\\"chat-browse-view__filter -\\\",[30,1]],null]],[12],[1,\\\"\\\\n            \\\"],[8,[32,1],[[16,0,[28,[32,0],[\\\"chat-browse-view__filter-link -\\\",[30,1]],null]]],[[\\\"@route\\\",\\\"@current-when\\\"],[[28,[32,0],[\\\"chat.browse.\\\",[30,1]],null],[28,[32,2],[[30,1],[30,0,[\\\"currentTab\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[1,[28,[32,3],[[28,[32,0],[\\\"chat.browse.filter_\\\",[30,1]],null]],null]],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[8,[32,4],[[16,\\\"placeholder\\\",[28,[32,3],[\\\"chat.browse.filter_input_placeholder\\\"],null]],[4,[32,6],[[30,0,[\\\"focusFilterInput\\\"]]],null]],[[\\\"@filterAction\\\",\\\"@icons\\\"],[[30,0,[\\\"setFilter\\\"]],[28,[32,5],null,[[\\\"right\\\"],[\\\"magnifying-glass\\\"]]]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"chat-browse-view__content_wrapper\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-browse-view__content\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[32,7],[[24,0,\\\"chat-browse-view__cards\\\"]],[[\\\"@collection\\\"],[[30,0,[\\\"channelsCollection\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[30,2,[\\\"Item\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[32,8],null,[[\\\"@channel\\\"],[[30,3]]],null],[1,\\\"\\\\n        \\\"]],[3]]]]],[1,\\\"\\\\n\\\\n        \\\"],[8,[30,2,[\\\"EmptyState\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[32,9],null,[[\\\"@title\\\",\\\"@body\\\",\\\"@ctaLabel\\\",\\\"@ctaAction\\\"],[[28,[32,3],[\\\"chat.empty_state.title\\\"],null],[28,[32,3],[\\\"chat.empty_state.direct_message\\\"],null],[28,[32,3],[\\\"chat.empty_state.direct_message_cta\\\"],null],[30,0,[\\\"showChatNewMessageModal\\\"]]]],null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"]],[2]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"tab\\\",\\\"list\\\",\\\"channel\\\"],[\\\"each\\\",\\\"-track-array\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/browse-channels.js\",\n        \"scope\": () => [_helper.concat, _routing.LinkTo, _truthHelpers.eq, _discourseI18n.i18n, _filterInput.default, _helper.hash, _didInsert.default, _list.default, _chatChannelCard.default, _emptyState.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = BrowseChannels;\n});","define(\"discourse/plugins/chat/discourse/components/channel-icon/index\", [\"exports\", \"@glimmer/component\", \"@ember/template\", \"discourse/helpers/concat-class\", \"discourse/helpers/d-icon\", \"discourse/helpers/replace-emoji\", \"discourse/plugins/chat/discourse/components/chat-user-avatar\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _template, _concatClass, _dIcon, _replaceEmoji, _chatUserAvatar, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelIcon extends _component.default {\n    get firstUser() {\n      return this.args.channel.chatable.users[0];\n    }\n    get groupDirectMessage() {\n      return this.args.channel.isDirectMessageChannel && this.args.channel.chatable.group;\n    }\n    get channelColorStyle() {\n      return (0, _template.trustHTML)(`color: #${this.args.channel.chatable.color}`);\n    }\n    get isThreadsList() {\n      return this.args.thread ?? false;\n    }\n    get categoryChannelIcon() {\n      const {\n        emoji\n      } = this.args.channel;\n      return emoji ? (0, _replaceEmoji.default)(`:${emoji}:`) : (0, _dIcon.default)(\"d-chat\");\n    }\n    get directChannelIcon() {\n      const {\n        emoji,\n        membershipsCount\n      } = this.args.channel;\n      return emoji ? (0, _replaceEmoji.default)(`:${emoji}:`) : membershipsCount;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if @channel.isDirectMessageChannel}}\n        {{#if this.groupDirectMessage}}\n          <div\n            class={{concatClass\n              \"chat-channel-icon\"\n              (unless @channel.emoji \"--users-count\" \"--emoji\")\n            }}\n          >\n            {{this.directChannelIcon}}\n          </div>\n        {{else}}\n          <div class=\"chat-channel-icon --avatar\">\n            <ChatUserAvatar @user={{this.firstUser}} @interactive={{false}} />\n          </div>\n        {{/if}}\n      {{else if @channel.isCategoryChannel}}\n        <div class=\"chat-channel-icon --icon\" style={{this.channelColorStyle}}>\n          {{this.categoryChannelIcon}}\n          {{#if @channel.chatable.read_restricted}}\n            {{icon \"lock\" class=\"chat-channel-icon__restricted-category-icon\"}}\n          {{/if}}\n        </div>\n      {{else if this.isThreadsList}}\n        <div class=\"chat-channel-icon --avatar\">\n          <ChatUserAvatar\n            @user={{@thread.preview.lastReplyUser}}\n            @interactive={{true}}\n            @showPresence={{false}}\n          />\n          <div class=\"avatar-flair --threads\">\n            {{icon \"discourse-threads\"}}\n          </div>\n        </div>\n      {{/if}}\n      */\n      {\n        \"id\": \"eL0xah8W\",\n        \"block\": \"[[[41,[30,1,[\\\"isDirectMessageChannel\\\"]],[[[41,[30,0,[\\\"groupDirectMessage\\\"]],[[[1,\\\"    \\\"],[10,0],[15,0,[28,[32,0],[\\\"chat-channel-icon\\\",[52,[51,[30,1,[\\\"emoji\\\"]]],\\\"--users-count\\\",\\\"--emoji\\\"]],null]],[12],[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"directChannelIcon\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"chat-channel-icon --avatar\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[32,1],null,[[\\\"@user\\\",\\\"@interactive\\\"],[[30,0,[\\\"firstUser\\\"]],false]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[]],[[[41,[30,1,[\\\"isCategoryChannel\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"chat-channel-icon --icon\\\"],[15,5,[30,0,[\\\"channelColorStyle\\\"]]],[12],[1,\\\"\\\\n    \\\"],[1,[30,0,[\\\"categoryChannelIcon\\\"]]],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"chatable\\\",\\\"read_restricted\\\"]],[[[1,\\\"      \\\"],[1,[28,[32,2],[\\\"lock\\\"],[[\\\"class\\\"],[\\\"chat-channel-icon__restricted-category-icon\\\"]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"isThreadsList\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"chat-channel-icon --avatar\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[32,1],null,[[\\\"@user\\\",\\\"@interactive\\\",\\\"@showPresence\\\"],[[30,2,[\\\"preview\\\",\\\"lastReplyUser\\\"]],true,false]],null],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"avatar-flair --threads\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[28,[32,2],[\\\"discourse-threads\\\"],null]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]]],[]]]],[\\\"@channel\\\",\\\"@thread\\\"],[\\\"if\\\",\\\"unless\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/channel-icon/index.js\",\n        \"scope\": () => [_concatClass.default, _chatUserAvatar.default, _dIcon.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatChannelIcon;\n});","define(\"discourse/plugins/chat/discourse/components/channel-name/index\", [\"exports\", \"@glimmer/component\", \"@ember/helper\", \"@ember/service\", \"@ember/template\", \"discourse/components/plugin-outlet\", \"discourse/components/user-status-message\", \"discourse/helpers/lazy-hash\", \"discourse/helpers/replace-emoji\", \"discourse/plugins/chat/discourse/components/chat-channel-unread-indicator\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _helper, _service, _template, _pluginOutlet, _userStatusMessage, _lazyHash, _replaceEmoji, _chatChannelUnreadIndicator, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelName extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    get unreadIndicator() {\n      return this.args.unreadIndicator ?? false;\n    }\n    get users() {\n      return this.args.channel.chatable.users;\n    }\n    get prefersName() {\n      return this.siteSettings.enable_names && this.siteSettings.display_name_on_posts && !this.siteSettings.prioritize_username_in_ux;\n    }\n    get directMessageTitle() {\n      if (this.users.length === 0) {\n        return this.prefersName ? this.currentUser.name || this.currentUser.username : this.currentUser.username;\n      }\n      return this.prefersName ? this.users.map(user => user.name || user.username).join(\", \") : this.users.map(user => user.username).join(\", \");\n    }\n    get channelColorStyle() {\n      return (0, _template.trustHTML)(`color: #${this.args.channel.chatable.color}`);\n    }\n    get showUserStatus() {\n      if (!this.args.channel.isDirectMessageChannel) {\n        return false;\n      }\n      return !!(this.users.length === 1 && this.users[0].status);\n    }\n    get channelTitle() {\n      if (this.args.channel.isDirectMessageChannel) {\n        return this.args.channel.displayTitle ?? this.directMessageTitle;\n      }\n      return this.args.channel.displayTitle;\n    }\n    get showPluginOutlet() {\n      return this.args.channel.isDirectMessageChannel && !this.args.channel.chatable.group;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"chat-channel-name\">\n        <div class=\"chat-channel-name__label\">\n          {{replaceEmoji this.channelTitle}}\n      \n          {{#if this.showUserStatus}}\n            <UserStatusMessage\n              @status={{get this.users \"0.status\"}}\n              @showDescription={{if this.site.mobileView \"true\"}}\n              class=\"chat-channel__user-status-message\"\n            />\n          {{/if}}\n      \n          <PluginOutlet\n            @name=\"after-chat-channel-username\"\n            @outletArgs={{if this.showPluginOutlet (lazyHash user=@user)}}\n          />\n      \n          {{#if (has-block)}}\n            {{yield}}\n          {{/if}}\n        </div>\n      \n        {{#if this.unreadIndicator}}\n          <ChatChannelUnreadIndicator @channel={{@channel}} />\n        {{/if}}\n      </div>\n      */\n      {\n        \"id\": \"j8enjLUy\",\n        \"block\": \"[[[10,0],[14,0,\\\"chat-channel-name\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-channel-name__label\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[28,[32,0],[[30,0,[\\\"channelTitle\\\"]]],null]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"showUserStatus\\\"]],[[[1,\\\"      \\\"],[8,[32,1],[[24,0,\\\"chat-channel__user-status-message\\\"]],[[\\\"@status\\\",\\\"@showDescription\\\"],[[28,[32,2],[[30,0,[\\\"users\\\"]],\\\"0.status\\\"],null],[52,[30,0,[\\\"site\\\",\\\"mobileView\\\"]],\\\"true\\\"]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n    \\\"],[8,[32,3],null,[[\\\"@name\\\",\\\"@outletArgs\\\"],[\\\"after-chat-channel-username\\\",[52,[30,0,[\\\"showPluginOutlet\\\"]],[28,[32,4],null,[[\\\"user\\\"],[[30,1]]]]]]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[48,[30,3]],[[[1,\\\"      \\\"],[18,3,null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"unreadIndicator\\\"]],[[[1,\\\"    \\\"],[8,[32,5],null,[[\\\"@channel\\\"],[[30,2]]],null],[1,\\\"\\\\n\\\"]],[]],null],[13]],[\\\"@user\\\",\\\"@channel\\\",\\\"&default\\\"],[\\\"if\\\",\\\"has-block\\\",\\\"yield\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/channel-name/index.js\",\n        \"scope\": () => [_replaceEmoji.default, _userStatusMessage.default, _helper.get, _pluginOutlet.default, _lazyHash.default, _chatChannelUnreadIndicator.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatChannelName;\n});","define(\"discourse/plugins/chat/discourse/components/channel-title/index\", [\"exports\", \"discourse/helpers/concat-class\", \"discourse/plugins/chat/discourse/components/channel-icon\", \"discourse/plugins/chat/discourse/components/channel-name\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _concatClass, _channelIcon, _channelName, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatChannelTitle = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div\n    class={{concatClass\n      \"chat-channel-title\"\n      (if @channel.isDirectMessageChannel \"is-dm\" \"is-category\")\n    }}\n  >\n    <ChannelIcon @channel={{@channel}} />\n    <ChannelName @channel={{@channel}} />\n  \n    {{#if @isUnread}}\n      <div class=\"unread-indicator {{if @isUrgent '-urgent'}}\"></div>\n    {{/if}}\n  \n    {{#if (has-block)}}\n      {{yield}}\n    {{/if}}\n  </div>\n  */\n  {\n    \"id\": \"Rmt+RzwT\",\n    \"block\": \"[[[10,0],[15,0,[28,[32,0],[\\\"chat-channel-title\\\",[52,[30,1,[\\\"isDirectMessageChannel\\\"]],\\\"is-dm\\\",\\\"is-category\\\"]],null]],[12],[1,\\\"\\\\n  \\\"],[8,[32,1],null,[[\\\"@channel\\\"],[[30,1]]],null],[1,\\\"\\\\n  \\\"],[8,[32,2],null,[[\\\"@channel\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,2],[[[1,\\\"    \\\"],[10,0],[15,0,[29,[\\\"unread-indicator \\\",[52,[30,3],\\\"-urgent\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[48,[30,4]],[[[1,\\\"    \\\"],[18,4,null],[1,\\\"\\\\n\\\"]],[]],null],[13]],[\\\"@channel\\\",\\\"@isUnread\\\",\\\"@isUrgent\\\",\\\"&default\\\"],[\\\"if\\\",\\\"has-block\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/channel-title/index.js\",\n    \"scope\": () => [_concatClass.default, _channelIcon.default, _channelName.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"channel-title:ChatChannelTitle\"));\n  var _default = _exports.default = ChatChannelTitle;\n});","define(\"discourse/plugins/chat/discourse/components/channels-list-direct\", [\"exports\", \"@glimmer/component\", \"@ember/helper\", \"@ember/modifier\", \"@ember/object\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/components/empty-state\", \"discourse/components/plugin-outlet\", \"discourse/helpers/concat-class\", \"discourse/helpers/d-icon\", \"discourse/helpers/lazy-hash\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/modal/new-message\", \"discourse/plugins/chat/discourse/components/chat-channel-row\", \"discourse/plugins/chat/discourse/components/svg/chat-zero\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _helper, _modifier, _object, _service, _dButton, _emptyState, _pluginOutlet, _concatClass, _dIcon, _lazyHash, _truthHelpers, _discourseI18n, _newMessage, _chatChannelRow, _chatZero, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChannelsListDirect extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    get inSidebar() {\n      return this.args.inSidebar ?? false;\n    }\n    get createDirectMessageChannelLabel() {\n      if (!this.canCreateDirectMessageChannel) {\n        return \"chat.direct_messages.cannot_create\";\n      }\n      return \"chat.direct_messages.new\";\n    }\n    get showDirectMessageChannels() {\n      return this.canCreateDirectMessageChannel || !this.directMessageChannelsEmpty;\n    }\n    get canCreateDirectMessageChannel() {\n      return this.chat.userCanDirectMessage;\n    }\n    get directMessageChannelsEmpty() {\n      return this.chatChannelsManager.directMessageChannels?.length === 0;\n    }\n    get channelList() {\n      if (this.inSidebar) {\n        return this.chatChannelsManager.truncatedUnstarredDirectMessageChannels;\n      }\n      // In mobile/drawer, show all channels including starred, sorted by activity\n      return this.chatChannelsManager.truncatedDirectMessageChannelsByActivity;\n    }\n    toggleChannelSection(section) {\n      this.args.toggleSection(section);\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleChannelSection\", [_object.action]);\n    }\n    openNewMessageModal() {\n      this.modal.show(_newMessage.default);\n    }\n    static {\n      dt7948.n(this.prototype, \"openNewMessageModal\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if\n        (and\n          this.showDirectMessageChannels\n          (or\n            this.site.desktopView\n            (not this.chatChannelsManager.displayPublicChannels)\n          )\n        )\n      }}\n        <div class=\"chat-channel-divider direct-message-channels-section\">\n          {{#if this.inSidebar}}\n            <span\n              class=\"title-caret\"\n              id=\"direct-message-channels-caret\"\n              role=\"button\"\n              title=\"toggle nav list\"\n              {{on\n                \"click\"\n                (fn this.toggleChannelSection \"direct-message-channels\")\n              }}\n              data-toggleable=\"direct-message-channels\"\n            >\n              {{icon \"angle-up\"}}\n            </span>\n          {{/if}}\n      \n          <span class=\"channel-title\">{{i18n \"chat.direct_messages.title\"}}</span>\n      \n          {{#if this.canCreateDirectMessageChannel}}\n            <DButton\n              @icon=\"plus\"\n              class=\"no-text btn-flat open-new-message-btn\"\n              @action={{this.openNewMessageModal}}\n              title={{i18n this.createDirectMessageChannelLabel}}\n            />\n          {{/if}}\n        </div>\n      {{/if}}\n      \n      <div\n        id=\"direct-message-channels\"\n        class={{concatClass\n          \"channels-list-container\"\n          \"direct-message-channels\"\n          (if this.inSidebar \"collapsible-sidebar-section\")\n          (if this.directMessageChannelsEmpty \"center-empty-channels-list\")\n        }}\n      >\n        {{#if this.directMessageChannelsEmpty}}\n          <EmptyState\n            @identifier=\"empty-channels-list\"\n            @svgContent={{ChatZero}}\n            @title={{i18n \"chat.no_direct_message_channels\"}}\n            @ctaLabel={{if\n              this.canCreateDirectMessageChannel\n              (i18n \"chat.no_direct_message_channels_cta\")\n            }}\n            @ctaAction={{this.openNewMessageModal}}\n          />\n        {{else}}\n          {{#each this.channelList as |channel|}}\n            <ChatChannelRow\n              @channel={{channel}}\n              @options={{hash leaveButton=true}}\n            />\n          {{/each}}\n        {{/if}}\n      </div>\n      \n      <PluginOutlet\n        @name=\"below-direct-chat-channels\"\n        @outletArgs={{lazyHash inSidebar=this.inSidebar}}\n      />\n      */\n      {\n        \"id\": \"yP9LfBFw\",\n        \"block\": \"[[[41,[28,[32,0],[[30,0,[\\\"showDirectMessageChannels\\\"]],[28,[32,1],[[30,0,[\\\"site\\\",\\\"desktopView\\\"]],[28,[32,2],[[30,0,[\\\"chatChannelsManager\\\",\\\"displayPublicChannels\\\"]]],null]],null]],null],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"chat-channel-divider direct-message-channels-section\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"inSidebar\\\"]],[[[1,\\\"      \\\"],[11,1],[24,0,\\\"title-caret\\\"],[24,1,\\\"direct-message-channels-caret\\\"],[24,\\\"role\\\",\\\"button\\\"],[24,\\\"title\\\",\\\"toggle nav list\\\"],[24,\\\"data-toggleable\\\",\\\"direct-message-channels\\\"],[4,[32,3],[\\\"click\\\",[28,[32,4],[[30,0,[\\\"toggleChannelSection\\\"]],\\\"direct-message-channels\\\"],null]],null],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,5],[\\\"angle-up\\\"],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"channel-title\\\"],[12],[1,[28,[32,6],[\\\"chat.direct_messages.title\\\"],null]],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"canCreateDirectMessageChannel\\\"]],[[[1,\\\"      \\\"],[8,[32,7],[[24,0,\\\"no-text btn-flat open-new-message-btn\\\"],[16,\\\"title\\\",[28,[32,6],[[30,0,[\\\"createDirectMessageChannelLabel\\\"]]],null]]],[[\\\"@icon\\\",\\\"@action\\\"],[\\\"plus\\\",[30,0,[\\\"openNewMessageModal\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[10,0],[14,1,\\\"direct-message-channels\\\"],[15,0,[28,[32,8],[\\\"channels-list-container\\\",\\\"direct-message-channels\\\",[52,[30,0,[\\\"inSidebar\\\"]],\\\"collapsible-sidebar-section\\\"],[52,[30,0,[\\\"directMessageChannelsEmpty\\\"]],\\\"center-empty-channels-list\\\"]],null]],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"directMessageChannelsEmpty\\\"]],[[[1,\\\"    \\\"],[8,[32,9],null,[[\\\"@identifier\\\",\\\"@svgContent\\\",\\\"@title\\\",\\\"@ctaLabel\\\",\\\"@ctaAction\\\"],[\\\"empty-channels-list\\\",[32,10],[28,[32,6],[\\\"chat.no_direct_message_channels\\\"],null],[52,[30,0,[\\\"canCreateDirectMessageChannel\\\"]],[28,[32,6],[\\\"chat.no_direct_message_channels_cta\\\"],null]],[30,0,[\\\"openNewMessageModal\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[42,[28,[31,2],[[28,[31,2],[[30,0,[\\\"channelList\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[8,[32,11],null,[[\\\"@channel\\\",\\\"@options\\\"],[[30,1],[28,[32,12],null,[[\\\"leaveButton\\\"],[true]]]]],null],[1,\\\"\\\\n\\\"]],[1]],null]],[]]],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[32,13],null,[[\\\"@name\\\",\\\"@outletArgs\\\"],[\\\"below-direct-chat-channels\\\",[28,[32,14],null,[[\\\"inSidebar\\\"],[[30,0,[\\\"inSidebar\\\"]]]]]]],null]],[\\\"channel\\\"],[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/channels-list-direct.js\",\n        \"scope\": () => [_truthHelpers.and, _truthHelpers.or, _truthHelpers.not, _modifier.on, _helper.fn, _dIcon.default, _discourseI18n.i18n, _dButton.default, _concatClass.default, _emptyState.default, _chatZero.default, _chatChannelRow.default, _helper.hash, _pluginOutlet.default, _lazyHash.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChannelsListDirect;\n});","define(\"discourse/plugins/chat/discourse/components/channels-list-public\", [\"exports\", \"@glimmer/component\", \"@ember/helper\", \"@ember/modifier\", \"@ember/object\", \"@ember/routing\", \"@ember/service\", \"discourse/components/empty-state\", \"discourse/components/plugin-outlet\", \"discourse/helpers/concat-class\", \"discourse/helpers/d-icon\", \"discourse/helpers/lazy-hash\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat-channel-row\", \"discourse/plugins/chat/discourse/components/svg/chat-zero\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _helper, _modifier, _object, _routing, _service, _emptyState, _pluginOutlet, _concatClass, _dIcon, _lazyHash, _truthHelpers, _discourseI18n, _chatChannelRow, _chatZero, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChannelsListPublic extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatTrackingStateManager\", [_service.service]);\n    }\n    #chatTrackingStateManager = (dt7948.i(this, \"chatTrackingStateManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    get inSidebar() {\n      return this.args.inSidebar ?? false;\n    }\n    get hasUnreadThreads() {\n      return this.chatTrackingStateManager.hasUnreadThreads;\n    }\n    get shouldShowMyThreads() {\n      return this.chatChannelsManager.shouldShowMyThreads;\n    }\n    get channelList() {\n      if (this.inSidebar) {\n        return this.chatChannelsManager.unstarredPublicMessageChannelsByActivity;\n      }\n      // In mobile/drawer, show all channels including starred, sorted by activity\n      return this.chatChannelsManager.allPublicChannelsByActivity;\n    }\n    toggleChannelSection(section) {\n      this.args.toggleSection(section);\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleChannelSection\", [_object.action]);\n    }\n    openBrowseChannels() {\n      this.router.transitionTo(\"chat.browse\");\n    }\n    static {\n      dt7948.n(this.prototype, \"openBrowseChannels\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if (and this.site.desktopView this.inSidebar this.shouldShowMyThreads)}}\n        <LinkTo @route=\"chat.threads\" class=\"chat-channel-row --threads\">\n          <span class=\"chat-channel-title\">\n            {{icon \"discourse-threads\" class=\"chat-user-threads__icon\"}}\n            {{i18n \"chat.my_threads.title\"}}\n          </span>\n          {{#if this.hasUnreadThreads}}\n            <div class=\"c-unread-indicator\">\n              <div class=\"c-unread-indicator__number\">&nbsp;</div>\n            </div>\n          {{/if}}\n        </LinkTo>\n      {{/if}}\n      \n      {{#if\n        (and this.chatChannelsManager.displayPublicChannels this.site.desktopView)\n      }}\n        <div class=\"chat-channel-divider public-channels-section\">\n          {{#if this.inSidebar}}\n            <span\n              class=\"title-caret\"\n              id=\"public-channels-caret\"\n              role=\"button\"\n              title=\"toggle nav list\"\n              {{on \"click\" (fn this.toggleChannelSection \"public-channels\")}}\n              data-toggleable=\"public-channels\"\n            >\n              {{icon \"angle-up\"}}\n            </span>\n          {{/if}}\n      \n          <span class=\"channel-title\">{{i18n \"chat.chat_channels\"}}</span>\n      \n          <LinkTo\n            @route=\"chat.browse\"\n            class=\"btn no-text btn-flat open-browse-page-btn title-action\"\n            title={{i18n \"chat.channels_list_popup.browse\"}}\n          >\n            {{icon \"pencil\"}}\n          </LinkTo>\n        </div>\n      {{/if}}\n      \n      <div\n        id=\"public-channels\"\n        class={{concatClass\n          \"channels-list-container\"\n          \"public-channels\"\n          (if this.inSidebar \"collapsible-sidebar-section\")\n        }}\n      >\n        {{#if this.chatChannelsManager.publicMessageChannelsEmpty}}\n          <EmptyState\n            @identifier=\"empty-channels-list\"\n            @svgContent={{ChatZero}}\n            @title={{i18n \"chat.no_public_channels\"}}\n            @ctaLabel={{if\n              this.chatChannelsManager.displayPublicChannels\n              (i18n \"chat.no_public_channels_cta\")\n            }}\n            @ctaAction={{this.openBrowseChannels}}\n          />\n        {{else}}\n          {{#each this.channelList as |channel|}}\n            <ChatChannelRow\n              @channel={{channel}}\n              @options={{hash settingsButton=true}}\n            />\n          {{/each}}\n        {{/if}}\n      </div>\n      \n      <PluginOutlet\n        @name=\"below-public-chat-channels\"\n        @outletArgs={{lazyHash inSidebar=this.inSidebar}}\n      />\n      */\n      {\n        \"id\": \"c8ccHCOm\",\n        \"block\": \"[[[41,[28,[32,0],[[30,0,[\\\"site\\\",\\\"desktopView\\\"]],[30,0,[\\\"inSidebar\\\"]],[30,0,[\\\"shouldShowMyThreads\\\"]]],null],[[[1,\\\"  \\\"],[8,[32,1],[[24,0,\\\"chat-channel-row --threads\\\"]],[[\\\"@route\\\"],[\\\"chat.threads\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"chat-channel-title\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[28,[32,2],[\\\"discourse-threads\\\"],[[\\\"class\\\"],[\\\"chat-user-threads__icon\\\"]]]],[1,\\\"\\\\n      \\\"],[1,[28,[32,3],[\\\"chat.my_threads.title\\\"],null]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"hasUnreadThreads\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"c-unread-indicator\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"c-unread-indicator__number\\\"],[12],[1,\\\" \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[32,0],[[30,0,[\\\"chatChannelsManager\\\",\\\"displayPublicChannels\\\"]],[30,0,[\\\"site\\\",\\\"desktopView\\\"]]],null],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"chat-channel-divider public-channels-section\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"inSidebar\\\"]],[[[1,\\\"      \\\"],[11,1],[24,0,\\\"title-caret\\\"],[24,1,\\\"public-channels-caret\\\"],[24,\\\"role\\\",\\\"button\\\"],[24,\\\"title\\\",\\\"toggle nav list\\\"],[24,\\\"data-toggleable\\\",\\\"public-channels\\\"],[4,[32,4],[\\\"click\\\",[28,[32,5],[[30,0,[\\\"toggleChannelSection\\\"]],\\\"public-channels\\\"],null]],null],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,2],[\\\"angle-up\\\"],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"channel-title\\\"],[12],[1,[28,[32,3],[\\\"chat.chat_channels\\\"],null]],[13],[1,\\\"\\\\n\\\\n    \\\"],[8,[32,1],[[24,0,\\\"btn no-text btn-flat open-browse-page-btn title-action\\\"],[16,\\\"title\\\",[28,[32,3],[\\\"chat.channels_list_popup.browse\\\"],null]]],[[\\\"@route\\\"],[\\\"chat.browse\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[1,[28,[32,2],[\\\"pencil\\\"],null]],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[10,0],[14,1,\\\"public-channels\\\"],[15,0,[28,[32,6],[\\\"channels-list-container\\\",\\\"public-channels\\\",[52,[30,0,[\\\"inSidebar\\\"]],\\\"collapsible-sidebar-section\\\"]],null]],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"chatChannelsManager\\\",\\\"publicMessageChannelsEmpty\\\"]],[[[1,\\\"    \\\"],[8,[32,7],null,[[\\\"@identifier\\\",\\\"@svgContent\\\",\\\"@title\\\",\\\"@ctaLabel\\\",\\\"@ctaAction\\\"],[\\\"empty-channels-list\\\",[32,8],[28,[32,3],[\\\"chat.no_public_channels\\\"],null],[52,[30,0,[\\\"chatChannelsManager\\\",\\\"displayPublicChannels\\\"]],[28,[32,3],[\\\"chat.no_public_channels_cta\\\"],null]],[30,0,[\\\"openBrowseChannels\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[42,[28,[31,2],[[28,[31,2],[[30,0,[\\\"channelList\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[8,[32,9],null,[[\\\"@channel\\\",\\\"@options\\\"],[[30,1],[28,[32,10],null,[[\\\"settingsButton\\\"],[true]]]]],null],[1,\\\"\\\\n\\\"]],[1]],null]],[]]],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[32,11],null,[[\\\"@name\\\",\\\"@outletArgs\\\"],[\\\"below-public-chat-channels\\\",[28,[32,12],null,[[\\\"inSidebar\\\"],[[30,0,[\\\"inSidebar\\\"]]]]]]],null]],[\\\"channel\\\"],[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/channels-list-public.js\",\n        \"scope\": () => [_truthHelpers.and, _routing.LinkTo, _dIcon.default, _discourseI18n.i18n, _modifier.on, _helper.fn, _concatClass.default, _emptyState.default, _chatZero.default, _chatChannelRow.default, _helper.hash, _pluginOutlet.default, _lazyHash.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChannelsListPublic;\n});","define(\"discourse/plugins/chat/discourse/components/channels-list-starred\", [\"exports\", \"@glimmer/component\", \"@ember/helper\", \"@ember/service\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat-channel-row\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _helper, _service, _discourseI18n, _chatChannelRow, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChannelsListStarred extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    get inSidebar() {\n      return this.args.inSidebar ?? false;\n    }\n    get channelList() {\n      if (this.args.channels) {\n        return this.args.channels;\n      }\n      if (!this.inSidebar) {\n        return this.chatChannelsManager.starredChannelsByActivity;\n      }\n      return this.chatChannelsManager.starredChannels;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"channels-list-container starred-channels\">\n        {{#each this.channelList as |channel|}}\n          <ChatChannelRow\n            @channel={{channel}}\n            @options={{hash leaveButton=channel.isDirectMessageChannel}}\n          />\n        {{else}}\n          <div class=\"chat-channel-list__empty\">\n            <span class=\"chat-channel-list__empty-message\">\n              {{i18n \"chat.starred_channels_empty\"}}\n            </span>\n          </div>\n        {{/each}}\n      </div>\n      */\n      {\n        \"id\": \"Xk3BE3fp\",\n        \"block\": \"[[[10,0],[14,0,\\\"channels-list-container starred-channels\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\\\"channelList\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[8,[32,0],null,[[\\\"@channel\\\",\\\"@options\\\"],[[30,1],[28,[32,1],null,[[\\\"leaveButton\\\"],[[30,1,[\\\"isDirectMessageChannel\\\"]]]]]]],null],[1,\\\"\\\\n\\\"]],[1]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"chat-channel-list__empty\\\"],[12],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"chat-channel-list__empty-message\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,2],[\\\"chat.starred_channels_empty\\\"],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[13]],[\\\"channel\\\"],[\\\"each\\\",\\\"-track-array\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/channels-list-starred.js\",\n        \"scope\": () => [_chatChannelRow.default, _helper.hash, _discourseI18n.i18n],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChannelsListStarred;\n});","define(\"discourse/plugins/chat/discourse/components/channels-list\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/channels-list-direct\", \"discourse/plugins/chat/discourse/components/channels-list-public\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _discourseI18n, _channelsListDirect, _channelsListPublic, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChannelsList extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div\n        role=\"region\"\n        aria-label={{i18n \"chat.aria_roles.channels_list\"}}\n        class=\"channels-list\"\n      >\n        <ChannelsListPublic />\n      \n        {{#if this.chat.userCanAccessDirectMessages}}\n          <ChannelsListDirect />\n        {{/if}}\n      </div>\n      */\n      {\n        \"id\": \"7WJ3FkxU\",\n        \"block\": \"[[[10,0],[14,\\\"role\\\",\\\"region\\\"],[15,\\\"aria-label\\\",[28,[32,0],[\\\"chat.aria_roles.channels_list\\\"],null]],[14,0,\\\"channels-list\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[32,1],null,null,null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"chat\\\",\\\"userCanAccessDirectMessages\\\"]],[[[1,\\\"    \\\"],[8,[32,2],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[13]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/channels-list.js\",\n        \"scope\": () => [_discourseI18n.i18n, _channelsListPublic.default, _channelsListDirect.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChannelsList;\n});","define(\"discourse/plugins/chat/discourse/components/chat-channel-archive-status\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/service\", \"@ember/template\", \"@ember/utils\", \"discourse/components/d-button\", \"discourse/helpers/concat-class\", \"discourse/lib/ajax-error\", \"discourse/lib/get-url\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _template, _utils, _dButton, _concatClass, _ajaxError, _getUrl, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelArchiveStatus extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    get shouldRender() {\n      return this.currentUser.admin && (0, _utils.isPresent)(this.args.channel.archive);\n    }\n    get channelArchiveFailedMessage() {\n      const archive = this.args.channel.archive;\n      const translationKey = !archive.topicId ? \"chat.channel_status.archive_failed_no_topic\" : \"chat.channel_status.archive_failed\";\n      return (0, _template.trustHTML)((0, _discourseI18n.i18n)(translationKey, {\n        completed: archive.messages,\n        total: archive.totalMessages,\n        topic_url: this.topicUrl\n      }));\n    }\n    get channelArchiveCompletedMessage() {\n      return (0, _template.trustHTML)((0, _discourseI18n.i18n)(\"chat.channel_status.archive_completed\", {\n        topic_url: this.topicUrl\n      }));\n    }\n    retryArchive() {\n      return this.chatApi.createChannelArchive(this.args.channel.id).catch(_ajaxError.popupAjaxError);\n    }\n    static {\n      dt7948.n(this.prototype, \"retryArchive\", [_object.action]);\n    }\n    get topicUrl() {\n      if (!this.args.channel.archive.topicId) {\n        return \"\";\n      }\n      return (0, _getUrl.default)(`/t/-/${this.args.channel.archive.topicId}`);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.shouldRender}}\n        {{#if @channel.archive.failed}}\n          <div\n            class={{concatClass\n              \"alert alert-warn chat-channel-retry-archive\"\n              @channel.status\n            }}\n          >\n            <div class=\"chat-channel-archive-failed-message\">\n              {{this.channelArchiveFailedMessage}}\n            </div>\n      \n            <div class=\"chat-channel-archive-failed-retry\">\n              <DButton\n                @action={{this.retryArchive}}\n                @label=\"chat.channel_archive.retry\"\n              />\n            </div>\n          </div>\n        {{else if @channel.archive.completed}}\n          <div\n            class={{concatClass \"chat-channel-archive-status\" @channel.status}}\n          >\n            {{this.channelArchiveCompletedMessage}}\n          </div>\n        {{/if}}\n      {{/if}}\n      */\n      {\n        \"id\": \"pLQNa8MH\",\n        \"block\": \"[[[41,[30,0,[\\\"shouldRender\\\"]],[[[41,[30,1,[\\\"archive\\\",\\\"failed\\\"]],[[[1,\\\"    \\\"],[10,0],[15,0,[28,[32,0],[\\\"alert alert-warn chat-channel-retry-archive\\\",[30,1,[\\\"status\\\"]]],null]],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"chat-channel-archive-failed-message\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[30,0,[\\\"channelArchiveFailedMessage\\\"]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,0],[14,0,\\\"chat-channel-archive-failed-retry\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[32,1],null,[[\\\"@action\\\",\\\"@label\\\"],[[30,0,[\\\"retryArchive\\\"]],\\\"chat.channel_archive.retry\\\"]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,1,[\\\"archive\\\",\\\"completed\\\"]],[[[1,\\\"    \\\"],[10,0],[15,0,[28,[32,0],[\\\"chat-channel-archive-status\\\",[30,1,[\\\"status\\\"]]],null]],[12],[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"channelArchiveCompletedMessage\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]],null]],[]]]],[]],null]],[\\\"@channel\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-channel-archive-status.js\",\n        \"scope\": () => [_concatClass.default, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatChannelArchiveStatus;\n});","define(\"discourse/plugins/chat/discourse/components/chat-channel-card\", [\"exports\", \"@ember/helper\", \"@ember/routing\", \"@ember/template\", \"discourse/helpers/concat-class\", \"discourse/helpers/d-icon\", \"discourse/helpers/replace-emoji\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/toggle-channel-membership-button\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _helper, _routing, _template, _concatClass, _dIcon, _replaceEmoji, _truthHelpers, _discourseI18n, _toggleChannelMembershipButton, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @channel}}\n    <div\n      class={{concatClass\n        \"chat-channel-card\"\n        (if @channel.isClosed \"--closed\")\n        (if @channel.isArchived \"--archived\")\n      }}\n      style={{trustHTML\n        (concat \"--chat-channel-card-border: #\" @channel.chatable.color)\n      }}\n      data-channel-id={{@channel.id}}\n    >\n      <div class=\"chat-channel-card__header\">\n        <LinkTo\n          @route=\"chat.channel\"\n          @models={{@channel.routeModels}}\n          class=\"chat-channel-card__name-container\"\n        >\n          <span class=\"chat-channel-card__name\">\n            {{replaceEmoji @channel.title}}\n          </span>\n          {{#if @channel.chatable.read_restricted}}\n            {{icon \"lock\" class=\"chat-channel-card__read-restricted\"}}\n          {{/if}}\n          {{#if @channel.currentUserMembership.muted}}\n            <span\n              class=\"chat-channel-card__muted\"\n              aria-label={{i18n \"chat.muted\"}}\n              title={{i18n \"chat.muted\"}}\n            >{{icon \"d-muted\"}}</span>\n          {{/if}}\n        </LinkTo>\n      </div>\n  \n      <div class=\"chat-channel-card__cta\">\n        {{#if @channel.isFollowing}}\n          <ToggleChannelMembershipButton\n            @channel={{@channel}}\n            @options={{hash\n              leaveClass=\"btn-transparent --danger chat-channel-card__leave-btn\"\n              labelType=\"short\"\n            }}\n          />\n  \n        {{else if @channel.isJoinable}}\n          <ToggleChannelMembershipButton\n            @channel={{@channel}}\n            @options={{hash\n              joinClass=\"btn-primary btn-small chat-channel-card__join-btn\"\n              labelType=\"short\"\n            }}\n          />\n        {{/if}}\n      </div>\n  \n      {{#if (gt @channel.membershipsCount 0)}}\n        <LinkTo\n          @route=\"chat.channel.info.members\"\n          @models={{@channel.routeModels}}\n          class=\"chat-channel-card__members\"\n        >\n          {{i18n\n            \"chat.channel.memberships_count\"\n            count=@channel.membershipsCount\n          }}\n        </LinkTo>\n      {{/if}}\n  \n      {{#if @channel.description}}\n        <div class=\"chat-channel-card__description\">\n          {{replaceEmoji @channel.description}}\n        </div>\n      {{/if}}\n    </div>\n  {{/if}}\n  */\n  {\n    \"id\": \"E5xEpcRa\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[10,0],[15,0,[28,[32,0],[\\\"chat-channel-card\\\",[52,[30,1,[\\\"isClosed\\\"]],\\\"--closed\\\"],[52,[30,1,[\\\"isArchived\\\"]],\\\"--archived\\\"]],null]],[15,5,[28,[32,1],[[28,[32,2],[\\\"--chat-channel-card-border: #\\\",[30,1,[\\\"chatable\\\",\\\"color\\\"]]],null]],null]],[15,\\\"data-channel-id\\\",[30,1,[\\\"id\\\"]]],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-channel-card__header\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[32,3],[[24,0,\\\"chat-channel-card__name-container\\\"]],[[\\\"@route\\\",\\\"@models\\\"],[\\\"chat.channel\\\",[30,1,[\\\"routeModels\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"chat-channel-card__name\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[28,[32,4],[[30,1,[\\\"title\\\"]]],null]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"chatable\\\",\\\"read_restricted\\\"]],[[[1,\\\"          \\\"],[1,[28,[32,5],[\\\"lock\\\"],[[\\\"class\\\"],[\\\"chat-channel-card__read-restricted\\\"]]]],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"currentUserMembership\\\",\\\"muted\\\"]],[[[1,\\\"          \\\"],[10,1],[14,0,\\\"chat-channel-card__muted\\\"],[15,\\\"aria-label\\\",[28,[32,6],[\\\"chat.muted\\\"],null]],[15,\\\"title\\\",[28,[32,6],[\\\"chat.muted\\\"],null]],[12],[1,[28,[32,5],[\\\"d-muted\\\"],null]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,0,\\\"chat-channel-card__cta\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"isFollowing\\\"]],[[[1,\\\"        \\\"],[8,[32,7],null,[[\\\"@channel\\\",\\\"@options\\\"],[[30,1],[28,[32,8],null,[[\\\"leaveClass\\\",\\\"labelType\\\"],[\\\"btn-transparent --danger chat-channel-card__leave-btn\\\",\\\"short\\\"]]]]],null],[1,\\\"\\\\n\\\\n\\\"]],[]],[[[41,[30,1,[\\\"isJoinable\\\"]],[[[1,\\\"        \\\"],[8,[32,7],null,[[\\\"@channel\\\",\\\"@options\\\"],[[30,1],[28,[32,8],null,[[\\\"joinClass\\\",\\\"labelType\\\"],[\\\"btn-primary btn-small chat-channel-card__join-btn\\\",\\\"short\\\"]]]]],null],[1,\\\"\\\\n      \\\"]],[]],null]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[32,9],[[30,1,[\\\"membershipsCount\\\"]],0],null],[[[1,\\\"      \\\"],[8,[32,3],[[24,0,\\\"chat-channel-card__members\\\"]],[[\\\"@route\\\",\\\"@models\\\"],[\\\"chat.channel.info.members\\\",[30,1,[\\\"routeModels\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[1,[28,[32,6],[\\\"chat.channel.memberships_count\\\"],[[\\\"count\\\"],[[30,1,[\\\"membershipsCount\\\"]]]]]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"description\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"chat-channel-card__description\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,4],[[30,1,[\\\"description\\\"]]],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@channel\\\"],[\\\"if\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-channel-card.js\",\n    \"scope\": () => [_concatClass.default, _template.trustHTML, _helper.concat, _routing.LinkTo, _replaceEmoji.default, _dIcon.default, _discourseI18n.i18n, _toggleChannelMembershipButton.default, _helper.hash, _truthHelpers.gt],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"chat-channel-card\"));\n});","define(\"discourse/plugins/chat/discourse/components/chat-channel-chooser-header\", [\"exports\", \"discourse/helpers/d-icon\", \"discourse/select-kit/components/combo-box/combo-box-header\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/channel-title\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _dIcon, _comboBoxHeader, _discourseI18n, _channelTitle, _component, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelChooserHeader extends _comboBoxHeader.default {\n    static {\n      (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"select-kit-header-wrapper\">\n        {{#if this.selectedContent}}\n          <ChannelTitle @channel={{this.selectedContent}} />\n        {{else}}\n          {{i18n \"chat.incoming_webhooks.channel_placeholder\"}}\n        {{/if}}\n      \n        {{icon this.caretIcon class=\"angle-icon\"}}\n      </div>\n      */\n      {\n        \"id\": \"T3kVE2q9\",\n        \"block\": \"[[[10,0],[14,0,\\\"select-kit-header-wrapper\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"selectedContent\\\"]],[[[1,\\\"    \\\"],[8,[32,0],null,[[\\\"@channel\\\"],[[30,0,[\\\"selectedContent\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[1,[28,[32,1],[\\\"chat.incoming_webhooks.channel_placeholder\\\"],null]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n  \\\"],[1,[28,[32,2],[[30,0,[\\\"caretIcon\\\"]]],[[\\\"class\\\"],[\\\"angle-icon\\\"]]]],[1,\\\"\\\\n\\\"],[13]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-channel-chooser-header.js\",\n        \"scope\": () => [_channelTitle.default, _discourseI18n.i18n, _dIcon.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatChannelChooserHeader;\n});","define(\"discourse/plugins/chat/discourse/components/chat-channel-chooser-row\", [\"exports\", \"@ember-decorators/component\", \"discourse/select-kit/components/select-kit/select-kit-row\", \"discourse/plugins/chat/discourse/components/channel-title\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _selectKitRow, _channelTitle, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatChannelChooserRow = dt7948.c(class ChatChannelChooserRow extends _selectKitRow.default {\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <ChannelTitle @channel={{this.item}} />\n      */\n      {\n        \"id\": \"DCJ//oTJ\",\n        \"block\": \"[[[8,[32,0],null,[[\\\"@channel\\\"],[[30,0,[\\\"item\\\"]]]],null]],[],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-channel-chooser-row.js\",\n        \"scope\": () => [_channelTitle.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }, [(0, _component.classNames)(\"chat-channel-chooser-row\")]);\n  var _default = _exports.default = ChatChannelChooserRow;\n});","define(\"discourse/plugins/chat/discourse/components/chat-channel-chooser\", [\"exports\", \"@ember-decorators/component\", \"discourse/select-kit/components/combo-box\", \"discourse/select-kit/components/select-kit\", \"discourse/plugins/chat/discourse/components/chat-channel-chooser-header\", \"discourse/plugins/chat/discourse/components/chat-channel-chooser-row\"], function (_exports, _component, _comboBox, _selectKit, _chatChannelChooserHeader, _chatChannelChooserRow) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatChannelChooser = dt7948.c(class ChatChannelChooser extends _comboBox.default {\n    nameProperty = \"title\";\n    modifyComponentForRow() {\n      return _chatChannelChooserRow.default;\n    }\n  }, [(0, _selectKit.pluginApiIdentifiers)(\"chat-channel-chooser\"), (0, _selectKit.selectKitOptions)({\n    headerComponent: _chatChannelChooserHeader.default\n  }), (0, _component.classNames)(\"chat-channel-chooser\")]);\n  var _default = _exports.default = ChatChannelChooser;\n});","define(\"discourse/plugins/chat/discourse/components/chat-channel-filter\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/render-modifiers/modifiers/did-insert\", \"@ember/runloop\", \"@ember/service\", \"@ember/utils\", \"discourse/components/d-button\", \"discourse/components/filter-input\", \"discourse/float-kit/modifiers/close-on-escape\", \"discourse/lib/ajax\", \"discourse/lib/ajax-error\", \"discourse/lib/debounce\", \"discourse/lib/environment\", \"discourse/modifiers/auto-focus\", \"discourse/truth-helpers\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _object, _didInsert, _runloop, _service, _utils, _dButton, _filterInput, _closeOnEscape, _ajax, _ajaxError, _debounce, _environment, _autoFocus, _truthHelpers, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelFilter extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"capabilities\", [_service.service]);\n    }\n    #capabilities = (dt7948.i(this, \"capabilities\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"loadingSlider\", [_service.service]);\n    }\n    #loadingSlider = (dt7948.i(this, \"loadingSlider\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"channelFilterResults\", [_tracking.tracked]);\n    }\n    #channelFilterResults = (dt7948.i(this, \"channelFilterResults\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentChannelFilter\", [_tracking.tracked], function () {\n        return \"\";\n      });\n    }\n    #currentChannelFilter = (dt7948.i(this, \"currentChannelFilter\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentChannelFilterResult\", [_tracking.tracked]);\n    }\n    #currentChannelFilterResult = (dt7948.i(this, \"currentChannelFilterResult\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentChannelFilterResultIndex\", [_tracking.tracked], function () {\n        return 0;\n      });\n    }\n    #currentChannelFilterResultIndex = (dt7948.i(this, \"currentChannelFilterResultIndex\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"noResults\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #noResults = (dt7948.i(this, \"noResults\"), void 0);\n    get currentFilterResultPosition() {\n      return this.currentChannelFilterResultIndex + 1;\n    }\n    clearInput() {\n      this.currentChannelFilter = \"\";\n    }\n    static {\n      dt7948.n(this.prototype, \"clearInput\", [_object.action]);\n    }\n    navigateToPreviousResult() {\n      if (!this.channelFilterResults?.length) {\n        return;\n      }\n      const newIndex = this.currentChannelFilterResultIndex < this.channelFilterResults.length - 1 ? this.currentChannelFilterResultIndex + 1 : 0;\n      this.currentChannelFilterResultIndex = newIndex;\n      this.navigateToResult(this.channelFilterResults[newIndex]);\n    }\n    static {\n      dt7948.n(this.prototype, \"navigateToPreviousResult\", [_object.action]);\n    }\n    navigateToNextResult() {\n      if (!this.channelFilterResults?.length) {\n        return;\n      }\n      const newIndex = this.currentChannelFilterResultIndex > 0 ? this.currentChannelFilterResultIndex - 1 : this.channelFilterResults.length - 1;\n      this.currentChannelFilterResultIndex = newIndex;\n      this.navigateToResult(this.channelFilterResults[newIndex]);\n    }\n    static {\n      dt7948.n(this.prototype, \"navigateToNextResult\", [_object.action]);\n    }\n    navigateToResult(result) {\n      this.currentChannelFilterResult = result;\n      if (this.capabilities.isIOS) {\n        document.activeElement.blur(); // prevents a bug on iOS where the body would scroll unexpectedly\n      }\n      this.args.onLoadTargetMessageId(this.currentChannelFilterResult.id);\n    }\n    static {\n      dt7948.n(this.prototype, \"navigateToResult\", [_object.action]);\n    }\n    clearFilteringState() {\n      this.noResults = false;\n      this.currentChannelFilter = \"\";\n      this.channelFilterResults = null;\n      this.currentChannelFilterResult = null;\n      this.currentChannelFilterResultIndex = 0;\n    }\n    static {\n      dt7948.n(this.prototype, \"clearFilteringState\", [_object.action]);\n    }\n    loadSearchResults(event) {\n      this.currentChannelFilter = event.target.value;\n      if ((0, _utils.isBlank)(this.currentChannelFilter)) {\n        (0, _runloop.cancel)(this, this.performSearch);\n        this.searchRequest?.abort?.();\n        this.clearFilteringState();\n        (0, _runloop.cancel)(this.debouncedSearch);\n        return;\n      }\n      this.debouncedSearch = (0, _debounce.default)(this, this.performSearch, this.currentChannelFilter,\n      // given we have to blur on iOS, we give more time to the user\n      // to avoid bluring in the middle of a query\n      this.capabilities.isIOS ? _environment.INPUT_DELAY * 2 : _environment.INPUT_DELAY);\n    }\n    static {\n      dt7948.n(this.prototype, \"loadSearchResults\", [_object.action]);\n    }\n    async performSearch(query) {\n      this.searchRequest?.abort?.();\n      try {\n        this.noResults = false;\n        this.loadingSlider.transitionStarted();\n        this.searchRequest = (0, _ajax.ajax)(\"/chat/api/search\", {\n          data: {\n            query,\n            channel_id: this.args.channel.id,\n            exclude_threads: true,\n            sort: \"latest\"\n          }\n        });\n        const response = await this.searchRequest;\n        this.channelFilterResults = response.messages;\n        this.currentChannelFilterResultIndex = 0;\n        if (!this.channelFilterResults?.length) {\n          this.noResults = true;\n          return;\n        }\n        this.navigateToResult(this.channelFilterResults[0]);\n      } catch (error) {\n        (0, _ajaxError.popupAjaxError)(error);\n      } finally {\n        this.loadingSlider.transitionEnded();\n      }\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if @isFiltering}}\n        <div\n          class=\"chat-channel__filter-bar\"\n          {{didInsert this.clearFilteringState}}\n        >\n          <div>\n            <FilterInput\n              {{autoFocus}}\n              {{closeOnEscape @onToggleFilter}}\n              @value={{this.currentChannelFilter}}\n              placeholder={{i18n \"chat.search.title\"}}\n              @filterAction={{this.loadSearchResults}}\n              class=\"no-blur\"\n              @onClearInput={{this.clearInput}}\n            />\n      \n            {{#if this.channelFilterResults.length}}\n              <span class=\"chat-channel__filter-position\">\n                <span\n                  class=\"chat-channel__filter-position-index\"\n                >{{this.currentFilterResultPosition}}</span>\n                <span class=\"chat-channel__filter-position-separator\">/</span>\n                <span\n                  class=\"chat-channel__filter-position-total\"\n                >{{this.channelFilterResults.length}}</span>\n              </span>\n      \n              {{#if (gt this.channelFilterResults.length 1)}}\n                <DButton\n                  @action={{this.navigateToPreviousResult}}\n                  @icon=\"chevron-up\"\n                  class=\"btn-small btn-flat chat-channel__prev-result\"\n                />\n                <DButton\n                  @action={{this.navigateToNextResult}}\n                  @icon=\"chevron-down\"\n                  class=\"btn-small btn-flat chat-channel__next-result\"\n                />\n              {{/if}}\n            {{/if}}\n      \n            <DButton\n              @action={{@onToggleFilter}}\n              class=\"btn-small btn-flat\"\n              @label=\"done\"\n            />\n          </div>\n      \n          {{#if this.noResults}}\n            <div class=\"alert alert-info\">\n              {{i18n \"chat.search.no_results\"}}\n            </div>\n          {{/if}}\n        </div>\n      {{/if}}\n      */\n      {\n        \"id\": \"kEvUBYGd\",\n        \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[11,0],[24,0,\\\"chat-channel__filter-bar\\\"],[4,[32,0],[[30,0,[\\\"clearFilteringState\\\"]]],null],[12],[1,\\\"\\\\n    \\\"],[10,0],[12],[1,\\\"\\\\n      \\\"],[8,[32,1],[[16,\\\"placeholder\\\",[28,[32,2],[\\\"chat.search.title\\\"],null]],[24,0,\\\"no-blur\\\"],[4,[32,3],null,null],[4,[32,4],[[30,2]],null]],[[\\\"@value\\\",\\\"@filterAction\\\",\\\"@onClearInput\\\"],[[30,0,[\\\"currentChannelFilter\\\"]],[30,0,[\\\"loadSearchResults\\\"]],[30,0,[\\\"clearInput\\\"]]]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"channelFilterResults\\\",\\\"length\\\"]],[[[1,\\\"        \\\"],[10,1],[14,0,\\\"chat-channel__filter-position\\\"],[12],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"chat-channel__filter-position-index\\\"],[12],[1,[30,0,[\\\"currentFilterResultPosition\\\"]]],[13],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"chat-channel__filter-position-separator\\\"],[12],[1,\\\"/\\\"],[13],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"chat-channel__filter-position-total\\\"],[12],[1,[30,0,[\\\"channelFilterResults\\\",\\\"length\\\"]]],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[32,5],[[30,0,[\\\"channelFilterResults\\\",\\\"length\\\"]],1],null],[[[1,\\\"          \\\"],[8,[32,6],[[24,0,\\\"btn-small btn-flat chat-channel__prev-result\\\"]],[[\\\"@action\\\",\\\"@icon\\\"],[[30,0,[\\\"navigateToPreviousResult\\\"]],\\\"chevron-up\\\"]],null],[1,\\\"\\\\n          \\\"],[8,[32,6],[[24,0,\\\"btn-small btn-flat chat-channel__next-result\\\"]],[[\\\"@action\\\",\\\"@icon\\\"],[[30,0,[\\\"navigateToNextResult\\\"]],\\\"chevron-down\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"\\\\n      \\\"],[8,[32,6],[[24,0,\\\"btn-small btn-flat\\\"]],[[\\\"@action\\\",\\\"@label\\\"],[[30,2],\\\"done\\\"]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"noResults\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"alert alert-info\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,2],[\\\"chat.search.no_results\\\"],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@isFiltering\\\",\\\"@onToggleFilter\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-channel-filter.js\",\n        \"scope\": () => [_didInsert.default, _filterInput.default, _discourseI18n.i18n, _autoFocus.default, _closeOnEscape.default, _truthHelpers.gt, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatChannelFilter;\n});","define(\"discourse/plugins/chat/discourse/components/chat-channel-leave-btn\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"@ember/utils\", \"discourse/components/d-button\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _utils, _dButton, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelLeaveBtn extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    get shouldRender() {\n      return this.site.desktopView && (0, _utils.isPresent)(this.args.channel);\n    }\n    get leaveChatTitleKey() {\n      if (this.args.channel.isDirectMessageChannel) {\n        return \"chat.direct_messages.leave\";\n      } else {\n        return \"chat.leave\";\n      }\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.shouldRender}}\n        <DButton\n          @icon=\"xmark\"\n          @action={{@onLeaveChannel}}\n          @title={{this.leaveChatTitleKey}}\n          class=\"btn-flat chat-channel-leave-btn\"\n        />\n      {{/if}}\n      */\n      {\n        \"id\": \"ujCbfTD5\",\n        \"block\": \"[[[41,[30,0,[\\\"shouldRender\\\"]],[[[1,\\\"  \\\"],[8,[32,0],[[24,0,\\\"btn-flat chat-channel-leave-btn\\\"]],[[\\\"@icon\\\",\\\"@action\\\",\\\"@title\\\"],[\\\"xmark\\\",[30,1],[30,0,[\\\"leaveChatTitleKey\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@onLeaveChannel\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-channel-leave-btn.js\",\n        \"scope\": () => [_dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatChannelLeaveBtn;\n});","define(\"discourse/plugins/chat/discourse/components/chat-channel-metadata\", [\"exports\", \"@glimmer/component\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelMetadata extends _component.default {\n    get lastMessageFormattedDate() {\n      const {\n        createdAt,\n        id\n      } = this.args.channel.lastMessage || {};\n      if (!id) {\n        return \"–\";\n      } else {\n        const lastMessageDate = this.showThreadUnreadDate ? this.args.channel.lastUnreadThreadDate : createdAt;\n        return moment(lastMessageDate).calendar(null, {\n          sameDay: \"LT\",\n          lastDay: `[${(0, _discourseI18n.i18n)(\"chat.dates.yesterday\")}]`,\n          lastWeek: \"dddd\",\n          sameElse: \"l\"\n        });\n      }\n    }\n    get showThreadUnreadDate() {\n      return this.args.channel.lastUnreadThreadDate > this.args.channel.lastMessage.createdAt;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"chat-channel__metadata\">\n        {{#if @channel.lastMessage}}\n          <div class=\"chat-channel__metadata-date\">\n            {{this.lastMessageFormattedDate}}\n          </div>\n        {{/if}}\n      </div>\n      */\n      {\n        \"id\": \"L3YGSAKu\",\n        \"block\": \"[[[10,0],[14,0,\\\"chat-channel__metadata\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"lastMessage\\\"]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"chat-channel__metadata-date\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"lastMessageFormattedDate\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[13]],[\\\"@channel\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-channel-metadata.js\",\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatChannelMetadata;\n});","define(\"discourse/plugins/chat/discourse/components/chat-channel-preview-card\", [\"exports\", \"@glimmer/component\", \"@ember/helper\", \"@ember/routing\", \"@ember/utils\", \"discourse/helpers/concat-class\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/channel-title\", \"discourse/plugins/chat/discourse/components/toggle-channel-membership-button\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _helper, _routing, _utils, _concatClass, _discourseI18n, _channelTitle, _toggleChannelMembershipButton, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelPreviewCard extends _component.default {\n    get showJoinButton() {\n      return this.args.channel?.isOpen && this.args.channel?.canJoin;\n    }\n    get hasDescription() {\n      return !(0, _utils.isEmpty)(this.args.channel?.description);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div\n        class={{concatClass\n          \"chat-channel-preview-card\"\n          (unless this.hasDescription \"-no-description\")\n          (unless this.showJoinButton \"-no-button\")\n        }}\n      >\n        <ChannelTitle @channel={{@channel}} />\n        {{#if this.hasDescription}}\n          <p class=\"chat-channel-preview-card__description\">\n            {{@channel.description}}\n          </p>\n        {{/if}}\n        {{#if this.showJoinButton}}\n          <ToggleChannelMembershipButton\n            @channel={{@channel}}\n            @options={{hash joinClass=\"btn-primary\"}}\n          />\n        {{/if}}\n        <LinkTo\n          @route=\"chat.browse\"\n          class=\"chat-channel-preview-card__browse-all\"\n        >\n          {{i18n \"chat.browse_all_channels\"}}\n        </LinkTo>\n      </div>\n      */\n      {\n        \"id\": \"tlwfhvO0\",\n        \"block\": \"[[[10,0],[15,0,[28,[32,0],[\\\"chat-channel-preview-card\\\",[52,[51,[30,0,[\\\"hasDescription\\\"]]],\\\"-no-description\\\"],[52,[51,[30,0,[\\\"showJoinButton\\\"]]],\\\"-no-button\\\"]],null]],[12],[1,\\\"\\\\n  \\\"],[8,[32,1],null,[[\\\"@channel\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"hasDescription\\\"]],[[[1,\\\"    \\\"],[10,2],[14,0,\\\"chat-channel-preview-card__description\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[30,1,[\\\"description\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"showJoinButton\\\"]],[[[1,\\\"    \\\"],[8,[32,2],null,[[\\\"@channel\\\",\\\"@options\\\"],[[30,1],[28,[32,3],null,[[\\\"joinClass\\\"],[\\\"btn-primary\\\"]]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[8,[32,4],[[24,0,\\\"chat-channel-preview-card__browse-all\\\"]],[[\\\"@route\\\"],[\\\"chat.browse\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[1,[28,[32,5],[\\\"chat.browse_all_channels\\\"],null]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[13]],[\\\"@channel\\\"],[\\\"unless\\\",\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-channel-preview-card.js\",\n        \"scope\": () => [_concatClass.default, _channelTitle.default, _toggleChannelMembershipButton.default, _helper.hash, _routing.LinkTo, _discourseI18n.i18n],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatChannelPreviewCard;\n});","define(\"discourse/plugins/chat/discourse/components/chat-channel-row\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/helper\", \"@ember/object\", \"@ember/render-modifiers/modifiers/did-insert\", \"@ember/render-modifiers/modifiers/will-destroy\", \"@ember/routing\", \"@ember/service\", \"@ember/template\", \"ember-modifier\", \"discourse/helpers/concat-class\", \"discourse/helpers/d-icon\", \"discourse/helpers/replace-emoji\", \"discourse/lib/ajax-error\", \"discourse/lib/decorators\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/channel-icon\", \"discourse/plugins/chat/discourse/components/channel-name\", \"discourse/plugins/chat/discourse/components/chat-channel-metadata\", \"discourse/plugins/chat/discourse/components/toggle-channel-membership-button\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _helper, _object, _didInsert, _willDestroy, _routing, _service, _template, _emberModifier, _concatClass, _dIcon, _replaceEmoji, _ajaxError, _decorators, _truthHelpers, _discourseI18n, _channelIcon, _channelName, _chatChannelMetadata, _toggleChannelMembershipButton, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const FADEOUT_CLASS = \"-fade-out\";\n  class ChatChannelRow extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"capabilities\", [_service.service]);\n    }\n    #capabilities = (dt7948.i(this, \"capabilities\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"isAtThreshold\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #isAtThreshold = (dt7948.i(this, \"isAtThreshold\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"shouldRemoveChannel\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #shouldRemoveChannel = (dt7948.i(this, \"shouldRemoveChannel\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"showRemoveButton\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #showRemoveButton = (dt7948.i(this, \"showRemoveButton\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"swipableRow\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #swipableRow = (dt7948.i(this, \"swipableRow\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"shouldReset\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #shouldReset = (dt7948.i(this, \"shouldReset\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"diff\", [_tracking.tracked], function () {\n        return 0;\n      });\n    }\n    #diff = (dt7948.i(this, \"diff\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"rowStyle\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #rowStyle = (dt7948.i(this, \"rowStyle\"), void 0);\n    registerSwipableRow = (0, _emberModifier.modifier)(element => {\n      this.swipableRow = element;\n    });\n    onReset = (0, _emberModifier.modifier)(element => {\n      const handler = () => {\n        this.rowStyle = (0, _template.trustHTML)(\"margin-right: 0px;\");\n        this.showRemoveButton = false;\n        this.shouldReset = false;\n      };\n      element.addEventListener(\"transitionend\", handler, {\n        once: true\n      });\n      return () => {\n        element.removeEventListener(\"transitionend\", handler);\n        this.rowStyle = (0, _template.trustHTML)(\"margin-right: 0px;\");\n        this.showRemoveButton = false;\n        this.shouldReset = false;\n      };\n    });\n    onRemoveChannel = (0, _emberModifier.modifier)(element => {\n      element.addEventListener(\"transitionend\", () => {\n        this.chat.unfollowChannel(this.args.channel).catch(_ajaxError.popupAjaxError);\n      }, {\n        once: true\n      });\n      element.classList.add(FADEOUT_CLASS);\n    });\n    handleSwipe = (0, _emberModifier.modifier)(element => {\n      element.addEventListener(\"touchstart\", this.onSwipeStart, {\n        passive: true\n      });\n      element.addEventListener(\"touchmove\", this.onSwipe, {\n        passive: true\n      });\n      element.addEventListener(\"touchend\", this.onSwipeEnd);\n      return () => {\n        element.removeEventListener(\"touchstart\", this.onSwipeStart);\n        element.removeEventListener(\"touchmove\", this.onSwipe);\n        element.removeEventListener(\"touchend\", this.onSwipeEnd);\n      };\n    });\n    onSwipeStart(event) {\n      this._initialX = event.changedTouches[0].screenX;\n    }\n    static {\n      dt7948.n(this.prototype, \"onSwipeStart\", [_decorators.bind]);\n    }\n    onSwipe(event) {\n      this.showRemoveButton = true;\n      this.shouldReset = false;\n      this.isAtThreshold = false;\n      const threshold = window.innerWidth / 3;\n      const touchX = event.changedTouches[0].screenX;\n      this.diff = this._initialX - touchX;\n      this.isAtThreshold = this.diff >= threshold;\n      // ensures we will go back to the initial position when swiping very fast\n      if (this.diff > 25) {\n        if (this.isAtThreshold) {\n          this.diff = threshold + (this.diff - threshold) * 0.1;\n        }\n        this.rowStyle = (0, _template.trustHTML)(`margin-right: ${this.diff}px;`);\n      } else {\n        this.rowStyle = (0, _template.trustHTML)(\"margin-right: 0px;\");\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"onSwipe\", [_decorators.bind]);\n    }\n    onSwipeEnd() {\n      if (this.isAtThreshold) {\n        this.rowStyle = (0, _template.trustHTML)(\"margin-right: 0px;\");\n        this.shouldRemoveChannel = true;\n      } else {\n        this.shouldReset = true;\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"onSwipeEnd\", [_decorators.bind]);\n    }\n    get shouldHandleSwipe() {\n      return this.capabilities.touch && this.args.channel.isDirectMessageChannel;\n    }\n    get leaveDirectMessageLabel() {\n      return (0, _discourseI18n.i18n)(\"chat.direct_messages.close\");\n    }\n    get leaveChannelLabel() {\n      return (0, _discourseI18n.i18n)(\"chat.channel_settings.leave_channel\");\n    }\n    get channelHasUnread() {\n      return this.args.channel.tracking.unreadCount > 0 || this.args.channel.unreadThreadsCountSinceLastViewed > 0;\n    }\n    get shouldRenderLastMessage() {\n      return this.site.mobileView && this.args.channel.isDirectMessageChannel && this.args.channel.lastMessage;\n    }\n    get #firstDirectMessageUser() {\n      return this.args.channel?.chatable?.users?.[0];\n    }\n    startTrackingStatus() {\n      this.#firstDirectMessageUser?.statusManager.trackStatus();\n    }\n    static {\n      dt7948.n(this.prototype, \"startTrackingStatus\", [_object.action]);\n    }\n    stopTrackingStatus() {\n      this.#firstDirectMessageUser?.statusManager.stopTrackingStatus();\n    }\n    static {\n      dt7948.n(this.prototype, \"stopTrackingStatus\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <LinkTo\n        @route=\"chat.channel\"\n        @models={{@channel.routeModels}}\n        class={{concatClass\n          \"chat-channel-row\"\n          (if @channel.focused \"focused\")\n          (if @channel.currentUserMembership.muted \"muted\")\n          (if @options.leaveButton \"can-leave\")\n          (if (eq this.chat.activeChannel.id @channel.id) \"active\")\n          (if this.channelHasUnread \"has-unread\")\n        }}\n        tabindex=\"0\"\n        data-chat-channel-id={{@channel.id}}\n        {{didInsert this.startTrackingStatus}}\n        {{willDestroy this.stopTrackingStatus}}\n        {{(if this.shouldRemoveChannel (modifier this.onRemoveChannel))}}\n      >\n        <div\n          class={{concatClass\n            \"chat-channel-row__content\"\n            (if @channel.isCategoryChannel \"is-category\" \"is-dm\")\n            (if this.shouldReset \"-animate-reset\")\n          }}\n          {{(if this.shouldHandleSwipe (modifier this.registerSwipableRow))}}\n          {{(if this.shouldHandleSwipe (modifier this.handleSwipe))}}\n          {{(if this.shouldReset (modifier this.onReset))}}\n          style={{this.rowStyle}}\n        >\n          <ChannelIcon @channel={{@channel}} />\n          <div class=\"chat-channel-row__info\">\n            <div class=\"chat-channel-row__name-container\">\n              <ChannelName @channel={{@channel}} @unreadIndicator={{true}} />\n            </div>\n            <ChatChannelMetadata @channel={{@channel}} />\n            {{#if this.shouldRenderLastMessage}}\n              <div class=\"chat-channel__last-message\">\n                {{replaceEmoji (trustHTML @channel.lastMessage.excerpt)}}\n              </div>\n            {{/if}}\n          </div>\n      \n          {{#if\n            (and @options.leaveButton @channel.isFollowing this.site.desktopView)\n          }}\n            <ToggleChannelMembershipButton\n              @channel={{@channel}}\n              @options={{hash\n                leaveClass=\"btn-flat chat-channel-leave-btn\"\n                labelType=\"none\"\n                leaveIcon=\"xmark\"\n                leaveTitle=(if\n                  @channel.isDirectMessageChannel\n                  this.leaveDirectMessageLabel\n                  this.leaveChannelLabel\n                )\n              }}\n            />\n          {{/if}}\n        </div>\n      \n        {{#if this.showRemoveButton}}\n          <div\n            class={{concatClass\n              \"chat-channel-row__action-btn\"\n              (if this.isAtThreshold \"-at-threshold\" \"-not-at-threshold\")\n            }}\n          >\n            {{icon \"circle-xmark\"}}\n          </div>\n        {{/if}}\n      </LinkTo>\n      */\n      {\n        \"id\": \"/x4u9kgI\",\n        \"block\": \"[[[8,[32,0],[[16,0,[28,[32,1],[\\\"chat-channel-row\\\",[52,[30,1,[\\\"focused\\\"]],\\\"focused\\\"],[52,[30,1,[\\\"currentUserMembership\\\",\\\"muted\\\"]],\\\"muted\\\"],[52,[30,2,[\\\"leaveButton\\\"]],\\\"can-leave\\\"],[52,[28,[32,2],[[30,0,[\\\"chat\\\",\\\"activeChannel\\\",\\\"id\\\"]],[30,1,[\\\"id\\\"]]],null],\\\"active\\\"],[52,[30,0,[\\\"channelHasUnread\\\"]],\\\"has-unread\\\"]],null]],[24,\\\"tabindex\\\",\\\"0\\\"],[16,\\\"data-chat-channel-id\\\",[30,1,[\\\"id\\\"]]],[4,[32,3],[[30,0,[\\\"startTrackingStatus\\\"]]],null],[4,[32,4],[[30,0,[\\\"stopTrackingStatus\\\"]]],null],[4,[52,[30,0,[\\\"shouldRemoveChannel\\\"]],[50,[30,0,[\\\"onRemoveChannel\\\"]],2,null,null]],null,null]],[[\\\"@route\\\",\\\"@models\\\"],[\\\"chat.channel\\\",[30,1,[\\\"routeModels\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[11,0],[16,0,[28,[32,1],[\\\"chat-channel-row__content\\\",[52,[30,1,[\\\"isCategoryChannel\\\"]],\\\"is-category\\\",\\\"is-dm\\\"],[52,[30,0,[\\\"shouldReset\\\"]],\\\"-animate-reset\\\"]],null]],[16,5,[30,0,[\\\"rowStyle\\\"]]],[4,[52,[30,0,[\\\"shouldHandleSwipe\\\"]],[50,[30,0,[\\\"registerSwipableRow\\\"]],2,null,null]],null,null],[4,[52,[30,0,[\\\"shouldHandleSwipe\\\"]],[50,[30,0,[\\\"handleSwipe\\\"]],2,null,null]],null,null],[4,[52,[30,0,[\\\"shouldReset\\\"]],[50,[30,0,[\\\"onReset\\\"]],2,null,null]],null,null],[12],[1,\\\"\\\\n    \\\"],[8,[32,5],null,[[\\\"@channel\\\"],[[30,1]]],null],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-channel-row__info\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"chat-channel-row__name-container\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[32,6],null,[[\\\"@channel\\\",\\\"@unreadIndicator\\\"],[[30,1],true]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[32,7],null,[[\\\"@channel\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"shouldRenderLastMessage\\\"]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"chat-channel__last-message\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[28,[32,8],[[28,[32,9],[[30,1,[\\\"lastMessage\\\",\\\"excerpt\\\"]]],null]],null]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[32,10],[[30,2,[\\\"leaveButton\\\"]],[30,1,[\\\"isFollowing\\\"]],[30,0,[\\\"site\\\",\\\"desktopView\\\"]]],null],[[[1,\\\"      \\\"],[8,[32,11],null,[[\\\"@channel\\\",\\\"@options\\\"],[[30,1],[28,[32,12],null,[[\\\"leaveClass\\\",\\\"labelType\\\",\\\"leaveIcon\\\",\\\"leaveTitle\\\"],[\\\"btn-flat chat-channel-leave-btn\\\",\\\"none\\\",\\\"xmark\\\",[52,[30,1,[\\\"isDirectMessageChannel\\\"]],[30,0,[\\\"leaveDirectMessageLabel\\\"]],[30,0,[\\\"leaveChannelLabel\\\"]]]]]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"showRemoveButton\\\"]],[[[1,\\\"    \\\"],[10,0],[15,0,[28,[32,1],[\\\"chat-channel-row__action-btn\\\",[52,[30,0,[\\\"isAtThreshold\\\"]],\\\"-at-threshold\\\",\\\"-not-at-threshold\\\"]],null]],[12],[1,\\\"\\\\n      \\\"],[1,[28,[32,13],[\\\"circle-xmark\\\"],null]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]]]]],[\\\"@channel\\\",\\\"@options\\\"],[\\\"if\\\",\\\"modifier\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-channel-row.js\",\n        \"scope\": () => [_routing.LinkTo, _concatClass.default, _truthHelpers.eq, _didInsert.default, _willDestroy.default, _channelIcon.default, _channelName.default, _chatChannelMetadata.default, _replaceEmoji.default, _template.trustHTML, _truthHelpers.and, _toggleChannelMembershipButton.default, _helper.hash, _dIcon.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatChannelRow;\n});","define(\"discourse/plugins/chat/discourse/components/chat-channel-sidebar-context-menu\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/components/dropdown-menu\", \"discourse/lib/ajax-error\", \"discourse/plugins/chat/discourse/components/chat-channel-sidebar-context-notification-submenu\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _object, _service, _dButton, _dropdownMenu, _ajaxError, _chatChannelSidebarContextNotificationSubmenu, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelSidebarContextMenu extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"menu\", [_service.service]);\n    }\n    #menu = (dt7948.i(this, \"menu\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"isTogglingStarred\", [_tracking.tracked]);\n    }\n    #isTogglingStarred = (dt7948.i(this, \"isTogglingStarred\"), void 0);\n    get channel() {\n      return this.args.data.channel;\n    }\n    get currentUserMembership() {\n      return this.channel?.currentUserMembership;\n    }\n    get starIcon() {\n      return this.currentUserMembership?.starred ? \"star\" : \"far-star\";\n    }\n    get starLabel() {\n      return this.currentUserMembership?.starred ? \"chat.channel_settings.unstar_channel\" : \"chat.channel_settings.star_channel\";\n    }\n    get leaveLabel() {\n      return this.channel.isDirectMessageChannel ? \"chat.channel_settings.close_channel\" : \"chat.channel_settings.leave_channel\";\n    }\n    async toggleStarred() {\n      if (!this.currentUserMembership || this.isTogglingStarred) {\n        return;\n      }\n      this.isTogglingStarred = true;\n      const previousValue = this.currentUserMembership.starred;\n      const newValue = !previousValue;\n      this.currentUserMembership.starred = newValue;\n      try {\n        await this.chatApi.updateCurrentUserChannelMembership(this.channel.id, {\n          starred: newValue\n        });\n        this.args.close();\n      } catch (err) {\n        this.currentUserMembership.starred = previousValue;\n        (0, _ajaxError.popupAjaxError)(err);\n      } finally {\n        this.isTogglingStarred = false;\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleStarred\", [_object.action]);\n    }\n    async leaveChannel() {\n      try {\n        if (this.channel.isDirectMessageChannel) {\n          await this.chat.unfollowChannel(this.channel);\n        } else {\n          await this.chatApi.leaveChannel(this.channel.id);\n        }\n        this.currentUser.custom_fields.last_chat_channel_id = null;\n        this.args.close();\n        this.chatChannelsManager.remove(this.channel);\n        if (this.chatChannelsManager.publicMessageChannels.length) {\n          return this.router.transitionTo(\"chat.channel\", ...this.chatChannelsManager.publicMessageChannels[0].routeModels);\n        } else if (this.chatChannelsManager.directMessageChannels.length) {\n          return this.router.transitionTo(\"chat.channel\", ...this.chatChannelsManager.directMessageChannels[0].routeModels);\n        } else {\n          return this.router.transitionTo(\"chat.browse\");\n        }\n      } catch (err) {\n        (0, _ajaxError.popupAjaxError)(err);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"leaveChannel\", [_object.action]);\n    }\n    async navigateToSettings() {\n      try {\n        await this.router.transitionTo(\"chat.channel.info.settings\", ...this.channel.routeModels);\n      } finally {\n        this.args.close();\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"navigateToSettings\", [_object.action]);\n    }\n    openNotificationSettings(_actionParam, event) {\n      this.menu.show(event.target, {\n        identifier: \"chat-channel-menu-notification-submenu\",\n        component: _chatChannelSidebarContextNotificationSubmenu.default,\n        modalForMobile: true,\n        placement: \"right-start\",\n        data: {\n          channel: this.channel\n        },\n        onClose: () => this.args.close()\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"openNotificationSettings\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <DropdownMenu class=\"chat-channel-sidebar-link-menu\" as |dropdown|>\n        <dropdown.item>\n          <DButton\n            @action={{this.openNotificationSettings}}\n            @forwardEvent={{true}}\n            @icon=\"bell\"\n            @suffixIcon=\"angle-right\"\n            @label=\"chat.channel_settings.notification_settings_context\"\n            @title=\"chat.channel_settings.notification_settings_context\"\n            class=\"chat-channel-sidebar-link-menu__open-notification-settings\"\n          />\n        </dropdown.item>\n        <dropdown.item>\n          <DButton\n            @action={{this.navigateToSettings}}\n            @icon=\"gear\"\n            @label=\"chat.channel_settings.title\"\n            @title=\"chat.channel_settings.title\"\n            class=\"chat-channel-sidebar-link-menu__channel-settings\"\n          />\n        </dropdown.item>\n        <dropdown.item>\n          <DButton\n            @action={{this.toggleStarred}}\n            @disabled={{this.isTogglingStarred}}\n            @icon={{this.starIcon}}\n            @label={{this.starLabel}}\n            @title={{this.starLabel}}\n            class=\"chat-channel-sidebar-link-menu__star-channel\"\n          />\n        </dropdown.item>\n        <dropdown.item>\n          <DButton\n            @action={{this.leaveChannel}}\n            @icon=\"xmark\"\n            @label={{this.leaveLabel}}\n            @title={{this.leaveLabel}}\n            class=\"chat-channel-sidebar-link-menu__leave-channel --danger\"\n          />\n        </dropdown.item>\n      </DropdownMenu>\n      */\n      {\n        \"id\": \"3IyAIlqf\",\n        \"block\": \"[[[8,[32,0],[[24,0,\\\"chat-channel-sidebar-link-menu\\\"]],null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[30,1,[\\\"item\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,1],[[24,0,\\\"chat-channel-sidebar-link-menu__open-notification-settings\\\"]],[[\\\"@action\\\",\\\"@forwardEvent\\\",\\\"@icon\\\",\\\"@suffixIcon\\\",\\\"@label\\\",\\\"@title\\\"],[[30,0,[\\\"openNotificationSettings\\\"]],true,\\\"bell\\\",\\\"angle-right\\\",\\\"chat.channel_settings.notification_settings_context\\\",\\\"chat.channel_settings.notification_settings_context\\\"]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[30,1,[\\\"item\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,1],[[24,0,\\\"chat-channel-sidebar-link-menu__channel-settings\\\"]],[[\\\"@action\\\",\\\"@icon\\\",\\\"@label\\\",\\\"@title\\\"],[[30,0,[\\\"navigateToSettings\\\"]],\\\"gear\\\",\\\"chat.channel_settings.title\\\",\\\"chat.channel_settings.title\\\"]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[30,1,[\\\"item\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,1],[[24,0,\\\"chat-channel-sidebar-link-menu__star-channel\\\"]],[[\\\"@action\\\",\\\"@disabled\\\",\\\"@icon\\\",\\\"@label\\\",\\\"@title\\\"],[[30,0,[\\\"toggleStarred\\\"]],[30,0,[\\\"isTogglingStarred\\\"]],[30,0,[\\\"starIcon\\\"]],[30,0,[\\\"starLabel\\\"]],[30,0,[\\\"starLabel\\\"]]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[30,1,[\\\"item\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,1],[[24,0,\\\"chat-channel-sidebar-link-menu__leave-channel --danger\\\"]],[[\\\"@action\\\",\\\"@icon\\\",\\\"@label\\\",\\\"@title\\\"],[[30,0,[\\\"leaveChannel\\\"]],\\\"xmark\\\",[30,0,[\\\"leaveLabel\\\"]],[30,0,[\\\"leaveLabel\\\"]]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[1]]]]]],[\\\"dropdown\\\"],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-channel-sidebar-context-menu.js\",\n        \"scope\": () => [_dropdownMenu.default, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatChannelSidebarContextMenu;\n});","define(\"discourse/plugins/chat/discourse/components/chat-channel-sidebar-context-notification-submenu\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/components/dropdown-menu\", \"discourse/helpers/concat-class\", \"discourse/lib/ajax-error\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _dButton, _dropdownMenu, _concatClass, _ajaxError, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelSidebarContextNotificationSubmenu extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    get channel() {\n      return this.args.data.channel;\n    }\n    isItemSelected(item) {\n      if (this.channel.currentUserMembership.muted) {\n        return item === \"muted\";\n      }\n      return this.channel.currentUserMembership.notificationLevel === item;\n    }\n    static {\n      dt7948.n(this.prototype, \"isItemSelected\", [_object.action]);\n    }\n    async changePushNotifications(setting) {\n      try {\n        const result = await this.chatApi.updateCurrentUserChannelNotificationsSettings(this.channel.id, {\n          notification_level: setting\n        });\n        this.channel.currentUserMembership.notificationLevel = result.membership.notification_level;\n      } catch (err) {\n        (0, _ajaxError.popupAjaxError)(err);\n      }\n      this.args.close();\n    }\n    static {\n      dt7948.n(this.prototype, \"changePushNotifications\", [_object.action]);\n    }\n    async toggleMuteChannel() {\n      try {\n        const result = await this.chatApi.updateCurrentUserChannelNotificationsSettings(this.channel.id, {\n          muted: !this.channel.currentUserMembership.muted\n        });\n        this.channel.currentUserMembership.muted = result.membership.muted;\n      } catch (err) {\n        (0, _ajaxError.popupAjaxError)(err);\n      }\n      this.args.close();\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleMuteChannel\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <DropdownMenu as |dropdown|>\n        <dropdown.item>\n          <DButton\n            @action={{this.changePushNotifications \"never\"}}\n            @label=\"chat.notification_levels.never\"\n            @title=\"chat.notification_levels.never\"\n            class={{concatClass\n              \"chat-channel-sidebar-link-menu__notification-level-never\"\n              (if (this.isItemSelected \"never\") \"-selected\")\n            }}\n          />\n        </dropdown.item>\n      \n        <dropdown.item>\n          <DButton\n            @action={{this.changePushNotifications \"mention\"}}\n            @label=\"chat.notification_levels.mention\"\n            @title=\"chat.notification_levels.mention\"\n            class={{concatClass\n              \"chat-channel-sidebar-link-menu__notification-level-mention\"\n              (if (this.isItemSelected \"mention\") \"-selected\")\n            }}\n          />\n        </dropdown.item>\n      \n        <dropdown.item>\n          <DButton\n            @action={{this.changePushNotifications \"always\"}}\n            @label=\"chat.notification_levels.always\"\n            @title=\"chat.notification_levels.always\"\n            class={{concatClass\n              \"chat-channel-sidebar-link-menu__notification-level-always\"\n              (if (this.isItemSelected \"always\") \"-selected\")\n            }}\n          />\n        </dropdown.item>\n      \n        <dropdown.divider />\n      \n        <dropdown.item>\n          <DButton\n            @action={{this.toggleMuteChannel}}\n            @icon={{if\n              this.channel.currentUserMembership.muted\n              \"bell-slash\"\n              \"bell\"\n            }}\n            @label={{if\n              this.channel.currentUserMembership.muted\n              \"chat.settings.unmute\"\n              \"chat.settings.mute\"\n            }}\n            @title={{if\n              this.channel.currentUserMembership.muted\n              \"chat.settings.unmute\"\n              \"chat.settings.mute\"\n            }}\n            class={{concatClass\n              \"chat-channel-sidebar-link-menu__mute-channel\"\n              (if (this.isItemSelected \"muted\") \"-selected\")\n            }}\n          />\n        </dropdown.item>\n      </DropdownMenu>\n      */\n      {\n        \"id\": \"lddOkTeo\",\n        \"block\": \"[[[8,[32,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[30,1,[\\\"item\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,1],[[16,0,[28,[32,2],[\\\"chat-channel-sidebar-link-menu__notification-level-never\\\",[52,[28,[30,0,[\\\"isItemSelected\\\"]],[\\\"never\\\"],null],\\\"-selected\\\"]],null]]],[[\\\"@action\\\",\\\"@label\\\",\\\"@title\\\"],[[28,[30,0,[\\\"changePushNotifications\\\"]],[\\\"never\\\"],null],\\\"chat.notification_levels.never\\\",\\\"chat.notification_levels.never\\\"]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[30,1,[\\\"item\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,1],[[16,0,[28,[32,2],[\\\"chat-channel-sidebar-link-menu__notification-level-mention\\\",[52,[28,[30,0,[\\\"isItemSelected\\\"]],[\\\"mention\\\"],null],\\\"-selected\\\"]],null]]],[[\\\"@action\\\",\\\"@label\\\",\\\"@title\\\"],[[28,[30,0,[\\\"changePushNotifications\\\"]],[\\\"mention\\\"],null],\\\"chat.notification_levels.mention\\\",\\\"chat.notification_levels.mention\\\"]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[30,1,[\\\"item\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,1],[[16,0,[28,[32,2],[\\\"chat-channel-sidebar-link-menu__notification-level-always\\\",[52,[28,[30,0,[\\\"isItemSelected\\\"]],[\\\"always\\\"],null],\\\"-selected\\\"]],null]]],[[\\\"@action\\\",\\\"@label\\\",\\\"@title\\\"],[[28,[30,0,[\\\"changePushNotifications\\\"]],[\\\"always\\\"],null],\\\"chat.notification_levels.always\\\",\\\"chat.notification_levels.always\\\"]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[30,1,[\\\"divider\\\"]],null,null,null],[1,\\\"\\\\n\\\\n  \\\"],[8,[30,1,[\\\"item\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,1],[[16,0,[28,[32,2],[\\\"chat-channel-sidebar-link-menu__mute-channel\\\",[52,[28,[30,0,[\\\"isItemSelected\\\"]],[\\\"muted\\\"],null],\\\"-selected\\\"]],null]]],[[\\\"@action\\\",\\\"@icon\\\",\\\"@label\\\",\\\"@title\\\"],[[30,0,[\\\"toggleMuteChannel\\\"]],[52,[30,0,[\\\"channel\\\",\\\"currentUserMembership\\\",\\\"muted\\\"]],\\\"bell-slash\\\",\\\"bell\\\"],[52,[30,0,[\\\"channel\\\",\\\"currentUserMembership\\\",\\\"muted\\\"]],\\\"chat.settings.unmute\\\",\\\"chat.settings.mute\\\"],[52,[30,0,[\\\"channel\\\",\\\"currentUserMembership\\\",\\\"muted\\\"]],\\\"chat.settings.unmute\\\",\\\"chat.settings.mute\\\"]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[1]]]]]],[\\\"dropdown\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-channel-sidebar-context-notification-submenu.js\",\n        \"scope\": () => [_dropdownMenu.default, _dButton.default, _concatClass.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatChannelSidebarContextNotificationSubmenu;\n});","define(\"discourse/plugins/chat/discourse/components/chat-channel-status\", [\"exports\", \"@glimmer/component\", \"discourse/helpers/d-icon\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/models/chat-channel\", \"discourse/plugins/chat/discourse/components/chat-channel-archive-status\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _dIcon, _discourseI18n, _chatChannel, _chatChannelArchiveStatus, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelStatus extends _component.default {\n    LONG_FORMAT = \"long\";\n    SHORT_FORMAT = \"short\";\n    VALID_FORMATS = [this.SHORT_FORMAT, this.LONG_FORMAT];\n    get format() {\n      return this.VALID_FORMATS.includes(this.args.format) ? this.args.format : this.LONG_FORMAT;\n    }\n    get shouldRender() {\n      return this.channelStatusIcon && this.args.channel.status !== _chatChannel.CHANNEL_STATUSES.open;\n    }\n    get channelStatusMessage() {\n      if (this.format === this.LONG_FORMAT) {\n        return this.#longStatusMessage(this.args.channel.status);\n      } else {\n        return this.#shortStatusMessage(this.args.channel.status);\n      }\n    }\n    get channelStatusIcon() {\n      return (0, _chatChannel.channelStatusIcon)(this.args.channel.status);\n    }\n    #shortStatusMessage(status) {\n      switch (status) {\n        case _chatChannel.CHANNEL_STATUSES.archived:\n          return (0, _discourseI18n.i18n)(\"chat.channel_status.archived\");\n        case _chatChannel.CHANNEL_STATUSES.closed:\n          return (0, _discourseI18n.i18n)(\"chat.channel_status.closed\");\n        case _chatChannel.CHANNEL_STATUSES.open:\n          return (0, _discourseI18n.i18n)(\"chat.channel_status.open\");\n        case _chatChannel.CHANNEL_STATUSES.readOnly:\n          return (0, _discourseI18n.i18n)(\"chat.channel_status.read_only\");\n      }\n    }\n    #longStatusMessage(status) {\n      switch (status) {\n        case _chatChannel.CHANNEL_STATUSES.archived:\n          return (0, _discourseI18n.i18n)(\"chat.channel_status.archived_header\");\n        case _chatChannel.CHANNEL_STATUSES.closed:\n          return (0, _discourseI18n.i18n)(\"chat.channel_status.closed_header\");\n        case _chatChannel.CHANNEL_STATUSES.open:\n          return (0, _discourseI18n.i18n)(\"chat.channel_status.open_header\");\n        case _chatChannel.CHANNEL_STATUSES.readOnly:\n          return (0, _discourseI18n.i18n)(\"chat.channel_status.read_only_header\");\n      }\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.shouldRender}}\n        <div class=\"chat-channel-status\">\n          {{icon this.channelStatusIcon}}\n          <span>{{this.channelStatusMessage}}</span>\n          <ChatChannelArchiveStatus @channel={{@channel}} />\n        </div>\n      {{/if}}\n      */\n      {\n        \"id\": \"hFnOGAaz\",\n        \"block\": \"[[[41,[30,0,[\\\"shouldRender\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"chat-channel-status\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[28,[32,0],[[30,0,[\\\"channelStatusIcon\\\"]]],null]],[1,\\\"\\\\n    \\\"],[10,1],[12],[1,[30,0,[\\\"channelStatusMessage\\\"]]],[13],[1,\\\"\\\\n    \\\"],[8,[32,1],null,[[\\\"@channel\\\"],[[30,1]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@channel\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-channel-status.js\",\n        \"scope\": () => [_dIcon.default, _chatChannelArchiveStatus.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatChannelStatus;\n});","define(\"discourse/plugins/chat/discourse/components/chat-channel-title\", [\"exports\", \"discourse/plugins/chat/discourse/components/channel-title\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _channelTitle, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const OldChatChannelTitle = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <ChannelTitle @channel={{@channel}} />\n  */\n  {\n    \"id\": \"eFZYHpcH\",\n    \"block\": \"[[[8,[32,0],null,[[\\\"@channel\\\"],[[30,1]]],null]],[\\\"@channel\\\"],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-channel-title.js\",\n    \"scope\": () => [_channelTitle.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"chat-channel-title:OldChatChannelTitle\"));\n  var _default = _exports.default = OldChatChannelTitle;\n});","define(\"discourse/plugins/chat/discourse/components/chat-channel-unread-indicator\", [\"exports\", \"@glimmer/component\", \"discourse/helpers/concat-class\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _concatClass, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const MAX_UNREAD_COUNT = 99;\n  class ChatChannelUnreadIndicator extends _component.default {\n    get showUnreadIndicator() {\n      return this.args.channel.tracking.unreadCount + this.args.channel.tracking.mentionCount + this.args.channel.unreadThreadsCountSinceLastViewed > 0;\n    }\n    get publicUrgentCount() {\n      return this.args.channel.tracking.mentionCount + this.args.channel.tracking.watchedThreadsUnreadCount;\n    }\n    get directUrgentCount() {\n      return this.args.channel.tracking.unreadCount + this.args.channel.tracking.mentionCount + this.args.channel.tracking.watchedThreadsUnreadCount;\n    }\n    get urgentCount() {\n      return this.args.channel.isDirectMessageChannel ? this.directUrgentCount : this.publicUrgentCount;\n    }\n    get isUrgent() {\n      return this.urgentCount > 0;\n    }\n    get urgentBadgeCount() {\n      const totalCount = this.urgentCount;\n      return totalCount > MAX_UNREAD_COUNT ? `${MAX_UNREAD_COUNT}+` : totalCount;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.showUnreadIndicator}}\n        <div\n          class={{concatClass\n            \"chat-channel-unread-indicator\"\n            (if this.isUrgent \"-urgent\")\n          }}\n        >\n          <div class=\"chat-channel-unread-indicator__number\">\n            {{#if this.isUrgent}}{{this.urgentBadgeCount}}{{else}}&nbsp;{{/if}}\n          </div>\n        </div>\n      {{/if}}\n      */\n      {\n        \"id\": \"YDbLy8fk\",\n        \"block\": \"[[[41,[30,0,[\\\"showUnreadIndicator\\\"]],[[[1,\\\"  \\\"],[10,0],[15,0,[28,[32,0],[\\\"chat-channel-unread-indicator\\\",[52,[30,0,[\\\"isUrgent\\\"]],\\\"-urgent\\\"]],null]],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-channel-unread-indicator__number\\\"],[12],[1,\\\"\\\\n      \\\"],[41,[30,0,[\\\"isUrgent\\\"]],[[[1,[30,0,[\\\"urgentBadgeCount\\\"]]]],[]],[[[1,\\\" \\\"]],[]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-channel-unread-indicator.js\",\n        \"scope\": () => [_concatClass.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatChannelUnreadIndicator;\n});","define(\"discourse/plugins/chat/discourse/components/chat-channel\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/owner\", \"@ember/render-modifiers/modifiers/did-insert\", \"@ember/render-modifiers/modifiers/did-update\", \"@ember/render-modifiers/modifiers/will-destroy\", \"@ember/runloop\", \"@ember/service\", \"discourse/helpers/concat-class\", \"discourse/lib/ajax-error\", \"discourse/lib/debounce\", \"discourse/lib/decorators\", \"discourse/lib/url\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat-channel-status\", \"discourse/plugins/chat/discourse/helpers/first-visible-message-id\", \"discourse/plugins/chat/discourse/lib/chat-channel-subscription-manager\", \"discourse/plugins/chat/discourse/lib/chat-constants\", \"discourse/plugins/chat/discourse/lib/chat-messages-loader\", \"discourse/plugins/chat/discourse/lib/chat-pane-state\", \"discourse/plugins/chat/discourse/lib/check-message-visibility\", \"discourse/plugins/chat/discourse/lib/dates-separators-positioner\", \"discourse/plugins/chat/discourse/lib/extract-current-topic-info\", \"discourse/plugins/chat/discourse/lib/scroll-helpers\", \"discourse/plugins/chat/discourse/models/chat-message\", \"discourse/plugins/chat/discourse/components/chat/composer/channel\", \"discourse/plugins/chat/discourse/components/chat/scroll-to-bottom-arrow\", \"discourse/plugins/chat/discourse/components/chat/selection-manager\", \"discourse/plugins/chat/discourse/components/chat-channel-filter\", \"discourse/plugins/chat/discourse/components/chat-channel-preview-card\", \"discourse/plugins/chat/discourse/components/chat-mention-warnings\", \"discourse/plugins/chat/discourse/components/chat-message\", \"discourse/plugins/chat/discourse/components/chat-messages-container\", \"discourse/plugins/chat/discourse/components/chat-messages-scroller\", \"discourse/plugins/chat/discourse/components/chat-notices\", \"discourse/plugins/chat/discourse/components/chat-skeleton\", \"discourse/plugins/chat/discourse/components/chat-upload-drop-zone\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _object, _owner, _didInsert, _didUpdate, _willDestroy, _runloop, _service, _concatClass, _ajaxError, _debounce, _decorators, _url, _truthHelpers, _discourseI18n, _chatChannelStatus, _firstVisibleMessageId, _chatChannelSubscriptionManager, _chatConstants, _chatMessagesLoader, _chatPaneState, _checkMessageVisibility, _datesSeparatorsPositioner, _extractCurrentTopicInfo, _scrollHelpers, _chatMessage, _channel, _scrollToBottomArrow, _selectionManager, _chatChannelFilter, _chatChannelPreviewCard, _chatMentionWarnings, _chatMessage2, _chatMessagesContainer, _chatMessagesScroller, _chatNotices, _chatSkeleton, _chatUploadDropZone, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannel extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"capabilities\", [_service.service]);\n    }\n    #capabilities = (dt7948.i(this, \"capabilities\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatDraftsManager\", [_service.service]);\n    }\n    #chatDraftsManager = (dt7948.i(this, \"chatDraftsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelScrollPositions\", [_service.service]);\n    }\n    #chatChannelScrollPositions = (dt7948.i(this, \"chatChannelScrollPositions\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"composer\", [(0, _service.service)(\"chat-channel-composer\")]);\n    }\n    #composer = (dt7948.i(this, \"composer\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"pane\", [(0, _service.service)(\"chat-channel-pane\")]);\n    }\n    #pane = (dt7948.i(this, \"pane\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"dialog\", [_service.service]);\n    }\n    #dialog = (dt7948.i(this, \"dialog\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"atBottom\", [_tracking.tracked], function () {\n        return true;\n      });\n    }\n    #atBottom = (dt7948.i(this, \"atBottom\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"uploadDropZone\", [_tracking.tracked]);\n    }\n    #uploadDropZone = (dt7948.i(this, \"uploadDropZone\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"isScrolling\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #isScrolling = (dt7948.i(this, \"isScrolling\"), void 0);\n    scroller = null;\n    paneState = new _chatPaneState.default((0, _owner.getOwner)(this), {\n      contextKey: this.pendingContextKey,\n      onUserPresent: this.debouncedUpdateLastReadMessage\n    });\n    _mentionWarningsSeen = {};\n    _unreachableGroupMentions = [];\n    _overMembersLimitGroupMentions = [];\n    registerScroller(element) {\n      this.scroller = element;\n    }\n    static {\n      dt7948.n(this.prototype, \"registerScroller\", [_object.action]);\n    }\n    get messagesLoader() {\n      return new _chatMessagesLoader.default((0, _owner.getOwner)(this), this.args.channel);\n    }\n    static {\n      dt7948.n(this.prototype, \"messagesLoader\", [_tracking.cached]);\n    }\n    get messagesManager() {\n      return this.args.channel.messagesManager;\n    }\n    get currentUserMembership() {\n      return this.args.channel?.currentUserMembership;\n    }\n    get hasSavedScrollPosition() {\n      return !!this.chatChannelScrollPositions.get(this.args.channel.id);\n    }\n    get pendingContextKey() {\n      return this.args.channel?.id ? `channel:${this.args.channel.id}` : null;\n    }\n    teardown() {\n      document.removeEventListener(\"keydown\", this._autoFocus);\n      this.#cancelHandlers();\n      this.paneState.teardown();\n      this.subscriptionManager.teardown();\n      this.updateLastReadMessage();\n      // Cancel any pending search request and debounced calls\n      (0, _runloop.cancel)(this, this._performSearch);\n      this.searchRequest?.abort?.();\n      this.searchRequest = null;\n    }\n    static {\n      dt7948.n(this.prototype, \"teardown\", [_object.action]);\n    }\n    didResizePane() {\n      this.debounceFillPaneAttempt();\n      this.debouncedUpdateLastReadMessage();\n      _datesSeparatorsPositioner.default.apply(this.scroller);\n      this.paneState.updatePendingContentFromScrollerPosition({\n        scroller: this.scroller,\n        fetchedOnce: this.messagesLoader.fetchedOnce,\n        canLoadMoreFuture: this.messagesLoader.canLoadMoreFuture\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"didResizePane\", [_object.action]);\n    }\n    setup(element) {\n      this.uploadDropZone = element;\n      document.addEventListener(\"keydown\", this._autoFocus);\n      this.messagesManager.clear();\n      if (this.args.channel.isDirectMessageChannel && !this.args.channel.isFollowing) {\n        this.chatChannelsManager.follow(this.args.channel);\n      }\n      this.args.channel.draft = this.chatDraftsManager.get(this.args.channel?.id) || _chatMessage.default.createDraftMessage(this.args.channel, {\n        user: this.currentUser\n      });\n      this.composer.focus();\n      this.loadMessages();\n      // We update this value server-side when we load the Channel\n      // here, so this reflects reality for sidebar unread logic.\n      this.args.channel.updateLastViewedAt();\n    }\n    static {\n      dt7948.n(this.prototype, \"setup\", [_object.action]);\n    }\n    onLoadTargetMessageId(targetMessageId) {\n      this.loadMessages(null, targetMessageId);\n    }\n    static {\n      dt7948.n(this.prototype, \"onLoadTargetMessageId\", [_object.action]);\n    }\n    loadMessages(_element, targetMessageId) {\n      targetMessageId ??= this.args.targetMessageId;\n      if (!this.args.channel?.id) {\n        return;\n      }\n      this.subscriptionManager = new _chatChannelSubscriptionManager.default(this, this.args.channel, {\n        onNewMessage: this.onNewMessage\n      });\n      if (targetMessageId) {\n        this.debounceHighlightOrFetchMessage(targetMessageId);\n      } else if (this.chatChannelScrollPositions.get(this.args.channel.id)) {\n        this.debounceHighlightOrFetchMessage(this.chatChannelScrollPositions.get(this.args.channel.id));\n      } else {\n        this.fetchMessages({\n          fetch_from_last_read: true\n        });\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"loadMessages\", [_object.action]);\n    }\n    onNewMessage(message) {\n      this.paneState.handleIncomingMessage({\n        scroller: this.scroller,\n        shouldAutoScroll: this.paneState.userIsPresent && this.atBottom,\n        addMessage: () => this.messagesManager.addMessages([message]),\n        onAutoAdd: () => this.debouncedUpdateLastReadMessage()\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"onNewMessage\", [_decorators.bind]);\n    }\n    async fetchMessages(findArgs = {}) {\n      if (this.messagesLoader.loading) {\n        return;\n      }\n      this.messagesManager.clear();\n      const result = await this.messagesLoader.load(findArgs);\n      this.messagesManager.messages = this.processMessages(this.args.channel, result);\n      if (findArgs.target_message_id) {\n        this.scrollToMessageId(findArgs.target_message_id, {\n          highlight: true,\n          position: findArgs.position\n        });\n      } else if (findArgs.fetch_from_last_read) {\n        const lastReadMessageId = this.currentUserMembership?.lastReadMessageId;\n        this.scrollToMessageId(lastReadMessageId);\n      } else if (findArgs.target_date) {\n        this.scrollToMessageId(result.meta.target_message_id, {\n          highlight: true,\n          position: \"center\"\n        });\n      } else {\n        this._ignoreNextScroll = true;\n        this.scrollToBottom();\n      }\n      this.debounceFillPaneAttempt();\n      this.debouncedUpdateLastReadMessage();\n    }\n    async fetchMoreMessages({\n      direction\n    }, opts = {}) {\n      if (this.messagesLoader.loading) {\n        return;\n      }\n      const result = await this.messagesLoader.loadMore({\n        direction\n      });\n      if (!result) {\n        return;\n      }\n      const messages = this.processMessages(this.args.channel, result);\n      if (!messages.length) {\n        return;\n      }\n      const targetMessageId = this.messagesManager.messages.at(-1).id;\n      this.messagesManager.addMessages(messages);\n      if (direction === _chatConstants.FUTURE && !opts.noScroll) {\n        this.scrollToMessageId(targetMessageId, {\n          position: \"end\",\n          forceAuto: true\n        });\n      }\n      this.debounceFillPaneAttempt();\n    }\n    async scrollToBottom() {\n      this._ignoreNextScroll = true;\n      await (0, _scrollHelpers.scrollListToBottom)(this.scroller);\n      if (this.paneState.userIsPresent) {\n        this.debouncedUpdateLastReadMessage();\n      }\n      this.paneState.clearPendingMessages();\n    }\n    static {\n      dt7948.n(this.prototype, \"scrollToBottom\", [_object.action]);\n    }\n    scrollToMessageId(messageId, options = {}) {\n      this._ignoreNextScroll = true;\n      const message = this.messagesManager.findMessage(messageId);\n      (0, _scrollHelpers.scrollListToMessage)(this.scroller, message, options);\n    }\n    debounceFillPaneAttempt() {\n      this._debouncedFillPaneAttemptHandler = (0, _debounce.default)(this, this.fillPaneAttempt, 500);\n    }\n    fetchMessagesByDate(date) {\n      if (this.messagesLoader.loading) {\n        return;\n      }\n      const message = this.messagesManager.findFirstMessageOfDay(new Date(date));\n      if (message.firstOfResults && this.messagesLoader.canLoadMorePast) {\n        this.fetchMessages({\n          target_date: date,\n          direction: _chatConstants.FUTURE\n        });\n      } else {\n        this.highlightOrFetchMessage(message.id, {\n          position: \"center\"\n        });\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"fetchMessagesByDate\", [_decorators.bind]);\n    }\n    async fillPaneAttempt() {\n      if (!this.messagesLoader.fetchedOnce) {\n        return;\n      }\n      // safeguard\n      if (this.messagesManager.messages.length > 200) {\n        return;\n      }\n      if (!this.messagesLoader.canLoadMorePast) {\n        return;\n      }\n      (0, _runloop.schedule)(\"afterRender\", () => {\n        const firstMessageId = this.messagesManager.messages[0]?.id;\n        const messageContainer = this.scroller.querySelector(`.chat-message-container[data-id=\"${firstMessageId}\"]`);\n        if (messageContainer && (0, _checkMessageVisibility.checkMessageTopVisibility)(this.scroller, messageContainer)) {\n          this.fetchMoreMessages({\n            direction: _chatConstants.PAST\n          });\n        }\n      });\n    }\n    processMessages(channel, result) {\n      const messages = [];\n      let foundFirstNew = false;\n      channel.newestMessage = null;\n      result?.messages?.forEach((messageData, index) => {\n        messageData.firstOfResults = index === 0;\n        if (this.currentUser.ignored_users) {\n          // If a message has been hidden it is because the current user is ignoring\n          // the user who sent it, so we want to unconditionally hide it, even if\n          // we are going directly to the target\n          messageData.hidden = this.currentUser.ignored_users.includes(messageData.user.username);\n        }\n        if (this.requestedTargetMessageId === messageData.id) {\n          messageData.expanded = !messageData.hidden;\n        } else {\n          messageData.expanded = !(messageData.hidden || messageData.deleted_at);\n        }\n        const message = _chatMessage.default.create(channel, messageData);\n        message.manager = channel.messagesManager;\n        // newest has to be in after fetch callback as we don't want to make it\n        // dynamic or it will make the pane jump around, it will disappear on reload\n        if (!foundFirstNew && messageData.id > this.currentUserMembership?.lastReadMessageId) {\n          foundFirstNew = true;\n          if (message !== channel.lastMessage) {\n            channel.newestMessage = message;\n          } else {\n            channel.newestMessage = null;\n          }\n        }\n        if (message.thread) {\n          this.#preloadThreadTrackingState(message.thread, result.tracking.thread_tracking);\n        }\n        messages.push(message);\n      });\n      return messages;\n    }\n    static {\n      dt7948.n(this.prototype, \"processMessages\", [_decorators.bind]);\n    }\n    debounceHighlightOrFetchMessage(messageId, options = {}) {\n      this._debouncedHighlightOrFetchMessageHandler = (0, _debounce.default)(this, this.highlightOrFetchMessage, messageId, options, 100);\n    }\n    highlightOrFetchMessage(messageId, options = {}) {\n      const message = this.messagesManager.findMessage(messageId);\n      if (message) {\n        this.scrollToMessageId(message.id, Object.assign({\n          highlight: true,\n          position: \"start\",\n          autoExpand: true,\n          behavior: this.capabilities.isIOS ? \"smooth\" : null\n        }, options));\n      } else {\n        this.fetchMessages({\n          target_message_id: messageId,\n          position: \"end\"\n        });\n      }\n    }\n    debouncedUpdateLastReadMessage() {\n      this._debouncedUpdateLastReadMessageHandler = (0, _debounce.default)(this, this.updateLastReadMessage, _chatConstants.READ_INTERVAL_MS);\n    }\n    static {\n      dt7948.n(this.prototype, \"debouncedUpdateLastReadMessage\", [_decorators.bind]);\n    }\n    updateLastReadMessage() {\n      if (!this.paneState.userIsPresent) {\n        return;\n      }\n      if (!this.args.channel.isFollowing) {\n        return;\n      }\n      const firstFullyVisibleMessageId = (0, _firstVisibleMessageId.default)(this.scroller);\n      if (!firstFullyVisibleMessageId) {\n        return;\n      }\n      let firstMessage = this.messagesManager.findMessage(firstFullyVisibleMessageId);\n      if (!firstMessage) {\n        return;\n      }\n      const lastReadId = this.args.channel.currentUserMembership?.lastReadMessageId;\n      if (lastReadId >= firstMessage.id) {\n        return;\n      }\n      // optimistic update\n      this.args.channel.currentUserMembership.lastReadMessageId = firstMessage.id;\n      this.args.channel.updateLastViewedAt();\n      return this.chatApi.markChannelAsRead(this.args.channel.id, firstMessage.id);\n    }\n    scrollToLatestMessage() {\n      if (this.messagesLoader.canLoadMoreFuture) {\n        this.fetchMessages();\n      } else if (this.messagesManager.messages.length > 0) {\n        this.scrollToBottom();\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"scrollToLatestMessage\", [_object.action]);\n    }\n    onScroll(state) {\n      (0, _runloop.next)(() => {\n        if (this.#flushIgnoreNextScroll()) {\n          return;\n        }\n        _datesSeparatorsPositioner.default.apply(this.scroller);\n        this.paneState.updatePendingContentFromScrollState({\n          scroller: this.scroller,\n          fetchedOnce: this.messagesLoader.fetchedOnce,\n          canLoadMoreFuture: this.messagesLoader.canLoadMoreFuture,\n          state\n        });\n        this.isScrolling = true;\n        this.debouncedUpdateLastReadMessage();\n        if (state.atTop || !this.capabilities.isIOS && state.up && state.distanceToTop.percentage < 40) {\n          this.fetchMoreMessages({\n            direction: _chatConstants.PAST\n          });\n        } else if (state.atBottom) {\n          this.fetchMoreMessages({\n            direction: _chatConstants.FUTURE\n          });\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"onScroll\", [_object.action]);\n    }\n    onScrollEnd(state) {\n      this.isScrolling = false;\n      this.atBottom = state.atBottom;\n      if (state.atBottom) {\n        this.paneState.clearPendingMessages();\n        this.fetchMoreMessages({\n          direction: _chatConstants.FUTURE\n        });\n        this.chatChannelScrollPositions.delete(this.args.channel.id);\n      } else {\n        this.paneState.updatePendingContentFromScrollState({\n          scroller: this.scroller,\n          fetchedOnce: this.messagesLoader.fetchedOnce,\n          canLoadMoreFuture: this.messagesLoader.canLoadMoreFuture,\n          state\n        });\n        this.chatChannelScrollPositions.set(this.args.channel.id, state.firstVisibleId);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"onScrollEnd\", [_object.action]);\n    }\n    async onSendMessage(message) {\n      if (message.message.length > this.siteSettings.chat_maximum_message_length) {\n        this.dialog.alert((0, _discourseI18n.i18n)(\"chat.message_too_long\", {\n          count: this.siteSettings.chat_maximum_message_length\n        }));\n        return;\n      }\n      await message.cook();\n      if (message.editing) {\n        await this.#sendEditMessage(message);\n      } else {\n        await this.#sendNewMessage(message);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"onSendMessage\", [_object.action]);\n    }\n    resetComposerMessage() {\n      this.args.channel.resetDraft(this.currentUser);\n    }\n    static {\n      dt7948.n(this.prototype, \"resetComposerMessage\", [_object.action]);\n    }\n    async #sendEditMessage(message) {\n      this.pane.sending = true;\n      const data = {\n        message: message.message,\n        upload_ids: message.uploads.map(upload => upload.id)\n      };\n      this.resetComposerMessage();\n      try {\n        await this.chatApi.editMessage(this.args.channel.id, message.id, data);\n      } catch (e) {\n        (0, _ajaxError.popupAjaxError)(e);\n      } finally {\n        message.editing = false;\n        this.pane.sending = false;\n      }\n    }\n    async #sendNewMessage(message) {\n      this.pane.sending = true;\n      await this.args.channel.stageMessage(message);\n      message.manager = this.args.channel.messagesManager;\n      this.resetComposerMessage();\n      if (!this.messagesLoader.canLoadMoreFuture) {\n        this.scrollToLatestMessage();\n      }\n      try {\n        await this.chatApi.sendMessage(this.args.channel.id, {\n          message: message.message,\n          in_reply_to_id: message.inReplyTo?.id,\n          staged_id: message.id,\n          upload_ids: message.uploads.map(upload => upload.id),\n          client_created_at: message.createdAt.toISOString(),\n          ...(0, _extractCurrentTopicInfo.extractCurrentTopicInfo)(this)\n        });\n        this.scrollToLatestMessage();\n      } catch (error) {\n        this._onSendError(message.id, error);\n      } finally {\n        this.pane.sending = false;\n      }\n    }\n    _onSendError(id, error) {\n      const stagedMessage = this.args.channel.messagesManager.findStagedMessage(id);\n      if (stagedMessage) {\n        if (error.jqXHR?.responseJSON?.errors?.length) {\n          // only network errors are retryable\n          stagedMessage.message = \"\";\n          stagedMessage.cooked = \"\";\n          stagedMessage.error = error.jqXHR.responseJSON.errors[0];\n        } else {\n          this.chat.markNetworkAsUnreliable();\n          stagedMessage.error = \"network_error\";\n        }\n      }\n      this.resetComposerMessage();\n    }\n    resendStagedMessage(stagedMessage) {\n      this.pane.sending = true;\n      stagedMessage.error = null;\n      const data = {\n        cooked: stagedMessage.cooked,\n        message: stagedMessage.message,\n        upload_ids: stagedMessage.uploads.map(upload => upload.id),\n        staged_id: stagedMessage.id\n      };\n      this.chatApi.sendMessage(this.args.channel.id, data).catch(error => {\n        this._onSendError(data.staged_id, error);\n      }).then(() => {\n        this.chat.markNetworkAsReliable();\n      }).finally(() => {\n        this.pane.sending = false;\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"resendStagedMessage\", [_object.action]);\n    }\n    onCloseFullScreen() {\n      this.chatStateManager.prefersDrawer();\n      _url.default.routeTo(this.chatStateManager.lastKnownAppURL).then(() => {\n        _url.default.routeTo(this.chatStateManager.lastKnownChatURL);\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"onCloseFullScreen\", [_object.action]);\n    }\n    _autoFocus(event) {\n      if (this.chatStateManager.isDrawerActive) {\n        return;\n      }\n      const {\n        key,\n        metaKey,\n        ctrlKey,\n        code,\n        target\n      } = event;\n      if (!key ||\n      // Handles things like Enter, Tab, Shift\n      key.length > 1 ||\n      // Don't need to focus if the user is beginning a shortcut.\n      metaKey || ctrlKey ||\n      // Space's key comes through as ' ' so it's not covered by key\n      code === \"Space\" ||\n      // ? is used for the keyboard shortcut modal\n      key === \"?\") {\n        return;\n      }\n      if (!target || /^(INPUT|TEXTAREA|SELECT)$/.test(target.tagName) || target.closest('[contenteditable=\"true\"]')) {\n        return;\n      }\n      event.preventDefault();\n      this.composer.focus({\n        addText: event.key\n      });\n      return;\n    }\n    static {\n      dt7948.n(this.prototype, \"_autoFocus\", [_decorators.bind]);\n    }\n    #cancelHandlers() {\n      (0, _runloop.cancel)(this._debouncedHighlightOrFetchMessageHandler);\n      (0, _runloop.cancel)(this._debouncedUpdateLastReadMessageHandler);\n      (0, _runloop.cancel)(this._debouncedFillPaneAttemptHandler);\n    }\n    #preloadThreadTrackingState(thread, threadTracking) {\n      if (!threadTracking[thread.id]) {\n        return;\n      }\n      thread.tracking.unreadCount = threadTracking[thread.id].unread_count;\n      thread.tracking.mentionCount = threadTracking[thread.id].mention_count;\n      thread.tracking.watchedThreadsUnreadCount = threadTracking[thread.id].watched_threads_unread_count;\n    }\n    #flushIgnoreNextScroll() {\n      const prev = this._ignoreNextScroll;\n      this._ignoreNextScroll = false;\n      return prev;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div\n        class={{concatClass\n          \"chat-channel\"\n          (if this.messagesLoader.loading \"loading\")\n          (if this.pane.sending \"chat-channel--sending\")\n          (if this.hasSavedScrollPosition \"chat-channel--saved-scroll-position\")\n          (if this.messagesLoader.fetchedOnce \"--loaded\")\n        }}\n        {{willDestroy this.teardown}}\n        {{didInsert this.setup}}\n        {{didUpdate this.loadMessages @targetMessageId}}\n        data-id={{@channel.id}}\n      >\n        <ChatChannelStatus @channel={{@channel}} />\n        <ChatNotices @channel={{@channel}} />\n        <ChatMentionWarnings />\n        <ChatChannelFilter\n          @isFiltering={{@isFiltering}}\n          @onToggleFilter={{@onToggleFilter}}\n          @channel={{@channel}}\n          @onLoadTargetMessageId={{this.onLoadTargetMessageId}}\n        />\n      \n        <ChatMessagesScroller\n          @onRegisterScroller={{this.registerScroller}}\n          @onScroll={{this.onScroll}}\n          @onScrollEnd={{this.onScrollEnd}}\n        >\n          <ChatMessagesContainer @didResizePane={{this.didResizePane}}>\n            {{#each this.messagesManager.messages key=\"id\" as |message|}}\n              <Message\n                @message={{message}}\n                @disableMouseEvents={{this.isScrolling}}\n                @resendStagedMessage={{this.resendStagedMessage}}\n                @fetchMessagesByDate={{this.fetchMessagesByDate}}\n                @context=\"channel\"\n              />\n            {{else}}\n              {{#unless this.messagesLoader.fetchedOnce}}\n                <ChatSkeleton />\n              {{/unless}}\n            {{/each}}\n          </ChatMessagesContainer>\n      \n          {{! at bottom even if shown at top due to column-reverse  }}\n          {{#if this.messagesLoader.loadedPast}}\n            <div class=\"all-loaded-message\">\n              {{i18n \"chat.all_loaded\"}}\n            </div>\n          {{/if}}\n        </ChatMessagesScroller>\n      \n        <ChatScrollToBottomArrow\n          @onScrollToBottom={{this.scrollToLatestMessage}}\n          @isVisible={{this.paneState.hasPendingContentBelow}}\n        />\n      \n        {{#if this.pane.selectingMessages}}\n          <ChatSelectionManager\n            @enableMove={{and\n              (not @channel.isDirectMessageChannel)\n              @channel.canModerate\n            }}\n            @pane={{this.pane}}\n            @messagesManager={{this.messagesManager}}\n          />\n        {{else}}\n          {{#if (and (not @channel.isFollowing) @channel.isCategoryChannel)}}\n            <ChatChannelPreviewCard @channel={{@channel}} />\n          {{else}}\n            <ChatComposerChannel\n              @channel={{@channel}}\n              @uploadDropZone={{this.uploadDropZone}}\n              @onSendMessage={{this.onSendMessage}}\n              @scroller={{this.scroller}}\n            />\n          {{/if}}\n        {{/if}}\n      \n        <ChatUploadDropZone @model={{@channel}} />\n      </div>\n      */\n      {\n        \"id\": \"ImI/bkUo\",\n        \"block\": \"[[[11,0],[16,0,[28,[32,0],[\\\"chat-channel\\\",[52,[30,0,[\\\"messagesLoader\\\",\\\"loading\\\"]],\\\"loading\\\"],[52,[30,0,[\\\"pane\\\",\\\"sending\\\"]],\\\"chat-channel--sending\\\"],[52,[30,0,[\\\"hasSavedScrollPosition\\\"]],\\\"chat-channel--saved-scroll-position\\\"],[52,[30,0,[\\\"messagesLoader\\\",\\\"fetchedOnce\\\"]],\\\"--loaded\\\"]],null]],[16,\\\"data-id\\\",[30,1,[\\\"id\\\"]]],[4,[32,1],[[30,0,[\\\"teardown\\\"]]],null],[4,[32,2],[[30,0,[\\\"setup\\\"]]],null],[4,[32,3],[[30,0,[\\\"loadMessages\\\"]],[30,2]],null],[12],[1,\\\"\\\\n  \\\"],[8,[32,4],null,[[\\\"@channel\\\"],[[30,1]]],null],[1,\\\"\\\\n  \\\"],[8,[32,5],null,[[\\\"@channel\\\"],[[30,1]]],null],[1,\\\"\\\\n  \\\"],[8,[32,6],null,null,null],[1,\\\"\\\\n  \\\"],[8,[32,7],null,[[\\\"@isFiltering\\\",\\\"@onToggleFilter\\\",\\\"@channel\\\",\\\"@onLoadTargetMessageId\\\"],[[30,3],[30,4],[30,1],[30,0,[\\\"onLoadTargetMessageId\\\"]]]],null],[1,\\\"\\\\n\\\\n  \\\"],[8,[32,8],null,[[\\\"@onRegisterScroller\\\",\\\"@onScroll\\\",\\\"@onScrollEnd\\\"],[[30,0,[\\\"registerScroller\\\"]],[30,0,[\\\"onScroll\\\"]],[30,0,[\\\"onScrollEnd\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,9],null,[[\\\"@didResizePane\\\"],[[30,0,[\\\"didResizePane\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\\\"messagesManager\\\",\\\"messages\\\"]]],null]],null],\\\"id\\\",[[[1,\\\"        \\\"],[8,[32,10],null,[[\\\"@message\\\",\\\"@disableMouseEvents\\\",\\\"@resendStagedMessage\\\",\\\"@fetchMessagesByDate\\\",\\\"@context\\\"],[[30,5],[30,0,[\\\"isScrolling\\\"]],[30,0,[\\\"resendStagedMessage\\\"]],[30,0,[\\\"fetchMessagesByDate\\\"]],\\\"channel\\\"]],null],[1,\\\"\\\\n\\\"]],[5]],[[[41,[51,[30,0,[\\\"messagesLoader\\\",\\\"fetchedOnce\\\"]]],[[[1,\\\"          \\\"],[8,[32,11],null,null,null],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"messagesLoader\\\",\\\"loadedPast\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"all-loaded-message\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,12],[\\\"chat.all_loaded\\\"],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[32,13],null,[[\\\"@onScrollToBottom\\\",\\\"@isVisible\\\"],[[30,0,[\\\"scrollToLatestMessage\\\"]],[30,0,[\\\"paneState\\\",\\\"hasPendingContentBelow\\\"]]]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"pane\\\",\\\"selectingMessages\\\"]],[[[1,\\\"    \\\"],[8,[32,14],null,[[\\\"@enableMove\\\",\\\"@pane\\\",\\\"@messagesManager\\\"],[[28,[32,15],[[28,[32,16],[[30,1,[\\\"isDirectMessageChannel\\\"]]],null],[30,1,[\\\"canModerate\\\"]]],null],[30,0,[\\\"pane\\\"]],[30,0,[\\\"messagesManager\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[32,15],[[28,[32,16],[[30,1,[\\\"isFollowing\\\"]]],null],[30,1,[\\\"isCategoryChannel\\\"]]],null],[[[1,\\\"      \\\"],[8,[32,17],null,[[\\\"@channel\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[32,18],null,[[\\\"@channel\\\",\\\"@uploadDropZone\\\",\\\"@onSendMessage\\\",\\\"@scroller\\\"],[[30,1],[30,0,[\\\"uploadDropZone\\\"]],[30,0,[\\\"onSendMessage\\\"]],[30,0,[\\\"scroller\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]]]],[]]],[1,\\\"\\\\n  \\\"],[8,[32,19],null,[[\\\"@model\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"],[13]],[\\\"@channel\\\",\\\"@targetMessageId\\\",\\\"@isFiltering\\\",\\\"@onToggleFilter\\\",\\\"message\\\"],[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\",\\\"unless\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-channel.js\",\n        \"scope\": () => [_concatClass.default, _willDestroy.default, _didInsert.default, _didUpdate.default, _chatChannelStatus.default, _chatNotices.default, _chatMentionWarnings.default, _chatChannelFilter.default, _chatMessagesScroller.default, _chatMessagesContainer.default, _chatMessage2.default, _chatSkeleton.default, _discourseI18n.i18n, _scrollToBottomArrow.default, _selectionManager.default, _truthHelpers.and, _truthHelpers.not, _chatChannelPreviewCard.default, _channel.default, _chatUploadDropZone.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatChannel;\n});","define(\"discourse/plugins/chat/discourse/components/chat-composer-dropdown\", [\"exports\", \"@glimmer/component\", \"@ember/helper\", \"@ember/modifier\", \"@ember/object\", \"discourse/components/d-button\", \"discourse/float-kit/components/d-menu\", \"discourse/helpers/concat-class\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _helper, _modifier, _object, _dButton, _dMenu, _concatClass, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatComposerDropdown extends _component.default {\n    async onButtonClick(button, closeFn) {\n      // Safari requires file input clicks to happen synchronously\n      // within the user gesture event chain. Using await breaks this\n      // chain and prevents the file picker from opening.\n      // See: https://webkit.org/blog/13862/the-user-activation-api/\n      if (button.synchronous) {\n        closeFn();\n        button.action();\n      } else {\n        await closeFn();\n        await button.action();\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"onButtonClick\", [_object.action]);\n    }\n    doubleClick(event) {\n      event.preventDefault();\n      const uploadButton = this.args.buttons.filter(button => button.id === \"chat-upload-btn\" && !button.disabled)[0];\n      uploadButton?.action?.();\n    }\n    static {\n      dt7948.n(this.prototype, \"doubleClick\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if @buttons.length}}\n        <DMenu\n          class={{concatClass\n            \"chat-composer-dropdown__trigger-btn\"\n            \"btn-flat\"\n            (if @hasActivePanel \"has-active-panel\")\n          }}\n          @title={{i18n \"chat.composer.toggle_toolbar\"}}\n          @icon=\"plus\"\n          @disabled={{@isDisabled}}\n          @arrow={{true}}\n          @placements={{array \"top\" \"bottom\"}}\n          @identifier=\"chat-composer-dropdown__menu\"\n          @modalForMobile={{true}}\n          {{on \"dblclick\" this.doubleClick}}\n          ...attributes\n          as |menu|\n        >\n          <ul class=\"chat-composer-dropdown__list\">\n            {{#each @buttons as |button|}}\n              <li class={{concatClass \"chat-composer-dropdown__item\" button.id}}>\n                <DButton\n                  @icon={{button.icon}}\n                  @action={{fn this.onButtonClick button menu.close}}\n                  @label={{button.label}}\n                  class={{concatClass\n                    \"chat-composer-dropdown__action-btn\"\n                    \"btn-transparent\"\n                    button.id\n                  }}\n                />\n              </li>\n            {{/each}}\n          </ul>\n        </DMenu>\n      {{/if}}\n      */\n      {\n        \"id\": \"r2+rfdh1\",\n        \"block\": \"[[[41,[30,1,[\\\"length\\\"]],[[[1,\\\"  \\\"],[8,[32,0],[[16,0,[28,[32,1],[\\\"chat-composer-dropdown__trigger-btn\\\",\\\"btn-flat\\\",[52,[30,2],\\\"has-active-panel\\\"]],null]],[17,3],[4,[32,4],[\\\"dblclick\\\",[30,0,[\\\"doubleClick\\\"]]],null]],[[\\\"@title\\\",\\\"@icon\\\",\\\"@disabled\\\",\\\"@arrow\\\",\\\"@placements\\\",\\\"@identifier\\\",\\\"@modalForMobile\\\"],[[28,[32,2],[\\\"chat.composer.toggle_toolbar\\\"],null],\\\"plus\\\",[30,4],true,[28,[32,3],[\\\"top\\\",\\\"bottom\\\"],null],\\\"chat-composer-dropdown__menu\\\",true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,\\\"ul\\\"],[14,0,\\\"chat-composer-dropdown__list\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,2],[[28,[31,2],[[30,1]],null]],null],null,[[[1,\\\"        \\\"],[10,\\\"li\\\"],[15,0,[28,[32,1],[\\\"chat-composer-dropdown__item\\\",[30,6,[\\\"id\\\"]]],null]],[12],[1,\\\"\\\\n          \\\"],[8,[32,5],[[16,0,[28,[32,1],[\\\"chat-composer-dropdown__action-btn\\\",\\\"btn-transparent\\\",[30,6,[\\\"id\\\"]]],null]]],[[\\\"@icon\\\",\\\"@action\\\",\\\"@label\\\"],[[30,6,[\\\"icon\\\"]],[28,[32,6],[[30,0,[\\\"onButtonClick\\\"]],[30,6],[30,5,[\\\"close\\\"]]],null],[30,6,[\\\"label\\\"]]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[6]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"]],[5]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@buttons\\\",\\\"@hasActivePanel\\\",\\\"&attrs\\\",\\\"@isDisabled\\\",\\\"menu\\\",\\\"button\\\"],[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-composer-dropdown.js\",\n        \"scope\": () => [_dMenu.default, _concatClass.default, _discourseI18n.i18n, _helper.array, _modifier.on, _dButton.default, _helper.fn],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatComposerDropdown;\n});","define(\"discourse/plugins/chat/discourse/components/chat-composer-message-details\", [\"exports\", \"@ember/template\", \"discourse/components/d-button\", \"discourse/helpers/d-icon\", \"discourse/helpers/replace-emoji\", \"discourse/plugins/chat/discourse/components/chat-user-avatar\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _template, _dButton, _dIcon, _replaceEmoji, _chatUserAvatar, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatComposerMessageDetails = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div\n    class=\"chat-composer-message-details\"\n    data-id={{@message.id}}\n    data-action={{if @message.editing \"edit\" \"reply\"}}\n  >\n    <div class=\"chat-reply\">\n      {{icon (if @message.editing \"pencil\" \"reply\")}}\n      <ChatUserAvatar @user={{@message.user}} />\n      <span class=\"chat-reply__username\">{{@message.user.username}}</span>\n      <span class=\"chat-reply__excerpt\">\n        {{replaceEmoji (trustHTML @message.excerpt)}}\n      </span>\n    </div>\n  \n    <DButton\n      @action={{@cancelAction}}\n      @icon=\"circle-xmark\"\n      @title=\"cancel\"\n      class=\"btn-flat cancel-message-action\"\n    />\n  </div>\n  */\n  {\n    \"id\": \"U7c1FXsP\",\n    \"block\": \"[[[10,0],[14,0,\\\"chat-composer-message-details\\\"],[15,\\\"data-id\\\",[30,1,[\\\"id\\\"]]],[15,\\\"data-action\\\",[52,[30,1,[\\\"editing\\\"]],\\\"edit\\\",\\\"reply\\\"]],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-reply\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[28,[32,0],[[52,[30,1,[\\\"editing\\\"]],\\\"pencil\\\",\\\"reply\\\"]],null]],[1,\\\"\\\\n    \\\"],[8,[32,1],null,[[\\\"@user\\\"],[[30,1,[\\\"user\\\"]]]],null],[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"chat-reply__username\\\"],[12],[1,[30,1,[\\\"user\\\",\\\"username\\\"]]],[13],[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"chat-reply__excerpt\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[28,[32,2],[[28,[32,3],[[30,1,[\\\"excerpt\\\"]]],null]],null]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[8,[32,4],[[24,0,\\\"btn-flat cancel-message-action\\\"]],[[\\\"@action\\\",\\\"@icon\\\",\\\"@title\\\"],[[30,2],\\\"circle-xmark\\\",\\\"cancel\\\"]],null],[1,\\\"\\\\n\\\"],[13]],[\\\"@message\\\",\\\"@cancelAction\\\"],[\\\"if\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-composer-message-details.js\",\n    \"scope\": () => [_dIcon.default, _chatUserAvatar.default, _replaceEmoji.default, _template.trustHTML, _dButton.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"chat-composer-message-details:ChatComposerMessageDetails\"));\n  var _default = _exports.default = ChatComposerMessageDetails;\n});","define(\"discourse/plugins/chat/discourse/components/chat-composer-upload\", [\"exports\", \"@glimmer/component\", \"discourse/components/d-button\", \"discourse/helpers/concat-class\", \"discourse/helpers/d-icon\", \"discourse/lib/get-url\", \"discourse/lib/uploads\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _dButton, _concatClass, _dIcon, _getUrl, _uploads, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatComposerUpload extends _component.default {\n    get fileName() {\n      return this.args.isDone ? this.args.upload.original_filename : this.args.upload.fileName;\n    }\n    get previewImageSrc() {\n      return (0, _getUrl.getURLWithCDN)(this.args.upload?.url);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if @upload}}\n        <div\n          class={{concatClass\n            \"chat-composer-upload\"\n            (if (isImage this.fileName) \"chat-composer-upload--image\")\n            (unless @isDone \"chat-composer-upload--in-progress\")\n          }}\n        >\n          <div class=\"preview\">\n            {{#if (isImage this.fileName)}}\n              {{#if @isDone}}\n                <img class=\"preview-img\" src={{this.previewImageSrc}} />\n              {{else}}\n                {{icon \"far-image\"}}\n              {{/if}}\n            {{else if (isVideo this.fileName)}}\n              {{icon \"file-video\"}}\n            {{else if (isAudio this.fileName)}}\n              {{icon \"file-audio\"}}\n            {{else}}\n              {{icon \"file-lines\"}}\n            {{/if}}\n          </div>\n      \n          <span class=\"data\">\n            {{#unless (isImage this.fileName)}}\n              <div class=\"top-data\">\n                <span class=\"file-name\">{{this.fileName}}</span>\n              </div>\n            {{/unless}}\n      \n            <div class=\"bottom-data\">\n              {{#if @isDone}}\n                {{#unless (isImage this.fileName)}}\n                  <span class=\"extension-pill\">{{@upload.extension}}</span>\n                {{/unless}}\n              {{else}}\n                {{#if @upload.processing}}\n                  <span class=\"processing\">{{i18n \"processing\"}}</span>\n                {{else}}\n                  <span class=\"uploading\">{{i18n \"uploading\"}}</span>\n                {{/if}}\n      \n                <progress\n                  class=\"upload-progress\"\n                  id=\"file\"\n                  max=\"100\"\n                  value={{@upload.progress}}\n                ></progress>\n              {{/if}}\n            </div>\n          </span>\n      \n          <DButton\n            @action={{@onCancel}}\n            @icon=\"xmark\"\n            @title=\"chat.remove_upload\"\n            class=\"btn-flat chat-composer-upload__remove-btn\"\n          />\n        </div>\n      {{/if}}\n      */\n      {\n        \"id\": \"ey8WxrAx\",\n        \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[10,0],[15,0,[28,[32,0],[\\\"chat-composer-upload\\\",[52,[28,[32,1],[[30,0,[\\\"fileName\\\"]]],null],\\\"chat-composer-upload--image\\\"],[52,[51,[30,2]],\\\"chat-composer-upload--in-progress\\\"]],null]],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"preview\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[32,1],[[30,0,[\\\"fileName\\\"]]],null],[[[41,[30,2],[[[1,\\\"          \\\"],[10,\\\"img\\\"],[14,0,\\\"preview-img\\\"],[15,\\\"src\\\",[30,0,[\\\"previewImageSrc\\\"]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[1,[28,[32,2],[\\\"far-image\\\"],null]],[1,\\\"\\\\n\\\"]],[]]]],[]],[[[41,[28,[32,3],[[30,0,[\\\"fileName\\\"]]],null],[[[1,\\\"        \\\"],[1,[28,[32,2],[\\\"file-video\\\"],null]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[32,4],[[30,0,[\\\"fileName\\\"]]],null],[[[1,\\\"        \\\"],[1,[28,[32,2],[\\\"file-audio\\\"],null]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[1,[28,[32,2],[\\\"file-lines\\\"],null]],[1,\\\"\\\\n      \\\"]],[]]]],[]]]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,1],[14,0,\\\"data\\\"],[12],[1,\\\"\\\\n\\\"],[41,[51,[28,[32,1],[[30,0,[\\\"fileName\\\"]]],null]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"top-data\\\"],[12],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"file-name\\\"],[12],[1,[30,0,[\\\"fileName\\\"]]],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"bottom-data\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,2],[[[41,[51,[28,[32,1],[[30,0,[\\\"fileName\\\"]]],null]],[[[1,\\\"            \\\"],[10,1],[14,0,\\\"extension-pill\\\"],[12],[1,[30,1,[\\\"extension\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[41,[30,1,[\\\"processing\\\"]],[[[1,\\\"            \\\"],[10,1],[14,0,\\\"processing\\\"],[12],[1,[28,[32,5],[\\\"processing\\\"],null]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            \\\"],[10,1],[14,0,\\\"uploading\\\"],[12],[1,[28,[32,5],[\\\"uploading\\\"],null]],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n          \\\"],[10,\\\"progress\\\"],[14,0,\\\"upload-progress\\\"],[14,1,\\\"file\\\"],[14,\\\"max\\\",\\\"100\\\"],[15,2,[30,1,[\\\"progress\\\"]]],[12],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[8,[32,6],[[24,0,\\\"btn-flat chat-composer-upload__remove-btn\\\"]],[[\\\"@action\\\",\\\"@icon\\\",\\\"@title\\\"],[[30,3],\\\"xmark\\\",\\\"chat.remove_upload\\\"]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@upload\\\",\\\"@isDone\\\",\\\"@onCancel\\\"],[\\\"if\\\",\\\"unless\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-composer-upload.js\",\n        \"scope\": () => [_concatClass.default, _uploads.isImage, _dIcon.default, _uploads.isVideo, _uploads.isAudio, _discourseI18n.i18n, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatComposerUpload;\n});","define(\"discourse/plugins/chat/discourse/components/chat-composer-uploads\", [\"exports\", \"@ember/component\", \"@ember/helper\", \"@ember/object\", \"@ember/owner\", \"@ember/service\", \"@ember-decorators/component\", \"discourse/components/pick-files-button\", \"discourse/lib/array-tools\", \"discourse/lib/decorators\", \"discourse/lib/object\", \"discourse/lib/tracked-tools\", \"discourse/lib/uppy/uppy-upload\", \"discourse/lib/uppy-media-optimization-plugin\", \"discourse/lib/utilities\", \"discourse/plugins/chat/discourse/components/chat-composer-upload\", \"@ember/template-factory\"], function (_exports, _component, _helper, _object, _owner, _service, _component2, _pickFilesButton, _arrayTools, _decorators, _object2, _trackedTools, _uppyUpload, _uppyMediaOptimizationPlugin, _utilities, _chatComposerUpload, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /* eslint-disable ember/no-classic-components */\n  const ChatComposerUploads = dt7948.c(class ChatComposerUploads extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"capabilities\", [_service.service]);\n    }\n    #capabilities = (dt7948.i(this, \"capabilities\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"mediaOptimizationWorker\", [_service.service]);\n    }\n    #mediaOptimizationWorker = (dt7948.i(this, \"mediaOptimizationWorker\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"uploads\", [_trackedTools.autoTrackedArray], function () {\n        return null;\n      });\n    }\n    #uploads = (dt7948.i(this, \"uploads\"), void 0);\n    uppyUpload = new _uppyUpload.default((0, _owner.getOwner)(this), {\n      id: \"chat-composer-uploader\",\n      type: \"chat-composer\",\n      useMultipartUploadsIfAvailable: true,\n      uppyReady: () => {\n        if (this.siteSettings.composer_media_optimization_image_enabled) {\n          this.uppyUpload.uppyWrapper.useUploadPlugin(_uppyMediaOptimizationPlugin.default, {\n            optimizeFn: (data, opts) => this.mediaOptimizationWorker.optimizeImage(data, opts),\n            runParallel: !this.capabilities.isMobileDevice\n          });\n        }\n        this.uppyUpload.uppyWrapper.onPreProcessProgress(file => {\n          const inProgressUpload = this.inProgressUploads.find(item => item.id === file.id);\n          if (!inProgressUpload?.processing) {\n            inProgressUpload?.set(\"processing\", true);\n          }\n        });\n        this.uppyUpload.uppyWrapper.onPreProcessComplete(file => {\n          const inProgressUpload = this.inProgressUploads.find(item => item.id === file.id);\n          inProgressUpload?.set(\"processing\", false);\n        });\n      },\n      uploadDone: upload => {\n        this.uploads.push(upload);\n        this._triggerUploadsChanged();\n      },\n      uploadDropTargetOptions: () => ({\n        target: this.uploadDropZone || document.body\n      }),\n      onProgressUploadsChanged: () => {\n        this._triggerUploadsChanged(this.uploads, {\n          inProgressUploadsCount: this.inProgressUploads?.length\n        });\n      }\n    });\n    existingUploads = null;\n    uploadDropZone = null;\n    get inProgressUploads() {\n      return this.uppyUpload.inProgressUploads;\n    }\n    didReceiveAttrs() {\n      super.didReceiveAttrs(...arguments);\n      if (this.inProgressUploads?.length > 0) {\n        this.uppyUpload.uppyWrapper.uppyInstance?.cancelAll();\n      }\n      this.uploads = this.existingUploads ? (0, _object2.cloneJSON)(this.existingUploads) : [];\n    }\n    didInsertElement() {\n      super.didInsertElement(...arguments);\n      this.composerInputEl?.addEventListener(\"paste\", this._pasteEventListener);\n    }\n    willDestroyElement() {\n      super.willDestroyElement(...arguments);\n      this.composerInputEl?.removeEventListener(\"paste\", this._pasteEventListener);\n    }\n    get showUploadsContainer() {\n      return this.uploads?.length > 0 || this.inProgressUploads.length > 0;\n    }\n    cancelUploading(upload) {\n      this.uppyUpload.cancelSingleUpload({\n        fileId: upload.id\n      });\n      this.removeUpload(upload);\n    }\n    static {\n      dt7948.n(this.prototype, \"cancelUploading\", [_object.action]);\n    }\n    removeUpload(upload) {\n      (0, _arrayTools.removeValueFromArray)(this.uploads, upload);\n      this._triggerUploadsChanged();\n    }\n    static {\n      dt7948.n(this.prototype, \"removeUpload\", [_object.action]);\n    }\n    _pasteEventListener(event) {\n      if (document.activeElement !== this.composerInputEl) {\n        return;\n      }\n      const {\n        canUpload,\n        canPasteHtml,\n        types\n      } = (0, _utilities.clipboardHelpers)(event, {\n        siteSettings: this.siteSettings,\n        canUpload: true\n      });\n      if (!canUpload || canPasteHtml || types.includes(\"text/plain\")) {\n        return;\n      }\n      if (event && event.clipboardData && event.clipboardData.files) {\n        this.uppyUpload.addFiles([...event.clipboardData.files], {\n          pasted: true\n        });\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"_pasteEventListener\", [_decorators.bind]);\n    }\n    _triggerUploadsChanged() {\n      this.onUploadChanged?.(this.uploads, {\n        inProgressUploadsCount: this.inProgressUploads?.length\n      });\n    }\n    static {\n      (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"chat-composer-uploads\" ...attributes>\n        {{#if this.showUploadsContainer}}\n          <div class=\"chat-composer-uploads-container\">\n            {{#each this.uploads as |upload|}}\n              <ChatComposerUpload\n                @upload={{upload}}\n                @isDone={{true}}\n                @onCancel={{fn this.removeUpload upload}}\n              />\n            {{/each}}\n      \n            {{#each this.inProgressUploads as |upload|}}\n              <ChatComposerUpload\n                @upload={{upload}}\n                @onCancel={{fn this.cancelUploading upload}}\n              />\n            {{/each}}\n          </div>\n        {{/if}}\n      \n        <PickFilesButton\n          @allowMultiple={{true}}\n          @fileInputId={{this.fileUploadElementId}}\n          @fileInputClass=\"hidden-upload-field\"\n          @registerFileInput={{this.uppyUpload.setup}}\n        />\n      </div>\n      */\n      {\n        \"id\": \"ss3gPCzK\",\n        \"block\": \"[[[11,0],[24,0,\\\"chat-composer-uploads\\\"],[17,1],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showUploadsContainer\\\"]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"chat-composer-uploads-container\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\\\"uploads\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[8,[32,0],null,[[\\\"@upload\\\",\\\"@isDone\\\",\\\"@onCancel\\\"],[[30,2],true,[28,[32,1],[[30,0,[\\\"removeUpload\\\"]],[30,2]],null]]],null],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"\\\\n\\\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\\\"inProgressUploads\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[8,[32,0],null,[[\\\"@upload\\\",\\\"@onCancel\\\"],[[30,3],[28,[32,1],[[30,0,[\\\"cancelUploading\\\"]],[30,3]],null]]],null],[1,\\\"\\\\n\\\"]],[3]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[8,[32,2],null,[[\\\"@allowMultiple\\\",\\\"@fileInputId\\\",\\\"@fileInputClass\\\",\\\"@registerFileInput\\\"],[true,[30,0,[\\\"fileUploadElementId\\\"]],\\\"hidden-upload-field\\\",[30,0,[\\\"uppyUpload\\\",\\\"setup\\\"]]]],null],[1,\\\"\\\\n\\\"],[13]],[\\\"&attrs\\\",\\\"upload\\\",\\\"upload\\\"],[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-composer-uploads.js\",\n        \"scope\": () => [_chatComposerUpload.default, _helper.fn, _pickFilesButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }, [(0, _component2.tagName)(\"\")]);\n  var _default = _exports.default = ChatComposerUploads;\n});","define(\"discourse/plugins/chat/discourse/components/chat-composer\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/helper\", \"@ember/modifier\", \"@ember/object\", \"@ember/owner\", \"@ember/render-modifiers/modifiers/did-insert\", \"@ember/render-modifiers/modifiers/did-update\", \"@ember/render-modifiers/modifiers/will-destroy\", \"@ember/runloop\", \"@ember/service\", \"@ember/utils\", \"pretty-text/emoji\", \"pretty-text/emoji/data\", \"rsvp\", \"discourse/components/d-textarea\", \"discourse/components/emoji-autocomplete-results\", \"discourse/components/emoji-picker/detached\", \"discourse/components/modal/upsert-hyperlink\", \"discourse/components/plugin-outlet\", \"discourse/components/user-autocomplete-results\", \"discourse/helpers/concat-class\", \"discourse/helpers/lazy-hash\", \"discourse/lib/hashtag-autocomplete\", \"discourse/lib/load-emoji-search-aliases\", \"discourse/lib/object\", \"discourse/lib/optional-service\", \"discourse/lib/text\", \"discourse/lib/textarea-text-manipulation\", \"discourse/lib/user-search\", \"discourse/lib/user-status-on-autocomplete\", \"discourse/lib/utilities\", \"discourse/lib/virtual-element-from-text-range\", \"discourse/lib/wait-for-keyboard\", \"discourse/modifiers/d-autocomplete\", \"discourse/modifiers/force-scrolling-element-position\", \"discourse/modifiers/prevent-scroll-on-focus\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/composer/button\", \"discourse/plugins/chat/discourse/components/chat-composer-dropdown\", \"discourse/plugins/chat/discourse/components/chat-composer-message-details\", \"discourse/plugins/chat/discourse/components/chat-composer-uploads\", \"discourse/plugins/chat/discourse/components/chat-replying-indicator\", \"discourse/plugins/chat/discourse/lib/chat-composer-buttons\", \"discourse/plugins/chat/discourse/lib/chat-message-interactor\", \"discourse/plugins/chat/discourse/lib/textarea-interactor\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _helper, _modifier, _object, _owner, _didInsert, _didUpdate, _willDestroy, _runloop, _service, _utils, _emoji, _data, _rsvp, _dTextarea, _emojiAutocompleteResults, _detached, _upsertHyperlink, _pluginOutlet, _userAutocompleteResults, _concatClass, _lazyHash, _hashtagAutocomplete, _loadEmojiSearchAliases, _object2, _optionalService, _text, _textareaTextManipulation, _userSearch, _userStatusOnAutocomplete, _utilities, _virtualElementFromTextRange, _waitForKeyboard, _dAutocomplete, _forceScrollingElementPosition, _preventScrollOnFocus, _truthHelpers, _discourseI18n, _button, _chatComposerDropdown, _chatComposerMessageDetails, _chatComposerUploads, _chatReplyingIndicator, _chatComposerButtons, _chatMessageInteractor, _textareaInteractor, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const CHAT_PRESENCE_KEEP_ALIVE = 5 * 1000; // 5 seconds\n  class ChatComposer extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"capabilities\", [_service.service]);\n    }\n    #capabilities = (dt7948.i(this, \"capabilities\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"store\", [_service.service]);\n    }\n    #store = (dt7948.i(this, \"store\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatComposerWarningsTracker\", [_service.service]);\n    }\n    #chatComposerWarningsTracker = (dt7948.i(this, \"chatComposerWarningsTracker\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"appEvents\", [_service.service]);\n    }\n    #appEvents = (dt7948.i(this, \"appEvents\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"emojiStore\", [_service.service]);\n    }\n    #emojiStore = (dt7948.i(this, \"emojiStore\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"menu\", [_service.service]);\n    }\n    #menu = (dt7948.i(this, \"menu\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"composerPresenceManager\", [_optionalService.default]);\n    }\n    #composerPresenceManager = (dt7948.i(this, \"composerPresenceManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"isFocused\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #isFocused = (dt7948.i(this, \"isFocused\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"inProgressUploadsCount\", [_tracking.tracked], function () {\n        return 0;\n      });\n    }\n    #inProgressUploadsCount = (dt7948.i(this, \"inProgressUploadsCount\"), void 0);\n    get shouldRenderMessageDetails() {\n      return this.draft?.editing || this.context === \"channel\" && this.draft?.inReplyTo;\n    }\n    get inlineButtons() {\n      return (0, _chatComposerButtons.chatComposerButtons)(this, \"inline\", this.context);\n    }\n    get dropdownButtons() {\n      return (0, _chatComposerButtons.chatComposerButtons)(this, \"dropdown\", this.context);\n    }\n    get fileUploadElementId() {\n      return this.context + \"-file-uploader\";\n    }\n    get canAttachUploads() {\n      return this.siteSettings.chat_allow_uploads && (0, _utils.isPresent)(this.args.uploadDropZone);\n    }\n    persistDraft() {}\n    static {\n      dt7948.n(this.prototype, \"persistDraft\", [_object.action]);\n    }\n    setupAutocomplete(textarea) {\n      this.#applyUserAutocomplete(textarea);\n      this.#applyEmojiAutocomplete(textarea);\n      this.#applyCategoryHashtagAutocomplete(textarea);\n    }\n    static {\n      dt7948.n(this.prototype, \"setupAutocomplete\", [_object.action]);\n    }\n    setupTextareaInteractor(textarea) {\n      this.composer.textarea = new _textareaInteractor.default((0, _owner.getOwner)(this), textarea);\n      if (this.site.desktopView && this.args.autofocus) {\n        this.composer.focus({\n          ensureAtEnd: true,\n          refreshHeight: true\n        });\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"setupTextareaInteractor\", [_object.action]);\n    }\n    applyAutocomplete(textarea, options) {\n      const autocompleteHandler = new _textareaTextManipulation.TextareaAutocompleteHandler(textarea);\n      return _dAutocomplete.default.setupAutocomplete((0, _owner.getOwner)(this), textarea, autocompleteHandler, options);\n    }\n    didUpdateMessage() {\n      this.cancelPersistDraft();\n      this.composer.textarea.value = this.draft.message;\n      this.persistDraft();\n      this.captureMentions({\n        skipDebounce: true\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"didUpdateMessage\", [_object.action]);\n    }\n    didUpdateInReplyTo() {\n      this.cancelPersistDraft();\n      this.persistDraft();\n    }\n    static {\n      dt7948.n(this.prototype, \"didUpdateInReplyTo\", [_object.action]);\n    }\n    cancelPersistDraft() {\n      (0, _runloop.cancel)(this._persistHandler);\n    }\n    static {\n      dt7948.n(this.prototype, \"cancelPersistDraft\", [_object.action]);\n    }\n    handleInlineButtonAction(buttonAction, event) {\n      event.stopPropagation();\n      buttonAction();\n    }\n    static {\n      dt7948.n(this.prototype, \"handleInlineButtonAction\", [_object.action]);\n    }\n    get hasContent() {\n      const minLength = this.siteSettings.chat_minimum_message_length || 1;\n      return this.draft?.message?.length >= minLength || this.canAttachUploads && this.hasUploads;\n    }\n    get hasUploads() {\n      return this.draft?.uploads?.length > 0;\n    }\n    get sendEnabled() {\n      return (this.hasContent || this.draft?.editing) && !this.pane.sending && !this.inProgressUploadsCount > 0;\n    }\n    setup() {\n      this.composer.scroller = this.args.scroller;\n      this.appEvents.on(\"chat:modify-selection\", this, \"modifySelection\");\n      this.appEvents.on(\"chat:open-insert-link-modal\", this, \"openUpsertLinkModal\");\n    }\n    static {\n      dt7948.n(this.prototype, \"setup\", [_object.action]);\n    }\n    teardown() {\n      this.appEvents.off(\"chat:modify-selection\", this, \"modifySelection\");\n      this.appEvents.off(\"chat:open-insert-link-modal\", this, \"openUpsertLinkModal\");\n      this.pane.sending = false;\n    }\n    static {\n      dt7948.n(this.prototype, \"teardown\", [_object.action]);\n    }\n    insertDiscourseLocalDate() {\n      const LocalDatesCreateModal = (0, _utilities.optionalRequire)(\"discourse/plugins/discourse-local-dates/discourse/components/modal/local-dates-create\");\n      this.modal.show(LocalDatesCreateModal, {\n        model: {\n          insertDate: markup => {\n            this.composer.textarea.addText(this.composer.textarea.getSelected(), markup);\n            this.composer.focus();\n          }\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"insertDiscourseLocalDate\", [_object.action]);\n    }\n    uploadClicked() {\n      document.querySelector(`#${this.fileUploadElementId}`).click();\n    }\n    static {\n      dt7948.n(this.prototype, \"uploadClicked\", [_object.action]);\n    }\n    computeIsFocused(isFocused) {\n      (0, _runloop.next)(() => {\n        this.isFocused = isFocused;\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"computeIsFocused\", [_object.action]);\n    }\n    onInput(event) {\n      this.draft.draftSaved = false;\n      this.draft.message = event.target.value;\n      this.composer.textarea.refreshHeight();\n      this.reportReplyingPresence();\n      this.persistDraft();\n      this.captureMentions();\n    }\n    static {\n      dt7948.n(this.prototype, \"onInput\", [_object.action]);\n    }\n    onUploadChanged(uploads, {\n      inProgressUploadsCount\n    }) {\n      this.draft.draftSaved = false;\n      this.inProgressUploadsCount = inProgressUploadsCount || 0;\n      if (typeof uploads !== \"undefined\" && inProgressUploadsCount !== \"undefined\" && inProgressUploadsCount === 0 && this.draft) {\n        this.draft.uploads = (0, _object2.cloneJSON)(uploads);\n      }\n      this.composer.textarea?.focus();\n      this.reportReplyingPresence();\n      this.persistDraft();\n    }\n    static {\n      dt7948.n(this.prototype, \"onUploadChanged\", [_object.action]);\n    }\n    trapMouseDown(event) {\n      event?.preventDefault();\n    }\n    static {\n      dt7948.n(this.prototype, \"trapMouseDown\", [_object.action]);\n    }\n    async onSend(event) {\n      if (!this.sendEnabled) {\n        return;\n      }\n      event?.preventDefault();\n      if (this.draft.editing && !this.hasUploads && this.draft.message.length === 0) {\n        this.#deleteEmptyMessage();\n        return;\n      }\n      if (await this.reactingToLastMessage()) {\n        return;\n      }\n      await this.args.onSendMessage(this.draft);\n      this.composer.textarea.refreshHeight();\n    }\n    static {\n      dt7948.n(this.prototype, \"onSend\", [_object.action]);\n    }\n    async reactingToLastMessage() {\n      // Check if the message is a reaction to the latest message in the channel.\n      const message = this.draft.message.trim();\n      let reactionCode = \"\";\n      if (message.startsWith(\"+\")) {\n        const reaction = message.substring(1);\n        // First check if the message is +{emoji}\n        if (_data.replacements[reaction]) {\n          reactionCode = _data.replacements[reaction];\n        } else {\n          // Then check if the message is +:{emoji_code}:\n          const emojiCode = reaction.substring(1, reaction.length - 1);\n          reactionCode = (0, _emoji.normalizeEmoji)(emojiCode);\n        }\n      }\n      if (reactionCode && this.lastMessage?.id) {\n        const interactor = new _chatMessageInteractor.default((0, _owner.getOwner)(this), this.lastMessage, this.context);\n        await interactor.react(reactionCode, \"add\");\n        this.resetDraft();\n        return true;\n      }\n      return false;\n    }\n    reportReplyingPresence() {\n      if (!this.args.channel || !this.draft) {\n        return;\n      }\n      this.composerPresenceManager?.notifyState(this.presenceChannelName, !this.draft.editing && this.hasContent, CHAT_PRESENCE_KEEP_ALIVE);\n    }\n    modifySelection(event, options = {\n      type: null,\n      context: null\n    }) {\n      if (options.context !== this.context) {\n        return;\n      }\n      const sel = this.composer.textarea.getSelected(\"\", {\n        lineVal: true\n      });\n      if (options.type === \"bold\") {\n        this.composer.textarea.applySurround(sel, \"**\", \"**\", \"bold_text\");\n      } else if (options.type === \"italic\") {\n        this.composer.textarea.applySurround(sel, \"_\", \"_\", \"italic_text\");\n      } else if (options.type === \"code\") {\n        this.composer.textarea.applySurround(sel, \"`\", \"`\", \"code_text\");\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"modifySelection\", [_object.action]);\n    }\n    forceScrollPosition() {\n      if (!this.capabilities.isIOS || this.capabilities.isIpadOS) {\n        return;\n      }\n      // attempts to reposition body\n      if (window.pageYOffset <= 100) {\n        // on iOS scrolling to 0 doesn’t work correctly\n        // scrolling to -1 is more consistent\n        window.scrollTo(0, -1);\n      }\n    }\n    onTextareaFocusOut() {\n      this.forceScrollPosition();\n      this.isFocused = false;\n    }\n    static {\n      dt7948.n(this.prototype, \"onTextareaFocusOut\", [_object.action]);\n    }\n    onTextareaFocusIn() {\n      this.forceScrollPosition();\n      this.isFocused = true;\n    }\n    static {\n      dt7948.n(this.prototype, \"onTextareaFocusIn\", [_object.action]);\n    }\n    onKeyDown(event) {\n      if (this.capabilities.isMobileDevice || event.altKey || event.isComposing || this.#isAutocompleteDisplayed()) {\n        return;\n      }\n      if (event.key === \"Escape\" && !event.shiftKey) {\n        return this.handleEscape(event);\n      }\n      if (event.key === \"Enter\") {\n        const shortcutPreference = this.currentUser.user_option.chat_send_shortcut;\n        const send = shortcutPreference === \"enter\" && !event.shiftKey || event.ctrlKey || event.metaKey;\n        if (!send) {\n          // insert newline\n          return;\n        }\n        this.onSend();\n        event.preventDefault();\n        return false;\n      }\n      if (event.key === \"ArrowUp\" && !this.hasContent && !this.draft.editing) {\n        if (event.shiftKey && this.lastMessage?.replyable) {\n          this.composer.replyTo(this.lastMessage);\n        } else {\n          const editableMessage = this.lastUserMessage(this.currentUser);\n          if (editableMessage?.editable) {\n            this.composer.edit(editableMessage);\n            this.args.channel.draft = editableMessage;\n          }\n        }\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"onKeyDown\", [_object.action]);\n    }\n    openUpsertLinkModal(event, options = {\n      context: null\n    }) {\n      if (options.context !== this.context) {\n        return;\n      }\n      const selected = this.composer.textarea.getSelected(\"\", {\n        lineVal: true\n      });\n      const linkText = selected?.value;\n      this.modal.show(_upsertHyperlink.default, {\n        model: {\n          linkText,\n          toolbarEvent: {\n            addText: text => this.composer.textarea.addText(selected, text)\n          }\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"openUpsertLinkModal\", [_object.action]);\n    }\n    onSelectEmoji(emoji, context = {}) {\n      const textareaInteractor = this.composer.textarea;\n      if (context.emojiTermStart && context.emojiTermStart) {\n        const value = textareaInteractor.textarea.value;\n        const valueUpToCursor = `${value.substring(0, context.emojiTermStart)}:${emoji}: `;\n        const valueAfterCursor = value.substring(context.emojiTermEnd + 1);\n        textareaInteractor.value = `${valueUpToCursor}${valueAfterCursor}`;\n        textareaInteractor.textarea.setSelectionRange(valueUpToCursor.length, valueUpToCursor.length);\n      } else {\n        textareaInteractor.emojiSelected(emoji);\n      }\n      if (this.site.desktopView) {\n        this.composer.focus();\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"onSelectEmoji\", [_object.action]);\n    }\n    captureMentions(opts = {\n      skipDebounce: false\n    }) {\n      if (this.hasContent) {\n        this.chatComposerWarningsTracker.trackMentions(this.draft, opts.skipDebounce);\n      } else {\n        this.chatComposerWarningsTracker.reset();\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"captureMentions\", [_object.action]);\n    }\n    #addMentionedUser(userData) {\n      const user = this.store.createRecord(\"user\", userData);\n      this.draft.mentionedUsers.set(user.id, user);\n    }\n    #applyUserAutocomplete(textarea) {\n      if (!this.siteSettings.enable_mentions) {\n        return;\n      }\n      this.applyAutocomplete(textarea, {\n        component: _userAutocompleteResults.default,\n        key: _userAutocompleteResults.default.TRIGGER_KEY,\n        width: \"100%\",\n        treatAsTextarea: true,\n        fixedTextareaPosition: true,\n        autoSelectFirstSuggestion: true,\n        transformComplete: obj => {\n          if (obj.isUser) {\n            this.#addMentionedUser((0, _object2.cloneJSON)(obj));\n          }\n          (0, _userSearch.validateSearchResult)(obj);\n          return obj.username || obj.name;\n        },\n        dataSource: term => {\n          (0, _userStatusOnAutocomplete.destroyUserStatuses)();\n          return (0, _userSearch.default)({\n            term,\n            includeGroups: true\n          }).then(result => {\n            if (result?.users?.length > 0) {\n              const presentUserNames = this.chat.presenceChannel.users?.map(item => item.username);\n              result.users.forEach(user => {\n                if (presentUserNames.includes(user.username)) {\n                  user.cssClasses = \"is-online\";\n                }\n              });\n              (0, _userStatusOnAutocomplete.initUserStatusHtml)((0, _owner.getOwner)(this), result.users);\n            }\n            return result;\n          });\n        },\n        onRender: options => {\n          (0, _userStatusOnAutocomplete.renderUserStatusHtml)(options);\n        },\n        afterComplete: (text, event) => {\n          event.preventDefault();\n          this.composer.textarea.value = text;\n          this.composer.focus();\n          this.captureMentions();\n        },\n        onClose: _userStatusOnAutocomplete.destroyUserStatuses\n      });\n    }\n    #applyCategoryHashtagAutocomplete(textarea) {\n      this.applyAutocomplete(textarea, (0, _hashtagAutocomplete.hashtagAutocompleteOptions)(this.site.hashtag_configurations[\"chat-composer\"], {\n        fixedTextareaPosition: true,\n        treatAsTextarea: true,\n        afterComplete: (text, event) => {\n          event.preventDefault();\n          this.composer.textarea.value = text;\n          this.composer.focus();\n        }\n      }));\n    }\n    #applyEmojiAutocomplete(textarea) {\n      if (!this.siteSettings.enable_emoji) {\n        return;\n      }\n      this.applyAutocomplete(textarea, {\n        component: _emojiAutocompleteResults.default,\n        key: _emojiAutocompleteResults.default.TRIGGER_KEY,\n        afterComplete: (text, event) => {\n          event.preventDefault();\n          this.composer.textarea.value = text;\n          this.composer.focus();\n        },\n        treatAsTextarea: true,\n        fixedTextareaPosition: true,\n        onKeyUp: (text, cp) => {\n          const matches = /(?:^|[\\s.\\?,@\\/#!%&*;:\\[\\]{}=\\-_()+])(:(?!:).?[\\w-]*:?(?!:)(?:t\\d?)?:?)$/gi.exec(text.substring(0, cp));\n          if (matches && matches[1]) {\n            return [matches[1]];\n          }\n        },\n        transformComplete: async v => {\n          if (v.code) {\n            return `${v.code}:`;\n          } else {\n            // Capture emoji term positioning before opening the emoji picker which resets the textarea state\n            const textareaInteractor = this.composer.textarea;\n            const currentValue = textareaInteractor.textarea.value;\n            const currentCaretPos = textareaInteractor.textarea.selectionStart;\n            let emojiContext = null;\n            if (currentValue && currentCaretPos !== undefined) {\n              const textBeforeCursor = currentValue.substring(0, currentCaretPos);\n              const incompleteMatch = textBeforeCursor.match(/(:[\\w-]+)$/);\n              if (incompleteMatch) {\n                emojiContext = {\n                  emojiTermStart: currentCaretPos - incompleteMatch[1].length,\n                  emojiTermEnd: currentCaretPos - 1\n                };\n              }\n            }\n            const menuOptions = {\n              identifier: \"emoji-picker\",\n              groupIdentifier: \"emoji-picker\",\n              component: _detached.default,\n              context: \"chat\",\n              modalForMobile: true,\n              data: {\n                didSelectEmoji: emoji => {\n                  this.onSelectEmoji(emoji, emojiContext);\n                },\n                term: v.term,\n                context: \"chat\"\n              }\n            };\n            // Close the keyboard before showing the emoji picker\n            // it avoids a whole range of bugs on iOS\n            await (0, _waitForKeyboard.waitForClosedKeyboard)(this.site, this.capabilities);\n            const virtualElement = (0, _virtualElementFromTextRange.default)();\n            this.menuInstance = await this.menu.show(virtualElement, menuOptions);\n            return \"\";\n          }\n        },\n        dataSource: term => {\n          return new _rsvp.Promise(resolve => {\n            const full = `:${term}`;\n            term = term.toLowerCase();\n            // We need to avoid quick emoji autocomplete cause it can interfere with quick\n            // typing, set minimal length to 2\n            let minLength = Math.max(this.siteSettings.emoji_autocomplete_min_chars, 2);\n            if (term.length < minLength) {\n              return resolve(_dAutocomplete.SKIP);\n            }\n            // bypass :-p and other common typed smileys\n            if (!term.match(/[^-\\{\\}\\[\\]\\(\\)\\*_\\<\\>\\\\\\/].*[^-\\{\\}\\[\\]\\(\\)\\*_\\<\\>\\\\\\/]/)) {\n              return resolve(_dAutocomplete.SKIP);\n            }\n            if (term === \"\") {\n              const favorites = this.emojiStore.favoritesForContext(\"chat\");\n              if (favorites.length > 0) {\n                return resolve(favorites.slice(0, 5));\n              } else {\n                return resolve([\"slight_smile\", \"smile\", \"wink\", \"sunny\", \"blush\"]);\n              }\n            }\n            // note this will only work for emojis starting with :\n            // eg: :-)\n            const emojiTranslation = this.site.custom_emoji_translation || {};\n            const allTranslations = Object.assign({}, _data.translations, emojiTranslation);\n            if (allTranslations[full]) {\n              return resolve([allTranslations[full]]);\n            }\n            const emojiDenied = this.site.denied_emojis || [];\n            const match = term.match(/^:?(.*?):t([2-6])?$/);\n            if (match) {\n              const name = match[1];\n              const scale = match[2];\n              if ((0, _emoji.isSkinTonableEmoji)(name) && !emojiDenied.includes(name)) {\n                if (scale) {\n                  return resolve([`${name}:t${scale}`]);\n                } else {\n                  return resolve([2, 3, 4, 5, 6].map(x => `${name}:t${x}`));\n                }\n              }\n            }\n            (0, _loadEmojiSearchAliases.default)().then(searchAliases => {\n              const options = (0, _emoji.emojiSearch)(term, {\n                maxResults: 5,\n                diversity: this.emojiStore.diversity,\n                exclude: emojiDenied,\n                searchAliases\n              });\n              resolve(options);\n            });\n          }).then(list => {\n            if (list === _dAutocomplete.SKIP) {\n              return;\n            }\n            return list.map(code => ({\n              code,\n              src: (0, _text.emojiUrlFor)(code)\n            }));\n          }).then(list => {\n            if (list?.length) {\n              list.push({\n                label: (0, _discourseI18n.i18n)(\"composer.more_emoji\"),\n                term\n              });\n            }\n            return list;\n          });\n        }\n      });\n    }\n    #isAutocompleteDisplayed() {\n      return document.querySelector(\".autocomplete\");\n    }\n    #deleteEmptyMessage() {\n      new _chatMessageInteractor.default((0, _owner.getOwner)(this), this.draft, this.context).delete();\n      this.resetDraft();\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{! template-lint-disable no-pointer-down-event-binding }}\n      {{! template-lint-disable no-invalid-interactive }}\n      \n      <div class=\"chat-composer__wrapper\">\n        {{#if this.shouldRenderMessageDetails}}\n          <ChatComposerMessageDetails\n            @message={{if this.draft.editing this.draft this.draft.inReplyTo}}\n            @cancelAction={{this.resetDraft}}\n          />\n        {{/if}}\n      \n        <div\n          role=\"region\"\n          aria-label={{i18n \"chat.aria_roles.composer\"}}\n          class={{concatClass\n            \"chat-composer\"\n            (if this.isFocused \"is-focused\")\n            (if this.pane.sending \"is-sending\")\n            (if this.sendEnabled \"is-send-enabled\" \"is-send-disabled\")\n            (if this.disabled \"is-disabled\" \"is-enabled\")\n            (if this.draft.draftSaved \"is-draft-saved\" \"is-draft-unsaved\")\n          }}\n          {{didUpdate this.didUpdateMessage this.draft}}\n          {{didUpdate this.didUpdateInReplyTo this.draft.inReplyTo}}\n          {{didInsert this.setup}}\n          {{willDestroy this.teardown}}\n          {{willDestroy this.cancelPersistDraft}}\n        >\n          <div class=\"chat-composer__outer-container\">\n            {{#if this.site.mobileView}}\n              <ChatComposerDropdown\n                @buttons={{this.dropdownButtons}}\n                @isDisabled={{this.disabled}}\n              />\n            {{/if}}\n      \n            <div class=\"chat-composer__inner-container\">\n              {{#if this.site.desktopView}}\n                <ChatComposerDropdown\n                  @buttons={{this.dropdownButtons}}\n                  @isDisabled={{this.disabled}}\n                />\n              {{/if}}\n      \n              <div\n                class=\"chat-composer__input-container\"\n                {{on \"click\" this.composer.focus}}\n              >\n                <DTextarea\n                  {{preventScrollOnFocus}}\n                  {{forceScrollingElementPosition}}\n                  id={{this.composerId}}\n                  value={{readonly this.draft.message}}\n                  type=\"text\"\n                  class=\"chat-composer__input\"\n                  disabled={{this.disabled}}\n                  autocorrect=\"on\"\n                  autocapitalize=\"sentences\"\n                  placeholder={{this.placeholder}}\n                  rows={{1}}\n                  {{didInsert this.setupTextareaInteractor}}\n                  {{on \"input\" this.onInput}}\n                  {{on \"keydown\" this.onKeyDown}}\n                  {{on \"focusin\" this.onTextareaFocusIn}}\n                  {{on \"focusout\" this.onTextareaFocusOut}}\n                  {{didInsert this.setupAutocomplete}}\n                  data-chat-composer-context={{this.context}}\n                />\n              </div>\n      \n              {{#each this.inlineButtons as |button|}}\n                <DButton\n                  @icon={{button.icon}}\n                  class=\"-{{button.id}}\"\n                  disabled={{or this.disabled button.disabled}}\n                  tabindex={{if button.disabled -1 0}}\n                  {{on \"click\" (fn this.handleInlineButtonAction button.action)}}\n                  {{on \"focus\" (fn this.computeIsFocused true)}}\n                  {{on \"blur\" (fn this.computeIsFocused false)}}\n                />\n              {{/each}}\n      \n              <PluginOutlet\n                @name=\"chat-composer-inline-buttons\"\n                @outletArgs={{lazyHash composer=this channel=@channel}}\n              />\n      \n              {{#if this.site.desktopView}}\n                <DButton\n                  @icon=\"paper-plane\"\n                  class=\"-send\"\n                  title={{i18n \"chat.composer.send\"}}\n                  disabled={{or this.disabled (not this.sendEnabled)}}\n                  tabindex={{if this.sendEnabled 0 -1}}\n                  {{on \"click\" this.onSend}}\n                  {{on \"mousedown\" this.trapMouseDown}}\n                  {{on \"focus\" (fn this.computeIsFocused true)}}\n                  {{on \"blur\" (fn this.computeIsFocused false)}}\n                />\n              {{/if}}\n            </div>\n            {{#if this.site.mobileView}}\n              <DButton\n                @icon=\"paper-plane\"\n                class=\"-send\"\n                title={{i18n \"chat.composer.send\"}}\n                disabled={{or this.disabled (not this.sendEnabled)}}\n                tabindex={{if this.sendEnabled 0 -1}}\n                {{on \"click\" this.onSend}}\n                {{on \"mousedown\" this.trapMouseDown}}\n                {{on \"focus\" (fn this.computeIsFocused true)}}\n                {{on \"blur\" (fn this.computeIsFocused false)}}\n              />\n            {{/if}}\n          </div>\n        </div>\n      \n        {{#if this.canAttachUploads}}\n          <ChatComposerUploads\n            @fileUploadElementId={{this.fileUploadElementId}}\n            @onUploadChanged={{this.onUploadChanged}}\n            @existingUploads={{this.draft.uploads}}\n            @uploadDropZone={{@uploadDropZone}}\n            @composerInputEl={{this.composer.textarea.element}}\n          />\n        {{/if}}\n      \n        <div class=\"chat-replying-indicator-container\">\n          <ChatReplyingIndicator\n            @presenceChannelName={{this.presenceChannelName}}\n          />\n        </div>\n      </div>\n      */\n      {\n        \"id\": \"uCwi9ACF\",\n        \"block\": \"[[[1,\\\"\\\\n\\\"],[10,0],[14,0,\\\"chat-composer__wrapper\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"shouldRenderMessageDetails\\\"]],[[[1,\\\"    \\\"],[8,[32,0],null,[[\\\"@message\\\",\\\"@cancelAction\\\"],[[52,[30,0,[\\\"draft\\\",\\\"editing\\\"]],[30,0,[\\\"draft\\\"]],[30,0,[\\\"draft\\\",\\\"inReplyTo\\\"]]],[30,0,[\\\"resetDraft\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[11,0],[24,\\\"role\\\",\\\"region\\\"],[16,\\\"aria-label\\\",[28,[32,1],[\\\"chat.aria_roles.composer\\\"],null]],[16,0,[28,[32,2],[\\\"chat-composer\\\",[52,[30,0,[\\\"isFocused\\\"]],\\\"is-focused\\\"],[52,[30,0,[\\\"pane\\\",\\\"sending\\\"]],\\\"is-sending\\\"],[52,[30,0,[\\\"sendEnabled\\\"]],\\\"is-send-enabled\\\",\\\"is-send-disabled\\\"],[52,[30,0,[\\\"disabled\\\"]],\\\"is-disabled\\\",\\\"is-enabled\\\"],[52,[30,0,[\\\"draft\\\",\\\"draftSaved\\\"]],\\\"is-draft-saved\\\",\\\"is-draft-unsaved\\\"]],null]],[4,[32,3],[[30,0,[\\\"didUpdateMessage\\\"]],[30,0,[\\\"draft\\\"]]],null],[4,[32,3],[[30,0,[\\\"didUpdateInReplyTo\\\"]],[30,0,[\\\"draft\\\",\\\"inReplyTo\\\"]]],null],[4,[32,4],[[30,0,[\\\"setup\\\"]]],null],[4,[32,5],[[30,0,[\\\"teardown\\\"]]],null],[4,[32,5],[[30,0,[\\\"cancelPersistDraft\\\"]]],null],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-composer__outer-container\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"site\\\",\\\"mobileView\\\"]],[[[1,\\\"        \\\"],[8,[32,6],null,[[\\\"@buttons\\\",\\\"@isDisabled\\\"],[[30,0,[\\\"dropdownButtons\\\"]],[30,0,[\\\"disabled\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"chat-composer__inner-container\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"site\\\",\\\"desktopView\\\"]],[[[1,\\\"          \\\"],[8,[32,6],null,[[\\\"@buttons\\\",\\\"@isDisabled\\\"],[[30,0,[\\\"dropdownButtons\\\"]],[30,0,[\\\"disabled\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n        \\\"],[11,0],[24,0,\\\"chat-composer__input-container\\\"],[4,[32,7],[\\\"click\\\",[30,0,[\\\"composer\\\",\\\"focus\\\"]]],null],[12],[1,\\\"\\\\n          \\\"],[8,[32,8],[[16,1,[30,0,[\\\"composerId\\\"]]],[16,2,[28,[31,1],[[30,0,[\\\"draft\\\",\\\"message\\\"]]],null]],[24,0,\\\"chat-composer__input\\\"],[16,\\\"disabled\\\",[30,0,[\\\"disabled\\\"]]],[24,\\\"autocorrect\\\",\\\"on\\\"],[24,\\\"autocapitalize\\\",\\\"sentences\\\"],[16,\\\"placeholder\\\",[30,0,[\\\"placeholder\\\"]]],[16,\\\"rows\\\",1],[16,\\\"data-chat-composer-context\\\",[30,0,[\\\"context\\\"]]],[24,4,\\\"text\\\"],[4,[32,9],null,null],[4,[32,10],null,null],[4,[32,4],[[30,0,[\\\"setupTextareaInteractor\\\"]]],null],[4,[32,7],[\\\"input\\\",[30,0,[\\\"onInput\\\"]]],null],[4,[32,7],[\\\"keydown\\\",[30,0,[\\\"onKeyDown\\\"]]],null],[4,[32,7],[\\\"focusin\\\",[30,0,[\\\"onTextareaFocusIn\\\"]]],null],[4,[32,7],[\\\"focusout\\\",[30,0,[\\\"onTextareaFocusOut\\\"]]],null],[4,[32,4],[[30,0,[\\\"setupAutocomplete\\\"]]],null]],null,null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[42,[28,[31,3],[[28,[31,3],[[30,0,[\\\"inlineButtons\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[8,[32,11],[[16,0,[29,[\\\"-\\\",[30,1,[\\\"id\\\"]]]]],[16,\\\"disabled\\\",[28,[32,12],[[30,0,[\\\"disabled\\\"]],[30,1,[\\\"disabled\\\"]]],null]],[16,\\\"tabindex\\\",[52,[30,1,[\\\"disabled\\\"]],-1,0]],[4,[32,7],[\\\"click\\\",[28,[32,13],[[30,0,[\\\"handleInlineButtonAction\\\"]],[30,1,[\\\"action\\\"]]],null]],null],[4,[32,7],[\\\"focus\\\",[28,[32,13],[[30,0,[\\\"computeIsFocused\\\"]],true],null]],null],[4,[32,7],[\\\"blur\\\",[28,[32,13],[[30,0,[\\\"computeIsFocused\\\"]],false],null]],null]],[[\\\"@icon\\\"],[[30,1,[\\\"icon\\\"]]]],null],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"\\\\n        \\\"],[8,[32,14],null,[[\\\"@name\\\",\\\"@outletArgs\\\"],[\\\"chat-composer-inline-buttons\\\",[28,[32,15],null,[[\\\"composer\\\",\\\"channel\\\"],[[30,0],[30,2]]]]]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"site\\\",\\\"desktopView\\\"]],[[[1,\\\"          \\\"],[8,[32,11],[[24,0,\\\"-send\\\"],[16,\\\"title\\\",[28,[32,1],[\\\"chat.composer.send\\\"],null]],[16,\\\"disabled\\\",[28,[32,12],[[30,0,[\\\"disabled\\\"]],[28,[32,16],[[30,0,[\\\"sendEnabled\\\"]]],null]],null]],[16,\\\"tabindex\\\",[52,[30,0,[\\\"sendEnabled\\\"]],0,-1]],[4,[32,7],[\\\"click\\\",[30,0,[\\\"onSend\\\"]]],null],[4,[32,7],[\\\"mousedown\\\",[30,0,[\\\"trapMouseDown\\\"]]],null],[4,[32,7],[\\\"focus\\\",[28,[32,13],[[30,0,[\\\"computeIsFocused\\\"]],true],null]],null],[4,[32,7],[\\\"blur\\\",[28,[32,13],[[30,0,[\\\"computeIsFocused\\\"]],false],null]],null]],[[\\\"@icon\\\"],[\\\"paper-plane\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"site\\\",\\\"mobileView\\\"]],[[[1,\\\"        \\\"],[8,[32,11],[[24,0,\\\"-send\\\"],[16,\\\"title\\\",[28,[32,1],[\\\"chat.composer.send\\\"],null]],[16,\\\"disabled\\\",[28,[32,12],[[30,0,[\\\"disabled\\\"]],[28,[32,16],[[30,0,[\\\"sendEnabled\\\"]]],null]],null]],[16,\\\"tabindex\\\",[52,[30,0,[\\\"sendEnabled\\\"]],0,-1]],[4,[32,7],[\\\"click\\\",[30,0,[\\\"onSend\\\"]]],null],[4,[32,7],[\\\"mousedown\\\",[30,0,[\\\"trapMouseDown\\\"]]],null],[4,[32,7],[\\\"focus\\\",[28,[32,13],[[30,0,[\\\"computeIsFocused\\\"]],true],null]],null],[4,[32,7],[\\\"blur\\\",[28,[32,13],[[30,0,[\\\"computeIsFocused\\\"]],false],null]],null]],[[\\\"@icon\\\"],[\\\"paper-plane\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"canAttachUploads\\\"]],[[[1,\\\"    \\\"],[8,[32,17],null,[[\\\"@fileUploadElementId\\\",\\\"@onUploadChanged\\\",\\\"@existingUploads\\\",\\\"@uploadDropZone\\\",\\\"@composerInputEl\\\"],[[30,0,[\\\"fileUploadElementId\\\"]],[30,0,[\\\"onUploadChanged\\\"]],[30,0,[\\\"draft\\\",\\\"uploads\\\"]],[30,3],[30,0,[\\\"composer\\\",\\\"textarea\\\",\\\"element\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-replying-indicator-container\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[32,18],null,[[\\\"@presenceChannelName\\\"],[[30,0,[\\\"presenceChannelName\\\"]]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"button\\\",\\\"@channel\\\",\\\"@uploadDropZone\\\"],[\\\"if\\\",\\\"readonly\\\",\\\"each\\\",\\\"-track-array\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-composer.js\",\n        \"scope\": () => [_chatComposerMessageDetails.default, _discourseI18n.i18n, _concatClass.default, _didUpdate.default, _didInsert.default, _willDestroy.default, _chatComposerDropdown.default, _modifier.on, _dTextarea.default, _preventScrollOnFocus.default, _forceScrollingElementPosition.default, _button.default, _truthHelpers.or, _helper.fn, _pluginOutlet.default, _lazyHash.default, _truthHelpers.not, _chatComposerUploads.default, _chatReplyingIndicator.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatComposer;\n});","define(\"discourse/plugins/chat/discourse/components/chat-drawer\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/runloop\", \"@ember/service\", \"@ember/template\", \"@ember-decorators/component\", \"@ember-decorators/object\", \"discourse/components/plugin-outlet\", \"discourse/helpers/body-class\", \"discourse/helpers/concat-class\", \"discourse/helpers/html-class\", \"discourse/helpers/lazy-hash\", \"discourse/lib/decorators\", \"discourse/lib/get-url\", \"discourse/lib/url\", \"discourse/lib/utilities\", \"discourse/plugins/chat/discourse/modifiers/chat/resizable-node\", \"@ember/template-factory\"], function (_exports, _component, _object, _runloop, _service, _template, _component2, _object2, _pluginOutlet, _bodyClass, _concatClass, _htmlClass, _lazyHash, _decorators, _getUrl, _url, _utilities, _resizableNode, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /* eslint-disable ember/no-classic-components, ember/no-observers */\n  const ChatDrawer = dt7948.c(class ChatDrawer extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatDrawerSize\", [_service.service]);\n    }\n    #chatDrawerSize = (dt7948.i(this, \"chatDrawerSize\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatDrawerRouter\", [_service.service]);\n    }\n    #chatDrawerRouter = (dt7948.i(this, \"chatDrawerRouter\"), void 0);\n    loading = false;\n    sizeTimer = null;\n    rafTimer = null;\n    hasUnreadMessages = false;\n    drawerStyle = null;\n    didInsertElement() {\n      super.didInsertElement(...arguments);\n      if (!this.chat.userCanChat) {\n        return;\n      }\n      this._checkSize();\n      this.appEvents.on(\"chat:open-url\", this, \"openURL\");\n      this.appEvents.on(\"chat:toggle-close\", this, \"close\");\n      this.appEvents.on(\"composer:closed\", this, \"_checkSize\");\n      this.appEvents.on(\"composer:opened\", this, \"_checkSize\");\n      this.appEvents.on(\"composer:resized\", this, \"_checkSize\");\n      this.appEvents.on(\"composer:div-resizing\", this, \"_dynamicCheckSize\");\n      window.addEventListener(\"resize\", this._checkSize);\n      this.appEvents.on(\"composer:resize-started\", this, \"_startDynamicCheckSize\");\n      this.appEvents.on(\"composer:resize-ended\", this, \"_clearDynamicCheckSize\");\n      this.computeDrawerStyle();\n    }\n    willDestroyElement() {\n      super.willDestroyElement(...arguments);\n      if (!this.chat.userCanChat) {\n        return;\n      }\n      window.removeEventListener(\"resize\", this._checkSize);\n      if (this.appEvents) {\n        this.appEvents.off(\"chat:open-url\", this, \"openURL\");\n        this.appEvents.off(\"chat:toggle-close\", this, \"close\");\n        this.appEvents.off(\"composer:closed\", this, \"_checkSize\");\n        this.appEvents.off(\"composer:opened\", this, \"_checkSize\");\n        this.appEvents.off(\"composer:resized\", this, \"_checkSize\");\n        this.appEvents.off(\"composer:div-resizing\", this, \"_dynamicCheckSize\");\n        this.appEvents.off(\"composer:resize-started\", this, \"_startDynamicCheckSize\");\n        this.appEvents.off(\"composer:resize-ended\", this, \"_clearDynamicCheckSize\");\n      }\n      if (this.sizeTimer) {\n        (0, _runloop.cancel)(this.sizeTimer);\n        this.sizeTimer = null;\n      }\n      if (this.rafTimer) {\n        window.cancelAnimationFrame(this.rafTimer);\n      }\n    }\n    _fireHiddenAppEvents() {\n      this.appEvents.trigger(\"chat:rerender-header\");\n    }\n    static {\n      dt7948.n(this.prototype, \"_fireHiddenAppEvents\", [(0, _object2.observes)(\"chatStateManager.isDrawerActive\")]);\n    }\n    computeDrawerStyle() {\n      const {\n        width,\n        height\n      } = this.chatDrawerSize.size;\n      let style = `width: ${(0, _utilities.escapeExpression)((width || \"0\").toString())}px;`;\n      style += `height: ${(0, _utilities.escapeExpression)((height || \"0\").toString())}px;`;\n      this.set(\"drawerStyle\", (0, _template.trustHTML)(style));\n    }\n    get drawerActions() {\n      return {\n        openInFullPage: this.openInFullPage,\n        close: this.close,\n        toggleExpand: this.toggleExpand\n      };\n    }\n    _dynamicCheckSize() {\n      if (!this.chatStateManager.isDrawerActive) {\n        return;\n      }\n      if (this.rafTimer) {\n        return;\n      }\n      this.rafTimer = window.requestAnimationFrame(() => {\n        this.rafTimer = null;\n        this._performCheckSize();\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"_dynamicCheckSize\", [_decorators.bind]);\n    }\n    _startDynamicCheckSize() {\n      if (!this.chatStateManager.isDrawerActive) {\n        return;\n      }\n      document.querySelector(\".chat-drawer-outlet-container\").classList.add(\"clear-transitions\");\n    }\n    _clearDynamicCheckSize() {\n      if (!this.chatStateManager.isDrawerActive) {\n        return;\n      }\n      document.querySelector(\".chat-drawer-outlet-container\").classList.remove(\"clear-transitions\");\n      this._checkSize();\n    }\n    _checkSize() {\n      this.sizeTimer = (0, _runloop.throttle)(this, this._performCheckSize, 150);\n    }\n    static {\n      dt7948.n(this.prototype, \"_checkSize\", [_decorators.bind]);\n    }\n    _performCheckSize() {\n      if (this.isDestroying || this.isDestroyed) {\n        return;\n      }\n      const drawerContainer = document.querySelector(\".chat-drawer-outlet-container\");\n      if (!drawerContainer) {\n        return;\n      }\n      const composer = document.getElementById(\"reply-control\");\n      const composerIsClosed = composer.classList.contains(\"closed\");\n      const minRightMargin = 15;\n      drawerContainer.style.setProperty(\"--composer-right\", (composerIsClosed ? minRightMargin : Math.max(minRightMargin, composer.offsetLeft)) + \"px\");\n    }\n    openURL(url = null) {\n      this.chat.activeChannel = null;\n      this.chatDrawerRouter.stateFor(this._routeFromURL(url));\n      this.chatStateManager.didOpenDrawer(url);\n    }\n    static {\n      dt7948.n(this.prototype, \"openURL\", [_object.action]);\n    }\n    _routeFromURL(url) {\n      let route = this.router.recognize((0, _getUrl.default)(url || \"/\"));\n      // ember might recognize the index subroute\n      if (route.localName === \"index\") {\n        route = route.parent;\n      }\n      return route;\n    }\n    async openInFullPage() {\n      this.chatStateManager.storeAppURL();\n      this.chatStateManager.prefersFullPage();\n      this.chat.activeChannel = null;\n      await new Promise(resolve => (0, _runloop.next)(resolve));\n      return _url.default.routeTo(this.chatStateManager.lastKnownChatURL);\n    }\n    static {\n      dt7948.n(this.prototype, \"openInFullPage\", [_object.action]);\n    }\n    toggleExpand() {\n      this.computeDrawerStyle();\n      this.chatStateManager.didToggleDrawer();\n      this.appEvents.trigger(\"chat:toggle-expand\", this.chatStateManager.isDrawerExpanded);\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleExpand\", [_object.action]);\n    }\n    close() {\n      this.computeDrawerStyle();\n      this.chatStateManager.didCloseDrawer();\n      this.chat.activeChannel = null;\n    }\n    static {\n      dt7948.n(this.prototype, \"close\", [_object.action]);\n    }\n    didResize(element, {\n      width,\n      height\n    }) {\n      this.chatDrawerSize.size = {\n        width,\n        height\n      };\n    }\n    static {\n      dt7948.n(this.prototype, \"didResize\", [_object.action]);\n    }\n    static {\n      (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.chatStateManager.isDrawerActive}}\n        {{htmlClass \"has-drawer-chat\" \"has-chat\"}}\n        {{bodyClass \"has-drawer-chat\" \"has-chat\" \"chat-drawer-active\"}}\n      {{/if}}\n      \n      {{#if this.chatStateManager.isDrawerExpanded}}\n        {{bodyClass \"chat-drawer-expanded\"}}\n      {{/if}}\n      \n      {{#if this.chatStateManager.isDrawerActive}}\n        <div\n          data-chat-channel-id={{this.chatDrawerRouter.model.channel.id}}\n          data-chat-thread-id={{this.chatDrawerRouter.model.channel.activeThread.id}}\n          class={{concatClass\n            \"chat-drawer\"\n            (if\n              this.chatStateManager.isDrawerExpanded \"is-expanded\" \"is-collapsed\"\n            )\n          }}\n          {{chatResizableNode \".chat-drawer-resizer\" this.didResize}}\n          style={{this.drawerStyle}}\n        >\n          <div class=\"chat-drawer-container\">\n            <div class=\"chat-drawer-resizer\"></div>\n      \n            <PluginOutlet\n              @name=\"chat-drawer-before-content\"\n              @outletArgs={{lazyHash\n                currentRouteName=this.chatDrawerRouter.currentRouteName\n              }}\n            />\n      \n            <this.chatDrawerRouter.component\n              @params={{this.chatDrawerRouter.params}}\n              @model={{this.chatDrawerRouter.model}}\n              @openURL={{this.openURL}}\n              @openInFullPage={{this.openInFullPage}}\n              @toggleExpand={{this.toggleExpand}}\n              @close={{this.close}}\n              @drawerActions={{this.drawerActions}}\n            />\n          </div>\n        </div>\n      {{/if}}\n      */\n      {\n        \"id\": \"JwkPTfV2\",\n        \"block\": \"[[[41,[30,0,[\\\"chatStateManager\\\",\\\"isDrawerActive\\\"]],[[[1,\\\"  \\\"],[1,[28,[32,0],[\\\"has-drawer-chat\\\",\\\"has-chat\\\"],null]],[1,\\\"\\\\n  \\\"],[1,[28,[32,1],[\\\"has-drawer-chat\\\",\\\"has-chat\\\",\\\"chat-drawer-active\\\"],null]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"chatStateManager\\\",\\\"isDrawerExpanded\\\"]],[[[1,\\\"  \\\"],[1,[28,[32,1],[\\\"chat-drawer-expanded\\\"],null]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"chatStateManager\\\",\\\"isDrawerActive\\\"]],[[[1,\\\"  \\\"],[11,0],[16,\\\"data-chat-channel-id\\\",[30,0,[\\\"chatDrawerRouter\\\",\\\"model\\\",\\\"channel\\\",\\\"id\\\"]]],[16,\\\"data-chat-thread-id\\\",[30,0,[\\\"chatDrawerRouter\\\",\\\"model\\\",\\\"channel\\\",\\\"activeThread\\\",\\\"id\\\"]]],[16,0,[28,[32,2],[\\\"chat-drawer\\\",[52,[30,0,[\\\"chatStateManager\\\",\\\"isDrawerExpanded\\\"]],\\\"is-expanded\\\",\\\"is-collapsed\\\"]],null]],[16,5,[30,0,[\\\"drawerStyle\\\"]]],[4,[32,3],[\\\".chat-drawer-resizer\\\",[30,0,[\\\"didResize\\\"]]],null],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-drawer-container\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"chat-drawer-resizer\\\"],[12],[13],[1,\\\"\\\\n\\\\n      \\\"],[8,[32,4],null,[[\\\"@name\\\",\\\"@outletArgs\\\"],[\\\"chat-drawer-before-content\\\",[28,[32,5],null,[[\\\"currentRouteName\\\"],[[30,0,[\\\"chatDrawerRouter\\\",\\\"currentRouteName\\\"]]]]]]],null],[1,\\\"\\\\n\\\\n      \\\"],[8,[30,0,[\\\"chatDrawerRouter\\\",\\\"component\\\"]],null,[[\\\"@params\\\",\\\"@model\\\",\\\"@openURL\\\",\\\"@openInFullPage\\\",\\\"@toggleExpand\\\",\\\"@close\\\",\\\"@drawerActions\\\"],[[30,0,[\\\"chatDrawerRouter\\\",\\\"params\\\"]],[30,0,[\\\"chatDrawerRouter\\\",\\\"model\\\"]],[30,0,[\\\"openURL\\\"]],[30,0,[\\\"openInFullPage\\\"]],[30,0,[\\\"toggleExpand\\\"]],[30,0,[\\\"close\\\"]],[30,0,[\\\"drawerActions\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-drawer.js\",\n        \"scope\": () => [_htmlClass.default, _bodyClass.default, _concatClass.default, _resizableNode.default, _pluginOutlet.default, _lazyHash.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }, [(0, _component2.tagName)(\"\")]);\n  var _default = _exports.default = ChatDrawer;\n});","define(\"discourse/plugins/chat/discourse/components/chat-emoji-avatar\", [\"exports\", \"discourse/helpers/replace-emoji\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _replaceEmoji, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatEmojiAvatar = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"chat-emoji-avatar\">\n    <div class=\"chat-emoji-avatar-container\">\n      {{replaceEmoji @emoji}}\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"M6+6OIrf\",\n    \"block\": \"[[[10,0],[14,0,\\\"chat-emoji-avatar\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-emoji-avatar-container\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[28,[32,0],[[30,1]],null]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@emoji\\\"],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-emoji-avatar.js\",\n    \"scope\": () => [_replaceEmoji.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"chat-emoji-avatar:ChatEmojiAvatar\"));\n  var _default = _exports.default = ChatEmojiAvatar;\n});","define(\"discourse/plugins/chat/discourse/components/chat-footer\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/helpers/concat-class\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/footer/unread-indicator\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _dButton, _concatClass, _truthHelpers, _discourseI18n, _unreadIndicator, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatFooter extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatHistory\", [_service.service]);\n    }\n    #chatHistory = (dt7948.i(this, \"chatHistory\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    get includeStarred() {\n      return this.chatChannelsManager.hasStarredChannels;\n    }\n    get includeThreads() {\n      if (!this.siteSettings.chat_threads_enabled) {\n        return false;\n      }\n      return this.chatChannelsManager.shouldShowMyThreads;\n    }\n    get directMessagesEnabled() {\n      return this.chat.userCanAccessDirectMessages;\n    }\n    get currentRouteName() {\n      const routeName = this.chatHistory.currentRoute?.name;\n      return routeName === \"chat\" ? \"chat.channels\" : routeName;\n    }\n    get enabledRouteCount() {\n      return [this.includeStarred, this.includeThreads, this.directMessagesEnabled, this.siteSettings.enable_public_channels].filter(Boolean).length;\n    }\n    get shouldRenderFooter() {\n      return (this.site.mobileView || this.chatStateManager.isDrawerExpanded) && this.chatStateManager.hasPreloadedChannels && this.enabledRouteCount > 1;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.shouldRenderFooter}}\n        <nav class=\"c-footer\">\n          {{#if this.includeStarred}}\n            <DButton\n              @route=\"chat.starred-channels\"\n              @icon=\"star\"\n              @label=\"chat.starred\"\n              aria-label={{i18n \"chat.starred\"}}\n              id=\"c-footer-starred\"\n              class={{concatClass\n                \"btn-transparent\"\n                \"c-footer__item\"\n                (if (eq this.currentRouteName \"chat.starred-channels\") \"--active\")\n              }}\n            >\n              <UnreadStarredIndicator />\n            </DButton>\n          {{/if}}\n      \n          <DButton\n            @route=\"chat.channels\"\n            @icon=\"comments\"\n            @label=\"chat.channel_list.title\"\n            aria-label={{i18n \"chat.channel_list.aria_label\"}}\n            id=\"c-footer-channels\"\n            class={{concatClass\n              \"btn-transparent\"\n              \"c-footer__item\"\n              (if (eq this.currentRouteName \"chat.channels\") \"--active\")\n            }}\n          >\n            <UnreadChannelsIndicator />\n          </DButton>\n      \n          {{#if this.directMessagesEnabled}}\n            <DButton\n              @route=\"chat.direct-messages\"\n              @icon=\"users\"\n              @label=\"chat.direct_messages.title\"\n              aria-label={{i18n \"chat.direct_messages.aria_label\"}}\n              id=\"c-footer-direct-messages\"\n              class={{concatClass\n                \"btn-transparent\"\n                \"c-footer__item\"\n                (if (eq this.currentRouteName \"chat.direct-messages\") \"--active\")\n              }}\n            >\n              <UnreadDirectMessagesIndicator />\n            </DButton>\n          {{/if}}\n      \n          {{#if this.includeThreads}}\n            <DButton\n              @route=\"chat.threads\"\n              @icon=\"discourse-threads\"\n              @label=\"chat.my_threads.title\"\n              aria-label={{i18n \"chat.my_threads.aria_label\"}}\n              id=\"c-footer-threads\"\n              class={{concatClass\n                \"btn-transparent\"\n                \"c-footer__item\"\n                (if (eq this.currentRouteName \"chat.threads\") \"--active\")\n              }}\n            >\n              <UnreadThreadsIndicator />\n            </DButton>\n          {{/if}}\n      \n          {{#if this.siteSettings.chat_search_enabled}}\n            <DButton\n              @route=\"chat.search\"\n              @icon=\"magnifying-glass\"\n              @label=\"chat.search.short_title\"\n              aria-label={{i18n \"chat.search.aria_label\"}}\n              id=\"c-footer-search\"\n              class={{concatClass\n                \"btn-transparent\"\n                \"c-footer__item\"\n                (if (eq this.currentRouteName \"chat.search\") \"--active\")\n              }}\n            />\n          {{/if}}\n        </nav>\n      {{/if}}\n      */\n      {\n        \"id\": \"BNg7ROgg\",\n        \"block\": \"[[[41,[30,0,[\\\"shouldRenderFooter\\\"]],[[[1,\\\"  \\\"],[10,\\\"nav\\\"],[14,0,\\\"c-footer\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"includeStarred\\\"]],[[[1,\\\"      \\\"],[8,[32,0],[[16,\\\"aria-label\\\",[28,[32,1],[\\\"chat.starred\\\"],null]],[24,1,\\\"c-footer-starred\\\"],[16,0,[28,[32,2],[\\\"btn-transparent\\\",\\\"c-footer__item\\\",[52,[28,[32,3],[[30,0,[\\\"currentRouteName\\\"]],\\\"chat.starred-channels\\\"],null],\\\"--active\\\"]],null]]],[[\\\"@route\\\",\\\"@icon\\\",\\\"@label\\\"],[\\\"chat.starred-channels\\\",\\\"star\\\",\\\"chat.starred\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[32,4],null,null,null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n    \\\"],[8,[32,0],[[16,\\\"aria-label\\\",[28,[32,1],[\\\"chat.channel_list.aria_label\\\"],null]],[24,1,\\\"c-footer-channels\\\"],[16,0,[28,[32,2],[\\\"btn-transparent\\\",\\\"c-footer__item\\\",[52,[28,[32,3],[[30,0,[\\\"currentRouteName\\\"]],\\\"chat.channels\\\"],null],\\\"--active\\\"]],null]]],[[\\\"@route\\\",\\\"@icon\\\",\\\"@label\\\"],[\\\"chat.channels\\\",\\\"comments\\\",\\\"chat.channel_list.title\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[32,5],null,null,null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"directMessagesEnabled\\\"]],[[[1,\\\"      \\\"],[8,[32,0],[[16,\\\"aria-label\\\",[28,[32,1],[\\\"chat.direct_messages.aria_label\\\"],null]],[24,1,\\\"c-footer-direct-messages\\\"],[16,0,[28,[32,2],[\\\"btn-transparent\\\",\\\"c-footer__item\\\",[52,[28,[32,3],[[30,0,[\\\"currentRouteName\\\"]],\\\"chat.direct-messages\\\"],null],\\\"--active\\\"]],null]]],[[\\\"@route\\\",\\\"@icon\\\",\\\"@label\\\"],[\\\"chat.direct-messages\\\",\\\"users\\\",\\\"chat.direct_messages.title\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[32,6],null,null,null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"includeThreads\\\"]],[[[1,\\\"      \\\"],[8,[32,0],[[16,\\\"aria-label\\\",[28,[32,1],[\\\"chat.my_threads.aria_label\\\"],null]],[24,1,\\\"c-footer-threads\\\"],[16,0,[28,[32,2],[\\\"btn-transparent\\\",\\\"c-footer__item\\\",[52,[28,[32,3],[[30,0,[\\\"currentRouteName\\\"]],\\\"chat.threads\\\"],null],\\\"--active\\\"]],null]]],[[\\\"@route\\\",\\\"@icon\\\",\\\"@label\\\"],[\\\"chat.threads\\\",\\\"discourse-threads\\\",\\\"chat.my_threads.title\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[32,7],null,null,null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"siteSettings\\\",\\\"chat_search_enabled\\\"]],[[[1,\\\"      \\\"],[8,[32,0],[[16,\\\"aria-label\\\",[28,[32,1],[\\\"chat.search.aria_label\\\"],null]],[24,1,\\\"c-footer-search\\\"],[16,0,[28,[32,2],[\\\"btn-transparent\\\",\\\"c-footer__item\\\",[52,[28,[32,3],[[30,0,[\\\"currentRouteName\\\"]],\\\"chat.search\\\"],null],\\\"--active\\\"]],null]]],[[\\\"@route\\\",\\\"@icon\\\",\\\"@label\\\"],[\\\"chat.search\\\",\\\"magnifying-glass\\\",\\\"chat.search.short_title\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-footer.js\",\n        \"scope\": () => [_dButton.default, _discourseI18n.i18n, _concatClass.default, _truthHelpers.eq, _unreadIndicator.UnreadStarredIndicator, _unreadIndicator.UnreadChannelsIndicator, _unreadIndicator.UnreadDirectMessagesIndicator, _unreadIndicator.UnreadThreadsIndicator],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatFooter;\n});","define(\"discourse/plugins/chat/discourse/components/chat-header\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/routing\", \"@ember/service\", \"discourse/helpers/d-icon\", \"discourse/lib/get-url\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _routing, _service, _dIcon, _getUrl, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatHeader extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"previousURL\", [_tracking.tracked]);\n    }\n    #previousURL = (dt7948.i(this, \"previousURL\"), void 0);\n    title = (0, _discourseI18n.i18n)(\"chat.back_to_forum\");\n    heading = (0, _discourseI18n.i18n)(\"chat.heading\");\n    constructor() {\n      super(...arguments);\n      this.router.on(\"routeDidChange\", this, this.#updatePreviousURL);\n    }\n    willDestroy() {\n      super.willDestroy(...arguments);\n      this.router.off(\"routeDidChange\", this, this.#updatePreviousURL);\n    }\n    get shouldRender() {\n      return this.siteSettings.chat_enabled && this.site.mobileView && this.isChatOpen;\n    }\n    get isChatOpen() {\n      return this.router.currentURL.startsWith(\"/chat\");\n    }\n    get forumLink() {\n      return (0, _getUrl.default)(this.previousURL ?? this.router.rootURL);\n    }\n    #updatePreviousURL() {\n      if (!this.isChatOpen) {\n        this.previousURL = this.router.currentURL;\n      }\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.shouldRender}}\n        <div class=\"c-header\">\n          <a\n            href={{this.forumLink}}\n            class=\"btn-flat back-to-forum\"\n            title={{this.title}}\n          >\n            {{icon \"arrow-left\"}}\n            {{this.title}}\n          </a>\n      \n          <LinkTo @route=\"chat.index\" class=\"c-heading\">{{this.heading}}</LinkTo>\n        </div>\n      {{else}}\n        {{yield}}\n      {{/if}}\n      */\n      {\n        \"id\": \"piWGIR4n\",\n        \"block\": \"[[[41,[30,0,[\\\"shouldRender\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"c-header\\\"],[12],[1,\\\"\\\\n    \\\"],[10,3],[15,6,[30,0,[\\\"forumLink\\\"]]],[14,0,\\\"btn-flat back-to-forum\\\"],[15,\\\"title\\\",[30,0,[\\\"title\\\"]]],[12],[1,\\\"\\\\n      \\\"],[1,[28,[32,0],[\\\"arrow-left\\\"],null]],[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"title\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[8,[32,1],[[24,0,\\\"c-heading\\\"]],[[\\\"@route\\\"],[\\\"chat.index\\\"]],[[\\\"default\\\"],[[[[1,[30,0,[\\\"heading\\\"]]]],[]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"  \\\"],[18,1,null],[1,\\\"\\\\n\\\"]],[]]]],[\\\"&default\\\"],[\\\"if\\\",\\\"yield\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-header.js\",\n        \"scope\": () => [_dIcon.default, _routing.LinkTo],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatHeader;\n});","define(\"discourse/plugins/chat/discourse/components/chat-mention-warnings\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"@ember/template\", \"discourse/helpers/d-icon\", \"discourse/lib/get-url\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _template, _dIcon, _getUrl, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatMentionWarnings extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatComposerWarningsTracker\", [_service.service]);\n    }\n    #chatComposerWarningsTracker = (dt7948.i(this, \"chatComposerWarningsTracker\"), void 0);\n    get unreachableGroupMentions() {\n      return this.chatComposerWarningsTracker.unreachableGroupMentions;\n    }\n    get overMembersLimitGroupMentions() {\n      return this.chatComposerWarningsTracker.overMembersLimitGroupMentions;\n    }\n    get hasTooManyMentions() {\n      return this.chatComposerWarningsTracker.tooManyMentions;\n    }\n    get channelWideMentionDisallowed() {\n      return this.chatComposerWarningsTracker.channelWideMentionDisallowed;\n    }\n    get mentionsCount() {\n      return this.chatComposerWarningsTracker.mentionsCount;\n    }\n    get unreachableGroupMentionsCount() {\n      return this.unreachableGroupMentions.length;\n    }\n    get overMembersLimitMentionsCount() {\n      return this.overMembersLimitGroupMentions.length;\n    }\n    get hasUnreachableGroupMentions() {\n      return this.unreachableGroupMentionsCount > 0;\n    }\n    get hasOverMembersLimitGroupMentions() {\n      return this.overMembersLimitMentionsCount > 0;\n    }\n    get warningsCount() {\n      return this.unreachableGroupMentionsCount + this.overMembersLimitMentionsCount;\n    }\n    get show() {\n      return this.hasTooManyMentions || this.channelWideMentionDisallowed || this.hasUnreachableGroupMentions || this.hasOverMembersLimitGroupMentions;\n    }\n    get listStyleClass() {\n      if (this.hasTooManyMentions) {\n        return \"chat-mention-warnings-list__simple\";\n      }\n      if (this.warningsCount > 1) {\n        return \"chat-mention-warnings-list__multiple\";\n      } else {\n        return \"chat-mention-warnings-list__simple\";\n      }\n    }\n    get warningHeaderText() {\n      if (this.mentionsCount <= this.warningsCount || this.hasTooManyMentions) {\n        return (0, _discourseI18n.i18n)(\"chat.mention_warning.groups.header.all\");\n      } else {\n        return (0, _discourseI18n.i18n)(\"chat.mention_warning.groups.header.some\");\n      }\n    }\n    get tooManyMentionsBody() {\n      if (!this.hasTooManyMentions) {\n        return;\n      }\n      if (this.currentUser.admin) {\n        return (0, _template.trustHTML)((0, _discourseI18n.i18n)(\"chat.mention_warning.too_many_mentions_admin\", {\n          count: this.siteSettings.max_mentions_per_chat_message,\n          siteSettingUrl: (0, _getUrl.default)(\"/admin/site_settings/category/plugins?filter=max_mentions_per_chat_message\")\n        }));\n      } else {\n        return (0, _template.trustHTML)((0, _discourseI18n.i18n)(\"chat.mention_warning.too_many_mentions\", {\n          count: this.siteSettings.max_mentions_per_chat_message\n        }));\n      }\n    }\n    get unreachableBody() {\n      if (!this.hasUnreachableGroupMentions) {\n        return;\n      }\n      switch (this.unreachableGroupMentionsCount) {\n        case 1:\n          return (0, _discourseI18n.i18n)(\"chat.mention_warning.groups.unreachable_1\", {\n            group: this.unreachableGroupMentions[0]\n          });\n        case 2:\n          return (0, _discourseI18n.i18n)(\"chat.mention_warning.groups.unreachable_2\", {\n            group1: this.unreachableGroupMentions[0],\n            group2: this.unreachableGroupMentions[1]\n          });\n        default:\n          return (0, _discourseI18n.i18n)(\"chat.mention_warning.groups.unreachable_multiple\", {\n            group: this.unreachableGroupMentions[0],\n            count: this.unreachableGroupMentionsCount - 1\n          });\n      }\n    }\n    get overMembersLimitBody() {\n      if (!this.hasOverMembersLimitGroupMentions) {\n        return;\n      }\n      return (0, _template.trustHTML)(_discourseI18n.default.messageFormat(\"chat.mention_warning.groups.too_many_members_MF\", {\n        groupCount: this.overMembersLimitMentionsCount,\n        isAdmin: this.currentUser.admin,\n        siteSettingUrl: (0, _getUrl.default)(\"/admin/site_settings/category/plugins?filter=max_users_notified_per_group_mention\"),\n        notificationLimit: this.siteSettings.max_users_notified_per_group_mention,\n        group1: this.overMembersLimitGroupMentions[0],\n        group2: this.overMembersLimitGroupMentions[1]\n      }));\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.show}}\n        <div class=\"chat-mention-warnings\">\n          <div class=\"chat-mention-warning__icon\">\n            {{icon \"triangle-exclamation\"}}\n          </div>\n          <div class=\"chat-mention-warning__text\">\n            <div class=\"chat-mention-warning__header\">\n              {{this.warningHeaderText}}\n            </div>\n            <ul class={{this.listStyleClass}}>\n              {{#if this.hasTooManyMentions}}\n                <li>{{this.tooManyMentionsBody}}</li>\n              {{else}}\n                {{#if this.channelWideMentionDisallowed}}\n                  <li>{{i18n\n                      \"chat.mention_warning.channel_wide_mentions_disallowed\"\n                    }}</li>\n                {{/if}}\n                {{#if this.hasUnreachableGroupMentions}}\n                  <li>{{this.unreachableBody}}</li>\n                {{/if}}\n                {{#if this.hasOverMembersLimitGroupMentions}}\n                  <li>{{this.overMembersLimitBody}}</li>\n                {{/if}}\n              {{/if}}\n            </ul>\n          </div>\n        </div>\n      {{/if}}\n      */\n      {\n        \"id\": \"r00Yp+Mx\",\n        \"block\": \"[[[41,[30,0,[\\\"show\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"chat-mention-warnings\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-mention-warning__icon\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[28,[32,0],[\\\"triangle-exclamation\\\"],null]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-mention-warning__text\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"chat-mention-warning__header\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[30,0,[\\\"warningHeaderText\\\"]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"ul\\\"],[15,0,[30,0,[\\\"listStyleClass\\\"]]],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"hasTooManyMentions\\\"]],[[[1,\\\"          \\\"],[10,\\\"li\\\"],[12],[1,[30,0,[\\\"tooManyMentionsBody\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"channelWideMentionDisallowed\\\"]],[[[1,\\\"            \\\"],[10,\\\"li\\\"],[12],[1,[28,[32,1],[\\\"chat.mention_warning.channel_wide_mentions_disallowed\\\"],null]],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"hasUnreachableGroupMentions\\\"]],[[[1,\\\"            \\\"],[10,\\\"li\\\"],[12],[1,[30,0,[\\\"unreachableBody\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"hasOverMembersLimitGroupMentions\\\"]],[[[1,\\\"            \\\"],[10,\\\"li\\\"],[12],[1,[30,0,[\\\"overMembersLimitBody\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-mention-warnings.js\",\n        \"scope\": () => [_dIcon.default, _discourseI18n.i18n],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatMentionWarnings;\n});","define(\"discourse/plugins/chat/discourse/components/chat-message-actions-desktop\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/helper\", \"@ember/modifier\", \"@ember/object\", \"@ember/owner\", \"@ember/render-modifiers/modifiers/did-insert\", \"@ember/render-modifiers/modifiers/did-update\", \"@ember/runloop\", \"@ember/service\", \"@floating-ui/dom\", \"discourse/components/bookmark-icon\", \"discourse/components/d-button\", \"discourse/helpers/concat-class\", \"discourse/select-kit/components/dropdown-select-box\", \"discourse/truth-helpers\", \"discourse/plugins/chat/discourse/components/chat-message-reaction\", \"discourse/plugins/chat/discourse/lib/chat-message-container\", \"discourse/plugins/chat/discourse/lib/chat-message-interactor\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _helper, _modifier, _object, _owner, _didInsert, _didUpdate, _runloop, _service, _dom, _bookmarkIcon, _dButton, _concatClass, _dropdownSelectBox, _truthHelpers, _chatMessageReaction, _chatMessageContainer, _chatMessageInteractor, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const MSG_ACTIONS_USER_INFO_VERTICAL_OFFSET = -24;\n  const MSG_ACTIONS_VERTICAL_OFFSET = -6;\n  const FULL = \"full\";\n  const REDUCED = \"reduced\";\n  const REDUCED_WIDTH_THRESHOLD = 500;\n  class ChatMessageActionsDesktop extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"size\", [_tracking.tracked], function () {\n        return FULL;\n      });\n    }\n    #size = (dt7948.i(this, \"size\"), void 0);\n    get message() {\n      return this.chat.activeMessage.model;\n    }\n    get context() {\n      return this.chat.activeMessage.context;\n    }\n    get messageInteractor() {\n      return new _chatMessageInteractor.default((0, _owner.getOwner)(this), this.message, this.context);\n    }\n    static {\n      dt7948.n(this.prototype, \"messageInteractor\", [_tracking.cached]);\n    }\n    get shouldRenderFavoriteReactions() {\n      return this.size === FULL && this.message.channel?.isFollowing;\n    }\n    get messageContainer() {\n      return (0, _chatMessageContainer.default)(this.message.id, this.context);\n    }\n    openEmojiPicker(_, event) {\n      event.preventDefault();\n      this.messageInteractor.openEmojiPicker(event.target);\n    }\n    static {\n      dt7948.n(this.prototype, \"openEmojiPicker\", [_object.action]);\n    }\n    setup(element) {\n      const container = this.messageContainer;\n      if (!container) {\n        return;\n      }\n      const boundary = container.closest(\".chat-messages-scroller\");\n      if (!boundary) {\n        return;\n      }\n      this.size = boundary.clientWidth < REDUCED_WIDTH_THRESHOLD ? REDUCED : FULL;\n      (0, _runloop.next)(() => {\n        (0, _dom.computePosition)(container, element, {\n          placement: \"top-end\",\n          strategy: \"fixed\",\n          middleware: [(0, _dom.offset)({\n            mainAxis: this.chat.activeMessage?.hideUserInfo ? MSG_ACTIONS_VERTICAL_OFFSET : MSG_ACTIONS_USER_INFO_VERTICAL_OFFSET,\n            crossAxis: -2\n          }), (0, _dom.flip)({\n            boundary,\n            fallbackPlacements: [\"bottom-end\"]\n          }), (0, _dom.shift)({\n            limiter: (0, _dom.limitShift)()\n          }), (0, _dom.hide)({\n            strategy: \"referenceHidden\"\n          }), (0, _dom.hide)({\n            strategy: \"escaped\"\n          })]\n        }).then(({\n          x,\n          y,\n          middlewareData\n        }) => {\n          const style = {\n            left: `${x}px`,\n            top: `${y}px`\n          };\n          if (middlewareData.hide?.referenceHidden || middlewareData.hide?.escaped) {\n            style.visibility = \"hidden\";\n            style.pointerEvents = \"none\";\n          } else {\n            style.visibility = \"visible\";\n            style.pointerEvents = \"auto\";\n          }\n          Object.assign(element.style, style);\n        });\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"setup\", [_object.action]);\n    }\n    redirectScroll(event) {\n      event.preventDefault();\n      const targetElement = this.messageContainer.closest(\".chat-messages-scroller\");\n      if (!targetElement) {\n        return;\n      }\n      targetElement.scrollTop += event.deltaY;\n    }\n    static {\n      dt7948.n(this.prototype, \"redirectScroll\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if (and this.site.desktopView this.chat.activeMessage.model.persisted)}}\n        <div\n          {{didInsert this.setup}}\n          {{didUpdate this.setup this.chat.activeMessage.model.id}}\n          class={{concatClass\n            \"chat-message-actions-container\"\n            (concat \"is-size-\" this.size)\n          }}\n          data-id={{this.message.id}}\n          {{on \"wheel\" this.redirectScroll}}\n        >\n          <div\n            class={{concatClass\n              \"chat-message-actions\"\n              (unless\n                this.messageInteractor.secondaryActions.length\n                \"has-no-secondary-actions\"\n              )\n            }}\n          >\n            {{#if this.shouldRenderFavoriteReactions}}\n              {{#each this.messageInteractor.emojiReactions as |reaction|}}\n                <ChatMessageReaction\n                  @reaction={{reaction}}\n                  @onReaction={{this.messageInteractor.react}}\n                  @message={{this.message}}\n                  @showCount={{false}}\n                  @disableTooltip={{true}}\n                />\n              {{/each}}\n            {{/if}}\n      \n            {{#if this.messageInteractor.canInteractWithMessage}}\n              <DButton\n                @action={{this.openEmojiPicker}}\n                @forwardEvent={{true}}\n                @icon=\"discourse-emojis\"\n                class=\"btn-flat react-btn\"\n              />\n            {{/if}}\n      \n            {{#if this.messageInteractor.canBookmark}}\n              <DButton\n                @action={{this.messageInteractor.toggleBookmark}}\n                class=\"btn-flat bookmark-btn\"\n                @translatedTitle={{this.message.bookmark.reminderTitle}}\n              >\n                <BookmarkIcon @bookmark={{this.message.bookmark}} />\n              </DButton>\n            {{/if}}\n      \n            {{#if this.messageInteractor.canReply}}\n              <DButton\n                @action={{this.messageInteractor.reply}}\n                @icon=\"reply\"\n                @title=\"chat.reply\"\n                class=\"btn-flat reply-btn\"\n              />\n            {{/if}}\n      \n            {{#if\n              (and\n                this.messageInteractor.message\n                this.messageInteractor.secondaryActions.length\n              )\n            }}\n              <DropdownSelectBox\n                @options={{hash\n                  icon=\"ellipsis-vertical\"\n                  placement=\"left\"\n                  customStyle=\"true\"\n                  btnCustomClasses=\"btn-flat\"\n                }}\n                @content={{this.messageInteractor.secondaryActions}}\n                @onChange={{this.messageInteractor.handleSecondaryActions}}\n                class=\"more-buttons secondary-actions more-actions-chat\"\n              />\n            {{/if}}\n          </div>\n        </div>\n      {{/if}}\n      */\n      {\n        \"id\": \"DsJaQplT\",\n        \"block\": \"[[[41,[28,[32,0],[[30,0,[\\\"site\\\",\\\"desktopView\\\"]],[30,0,[\\\"chat\\\",\\\"activeMessage\\\",\\\"model\\\",\\\"persisted\\\"]]],null],[[[1,\\\"  \\\"],[11,0],[16,0,[28,[32,1],[\\\"chat-message-actions-container\\\",[28,[32,2],[\\\"is-size-\\\",[30,0,[\\\"size\\\"]]],null]],null]],[16,\\\"data-id\\\",[30,0,[\\\"message\\\",\\\"id\\\"]]],[4,[32,3],[[30,0,[\\\"setup\\\"]]],null],[4,[32,4],[[30,0,[\\\"setup\\\"]],[30,0,[\\\"chat\\\",\\\"activeMessage\\\",\\\"model\\\",\\\"id\\\"]]],null],[4,[32,5],[\\\"wheel\\\",[30,0,[\\\"redirectScroll\\\"]]],null],[12],[1,\\\"\\\\n    \\\"],[10,0],[15,0,[28,[32,1],[\\\"chat-message-actions\\\",[52,[51,[30,0,[\\\"messageInteractor\\\",\\\"secondaryActions\\\",\\\"length\\\"]]],\\\"has-no-secondary-actions\\\"]],null]],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"shouldRenderFavoriteReactions\\\"]],[[[42,[28,[31,3],[[28,[31,3],[[30,0,[\\\"messageInteractor\\\",\\\"emojiReactions\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[8,[32,6],null,[[\\\"@reaction\\\",\\\"@onReaction\\\",\\\"@message\\\",\\\"@showCount\\\",\\\"@disableTooltip\\\"],[[30,1],[30,0,[\\\"messageInteractor\\\",\\\"react\\\"]],[30,0,[\\\"message\\\"]],false,true]],null],[1,\\\"\\\\n\\\"]],[1]],null]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"messageInteractor\\\",\\\"canInteractWithMessage\\\"]],[[[1,\\\"        \\\"],[8,[32,7],[[24,0,\\\"btn-flat react-btn\\\"]],[[\\\"@action\\\",\\\"@forwardEvent\\\",\\\"@icon\\\"],[[30,0,[\\\"openEmojiPicker\\\"]],true,\\\"discourse-emojis\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"messageInteractor\\\",\\\"canBookmark\\\"]],[[[1,\\\"        \\\"],[8,[32,7],[[24,0,\\\"btn-flat bookmark-btn\\\"]],[[\\\"@action\\\",\\\"@translatedTitle\\\"],[[30,0,[\\\"messageInteractor\\\",\\\"toggleBookmark\\\"]],[30,0,[\\\"message\\\",\\\"bookmark\\\",\\\"reminderTitle\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[32,8],null,[[\\\"@bookmark\\\"],[[30,0,[\\\"message\\\",\\\"bookmark\\\"]]]],null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"messageInteractor\\\",\\\"canReply\\\"]],[[[1,\\\"        \\\"],[8,[32,7],[[24,0,\\\"btn-flat reply-btn\\\"]],[[\\\"@action\\\",\\\"@icon\\\",\\\"@title\\\"],[[30,0,[\\\"messageInteractor\\\",\\\"reply\\\"]],\\\"reply\\\",\\\"chat.reply\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[32,0],[[30,0,[\\\"messageInteractor\\\",\\\"message\\\"]],[30,0,[\\\"messageInteractor\\\",\\\"secondaryActions\\\",\\\"length\\\"]]],null],[[[1,\\\"        \\\"],[8,[32,9],[[24,0,\\\"more-buttons secondary-actions more-actions-chat\\\"]],[[\\\"@options\\\",\\\"@content\\\",\\\"@onChange\\\"],[[28,[32,10],null,[[\\\"icon\\\",\\\"placement\\\",\\\"customStyle\\\",\\\"btnCustomClasses\\\"],[\\\"ellipsis-vertical\\\",\\\"left\\\",\\\"true\\\",\\\"btn-flat\\\"]]],[30,0,[\\\"messageInteractor\\\",\\\"secondaryActions\\\"]],[30,0,[\\\"messageInteractor\\\",\\\"handleSecondaryActions\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"reaction\\\"],[\\\"if\\\",\\\"unless\\\",\\\"each\\\",\\\"-track-array\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-message-actions-desktop.js\",\n        \"scope\": () => [_truthHelpers.and, _concatClass.default, _helper.concat, _didInsert.default, _didUpdate.default, _modifier.on, _chatMessageReaction.default, _dButton.default, _bookmarkIcon.default, _dropdownSelectBox.default, _helper.hash],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatMessageActionsDesktop;\n});","define(\"discourse/plugins/chat/discourse/components/chat-message-actions-mobile\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/helper\", \"@ember/modifier\", \"@ember/object\", \"@ember/owner\", \"@ember/render-modifiers/modifiers/did-insert\", \"@ember/service\", \"discourse/components/bookmark-icon\", \"discourse/components/d-button\", \"discourse/components/d-modal\", \"discourse/components/emoji-picker/detached\", \"discourse/helpers/concat-class\", \"discourse/truth-helpers\", \"discourse/plugins/chat/discourse/components/chat-message-reaction\", \"discourse/plugins/chat/discourse/components/chat-user-avatar\", \"discourse/plugins/chat/discourse/lib/chat-message-interactor\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _helper, _modifier, _object, _owner, _didInsert, _service, _bookmarkIcon, _dButton, _dModal, _detached, _concatClass, _truthHelpers, _chatMessageReaction, _chatUserAvatar, _chatMessageInteractor, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatMessageActionsMobile extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"capabilities\", [_service.service]);\n    }\n    #capabilities = (dt7948.i(this, \"capabilities\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"menu\", [_service.service]);\n    }\n    #menu = (dt7948.i(this, \"menu\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"hasExpandedReply\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #hasExpandedReply = (dt7948.i(this, \"hasExpandedReply\"), void 0);\n    get message() {\n      return this.chat.activeMessage.model;\n    }\n    get context() {\n      return this.chat.activeMessage.context;\n    }\n    get messageInteractor() {\n      return new _chatMessageInteractor.default((0, _owner.getOwner)(this), this.message, this.context);\n    }\n    vibrate() {\n      if (this.capabilities.userHasBeenActive && this.capabilities.canVibrate) {\n        navigator.vibrate(5);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"vibrate\", [_object.action]);\n    }\n    expandReply(event) {\n      event.stopPropagation();\n      this.hasExpandedReply = true;\n    }\n    static {\n      dt7948.n(this.prototype, \"expandReply\", [_object.action]);\n    }\n    collapseMenu(event) {\n      event.preventDefault();\n      this.args.closeModal();\n    }\n    static {\n      dt7948.n(this.prototype, \"collapseMenu\", [_object.action]);\n    }\n    actAndCloseMenu(fnId) {\n      this.args.closeModal();\n      this.messageInteractor[fnId]();\n    }\n    static {\n      dt7948.n(this.prototype, \"actAndCloseMenu\", [_object.action]);\n    }\n    react(name, operation) {\n      this.args.closeModal();\n      this.messageInteractor.react(name, operation);\n    }\n    static {\n      dt7948.n(this.prototype, \"react\", [_object.action]);\n    }\n    async openEmojiPicker(_, event) {\n      await this.args.closeModal();\n      await this.menu.show(event.target, {\n        identifier: \"emoji-picker\",\n        groupIdentifier: \"emoji-picker\",\n        component: _detached.default,\n        modalForMobile: true,\n        data: {\n          context: \"chat\",\n          didSelectEmoji: this.messageInteractor.selectReaction\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"openEmojiPicker\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if (and this.site.mobileView this.chat.activeMessage.model.persisted)}}\n        <DModal\n          @closeModal={{@closeModal}}\n          @headerClass=\"hidden\"\n          class=\"chat-message-actions\"\n          {{didInsert this.vibrate}}\n        >\n          <:body>\n            <div class=\"selected-message-container\">\n              <div class=\"selected-message\">\n                <ChatUserAvatar @user={{this.message.user}} />\n                <span\n                  {{on \"touchstart\" this.expandReply passive=true}}\n                  role=\"button\"\n                  class={{concatClass\n                    \"selected-message-reply\"\n                    (if this.hasExpandedReply \"is-expanded\")\n                  }}\n                >\n                  {{this.message.message}}\n                </span>\n              </div>\n            </div>\n      \n            <ul class=\"secondary-actions\">\n              {{#each this.messageInteractor.secondaryActions as |button|}}\n                <li class=\"chat-message-action-item\" data-id={{button.id}}>\n                  <DButton\n                    @translatedLabel={{button.name}}\n                    @icon={{button.icon}}\n                    @action={{fn this.actAndCloseMenu button.id}}\n                    class=\"chat-message-action\"\n                  />\n                </li>\n              {{/each}}\n            </ul>\n      \n            {{#if\n              (or this.messageInteractor.canReact this.messageInteractor.canReply)\n            }}\n              <div class=\"main-actions\">\n                {{#if this.messageInteractor.canReact}}\n                  {{#each this.messageInteractor.emojiReactions as |reaction|}}\n                    <ChatMessageReaction\n                      @reaction={{reaction}}\n                      @onReaction={{this.react}}\n                      @message={{this.message}}\n                      @showCount={{false}}\n                    />\n                  {{/each}}\n      \n                  <DButton\n                    @icon=\"discourse-emojis\"\n                    class=\"btn-flat react-btn\"\n                    @action={{this.openEmojiPicker}}\n                    @forwardEvent={{true}}\n                  />\n                {{/if}}\n      \n                {{#if this.messageInteractor.canBookmark}}\n                  <DButton\n                    @action={{fn this.actAndCloseMenu \"toggleBookmark\"}}\n                    data-id=\"bookmark\"\n                    class=\"btn-flat bookmark-btn\"\n                  >\n                    <BookmarkIcon @bookmark={{this.message.bookmark}} />\n                  </DButton>\n                {{/if}}\n      \n                {{#if this.messageInteractor.canReply}}\n                  <DButton\n                    @action={{fn this.actAndCloseMenu \"reply\"}}\n                    @icon=\"reply\"\n                    @title=\"chat.reply\"\n                    data-id=\"reply\"\n                    class=\"chat-message-action reply-btn btn-flat\"\n                  />\n                {{/if}}\n              </div>\n            {{/if}}\n          </:body>\n        </DModal>\n      {{/if}}\n      */\n      {\n        \"id\": \"nho1kul6\",\n        \"block\": \"[[[41,[28,[32,0],[[30,0,[\\\"site\\\",\\\"mobileView\\\"]],[30,0,[\\\"chat\\\",\\\"activeMessage\\\",\\\"model\\\",\\\"persisted\\\"]]],null],[[[1,\\\"  \\\"],[8,[32,1],[[24,0,\\\"chat-message-actions\\\"],[4,[32,2],[[30,0,[\\\"vibrate\\\"]]],null]],[[\\\"@closeModal\\\",\\\"@headerClass\\\"],[[30,1],\\\"hidden\\\"]],[[\\\"body\\\"],[[[[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"selected-message-container\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"selected-message\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[32,3],null,[[\\\"@user\\\"],[[30,0,[\\\"message\\\",\\\"user\\\"]]]],null],[1,\\\"\\\\n          \\\"],[11,1],[24,\\\"role\\\",\\\"button\\\"],[16,0,[28,[32,4],[\\\"selected-message-reply\\\",[52,[30,0,[\\\"hasExpandedReply\\\"]],\\\"is-expanded\\\"]],null]],[4,[32,5],[\\\"touchstart\\\",[30,0,[\\\"expandReply\\\"]]],[[\\\"passive\\\"],[true]]],[12],[1,\\\"\\\\n            \\\"],[1,[30,0,[\\\"message\\\",\\\"message\\\"]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,\\\"ul\\\"],[14,0,\\\"secondary-actions\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\\\"messageInteractor\\\",\\\"secondaryActions\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[10,\\\"li\\\"],[14,0,\\\"chat-message-action-item\\\"],[15,\\\"data-id\\\",[30,2,[\\\"id\\\"]]],[12],[1,\\\"\\\\n            \\\"],[8,[32,6],[[24,0,\\\"chat-message-action\\\"]],[[\\\"@translatedLabel\\\",\\\"@icon\\\",\\\"@action\\\"],[[30,2,[\\\"name\\\"]],[30,2,[\\\"icon\\\"]],[28,[32,7],[[30,0,[\\\"actAndCloseMenu\\\"]],[30,2,[\\\"id\\\"]]],null]]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[32,8],[[30,0,[\\\"messageInteractor\\\",\\\"canReact\\\"]],[30,0,[\\\"messageInteractor\\\",\\\"canReply\\\"]]],null],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"main-actions\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"messageInteractor\\\",\\\"canReact\\\"]],[[[42,[28,[31,2],[[28,[31,2],[[30,0,[\\\"messageInteractor\\\",\\\"emojiReactions\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[8,[32,9],null,[[\\\"@reaction\\\",\\\"@onReaction\\\",\\\"@message\\\",\\\"@showCount\\\"],[[30,3],[30,0,[\\\"react\\\"]],[30,0,[\\\"message\\\"]],false]],null],[1,\\\"\\\\n\\\"]],[3]],null],[1,\\\"\\\\n            \\\"],[8,[32,6],[[24,0,\\\"btn-flat react-btn\\\"]],[[\\\"@icon\\\",\\\"@action\\\",\\\"@forwardEvent\\\"],[\\\"discourse-emojis\\\",[30,0,[\\\"openEmojiPicker\\\"]],true]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"messageInteractor\\\",\\\"canBookmark\\\"]],[[[1,\\\"            \\\"],[8,[32,6],[[24,\\\"data-id\\\",\\\"bookmark\\\"],[24,0,\\\"btn-flat bookmark-btn\\\"]],[[\\\"@action\\\"],[[28,[32,7],[[30,0,[\\\"actAndCloseMenu\\\"]],\\\"toggleBookmark\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[32,10],null,[[\\\"@bookmark\\\"],[[30,0,[\\\"message\\\",\\\"bookmark\\\"]]]],null],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"messageInteractor\\\",\\\"canReply\\\"]],[[[1,\\\"            \\\"],[8,[32,6],[[24,\\\"data-id\\\",\\\"reply\\\"],[24,0,\\\"chat-message-action reply-btn btn-flat\\\"]],[[\\\"@action\\\",\\\"@icon\\\",\\\"@title\\\"],[[28,[32,7],[[30,0,[\\\"actAndCloseMenu\\\"]],\\\"reply\\\"],null],\\\"reply\\\",\\\"chat.reply\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@closeModal\\\",\\\"button\\\",\\\"reaction\\\"],[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-message-actions-mobile.js\",\n        \"scope\": () => [_truthHelpers.and, _dModal.default, _didInsert.default, _chatUserAvatar.default, _concatClass.default, _modifier.on, _dButton.default, _helper.fn, _truthHelpers.or, _chatMessageReaction.default, _bookmarkIcon.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatMessageActionsMobile;\n});","define(\"discourse/plugins/chat/discourse/components/chat-message-collapser\", [\"exports\", \"@glimmer/component\", \"@ember/runloop\", \"@ember/service\", \"@ember/template\", \"ember-modifier\", \"discourse/components/decorated-html\", \"discourse/lib/dom-from-string\", \"discourse/lib/lightbox\", \"discourse/lib/utilities\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat-upload\", \"discourse/plugins/chat/discourse/components/collapser\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _runloop, _service, _template, _emberModifier, _decoratedHtml, _domFromString, _lightbox, _utilities, _truthHelpers, _discourseI18n, _chatUpload, _collapser, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.isCollapsible = isCollapsible;\n  class ChatMessageCollapser extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    lightbox = (0, _emberModifier.modifier)(element => {\n      let cancelled = false;\n      (0, _runloop.schedule)(\"afterRender\", () => {\n        if (cancelled || this.args.uploads.length === 0 || !element.isConnected) {\n          return;\n        }\n        if (element.querySelector(\".lightbox\")) {\n          (0, _lightbox.default)(element);\n        }\n      });\n      return () => {\n        cancelled = true;\n      };\n    });\n    get hasUploads() {\n      return hasUploads(this.args.uploads);\n    }\n    get uploadsHeader() {\n      let name = \"\";\n      if (this.args.uploads.length === 1) {\n        const upload = this.args.uploads[0];\n        name = upload.optimized_video?.original_filename || upload.original_filename;\n      } else {\n        name = (0, _discourseI18n.i18n)(\"chat.uploaded_files\", {\n          count: this.args.uploads.length\n        });\n      }\n      return (0, _template.trustHTML)(`<span class=\"chat-message-collapser-link-small\">${(0, _utilities.escapeExpression)(name)}</span>`);\n    }\n    get uploadsRenderContext() {\n      return [{\n        signature: uploadSignature(this.args.uploads),\n        uploads: this.args.uploads\n      }];\n    }\n    get cookedBodies() {\n      const elements = Array.prototype.slice.call((0, _domFromString.default)(this.args.cooked));\n      if (hasLazyVideo(elements)) {\n        return this.lazyVideoCooked(elements);\n      }\n      if (hasImageOnebox(elements)) {\n        return this.imageOneboxCooked(elements);\n      }\n      if (hasImage(elements)) {\n        return this.imageCooked(elements);\n      }\n      if (hasGallery(elements)) {\n        return this.galleryCooked(elements);\n      }\n      return [];\n    }\n    get lazyVideoComponent() {\n      return (0, _utilities.optionalRequire)(\"discourse/plugins/discourse-lazy-videos/discourse/components/lazy-video\");\n    }\n    lazyVideoCooked(elements) {\n      const getVideoAttributes = (0, _utilities.optionalRequire)(\"discourse/plugins/discourse-lazy-videos/lib/lazy-video-attributes\");\n      return elements.reduce((acc, e) => {\n        if (this.siteSettings.lazy_videos_enabled && lazyVideoPredicate(e)) {\n          const videoAttributes = getVideoAttributes(e);\n          if (this.siteSettings[`lazy_${videoAttributes.providerName}_enabled`]) {\n            const link = (0, _utilities.escapeExpression)(videoAttributes.url);\n            const title = videoAttributes.title;\n            const header = (0, _template.trustHTML)(`<a target=\"_blank\" class=\"chat-message-collapser-link\" rel=\"noopener noreferrer\" href=\"${link}\">${title}</a>`);\n            acc.push({\n              header,\n              body: e.outerHTML,\n              videoAttributes,\n              needsCollapser: true\n            });\n          } else {\n            acc.push({\n              body: e.outerHTML,\n              needsCollapser: false\n            });\n          }\n        } else {\n          acc.push({\n            body: e.outerHTML,\n            needsCollapser: false\n          });\n        }\n        return acc;\n      }, []);\n    }\n    imageOneboxCooked(elements) {\n      return elements.reduce((acc, e) => {\n        if (imageOneboxPredicate(e)) {\n          let link = animatedImagePredicate(e) ? e.firstChild.src : e.firstElementChild.href;\n          link = (0, _utilities.escapeExpression)(link);\n          const header = (0, _template.trustHTML)(`<a target=\"_blank\" class=\"chat-message-collapser-link-small\" rel=\"noopener noreferrer\" href=\"${link}\">${link}</a>`);\n          acc.push({\n            header,\n            body: e.outerHTML,\n            needsCollapser: true\n          });\n        } else {\n          acc.push({\n            body: e.outerHTML,\n            needsCollapser: false\n          });\n        }\n        return acc;\n      }, []);\n    }\n    imageCooked(elements) {\n      return elements.reduce((acc, e) => {\n        if (imagePredicate(e)) {\n          const link = (0, _utilities.escapeExpression)(e.firstElementChild.src);\n          const alt = (0, _utilities.escapeExpression)(e.firstElementChild.alt);\n          const header = (0, _template.trustHTML)(`<a target=\"_blank\" class=\"chat-message-collapser-link-small\" rel=\"noopener noreferrer\" href=\"${link}\">${alt || link}</a>`);\n          acc.push({\n            header,\n            body: e.outerHTML,\n            needsCollapser: true\n          });\n        } else {\n          acc.push({\n            body: e.outerHTML,\n            needsCollapser: false\n          });\n        }\n        return acc;\n      }, []);\n    }\n    galleryCooked(elements) {\n      return elements.reduce((acc, e) => {\n        if (galleryPredicate(e)) {\n          const link = (0, _utilities.escapeExpression)(e.firstElementChild.href);\n          const title = (0, _utilities.escapeExpression)(e.firstElementChild.firstElementChild.textContent);\n          e.firstElementChild.removeChild(e.firstElementChild.firstElementChild);\n          const header = (0, _template.trustHTML)(`<a target=\"_blank\" class=\"chat-message-collapser-link-small\" rel=\"noopener noreferrer\" href=\"${link}\">${title}</a>`);\n          acc.push({\n            header,\n            body: e.outerHTML,\n            needsCollapser: true\n          });\n        } else {\n          acc.push({\n            body: e.outerHTML,\n            needsCollapser: false\n          });\n        }\n        return acc;\n      }, []);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"chat-message-collapser\">\n        {{#if this.hasUploads}}\n          <DecoratedHtml\n            @html={{trustHTML @cooked}}\n            @decorate={{@decorate}}\n            @className=\"chat-cooked\"\n          />\n      \n          <Collapser\n            @header={{this.uploadsHeader}}\n            @onToggle={{@onToggleCollapse}}\n          >\n            {{#each this.uploadsRenderContext key=\"signature\" as |uploadContext|}}\n              <div class=\"chat-uploads\" {{this.lightbox}}>\n                {{#each uploadContext.uploads key=\"@index\" as |upload|}}\n                  <ChatUpload @upload={{upload}} />\n                {{/each}}\n              </div>\n            {{/each}}\n          </Collapser>\n        {{else}}\n          {{#each this.cookedBodies as |cooked|}}\n            {{#if cooked.needsCollapser}}\n              <Collapser\n                @header={{cooked.header}}\n                @onToggle={{@onToggleCollapse}}\n              >\n                {{#if (and cooked.videoAttributes this.lazyVideoComponent)}}\n                  <div class=\"chat-message-collapser-lazy-video\">\n                    <this.lazyVideoComponent\n                      @videoAttributes={{cooked.videoAttributes}}\n                    />\n                  </div>\n                {{else}}\n                  <DecoratedHtml\n                    @html={{trustHTML cooked.body}}\n                    @decorate={{@decorate}}\n                    @className=\"chat-cooked\"\n                  />\n                {{/if}}\n              </Collapser>\n            {{else}}\n              <DecoratedHtml\n                @html={{trustHTML cooked.body}}\n                @decorate={{@decorate}}\n                @className=\"chat-cooked\"\n              />\n            {{/if}}\n          {{/each}}\n        {{/if}}\n      </div>\n      */\n      {\n        \"id\": \"ggZOhSJF\",\n        \"block\": \"[[[10,0],[14,0,\\\"chat-message-collapser\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"hasUploads\\\"]],[[[1,\\\"    \\\"],[8,[32,0],null,[[\\\"@html\\\",\\\"@decorate\\\",\\\"@className\\\"],[[28,[32,1],[[30,1]],null],[30,2],\\\"chat-cooked\\\"]],null],[1,\\\"\\\\n\\\\n    \\\"],[8,[32,2],null,[[\\\"@header\\\",\\\"@onToggle\\\"],[[30,0,[\\\"uploadsHeader\\\"]],[30,3]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\\\"uploadsRenderContext\\\"]]],null]],null],\\\"signature\\\",[[[1,\\\"        \\\"],[11,0],[24,0,\\\"chat-uploads\\\"],[4,[30,0,[\\\"lightbox\\\"]],null,null],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,2],[[28,[31,2],[[30,4,[\\\"uploads\\\"]]],null]],null],\\\"@index\\\",[[[1,\\\"            \\\"],[8,[32,3],null,[[\\\"@upload\\\"],[[30,5]]],null],[1,\\\"\\\\n\\\"]],[5]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"]],[4]],null],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[42,[28,[31,2],[[28,[31,2],[[30,0,[\\\"cookedBodies\\\"]]],null]],null],null,[[[41,[30,6,[\\\"needsCollapser\\\"]],[[[1,\\\"        \\\"],[8,[32,2],null,[[\\\"@header\\\",\\\"@onToggle\\\"],[[30,6,[\\\"header\\\"]],[30,3]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[28,[32,4],[[30,6,[\\\"videoAttributes\\\"]],[30,0,[\\\"lazyVideoComponent\\\"]]],null],[[[1,\\\"            \\\"],[10,0],[14,0,\\\"chat-message-collapser-lazy-video\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[30,0,[\\\"lazyVideoComponent\\\"]],null,[[\\\"@videoAttributes\\\"],[[30,6,[\\\"videoAttributes\\\"]]]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            \\\"],[8,[32,0],null,[[\\\"@html\\\",\\\"@decorate\\\",\\\"@className\\\"],[[28,[32,1],[[30,6,[\\\"body\\\"]]],null],[30,2],\\\"chat-cooked\\\"]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[8,[32,0],null,[[\\\"@html\\\",\\\"@decorate\\\",\\\"@className\\\"],[[28,[32,1],[[30,6,[\\\"body\\\"]]],null],[30,2],\\\"chat-cooked\\\"]],null],[1,\\\"\\\\n\\\"]],[]]]],[6]],null]],[]]],[13]],[\\\"@cooked\\\",\\\"@decorate\\\",\\\"@onToggleCollapse\\\",\\\"uploadContext\\\",\\\"upload\\\",\\\"cooked\\\"],[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-message-collapser.js\",\n        \"scope\": () => [_decoratedHtml.default, _template.trustHTML, _collapser.default, _chatUpload.default, _truthHelpers.and],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatMessageCollapser;\n  function lazyVideoPredicate(e) {\n    return e.classList.contains(\"lazy-video-container\");\n  }\n  function hasLazyVideo(elements) {\n    return elements.some(e => lazyVideoPredicate(e));\n  }\n  function animatedImagePredicate(e) {\n    return e.firstChild && e.firstChild.nodeName === \"IMG\" && e.firstChild.classList.contains(\"animated\") && e.firstChild.classList.contains(\"onebox\");\n  }\n  function externalImageOnebox(e) {\n    return e.firstElementChild && e.firstElementChild.nodeName === \"A\" && e.firstElementChild.classList.contains(\"onebox\") && e.firstElementChild.firstElementChild && e.firstElementChild.firstElementChild.nodeName === \"IMG\";\n  }\n  function imageOneboxPredicate(e) {\n    return animatedImagePredicate(e) || externalImageOnebox(e);\n  }\n  function hasImageOnebox(elements) {\n    return elements.some(e => imageOneboxPredicate(e));\n  }\n  function hasUploads(uploads) {\n    return uploads?.length > 0;\n  }\n  function uploadSignature(uploads = []) {\n    return uploads.map(upload => {\n      return [upload.id, upload.url, upload.thumbnail?.url, upload.short_path, upload.width, upload.height].join(\":\");\n    }).join(\"|\");\n  }\n  function imagePredicate(e) {\n    return e.nodeName === \"P\" && e.firstElementChild && e.firstElementChild.nodeName === \"IMG\" && !e.firstElementChild.classList.contains(\"emoji\");\n  }\n  function hasImage(elements) {\n    return elements.some(e => imagePredicate(e));\n  }\n  function galleryPredicate(e) {\n    return e.firstElementChild && e.firstElementChild.nodeName === \"A\" && e.firstElementChild.firstElementChild && e.firstElementChild.firstElementChild.classList.contains(\"outer-box\");\n  }\n  function hasGallery(elements) {\n    return elements.some(e => galleryPredicate(e));\n  }\n  function isCollapsible(cooked, uploads) {\n    const elements = Array.prototype.slice.call((0, _domFromString.default)(cooked));\n    return hasLazyVideo(elements) || hasImageOnebox(elements) || hasUploads(uploads) || hasImage(elements) || hasGallery(elements);\n  }\n});","define(\"discourse/plugins/chat/discourse/components/chat-message-in-reply-to-indicator\", [\"exports\", \"@glimmer/component\", \"@ember/routing\", \"@ember/template\", \"discourse/helpers/d-icon\", \"discourse/helpers/replace-emoji\", \"discourse/plugins/chat/discourse/components/chat-emoji-avatar\", \"discourse/plugins/chat/discourse/components/chat-user-avatar\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _routing, _template, _dIcon, _replaceEmoji, _chatEmojiAvatar, _chatUserAvatar, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatMessageInReplyToIndicator extends _component.default {\n    get route() {\n      if (this.hasThread) {\n        return \"chat.channel.thread\";\n      } else {\n        return \"chat.channel.near-message\";\n      }\n    }\n    get model() {\n      if (this.hasThread) {\n        return [...this.args.message.channel.routeModels, this.args.message.thread.id];\n      } else {\n        return [...this.args.message.channel.routeModels, this.args.message.inReplyTo.id];\n      }\n    }\n    get hasThread() {\n      return this.args.message?.channel?.threadingEnabled && this.args.message?.thread?.id;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if @message.inReplyTo}}\n        <LinkTo\n          @route={{this.route}}\n          @models={{this.model}}\n          class=\"chat-reply is-direct-reply\"\n        >\n          {{icon \"share\" title=\"chat.in_reply_to\"}}\n      \n          {{#if @message.inReplyTo.chatWebhookEvent.emoji}}\n            <ChatEmojiAvatar\n              @emoji={{@message.inReplyTo.chatWebhookEvent.emoji}}\n            />\n          {{else}}\n            <ChatUserAvatar @user={{@message.inReplyTo.user}} />\n          {{/if}}\n      \n          <span class=\"chat-reply__excerpt\">\n            {{replaceEmoji (trustHTML @message.inReplyTo.excerpt)}}\n          </span>\n        </LinkTo>\n      {{/if}}\n      */\n      {\n        \"id\": \"8IxNeUJ+\",\n        \"block\": \"[[[41,[30,1,[\\\"inReplyTo\\\"]],[[[1,\\\"  \\\"],[8,[32,0],[[24,0,\\\"chat-reply is-direct-reply\\\"]],[[\\\"@route\\\",\\\"@models\\\"],[[30,0,[\\\"route\\\"]],[30,0,[\\\"model\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[1,[28,[32,1],[\\\"share\\\"],[[\\\"title\\\"],[\\\"chat.in_reply_to\\\"]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,1,[\\\"inReplyTo\\\",\\\"chatWebhookEvent\\\",\\\"emoji\\\"]],[[[1,\\\"      \\\"],[8,[32,2],null,[[\\\"@emoji\\\"],[[30,1,[\\\"inReplyTo\\\",\\\"chatWebhookEvent\\\",\\\"emoji\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[32,3],null,[[\\\"@user\\\"],[[30,1,[\\\"inReplyTo\\\",\\\"user\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"chat-reply__excerpt\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[28,[32,4],[[28,[32,5],[[30,1,[\\\"inReplyTo\\\",\\\"excerpt\\\"]]],null]],null]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@message\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-message-in-reply-to-indicator.js\",\n        \"scope\": () => [_routing.LinkTo, _dIcon.default, _chatEmojiAvatar.default, _chatUserAvatar.default, _replaceEmoji.default, _template.trustHTML],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatMessageInReplyToIndicator;\n});","define(\"discourse/plugins/chat/discourse/components/chat-message-reaction\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/modifier\", \"@ember/object\", \"@ember/service\", \"@ember/template\", \"ember-modifier\", \"discourse/helpers/concat-class\", \"discourse/lib/text\", \"discourse/truth-helpers\", \"discourse/plugins/chat/discourse/lib/get-reaction-text\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _modifier, _object, _service, _template, _emberModifier, _concatClass, _text, _truthHelpers, _getReactionText, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatMessageReaction extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"tooltip\", [_service.service]);\n    }\n    #tooltip = (dt7948.i(this, \"tooltip\"), void 0);\n    registerTooltip = (0, _emberModifier.modifier)(element => {\n      if (this.args.disableTooltip || !this.popoverContent?.length) {\n        return;\n      }\n      const instance = this.tooltip.register(element, {\n        content: (0, _template.trustHTML)(this.popoverContent),\n        identifier: \"chat-message-reaction-tooltip\",\n        animated: false,\n        placement: \"top\",\n        fallbackPlacements: [\"bottom\"],\n        triggers: this.site.mobileView ? [\"hold\"] : [\"hover\"]\n      });\n      return () => {\n        instance.destroy();\n      };\n    });\n    get showCount() {\n      return this.args.showCount ?? true;\n    }\n    get emojiString() {\n      return `:${this.args.reaction.emoji}:`;\n    }\n    get emojiUrl() {\n      return (0, _text.emojiUrlFor)(this.args.reaction.emoji);\n    }\n    handleClick(event) {\n      event.stopPropagation();\n      this.args.onReaction?.(this.args.reaction.emoji, this.args.reaction.reacted ? \"remove\" : \"add\");\n    }\n    static {\n      dt7948.n(this.prototype, \"handleClick\", [_object.action]);\n    }\n    get popoverContent() {\n      if (!this.args.reaction.count || !this.args.reaction.users?.length) {\n        return;\n      }\n      return (0, _text.emojiUnescape)((0, _getReactionText.getReactionText)(this.args.reaction, this.currentUser));\n    }\n    static {\n      dt7948.n(this.prototype, \"popoverContent\", [_tracking.cached]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if (and @reaction this.emojiUrl)}}\n        <button\n          {{on \"click\" this.handleClick passive=true}}\n          {{this.registerTooltip}}\n          type=\"button\"\n          title={{this.emojiString}}\n          data-emoji-name={{@reaction.emoji}}\n          tabindex={{if @interactive \"0\" \"-1\"}}\n          class={{concatClass\n            \"chat-message-reaction\"\n            (if @reaction.reacted \"reacted\")\n          }}\n        >\n          <img\n            loading=\"lazy\"\n            class=\"emoji\"\n            width=\"20\"\n            height=\"20\"\n            alt={{this.emojiString}}\n            src={{this.emojiUrl}}\n          />\n      \n          {{#if (and this.showCount @reaction.count)}}\n            <span class=\"count\">{{@reaction.count}}</span>\n          {{/if}}\n        </button>\n      {{/if}}\n      */\n      {\n        \"id\": \"z9duehU0\",\n        \"block\": \"[[[41,[28,[32,0],[[30,1],[30,0,[\\\"emojiUrl\\\"]]],null],[[[1,\\\"  \\\"],[11,\\\"button\\\"],[16,\\\"title\\\",[30,0,[\\\"emojiString\\\"]]],[16,\\\"data-emoji-name\\\",[30,1,[\\\"emoji\\\"]]],[16,\\\"tabindex\\\",[52,[30,2],\\\"0\\\",\\\"-1\\\"]],[16,0,[28,[32,1],[\\\"chat-message-reaction\\\",[52,[30,1,[\\\"reacted\\\"]],\\\"reacted\\\"]],null]],[24,4,\\\"button\\\"],[4,[32,2],[\\\"click\\\",[30,0,[\\\"handleClick\\\"]]],[[\\\"passive\\\"],[true]]],[4,[30,0,[\\\"registerTooltip\\\"]],null,null],[12],[1,\\\"\\\\n    \\\"],[10,\\\"img\\\"],[14,\\\"loading\\\",\\\"lazy\\\"],[14,0,\\\"emoji\\\"],[14,\\\"width\\\",\\\"20\\\"],[14,\\\"height\\\",\\\"20\\\"],[15,\\\"alt\\\",[30,0,[\\\"emojiString\\\"]]],[15,\\\"src\\\",[30,0,[\\\"emojiUrl\\\"]]],[12],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[32,0],[[30,0,[\\\"showCount\\\"]],[30,1,[\\\"count\\\"]]],null],[[[1,\\\"      \\\"],[10,1],[14,0,\\\"count\\\"],[12],[1,[30,1,[\\\"count\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@reaction\\\",\\\"@interactive\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-message-reaction.js\",\n        \"scope\": () => [_truthHelpers.and, _concatClass.default, _modifier.on],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatMessageReaction;\n});","define(\"discourse/plugins/chat/discourse/components/chat-message-separator\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/modifier\", \"@ember/object\", \"ember-modifier\", \"discourse/helpers/concat-class\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _modifier, _object, _emberModifier, _concatClass, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const IS_PINNED_CLASS = \"is-pinned\";\n  class ChatMessageSeparator extends _component.default {\n    track = (0, _emberModifier.modifier)(element => {\n      const intersectionObserver = new IntersectionObserver(([entry]) => {\n        if (entry.isIntersecting && entry.intersectionRatio < 1 && entry.boundingClientRect.y < entry.intersectionRect.y) {\n          entry.target.classList.add(IS_PINNED_CLASS);\n        } else {\n          entry.target.classList.remove(IS_PINNED_CLASS);\n        }\n      }, {\n        threshold: [0, 1]\n      });\n      intersectionObserver.observe(element);\n      return () => {\n        intersectionObserver?.disconnect();\n      };\n    });\n    onDateClick() {\n      return this.args.fetchMessagesByDate?.(this.firstMessageOfTheDayAt);\n    }\n    static {\n      dt7948.n(this.prototype, \"onDateClick\", [_object.action]);\n    }\n    get firstMessageOfTheDayAt() {\n      const message = this.args.message;\n      if (!message.previousMessage) {\n        return this.#startOfDay(message.createdAt);\n      }\n      if (!this.#areDatesOnSameDay(message.previousMessage.createdAt, message.createdAt)) {\n        return this.#startOfDay(message.createdAt);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"firstMessageOfTheDayAt\", [_tracking.cached]);\n    }\n    get formattedFirstMessageDate() {\n      if (this.firstMessageOfTheDayAt) {\n        return this.#calendarDate(this.firstMessageOfTheDayAt);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"formattedFirstMessageDate\", [_tracking.cached]);\n    }\n    get isNewestMessage() {\n      return this.args.message.id === this.args.message.channel.newestMessage?.id;\n    }\n    #areDatesOnSameDay(a, b) {\n      return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n    }\n    #startOfDay(date) {\n      return moment(date).startOf(\"day\").format();\n    }\n    #calendarDate(date) {\n      return moment(date).calendar(moment(), {\n        sameDay: `[${(0, _discourseI18n.i18n)(\"chat.chat_message_separator.today\")}]`,\n        lastDay: `[${(0, _discourseI18n.i18n)(\"chat.chat_message_separator.yesterday\")}]`,\n        lastWeek: \"LL\",\n        sameElse: \"LL\"\n      });\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.formattedFirstMessageDate}}\n        <div\n          class={{concatClass\n            \"chat-message-separator\"\n            \"chat-message-separator-date\"\n            (if this.isNewestMessage \"with-last-visit\")\n          }}\n          role=\"button\"\n          {{on \"click\" this.onDateClick passive=true}}\n          data-id={{@message.id}}\n        >\n          <div class=\"chat-message-separator__text-container\" {{this.track}}>\n            <span class=\"chat-message-separator__text\">\n              {{this.formattedFirstMessageDate}}\n      \n              {{#if this.isNewestMessage}}\n                <span class=\"chat-message-separator__last-visit\">\n                  <span\n                    class=\"chat-message-separator__last-visit-separator\"\n                  >-</span>\n                  {{i18n \"chat.last_visit\"}}\n                </span>\n              {{/if}}\n            </span>\n          </div>\n        </div>\n      \n        <div class=\"chat-message-separator__line-container\">\n          <div class=\"chat-message-separator__line\"></div>\n        </div>\n      {{else if this.isNewestMessage}}\n        <div\n          class=\"chat-message-separator chat-message-separator-new\"\n          data-id={{@message.id}}\n        >\n          <div class=\"chat-message-separator__text-container\">\n            <span class=\"chat-message-separator__text\">\n              {{i18n \"chat.last_visit\"}}\n            </span>\n          </div>\n      \n          <div class=\"chat-message-separator__line-container\">\n            <div class=\"chat-message-separator__line\"></div>\n          </div>\n        </div>\n      {{/if}}\n      */\n      {\n        \"id\": \"qqEz+XcA\",\n        \"block\": \"[[[41,[30,0,[\\\"formattedFirstMessageDate\\\"]],[[[1,\\\"  \\\"],[11,0],[16,0,[28,[32,0],[\\\"chat-message-separator\\\",\\\"chat-message-separator-date\\\",[52,[30,0,[\\\"isNewestMessage\\\"]],\\\"with-last-visit\\\"]],null]],[24,\\\"role\\\",\\\"button\\\"],[16,\\\"data-id\\\",[30,1,[\\\"id\\\"]]],[4,[32,1],[\\\"click\\\",[30,0,[\\\"onDateClick\\\"]]],[[\\\"passive\\\"],[true]]],[12],[1,\\\"\\\\n    \\\"],[11,0],[24,0,\\\"chat-message-separator__text-container\\\"],[4,[30,0,[\\\"track\\\"]],null,null],[12],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"chat-message-separator__text\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[30,0,[\\\"formattedFirstMessageDate\\\"]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"isNewestMessage\\\"]],[[[1,\\\"          \\\"],[10,1],[14,0,\\\"chat-message-separator__last-visit\\\"],[12],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"chat-message-separator__last-visit-separator\\\"],[12],[1,\\\"-\\\"],[13],[1,\\\"\\\\n            \\\"],[1,[28,[32,2],[\\\"chat.last_visit\\\"],null]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"chat-message-separator__line-container\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-message-separator__line\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"isNewestMessage\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"chat-message-separator chat-message-separator-new\\\"],[15,\\\"data-id\\\",[30,1,[\\\"id\\\"]]],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-message-separator__text-container\\\"],[12],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"chat-message-separator__text\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,2],[\\\"chat.last_visit\\\"],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,0,\\\"chat-message-separator__line-container\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"chat-message-separator__line\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]]],[\\\"@message\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-message-separator.js\",\n        \"scope\": () => [_concatClass.default, _modifier.on, _discourseI18n.i18n],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatMessageSeparator;\n});","define(\"discourse/plugins/chat/discourse/components/chat-message-text\", [\"exports\", \"@glimmer/component\", \"@ember/template\", \"discourse/components/decorated-html\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat-message-collapser\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _template, _decoratedHtml, _discourseI18n, _chatMessageCollapser, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatMessageText extends _component.default {\n    get isEdited() {\n      return this.args.edited ?? false;\n    }\n    get isCollapsible() {\n      return (0, _chatMessageCollapser.isCollapsible)(this.args.cooked, this.args.uploads);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"chat-message-text\">\n        {{#if this.isCollapsible}}\n          <ChatMessageCollapser\n            @cooked={{@cooked}}\n            @decorate={{@decorate}}\n            @uploads={{@uploads}}\n            @onToggleCollapse={{@onToggleCollapse}}\n          />\n        {{else}}\n          <DecoratedHtml\n            @html={{trustHTML @cooked}}\n            @decorate={{@decorate}}\n            @className=\"chat-cooked\"\n          />\n        {{/if}}\n      \n        {{#if this.isEdited}}\n          <span class=\"chat-message-edited\">({{i18n \"chat.edited\"}})</span>\n        {{/if}}\n      \n        {{yield}}\n      </div>\n      */\n      {\n        \"id\": \"EfR7VLcI\",\n        \"block\": \"[[[10,0],[14,0,\\\"chat-message-text\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"isCollapsible\\\"]],[[[1,\\\"    \\\"],[8,[32,0],null,[[\\\"@cooked\\\",\\\"@decorate\\\",\\\"@uploads\\\",\\\"@onToggleCollapse\\\"],[[30,1],[30,2],[30,3],[30,4]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[8,[32,1],null,[[\\\"@html\\\",\\\"@decorate\\\",\\\"@className\\\"],[[28,[32,2],[[30,1]],null],[30,2],\\\"chat-cooked\\\"]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"isEdited\\\"]],[[[1,\\\"    \\\"],[10,1],[14,0,\\\"chat-message-edited\\\"],[12],[1,\\\"(\\\"],[1,[28,[32,3],[\\\"chat.edited\\\"],null]],[1,\\\")\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[18,5,null],[1,\\\"\\\\n\\\"],[13]],[\\\"@cooked\\\",\\\"@decorate\\\",\\\"@uploads\\\",\\\"@onToggleCollapse\\\",\\\"&default\\\"],[\\\"if\\\",\\\"yield\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-message-text.js\",\n        \"scope\": () => [_chatMessageCollapser.default, _decoratedHtml.default, _template.trustHTML, _discourseI18n.i18n],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatMessageText;\n});","define(\"discourse/plugins/chat/discourse/components/chat-message-thread-indicator\", [\"exports\", \"@glimmer/component\", \"@ember/routing\", \"@ember/template\", \"discourse/helpers/format-date\", \"discourse/helpers/replace-emoji\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat-thread-participants\", \"discourse/plugins/chat/discourse/components/chat-user-avatar\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _routing, _template, _formatDate, _replaceEmoji, _discourseI18n, _chatThreadParticipants, _chatUserAvatar, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatMessageThreadIndicator extends _component.default {\n    get interactiveUser() {\n      return this.args.interactiveUser ?? true;\n    }\n    get threadMessageRoute() {\n      return [...this.args.message.thread.routeModels, this.args.message.thread.preview.lastReplyId];\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <LinkTo\n        class=\"chat-message-thread-indicator\"\n        @route=\"chat.channel.thread.near-message\"\n        @models={{this.threadMessageRoute}}\n        title={{i18n \"chat.threads.open\"}}\n        tabindex=\"0\"\n        ...attributes\n      >\n        <div class=\"chat-message-thread-indicator__last-reply-avatar\">\n          <ChatUserAvatar\n            @user={{@message.thread.preview.lastReplyUser}}\n            @avatarSize=\"small\"\n            @interactive={{this.interactiveUser}}\n          />\n        </div>\n      \n        <div class=\"chat-message-thread-indicator__last-reply-info\">\n          <span class=\"chat-message-thread-indicator__last-reply-username\">\n            {{@message.thread.preview.lastReplyUser.username}}\n          </span>\n          <span class=\"chat-message-thread-indicator__last-reply-timestamp\">\n            {{formatDate\n              @message.thread.preview.lastReplyCreatedAt\n              leaveAgo=\"true\"\n            }}\n          </span>\n        </div>\n        <div class=\"chat-message-thread-indicator__replies-count\">\n          {{i18n \"chat.thread.replies\" count=@message.thread.preview.replyCount}}\n        </div>\n        <ChatThreadParticipants @thread={{@message.thread}} />\n        <div class=\"chat-message-thread-indicator__last-reply-excerpt\">\n          {{replaceEmoji (trustHTML @message.thread.preview.lastReplyExcerpt)}}\n        </div>\n      </LinkTo>\n      */\n      {\n        \"id\": \"zZ1ou+wx\",\n        \"block\": \"[[[8,[32,0],[[24,0,\\\"chat-message-thread-indicator\\\"],[16,\\\"title\\\",[28,[32,1],[\\\"chat.threads.open\\\"],null]],[24,\\\"tabindex\\\",\\\"0\\\"],[17,1]],[[\\\"@route\\\",\\\"@models\\\"],[\\\"chat.channel.thread.near-message\\\",[30,0,[\\\"threadMessageRoute\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-message-thread-indicator__last-reply-avatar\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[32,2],null,[[\\\"@user\\\",\\\"@avatarSize\\\",\\\"@interactive\\\"],[[30,2,[\\\"thread\\\",\\\"preview\\\",\\\"lastReplyUser\\\"]],\\\"small\\\",[30,0,[\\\"interactiveUser\\\"]]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"chat-message-thread-indicator__last-reply-info\\\"],[12],[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"chat-message-thread-indicator__last-reply-username\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[30,2,[\\\"thread\\\",\\\"preview\\\",\\\"lastReplyUser\\\",\\\"username\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"chat-message-thread-indicator__last-reply-timestamp\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[28,[32,3],[[30,2,[\\\"thread\\\",\\\"preview\\\",\\\"lastReplyCreatedAt\\\"]]],[[\\\"leaveAgo\\\"],[\\\"true\\\"]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-message-thread-indicator__replies-count\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[28,[32,1],[\\\"chat.thread.replies\\\"],[[\\\"count\\\"],[[30,2,[\\\"thread\\\",\\\"preview\\\",\\\"replyCount\\\"]]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[8,[32,4],null,[[\\\"@thread\\\"],[[30,2,[\\\"thread\\\"]]]],null],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-message-thread-indicator__last-reply-excerpt\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[28,[32,5],[[28,[32,6],[[30,2,[\\\"thread\\\",\\\"preview\\\",\\\"lastReplyExcerpt\\\"]]],null]],null]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"&attrs\\\",\\\"@message\\\"],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-message-thread-indicator.js\",\n        \"scope\": () => [_routing.LinkTo, _discourseI18n.i18n, _chatUserAvatar.default, _formatDate.default, _chatThreadParticipants.default, _replaceEmoji.default, _template.trustHTML],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatMessageThreadIndicator;\n});","define(\"discourse/plugins/chat/discourse/components/chat-message\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/component\", \"@ember/helper\", \"@ember/modifier\", \"@ember/object\", \"@ember/owner\", \"@ember/render-modifiers/modifiers/will-destroy\", \"@ember/runloop\", \"@ember/service\", \"ember-modifier\", \"discourse/components/d-button\", \"discourse/components/emoji-picker\", \"discourse/helpers/concat-class\", \"discourse/lib/debounce\", \"discourse/lib/decorators\", \"discourse/lib/get-url\", \"discourse/lib/later\", \"discourse/lib/transformer\", \"discourse/lib/update-user-status-on-mention\", \"discourse/lib/zoom-check\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/message/avatar\", \"discourse/plugins/chat/discourse/components/chat/message/error\", \"discourse/plugins/chat/discourse/components/chat/message/info\", \"discourse/plugins/chat/discourse/components/chat/message/left-gutter\", \"discourse/plugins/chat/discourse/components/chat-message/blocks\", \"discourse/plugins/chat/discourse/components/chat-message-actions-mobile\", \"discourse/plugins/chat/discourse/components/chat-message-in-reply-to-indicator\", \"discourse/plugins/chat/discourse/components/chat-message-reaction\", \"discourse/plugins/chat/discourse/components/chat-message-separator\", \"discourse/plugins/chat/discourse/components/chat-message-text\", \"discourse/plugins/chat/discourse/components/chat-message-thread-indicator\", \"discourse/plugins/chat/discourse/lib/chat-message-interactor\", \"discourse/plugins/chat/discourse/modifiers/chat/on-long-press\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _component2, _helper, _modifier, _object, _owner, _willDestroy, _runloop, _service, _emberModifier, _dButton, _emojiPicker, _concatClass, _debounce, _decorators, _getUrl, _later, _transformer, _updateUserStatusOnMention, _zoomCheck, _truthHelpers, _discourseI18n, _avatar, _error, _info, _leftGutter, _blocks, _chatMessageActionsMobile, _chatMessageInReplyToIndicator, _chatMessageReaction, _chatMessageSeparator, _chatMessageText, _chatMessageThreadIndicator, _chatMessageInteractor, _onLongPress, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.MESSAGE_CONTEXT_THREAD = _exports.MENTION_KEYWORDS = void 0;\n  _exports.addChatMessageDecorator = addChatMessageDecorator;\n  _exports.default = void 0;\n  _exports.resetChatMessageDecorators = resetChatMessageDecorators;\n  let _chatMessageDecorators = [];\n  function addChatMessageDecorator(decorator) {\n    _chatMessageDecorators.push(decorator);\n  }\n  function resetChatMessageDecorators() {\n    _chatMessageDecorators = [];\n  }\n  const MENTION_KEYWORDS = _exports.MENTION_KEYWORDS = [\"here\", \"all\"];\n  const MESSAGE_CONTEXT_THREAD = _exports.MESSAGE_CONTEXT_THREAD = \"thread\";\n  class ChatMessage extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelPane\", [_service.service]);\n    }\n    #chatChannelPane = (dt7948.i(this, \"chatChannelPane\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatThreadPane\", [_service.service]);\n    }\n    #chatThreadPane = (dt7948.i(this, \"chatThreadPane\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"interactedChatMessage\", [_service.service]);\n    }\n    #interactedChatMessage = (dt7948.i(this, \"interactedChatMessage\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"isActive\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #isActive = (dt7948.i(this, \"isActive\"), void 0);\n    toggleCheckIfPossible = (0, _emberModifier.modifier)(element => {\n      let addedListener = false;\n      const handler = event => {\n        if (!this.pane.selectingMessages) {\n          return;\n        }\n        if (event.shiftKey) {\n          this.messageInteractor.bulkSelect(!this.args.message.selected);\n          return;\n        }\n        this.messageInteractor.select(!this.args.message.selected);\n      };\n      if (this.pane.selectingMessages) {\n        element.addEventListener(\"click\", handler, {\n          passive: true\n        });\n        addedListener = true;\n      }\n      return () => {\n        if (addedListener) {\n          element.removeEventListener(\"click\", handler);\n        }\n      };\n    });\n    get pane() {\n      return this.threadContext ? this.chatThreadPane : this.chatChannelPane;\n    }\n    get includeSeparator() {\n      return this.args.includeSeparator ?? true;\n    }\n    get messageInteractor() {\n      return new _chatMessageInteractor.default((0, _owner.getOwner)(this), this.args.message, this.args.context);\n    }\n    get deletedAndCollapsed() {\n      return this.args.message?.deletedAt && this.collapsed;\n    }\n    get hiddenAndCollapsed() {\n      return this.args.message?.hidden && this.collapsed;\n    }\n    get collapsed() {\n      return !this.args.message?.expanded;\n    }\n    get deletedMessageLabel() {\n      let count = 1;\n      const recursiveCount = message => {\n        const previousMessage = message.previousMessage;\n        if (previousMessage?.deletedAt) {\n          count++;\n          recursiveCount(previousMessage);\n        }\n      };\n      recursiveCount(this.args.message);\n      return (0, _discourseI18n.i18n)(\"chat.deleted\", {\n        count\n      });\n    }\n    get shouldRender() {\n      return this.args.message.expanded || !this.args.message.deletedAt || this.args.message.deletedAt && !this.args.message.nextMessage?.deletedAt;\n    }\n    get shouldRenderOpenEmojiPickerButton() {\n      return this.args.interactive !== false && this.chat.userCanInteractWithChat && this.site.desktopView;\n    }\n    get secondaryActionsIsExpanded() {\n      return document.querySelector(\".more-buttons.secondary-actions.is-expanded\");\n    }\n    expand() {\n      const recursiveExpand = message => {\n        const previousMessage = message.previousMessage;\n        if (previousMessage?.deletedAt) {\n          previousMessage.expanded = true;\n          recursiveExpand(previousMessage);\n        }\n      };\n      this.args.message.expanded = true;\n      this.refreshStatusOnMentions();\n      recursiveExpand(this.args.message);\n    }\n    static {\n      dt7948.n(this.prototype, \"expand\", [_object.action]);\n    }\n    toggleChecked(event) {\n      event.stopPropagation();\n      if (event.shiftKey) {\n        this.messageInteractor.bulkSelect(event.target.checked);\n        return;\n      }\n      this.messageInteractor.select(event.target.checked);\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleChecked\", [_object.action]);\n    }\n    willDestroyMessage() {\n      (0, _runloop.cancel)(this._invitationSentTimer);\n      (0, _runloop.cancel)(this._disableMessageActionsHandler);\n      (0, _runloop.cancel)(this._makeMessageActiveHandler);\n      (0, _runloop.cancel)(this._onMouseEnterMessageDebouncedHandler);\n      this.#teardownMentionedUsers();\n      this.chat.activeMessage = null;\n    }\n    static {\n      dt7948.n(this.prototype, \"willDestroyMessage\", [_object.action]);\n    }\n    refreshStatusOnMentions() {\n      (0, _runloop.schedule)(\"afterRender\", () => {\n        this.args.message.mentionedUsers.forEach(user => {\n          const href = `/u/${user.username.toLowerCase()}`;\n          const mentions = this.messageContainer.querySelectorAll(`a.mention[href=\"${href}\"]`);\n          mentions.forEach(mention => {\n            (0, _updateUserStatusOnMention.updateUserStatusOnMention)((0, _owner.getOwner)(this), mention, user.status);\n          });\n        });\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"refreshStatusOnMentions\", [_object.action]);\n    }\n    initMentionedUsers() {\n      this.args.message.mentionedUsers.forEach(user => {\n        if (!user.statusManager.isTrackingStatus()) {\n          user.statusManager.trackStatus();\n          user.on(\"status-changed\", this, \"refreshStatusOnMentions\");\n        }\n      });\n    }\n    decorateMentions(cooked) {\n      if (this.args.message.channel.allowChannelWideMentions) {\n        const wideMentions = [...cooked.querySelectorAll(\"span.mention\")];\n        MENTION_KEYWORDS.forEach(keyword => {\n          const mentions = wideMentions.filter(node => {\n            return node.textContent.trim() === `@${keyword}`;\n          });\n          const classes = (0, _transformer.applyValueTransformer)(\"mentions-class\", [], {\n            user: {\n              username: keyword\n            }\n          });\n          mentions.forEach(mention => {\n            mention.classList.add(...classes);\n          });\n        });\n      }\n      this.args.message.mentionedUsers.forEach(user => {\n        const href = (0, _getUrl.default)(`/u/${user.username.toLowerCase()}`);\n        const mentions = cooked.querySelectorAll(`a.mention[href=\"${href}\"]`);\n        const classes = (0, _transformer.applyValueTransformer)(\"mentions-class\", [], {\n          user\n        });\n        mentions.forEach(mention => {\n          mention.classList.add(...classes);\n          (0, _updateUserStatusOnMention.updateUserStatusOnMention)((0, _owner.getOwner)(this), mention, user.status);\n        });\n      });\n    }\n    decorateCookedMessage(element, helper) {\n      this.messageContainer = element;\n      this.initMentionedUsers();\n      this.decorateMentions(element);\n      _chatMessageDecorators.forEach(decorator => {\n        decorator(element, helper);\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"decorateCookedMessage\", [_decorators.bind]);\n    }\n    get show() {\n      return !this.args.message?.deletedAt || this.currentUser.id === this.args.message?.user?.id || this.currentUser.staff || this.args.message?.channel?.canModerate;\n    }\n    onMouseEnter() {\n      if (this.site.mobileView) {\n        return;\n      }\n      if (this.chat.activeMessage?.model?.id === this.args.message.id && this.chat.activeMessage?.context === this.args.context) {\n        return;\n      }\n      if (this.interactedChatMessage.emojiPickerOpen) {\n        return;\n      }\n      if (!this.secondaryActionsIsExpanded) {\n        this._onMouseEnterMessageDebouncedHandler = (0, _debounce.default)(this, this._debouncedOnHoverMessage, 250);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"onMouseEnter\", [_object.action]);\n    }\n    onMouseMove() {\n      if (this.site.mobileView) {\n        return;\n      }\n      if (this.chat.activeMessage?.model?.id === this.args.message.id && this.chat.activeMessage?.context === this.args.context) {\n        return;\n      }\n      if (this.secondaryActionsIsExpanded) {\n        return;\n      }\n      if (this.interactedChatMessage.emojiPickerOpen) {\n        return;\n      }\n      this._setActiveMessage();\n    }\n    static {\n      dt7948.n(this.prototype, \"onMouseMove\", [_object.action]);\n    }\n    onMouseLeave(event) {\n      (0, _runloop.cancel)(this._onMouseEnterMessageDebouncedHandler);\n      if (this.site.mobileView) {\n        return;\n      }\n      if ((event.toElement || event.relatedTarget)?.closest(\".chat-message-actions-container\")) {\n        return;\n      }\n      if (this.interactedChatMessage.emojiPickerOpen) {\n        return;\n      }\n      if (this.secondaryActionsIsExpanded) {\n        return;\n      }\n      this.chat.activeMessage = null;\n    }\n    static {\n      dt7948.n(this.prototype, \"onMouseLeave\", [_object.action]);\n    }\n    _debouncedOnHoverMessage() {\n      this._setActiveMessage();\n    }\n    static {\n      dt7948.n(this.prototype, \"_debouncedOnHoverMessage\", [_decorators.bind]);\n    }\n    _setActiveMessage() {\n      if (this.args.disableMouseEvents || this.args.interactive === false) {\n        return;\n      }\n      (0, _runloop.cancel)(this._onMouseEnterMessageDebouncedHandler);\n      if (!this.chat.userCanInteractWithChat) {\n        return;\n      }\n      if (!this.args.message.expanded) {\n        return;\n      }\n      this.chat.activeMessage = {\n        model: this.args.message,\n        hideUserInfo: this.hideUserInfo,\n        context: this.args.context\n      };\n    }\n    onLongPressStart(element, event) {\n      if (!this.args.message.expanded || !this.args.message.persisted) {\n        return;\n      }\n      if (event.target.tagName === \"IMG\") {\n        return;\n      }\n      // prevents message to show as active when starting scroll\n      // at this moment scroll has no momentum and the row can\n      // capture the touch event instead of a scroll\n      this._makeMessageActiveHandler = (0, _later.default)(() => {\n        this.isActive = true;\n      }, 125);\n    }\n    static {\n      dt7948.n(this.prototype, \"onLongPressStart\", [_object.action]);\n    }\n    onLongPressCancel() {\n      (0, _runloop.cancel)(this._makeMessageActiveHandler);\n      this.isActive = false;\n      // this a tricky bit of code which is needed to prevent the long press\n      // from triggering a click on the message actions panel when releasing finger press\n      // we can't prevent default as we need to keep the event passive for performance reasons\n      // this class will prevent any click from being triggered until removed\n      // this number has been chosen from testing but might need to be increased\n      this._disableMessageActionsHandler = (0, _later.default)(() => {\n        document.documentElement.classList.remove(\"disable-message-actions-touch\");\n      }, 200);\n    }\n    static {\n      dt7948.n(this.prototype, \"onLongPressCancel\", [_object.action]);\n    }\n    onLongPressEnd(element, event) {\n      if (this.args.interactive === false) {\n        return;\n      }\n      if (event.target.tagName === \"IMG\") {\n        return;\n      }\n      (0, _runloop.cancel)(this._makeMessageActiveHandler);\n      this.isActive = false;\n      if ((0, _zoomCheck.default)()) {\n        // if zoomed don't handle long press\n        return;\n      }\n      document.documentElement.classList.add(\"disable-message-actions-touch\");\n      document.activeElement.blur();\n      document.querySelector(\".chat-composer__input\")?.blur();\n      this._setActiveMessage();\n      this.modal.show(_chatMessageActionsMobile.default);\n    }\n    static {\n      dt7948.n(this.prototype, \"onLongPressEnd\", [_object.action]);\n    }\n    get hasActiveState() {\n      return this.isActive || this.chat.activeMessage?.model?.id === this.args.message.id;\n    }\n    get hasReply() {\n      return this.args.message.inReplyTo && !this.hideReplyToInfo;\n    }\n    get hideUserInfo() {\n      const message = this.args.message;\n      if (message.pinned) {\n        return false;\n      }\n      const previousMessage = message.previousMessage;\n      if (!previousMessage) {\n        return false;\n      }\n      // this is a micro optimization to avoid layout changes when we load more messages\n      if (message.firstOfResults) {\n        return false;\n      }\n      if (message.chatWebhookEvent) {\n        return false;\n      }\n      if (previousMessage.deletedAt) {\n        return false;\n      }\n      if (Math.abs(new Date(message.createdAt) - new Date(previousMessage.createdAt)) > 300000) {\n        return false;\n      }\n      if (message.inReplyTo) {\n        if (message.inReplyTo?.id === previousMessage.id) {\n          return message.user?.id === previousMessage.user?.id;\n        } else {\n          return false;\n        }\n      }\n      return message.user?.id === previousMessage.user?.id;\n    }\n    get hideReplyToInfo() {\n      return this.threadContext || this.args.message?.inReplyTo?.id === this.args.message?.previousMessage?.id || this.threadingEnabled;\n    }\n    get threadingEnabled() {\n      return (this.args.message?.channel?.threadingEnabled || this.args.message?.thread?.force) && !!this.args.message?.thread;\n    }\n    get showThreadIndicator() {\n      return !this.threadContext && this.threadingEnabled && this.args.message?.thread && this.args.message?.thread.preview.replyCount > 0;\n    }\n    get threadContext() {\n      return this.args.context === MESSAGE_CONTEXT_THREAD;\n    }\n    get shouldRenderStopMessageStreamingButton() {\n      return this.args.message.streaming && (this.currentUser.admin || this.args.message.inReplyTo?.user?.id === this.currentUser.id);\n    }\n    onEmojiPickerClose() {\n      this.interactedChatMessage.emojiPickerOpen = false;\n    }\n    static {\n      dt7948.n(this.prototype, \"onEmojiPickerClose\", [_object.action]);\n    }\n    onEmojiPickerShow() {\n      this.interactedChatMessage.emojiPickerOpen = true;\n    }\n    static {\n      dt7948.n(this.prototype, \"onEmojiPickerShow\", [_object.action]);\n    }\n    stopMessageStreaming(message) {\n      this.chatApi.stopMessageStreaming(message.channel.id, message.id);\n    }\n    static {\n      dt7948.n(this.prototype, \"stopMessageStreaming\", [_object.action]);\n    }\n    #teardownMentionedUsers() {\n      this.args.message.mentionedUsers.forEach(user => {\n        user.statusManager.stopTrackingStatus();\n        user.off(\"status-changed\", this, \"refreshStatusOnMentions\");\n      });\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{! template-lint-disable no-invalid-interactive }}\n      {{#if this.shouldRender}}\n        {{#if this.includeSeparator}}\n          <ChatMessageSeparator\n            @fetchMessagesByDate={{@fetchMessagesByDate}}\n            @message={{@message}}\n          />\n        {{/if}}\n      \n        <div\n          class={{concatClass\n            \"chat-message-container\"\n            (if this.pane.selectingMessages \"-selectable\")\n            (if @message.highlighted \"-highlighted\")\n            (if @message.streaming \"-streaming\")\n            (if (lt @message.user.id 0) \"is-bot\")\n            (if (eq @message.user.id this.currentUser.id) \"is-by-current-user\")\n            (if (eq @message.id this.currentUser.id) \"is-by-current-user\")\n            (if\n              (eq\n                @message.id\n                @message.channel.currentUserMembership.lastReadMessageId\n              )\n              \"-last-read\"\n            )\n            (if @message.staged \"-staged\" \"-persisted\")\n            (if @message.processed \"-processed\" \"-not-processed\")\n            (if this.hasActiveState \"-active\")\n            (if @message.bookmark \"-bookmarked\")\n            (if @message.deletedAt \"-deleted\")\n            (if @message.selected \"-selected\")\n            (if @message.error \"-errored\")\n            (if (eq @interactive false) \"-not-interactive\")\n            (if this.showThreadIndicator \"has-thread-indicator\")\n            (if this.hideUserInfo \"-user-info-hidden\")\n            (if this.hasReply \"has-reply\")\n          }}\n          data-id={{@message.id}}\n          data-thread-id={{@message.thread.id}}\n          {{willDestroy this.willDestroyMessage}}\n          {{on \"mouseenter\" this.onMouseEnter passive=true}}\n          {{on \"mouseleave\" this.onMouseLeave passive=true}}\n          {{on \"mousemove\" this.onMouseMove passive=true}}\n          {{this.toggleCheckIfPossible}}\n          {{ChatOnLongPress\n            this.onLongPressStart\n            this.onLongPressEnd\n            this.onLongPressCancel\n          }}\n          ...attributes\n        >\n          {{yield to=\"top\"}}\n      \n          {{#if this.show}}\n            {{#if this.pane.selectingMessages}}\n              <Input\n                @type=\"checkbox\"\n                class=\"chat-message-selector\"\n                @checked={{@message.selected}}\n                {{on \"click\" this.toggleChecked}}\n              />\n            {{/if}}\n      \n            {{#if this.deletedAndCollapsed}}\n              <div class=\"chat-message-text -deleted\">\n                <DButton\n                  @action={{this.expand}}\n                  @translatedLabel={{this.deletedMessageLabel}}\n                  class=\"btn-flat chat-message-expand\"\n                />\n              </div>\n            {{else if this.hiddenAndCollapsed}}\n              <div class=\"chat-message-text -hidden\">\n                <DButton\n                  @action={{this.expand}}\n                  @label=\"chat.hidden\"\n                  class=\"btn-flat chat-message-expand\"\n                />\n              </div>\n            {{else}}\n              <div class=\"chat-message\">\n                {{#unless this.hideReplyToInfo}}\n                  <ChatMessageInReplyToIndicator @message={{@message}} />\n                {{/unless}}\n      \n                {{#if this.hideUserInfo}}\n                  <ChatMessageLeftGutter\n                    @message={{@message}}\n                    @threadContext={{this.threadContext}}\n                  />\n                {{else}}\n                  <ChatMessageAvatar\n                    @message={{@message}}\n                    @interactive={{@interactive}}\n                  />\n                {{/if}}\n      \n                <div class=\"chat-message-content\">\n                  <ChatMessageInfo\n                    @message={{@message}}\n                    @show={{not this.hideUserInfo}}\n                    @context={{@context}}\n                    @threadContext={{this.threadContext}}\n                    @dateMode={{@dateMode}}\n                  />\n      \n                  <ChatMessageText\n                    @cooked={{@message.cooked}}\n                    @uploads={{@message.uploads}}\n                    @edited={{@message.edited}}\n                    @decorate={{this.decorateCookedMessage}}\n                  >\n                    {{#if @message.reactions.length}}\n                      <div class=\"chat-message-reaction-list\">\n                        {{#each @message.reactions as |reaction|}}\n                          <ChatMessageReaction\n                            @reaction={{reaction}}\n                            @onReaction={{this.messageInteractor.react}}\n                            @message={{@message}}\n                            @showTooltip={{true}}\n                            @interactive={{@interactive}}\n                          />\n                        {{/each}}\n      \n                        {{#if this.shouldRenderOpenEmojiPickerButton}}\n                          <EmojiPicker\n                            @context=\"chat\"\n                            @didSelectEmoji={{this.messageInteractor.selectReaction}}\n                            @btnClass=\"btn-flat react-btn chat-message-react-btn\"\n                            @onClose={{this.onEmojiPickerClose}}\n                            @onShow={{this.onEmojiPickerShow}}\n                            class=\"chat-message-reaction\"\n                          />\n                        {{/if}}\n                      </div>\n                    {{/if}}\n                  </ChatMessageText>\n      \n                  {{#if this.shouldRenderStopMessageStreamingButton}}\n                    <div class=\"stop-streaming-btn-container\">\n                      <DButton\n                        class=\"stop-streaming-btn\"\n                        @icon=\"circle-stop\"\n                        @label=\"cancel\"\n                        @action={{fn this.stopMessageStreaming @message}}\n                      />\n      \n                    </div>\n                  {{/if}}\n      \n                  <ChatMessageBlocks @message={{@message}} />\n      \n                  <ChatMessageError\n                    @message={{@message}}\n                    @onRetry={{@resendStagedMessage}}\n                  />\n                </div>\n      \n                {{#if this.showThreadIndicator}}\n                  <ChatMessageThreadIndicator @message={{@message}} />\n                {{/if}}\n              </div>\n            {{/if}}\n          {{/if}}\n        </div>\n      {{/if}}\n      */\n      {\n        \"id\": \"JOa4hJTc\",\n        \"block\": \"[[[41,[30,0,[\\\"shouldRender\\\"]],[[[41,[30,0,[\\\"includeSeparator\\\"]],[[[1,\\\"    \\\"],[8,[32,0],null,[[\\\"@fetchMessagesByDate\\\",\\\"@message\\\"],[[30,1],[30,2]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[11,0],[16,0,[28,[32,1],[\\\"chat-message-container\\\",[52,[30,0,[\\\"pane\\\",\\\"selectingMessages\\\"]],\\\"-selectable\\\"],[52,[30,2,[\\\"highlighted\\\"]],\\\"-highlighted\\\"],[52,[30,2,[\\\"streaming\\\"]],\\\"-streaming\\\"],[52,[28,[32,2],[[30,2,[\\\"user\\\",\\\"id\\\"]],0],null],\\\"is-bot\\\"],[52,[28,[32,3],[[30,2,[\\\"user\\\",\\\"id\\\"]],[30,0,[\\\"currentUser\\\",\\\"id\\\"]]],null],\\\"is-by-current-user\\\"],[52,[28,[32,3],[[30,2,[\\\"id\\\"]],[30,0,[\\\"currentUser\\\",\\\"id\\\"]]],null],\\\"is-by-current-user\\\"],[52,[28,[32,3],[[30,2,[\\\"id\\\"]],[30,2,[\\\"channel\\\",\\\"currentUserMembership\\\",\\\"lastReadMessageId\\\"]]],null],\\\"-last-read\\\"],[52,[30,2,[\\\"staged\\\"]],\\\"-staged\\\",\\\"-persisted\\\"],[52,[30,2,[\\\"processed\\\"]],\\\"-processed\\\",\\\"-not-processed\\\"],[52,[30,0,[\\\"hasActiveState\\\"]],\\\"-active\\\"],[52,[30,2,[\\\"bookmark\\\"]],\\\"-bookmarked\\\"],[52,[30,2,[\\\"deletedAt\\\"]],\\\"-deleted\\\"],[52,[30,2,[\\\"selected\\\"]],\\\"-selected\\\"],[52,[30,2,[\\\"error\\\"]],\\\"-errored\\\"],[52,[28,[32,3],[[30,3],false],null],\\\"-not-interactive\\\"],[52,[30,0,[\\\"showThreadIndicator\\\"]],\\\"has-thread-indicator\\\"],[52,[30,0,[\\\"hideUserInfo\\\"]],\\\"-user-info-hidden\\\"],[52,[30,0,[\\\"hasReply\\\"]],\\\"has-reply\\\"]],null]],[16,\\\"data-id\\\",[30,2,[\\\"id\\\"]]],[16,\\\"data-thread-id\\\",[30,2,[\\\"thread\\\",\\\"id\\\"]]],[17,4],[4,[32,4],[[30,0,[\\\"willDestroyMessage\\\"]]],null],[4,[32,5],[\\\"mouseenter\\\",[30,0,[\\\"onMouseEnter\\\"]]],[[\\\"passive\\\"],[true]]],[4,[32,5],[\\\"mouseleave\\\",[30,0,[\\\"onMouseLeave\\\"]]],[[\\\"passive\\\"],[true]]],[4,[32,5],[\\\"mousemove\\\",[30,0,[\\\"onMouseMove\\\"]]],[[\\\"passive\\\"],[true]]],[4,[30,0,[\\\"toggleCheckIfPossible\\\"]],null,null],[4,[32,6],[[30,0,[\\\"onLongPressStart\\\"]],[30,0,[\\\"onLongPressEnd\\\"]],[30,0,[\\\"onLongPressCancel\\\"]]],null],[12],[1,\\\"\\\\n    \\\"],[18,9,null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"show\\\"]],[[[41,[30,0,[\\\"pane\\\",\\\"selectingMessages\\\"]],[[[1,\\\"        \\\"],[8,[32,7],[[24,0,\\\"chat-message-selector\\\"],[4,[32,5],[\\\"click\\\",[30,0,[\\\"toggleChecked\\\"]]],null]],[[\\\"@type\\\",\\\"@checked\\\"],[\\\"checkbox\\\",[30,2,[\\\"selected\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"deletedAndCollapsed\\\"]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"chat-message-text -deleted\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[32,8],[[24,0,\\\"btn-flat chat-message-expand\\\"]],[[\\\"@action\\\",\\\"@translatedLabel\\\"],[[30,0,[\\\"expand\\\"]],[30,0,[\\\"deletedMessageLabel\\\"]]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"hiddenAndCollapsed\\\"]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"chat-message-text -hidden\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[32,8],[[24,0,\\\"btn-flat chat-message-expand\\\"]],[[\\\"@action\\\",\\\"@label\\\"],[[30,0,[\\\"expand\\\"]],\\\"chat.hidden\\\"]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"chat-message\\\"],[12],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"hideReplyToInfo\\\"]]],[[[1,\\\"            \\\"],[8,[32,9],null,[[\\\"@message\\\"],[[30,2]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"hideUserInfo\\\"]],[[[1,\\\"            \\\"],[8,[32,10],null,[[\\\"@message\\\",\\\"@threadContext\\\"],[[30,2],[30,0,[\\\"threadContext\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            \\\"],[8,[32,11],null,[[\\\"@message\\\",\\\"@interactive\\\"],[[30,2],[30,3]]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"chat-message-content\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[32,12],null,[[\\\"@message\\\",\\\"@show\\\",\\\"@context\\\",\\\"@threadContext\\\",\\\"@dateMode\\\"],[[30,2],[28,[32,13],[[30,0,[\\\"hideUserInfo\\\"]]],null],[30,5],[30,0,[\\\"threadContext\\\"]],[30,6]]],null],[1,\\\"\\\\n\\\\n            \\\"],[8,[32,14],null,[[\\\"@cooked\\\",\\\"@uploads\\\",\\\"@edited\\\",\\\"@decorate\\\"],[[30,2,[\\\"cooked\\\"]],[30,2,[\\\"uploads\\\"]],[30,2,[\\\"edited\\\"]],[30,0,[\\\"decorateCookedMessage\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"reactions\\\",\\\"length\\\"]],[[[1,\\\"                \\\"],[10,0],[14,0,\\\"chat-message-reaction-list\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,4],[[28,[31,4],[[30,2,[\\\"reactions\\\"]]],null]],null],null,[[[1,\\\"                    \\\"],[8,[32,15],null,[[\\\"@reaction\\\",\\\"@onReaction\\\",\\\"@message\\\",\\\"@showTooltip\\\",\\\"@interactive\\\"],[[30,7],[30,0,[\\\"messageInteractor\\\",\\\"react\\\"]],[30,2],true,[30,3]]],null],[1,\\\"\\\\n\\\"]],[7]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"shouldRenderOpenEmojiPickerButton\\\"]],[[[1,\\\"                    \\\"],[8,[32,16],[[24,0,\\\"chat-message-reaction\\\"]],[[\\\"@context\\\",\\\"@didSelectEmoji\\\",\\\"@btnClass\\\",\\\"@onClose\\\",\\\"@onShow\\\"],[\\\"chat\\\",[30,0,[\\\"messageInteractor\\\",\\\"selectReaction\\\"]],\\\"btn-flat react-btn chat-message-react-btn\\\",[30,0,[\\\"onEmojiPickerClose\\\"]],[30,0,[\\\"onEmojiPickerShow\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"shouldRenderStopMessageStreamingButton\\\"]],[[[1,\\\"              \\\"],[10,0],[14,0,\\\"stop-streaming-btn-container\\\"],[12],[1,\\\"\\\\n                \\\"],[8,[32,8],[[24,0,\\\"stop-streaming-btn\\\"]],[[\\\"@icon\\\",\\\"@label\\\",\\\"@action\\\"],[\\\"circle-stop\\\",\\\"cancel\\\",[28,[32,17],[[30,0,[\\\"stopMessageStreaming\\\"]],[30,2]],null]]],null],[1,\\\"\\\\n\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n            \\\"],[8,[32,18],null,[[\\\"@message\\\"],[[30,2]]],null],[1,\\\"\\\\n\\\\n            \\\"],[8,[32,19],null,[[\\\"@message\\\",\\\"@onRetry\\\"],[[30,2],[30,8]]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"showThreadIndicator\\\"]],[[[1,\\\"            \\\"],[8,[32,20],null,[[\\\"@message\\\"],[[30,2]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]],[]]]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@fetchMessagesByDate\\\",\\\"@message\\\",\\\"@interactive\\\",\\\"&attrs\\\",\\\"@context\\\",\\\"@dateMode\\\",\\\"reaction\\\",\\\"@resendStagedMessage\\\",\\\"&top\\\"],[\\\"if\\\",\\\"yield\\\",\\\"unless\\\",\\\"each\\\",\\\"-track-array\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-message.js\",\n        \"scope\": () => [_chatMessageSeparator.default, _concatClass.default, _truthHelpers.lt, _truthHelpers.eq, _willDestroy.default, _modifier.on, _onLongPress.default, _component2.Input, _dButton.default, _chatMessageInReplyToIndicator.default, _leftGutter.default, _avatar.default, _info.default, _truthHelpers.not, _chatMessageText.default, _chatMessageReaction.default, _emojiPicker.default, _helper.fn, _blocks.default, _error.default, _chatMessageThreadIndicator.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatMessage;\n});","define(\"discourse/plugins/chat/discourse/components/chat-message/blocks/actions\", [\"exports\", \"discourse/plugins/chat/discourse/components/chat-message/blocks/element\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _element, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const Actions = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"block__actions-wrapper\">\n    <div class=\"block__actions\">\n      {{#each @definition.elements as |elementDefinition|}}\n        <div class=\"block__action-wrapper\">\n          <div class=\"block__action\">\n            <Element\n              @createInteraction={{@createInteraction}}\n              @definition={{elementDefinition}}\n            />\n          </div>\n        </div>\n      {{/each}}\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"DafYsJUc\",\n    \"block\": \"[[[10,0],[14,0,\\\"block__actions-wrapper\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"block__actions\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,1],[[28,[31,1],[[30,1,[\\\"elements\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[10,0],[14,0,\\\"block__action-wrapper\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"block__action\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[32,0],null,[[\\\"@createInteraction\\\",\\\"@definition\\\"],[[30,3],[30,2]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@definition\\\",\\\"elementDefinition\\\",\\\"@createInteraction\\\"],[\\\"each\\\",\\\"-track-array\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-message/blocks/actions.js\",\n    \"scope\": () => [_element.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"actions:Actions\"));\n  var _default = _exports.default = Actions;\n});","define(\"discourse/plugins/chat/discourse/components/chat-message/blocks/block\", [\"exports\", \"@glimmer/component\", \"discourse/plugins/chat/discourse/components/chat-message/blocks/actions\", \"discourse/plugins/chat/discourse/components/chat-message/blocks/informative\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _actions, _informative, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class Block extends _component.default {\n    get blockForType() {\n      switch (this.args.definition.type) {\n        case \"actions\":\n          return _actions.default;\n        case \"informative\":\n          return _informative.default;\n        default:\n          throw new Error(`Unknown block type: ${this.args.definition.type}`);\n      }\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"chat-message__block-wrapper\">\n        <div class=\"chat-message__block\">\n          <this.blockForType\n            @createInteraction={{@createInteraction}}\n            @definition={{@definition}}\n          />\n        </div>\n      </div>\n      */\n      {\n        \"id\": \"stMSbjgC\",\n        \"block\": \"[[[10,0],[14,0,\\\"chat-message__block-wrapper\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-message__block\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[30,0,[\\\"blockForType\\\"]],null,[[\\\"@createInteraction\\\",\\\"@definition\\\"],[[30,1],[30,2]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@createInteraction\\\",\\\"@definition\\\"],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-message/blocks/block.js\",\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = Block;\n});","define(\"discourse/plugins/chat/discourse/components/chat-message/blocks/element\", [\"exports\", \"@glimmer/component\", \"discourse/plugins/chat/discourse/components/chat-message/blocks/elements/button\", \"discourse/plugins/chat/discourse/components/chat-message/blocks/elements/category\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _button, _category, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class Element extends _component.default {\n    get elementForType() {\n      switch (this.args.definition.type) {\n        case \"button\":\n          return _button.default;\n        case \"category\":\n          return _category.default;\n        default:\n          throw new Error(`Unknown element type: ${this.args.definition.type}`);\n      }\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <this.elementForType\n        @createInteraction={{@createInteraction}}\n        @definition={{@definition}}\n      />\n      */\n      {\n        \"id\": \"9drhZVBy\",\n        \"block\": \"[[[8,[30,0,[\\\"elementForType\\\"]],null,[[\\\"@createInteraction\\\",\\\"@definition\\\"],[[30,1],[30,2]]],null]],[\\\"@createInteraction\\\",\\\"@definition\\\"],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-message/blocks/element.js\",\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = Element;\n});","define(\"discourse/plugins/chat/discourse/components/chat-message/blocks/elements/button\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/helper\", \"@ember/object\", \"discourse/components/d-button\", \"discourse/helpers/concat-class\", \"discourse/helpers/replace-emoji\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _helper, _object, _dButton, _concatClass, _replaceEmoji, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class Button extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"interacting\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #interacting = (dt7948.i(this, \"interacting\"), void 0);\n    async createInteraction() {\n      this.interacting = true;\n      try {\n        await this.args.createInteraction(this.args.definition.action_id);\n      } finally {\n        this.interacting = false;\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"createInteraction\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <DButton\n        @isLoading={{this.interacting}}\n        @translatedLabel={{replaceEmoji @definition.text.text}}\n        @action={{this.createInteraction}}\n        id={{@definition.action_id}}\n        class={{concatClass\n          \"block__button\"\n          (if @definition.style (concat \"btn-\" @definition.style))\n        }}\n      />\n      */\n      {\n        \"id\": \"jClkhhsI\",\n        \"block\": \"[[[8,[32,0],[[16,1,[30,1,[\\\"action_id\\\"]]],[16,0,[28,[32,1],[\\\"block__button\\\",[52,[30,1,[\\\"style\\\"]],[28,[32,2],[\\\"btn-\\\",[30,1,[\\\"style\\\"]]],null]]],null]]],[[\\\"@isLoading\\\",\\\"@translatedLabel\\\",\\\"@action\\\"],[[30,0,[\\\"interacting\\\"]],[28,[32,3],[[30,1,[\\\"text\\\",\\\"text\\\"]]],null],[30,0,[\\\"createInteraction\\\"]]]],null]],[\\\"@definition\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-message/blocks/elements/button.js\",\n        \"scope\": () => [_dButton.default, _concatClass.default, _helper.concat, _replaceEmoji.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = Button;\n});","define(\"discourse/plugins/chat/discourse/components/chat-message/blocks/elements/category\", [\"exports\", \"@glimmer/component\", \"@ember/template\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _template, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class CategoryElement extends _component.default {\n    get boxStyle() {\n      let style = `--category-badge-color: #${this.args.definition.color}`;\n      if (this.args.definition.parent_color) {\n        style += `; --parent-category-badge-color: #${this.args.definition.parent_color}`;\n      }\n      return (0, _template.trustHTML)(style);\n    }\n    get parentBadgeStyle() {\n      return this.args.definition.parent_color ? (0, _template.trustHTML)(`--category-badge-color: #${this.args.definition.parent_color}`) : null;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"block__category\" style={{this.boxStyle}}>\n        <div class=\"block__category-inner\">\n          <div class=\"block__category-heading\">\n            {{#if @definition.url}}\n              <a href={{@definition.url}} class=\"block__category-link\">\n                <span class=\"badge-category --style-square\">\n                  <span class=\"badge-category__name\">{{@definition.title}}</span>\n                </span>\n              </a>\n            {{else}}\n              <span class=\"badge-category --style-square\">\n                <span class=\"badge-category__name\">{{@definition.title}}</span>\n              </span>\n            {{/if}}\n          </div>\n          {{#if @definition.parent_name}}\n            <div class=\"block__category-parent\">\n              <span\n                class=\"badge-category --style-square\"\n                style={{this.parentBadgeStyle}}\n              >\n                <span\n                  class=\"badge-category__name\"\n                >{{@definition.parent_name}}</span>\n              </span>\n            </div>\n          {{/if}}\n          {{#if @definition.description}}\n            <div class=\"block__category-description\">\n              {{@definition.description}}\n            </div>\n          {{/if}}\n        </div>\n      </div>\n      */\n      {\n        \"id\": \"7pFet2lO\",\n        \"block\": \"[[[10,0],[14,0,\\\"block__category\\\"],[15,5,[30,0,[\\\"boxStyle\\\"]]],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"block__category-inner\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"block__category-heading\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"url\\\"]],[[[1,\\\"        \\\"],[10,3],[15,6,[30,1,[\\\"url\\\"]]],[14,0,\\\"block__category-link\\\"],[12],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"badge-category --style-square\\\"],[12],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"badge-category__name\\\"],[12],[1,[30,1,[\\\"title\\\"]]],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,1],[14,0,\\\"badge-category --style-square\\\"],[12],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"badge-category__name\\\"],[12],[1,[30,1,[\\\"title\\\"]]],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"parent_name\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"block__category-parent\\\"],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"badge-category --style-square\\\"],[15,5,[30,0,[\\\"parentBadgeStyle\\\"]]],[12],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"badge-category__name\\\"],[12],[1,[30,1,[\\\"parent_name\\\"]]],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"description\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"block__category-description\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[30,1,[\\\"description\\\"]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@definition\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-message/blocks/elements/category.js\",\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = CategoryElement;\n});","define(\"discourse/plugins/chat/discourse/components/chat-message/blocks/index\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/service\", \"discourse/lib/ajax-error\", \"discourse/plugins/chat/discourse/components/chat-message/blocks/block\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _ajaxError, _block, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class Blocks extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"appEvents\", [_service.service]);\n    }\n    #appEvents = (dt7948.i(this, \"appEvents\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    async createInteraction(id) {\n      try {\n        const result = await this.chatApi.createInteraction(this.args.message.channel.id, this.args.message.id, {\n          action_id: id\n        });\n        this.appEvents.trigger(\"chat:message_interaction\", result.interaction);\n      } catch (e) {\n        (0, _ajaxError.popupAjaxError)(e);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"createInteraction\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if @message.blocks}}\n        <div class=\"chat-message__blocks-wrapper\">\n          <div class=\"chat-message__blocks\">\n            {{#each @message.blocks as |blockDefinition|}}\n              <Block\n                @createInteraction={{this.createInteraction}}\n                @definition={{blockDefinition}}\n              />\n            {{/each}}\n          </div>\n        </div>\n      {{/if}}\n      */\n      {\n        \"id\": \"uPZfXVTW\",\n        \"block\": \"[[[41,[30,1,[\\\"blocks\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"chat-message__blocks-wrapper\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-message__blocks\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,2],[[28,[31,2],[[30,1,[\\\"blocks\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[8,[32,0],null,[[\\\"@createInteraction\\\",\\\"@definition\\\"],[[30,0,[\\\"createInteraction\\\"]],[30,2]]],null],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@message\\\",\\\"blockDefinition\\\"],[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-message/blocks/index.js\",\n        \"scope\": () => [_block.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = Blocks;\n});","define(\"discourse/plugins/chat/discourse/components/chat-message/blocks/informative\", [\"exports\", \"discourse/plugins/chat/discourse/components/chat-message/blocks/element\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _element, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const Informative = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"block__informative-wrapper\">\n    <div class=\"block__informative\">\n      {{#each @definition.elements as |elementDefinition|}}\n        <div class=\"block__informative-item\">\n          <Element @definition={{elementDefinition}} />\n        </div>\n      {{/each}}\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"mu5x92qo\",\n    \"block\": \"[[[10,0],[14,0,\\\"block__informative-wrapper\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"block__informative\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,1],[[28,[31,1],[[30,1,[\\\"elements\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[10,0],[14,0,\\\"block__informative-item\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[32,0],null,[[\\\"@definition\\\"],[[30,2]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@definition\\\",\\\"elementDefinition\\\"],[\\\"each\\\",\\\"-track-array\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-message/blocks/informative.js\",\n    \"scope\": () => [_element.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"informative:Informative\"));\n  var _default = _exports.default = Informative;\n});","define(\"discourse/plugins/chat/discourse/components/chat-messages-container\", [\"exports\", \"@ember/helper\", \"discourse/modifiers/on-resize\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _helper, _onResize, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatMessagesContainer = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div\n    class=\"chat-messages-container\"\n    {{onResize @didResizePane (hash delay=100 immediate=true)}}\n  >\n    {{yield}}\n  </div>\n  */\n  {\n    \"id\": \"33wFKCCL\",\n    \"block\": \"[[[11,0],[24,0,\\\"chat-messages-container\\\"],[4,[32,0],[[30,1],[28,[32,1],null,[[\\\"delay\\\",\\\"immediate\\\"],[100,true]]]],null],[12],[1,\\\"\\\\n  \\\"],[18,2,null],[1,\\\"\\\\n\\\"],[13]],[\\\"@didResizePane\\\",\\\"&default\\\"],[\\\"yield\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-messages-container.js\",\n    \"scope\": () => [_onResize.default, _helper.hash],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"chat-messages-container:ChatMessagesContainer\"));\n  var _default = _exports.default = ChatMessagesContainer;\n});","define(\"discourse/plugins/chat/discourse/components/chat-messages-scroller\", [\"exports\", \"@ember/helper\", \"@ember/render-modifiers/modifiers/did-insert\", \"discourse/plugins/chat/discourse/modifiers/chat/scrollable-list\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _helper, _didInsert, _scrollableList, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatMessagesScroller = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div\n    class=\"chat-messages-scroller\"\n    {{didInsert @onRegisterScroller}}\n    {{this.setupLock}}\n    {{ChatScrollableList\n      (hash onScroll=@onScroll onScrollEnd=@onScrollEnd reverse=true)\n    }}\n  >\n    {{yield}}\n  </div>\n  */\n  {\n    \"id\": \"59QDgDx9\",\n    \"block\": \"[[[11,0],[24,0,\\\"chat-messages-scroller\\\"],[4,[32,0],[[30,1]],null],[4,[32,1,[\\\"setupLock\\\"]],null,null],[4,[32,2],[[28,[32,3],null,[[\\\"onScroll\\\",\\\"onScrollEnd\\\",\\\"reverse\\\"],[[30,2],[30,3],true]]]],null],[12],[1,\\\"\\\\n  \\\"],[18,4,null],[1,\\\"\\\\n\\\"],[13]],[\\\"@onRegisterScroller\\\",\\\"@onScroll\\\",\\\"@onScrollEnd\\\",\\\"&default\\\"],[\\\"yield\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-messages-scroller.js\",\n    \"scope\": () => [_didInsert.default, void 0, _scrollableList.default, _helper.hash],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"chat-messages-scroller:ChatMessagesScroller\"));\n  var _default = _exports.default = ChatMessagesScroller;\n});","define(\"discourse/plugins/chat/discourse/components/chat-notice\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/render-modifiers/modifiers/will-destroy\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/plugins/chat/discourse/components/chat/notices/mention_without_membership\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _willDestroy, _service, _dButton, _mention_without_membership, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const COMPONENT_DICT = {\n    mention_without_membership: _mention_without_membership.default\n  };\n  class ChatNotices extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"noticesManager\", [(0, _service.service)(\"chat-channel-notices-manager\")]);\n    }\n    #noticesManager = (dt7948.i(this, \"noticesManager\"), void 0);\n    clearNotice() {\n      this.noticesManager.clearNotice(this.args.notice);\n    }\n    static {\n      dt7948.n(this.prototype, \"clearNotice\", [_object.action]);\n    }\n    get component() {\n      return COMPONENT_DICT[this.args.notice.type];\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"chat-notices__notice\" {{willDestroy this.clearNotice}}>\n        {{#if @notice.textContent}}\n          <p class=\"chat-notices__notice__content\">\n            {{@notice.textContent}}\n          </p>\n        {{else}}\n          <this.component\n            @channel={{@channel}}\n            @notice={{@notice}}\n            @clearNotice={{this.clearNotice}}\n          />\n        {{/if}}\n      \n        <DButton\n          @icon=\"xmark\"\n          @action={{this.clearNotice}}\n          class=\"btn-transparent chat-notices__notice__clear\"\n        />\n      </div>\n      */\n      {\n        \"id\": \"tv8UwB0L\",\n        \"block\": \"[[[11,0],[24,0,\\\"chat-notices__notice\\\"],[4,[32,0],[[30,0,[\\\"clearNotice\\\"]]],null],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"textContent\\\"]],[[[1,\\\"    \\\"],[10,2],[14,0,\\\"chat-notices__notice__content\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[30,1,[\\\"textContent\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[8,[30,0,[\\\"component\\\"]],null,[[\\\"@channel\\\",\\\"@notice\\\",\\\"@clearNotice\\\"],[[30,2],[30,1],[30,0,[\\\"clearNotice\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n  \\\"],[8,[32,1],[[24,0,\\\"btn-transparent chat-notices__notice__clear\\\"]],[[\\\"@icon\\\",\\\"@action\\\"],[\\\"xmark\\\",[30,0,[\\\"clearNotice\\\"]]]],null],[1,\\\"\\\\n\\\"],[13]],[\\\"@notice\\\",\\\"@channel\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-notice.js\",\n        \"scope\": () => [_willDestroy.default, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatNotices;\n});","define(\"discourse/plugins/chat/discourse/components/chat-notices\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"discourse/plugins/chat/discourse/components/chat-notice\", \"discourse/plugins/chat/discourse/components/chat-retention-reminder\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _chatNotice, _chatRetentionReminder, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatNotices extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"noticesManager\", [(0, _service.service)(\"chat-channel-notices-manager\")]);\n    }\n    #noticesManager = (dt7948.i(this, \"noticesManager\"), void 0);\n    get noticesForChannel() {\n      return this.noticesManager.notices.filter(notice => notice.channelId === this.args.channel.id);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"chat-notices\">\n        <ChatRetentionReminder @channel={{@channel}} />\n      \n        {{#each this.noticesForChannel as |notice|}}\n          <ChatNotice @notice={{notice}} @channel={{@channel}} />\n        {{/each}}\n      </div>\n      */\n      {\n        \"id\": \"23sx1uwo\",\n        \"block\": \"[[[10,0],[14,0,\\\"chat-notices\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[32,0],null,[[\\\"@channel\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\\n\\\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\\\"noticesForChannel\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[8,[32,1],null,[[\\\"@notice\\\",\\\"@channel\\\"],[[30,2],[30,1]]],null],[1,\\\"\\\\n\\\"]],[2]],null],[13]],[\\\"@channel\\\",\\\"notice\\\"],[\\\"each\\\",\\\"-track-array\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-notices.js\",\n        \"scope\": () => [_chatRetentionReminder.default, _chatNotice.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatNotices;\n});","define(\"discourse/plugins/chat/discourse/components/chat-pinned-messages-list\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/routing\", \"@ember/service\", \"ember-modifier\", \"discourse/helpers/d-icon\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat-message\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _routing, _service, _emberModifier, _dIcon, _discourseI18n, _chatMessage, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatPinnedMessagesList extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"messageBus\", [_service.service]);\n    }\n    #messageBus = (dt7948.i(this, \"messageBus\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"pinnedMessages\", [_tracking.tracked], function () {\n        return this.args.pinnedMessages || [];\n      });\n    }\n    #pinnedMessages = (dt7948.i(this, \"pinnedMessages\"), void 0);\n    subscribe = (0, _emberModifier.modifier)(() => {\n      const channel = this.args.channel;\n      this.messageBus.subscribe(`/chat/${channel.id}`, this.onMessage, channel.channelMessageBusLastId);\n      this.#markPinsAsRead(channel);\n      return () => {\n        this.messageBus.unsubscribe(`/chat/${channel.id}`, this.onMessage);\n        this.#markPinsAsRead(channel);\n      };\n    });\n    onMessage = busData => {\n      switch (busData.type) {\n        case \"pin\":\n          this.handlePinMessage(busData);\n          break;\n        case \"unpin\":\n          this.handleUnpinMessage(busData);\n          break;\n      }\n    };\n    isUnseen = pin => {\n      if (pin.pinned_by?.id === this.currentUser?.id) {\n        return false;\n      }\n      if (!this.#lastViewedPinsAtSnapshot) {\n        return true;\n      }\n      const pinnedAt = new Date(pin.pinned_at);\n      const lastViewed = new Date(this.#lastViewedPinsAtSnapshot);\n      return pinnedAt > lastViewed;\n    };\n    decorateMessage = pin => {\n      pin.message.isUnseen = this.isUnseen(pin);\n      return pin.message;\n    };\n    pinnedByText = pin => {\n      if (pin.pinned_by?.id === this.currentUser?.id) {\n        return (0, _discourseI18n.i18n)(\"chat.pinned_messages.pinned_by_you\");\n      }\n      return (0, _discourseI18n.i18n)(\"chat.pinned_messages.pinned_by_user\", {\n        username: pin.pinned_by?.username\n      });\n    };\n    routeModels = pin => {\n      return [...this.args.channel.routeModels, pin.message.id];\n    };\n    #lastViewedPinsAtSnapshot = this.args.channel.currentUserMembership?.lastViewedPinsAt;\n    handlePinMessage(data) {\n      const existingPin = this.pinnedMessages.find(pin => pin.message.id === data.chat_message_id);\n      if (existingPin) {\n        return;\n      }\n      this.chatApi.pinnedMessages(this.args.channel).then(pinnedMessages => {\n        this.pinnedMessages = pinnedMessages;\n        // If current user pinned this message, update timestamp so it doesn't show as unseen\n        if (this.args.channel.currentUserMembership && data.pinned_by_id === this.currentUser.id) {\n          this.args.channel.currentUserMembership.lastViewedPinsAt = new Date();\n        }\n      });\n    }\n    #markPinsAsRead(channel) {\n      if (channel.currentUserMembership) {\n        channel.currentUserMembership.lastViewedPinsAt = new Date();\n        channel.currentUserMembership.hasUnseenPins = false;\n        this.chatApi.markPinsAsRead(channel.id).catch(() => {});\n      }\n    }\n    handleUnpinMessage(data) {\n      this.pinnedMessages = this.pinnedMessages.filter(pin => pin.message.id !== data.chat_message_id);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div\n        class=\"chat-pinned-messages-list chat-messages-scroller\"\n        {{this.subscribe}}\n      >\n        <div class=\"chat-pinned-messages-list__items\">\n          {{#each this.pinnedMessages as |pin|}}\n            <LinkTo\n              @route=\"chat.channel.near-message\"\n              @models={{this.routeModels pin}}\n              class=\"chat-pinned-message\"\n            >\n              <ChatMessage\n                @message={{this.decorateMessage pin}}\n                @context=\"pinned\"\n                @includeSeparator={{false}}\n                @interactive={{false}}\n              >\n                <:top>\n                  <div class=\"chat-pinned-message__pinned-by\">\n                    {{#if (this.isUnseen pin)}}\n                      {{icon\n                        \"thumbtack\"\n                        class=\"chat-pinned-message__pinned-by-icon\"\n                      }}\n                    {{/if}}\n                    <span>{{this.pinnedByText pin}}</span>\n                  </div>\n                </:top>\n              </ChatMessage>\n            </LinkTo>\n          {{else}}\n            <div class=\"chat-pinned-messages-list__empty\">\n              {{i18n \"chat.no_pinned_messages\"}}\n            </div>\n          {{/each}}\n        </div>\n      </div>\n      */\n      {\n        \"id\": \"p3O9j+Db\",\n        \"block\": \"[[[11,0],[24,0,\\\"chat-pinned-messages-list chat-messages-scroller\\\"],[4,[30,0,[\\\"subscribe\\\"]],null,null],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-pinned-messages-list__items\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\\\"pinnedMessages\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[8,[32,0],[[24,0,\\\"chat-pinned-message\\\"]],[[\\\"@route\\\",\\\"@models\\\"],[\\\"chat.channel.near-message\\\",[28,[30,0,[\\\"routeModels\\\"]],[[30,1]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[32,1],null,[[\\\"@message\\\",\\\"@context\\\",\\\"@includeSeparator\\\",\\\"@interactive\\\"],[[28,[30,0,[\\\"decorateMessage\\\"]],[[30,1]],null],\\\"pinned\\\",false,false]],[[\\\"top\\\"],[[[[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"chat-pinned-message__pinned-by\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[30,0,[\\\"isUnseen\\\"]],[[30,1]],null],[[[1,\\\"                \\\"],[1,[28,[32,2],[\\\"thumbtack\\\"],[[\\\"class\\\"],[\\\"chat-pinned-message__pinned-by-icon\\\"]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[10,1],[12],[1,[28,[30,0,[\\\"pinnedByText\\\"]],[[30,1]],null]],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[1]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"chat-pinned-messages-list__empty\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,3],[\\\"chat.no_pinned_messages\\\"],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"pin\\\"],[\\\"each\\\",\\\"-track-array\\\",\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-pinned-messages-list.js\",\n        \"scope\": () => [_routing.LinkTo, _chatMessage.default, _dIcon.default, _discourseI18n.i18n],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatPinnedMessagesList;\n});","define(\"discourse/plugins/chat/discourse/components/chat-replying-indicator\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/render-modifiers/modifiers/did-insert\", \"@ember/render-modifiers/modifiers/did-update\", \"@ember/render-modifiers/modifiers/will-destroy\", \"@ember/service\", \"@ember/utils\", \"discourse/helpers/concat-class\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _object, _didInsert, _didUpdate, _willDestroy, _service, _utils, _concatClass, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatReplyingIndicator extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"presence\", [_service.service]);\n    }\n    #presence = (dt7948.i(this, \"presence\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"presenceChannel\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #presenceChannel = (dt7948.i(this, \"presenceChannel\"), void 0);\n    async updateSubscription() {\n      await this.unsubscribe();\n      await this.subscribe();\n    }\n    static {\n      dt7948.n(this.prototype, \"updateSubscription\", [_object.action]);\n    }\n    async subscribe() {\n      this.presenceChannel = this.presence.getChannel(this.args.presenceChannelName);\n      await this.presenceChannel.subscribe();\n    }\n    static {\n      dt7948.n(this.prototype, \"subscribe\", [_object.action]);\n    }\n    async unsubscribe() {\n      if (this.presenceChannel?.subscribed) {\n        await this.presenceChannel.unsubscribe();\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"unsubscribe\", [_object.action]);\n    }\n    get users() {\n      return this.presenceChannel?.get(\"users\")?.filter(u => u.id !== this.currentUser.id) || [];\n    }\n    get usernames() {\n      return this.users.map(item => item.username);\n    }\n    get text() {\n      if (this.usernames.length === 1) {\n        return (0, _discourseI18n.i18n)(\"chat.replying_indicator.single_user\", {\n          username: this.usernames[0]\n        });\n      }\n      if (this.usernames.length < 4) {\n        const lastUsername = this.usernames[this.usernames.length - 1];\n        const commaSeparatedUsernames = this.usernames.slice(0, this.usernames.length - 1).join((0, _discourseI18n.i18n)(\"word_connector.comma\"));\n        return (0, _discourseI18n.i18n)(\"chat.replying_indicator.multiple_users\", {\n          commaSeparatedUsernames,\n          lastUsername\n        });\n      }\n      const commaSeparatedUsernames = this.usernames.slice(0, 2).join((0, _discourseI18n.i18n)(\"word_connector.comma\"));\n      return (0, _discourseI18n.i18n)(\"chat.replying_indicator.many_users\", {\n        commaSeparatedUsernames,\n        count: this.usernames.length - 2\n      });\n    }\n    get shouldRender() {\n      return (0, _utils.isPresent)(this.usernames);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if @presenceChannelName}}\n        <div\n          class={{concatClass\n            \"chat-replying-indicator\"\n            (if this.presenceChannel.subscribed \"is-subscribed\")\n          }}\n          {{didInsert this.subscribe}}\n          {{didUpdate this.updateSubscription @presenceChannelName}}\n          {{willDestroy this.unsubscribe}}\n        >\n          {{#if this.shouldRender}}\n            <span class=\"chat-replying-indicator__text\">{{this.text}}</span>\n            <span class=\"chat-replying-indicator__wave\">\n              <span class=\"chat-replying-indicator__dot\">.</span>\n              <span class=\"chat-replying-indicator__dot\">.</span>\n              <span class=\"chat-replying-indicator__dot\">.</span>\n            </span>\n          {{/if}}\n        </div>\n      {{/if}}\n      */\n      {\n        \"id\": \"UQYS6XRu\",\n        \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[11,0],[16,0,[28,[32,0],[\\\"chat-replying-indicator\\\",[52,[30,0,[\\\"presenceChannel\\\",\\\"subscribed\\\"]],\\\"is-subscribed\\\"]],null]],[4,[32,1],[[30,0,[\\\"subscribe\\\"]]],null],[4,[32,2],[[30,0,[\\\"updateSubscription\\\"]],[30,1]],null],[4,[32,3],[[30,0,[\\\"unsubscribe\\\"]]],null],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"shouldRender\\\"]],[[[1,\\\"      \\\"],[10,1],[14,0,\\\"chat-replying-indicator__text\\\"],[12],[1,[30,0,[\\\"text\\\"]]],[13],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"chat-replying-indicator__wave\\\"],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"chat-replying-indicator__dot\\\"],[12],[1,\\\".\\\"],[13],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"chat-replying-indicator__dot\\\"],[12],[1,\\\".\\\"],[13],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"chat-replying-indicator__dot\\\"],[12],[1,\\\".\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@presenceChannelName\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-replying-indicator.js\",\n        \"scope\": () => [_concatClass.default, _didInsert.default, _didUpdate.default, _willDestroy.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatReplyingIndicator;\n});","define(\"discourse/plugins/chat/discourse/components/chat-retention-reminder-text\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"@ember/template\", \"discourse/lib/get-url\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _template, _getUrl, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatRetentionReminderText extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    get type() {\n      return this.args.type ?? \"long\";\n    }\n    get #chatSettingsLink() {\n      const label = (0, _discourseI18n.i18n)(\"chat.retention_reminders.chat_settings\");\n      if (this.currentUser?.admin) {\n        const url = (0, _getUrl.default)(\"/admin/site_settings/category/chat\");\n        return `<a href=\"${url}\">${label}</a>`;\n      }\n      return label;\n    }\n    get text() {\n      const opts = {\n        chatSettingsLink: this.#chatSettingsLink\n      };\n      const count = this.#countForChannelType;\n      if (count > 0) {\n        return (0, _template.trustHTML)((0, _discourseI18n.i18n)(`chat.retention_reminders.${this.type}`, {\n          ...opts,\n          count\n        }));\n      } else {\n        return (0, _template.trustHTML)((0, _discourseI18n.i18n)(`chat.retention_reminders.indefinitely_${this.type}`, opts));\n      }\n    }\n    get #countForChannelType() {\n      return this.args.channel.isDirectMessageChannel ? this.siteSettings.chat_dm_retention_days : this.siteSettings.chat_channel_retention_days;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <span class=\"chat-retention-reminder-text\">\n        {{this.text}}\n      </span>\n      */\n      {\n        \"id\": \"Vw4RMhxZ\",\n        \"block\": \"[[[10,1],[14,0,\\\"chat-retention-reminder-text\\\"],[12],[1,\\\"\\\\n  \\\"],[1,[30,0,[\\\"text\\\"]]],[1,\\\"\\\\n\\\"],[13]],[],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-retention-reminder-text.js\",\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatRetentionReminderText;\n});","define(\"discourse/plugins/chat/discourse/components/chat-retention-reminder\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/lib/ajax\", \"discourse/lib/ajax-error\", \"discourse/plugins/chat/discourse/components/chat-retention-reminder-text\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _dButton, _ajax, _ajaxError, _chatRetentionReminderText, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatRetentionReminder extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    get show() {\n      return this.args.channel?.isDirectMessageChannel && this.currentUser?.get(\"needs_dm_retention_reminder\") || this.args.channel?.isCategoryChannel && this.currentUser?.get(\"needs_channel_retention_reminder\");\n    }\n    async dismiss() {\n      try {\n        await (0, _ajax.ajax)(\"/chat/dismiss-retention-reminder\", {\n          method: \"POST\",\n          data: {\n            chatable_type: this.args.channel.chatableType\n          }\n        });\n        const field = this.args.channel.isDirectMessageChannel ? \"needs_dm_retention_reminder\" : \"needs_channel_retention_reminder\";\n        this.currentUser.set(field, false);\n      } catch (e) {\n        (0, _ajaxError.popupAjaxError)(e);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"dismiss\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.show}}\n        <div class=\"chat-retention-reminder\">\n          <ChatRetentionReminderText @channel={{@channel}} />\n          <DButton\n            @action={{this.dismiss}}\n            @icon=\"xmark\"\n            class=\"no-text btn-icon btn-transparent dismiss-btn\"\n          />\n        </div>\n      {{/if}}\n      */\n      {\n        \"id\": \"XxabdFKd\",\n        \"block\": \"[[[41,[30,0,[\\\"show\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"chat-retention-reminder\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[32,0],null,[[\\\"@channel\\\"],[[30,1]]],null],[1,\\\"\\\\n    \\\"],[8,[32,1],[[24,0,\\\"no-text btn-icon btn-transparent dismiss-btn\\\"]],[[\\\"@action\\\",\\\"@icon\\\"],[[30,0,[\\\"dismiss\\\"]],\\\"xmark\\\"]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@channel\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-retention-reminder.js\",\n        \"scope\": () => [_chatRetentionReminderText.default, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatRetentionReminder;\n});","define(\"discourse/plugins/chat/discourse/components/chat-search\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/helper\", \"@ember/modifier\", \"@ember/object\", \"@ember/render-modifiers/modifiers/did-insert\", \"@ember/render-modifiers/modifiers/did-update\", \"@ember/service\", \"@ember/utils\", \"discourse/components/conditional-loading-spinner\", \"discourse/components/d-button\", \"discourse/components/dropdown-menu\", \"discourse/components/filter-input\", \"discourse/components/load-more\", \"discourse/float-kit/components/d-menu\", \"discourse/lib/ajax\", \"discourse/lib/debounce\", \"discourse/lib/decorators\", \"discourse/lib/environment\", \"discourse/lib/url\", \"discourse/modifiers/auto-focus\", \"discourse/modifiers/tab-to-sibling\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat-channel-title\", \"discourse/plugins/chat/discourse/components/chat-message\", \"discourse/plugins/chat/discourse/components/chat-thread-heading\", \"discourse/plugins/chat/discourse/models/chat-channel\", \"discourse/plugins/chat/discourse/models/chat-message\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _helper, _modifier, _object, _didInsert, _didUpdate, _service, _utils, _conditionalLoadingSpinner, _dButton, _dropdownMenu, _filterInput, _loadMore2, _dMenu, _ajax, _debounce, _decorators, _environment, _url, _autoFocus, _tabToSibling, _truthHelpers, _discourseI18n, _chatChannelTitle, _chatMessage, _chatThreadHeading, _chatChannel, _chatMessage2, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const LIMIT = 20;\n  class ChatSearch extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatSearchQuery\", [_service.service]);\n    }\n    #chatSearchQuery = (dt7948.i(this, \"chatSearchQuery\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentSort\", [_tracking.tracked], function () {\n        return \"relevance\";\n      });\n    }\n    #currentSort = (dt7948.i(this, \"currentSort\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"messages\", [_tracking.tracked], function () {\n        return [];\n      });\n    }\n    #messages = (dt7948.i(this, \"messages\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"isLoading\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #isLoading = (dt7948.i(this, \"isLoading\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"offset\", [_tracking.tracked], function () {\n        return 0;\n      });\n    }\n    #offset = (dt7948.i(this, \"offset\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"hasMoreResults\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #hasMoreResults = (dt7948.i(this, \"hasMoreResults\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"lastQuery\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #lastQuery = (dt7948.i(this, \"lastQuery\"), void 0);\n    get enableQueryParams() {\n      return this.args.enableQueryParams ?? true;\n    }\n    async searchMessages(resetResults = true) {\n      this.searchPromise?.abort();\n      if ((0, _utils.isBlank)(this.args.query)) {\n        this.messages = [];\n        this.offset = 0;\n        this.hasMoreResults = false;\n        return;\n      }\n      this.isLoading = true;\n      if (resetResults) {\n        this.offset = 0;\n        this.messages = [];\n      }\n      try {\n        this.searchPromise = (0, _ajax.ajax)(\"/chat/api/search\", {\n          data: {\n            query: this.args.query,\n            channel_id: this.args.scopedChannelId,\n            sort: this.currentSort,\n            offset: this.offset,\n            limit: LIMIT\n          }\n        });\n        const response = await this.searchPromise;\n        const newMessages = (response.messages || []).map(messageObject => {\n          return _chatMessage2.default.create(_chatChannel.default.create(messageObject.channel), messageObject);\n        });\n        if (resetResults) {\n          this.messages = newMessages;\n        } else {\n          this.messages = [...this.messages, ...newMessages];\n        }\n        this.offset += newMessages.length;\n        this.hasMoreResults = response.meta?.has_more || false;\n        return this.messages;\n      } finally {\n        this.isLoading = false;\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"searchMessages\", [_decorators.bind]);\n    }\n    sortLabel(sort) {\n      return (0, _discourseI18n.i18n)(`chat.search.sort.${sort}`);\n    }\n    static {\n      dt7948.n(this.prototype, \"sortLabel\", [_object.action]);\n    }\n    setCurrentSorting(sort, closeMenu) {\n      this.currentSort = sort;\n      closeMenu();\n      this.searchMessages(true);\n    }\n    static {\n      dt7948.n(this.prototype, \"setCurrentSorting\", [_object.action]);\n    }\n    onFilterChange(element) {\n      const value = element.target.value;\n      this.debouncedHandler = (0, _debounce.default)(this.debounceFilterChange, value === \"\" ? null : value, _environment.INPUT_DELAY);\n    }\n    static {\n      dt7948.n(this.prototype, \"onFilterChange\", [_object.action]);\n    }\n    async loadMore() {\n      if (!this.hasMoreResults || this.isLoading) {\n        return;\n      }\n      await this.searchMessages(false);\n    }\n    static {\n      dt7948.n(this.prototype, \"loadMore\", [_object.action]);\n    }\n    debounceFilterChange(query) {\n      this.chatSearchQuery.query = query;\n      if (this.enableQueryParams) {\n        this.router.replaceWith({\n          queryParams: {\n            q: query\n          }\n        });\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"debounceFilterChange\", [_object.action]);\n    }\n    checkQueryChange() {\n      if (this.lastQuery !== this.args.query) {\n        this.lastQuery = this.args.query;\n        this.searchMessages(true);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"checkQueryChange\", [_object.action]);\n    }\n    visitMessage(message) {\n      _url.default.routeTo(message.url);\n    }\n    static {\n      dt7948.n(this.prototype, \"visitMessage\", [_object.action]);\n    }\n    handleKeypress(message, event) {\n      if (event.key === \"Enter\" || event.key === \" \") {\n        event.preventDefault();\n        this.visitMessage(message);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"handleKeypress\", [_object.action]);\n    }\n    accessibleMessageLabel(message) {\n      const username = message.user?.username || (0, _discourseI18n.i18n)(\"chat.deleted_user\");\n      const messagePreview = message.excerpt || (message.message ? message.message.substring(0, 100) + \"...\" : \"\");\n      const threadInfo = message.threadTitle ? (0, _discourseI18n.i18n)(\"chat.search_view.in_thread\", {\n        title: message.threadTitle\n      }) : \"\";\n      return (0, _discourseI18n.i18n)(\"chat.search_view.message_result_label\", {\n        username,\n        preview: messagePreview,\n        threadInfo\n      }).trim();\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div\n        class=\"c-search\"\n        {{didInsert this.checkQueryChange}}\n        {{didUpdate this.checkQueryChange @query}}\n      >\n        <div class=\"chat-search__filters\">\n          <FilterInput\n            {{autoFocus}}\n            @filterAction={{this.onFilterChange}}\n            @value={{@query}}\n            @icons={{hash left=\"magnifying-glass\"}}\n            placeholder={{i18n \"chat.search_view.filter_placeholder\"}}\n            class=\"no-blur\"\n            @onClearInput={{fn this.debounceFilterChange \"\"}}\n          />\n      \n          <DMenu\n            @identifier=\"search-sort-options\"\n            @label={{this.sortLabel this.currentSort}}\n            @icon=\"sort\"\n          >\n            <:content as |menu|>\n              <DropdownMenu as |dropdown|>\n                <dropdown.item>\n                  <DButton\n                    @translatedLabel={{this.sortLabel \"relevance\"}}\n                    class=\"btn-transparent\"\n                    @action={{fn this.setCurrentSorting \"relevance\" menu.close}}\n                  />\n                </dropdown.item>\n                <dropdown.item>\n                  <DButton\n                    @translatedLabel={{this.sortLabel \"latest\"}}\n                    class=\"btn-transparent\"\n                    @action={{fn this.setCurrentSorting \"latest\" menu.close}}\n                  />\n                </dropdown.item>\n              </DropdownMenu>\n            </:content>\n          </DMenu>\n        </div>\n      \n        {{#if @query.length}}\n          {{#if this.messages.length}}\n            <div id=\"chat-search-instructions\" class=\"sr-only\">\n              {{i18n \"chat.search_view.sr_instructions\"}}\n            </div>\n      \n            <ul\n              class=\"chat-message-search-entries\"\n              role=\"listbox\"\n              aria-label={{i18n \"chat.search_view.results_list_label\"}}\n            >\n              {{#each this.messages key=\"id\" as |message|}}\n                <li\n                  class=\"chat-message-search-entry\"\n                  role=\"option\"\n                  {{on \"click\" (fn this.visitMessage message)}}\n                  {{on \"keydown\" (fn this.handleKeypress message)}}\n                  {{tabToSibling}}\n                  tabindex=\"0\"\n                  aria-label={{this.accessibleMessageLabel message}}\n                  aria-describedby=\"chat-search-instructions\"\n                >\n                  <div class=\"chat-message-search-entry__info\">\n                    {{#unless @scopedChannelId}}\n                      <ChatChannelTitle @channel={{message.channel}} />\n                    {{/unless}}\n      \n                    <ChatThreadHeading\n                      @thread={{hash title=message.threadTitle}}\n                    />\n                  </div>\n      \n                  <ChatMessageComponent\n                    @message={{message}}\n                    @disableMouseEvents={{true}}\n                    @includeSeparator={{false}}\n                    @interactive={{false}}\n                    @dateMode=\"long\"\n                  />\n                </li>\n              {{/each}}\n            </ul>\n      \n            <div class=\"chat-search-loading\">\n              <ConditionalLoadingSpinner @condition={{this.isLoading}} />\n            </div>\n      \n            {{#if this.hasMoreResults}}\n              <LoadMore @action={{this.loadMore}} />\n            {{/if}}\n      \n            <br />\n          {{else if (not this.isLoading)}}\n            <div class=\"alert alert-info\">\n              {{i18n \"chat.search.no_results\"}}\n            </div>\n          {{/if}}\n        {{/if}}\n      </div>\n      */\n      {\n        \"id\": \"Siby9/VU\",\n        \"block\": \"[[[11,0],[24,0,\\\"c-search\\\"],[4,[32,0],[[30,0,[\\\"checkQueryChange\\\"]]],null],[4,[32,1],[[30,0,[\\\"checkQueryChange\\\"]],[30,1]],null],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-search__filters\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[32,2],[[16,\\\"placeholder\\\",[28,[32,3],[\\\"chat.search_view.filter_placeholder\\\"],null]],[24,0,\\\"no-blur\\\"],[4,[32,6],null,null]],[[\\\"@filterAction\\\",\\\"@value\\\",\\\"@icons\\\",\\\"@onClearInput\\\"],[[30,0,[\\\"onFilterChange\\\"]],[30,1],[28,[32,4],null,[[\\\"left\\\"],[\\\"magnifying-glass\\\"]]],[28,[32,5],[[30,0,[\\\"debounceFilterChange\\\"]],\\\"\\\"],null]]],null],[1,\\\"\\\\n\\\\n    \\\"],[8,[32,7],null,[[\\\"@identifier\\\",\\\"@label\\\",\\\"@icon\\\"],[\\\"search-sort-options\\\",[28,[30,0,[\\\"sortLabel\\\"]],[[30,0,[\\\"currentSort\\\"]]],null],\\\"sort\\\"]],[[\\\"content\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[32,8],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[30,3,[\\\"item\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[32,9],[[24,0,\\\"btn-transparent\\\"]],[[\\\"@translatedLabel\\\",\\\"@action\\\"],[[28,[30,0,[\\\"sortLabel\\\"]],[\\\"relevance\\\"],null],[28,[32,5],[[30,0,[\\\"setCurrentSorting\\\"]],\\\"relevance\\\",[30,2,[\\\"close\\\"]]],null]]],null],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[8,[30,3,[\\\"item\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[32,9],[[24,0,\\\"btn-transparent\\\"]],[[\\\"@translatedLabel\\\",\\\"@action\\\"],[[28,[30,0,[\\\"sortLabel\\\"]],[\\\"latest\\\"],null],[28,[32,5],[[30,0,[\\\"setCurrentSorting\\\"]],\\\"latest\\\",[30,2,[\\\"close\\\"]]],null]]],null],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"]],[3]]]]],[1,\\\"\\\\n      \\\"]],[2]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,1,[\\\"length\\\"]],[[[41,[30,0,[\\\"messages\\\",\\\"length\\\"]],[[[1,\\\"      \\\"],[10,0],[14,1,\\\"chat-search-instructions\\\"],[14,0,\\\"sr-only\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,3],[\\\"chat.search_view.sr_instructions\\\"],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,\\\"ul\\\"],[14,0,\\\"chat-message-search-entries\\\"],[14,\\\"role\\\",\\\"listbox\\\"],[15,\\\"aria-label\\\",[28,[32,3],[\\\"chat.search_view.results_list_label\\\"],null]],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\\\"messages\\\"]]],null]],null],\\\"id\\\",[[[1,\\\"          \\\"],[11,\\\"li\\\"],[24,0,\\\"chat-message-search-entry\\\"],[24,\\\"role\\\",\\\"option\\\"],[24,\\\"tabindex\\\",\\\"0\\\"],[16,\\\"aria-label\\\",[28,[30,0,[\\\"accessibleMessageLabel\\\"]],[[30,4]],null]],[24,\\\"aria-describedby\\\",\\\"chat-search-instructions\\\"],[4,[32,10],[\\\"click\\\",[28,[32,5],[[30,0,[\\\"visitMessage\\\"]],[30,4]],null]],null],[4,[32,10],[\\\"keydown\\\",[28,[32,5],[[30,0,[\\\"handleKeypress\\\"]],[30,4]],null]],null],[4,[32,11],null,null],[12],[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"chat-message-search-entry__info\\\"],[12],[1,\\\"\\\\n\\\"],[41,[51,[30,5]],[[[1,\\\"                \\\"],[8,[32,12],null,[[\\\"@channel\\\"],[[30,4,[\\\"channel\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n              \\\"],[8,[32,13],null,[[\\\"@thread\\\"],[[28,[32,4],null,[[\\\"title\\\"],[[30,4,[\\\"threadTitle\\\"]]]]]]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\\n            \\\"],[8,[32,14],null,[[\\\"@message\\\",\\\"@disableMouseEvents\\\",\\\"@includeSeparator\\\",\\\"@interactive\\\",\\\"@dateMode\\\"],[[30,4],true,false,false,\\\"long\\\"]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[4]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,0],[14,0,\\\"chat-search-loading\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[32,15],null,[[\\\"@condition\\\"],[[30,0,[\\\"isLoading\\\"]]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"hasMoreResults\\\"]],[[[1,\\\"        \\\"],[8,[32,16],null,[[\\\"@action\\\"],[[30,0,[\\\"loadMore\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[32,17],[[30,0,[\\\"isLoading\\\"]]],null],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"alert alert-info\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,3],[\\\"chat.search.no_results\\\"],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]],null]],[]]]],[]],null],[13]],[\\\"@query\\\",\\\"menu\\\",\\\"dropdown\\\",\\\"message\\\",\\\"@scopedChannelId\\\"],[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\",\\\"unless\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-search.js\",\n        \"scope\": () => [_didInsert.default, _didUpdate.default, _filterInput.default, _discourseI18n.i18n, _helper.hash, _helper.fn, _autoFocus.default, _dMenu.default, _dropdownMenu.default, _dButton.default, _modifier.on, _tabToSibling.default, _chatChannelTitle.default, _chatThreadHeading.default, _chatMessage.default, _conditionalLoadingSpinner.default, _loadMore2.default, _truthHelpers.not],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatSearch;\n});","define(\"discourse/plugins/chat/discourse/components/chat-side-panel-resizer\", [\"exports\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatSidePanelResizer = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"chat-side-panel-resizer\"></div>\n  */\n  {\n    \"id\": \"mNjb61Ho\",\n    \"block\": \"[[[10,0],[14,0,\\\"chat-side-panel-resizer\\\"],[12],[13]],[],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-side-panel-resizer.js\",\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"chat-side-panel-resizer:ChatSidePanelResizer\"));\n  var _default = _exports.default = ChatSidePanelResizer;\n});","define(\"discourse/plugins/chat/discourse/components/chat-side-panel\", [\"exports\", \"@glimmer/component\", \"@ember/helper\", \"@ember/object\", \"@ember/render-modifiers/modifiers/did-insert\", \"@ember/service\", \"discourse/lib/key-value-store\", \"discourse/plugins/chat/discourse/modifiers/chat/resizable-node\", \"discourse/plugins/chat/discourse/components/chat-side-panel-resizer\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _helper, _object, _didInsert, _service, _keyValueStore, _resizableNode, _chatSidePanelResizer, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const MIN_PANEL_WIDTH = 250;\n  const STORE_NAMESPACE = \"discourse_chat_side_panel_size_\";\n  class ChatSidePanel extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    store = new _keyValueStore.default(STORE_NAMESPACE);\n    setupSize(element) {\n      if (this.site.mobileView) {\n        return;\n      }\n      if (!this.chatStateManager.isFullPageActive) {\n        return;\n      }\n      const validWidth = Math.min(this.store.getObject(\"width\") ?? MIN_PANEL_WIDTH, this.mainContainerWidth - MIN_PANEL_WIDTH);\n      element.animate([{\n        width: element.style.width\n      }, {\n        width: validWidth + \"px\"\n      }], {\n        duration: 0,\n        fill: \"forwards\"\n      });\n      this.storeWidth(validWidth);\n    }\n    static {\n      dt7948.n(this.prototype, \"setupSize\", [_object.action]);\n    }\n    didResize(element, size) {\n      const mainPanelWidth = this.mainContainerWidth - size.width;\n      if (size.width >= MIN_PANEL_WIDTH && mainPanelWidth >= MIN_PANEL_WIDTH) {\n        element.animate([{\n          width: element.style.width\n        }, {\n          width: size.width + \"px\"\n        }], {\n          duration: 0,\n          fill: \"forwards\"\n        });\n        this.storeWidth(size.width);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"didResize\", [_object.action]);\n    }\n    get mainContainerWidth() {\n      return document.getElementById(\"main-chat-outlet\").clientWidth;\n    }\n    storeWidth(width) {\n      this.store.setObject({\n        key: \"width\",\n        value: width\n      });\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.chatStateManager.isSidePanelExpanded}}\n        <div\n          class=\"chat-side-panel\"\n          {{didInsert this.setupSize}}\n          {{resizableNode\n            \".chat-side-panel-resizer\"\n            this.didResize\n            (hash\n              position=false vertical=false mutate=false resetOnWindowResize=true\n            )\n          }}\n        >\n          {{yield}}\n      \n          {{#if this.site.desktopView}}\n            <ChatSidePanelResizer />\n          {{/if}}\n        </div>\n      {{/if}}\n      */\n      {\n        \"id\": \"IrlUFju5\",\n        \"block\": \"[[[41,[30,0,[\\\"chatStateManager\\\",\\\"isSidePanelExpanded\\\"]],[[[1,\\\"  \\\"],[11,0],[24,0,\\\"chat-side-panel\\\"],[4,[32,0],[[30,0,[\\\"setupSize\\\"]]],null],[4,[32,1],[\\\".chat-side-panel-resizer\\\",[30,0,[\\\"didResize\\\"]],[28,[32,2],null,[[\\\"position\\\",\\\"vertical\\\",\\\"mutate\\\",\\\"resetOnWindowResize\\\"],[false,false,false,true]]]],null],[12],[1,\\\"\\\\n    \\\"],[18,1,null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"site\\\",\\\"desktopView\\\"]],[[[1,\\\"      \\\"],[8,[32,3],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"&default\\\"],[\\\"if\\\",\\\"yield\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-side-panel.js\",\n        \"scope\": () => [_didInsert.default, _resizableNode.default, _helper.hash, _chatSidePanelResizer.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatSidePanel;\n});","define(\"discourse/plugins/chat/discourse/components/chat-sidebar-indicators\", [\"exports\", \"@glimmer/component\", \"discourse/components/user-status-message\", \"discourse/helpers/d-icon\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _userStatusMessage, _dIcon, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /**\n   * Displays unread indicators and user status for chat channels in the sidebar.\n   *\n   * @component ChatSidebarIndicators\n   * @param {Object} @suffixArgs - Arguments object when used as @suffixComponent\n   * @param {number} @suffixArgs.unreadCount - Number of unread messages\n   * @param {number} @suffixArgs.unreadThreadsCount - Number of unread threads\n   * @param {number} @suffixArgs.mentionCount - Number of unread mentions\n   * @param {number} @suffixArgs.watchedThreadsUnreadCount - Number of unread watched threads\n   * @param {boolean} @suffixArgs.isDirectMessageChannel - Whether this is a DM channel\n   * @param {Object} @suffixArgs.userStatus - User status object for DM channels\n   */class ChatSidebarIndicators extends _component.default {\n    /**\n    * Determines if the channel has any unread content (messages, threads, mentions, or watched threads).\n    *\n    * @returns {boolean} True if there are any unreads that should show an indicator\n    */\n    get hasUnread() {\n      return this.args.suffixArgs?.unreadCount > 0 || this.args.suffixArgs?.unreadThreadsCount > 0 || this.args.suffixArgs?.mentionCount > 0 || this.args.suffixArgs?.watchedThreadsUnreadCount > 0;\n    }\n    /**\n    * Determines the urgency class for the unread indicator.\n    * Returns \"urgent\" for mentions, watched threads, or any DM unreads.\n    * Returns \"unread\" for regular unread messages.\n    *\n    * @returns {string} CSS class name - either \"urgent\" or \"unread\"\n    */\n    get urgencyClass() {\n      const hasUrgent = this.args.suffixArgs?.mentionCount > 0 || this.args.suffixArgs?.watchedThreadsUnreadCount > 0;\n      // For DMs, treat all unreads as urgent\n      const hasUnreadDM = this.args.suffixArgs?.isDirectMessageChannel && this.args.suffixArgs?.unreadCount > 0;\n      if (hasUrgent || hasUnreadDM) {\n        return \"urgent\";\n      }\n      return \"unread\";\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if @suffixArgs.userStatus}}\n        <UserStatusMessage @status={{@suffixArgs.userStatus}} />\n      {{/if}}\n      {{#if this.hasUnread}}\n        <span\n          class=\"sidebar-section-link-content-badge icon {{this.urgencyClass}}\"\n        >{{icon \"circle\"}}</span>\n      {{/if}}\n      */\n      {\n        \"id\": \"1GJ+6Jd0\",\n        \"block\": \"[[[41,[30,1,[\\\"userStatus\\\"]],[[[1,\\\"  \\\"],[8,[32,0],null,[[\\\"@status\\\"],[[30,1,[\\\"userStatus\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"hasUnread\\\"]],[[[1,\\\"  \\\"],[10,1],[15,0,[29,[\\\"sidebar-section-link-content-badge icon \\\",[30,0,[\\\"urgencyClass\\\"]]]]],[12],[1,[28,[32,1],[\\\"circle\\\"],null]],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@suffixArgs\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-sidebar-indicators.js\",\n        \"scope\": () => [_userStatusMessage.default, _dIcon.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatSidebarIndicators;\n});","define(\"discourse/plugins/chat/discourse/components/chat-skeleton\", [\"exports\", \"@glimmer/component\", \"@ember/template\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _template, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatSkeleton extends _component.default {\n    get placeholders() {\n      return Array.from({\n        length: 15\n      }, () => {\n        return {\n          image: this.#randomIntFromInterval(1, 10) === 5,\n          rows: Array.from({\n            length: this.#randomIntFromInterval(1, 5)\n          }, () => {\n            return (0, _template.trustHTML)(`width: ${this.#randomIntFromInterval(20, 95)}%`);\n          }),\n          reactions: Array.from({\n            length: this.#randomIntFromInterval(0, 3)\n          })\n        };\n      });\n    }\n    #randomIntFromInterval(min, max) {\n      return Math.floor(Math.random() * (max - min + 1) + min);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"chat-skeleton -animation\">\n        {{#each this.placeholders as |placeholder|}}\n          <div class=\"chat-skeleton__body\">\n            <div class=\"chat-skeleton__message\">\n              <div class=\"chat-skeleton__message-avatar\"></div>\n              <div class=\"chat-skeleton__message-poster\"></div>\n              <div class=\"chat-skeleton__message-content\">\n                {{#if placeholder.image}}\n                  <div class=\"chat-skeleton__message-img\"></div>\n                {{/if}}\n      \n                <div class=\"chat-skeleton__message-text\">\n                  {{#each placeholder.rows as |row|}}\n                    <div class=\"chat-skeleton__message-msg\" style={{row}}></div>\n                  {{/each}}\n                </div>\n      \n                {{#if placeholder.reactions}}\n                  <div class=\"chat-skeleton__message-reactions\">\n                    {{#each placeholder.reactions}}\n                      <div class=\"chat-skeleton__message-reaction\"></div>\n                    {{/each}}\n                  </div>\n                {{/if}}\n              </div>\n            </div>\n          </div>\n        {{/each}}\n      </div>\n      */\n      {\n        \"id\": \"FS/CJ+TN\",\n        \"block\": \"[[[10,0],[14,0,\\\"chat-skeleton -animation\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\\\"placeholders\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[10,0],[14,0,\\\"chat-skeleton__body\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"chat-skeleton__message\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"chat-skeleton__message-avatar\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"chat-skeleton__message-poster\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"chat-skeleton__message-content\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"image\\\"]],[[[1,\\\"            \\\"],[10,0],[14,0,\\\"chat-skeleton__message-img\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"chat-skeleton__message-text\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,1],[[28,[31,1],[[30,1,[\\\"rows\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[10,0],[14,0,\\\"chat-skeleton__message-msg\\\"],[15,5,[30,2]],[12],[13],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,1,[\\\"reactions\\\"]],[[[1,\\\"            \\\"],[10,0],[14,0,\\\"chat-skeleton__message-reactions\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,1],[[28,[31,1],[[30,1,[\\\"reactions\\\"]]],null]],null],null,[[[1,\\\"                \\\"],[10,0],[14,0,\\\"chat-skeleton__message-reaction\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[13]],[\\\"placeholder\\\",\\\"row\\\"],[\\\"each\\\",\\\"-track-array\\\",\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-skeleton.js\",\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatSkeleton;\n});","define(\"discourse/plugins/chat/discourse/components/chat-thread-heading\", [\"exports\", \"@glimmer/component\", \"discourse/helpers/d-icon\", \"discourse/helpers/replace-emoji\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _dIcon, _replaceEmoji, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatThreadHeading extends _component.default {\n    get showHeading() {\n      return this.args.thread?.title;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.showHeading}}\n        <div class=\"chat-thread__heading\">\n          <div class=\"chat-thread__heading-icon\">\n            {{icon \"discourse-threads\"}}\n          </div>\n          <h2 class=\"chat-thread__heading-title\">\n            {{replaceEmoji @thread.title}}\n          </h2>\n        </div>\n      {{/if}}\n      */\n      {\n        \"id\": \"+WhqtqZU\",\n        \"block\": \"[[[41,[30,0,[\\\"showHeading\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"chat-thread__heading\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-thread__heading-icon\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[28,[32,0],[\\\"discourse-threads\\\"],null]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[14,0,\\\"chat-thread__heading-title\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[28,[32,1],[[30,1,[\\\"title\\\"]]],null]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@thread\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-thread-heading.js\",\n        \"scope\": () => [_dIcon.default, _replaceEmoji.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatThreadHeading;\n});","define(\"discourse/plugins/chat/discourse/components/chat-thread-list\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/service\", \"ember-modifier\", \"discourse/components/conditional-loading-spinner\", \"discourse/lib/decorators\", \"discourse/lib/is-element-in-viewport\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/thread-list/item\", \"discourse/plugins/chat/discourse/modifiers/chat/track-message\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _service, _emberModifier, _conditionalLoadingSpinner, _decorators, _isElementInViewport, _truthHelpers, _discourseI18n, _item, _trackMessage, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatThreadList extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"messageBus\", [_service.service]);\n    }\n    #messageBus = (dt7948.i(this, \"messageBus\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatTrackingStateManager\", [_service.service]);\n    }\n    #chatTrackingStateManager = (dt7948.i(this, \"chatTrackingStateManager\"), void 0);\n    noThreadsLabel = (0, _discourseI18n.i18n)(\"chat.threads.none\");\n    subscribe = (0, _emberModifier.modifier)((element, [channel]) => {\n      this.messageBus.subscribe(`/chat/${channel.id}`, this.onMessageBus, channel.channelMessageBusLastId);\n      return () => {\n        // TODO (joffrey) In drawer we won't have channel anymore at this point\n        if (!channel) {\n          return;\n        }\n        this.messageBus.unsubscribe(`/chat/${channel.id}`, this.onMessageBus);\n      };\n    });\n    fill = (0, _emberModifier.modifier)(element => {\n      this.resizeObserver = new ResizeObserver(() => {\n        if ((0, _isElementInViewport.default)(element)) {\n          this.loadThreads();\n        }\n      });\n      this.resizeObserver.observe(element);\n      return () => {\n        this.resizeObserver.disconnect();\n      };\n    });\n    loadMore = (0, _emberModifier.modifier)(element => {\n      this.intersectionObserver = new IntersectionObserver(this.loadThreads);\n      this.intersectionObserver.observe(element);\n      return () => {\n        this.intersectionObserver.disconnect();\n      };\n    });\n    get threadsCollection() {\n      return this.chatApi.threads(this.args.channel.id, this.handleLoadedThreads);\n    }\n    static {\n      dt7948.n(this.prototype, \"threadsCollection\", [_tracking.cached]);\n    }\n    loadThreads() {\n      this.threadsCollection.load({\n        limit: 10\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"loadThreads\", [_decorators.bind]);\n    }\n    get threadsManager() {\n      return this.args.channel.threadsManager;\n    }\n    // NOTE: This replicates sort logic from the server. We need this because\n    // the thread unread count + last reply date + time update when new messages\n    // are sent to the thread, and we want the list to react in realtime to this.\n    get sortedThreads() {\n      return this.threadsManager.threads.filter(thread => !thread.originalMessage.deletedAt && thread.originalMessage?.id !== thread.lastMessageId).sort((threadA, threadB) => {\n        // if both threads have watched unread count, then show latest first\n        if (threadA.tracking.watchedThreadsUnreadCount && threadB.tracking.watchedThreadsUnreadCount) {\n          if (threadA.preview.lastReplyCreatedAt > threadB.preview.lastReplyCreatedAt) {\n            return -1;\n          } else {\n            return 1;\n          }\n        }\n        // sort threads by watched unread count\n        if (threadA.tracking.watchedThreadsUnreadCount) {\n          return -1;\n        }\n        if (threadB.tracking.watchedThreadsUnreadCount) {\n          return 1;\n        }\n        // If both are unread we just want to sort by last reply date + time descending.\n        if (threadA.tracking.unreadCount && threadB.tracking.unreadCount) {\n          if (threadA.preview.lastReplyCreatedAt > threadB.preview.lastReplyCreatedAt) {\n            return -1;\n          } else {\n            return 1;\n          }\n        }\n        // If one is unread and the other is not, we want to sort the unread one first.\n        if (threadA.tracking.unreadCount) {\n          return -1;\n        }\n        if (threadB.tracking.unreadCount) {\n          return 1;\n        }\n        // If both are read, we want to sort by last reply date + time descending.\n        if (threadA.preview.lastReplyCreatedAt > threadB.preview.lastReplyCreatedAt) {\n          return -1;\n        } else {\n          return 1;\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"sortedThreads\", [_tracking.cached]);\n    }\n    get lastThread() {\n      return this.sortedThreads[this.sortedThreads.length - 1];\n    }\n    get shouldRender() {\n      return !!this.args.channel;\n    }\n    onMessageBus(busData) {\n      switch (busData.type) {\n        case \"delete\":\n          this.handleDeleteMessage(busData);\n          break;\n        case \"restore\":\n          this.handleRestoreMessage(busData);\n          break;\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"onMessageBus\", [_decorators.bind]);\n    }\n    handleDeleteMessage(data) {\n      const deletedOriginalMessageThread = this.threadsManager.threads.find(item => item.originalMessage.id === data.deleted_id);\n      if (!deletedOriginalMessageThread) {\n        return;\n      }\n      deletedOriginalMessageThread.originalMessage.deletedAt = new Date();\n    }\n    handleRestoreMessage(data) {\n      const restoredOriginalMessageThread = this.threadsManager.threads.find(item => item.originalMessage.id === data.chat_message.id);\n      if (!restoredOriginalMessageThread) {\n        return;\n      }\n      restoredOriginalMessageThread.originalMessage.deletedAt = null;\n    }\n    handleLoadedThreads(result) {\n      return result.threads.map(thread => {\n        const threadModel = this.threadsManager.add(this.args.channel, thread, {\n          replace: true\n        });\n        this.chatTrackingStateManager.setupChannelThreadState(this.args.channel, result.tracking);\n        return threadModel;\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"handleLoadedThreads\", [_decorators.bind]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.shouldRender}}\n        <div class=\"chat-thread-list\" {{this.subscribe @channel}}>\n          <div class=\"chat-thread-list__items\" {{this.fill}}>\n      \n            {{#each this.sortedThreads key=\"id\" as |thread|}}\n              <ChatThreadListItem\n                @thread={{thread}}\n                {{(if\n                  (eq thread this.lastThread)\n                  (modifier ChatTrackMessage this.load)\n                )}}\n              />\n            {{else}}\n              {{#if this.threadsCollection.fetchedOnce}}\n                <div class=\"chat-thread-list__no-threads\">\n                  {{this.noThreadsLabel}}\n                </div>\n              {{/if}}\n            {{/each}}\n      \n            <ConditionalLoadingSpinner\n              @condition={{this.threadsCollection.loading}}\n            />\n      \n            <div {{this.loadMore}}>\n              <br />\n            </div>\n          </div>\n        </div>\n      {{/if}}\n      */\n      {\n        \"id\": \"Lv36g1pZ\",\n        \"block\": \"[[[41,[30,0,[\\\"shouldRender\\\"]],[[[1,\\\"  \\\"],[11,0],[24,0,\\\"chat-thread-list\\\"],[4,[30,0,[\\\"subscribe\\\"]],[[30,1]],null],[12],[1,\\\"\\\\n    \\\"],[11,0],[24,0,\\\"chat-thread-list__items\\\"],[4,[30,0,[\\\"fill\\\"]],null,null],[12],[1,\\\"\\\\n\\\\n\\\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\\\"sortedThreads\\\"]]],null]],null],\\\"id\\\",[[[1,\\\"        \\\"],[8,[32,0],[[4,[52,[28,[32,1],[[30,2],[30,0,[\\\"lastThread\\\"]]],null],[50,[32,2],2,[[30,0,[\\\"load\\\"]]],null]],null,null]],[[\\\"@thread\\\"],[[30,2]]],null],[1,\\\"\\\\n\\\"]],[2]],[[[41,[30,0,[\\\"threadsCollection\\\",\\\"fetchedOnce\\\"]],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"chat-thread-list__no-threads\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[30,0,[\\\"noThreadsLabel\\\"]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"\\\\n      \\\"],[8,[32,3],null,[[\\\"@condition\\\"],[[30,0,[\\\"threadsCollection\\\",\\\"loading\\\"]]]],null],[1,\\\"\\\\n\\\\n      \\\"],[11,0],[4,[30,0,[\\\"loadMore\\\"]],null,null],[12],[1,\\\"\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@channel\\\",\\\"thread\\\"],[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\",\\\"modifier\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-thread-list.js\",\n        \"scope\": () => [_item.default, _truthHelpers.eq, _trackMessage.default, _conditionalLoadingSpinner.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatThreadList;\n});","define(\"discourse/plugins/chat/discourse/components/chat-thread-participants\", [\"exports\", \"@glimmer/component\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat-user-avatar\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _discourseI18n, _chatUserAvatar, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatThreadParticipants extends _component.default {\n    get showParticipants() {\n      if (!this.args.thread) {\n        return;\n      }\n      if (this.includeOriginalMessageUser) {\n        return this.participantsUsers.length > 1;\n      }\n      return this.participantsUsers.length > 0;\n    }\n    get includeOriginalMessageUser() {\n      return this.args.includeOriginalMessageUser ?? true;\n    }\n    get participantsUsers() {\n      const users = this.args.thread.preview.participantUsers;\n      if (this.includeOriginalMessageUser) {\n        if (users.length > 3) {\n          return users.slice(0, 2).concat(users[users.length - 1]);\n        } else {\n          return users;\n        }\n      }\n      return users.filter(user => {\n        return user.id !== this.args.thread.originalMessage.user.id;\n      });\n    }\n    get otherCountLabel() {\n      return (0, _discourseI18n.i18n)(\"chat.thread.participants_other_count\", {\n        count: this.args.thread.preview.otherParticipantCount\n      });\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.showParticipants}}\n        <div class=\"chat-thread-participants\" ...attributes>\n          <div class=\"chat-thread-participants__avatar-group\">\n            {{#each this.participantsUsers as |user|}}\n              <ChatUserAvatar\n                @user={{user}}\n                @avatarSize=\"tiny\"\n                @showPresence={{false}}\n                @interactive={{false}}\n              />\n            {{/each}}\n          </div>\n          {{#if @thread.preview.otherParticipantCount}}\n            <div class=\"chat-thread-participants__other-count\">\n              {{this.otherCountLabel}}\n            </div>\n          {{/if}}\n        </div>\n      {{/if}}\n      */\n      {\n        \"id\": \"ZgUxGhZq\",\n        \"block\": \"[[[41,[30,0,[\\\"showParticipants\\\"]],[[[1,\\\"  \\\"],[11,0],[24,0,\\\"chat-thread-participants\\\"],[17,1],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-thread-participants__avatar-group\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\\\"participantsUsers\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[8,[32,0],null,[[\\\"@user\\\",\\\"@avatarSize\\\",\\\"@showPresence\\\",\\\"@interactive\\\"],[[30,2],\\\"tiny\\\",false,false]],null],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"preview\\\",\\\"otherParticipantCount\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"chat-thread-participants__other-count\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[30,0,[\\\"otherCountLabel\\\"]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"&attrs\\\",\\\"user\\\",\\\"@thread\\\"],[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-thread-participants.js\",\n        \"scope\": () => [_chatUserAvatar.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatThreadParticipants;\n});","define(\"discourse/plugins/chat/discourse/components/chat-thread-title-prompt\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/runloop\", \"@ember/service\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/modal/thread-settings\", \"discourse/plugins/chat/discourse/lib/chat-constants\", \"discourse/plugins/chat/discourse/models/user-chat-thread-membership\"], function (_exports, _component, _object, _runloop, _service, _discourseI18n, _threadSettings, _chatConstants, _userChatThreadMembership) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatThreadTitlePrompt extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"toasts\", [_service.service]);\n    }\n    #toasts = (dt7948.i(this, \"toasts\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    toastText = {\n      title: (0, _discourseI18n.i18n)(\"chat.thread_title_toast.title\"),\n      message: (0, _discourseI18n.i18n)(\"chat.thread_title_toast.message\"),\n      dismissLabel: (0, _discourseI18n.i18n)(\"chat.thread_title_toast.dismiss_action\"),\n      primaryLabel: (0, _discourseI18n.i18n)(\"chat.thread_title_toast.primary_action\")\n    };\n    constructor() {\n      super(...arguments);\n      (0, _runloop.next)(() => {\n        if (this.canShowToast) {\n          this.show();\n          this.updateThreadTitlePrompt();\n        }\n      });\n    }\n    get membership() {\n      return this.args.thread.currentUserMembership;\n    }\n    async updateThreadTitlePrompt() {\n      try {\n        const result = await this.chatApi.updateCurrentUserThreadTitlePrompt(this.args.thread.channel.id, this.args.thread.id);\n        this.args.thread.currentUserMembership = _userChatThreadMembership.default.create(result.membership);\n      } catch (e) {\n        // eslint-disable-next-line no-console\n        console.log(\"Couldn't save thread title prompt status\", e);\n        if (this.membership) {\n          this.membership.threadTitlePromptSeen = false;\n        }\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"updateThreadTitlePrompt\", [_object.action]);\n    }\n    disableFutureThreadTitlePrompts() {\n      this.currentUser.set(\"user_option.show_thread_title_prompts\", false);\n      this.currentUser.save();\n    }\n    static {\n      dt7948.n(this.prototype, \"disableFutureThreadTitlePrompts\", [_object.action]);\n    }\n    get canShowToast() {\n      if (this.site.desktopView || this.args.thread.originalMessage?.user?.id !== this.currentUser.id && !this.currentUser.admin) {\n        return false;\n      }\n      const titleNotSet = this.args.thread.title === null;\n      const hasReplies = this.args.thread.replyCount >= _chatConstants.THREAD_TITLE_PROMPT_THRESHOLD;\n      const showPrompts = this.currentUser.user_option.show_thread_title_prompts;\n      const promptNotSeen = !this.membership?.threadTitlePromptSeen;\n      return titleNotSet && hasReplies && showPrompts && promptNotSeen;\n    }\n    show() {\n      this.toasts.default({\n        duration: \"long\",\n        showProgressBar: true,\n        class: \"thread-toast\",\n        data: {\n          title: this.toastText.title,\n          message: this.toastText.message,\n          actions: [{\n            label: this.toastText.dismissLabel,\n            class: \"btn-link toast-hide\",\n            action: toast => {\n              this.disableFutureThreadTitlePrompts();\n              toast.close();\n            }\n          }, {\n            label: this.toastText.primaryLabel,\n            class: \"btn-primary toast-action\",\n            action: toast => {\n              this.modal.show(_threadSettings.default, {\n                model: this.args.thread\n              });\n              toast.close();\n            }\n          }]\n        }\n      });\n    }\n  }\n  _exports.default = ChatThreadTitlePrompt;\n});","define(\"discourse/plugins/chat/discourse/components/chat-thread\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/owner\", \"@ember/render-modifiers/modifiers/did-insert\", \"@ember/render-modifiers/modifiers/will-destroy\", \"@ember/runloop\", \"@ember/service\", \"discourse/helpers/concat-class\", \"discourse/lib/ajax-error\", \"discourse/lib/debounce\", \"discourse/lib/decorators\", \"discourse/lib/notification-levels\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat-thread-title-prompt\", \"discourse/plugins/chat/discourse/helpers/first-visible-message-id\", \"discourse/plugins/chat/discourse/lib/chat-channel-thread-subscription-manager\", \"discourse/plugins/chat/discourse/lib/chat-constants\", \"discourse/plugins/chat/discourse/lib/chat-messages-loader\", \"discourse/plugins/chat/discourse/lib/chat-pane-state\", \"discourse/plugins/chat/discourse/lib/dates-separators-positioner\", \"discourse/plugins/chat/discourse/lib/extract-current-topic-info\", \"discourse/plugins/chat/discourse/lib/scroll-helpers\", \"discourse/plugins/chat/discourse/models/chat-message\", \"discourse/plugins/chat/discourse/models/user-chat-thread-membership\", \"discourse/plugins/chat/discourse/components/chat/composer/thread\", \"discourse/plugins/chat/discourse/components/chat/scroll-to-bottom-arrow\", \"discourse/plugins/chat/discourse/components/chat/selection-manager\", \"discourse/plugins/chat/discourse/components/chat-channel-preview-card\", \"discourse/plugins/chat/discourse/components/chat-message\", \"discourse/plugins/chat/discourse/components/chat-messages-container\", \"discourse/plugins/chat/discourse/components/chat-messages-scroller\", \"discourse/plugins/chat/discourse/components/chat-skeleton\", \"discourse/plugins/chat/discourse/components/chat-thread-heading\", \"discourse/plugins/chat/discourse/components/chat-upload-drop-zone\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _object, _owner, _didInsert, _willDestroy, _runloop, _service, _concatClass, _ajaxError, _debounce, _decorators, _notificationLevels, _discourseI18n, _chatThreadTitlePrompt, _firstVisibleMessageId, _chatChannelThreadSubscriptionManager, _chatConstants, _chatMessagesLoader, _chatPaneState, _datesSeparatorsPositioner, _extractCurrentTopicInfo, _scrollHelpers, _chatMessage, _userChatThreadMembership, _thread, _scrollToBottomArrow, _selectionManager, _chatChannelPreviewCard, _chatMessage2, _chatMessagesContainer, _chatMessagesScroller, _chatSkeleton, _chatThreadHeading, _chatUploadDropZone, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatThread extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"capabilities\", [_service.service]);\n    }\n    #capabilities = (dt7948.i(this, \"capabilities\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatDraftsManager\", [_service.service]);\n    }\n    #chatDraftsManager = (dt7948.i(this, \"chatDraftsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatThreadComposer\", [_service.service]);\n    }\n    #chatThreadComposer = (dt7948.i(this, \"chatThreadComposer\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatThreadPane\", [_service.service]);\n    }\n    #chatThreadPane = (dt7948.i(this, \"chatThreadPane\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"dialog\", [_service.service]);\n    }\n    #dialog = (dt7948.i(this, \"dialog\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"atBottom\", [_tracking.tracked], function () {\n        return true;\n      });\n    }\n    #atBottom = (dt7948.i(this, \"atBottom\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"isScrolling\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #isScrolling = (dt7948.i(this, \"isScrolling\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"uploadDropZone\", [_tracking.tracked]);\n    }\n    #uploadDropZone = (dt7948.i(this, \"uploadDropZone\"), void 0);\n    scroller = null;\n    paneState = new _chatPaneState.default((0, _owner.getOwner)(this), {\n      contextKey: this.pendingContextKey,\n      onUserPresent: this.debouncedUpdateLastReadMessage\n    });\n    registerScroller(element) {\n      this.scroller = element;\n    }\n    static {\n      dt7948.n(this.prototype, \"registerScroller\", [_object.action]);\n    }\n    get messagesLoader() {\n      return new _chatMessagesLoader.default((0, _owner.getOwner)(this), this.args.thread);\n    }\n    static {\n      dt7948.n(this.prototype, \"messagesLoader\", [_tracking.cached]);\n    }\n    get messagesManager() {\n      return this.args.thread.messagesManager;\n    }\n    get showChannelPreview() {\n      const channel = this.args.thread.channel;\n      return channel?.isCategoryChannel && !channel?.isFollowing;\n    }\n    get pendingContextKey() {\n      return this.args.thread?.id ? `thread:${this.args.thread.id}` : null;\n    }\n    setup(element) {\n      this.uploadDropZone = element;\n      this.messagesManager.clear();\n      this.args.thread.draft = this.chatDraftsManager.get(this.args.thread.channel?.id, this.args.thread.id) || _chatMessage.default.createDraftMessage(this.args.thread.channel, {\n        user: this.currentUser,\n        thread: this.args.thread\n      });\n      this.chatThreadComposer.focus();\n      this.loadMessages();\n    }\n    static {\n      dt7948.n(this.prototype, \"setup\", [_object.action]);\n    }\n    teardown() {\n      this.paneState.teardown();\n      this.subscriptionManager.teardown();\n      (0, _runloop.cancel)(this._debouncedFillPaneAttemptHandler);\n      (0, _runloop.cancel)(this._debouncedUpdateLastReadMessageHandler);\n    }\n    static {\n      dt7948.n(this.prototype, \"teardown\", [_object.action]);\n    }\n    onScroll(state) {\n      (0, _runloop.next)(() => {\n        if (this.#flushIgnoreNextScroll()) {\n          return;\n        }\n        _datesSeparatorsPositioner.default.apply(this.scroller);\n        this.paneState.updatePendingContentFromScrollState({\n          scroller: this.scroller,\n          fetchedOnce: this.messagesLoader.fetchedOnce,\n          canLoadMoreFuture: this.messagesLoader.canLoadMoreFuture,\n          state\n        });\n        this.isScrolling = true;\n        this.debouncedUpdateLastReadMessage();\n        if (state.atTop || !this.capabilities.isIOS && state.up && state.distanceToTop.percentage < 40) {\n          this.fetchMoreMessages({\n            direction: _chatConstants.PAST\n          });\n        } else if (state.atBottom) {\n          this.fetchMoreMessages({\n            direction: _chatConstants.FUTURE\n          });\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"onScroll\", [_object.action]);\n    }\n    onScrollEnd(state) {\n      this.isScrolling = false;\n      this.atBottom = state.atBottom;\n      if (state.atBottom) {\n        this.paneState.clearPendingMessages();\n        this.fetchMoreMessages({\n          direction: _chatConstants.FUTURE\n        });\n      } else {\n        this.paneState.updatePendingContentFromScrollState({\n          scroller: this.scroller,\n          fetchedOnce: this.messagesLoader.fetchedOnce,\n          canLoadMoreFuture: this.messagesLoader.canLoadMoreFuture,\n          state\n        });\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"onScrollEnd\", [_object.action]);\n    }\n    debouncedUpdateLastReadMessage() {\n      this._debouncedUpdateLastReadMessageHandler = (0, _debounce.default)(this, this.updateLastReadMessage, _chatConstants.READ_INTERVAL_MS);\n    }\n    static {\n      dt7948.n(this.prototype, \"debouncedUpdateLastReadMessage\", [_decorators.bind]);\n    }\n    updateLastReadMessage() {\n      if (!this.paneState.userIsPresent) {\n        return;\n      }\n      if (!this.args.thread?.currentUserMembership) {\n        return;\n      }\n      const firstFullyVisibleMessageId = (0, _firstVisibleMessageId.default)(this.scroller);\n      if (!firstFullyVisibleMessageId) {\n        return;\n      }\n      const firstMessage = this.messagesManager.findMessage(firstFullyVisibleMessageId);\n      if (!firstMessage) {\n        return;\n      }\n      const lastReadId = this.args.thread.currentUserMembership.lastReadMessageId;\n      if (lastReadId >= firstMessage.id) {\n        return;\n      }\n      return this.chatApi.markThreadAsRead(this.args.thread.channel.id, this.args.thread.id, firstMessage.id);\n    }\n    static {\n      dt7948.n(this.prototype, \"updateLastReadMessage\", [_decorators.bind]);\n    }\n    loadMessages() {\n      this.fetchMessages();\n      this.subscriptionManager = new _chatChannelThreadSubscriptionManager.default(this, this.args.thread, {\n        onNewMessage: this.onNewMessage\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"loadMessages\", [_object.action]);\n    }\n    didResizePane() {\n      this._ignoreNextScroll = true;\n      this.debounceFillPaneAttempt();\n      this.debouncedUpdateLastReadMessage();\n      _datesSeparatorsPositioner.default.apply(this.scroller);\n      this.paneState.updatePendingContentFromScrollerPosition({\n        scroller: this.scroller,\n        fetchedOnce: this.messagesLoader.fetchedOnce,\n        canLoadMoreFuture: this.messagesLoader.canLoadMoreFuture\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"didResizePane\", [_object.action]);\n    }\n    async fetchMessages(findArgs = {}) {\n      if (this.messagesLoader.loading) {\n        return;\n      }\n      this.messagesManager.clear();\n      findArgs.target_message_id ??= findArgs.targetMessageId || this.args.targetMessageId || this.args.thread.currentUserMembership?.lastReadMessageId;\n      if (!findArgs.target_message_id) {\n        findArgs.direction = _chatConstants.FUTURE;\n      }\n      const result = await this.messagesLoader.load(findArgs);\n      if (!result) {\n        return;\n      }\n      const [messages, meta] = this.processMessages(this.args.thread, result);\n      this.messagesManager.addMessages(messages);\n      this.args.thread.details = meta;\n      if (meta.target_message_id) {\n        this.scrollToMessageId(meta.target_message_id, {\n          highlight: true\n        });\n      } else {\n        this.scrollToTop();\n      }\n      this.debounceFillPaneAttempt();\n    }\n    async fetchMoreMessages({\n      direction\n    }) {\n      if (this.messagesLoader.loading) {\n        return;\n      }\n      const result = await this.messagesLoader.loadMore({\n        direction\n      });\n      if (!result) {\n        return;\n      }\n      const [messages, meta] = this.processMessages(this.args.thread, result);\n      if (!messages?.length) {\n        return;\n      }\n      this.messagesManager.addMessages(messages);\n      this.args.thread.details = meta;\n      if (direction === _chatConstants.FUTURE) {\n        this.scrollToMessageId(messages[0].id, {\n          position: \"end\",\n          behavior: \"auto\"\n        });\n      } else if (direction === _chatConstants.PAST) {\n        this.scrollToMessageId(messages.at(-1).id);\n      }\n      this.debounceFillPaneAttempt();\n    }\n    static {\n      dt7948.n(this.prototype, \"fetchMoreMessages\", [_object.action]);\n    }\n    scrollToLatestMessage() {\n      if (this.messagesLoader.canLoadMoreFuture) {\n        this.fetchMessages();\n      } else if (this.messagesManager.messages.length > 0) {\n        this.scrollToBottom();\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"scrollToLatestMessage\", [_object.action]);\n    }\n    debounceFillPaneAttempt() {\n      if (!this.messagesLoader.fetchedOnce) {\n        return;\n      }\n      this._debouncedFillPaneAttemptHandler = (0, _debounce.default)(this, this.fillPaneAttempt, 500);\n    }\n    async fillPaneAttempt() {\n      // safeguard\n      if (this.messagesManager.messages.length > 200) {\n        return;\n      }\n      if (!this.messagesLoader.canLoadMorePast) {\n        return;\n      }\n      const firstMessage = this.messagesManager.messages[0];\n      if (!firstMessage?.visible) {\n        return;\n      }\n      await this.fetchMoreMessages({\n        direction: _chatConstants.PAST\n      });\n    }\n    scrollToMessageId(messageId, opts = {\n      highlight: false,\n      position: \"start\",\n      autoExpand: false\n    }) {\n      this._ignoreNextScroll = true;\n      const message = this.messagesManager.findMessage(messageId);\n      (0, _scrollHelpers.scrollListToMessage)(this.scroller, message, opts);\n    }\n    onNewMessage(message) {\n      this.paneState.handleIncomingMessage({\n        scroller: this.scroller,\n        shouldAutoScroll: this.paneState.userIsPresent && this.atBottom,\n        addMessage: () => this.messagesManager.addMessages([message]),\n        onAutoAdd: () => this.debouncedUpdateLastReadMessage()\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"onNewMessage\", [_decorators.bind]);\n    }\n    processMessages(thread, result) {\n      const messages = result.messages.map(messageData => {\n        const ignored = this.currentUser.ignored_users || [];\n        const hidden = ignored.includes(messageData.user.username);\n        return _chatMessage.default.create(thread.channel, {\n          ...messageData,\n          hidden,\n          expanded: !(hidden || messageData.deleted_at),\n          manager: this.messagesManager,\n          thread\n        });\n      });\n      return [messages, result.meta];\n    }\n    static {\n      dt7948.n(this.prototype, \"processMessages\", [_decorators.bind]);\n    }\n    async onSendMessage(message) {\n      if (message.message.length > this.siteSettings.chat_maximum_message_length) {\n        this.dialog.alert((0, _discourseI18n.i18n)(\"chat.message_too_long\", {\n          count: this.siteSettings.chat_maximum_message_length\n        }));\n        return;\n      }\n      await message.cook();\n      if (message.editing) {\n        await this.#sendEditMessage(message);\n      } else {\n        await this.#sendNewMessage(message);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"onSendMessage\", [_object.action]);\n    }\n    fetchMessagesByDate(date) {\n      if (this.messagesLoader.loading) {\n        return;\n      }\n      const message = this.messagesManager.findFirstMessageOfDay(new Date(date));\n      if (message.firstOfResults && this.messagesLoader.canLoadMorePast) {\n        this.fetchMessages({\n          target_date: date,\n          direction: _chatConstants.FUTURE\n        });\n      } else {\n        this.highlightOrFetchMessage(message.id, {\n          position: \"center\"\n        });\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"fetchMessagesByDate\", [_decorators.bind]);\n    }\n    highlightOrFetchMessage(messageId, options = {}) {\n      const message = this.messagesManager.findMessage(messageId);\n      if (message) {\n        this.scrollToMessageId(message.id, Object.assign({\n          highlight: true,\n          position: \"start\",\n          autoExpand: true,\n          behavior: this.capabilities.isIOS ? \"smooth\" : null\n        }, options));\n      } else {\n        this.fetchMessages({\n          target_message_id: messageId\n        });\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"highlightOrFetchMessage\", [_object.action]);\n    }\n    resetComposerMessage() {\n      this.args.thread.draft = _chatMessage.default.createDraftMessage(this.args.thread.channel, {\n        user: this.currentUser,\n        thread: this.args.thread\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"resetComposerMessage\", [_object.action]);\n    }\n    async #sendNewMessage(message) {\n      if (this.chatThreadPane.sending) {\n        return;\n      }\n      this.chatThreadPane.sending = true;\n      this._ignoreNextScroll = true;\n      await this.args.thread.stageMessage(message);\n      this.resetComposerMessage();\n      if (!this.messagesLoader.canLoadMoreFuture) {\n        this.scrollToLatestMessage();\n      }\n      try {\n        const response = await this.chatApi.sendMessage(this.args.thread.channel.id, {\n          message: message.message,\n          in_reply_to_id: null,\n          staged_id: message.id,\n          upload_ids: message.uploads.map(upload => upload.id),\n          thread_id: message.thread.id,\n          client_created_at: message.createdAt.toISOString(),\n          ...(0, _extractCurrentTopicInfo.extractCurrentTopicInfo)(this)\n        });\n        this.args.thread.currentUserMembership ??= _userChatThreadMembership.default.create({\n          notification_level: _notificationLevels.NotificationLevels.TRACKING,\n          last_read_message_id: response.message_id\n        });\n        this.scrollToLatestMessage();\n      } catch (error) {\n        this.#onSendError(message.id, error);\n      } finally {\n        this.chatDraftsManager.remove(this.args.thread.channel.id, this.args.thread.id);\n        this.chatThreadPane.sending = false;\n      }\n    }\n    async #sendEditMessage(message) {\n      this.chatThreadPane.sending = true;\n      const data = {\n        message: message.message,\n        upload_ids: message.uploads.map(upload => upload.id)\n      };\n      this.resetComposerMessage();\n      try {\n        return await this.chatApi.editMessage(message.channel.id, message.id, data);\n      } catch (e) {\n        (0, _ajaxError.popupAjaxError)(e);\n      } finally {\n        this.chatDraftsManager.remove(this.args.thread.channel.id, this.args.thread.id);\n        this.chatThreadPane.sending = false;\n      }\n    }\n    async scrollToBottom() {\n      this._ignoreNextScroll = true;\n      await (0, _scrollHelpers.scrollListToBottom)(this.scroller);\n      this.paneState.clearPendingMessages();\n    }\n    static {\n      dt7948.n(this.prototype, \"scrollToBottom\", [_object.action]);\n    }\n    async scrollToTop() {\n      this._ignoreNextScroll = true;\n      await (0, _scrollHelpers.scrollListToTop)(this.scroller);\n    }\n    static {\n      dt7948.n(this.prototype, \"scrollToTop\", [_object.action]);\n    }\n    resendStagedMessage() {}\n    static {\n      dt7948.n(this.prototype, \"resendStagedMessage\", [_object.action]);\n    }\n    #onSendError(stagedId, error) {\n      const stagedMessage = this.args.thread.messagesManager.findStagedMessage(stagedId);\n      if (stagedMessage) {\n        if (error.jqXHR?.responseJSON?.errors?.length) {\n          stagedMessage.error = error.jqXHR.responseJSON.errors[0];\n        } else {\n          this.chat.markNetworkAsUnreliable();\n          stagedMessage.error = \"network_error\";\n        }\n      }\n      this.resetComposerMessage();\n    }\n    #flushIgnoreNextScroll() {\n      const prev = this._ignoreNextScroll;\n      this._ignoreNextScroll = false;\n      return prev;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div\n        class={{concatClass\n          \"chat-thread\"\n          (if this.messagesLoader.loading \"--loading\")\n          (if this.messagesLoader.fetchedOnce \"--loaded\")\n        }}\n        data-id={{@thread.id}}\n        {{didInsert this.setup}}\n        {{willDestroy this.teardown}}\n      >\n        <ChatMessagesScroller\n          @onRegisterScroller={{this.registerScroller}}\n          @onScroll={{this.onScroll}}\n          @onScrollEnd={{this.onScrollEnd}}\n        >\n          <ChatMessagesContainer @didResizePane={{this.didResizePane}}>\n            {{#each this.messagesManager.messages key=\"id\" as |message|}}\n              <Message\n                @message={{message}}\n                @disableMouseEvents={{this.isScrolling}}\n                @resendStagedMessage={{this.resendStagedMessage}}\n                @fetchMessagesByDate={{this.fetchMessagesByDate}}\n                @context=\"thread\"\n              />\n            {{/each}}\n      \n            {{#unless this.messagesLoader.fetchedOnce}}\n              {{#if this.messagesLoader.loading}}\n                <ChatSkeleton />\n              {{/if}}\n            {{/unless}}\n          </ChatMessagesContainer>\n      \n          <ChatThreadHeading @thread={{@thread}} />\n        </ChatMessagesScroller>\n      \n        <ChatScrollToBottomArrow\n          @onScrollToBottom={{this.scrollToLatestMessage}}\n          @isVisible={{this.paneState.hasPendingContentBelow}}\n        />\n      \n        {{#if this.chatThreadPane.selectingMessages}}\n          <ChatSelectionManager\n            @pane={{this.chatThreadPane}}\n            @messagesManager={{this.messagesManager}}\n          />\n        {{else}}\n          {{#if this.showChannelPreview}}\n            <ChatChannelPreviewCard @channel={{@thread.channel}} />\n          {{else}}\n            <ChatComposerThread\n              @channel={{@channel}}\n              @thread={{@thread}}\n              @onSendMessage={{this.onSendMessage}}\n              @uploadDropZone={{this.uploadDropZone}}\n              @scroller={{this.scroller}}\n            />\n          {{/if}}\n        {{/if}}\n      \n        <ChatUploadDropZone @model={{@thread}} />\n        <ChatThreadTitlePrompt @thread={{@thread}} />\n      </div>\n      */\n      {\n        \"id\": \"YelvfiU9\",\n        \"block\": \"[[[11,0],[16,0,[28,[32,0],[\\\"chat-thread\\\",[52,[30,0,[\\\"messagesLoader\\\",\\\"loading\\\"]],\\\"--loading\\\"],[52,[30,0,[\\\"messagesLoader\\\",\\\"fetchedOnce\\\"]],\\\"--loaded\\\"]],null]],[16,\\\"data-id\\\",[30,1,[\\\"id\\\"]]],[4,[32,1],[[30,0,[\\\"setup\\\"]]],null],[4,[32,2],[[30,0,[\\\"teardown\\\"]]],null],[12],[1,\\\"\\\\n  \\\"],[8,[32,3],null,[[\\\"@onRegisterScroller\\\",\\\"@onScroll\\\",\\\"@onScrollEnd\\\"],[[30,0,[\\\"registerScroller\\\"]],[30,0,[\\\"onScroll\\\"]],[30,0,[\\\"onScrollEnd\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,4],null,[[\\\"@didResizePane\\\"],[[30,0,[\\\"didResizePane\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\\\"messagesManager\\\",\\\"messages\\\"]]],null]],null],\\\"id\\\",[[[1,\\\"        \\\"],[8,[32,5],null,[[\\\"@message\\\",\\\"@disableMouseEvents\\\",\\\"@resendStagedMessage\\\",\\\"@fetchMessagesByDate\\\",\\\"@context\\\"],[[30,2],[30,0,[\\\"isScrolling\\\"]],[30,0,[\\\"resendStagedMessage\\\"]],[30,0,[\\\"fetchMessagesByDate\\\"]],\\\"thread\\\"]],null],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"messagesLoader\\\",\\\"fetchedOnce\\\"]]],[[[41,[30,0,[\\\"messagesLoader\\\",\\\"loading\\\"]],[[[1,\\\"          \\\"],[8,[32,6],null,null,null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n\\\\n    \\\"],[8,[32,7],null,[[\\\"@thread\\\"],[[30,1]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[32,8],null,[[\\\"@onScrollToBottom\\\",\\\"@isVisible\\\"],[[30,0,[\\\"scrollToLatestMessage\\\"]],[30,0,[\\\"paneState\\\",\\\"hasPendingContentBelow\\\"]]]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"chatThreadPane\\\",\\\"selectingMessages\\\"]],[[[1,\\\"    \\\"],[8,[32,9],null,[[\\\"@pane\\\",\\\"@messagesManager\\\"],[[30,0,[\\\"chatThreadPane\\\"]],[30,0,[\\\"messagesManager\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"showChannelPreview\\\"]],[[[1,\\\"      \\\"],[8,[32,10],null,[[\\\"@channel\\\"],[[30,1,[\\\"channel\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[32,11],null,[[\\\"@channel\\\",\\\"@thread\\\",\\\"@onSendMessage\\\",\\\"@uploadDropZone\\\",\\\"@scroller\\\"],[[30,3],[30,1],[30,0,[\\\"onSendMessage\\\"]],[30,0,[\\\"uploadDropZone\\\"]],[30,0,[\\\"scroller\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]]]],[]]],[1,\\\"\\\\n  \\\"],[8,[32,12],null,[[\\\"@model\\\"],[[30,1]]],null],[1,\\\"\\\\n  \\\"],[8,[32,13],null,[[\\\"@thread\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"],[13]],[\\\"@thread\\\",\\\"message\\\",\\\"@channel\\\"],[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\",\\\"unless\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-thread.js\",\n        \"scope\": () => [_concatClass.default, _didInsert.default, _willDestroy.default, _chatMessagesScroller.default, _chatMessagesContainer.default, _chatMessage2.default, _chatSkeleton.default, _chatThreadHeading.default, _scrollToBottomArrow.default, _selectionManager.default, _chatChannelPreviewCard.default, _thread.default, _chatUploadDropZone.default, _chatThreadTitlePrompt.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatThread;\n});","define(\"discourse/plugins/chat/discourse/components/chat-to-topic-selector\", [\"exports\", \"@ember/component\", \"@ember/helper\", \"@ember/object\", \"@ember/object/computed\", \"@ember/template\", \"@ember-decorators/component\", \"discourse/components/choose-topic\", \"discourse/components/radio-button\", \"discourse/components/text-field\", \"discourse/select-kit/components/category-chooser\", \"discourse/select-kit/components/tag-chooser\", \"discourse/truth-helpers\", \"discourse-i18n\", \"@ember/template-factory\"], function (_exports, _component, _helper, _object, _computed, _template, _component2, _chooseTopic, _radioButton, _textField, _categoryChooser, _tagChooser, _truthHelpers, _discourseI18n, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _exports.NEW_TOPIC_SELECTION = _exports.NEW_MESSAGE_SELECTION = _exports.EXISTING_TOPIC_SELECTION = void 0;\n  /* eslint-disable ember/no-classic-components */\n\n  const NEW_TOPIC_SELECTION = _exports.NEW_TOPIC_SELECTION = \"new_topic\";\n  const EXISTING_TOPIC_SELECTION = _exports.EXISTING_TOPIC_SELECTION = \"existing_topic\";\n  const NEW_MESSAGE_SELECTION = _exports.NEW_MESSAGE_SELECTION = \"new_message\";\n  const ChatToTopicSelector = dt7948.c(class ChatToTopicSelector extends _component.default {\n    newTopicSelection = NEW_TOPIC_SELECTION;\n    existingTopicSelection = EXISTING_TOPIC_SELECTION;\n    newMessageSelection = NEW_MESSAGE_SELECTION;\n    selection = null;\n    static {\n      dt7948.g(this.prototype, \"newTopic\", [(0, _computed.equal)(\"selection\", NEW_TOPIC_SELECTION)]);\n    }\n    #newTopic = (dt7948.i(this, \"newTopic\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"existingTopic\", [(0, _computed.equal)(\"selection\", EXISTING_TOPIC_SELECTION)]);\n    }\n    #existingTopic = (dt7948.i(this, \"existingTopic\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"newMessage\", [(0, _computed.equal)(\"selection\", NEW_MESSAGE_SELECTION)]);\n    }\n    #newMessage = (dt7948.i(this, \"newMessage\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"canAddTags\", [(0, _computed.alias)(\"site.can_create_tag\")]);\n    }\n    #canAddTags = (dt7948.i(this, \"canAddTags\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"canTagMessages\", [(0, _computed.alias)(\"site.can_tag_pms\")]);\n    }\n    #canTagMessages = (dt7948.i(this, \"canTagMessages\"), void 0);\n    topicTitle = null;\n    categoryId = null;\n    tags = null;\n    selectedTopicId = null;\n    chatMessageIds = null;\n    chatChannelId = null;\n    get newTopicInstruction() {\n      return (0, _template.trustHTML)(this.instructionLabels[NEW_TOPIC_SELECTION]);\n    }\n    static {\n      dt7948.n(this.prototype, \"newTopicInstruction\", [(0, _object.computed)()]);\n    }\n    get existingTopicInstruction() {\n      return (0, _template.trustHTML)(this.instructionLabels[EXISTING_TOPIC_SELECTION]);\n    }\n    static {\n      dt7948.n(this.prototype, \"existingTopicInstruction\", [(0, _object.computed)()]);\n    }\n    get newMessageInstruction() {\n      return (0, _template.trustHTML)(this.instructionLabels[NEW_MESSAGE_SELECTION]);\n    }\n    static {\n      dt7948.n(this.prototype, \"newMessageInstruction\", [(0, _object.computed)()]);\n    }\n    static {\n      (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"chat-to-topic-selector\" ...attributes>\n        <div class=\"radios\">\n          <label class=\"radio-label\" for=\"move-to-new-topic\">\n            <RadioButton\n              @id=\"move-to-new-topic\"\n              @name=\"move-to-entity\"\n              @value={{this.newTopicSelection}}\n              @selection={{this.selection}}\n            />\n            <b>{{i18n \"topic.split_topic.radio_label\"}}</b>\n          </label>\n      \n          <label class=\"radio-label\" for=\"move-to-existing-topic\">\n            <RadioButton\n              @id=\"move-to-existing-topic\"\n              @name=\"move-to-entity\"\n              @value={{this.existingTopicSelection}}\n              @selection={{this.selection}}\n            />\n            <b>{{i18n \"topic.merge_topic.radio_label\"}}</b>\n          </label>\n      \n          {{#if this.allowNewMessage}}\n            <label class=\"radio-label\" for=\"move-to-new-message\">\n              <RadioButton\n                @id=\"move-to-new-message\"\n                @name=\"move-to-entity\"\n                @value={{this.newMessageSelection}}\n                @selection={{this.selection}}\n              />\n              <b>{{i18n \"topic.move_to_new_message.radio_label\"}}</b>\n            </label>\n          {{/if}}\n        </div>\n      \n        {{#if this.newTopic}}\n          <p>{{this.newTopicInstruction}}</p>\n      \n          <form>\n            <label for=\"split-topic-name\">\n              {{i18n \"topic.split_topic.topic_name\"}}\n            </label>\n      \n            <TextField\n              @value={{this.topicTitle}}\n              @placeholderKey=\"composer.title_placeholder\"\n              @id=\"split-topic-name\"\n            />\n      \n            <label>{{i18n \"categories.category\"}}</label>\n      \n            <CategoryChooser\n              @id=\"new-topic-category-selector\"\n              @value={{this.categoryId}}\n              @onChange={{fn (mut this.categoryId)}}\n              class=\"small\"\n            />\n      \n            {{#if this.canAddTags}}\n              <label>{{i18n \"tagging.tags\"}}</label>\n              <TagChooser\n                @tags={{this.tags}}\n                @filterable={{true}}\n                @categoryId={{this.categoryId}}\n              />\n            {{/if}}\n          </form>\n        {{/if}}\n      \n        {{#if this.existingTopic}}\n          <p>{{this.existingTopicInstruction}}</p>\n          <form>\n            <ChooseTopic\n              @topicChangedCallback={{@topicChangedCallback}}\n              @selectedTopicId={{@selectedTopicId}}\n            />\n          </form>\n        {{/if}}\n      \n        {{#if (and this.allowNewMessage this.newMessage)}}\n          <p>{{this.newMessageInstruction}}</p>\n      \n          <form>\n            <label for=\"split-message-title\">\n              {{i18n \"topic.move_to_new_message.message_title\"}}\n            </label>\n      \n            <TextField\n              @value={{this.topicTitle}}\n              @placeholderKey=\"composer.title_placeholder\"\n              @id=\"split-message-title\"\n            />\n      \n            {{#if this.canTagMessages}}\n              <label>{{i18n \"tagging.tags\"}}</label>\n              <TagChooser @tags={{this.tags}} @filterable={{true}} />\n            {{/if}}\n          </form>\n        {{/if}}\n      </div>\n      */\n      {\n        \"id\": \"ahfjcIQD\",\n        \"block\": \"[[[11,0],[24,0,\\\"chat-to-topic-selector\\\"],[17,1],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"radios\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"label\\\"],[14,0,\\\"radio-label\\\"],[14,\\\"for\\\",\\\"move-to-new-topic\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[32,0],null,[[\\\"@id\\\",\\\"@name\\\",\\\"@value\\\",\\\"@selection\\\"],[\\\"move-to-new-topic\\\",\\\"move-to-entity\\\",[30,0,[\\\"newTopicSelection\\\"]],[30,0,[\\\"selection\\\"]]]],null],[1,\\\"\\\\n      \\\"],[10,\\\"b\\\"],[12],[1,[28,[32,1],[\\\"topic.split_topic.radio_label\\\"],null]],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,\\\"label\\\"],[14,0,\\\"radio-label\\\"],[14,\\\"for\\\",\\\"move-to-existing-topic\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[32,0],null,[[\\\"@id\\\",\\\"@name\\\",\\\"@value\\\",\\\"@selection\\\"],[\\\"move-to-existing-topic\\\",\\\"move-to-entity\\\",[30,0,[\\\"existingTopicSelection\\\"]],[30,0,[\\\"selection\\\"]]]],null],[1,\\\"\\\\n      \\\"],[10,\\\"b\\\"],[12],[1,[28,[32,1],[\\\"topic.merge_topic.radio_label\\\"],null]],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"allowNewMessage\\\"]],[[[1,\\\"      \\\"],[10,\\\"label\\\"],[14,0,\\\"radio-label\\\"],[14,\\\"for\\\",\\\"move-to-new-message\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[32,0],null,[[\\\"@id\\\",\\\"@name\\\",\\\"@value\\\",\\\"@selection\\\"],[\\\"move-to-new-message\\\",\\\"move-to-entity\\\",[30,0,[\\\"newMessageSelection\\\"]],[30,0,[\\\"selection\\\"]]]],null],[1,\\\"\\\\n        \\\"],[10,\\\"b\\\"],[12],[1,[28,[32,1],[\\\"topic.move_to_new_message.radio_label\\\"],null]],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"newTopic\\\"]],[[[1,\\\"    \\\"],[10,2],[12],[1,[30,0,[\\\"newTopicInstruction\\\"]]],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,\\\"form\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"split-topic-name\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,1],[\\\"topic.split_topic.topic_name\\\"],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[8,[32,2],null,[[\\\"@value\\\",\\\"@placeholderKey\\\",\\\"@id\\\"],[[30,0,[\\\"topicTitle\\\"]],\\\"composer.title_placeholder\\\",\\\"split-topic-name\\\"]],null],[1,\\\"\\\\n\\\\n      \\\"],[10,\\\"label\\\"],[12],[1,[28,[32,1],[\\\"categories.category\\\"],null]],[13],[1,\\\"\\\\n\\\\n      \\\"],[8,[32,3],[[24,0,\\\"small\\\"]],[[\\\"@id\\\",\\\"@value\\\",\\\"@onChange\\\"],[\\\"new-topic-category-selector\\\",[30,0,[\\\"categoryId\\\"]],[28,[32,4],[[28,[31,1],[[30,0,[\\\"categoryId\\\"]]],null]],null]]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"canAddTags\\\"]],[[[1,\\\"        \\\"],[10,\\\"label\\\"],[12],[1,[28,[32,1],[\\\"tagging.tags\\\"],null]],[13],[1,\\\"\\\\n        \\\"],[8,[32,5],null,[[\\\"@tags\\\",\\\"@filterable\\\",\\\"@categoryId\\\"],[[30,0,[\\\"tags\\\"]],true,[30,0,[\\\"categoryId\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"existingTopic\\\"]],[[[1,\\\"    \\\"],[10,2],[12],[1,[30,0,[\\\"existingTopicInstruction\\\"]]],[13],[1,\\\"\\\\n    \\\"],[10,\\\"form\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[32,6],null,[[\\\"@topicChangedCallback\\\",\\\"@selectedTopicId\\\"],[[30,2],[30,3]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[32,7],[[30,0,[\\\"allowNewMessage\\\"]],[30,0,[\\\"newMessage\\\"]]],null],[[[1,\\\"    \\\"],[10,2],[12],[1,[30,0,[\\\"newMessageInstruction\\\"]]],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,\\\"form\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"split-message-title\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,1],[\\\"topic.move_to_new_message.message_title\\\"],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[8,[32,2],null,[[\\\"@value\\\",\\\"@placeholderKey\\\",\\\"@id\\\"],[[30,0,[\\\"topicTitle\\\"]],\\\"composer.title_placeholder\\\",\\\"split-message-title\\\"]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"canTagMessages\\\"]],[[[1,\\\"        \\\"],[10,\\\"label\\\"],[12],[1,[28,[32,1],[\\\"tagging.tags\\\"],null]],[13],[1,\\\"\\\\n        \\\"],[8,[32,5],null,[[\\\"@tags\\\",\\\"@filterable\\\"],[[30,0,[\\\"tags\\\"]],true]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[13]],[\\\"&attrs\\\",\\\"@topicChangedCallback\\\",\\\"@selectedTopicId\\\"],[\\\"if\\\",\\\"mut\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-to-topic-selector.js\",\n        \"scope\": () => [_radioButton.default, _discourseI18n.i18n, _textField.default, _categoryChooser.default, _helper.fn, _tagChooser.default, _chooseTopic.default, _truthHelpers.and],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }, [(0, _component2.tagName)(\"\")]);\n  var _default = _exports.default = ChatToTopicSelector;\n});","define(\"discourse/plugins/chat/discourse/components/chat-upload-drop-zone\", [\"exports\", \"@glimmer/component\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/models/chat-thread\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _discourseI18n, _chatThread, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatUploadDropZone extends _component.default {\n    get title() {\n      if (this.#isThread()) {\n        return (0, _discourseI18n.i18n)(\"chat.upload_to_thread\");\n      } else {\n        return (0, _discourseI18n.i18n)(\"chat.upload_to_channel\", {\n          title: this.args.model.title\n        });\n      }\n    }\n    #isThread() {\n      return this.args.model instanceof _chatThread.default;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"chat-upload-drop-zone\">\n        <div class=\"chat-upload-drop-zone__content\">\n          <div class=\"chat-upload-drop-zone__background\">\n            <svg\n              width=\"94\"\n              height=\"90\"\n              viewBox=\"0 0 94 90\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"M94 40.5591C94 69.8685 64.0686 90 40.9592 90C17.8499 90 0 83.9085 0 60.6907C0 37.4729 28.458 0 51.5674 0C74.6768 0 94 17.3413 94 40.5591Z\"\n                fill=\"#D1F0FF\"\n              ></path>\n            </svg>\n          </div>\n          <div class=\"chat-upload-drop-zone__illustration\">\n            <svg\n              width=\"106\"\n              height=\"84\"\n              viewBox=\"0 0 106 84\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <rect\n                x=\"55.832\"\n                y=\"6.82959\"\n                width=\"45.7854\"\n                height=\"33.8408\"\n                transform=\"rotate(13.4039 55.832 6.82959)\"\n                fill=\"#D9D9D9\"\n              ></rect>\n              <path\n                d=\"M100.66 13.7645L61.1414 4.34705C58.6715 3.75846 56.1786 5.37298 55.59 7.84288L47.6214 41.2815C47.0102 43.8464 48.5297 46.3167 50.9996 46.9053L90.518 56.3227C92.9879 56.9113 95.5532 55.4145 96.1644 52.8496L104.133 19.4109C104.722 16.941 103.225 14.3757 100.66 13.7645ZM58.7093 41.5144C58.5961 41.9894 58.1482 42.1838 57.7682 42.0933L53.2084 41.0067C52.7334 40.8935 52.5163 40.5406 52.6295 40.0656L53.7161 35.5058C53.8067 35.1258 54.1822 34.8137 54.6572 34.9269L59.122 35.9909C59.502 36.0815 59.7915 36.552 59.7009 36.932L58.7093 41.5144ZM61.6069 29.3549C61.4938 29.8299 61.0459 30.0243 60.6659 29.9338L56.1061 28.8472C55.6311 28.734 55.414 28.3811 55.5272 27.9061L56.6138 23.3463C56.7044 22.9663 57.0799 22.6542 57.5549 22.7674L62.0197 23.8314C62.3997 23.922 62.6891 24.3925 62.5986 24.7725L61.5119 29.3323L61.6069 29.3549ZM64.5046 17.1954C64.3914 17.6704 63.9435 17.8648 63.5635 17.7743L59.0037 16.6877C58.5287 16.5745 58.3117 16.2216 58.4249 15.7466L59.5115 11.1868C59.602 10.8068 59.9776 10.4947 60.4526 10.6079L64.9174 11.6719C65.2974 11.7625 65.5868 12.233 65.4962 12.613L64.5046 17.1954ZM81.6894 46.1876C81.4857 47.0426 80.5673 47.5264 79.8073 47.3453L64.6079 43.7232C63.753 43.5195 63.2464 42.6961 63.4502 41.8411L65.6234 32.7215C65.8045 31.9615 66.6506 31.36 67.5056 31.5637L82.705 35.1858C83.4649 35.3669 84.0438 36.308 83.8627 37.068L81.6894 46.1876ZM86.036 27.9483C85.8322 28.8033 84.9138 29.2872 84.1538 29.1061L68.9544 25.484C68.0995 25.2802 67.593 24.4568 67.7967 23.6018L69.97 14.4822C70.1511 13.7222 70.9971 13.1207 71.8521 13.3245L87.0515 16.9466C87.8114 17.1277 88.3903 18.0687 88.2092 18.8287L86.036 27.9483ZM92.1479 49.483C92.0347 49.958 91.5868 50.1524 91.2068 50.0619L86.742 48.9979C86.267 48.8847 86.05 48.5318 86.1631 48.0568L87.2498 43.497C87.3403 43.117 87.8109 42.8276 88.1908 42.9181L92.7507 44.0048C93.1306 44.0953 93.4201 44.5659 93.3295 44.9458L92.2429 49.5057L92.1479 49.483ZM95.0456 37.3235C94.9324 37.7985 94.4845 37.9929 94.1045 37.9024L89.6397 36.8384C89.1647 36.7252 88.9476 36.3723 89.0608 35.8973L90.1474 31.3375C90.238 30.9575 90.6135 30.6455 91.0885 30.7586L95.5533 31.8226C95.9333 31.9132 96.2228 32.3837 96.1322 32.7637L95.0456 37.3235ZM97.9432 25.164C97.8301 25.639 97.3822 25.8334 97.0022 25.7429L92.5374 24.6789C92.0624 24.5657 91.8453 24.2128 91.9585 23.7378L93.0451 19.178C93.1357 18.798 93.5112 18.486 93.8912 18.5765L98.356 19.6405C98.736 19.731 99.0254 20.2016 98.9349 20.5816L97.8483 25.1414L97.9432 25.164Z\"\n                fill=\"#AFAFAF\"\n              ></path>\n              <path\n                d=\"M30.7898 24.814L27.2823 9.2672L4.41944 14.4252C2.81904 14.7863 1.95958 16.3017 2.29486 17.7878L14.2615 70.8296C14.6226 72.43 16.0236 73.3153 17.624 72.9542L56.0337 64.2887C57.5198 63.9534 58.5193 62.5266 58.1582 60.9262L49.699 23.4311L34.1523 26.9385C32.5519 27.2996 31.1508 26.4144 30.7898 24.814ZM48.719 19.0871C48.5643 18.4012 48.0666 17.7927 47.4804 17.3243L33.7501 8.64894C33.0754 8.32063 32.3121 8.13243 31.6263 8.28717L30.9404 8.44191L34.2415 23.0742L48.8738 19.773L48.719 19.0871Z\"\n                fill=\"#0AADFF\"\n              ></path>\n              <rect\n                x=\"41.7334\"\n                y=\"40.3967\"\n                width=\"37.6309\"\n                height=\"28.6511\"\n                transform=\"rotate(6.29289 41.7334 40.3967)\"\n                fill=\"#66CCFF\"\n              ></rect>\n              <path\n                d=\"M76.768 40.4721L44.4638 36.9097C42.3671 36.6785 40.548 38.2071 40.3254 40.2261L37.8591 62.5905C37.6279 64.6872 39.0788 66.4977 41.1755 66.729L73.4796 70.2913C75.4987 70.514 77.3869 69.0716 77.6181 66.9749L80.0843 44.6105C80.307 42.5915 78.787 40.6947 76.768 40.4721ZM73.4248 66.5125L42.0524 63.0529C41.7418 63.0187 41.6036 62.8462 41.6379 62.5356L44.0014 41.103C44.0271 40.8701 44.2081 40.6542 44.5187 40.6885L75.891 44.1481C76.124 44.1738 76.3312 44.4324 76.3056 44.6654L73.9421 66.098C73.9078 66.4086 73.6577 66.5382 73.4248 66.5125ZM49.9226 44.4284C48.1365 44.2314 46.6623 45.4836 46.4739 47.192C46.2769 48.978 47.4514 50.4437 49.2375 50.6407C50.9459 50.8291 52.4892 49.6631 52.6862 47.8771C52.8746 46.1687 51.631 44.6168 49.9226 44.4284ZM45.725 59.6852L70.5743 62.4255L71.2594 56.2131L65.1708 48.7036C64.8254 48.2725 64.2818 48.2126 63.8507 48.558L53.5908 56.7799L50.8186 53.4088C50.4732 52.9777 49.9296 52.9178 49.4985 53.2632L46.136 55.9578L45.725 59.6852Z\"\n                fill=\"white\"\n              ></path>\n              <path\n                d=\"M37.8174 63.0181L77.5892 66.862L77.012 72.8342C76.9057 73.9336 75.9283 74.7388 74.8288 74.6325L39.0385 71.1734C37.939 71.0671 37.1339 70.0897 37.2402 68.9902L37.8174 63.0181Z\"\n                fill=\"white\"\n              ></path>\n            </svg>\n          </div>\n          <div class=\"chat-upload-drop-zone__text\">\n            <span class=\"chat-upload-drop-zone__text__title\">\n              {{this.title}}\n            </span>\n          </div>\n        </div>\n      </div>\n      */\n      {\n        \"id\": \"ZZSTDV0E\",\n        \"block\": \"[[[10,0],[14,0,\\\"chat-upload-drop-zone\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-upload-drop-zone__content\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-upload-drop-zone__background\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"svg\\\"],[14,\\\"width\\\",\\\"94\\\"],[14,\\\"height\\\",\\\"90\\\"],[14,\\\"viewBox\\\",\\\"0 0 94 90\\\"],[14,\\\"fill\\\",\\\"none\\\"],[14,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"path\\\"],[14,\\\"d\\\",\\\"M94 40.5591C94 69.8685 64.0686 90 40.9592 90C17.8499 90 0 83.9085 0 60.6907C0 37.4729 28.458 0 51.5674 0C74.6768 0 94 17.3413 94 40.5591Z\\\"],[14,\\\"fill\\\",\\\"#D1F0FF\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-upload-drop-zone__illustration\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"svg\\\"],[14,\\\"width\\\",\\\"106\\\"],[14,\\\"height\\\",\\\"84\\\"],[14,\\\"viewBox\\\",\\\"0 0 106 84\\\"],[14,\\\"fill\\\",\\\"none\\\"],[14,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"rect\\\"],[14,\\\"x\\\",\\\"55.832\\\"],[14,\\\"y\\\",\\\"6.82959\\\"],[14,\\\"width\\\",\\\"45.7854\\\"],[14,\\\"height\\\",\\\"33.8408\\\"],[14,\\\"transform\\\",\\\"rotate(13.4039 55.832 6.82959)\\\"],[14,\\\"fill\\\",\\\"#D9D9D9\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[10,\\\"path\\\"],[14,\\\"d\\\",\\\"M100.66 13.7645L61.1414 4.34705C58.6715 3.75846 56.1786 5.37298 55.59 7.84288L47.6214 41.2815C47.0102 43.8464 48.5297 46.3167 50.9996 46.9053L90.518 56.3227C92.9879 56.9113 95.5532 55.4145 96.1644 52.8496L104.133 19.4109C104.722 16.941 103.225 14.3757 100.66 13.7645ZM58.7093 41.5144C58.5961 41.9894 58.1482 42.1838 57.7682 42.0933L53.2084 41.0067C52.7334 40.8935 52.5163 40.5406 52.6295 40.0656L53.7161 35.5058C53.8067 35.1258 54.1822 34.8137 54.6572 34.9269L59.122 35.9909C59.502 36.0815 59.7915 36.552 59.7009 36.932L58.7093 41.5144ZM61.6069 29.3549C61.4938 29.8299 61.0459 30.0243 60.6659 29.9338L56.1061 28.8472C55.6311 28.734 55.414 28.3811 55.5272 27.9061L56.6138 23.3463C56.7044 22.9663 57.0799 22.6542 57.5549 22.7674L62.0197 23.8314C62.3997 23.922 62.6891 24.3925 62.5986 24.7725L61.5119 29.3323L61.6069 29.3549ZM64.5046 17.1954C64.3914 17.6704 63.9435 17.8648 63.5635 17.7743L59.0037 16.6877C58.5287 16.5745 58.3117 16.2216 58.4249 15.7466L59.5115 11.1868C59.602 10.8068 59.9776 10.4947 60.4526 10.6079L64.9174 11.6719C65.2974 11.7625 65.5868 12.233 65.4962 12.613L64.5046 17.1954ZM81.6894 46.1876C81.4857 47.0426 80.5673 47.5264 79.8073 47.3453L64.6079 43.7232C63.753 43.5195 63.2464 42.6961 63.4502 41.8411L65.6234 32.7215C65.8045 31.9615 66.6506 31.36 67.5056 31.5637L82.705 35.1858C83.4649 35.3669 84.0438 36.308 83.8627 37.068L81.6894 46.1876ZM86.036 27.9483C85.8322 28.8033 84.9138 29.2872 84.1538 29.1061L68.9544 25.484C68.0995 25.2802 67.593 24.4568 67.7967 23.6018L69.97 14.4822C70.1511 13.7222 70.9971 13.1207 71.8521 13.3245L87.0515 16.9466C87.8114 17.1277 88.3903 18.0687 88.2092 18.8287L86.036 27.9483ZM92.1479 49.483C92.0347 49.958 91.5868 50.1524 91.2068 50.0619L86.742 48.9979C86.267 48.8847 86.05 48.5318 86.1631 48.0568L87.2498 43.497C87.3403 43.117 87.8109 42.8276 88.1908 42.9181L92.7507 44.0048C93.1306 44.0953 93.4201 44.5659 93.3295 44.9458L92.2429 49.5057L92.1479 49.483ZM95.0456 37.3235C94.9324 37.7985 94.4845 37.9929 94.1045 37.9024L89.6397 36.8384C89.1647 36.7252 88.9476 36.3723 89.0608 35.8973L90.1474 31.3375C90.238 30.9575 90.6135 30.6455 91.0885 30.7586L95.5533 31.8226C95.9333 31.9132 96.2228 32.3837 96.1322 32.7637L95.0456 37.3235ZM97.9432 25.164C97.8301 25.639 97.3822 25.8334 97.0022 25.7429L92.5374 24.6789C92.0624 24.5657 91.8453 24.2128 91.9585 23.7378L93.0451 19.178C93.1357 18.798 93.5112 18.486 93.8912 18.5765L98.356 19.6405C98.736 19.731 99.0254 20.2016 98.9349 20.5816L97.8483 25.1414L97.9432 25.164Z\\\"],[14,\\\"fill\\\",\\\"#AFAFAF\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[10,\\\"path\\\"],[14,\\\"d\\\",\\\"M30.7898 24.814L27.2823 9.2672L4.41944 14.4252C2.81904 14.7863 1.95958 16.3017 2.29486 17.7878L14.2615 70.8296C14.6226 72.43 16.0236 73.3153 17.624 72.9542L56.0337 64.2887C57.5198 63.9534 58.5193 62.5266 58.1582 60.9262L49.699 23.4311L34.1523 26.9385C32.5519 27.2996 31.1508 26.4144 30.7898 24.814ZM48.719 19.0871C48.5643 18.4012 48.0666 17.7927 47.4804 17.3243L33.7501 8.64894C33.0754 8.32063 32.3121 8.13243 31.6263 8.28717L30.9404 8.44191L34.2415 23.0742L48.8738 19.773L48.719 19.0871Z\\\"],[14,\\\"fill\\\",\\\"#0AADFF\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[10,\\\"rect\\\"],[14,\\\"x\\\",\\\"41.7334\\\"],[14,\\\"y\\\",\\\"40.3967\\\"],[14,\\\"width\\\",\\\"37.6309\\\"],[14,\\\"height\\\",\\\"28.6511\\\"],[14,\\\"transform\\\",\\\"rotate(6.29289 41.7334 40.3967)\\\"],[14,\\\"fill\\\",\\\"#66CCFF\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[10,\\\"path\\\"],[14,\\\"d\\\",\\\"M76.768 40.4721L44.4638 36.9097C42.3671 36.6785 40.548 38.2071 40.3254 40.2261L37.8591 62.5905C37.6279 64.6872 39.0788 66.4977 41.1755 66.729L73.4796 70.2913C75.4987 70.514 77.3869 69.0716 77.6181 66.9749L80.0843 44.6105C80.307 42.5915 78.787 40.6947 76.768 40.4721ZM73.4248 66.5125L42.0524 63.0529C41.7418 63.0187 41.6036 62.8462 41.6379 62.5356L44.0014 41.103C44.0271 40.8701 44.2081 40.6542 44.5187 40.6885L75.891 44.1481C76.124 44.1738 76.3312 44.4324 76.3056 44.6654L73.9421 66.098C73.9078 66.4086 73.6577 66.5382 73.4248 66.5125ZM49.9226 44.4284C48.1365 44.2314 46.6623 45.4836 46.4739 47.192C46.2769 48.978 47.4514 50.4437 49.2375 50.6407C50.9459 50.8291 52.4892 49.6631 52.6862 47.8771C52.8746 46.1687 51.631 44.6168 49.9226 44.4284ZM45.725 59.6852L70.5743 62.4255L71.2594 56.2131L65.1708 48.7036C64.8254 48.2725 64.2818 48.2126 63.8507 48.558L53.5908 56.7799L50.8186 53.4088C50.4732 52.9777 49.9296 52.9178 49.4985 53.2632L46.136 55.9578L45.725 59.6852Z\\\"],[14,\\\"fill\\\",\\\"white\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[10,\\\"path\\\"],[14,\\\"d\\\",\\\"M37.8174 63.0181L77.5892 66.862L77.012 72.8342C76.9057 73.9336 75.9283 74.7388 74.8288 74.6325L39.0385 71.1734C37.939 71.0671 37.1339 70.0897 37.2402 68.9902L37.8174 63.0181Z\\\"],[14,\\\"fill\\\",\\\"white\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-upload-drop-zone__text\\\"],[12],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"chat-upload-drop-zone__text__title\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[30,0,[\\\"title\\\"]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-upload-drop-zone.js\",\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatUploadDropZone;\n});","define(\"discourse/plugins/chat/discourse/components/chat-upload\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/modifier\", \"@ember/object\", \"@ember/service\", \"@ember/template\", \"discourse/lib/uploads\", \"discourse/truth-helpers\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _modifier, _object, _service, _template, _uploads, _truthHelpers, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatUpload extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"capabilities\", [_service.service]);\n    }\n    #capabilities = (dt7948.i(this, \"capabilities\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"loaded\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #loaded = (dt7948.i(this, \"loaded\"), void 0);\n    IMAGE_TYPE = \"image\";\n    VIDEO_TYPE = \"video\";\n    AUDIO_TYPE = \"audio\";\n    ATTACHMENT_TYPE = \"attachment\";\n    get type() {\n      if ((0, _uploads.isImage)(this.args.upload.original_filename)) {\n        return this.IMAGE_TYPE;\n      }\n      if ((0, _uploads.isVideo)(this.args.upload.original_filename)) {\n        return this.VIDEO_TYPE;\n      }\n      if ((0, _uploads.isAudio)(this.args.upload.original_filename)) {\n        return this.AUDIO_TYPE;\n      }\n      return this.ATTACHMENT_TYPE;\n    }\n    get size() {\n      const width = this.args.upload.width;\n      const height = this.args.upload.height;\n      const ratio = Math.min(this.siteSettings.max_image_width / width, this.siteSettings.max_image_height / height);\n      return {\n        width,\n        thumb_width: width * ratio,\n        height,\n        thumb_height: height * ratio\n      };\n    }\n    get imageUrl() {\n      return this.args.upload.thumbnail?.url ?? this.args.upload.url;\n    }\n    get imageStyle() {\n      if (this.args.upload.dominant_color && !this.loaded) {\n        return (0, _template.trustHTML)(`background-color: #${this.args.upload.dominant_color};`);\n      }\n    }\n    get videoSourceUrl() {\n      const baseUrl = this.args.upload.optimized_video?.url ?? this.args.upload.url;\n      return this.capabilities.isIOS || this.capabilities.isSafari ? `${baseUrl}#t=0.001` : baseUrl;\n    }\n    imageLoaded() {\n      this.loaded = true;\n    }\n    static {\n      dt7948.n(this.prototype, \"imageLoaded\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if (eq this.type this.IMAGE_TYPE)}}\n        <img\n          class=\"chat-img-upload lightbox\"\n          data-orig-src={{@upload.short_url}}\n          data-large-src={{@upload.url}}\n          data-download-href={{@upload.short_path}}\n          height={{this.size.thumb_height}}\n          width={{this.size.thumb_width}}\n          src={{this.imageUrl}}\n          style={{this.imageStyle}}\n          loading=\"lazy\"\n          tabindex=\"0\"\n          data-target-width={{this.size.width}}\n          data-target-height={{this.size.height}}\n          data-dominant-color={{@upload.dominant_color}}\n          {{on \"load\" this.imageLoaded}}\n        />\n      {{else if (eq this.type this.VIDEO_TYPE)}}\n        <video class=\"chat-video-upload\" preload=\"metadata\" height=\"150\" controls>\n          <source src={{this.videoSourceUrl}} />\n        </video>\n      {{else if (eq this.type this.AUDIO_TYPE)}}\n        <audio class=\"chat-audio-upload\" preload=\"metadata\" controls>\n          <source src={{@upload.url}} />\n        </audio>\n      {{else}}\n        <a\n          class=\"chat-other-upload\"\n          data-orig-href={{@upload.short_url}}\n          href={{@upload.url}}\n        >\n          {{@upload.original_filename}}\n        </a>\n      {{/if}}\n      */\n      {\n        \"id\": \"41yD9e76\",\n        \"block\": \"[[[41,[28,[32,0],[[30,0,[\\\"type\\\"]],[30,0,[\\\"IMAGE_TYPE\\\"]]],null],[[[1,\\\"  \\\"],[11,\\\"img\\\"],[24,0,\\\"chat-img-upload lightbox\\\"],[16,\\\"data-orig-src\\\",[30,1,[\\\"short_url\\\"]]],[16,\\\"data-large-src\\\",[30,1,[\\\"url\\\"]]],[16,\\\"data-download-href\\\",[30,1,[\\\"short_path\\\"]]],[16,\\\"height\\\",[30,0,[\\\"size\\\",\\\"thumb_height\\\"]]],[16,\\\"width\\\",[30,0,[\\\"size\\\",\\\"thumb_width\\\"]]],[16,\\\"src\\\",[30,0,[\\\"imageUrl\\\"]]],[16,5,[30,0,[\\\"imageStyle\\\"]]],[24,\\\"loading\\\",\\\"lazy\\\"],[24,\\\"tabindex\\\",\\\"0\\\"],[16,\\\"data-target-width\\\",[30,0,[\\\"size\\\",\\\"width\\\"]]],[16,\\\"data-target-height\\\",[30,0,[\\\"size\\\",\\\"height\\\"]]],[16,\\\"data-dominant-color\\\",[30,1,[\\\"dominant_color\\\"]]],[4,[32,1],[\\\"load\\\",[30,0,[\\\"imageLoaded\\\"]]],null],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[32,0],[[30,0,[\\\"type\\\"]],[30,0,[\\\"VIDEO_TYPE\\\"]]],null],[[[1,\\\"  \\\"],[10,\\\"video\\\"],[14,0,\\\"chat-video-upload\\\"],[14,\\\"preload\\\",\\\"metadata\\\"],[14,\\\"height\\\",\\\"150\\\"],[14,\\\"controls\\\",\\\"\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"source\\\"],[15,\\\"src\\\",[30,0,[\\\"videoSourceUrl\\\"]]],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[32,0],[[30,0,[\\\"type\\\"]],[30,0,[\\\"AUDIO_TYPE\\\"]]],null],[[[1,\\\"  \\\"],[10,\\\"audio\\\"],[14,0,\\\"chat-audio-upload\\\"],[14,\\\"preload\\\",\\\"metadata\\\"],[14,\\\"controls\\\",\\\"\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"source\\\"],[15,\\\"src\\\",[30,1,[\\\"url\\\"]]],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"  \\\"],[10,3],[14,0,\\\"chat-other-upload\\\"],[15,\\\"data-orig-href\\\",[30,1,[\\\"short_url\\\"]]],[15,6,[30,1,[\\\"url\\\"]]],[12],[1,\\\"\\\\n    \\\"],[1,[30,1,[\\\"original_filename\\\"]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[]]]],[]]]],[\\\"@upload\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-upload.js\",\n        \"scope\": () => [_truthHelpers.eq, _modifier.on],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatUpload;\n});","define(\"discourse/plugins/chat/discourse/components/chat-user-avatar\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"@ember/template\", \"discourse/helpers/concat-class\", \"discourse/helpers/user-avatar\", \"discourse/lib/url\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _template, _concatClass, _userAvatar, _url, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatUserAvatar extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    get avatar() {\n      return (0, _template.trustHTML)((0, _userAvatar.renderAvatar)(this.args.user, {\n        imageSize: this.avatarSize\n      }));\n    }\n    get interactive() {\n      return this.args.interactive ?? true;\n    }\n    get avatarSize() {\n      return this.args.avatarSize || \"tiny\";\n    }\n    get showPresence() {\n      return this.args.showPresence ?? true;\n    }\n    get isOnline() {\n      const users = (this.args.chat || this.chat).presenceChannel?.users;\n      return this.showPresence && !!users?.find(({\n        id,\n        username\n      }) => this.args.user?.id === id || this.args.user?.username === username);\n    }\n    get userPath() {\n      return (0, _url.userPath)(this.args.user.username);\n    }\n    get isFullPageActive() {\n      return this.chatStateManager.isFullPageActive ? \"true\" : \"false\";\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div\n        class={{concatClass \"chat-user-avatar\" (if this.isOnline \"is-online\")}}\n        data-username={{@user.username}}\n      >\n        {{#if this.interactive}}\n          <a\n            class=\"chat-user-avatar__container\"\n            href={{this.userPath}}\n            data-user-card={{@user.username}}\n          >\n            {{this.avatar}}\n          </a>\n        {{else}}\n          <span class=\"chat-user-avatar__container\">\n            {{this.avatar}}\n          </span>\n        {{/if}}\n      </div>\n      */\n      {\n        \"id\": \"cEqS8xLS\",\n        \"block\": \"[[[10,0],[15,0,[28,[32,0],[\\\"chat-user-avatar\\\",[52,[30,0,[\\\"isOnline\\\"]],\\\"is-online\\\"]],null]],[15,\\\"data-username\\\",[30,1,[\\\"username\\\"]]],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"interactive\\\"]],[[[1,\\\"    \\\"],[10,3],[14,0,\\\"chat-user-avatar__container\\\"],[15,6,[30,0,[\\\"userPath\\\"]]],[15,\\\"data-user-card\\\",[30,1,[\\\"username\\\"]]],[12],[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"avatar\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,1],[14,0,\\\"chat-user-avatar__container\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"avatar\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[13]],[\\\"@user\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-user-avatar.js\",\n        \"scope\": () => [_concatClass.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatUserAvatar;\n});","define(\"discourse/plugins/chat/discourse/components/chat-user-display-name\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"discourse/helpers/concat-class\", \"discourse/lib/utilities\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _concatClass, _utilities, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatUserDisplayName extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    get shouldPrioritizeNameInUx() {\n      return !this.siteSettings.prioritize_username_in_ux;\n    }\n    get hasValidName() {\n      return this.args.user?.name && this.args.user.name.trim().length > 0;\n    }\n    get formattedUsername() {\n      return (0, _utilities.formatUsername)(this.args.user?.username);\n    }\n    get shouldShowNameFirst() {\n      return this.shouldPrioritizeNameInUx && this.hasValidName;\n    }\n    get shouldShowNameLast() {\n      return !this.shouldPrioritizeNameInUx && this.hasValidName;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <span class=\"chat-user-display-name\">\n        {{#if this.shouldShowNameFirst}}\n          <span class=\"chat-user-display-name__name -first\">{{@user.name}}</span>\n        {{/if}}\n      \n        <span\n          class={{concatClass\n            \"chat-user-display-name__username\"\n            (unless this.shouldShowNameFirst \"-first\")\n          }}\n        >\n          {{this.formattedUsername}}\n        </span>\n      \n        {{#if this.shouldShowNameLast}}\n          <span class=\"chat-user-display-name__name\">{{@user.name}}</span>\n        {{/if}}\n      </span>\n      */\n      {\n        \"id\": \"uLEWmata\",\n        \"block\": \"[[[10,1],[14,0,\\\"chat-user-display-name\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"shouldShowNameFirst\\\"]],[[[1,\\\"    \\\"],[10,1],[14,0,\\\"chat-user-display-name__name -first\\\"],[12],[1,[30,1,[\\\"name\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[10,1],[15,0,[28,[32,0],[\\\"chat-user-display-name__username\\\",[52,[51,[30,0,[\\\"shouldShowNameFirst\\\"]]],\\\"-first\\\"]],null]],[12],[1,\\\"\\\\n    \\\"],[1,[30,0,[\\\"formattedUsername\\\"]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"shouldShowNameLast\\\"]],[[[1,\\\"    \\\"],[10,1],[14,0,\\\"chat-user-display-name__name\\\"],[12],[1,[30,1,[\\\"name\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[13]],[\\\"@user\\\"],[\\\"if\\\",\\\"unless\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-user-display-name.js\",\n        \"scope\": () => [_concatClass.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatUserDisplayName;\n});","define(\"discourse/plugins/chat/discourse/components/chat-user-info\", [\"exports\", \"@glimmer/component\", \"ember-modifier\", \"discourse/components/user-status-message\", \"discourse/lib/url\", \"discourse/plugins/chat/discourse/components/chat-user-avatar\", \"discourse/plugins/chat/discourse/components/chat-user-display-name\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _emberModifier, _userStatusMessage, _url, _chatUserAvatar, _chatUserDisplayName, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatUserInfo extends _component.default {\n    trackUserStatus = (0, _emberModifier.modifier)((element, [user]) => {\n      user.statusManager.trackStatus();\n      return () => {\n        user.statusManager.stopTrackingStatus();\n      };\n    });\n    get avatarSize() {\n      return this.args.avatarSize ?? \"medium\";\n    }\n    get userPath() {\n      return (0, _url.userPath)(this.args.user.username);\n    }\n    get interactive() {\n      return this.args.interactive ?? false;\n    }\n    get showStatus() {\n      return this.args.showStatus ?? false;\n    }\n    get showStatusDescription() {\n      return this.args.showStatusDescription ?? false;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if @user}}\n        <ChatUserAvatar\n          @user={{@user}}\n          @avatarSize={{this.avatarSize}}\n          @interactive={{this.interactive}}\n        />\n      \n        {{#if this.interactive}}\n          <a href={{this.userPath}} data-user-card={{@user.username}}>\n            <ChatUserDisplayName @user={{@user}} />\n          </a>\n        {{else}}\n          <ChatUserDisplayName @user={{@user}} />\n        {{/if}}\n      \n        {{#if this.showStatus}}\n          <div class=\"user-status\" {{this.trackUserStatus @user}}>\n            <UserStatusMessage\n              @status={{@user.status}}\n              @showDescription={{this.showStatusDescription}}\n            />\n          </div>\n        {{/if}}\n      {{/if}}\n      */\n      {\n        \"id\": \"b11CKWUS\",\n        \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[8,[32,0],null,[[\\\"@user\\\",\\\"@avatarSize\\\",\\\"@interactive\\\"],[[30,1],[30,0,[\\\"avatarSize\\\"]],[30,0,[\\\"interactive\\\"]]]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"interactive\\\"]],[[[1,\\\"    \\\"],[10,3],[15,6,[30,0,[\\\"userPath\\\"]]],[15,\\\"data-user-card\\\",[30,1,[\\\"username\\\"]]],[12],[1,\\\"\\\\n      \\\"],[8,[32,1],null,[[\\\"@user\\\"],[[30,1]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[8,[32,1],null,[[\\\"@user\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showStatus\\\"]],[[[1,\\\"    \\\"],[11,0],[24,0,\\\"user-status\\\"],[4,[30,0,[\\\"trackUserStatus\\\"]],[[30,1]],null],[12],[1,\\\"\\\\n      \\\"],[8,[32,2],null,[[\\\"@status\\\",\\\"@showDescription\\\"],[[30,1,[\\\"status\\\"]],[30,0,[\\\"showStatusDescription\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null]],[\\\"@user\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat-user-info.js\",\n        \"scope\": () => [_chatUserAvatar.default, _chatUserDisplayName.default, _userStatusMessage.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatUserInfo;\n});","define(\"discourse/plugins/chat/discourse/components/chat/composer/button\", [\"exports\", \"discourse/helpers/d-icon\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _dIcon, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatComposerButton = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"chat-composer-button__wrapper\">\n    <button type=\"button\" class=\"chat-composer-button\" ...attributes>\n      {{icon @icon}}\n    </button>\n  </div>\n  */\n  {\n    \"id\": \"Mu7oBl7h\",\n    \"block\": \"[[[10,0],[14,0,\\\"chat-composer-button__wrapper\\\"],[12],[1,\\\"\\\\n  \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[24,0,\\\"chat-composer-button\\\"],[17,1],[12],[1,\\\"\\\\n    \\\"],[1,[28,[32,0],[[30,2]],null]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"&attrs\\\",\\\"@icon\\\"],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/composer/button.js\",\n    \"scope\": () => [_dIcon.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"button:ChatComposerButton\"));\n  var _default = _exports.default = ChatComposerButton;\n});","define(\"discourse/plugins/chat/discourse/components/chat/composer/channel\", [\"exports\", \"@ember/object\", \"@ember/service\", \"discourse/lib/decorators\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat-composer\"], function (_exports, _object, _service, _decorators, _discourseI18n, _chatComposer) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatComposerChannel extends _chatComposer.default {\n    static {\n      dt7948.g(this.prototype, \"composer\", [(0, _service.service)(\"chat-channel-composer\")]);\n    }\n    #composer = (dt7948.i(this, \"composer\"), void 0); // eslint-disable-next-line discourse/no-unused-services\n    static {\n      dt7948.g(this.prototype, \"pane\", [(0, _service.service)(\"chat-channel-pane\")]);\n    }\n    #pane = (dt7948.i(this, \"pane\"), void 0); // used in the parent class\n    // eslint-disable-next-line discourse/no-unused-services\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0); // used in the parent class\n    static {\n      dt7948.g(this.prototype, \"chatDraftsManager\", [_service.service]);\n    }\n    #chatDraftsManager = (dt7948.i(this, \"chatDraftsManager\"), void 0);\n    context = \"channel\";\n    composerId = \"channel-composer\";\n    persistDraft() {\n      this.chatDraftsManager.add(this.draft, this.args.channel.id);\n    }\n    static {\n      dt7948.n(this.prototype, \"persistDraft\", [(0, _decorators.debounce)(2000)]);\n    }\n    destroyDraft() {\n      this.chatDraftsManager.remove(this.args.channel.id);\n    }\n    static {\n      dt7948.n(this.prototype, \"destroyDraft\", [_object.action]);\n    }\n    resetDraft() {\n      this.args.channel.resetDraft(this.currentUser);\n    }\n    static {\n      dt7948.n(this.prototype, \"resetDraft\", [_object.action]);\n    }\n    get draft() {\n      return this.args.channel.draft;\n    }\n    get presenceChannelName() {\n      const channel = this.args.channel;\n      return `/chat-reply/${channel.id}`;\n    }\n    get disabled() {\n      return !this.chat.userCanInteractWithChat || !this.args.channel.canModifyMessages(this.currentUser);\n    }\n    get lastMessage() {\n      return this.args.channel.messagesManager.findLastMessage();\n    }\n    lastUserMessage(user) {\n      return this.args.channel.messagesManager.findLastUserMessage(user);\n    }\n    get placeholder() {\n      if (!this.args.channel.canModifyMessages(this.currentUser)) {\n        return (0, _discourseI18n.i18n)(`chat.placeholder_new_message_disallowed.${this.args.channel.status}`);\n      }\n      if (!this.chat.userCanInteractWithChat) {\n        return (0, _discourseI18n.i18n)(\"chat.placeholder_silenced\");\n      } else {\n        return this.#messageRecipients(this.args.channel);\n      }\n    }\n    handleEscape(event) {\n      event.stopPropagation();\n      if (this.draft?.inReplyTo) {\n        this.draft.inReplyTo = null;\n      } else if (this.draft?.editing) {\n        this.args.channel.resetDraft(this.currentUser);\n      } else {\n        event.target.blur();\n      }\n    }\n    #messageRecipients(channel) {\n      if (channel.isDirectMessageChannel) {\n        if (channel.chatable.group) {\n          return (0, _discourseI18n.i18n)(\"chat.placeholder_group\");\n        } else {\n          const directMessageRecipients = channel.chatable.users;\n          if (directMessageRecipients.length === 1 && directMessageRecipients[0].id === this.currentUser.id) {\n            return (0, _discourseI18n.i18n)(\"chat.placeholder_self\");\n          }\n          return (0, _discourseI18n.i18n)(\"chat.placeholder_users\", {\n            commaSeparatedNames: directMessageRecipients.map(u => u.name || `@${u.username}`).join((0, _discourseI18n.i18n)(\"word_connector.comma\"))\n          });\n        }\n      } else {\n        return (0, _discourseI18n.i18n)(\"chat.placeholder_channel\", {\n          channelName: `#${channel.title}`\n        });\n      }\n    }\n  }\n  _exports.default = ChatComposerChannel;\n});","define(\"discourse/plugins/chat/discourse/components/chat/composer/separator\", [\"exports\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatComposerSeparator = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"chat-composer-separator\"></div>\n  */\n  {\n    \"id\": \"6uQYQlnn\",\n    \"block\": \"[[[10,0],[14,0,\\\"chat-composer-separator\\\"],[12],[13]],[],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/composer/separator.js\",\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"separator:ChatComposerSeparator\"));\n  var _default = _exports.default = ChatComposerSeparator;\n});","define(\"discourse/plugins/chat/discourse/components/chat/composer/thread\", [\"exports\", \"@ember/object\", \"@ember/service\", \"discourse/lib/decorators\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/models/chat-message\", \"discourse/plugins/chat/discourse/components/chat-composer\"], function (_exports, _object, _service, _decorators, _discourseI18n, _chatMessage, _chatComposer) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatComposerThread extends _chatComposer.default {\n    static {\n      dt7948.g(this.prototype, \"channelComposer\", [(0, _service.service)(\"chat-channel-composer\")]);\n    }\n    #channelComposer = (dt7948.i(this, \"channelComposer\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"composer\", [(0, _service.service)(\"chat-thread-composer\")]);\n    }\n    #composer = (dt7948.i(this, \"composer\"), void 0); // eslint-disable-next-line discourse/no-unused-services\n    static {\n      dt7948.g(this.prototype, \"pane\", [(0, _service.service)(\"chat-thread-pane\")]);\n    }\n    #pane = (dt7948.i(this, \"pane\"), void 0); // used in the parent class\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatDraftsManager\", [_service.service]);\n    }\n    #chatDraftsManager = (dt7948.i(this, \"chatDraftsManager\"), void 0);\n    context = \"thread\";\n    composerId = \"thread-composer\";\n    persistDraft() {\n      this.chatDraftsManager.add(this.draft, this.args.thread.channel.id, this.args.thread.id);\n    }\n    static {\n      dt7948.n(this.prototype, \"persistDraft\", [(0, _decorators.debounce)(2000)]);\n    }\n    destroyDraft() {\n      this.chatDraftsManager.remove(this.args.thread.channel.id, this.args.thread.id);\n    }\n    static {\n      dt7948.n(this.prototype, \"destroyDraft\", [_object.action]);\n    }\n    resetDraft() {\n      this.args.thread.resetDraft(this.currentUser);\n    }\n    static {\n      dt7948.n(this.prototype, \"resetDraft\", [_object.action]);\n    }\n    get draft() {\n      return this.args.thread.draft;\n    }\n    get disabled() {\n      return !this.chat.userCanInteractWithChat || !this.args.thread.channel.canModifyMessages(this.currentUser);\n    }\n    get presenceChannelName() {\n      const thread = this.args.thread;\n      return `/chat-reply/${thread.channel.id}/thread/${thread.id}`;\n    }\n    get placeholder() {\n      return (0, _discourseI18n.i18n)(\"chat.placeholder_thread\");\n    }\n    get lastMessage() {\n      return this.args.thread.messagesManager.findLastMessage();\n    }\n    lastUserMessage(user) {\n      return this.args.thread.messagesManager.findLastUserMessage(user);\n    }\n    handleEscape(event) {\n      if (this.draft.editing) {\n        event.stopPropagation();\n        this.args.thread.draft = _chatMessage.default.createDraftMessage(this.args.thread.channel, {\n          user: this.currentUser,\n          thread: this.args.thread\n        });\n        return;\n      }\n      this.pane.close().then(() => {\n        this.channelComposer.focus();\n      });\n    }\n  }\n  _exports.default = ChatComposerThread;\n});","define(\"discourse/plugins/chat/discourse/components/chat/direct-message-button\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/lib/ajax-error\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _dButton, _ajaxError, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatDirectMessageButton extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"appEvents\", [_service.service]);\n    }\n    #appEvents = (dt7948.i(this, \"appEvents\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    get shouldRender() {\n      return this.chat.userCanDirectMessage;\n    }\n    async startChatting() {\n      try {\n        const channel = await this.chat.upsertDmChannel({\n          usernames: [this.args.user.username]\n        });\n        if (channel) {\n          this.router.transitionTo(\"chat.channel\", ...channel.routeModels);\n        }\n      } catch (error) {\n        (0, _ajaxError.popupAjaxError)(error);\n      } finally {\n        if (this.args.modal) {\n          this.appEvents.trigger(\"card:close\");\n        }\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"startChatting\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.shouldRender}}\n        <DButton\n          @action={{this.startChatting}}\n          @label=\"chat.title_capitalized\"\n          @icon=\"d-chat\"\n          class=\"btn-primary chat-direct-message-btn\"\n        />\n      {{/if}}\n      */\n      {\n        \"id\": \"+5vf5lAr\",\n        \"block\": \"[[[41,[30,0,[\\\"shouldRender\\\"]],[[[1,\\\"  \\\"],[8,[32,0],[[24,0,\\\"btn-primary chat-direct-message-btn\\\"]],[[\\\"@action\\\",\\\"@label\\\",\\\"@icon\\\"],[[30,0,[\\\"startChatting\\\"]],\\\"chat.title_capitalized\\\",\\\"d-chat\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/direct-message-button.js\",\n        \"scope\": () => [_dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatDirectMessageButton;\n});","define(\"discourse/plugins/chat/discourse/components/chat/drawer-routes/browse\", [\"exports\", \"@glimmer/component\", \"@ember/helper\", \"@ember/service\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/browse-channels\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _helper, _service, _discourseI18n, _browseChannels, _navbar, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatDrawerRoutesBrowse extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"c-drawer-routes --browse\">\n        <Navbar @onClick={{this.chat.toggleDrawer}} as |navbar|>\n          <navbar.BackButton @route=\"chat.channels\" />\n          <navbar.Title @title={{i18n \"chat.browse.title\"}} />\n          <navbar.Actions as |a|>\n            <a.NewChannelButton />\n            <a.ToggleDrawerButton />\n            <a.FullPageButton />\n            <a.CloseDrawerButton />\n          </navbar.Actions>\n        </Navbar>\n      \n        {{#if this.chatStateManager.isDrawerExpanded}}\n          <div class=\"chat-drawer-content\">\n            {{#each (array @params.currentTab) as |tab|}}\n              <BrowseChannels @currentTab={{tab}} />\n            {{/each}}\n          </div>\n        {{/if}}\n      </div>\n      */\n      {\n        \"id\": \"n2krObaD\",\n        \"block\": \"[[[10,0],[14,0,\\\"c-drawer-routes --browse\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[32,0],null,[[\\\"@onClick\\\"],[[30,0,[\\\"chat\\\",\\\"toggleDrawer\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"BackButton\\\"]],null,[[\\\"@route\\\"],[\\\"chat.channels\\\"]],null],[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Title\\\"]],null,[[\\\"@title\\\"],[[28,[32,1],[\\\"chat.browse.title\\\"],null]]],null],[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Actions\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"NewChannelButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"ToggleDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"FullPageButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"CloseDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n    \\\"]],[2]]]]],[1,\\\"\\\\n  \\\"]],[1]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"chatStateManager\\\",\\\"isDrawerExpanded\\\"]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"chat-drawer-content\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,2],[[28,[31,2],[[28,[32,2],[[30,3,[\\\"currentTab\\\"]]],null]],null]],null],null,[[[1,\\\"        \\\"],[8,[32,3],null,[[\\\"@currentTab\\\"],[[30,4]]],null],[1,\\\"\\\\n\\\"]],[4]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[13]],[\\\"navbar\\\",\\\"a\\\",\\\"@params\\\",\\\"tab\\\"],[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/drawer-routes/browse.js\",\n        \"scope\": () => [_navbar.default, _discourseI18n.i18n, _helper.array, _browseChannels.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatDrawerRoutesBrowse;\n});","define(\"discourse/plugins/chat/discourse/components/chat/drawer-routes/channel-info-members\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"discourse/plugins/chat/discourse/components/chat/routes/channel-info-members\", \"discourse/plugins/chat/discourse/components/chat/routes/channel-info-nav\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _discourseI18n, _navbar, _channelInfoMembers, _channelInfoNav, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatDrawerRoutesMembers extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    get backButton() {\n      return {\n        route: \"chat.channel\",\n        models: this.args.model?.channel?.routeModels,\n        title: (0, _discourseI18n.i18n)(\"chat.return_to_channel\")\n      };\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"c-drawer-routes --channel-info-members\">\n        {{#if @model.channel}}\n          <Navbar @onClick={{this.chat.toggleDrawer}} as |navbar|>\n            <navbar.BackButton\n              @title={{this.backButton.title}}\n              @route={{this.backButton.route}}\n              @routeModels={{this.backButton.models}}\n            />\n            <navbar.ChannelTitle @channel={{@model.channel}} />\n            <navbar.Actions as |a|>\n              <a.ToggleDrawerButton />\n              <a.FullPageButton />\n              <a.CloseDrawerButton />\n            </navbar.Actions>\n          </Navbar>\n      \n          {{#if this.chatStateManager.isDrawerExpanded}}\n            <div class=\"chat-drawer-content\">\n              <ChannelInfoNav @channel={{@model.channel}} @tab=\"members\" />\n              <ChannelMembers @channel={{@model.channel}} />\n            </div>\n          {{/if}}\n        {{/if}}\n      </div>\n      */\n      {\n        \"id\": \"pH+Wwnda\",\n        \"block\": \"[[[10,0],[14,0,\\\"c-drawer-routes --channel-info-members\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"channel\\\"]],[[[1,\\\"    \\\"],[8,[32,0],null,[[\\\"@onClick\\\"],[[30,0,[\\\"chat\\\",\\\"toggleDrawer\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"BackButton\\\"]],null,[[\\\"@title\\\",\\\"@route\\\",\\\"@routeModels\\\"],[[30,0,[\\\"backButton\\\",\\\"title\\\"]],[30,0,[\\\"backButton\\\",\\\"route\\\"]],[30,0,[\\\"backButton\\\",\\\"models\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"ChannelTitle\\\"]],null,[[\\\"@channel\\\"],[[30,1,[\\\"channel\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"Actions\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[30,3,[\\\"ToggleDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n        \\\"],[8,[30,3,[\\\"FullPageButton\\\"]],null,null,null],[1,\\\"\\\\n        \\\"],[8,[30,3,[\\\"CloseDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"]],[3]]]]],[1,\\\"\\\\n    \\\"]],[2]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"chatStateManager\\\",\\\"isDrawerExpanded\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"chat-drawer-content\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[32,1],null,[[\\\"@channel\\\",\\\"@tab\\\"],[[30,1,[\\\"channel\\\"]],\\\"members\\\"]],null],[1,\\\"\\\\n        \\\"],[8,[32,2],null,[[\\\"@channel\\\"],[[30,1,[\\\"channel\\\"]]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[13]],[\\\"@model\\\",\\\"navbar\\\",\\\"a\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/drawer-routes/channel-info-members.js\",\n        \"scope\": () => [_navbar.default, _channelInfoNav.default, _channelInfoMembers.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatDrawerRoutesMembers;\n});","define(\"discourse/plugins/chat/discourse/components/chat/drawer-routes/channel-info-settings\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"discourse/plugins/chat/discourse/components/chat/routes/channel-info-nav\", \"discourse/plugins/chat/discourse/components/chat/routes/channel-info-settings\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _discourseI18n, _navbar, _channelInfoNav, _channelInfoSettings, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatDrawerRoutesSettings extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    get backButton() {\n      return {\n        route: \"chat.channel\",\n        models: this.args.model?.channel?.routeModels,\n        title: (0, _discourseI18n.i18n)(\"chat.return_to_channel\")\n      };\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"c-drawer-routes --channel-info-settings\">\n        {{#if @model.channel}}\n          <Navbar @onClick={{this.chat.toggleDrawer}} as |navbar|>\n            <navbar.BackButton\n              @title={{this.backButton.title}}\n              @route={{this.backButton.route}}\n              @routeModels={{this.backButton.models}}\n            />\n            <navbar.ChannelTitle @channel={{@model.channel}} />\n            <navbar.Actions as |a|>\n              <a.ToggleDrawerButton />\n              <a.FullPageButton />\n              <a.CloseDrawerButton />\n            </navbar.Actions>\n          </Navbar>\n      \n          {{#if this.chatStateManager.isDrawerExpanded}}\n            <div class=\"chat-drawer-content\">\n              <ChannelInfoNav @channel={{@model.channel}} @tab=\"settings\" />\n              <ChannelSettings @channel={{@model.channel}} />\n            </div>\n          {{/if}}\n        {{/if}}\n      </div>\n      */\n      {\n        \"id\": \"Kp2qGvM5\",\n        \"block\": \"[[[10,0],[14,0,\\\"c-drawer-routes --channel-info-settings\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"channel\\\"]],[[[1,\\\"    \\\"],[8,[32,0],null,[[\\\"@onClick\\\"],[[30,0,[\\\"chat\\\",\\\"toggleDrawer\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"BackButton\\\"]],null,[[\\\"@title\\\",\\\"@route\\\",\\\"@routeModels\\\"],[[30,0,[\\\"backButton\\\",\\\"title\\\"]],[30,0,[\\\"backButton\\\",\\\"route\\\"]],[30,0,[\\\"backButton\\\",\\\"models\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"ChannelTitle\\\"]],null,[[\\\"@channel\\\"],[[30,1,[\\\"channel\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"Actions\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[30,3,[\\\"ToggleDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n        \\\"],[8,[30,3,[\\\"FullPageButton\\\"]],null,null,null],[1,\\\"\\\\n        \\\"],[8,[30,3,[\\\"CloseDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"]],[3]]]]],[1,\\\"\\\\n    \\\"]],[2]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"chatStateManager\\\",\\\"isDrawerExpanded\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"chat-drawer-content\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[32,1],null,[[\\\"@channel\\\",\\\"@tab\\\"],[[30,1,[\\\"channel\\\"]],\\\"settings\\\"]],null],[1,\\\"\\\\n        \\\"],[8,[32,2],null,[[\\\"@channel\\\"],[[30,1,[\\\"channel\\\"]]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[13]],[\\\"@model\\\",\\\"navbar\\\",\\\"a\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/drawer-routes/channel-info-settings.js\",\n        \"scope\": () => [_navbar.default, _channelInfoNav.default, _channelInfoSettings.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatDrawerRoutesSettings;\n});","define(\"discourse/plugins/chat/discourse/components/chat/drawer-routes/channel-pins\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"@ember/template\", \"discourse/helpers/replace-emoji\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"discourse/plugins/chat/discourse/components/chat-pinned-messages-list\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _template, _replaceEmoji, _discourseI18n, _navbar, _chatPinnedMessagesList, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatDrawerRoutesChannelPins extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    backLinkTitle = (0, _discourseI18n.i18n)(\"chat.return_to_list\");\n    get title() {\n      return (0, _template.trustHTML)((0, _discourseI18n.i18n)(\"chat.pinned_messages.title\") + \" - \" + (0, _replaceEmoji.default)(this.args.model.channel.escapedTitle));\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"c-drawer-routes --channel-pins\">\n        {{#if @model}}\n          <Navbar @onClick={{this.chat.toggleDrawer}} as |navbar|>\n            <navbar.BackButton\n              @title={{this.backLinkTitle}}\n              @route=\"chat.channel\"\n              @routeModels={{@model.channel.routeModels}}\n            />\n            <navbar.Title @title={{this.title}} @icon=\"thumbtack\" />\n            <navbar.Actions as |a|>\n              <a.ToggleDrawerButton />\n              <a.FullPageButton />\n              <a.CloseDrawerButton />\n            </navbar.Actions>\n          </Navbar>\n      \n          {{#if this.chatStateManager.isDrawerExpanded}}\n            <div class=\"chat-drawer-content\">\n              <ChatPinnedMessagesList\n                @channel={{@model.channel}}\n                @pinnedMessages={{@model.pinnedMessages}}\n              />\n            </div>\n          {{/if}}\n        {{/if}}\n      </div>\n      */\n      {\n        \"id\": \"PrnLhsto\",\n        \"block\": \"[[[10,0],[14,0,\\\"c-drawer-routes --channel-pins\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1],[[[1,\\\"    \\\"],[8,[32,0],null,[[\\\"@onClick\\\"],[[30,0,[\\\"chat\\\",\\\"toggleDrawer\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"BackButton\\\"]],null,[[\\\"@title\\\",\\\"@route\\\",\\\"@routeModels\\\"],[[30,0,[\\\"backLinkTitle\\\"]],\\\"chat.channel\\\",[30,1,[\\\"channel\\\",\\\"routeModels\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"Title\\\"]],null,[[\\\"@title\\\",\\\"@icon\\\"],[[30,0,[\\\"title\\\"]],\\\"thumbtack\\\"]],null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"Actions\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[30,3,[\\\"ToggleDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n        \\\"],[8,[30,3,[\\\"FullPageButton\\\"]],null,null,null],[1,\\\"\\\\n        \\\"],[8,[30,3,[\\\"CloseDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"]],[3]]]]],[1,\\\"\\\\n    \\\"]],[2]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"chatStateManager\\\",\\\"isDrawerExpanded\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"chat-drawer-content\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[32,1],null,[[\\\"@channel\\\",\\\"@pinnedMessages\\\"],[[30,1,[\\\"channel\\\"]],[30,1,[\\\"pinnedMessages\\\"]]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[13]],[\\\"@model\\\",\\\"navbar\\\",\\\"a\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/drawer-routes/channel-pins.js\",\n        \"scope\": () => [_navbar.default, _chatPinnedMessagesList.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatDrawerRoutesChannelPins;\n});","define(\"discourse/plugins/chat/discourse/components/chat/drawer-routes/channel-thread\", [\"exports\", \"@glimmer/component\", \"@ember/helper\", \"@ember/service\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"discourse/plugins/chat/discourse/components/chat-thread\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _helper, _service, _discourseI18n, _navbar, _chatThread, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatDrawerRoutesChannelThread extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatHistory\", [_service.service]);\n    }\n    #chatHistory = (dt7948.i(this, \"chatHistory\"), void 0);\n    get backButton() {\n      const link = {\n        models: this.args.model?.channel?.routeModels\n      };\n      if (this.chatHistory.previousRoute?.name === \"chat.channel.threads\") {\n        link.title = (0, _discourseI18n.i18n)(\"chat.return_to_threads_list\");\n        link.route = \"chat.channel.threads\";\n      } else if (this.chatHistory.previousRoute?.name === \"chat.threads\") {\n        link.title = (0, _discourseI18n.i18n)(\"chat.my_threads.title\");\n        link.route = \"chat.threads\";\n        link.models = [];\n      } else {\n        link.title = (0, _discourseI18n.i18n)(\"chat.return_to_channel\");\n        link.route = \"chat.channel\";\n      }\n      return link;\n    }\n    get threadTitle() {\n      return this.args.model?.channel?.activeThread?.title ?? (0, _discourseI18n.i18n)(\"chat.thread.label\");\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"c-drawer-routes --channel-thread\">\n        {{#if @model.channel}}\n          <Navbar\n            @onClick={{this.chat.toggleDrawer}}\n            @showFullTitle={{this.showfullTitle}}\n            as |navbar|\n          >\n            <navbar.BackButton\n              @title={{this.backButton.title}}\n              @route={{this.backButton.route}}\n              @routeModels={{this.backButton.models}}\n            />\n            <navbar.Title @title={{this.threadTitle}} @icon=\"discourse-threads\" />\n            <navbar.Actions as |a|>\n              <a.ToggleDrawerButton />\n              <a.FullPageButton />\n              <a.CloseDrawerButton />\n            </navbar.Actions>\n          </Navbar>\n      \n          {{#if this.chatStateManager.isDrawerExpanded}}\n            <div class=\"chat-drawer-content\">\n              {{#each (array @model.thread) as |thread|}}\n                <ChatThread\n                  @thread={{thread}}\n                  @targetMessageId={{@params.messageId}}\n                />\n              {{/each}}\n            </div>\n          {{/if}}\n        {{/if}}\n      </div>\n      */\n      {\n        \"id\": \"4kkzhEKT\",\n        \"block\": \"[[[10,0],[14,0,\\\"c-drawer-routes --channel-thread\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"channel\\\"]],[[[1,\\\"    \\\"],[8,[32,0],null,[[\\\"@onClick\\\",\\\"@showFullTitle\\\"],[[30,0,[\\\"chat\\\",\\\"toggleDrawer\\\"]],[30,0,[\\\"showfullTitle\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"BackButton\\\"]],null,[[\\\"@title\\\",\\\"@route\\\",\\\"@routeModels\\\"],[[30,0,[\\\"backButton\\\",\\\"title\\\"]],[30,0,[\\\"backButton\\\",\\\"route\\\"]],[30,0,[\\\"backButton\\\",\\\"models\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"Title\\\"]],null,[[\\\"@title\\\",\\\"@icon\\\"],[[30,0,[\\\"threadTitle\\\"]],\\\"discourse-threads\\\"]],null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"Actions\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[30,3,[\\\"ToggleDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n        \\\"],[8,[30,3,[\\\"FullPageButton\\\"]],null,null,null],[1,\\\"\\\\n        \\\"],[8,[30,3,[\\\"CloseDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"]],[3]]]]],[1,\\\"\\\\n    \\\"]],[2]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"chatStateManager\\\",\\\"isDrawerExpanded\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"chat-drawer-content\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,2],[[28,[31,2],[[28,[32,1],[[30,1,[\\\"thread\\\"]]],null]],null]],null],null,[[[1,\\\"          \\\"],[8,[32,2],null,[[\\\"@thread\\\",\\\"@targetMessageId\\\"],[[30,4],[30,5,[\\\"messageId\\\"]]]],null],[1,\\\"\\\\n\\\"]],[4]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[13]],[\\\"@model\\\",\\\"navbar\\\",\\\"a\\\",\\\"thread\\\",\\\"@params\\\"],[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/drawer-routes/channel-thread.js\",\n        \"scope\": () => [_navbar.default, _helper.array, _chatThread.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatDrawerRoutesChannelThread;\n});","define(\"discourse/plugins/chat/discourse/components/chat/drawer-routes/channel-threads\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"@ember/template\", \"discourse/helpers/replace-emoji\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"discourse/plugins/chat/discourse/components/chat-thread-list\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _template, _replaceEmoji, _discourseI18n, _navbar, _chatThreadList, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatDrawerRoutesChannelThreads extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    backLinkTitle = (0, _discourseI18n.i18n)(\"chat.return_to_list\");\n    get title() {\n      return (0, _template.trustHTML)((0, _discourseI18n.i18n)(\"chat.threads.list\") + \" - \" + (0, _replaceEmoji.default)(this.args.model.channel.escapedTitle));\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"c-drawer-routes --channel-threads\">\n        {{#if @model}}\n          <Navbar @onClick={{this.chat.toggleDrawer}} as |navbar|>\n            <navbar.BackButton\n              @title={{this.backLinkTitle}}\n              @route=\"chat.channel\"\n              @routeModels={{@model.channel.routeModels}}\n            />\n            <navbar.Title @title={{this.title}} @icon=\"discourse-threads\" />\n            <navbar.Actions as |a|>\n              <a.ToggleDrawerButton />\n              <a.FullPageButton />\n              <a.CloseDrawerButton />\n            </navbar.Actions>\n          </Navbar>\n      \n          {{#if this.chatStateManager.isDrawerExpanded}}\n            <div class=\"chat-drawer-content\">\n              <ChatThreadList @channel={{@model.channel}} />\n            </div>\n          {{/if}}\n        {{/if}}\n      </div>\n      */\n      {\n        \"id\": \"JmUD3+VB\",\n        \"block\": \"[[[10,0],[14,0,\\\"c-drawer-routes --channel-threads\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1],[[[1,\\\"    \\\"],[8,[32,0],null,[[\\\"@onClick\\\"],[[30,0,[\\\"chat\\\",\\\"toggleDrawer\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"BackButton\\\"]],null,[[\\\"@title\\\",\\\"@route\\\",\\\"@routeModels\\\"],[[30,0,[\\\"backLinkTitle\\\"]],\\\"chat.channel\\\",[30,1,[\\\"channel\\\",\\\"routeModels\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"Title\\\"]],null,[[\\\"@title\\\",\\\"@icon\\\"],[[30,0,[\\\"title\\\"]],\\\"discourse-threads\\\"]],null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"Actions\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[30,3,[\\\"ToggleDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n        \\\"],[8,[30,3,[\\\"FullPageButton\\\"]],null,null,null],[1,\\\"\\\\n        \\\"],[8,[30,3,[\\\"CloseDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"]],[3]]]]],[1,\\\"\\\\n    \\\"]],[2]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"chatStateManager\\\",\\\"isDrawerExpanded\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"chat-drawer-content\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[32,1],null,[[\\\"@channel\\\"],[[30,1,[\\\"channel\\\"]]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[13]],[\\\"@model\\\",\\\"navbar\\\",\\\"a\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/drawer-routes/channel-threads.js\",\n        \"scope\": () => [_navbar.default, _chatThreadList.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatDrawerRoutesChannelThreads;\n});","define(\"discourse/plugins/chat/discourse/components/chat/drawer-routes/channel\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/helper\", \"@ember/object\", \"@ember/service\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"discourse/plugins/chat/discourse/components/chat-channel\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _helper, _object, _service, _navbar, _chatChannel, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatDrawerRoutesChannel extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatHistory\", [_service.service]);\n    }\n    #chatHistory = (dt7948.i(this, \"chatHistory\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"isFiltering\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #isFiltering = (dt7948.i(this, \"isFiltering\"), void 0);\n    toggleIsFiltering() {\n      this.isFiltering = !this.isFiltering;\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleIsFiltering\", [_object.action]);\n    }\n    get backBtnRoute() {\n      if (this.chatHistory.previousRoute?.name === \"chat.browse\") {\n        return \"chat.browse\";\n      } else if (this.chatHistory.previousRoute?.name === \"chat.starred-channels\") {\n        return \"chat.starred-channels\";\n      } else if (this.args.model?.channel?.isDirectMessageChannel) {\n        return \"chat.direct-messages\";\n      } else {\n        return \"chat.channels\";\n      }\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"c-drawer-routes --channel\">\n        {{#if @model.channel}}\n          <Navbar @onClick={{this.chat.toggleDrawer}} as |navbar|>\n            <navbar.BackButton @route={{this.backBtnRoute}} />\n            <navbar.ChannelTitle @channel={{@model.channel}} />\n            <navbar.Actions as |a|>\n              {{#if this.siteSettings.chat_search_enabled}}\n                <a.Filter\n                  @channel={{@model.channel}}\n                  @onToggleFilter={{this.toggleIsFiltering}}\n                  @isFiltering={{this.isFiltering}}\n                />\n              {{/if}}\n      \n              <a.ThreadsListButton @channel={{@model.channel}} />\n              <a.PinnedMessagesButton @channel={{@model.channel}} />\n              <a.ToggleDrawerButton />\n              <a.FullPageButton />\n              <a.CloseDrawerButton />\n            </navbar.Actions>\n          </Navbar>\n      \n          {{#if this.chatStateManager.isDrawerExpanded}}\n            <div class=\"chat-drawer-content\">\n              {{#each (array @model.channel) as |channel|}}\n                <ChatChannel\n                  @targetMessageId={{readonly @params.messageId}}\n                  @channel={{channel}}\n                  @isFiltering={{this.isFiltering}}\n                  @onToggleFilter={{this.toggleIsFiltering}}\n                />\n              {{/each}}\n            </div>\n          {{/if}}\n        {{/if}}\n      </div>\n      */\n      {\n        \"id\": \"Zb0IqsiA\",\n        \"block\": \"[[[10,0],[14,0,\\\"c-drawer-routes --channel\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"channel\\\"]],[[[1,\\\"    \\\"],[8,[32,0],null,[[\\\"@onClick\\\"],[[30,0,[\\\"chat\\\",\\\"toggleDrawer\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"BackButton\\\"]],null,[[\\\"@route\\\"],[[30,0,[\\\"backBtnRoute\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"ChannelTitle\\\"]],null,[[\\\"@channel\\\"],[[30,1,[\\\"channel\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"Actions\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"siteSettings\\\",\\\"chat_search_enabled\\\"]],[[[1,\\\"          \\\"],[8,[30,3,[\\\"Filter\\\"]],null,[[\\\"@channel\\\",\\\"@onToggleFilter\\\",\\\"@isFiltering\\\"],[[30,1,[\\\"channel\\\"]],[30,0,[\\\"toggleIsFiltering\\\"]],[30,0,[\\\"isFiltering\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n        \\\"],[8,[30,3,[\\\"ThreadsListButton\\\"]],null,[[\\\"@channel\\\"],[[30,1,[\\\"channel\\\"]]]],null],[1,\\\"\\\\n        \\\"],[8,[30,3,[\\\"PinnedMessagesButton\\\"]],null,[[\\\"@channel\\\"],[[30,1,[\\\"channel\\\"]]]],null],[1,\\\"\\\\n        \\\"],[8,[30,3,[\\\"ToggleDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n        \\\"],[8,[30,3,[\\\"FullPageButton\\\"]],null,null,null],[1,\\\"\\\\n        \\\"],[8,[30,3,[\\\"CloseDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"]],[3]]]]],[1,\\\"\\\\n    \\\"]],[2]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"chatStateManager\\\",\\\"isDrawerExpanded\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"chat-drawer-content\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,2],[[28,[31,2],[[28,[32,1],[[30,1,[\\\"channel\\\"]]],null]],null]],null],null,[[[1,\\\"          \\\"],[8,[32,2],null,[[\\\"@targetMessageId\\\",\\\"@channel\\\",\\\"@isFiltering\\\",\\\"@onToggleFilter\\\"],[[28,[31,3],[[30,5,[\\\"messageId\\\"]]],null],[30,4],[30,0,[\\\"isFiltering\\\"]],[30,0,[\\\"toggleIsFiltering\\\"]]]],null],[1,\\\"\\\\n\\\"]],[4]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[13]],[\\\"@model\\\",\\\"navbar\\\",\\\"a\\\",\\\"channel\\\",\\\"@params\\\"],[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\",\\\"readonly\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/drawer-routes/channel.js\",\n        \"scope\": () => [_navbar.default, _helper.array, _chatChannel.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatDrawerRoutesChannel;\n});","define(\"discourse/plugins/chat/discourse/components/chat/drawer-routes/channels\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/channels-list-public\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"discourse/plugins/chat/discourse/components/chat-footer\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _discourseI18n, _channelsListPublic, _navbar, _chatFooter, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatDrawerRoutesChannels extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"c-drawer-routes --channels\">\n        <Navbar @onClick={{this.chat.toggleDrawer}} as |navbar|>\n          <navbar.Title @title={{i18n \"chat.heading\"}} />\n          <navbar.Actions as |a|>\n            <a.ToggleDrawerButton />\n            <a.FullPageButton />\n            <a.CloseDrawerButton />\n          </navbar.Actions>\n        </Navbar>\n      \n        {{#if this.chatStateManager.isDrawerExpanded}}\n          <div class=\"chat-drawer-content\">\n            <ChannelsListPublic />\n          </div>\n      \n          <ChatFooter />\n        {{/if}}\n      </div>\n      */\n      {\n        \"id\": \"Z5ccRIu3\",\n        \"block\": \"[[[10,0],[14,0,\\\"c-drawer-routes --channels\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[32,0],null,[[\\\"@onClick\\\"],[[30,0,[\\\"chat\\\",\\\"toggleDrawer\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Title\\\"]],null,[[\\\"@title\\\"],[[28,[32,1],[\\\"chat.heading\\\"],null]]],null],[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Actions\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"ToggleDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"FullPageButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"CloseDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n    \\\"]],[2]]]]],[1,\\\"\\\\n  \\\"]],[1]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"chatStateManager\\\",\\\"isDrawerExpanded\\\"]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"chat-drawer-content\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[32,2],null,null,null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[8,[32,3],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[13]],[\\\"navbar\\\",\\\"a\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/drawer-routes/channels.js\",\n        \"scope\": () => [_navbar.default, _discourseI18n.i18n, _channelsListPublic.default, _chatFooter.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatDrawerRoutesChannels;\n});","define(\"discourse/plugins/chat/discourse/components/chat/drawer-routes/direct-messages\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/channels-list-direct\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"discourse/plugins/chat/discourse/components/chat-footer\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _discourseI18n, _channelsListDirect, _navbar, _chatFooter, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatDrawerRoutesDirectMessages extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"c-drawer-routes --direct-messages\">\n        <Navbar @onClick={{this.chat.toggleDrawer}} as |navbar|>\n          <navbar.Title @title={{i18n \"chat.heading\"}} />\n          <navbar.Actions as |a|>\n            <a.ToggleDrawerButton />\n            <a.FullPageButton />\n            <a.CloseDrawerButton />\n          </navbar.Actions>\n        </Navbar>\n      \n        {{#if this.chatStateManager.isDrawerExpanded}}\n          <div class=\"chat-drawer-content\">\n            <ChannelsListDirect />\n          </div>\n      \n          <ChatFooter />\n        {{/if}}\n      </div>\n      */\n      {\n        \"id\": \"FudRyvGO\",\n        \"block\": \"[[[10,0],[14,0,\\\"c-drawer-routes --direct-messages\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[32,0],null,[[\\\"@onClick\\\"],[[30,0,[\\\"chat\\\",\\\"toggleDrawer\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Title\\\"]],null,[[\\\"@title\\\"],[[28,[32,1],[\\\"chat.heading\\\"],null]]],null],[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Actions\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"ToggleDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"FullPageButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"CloseDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n    \\\"]],[2]]]]],[1,\\\"\\\\n  \\\"]],[1]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"chatStateManager\\\",\\\"isDrawerExpanded\\\"]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"chat-drawer-content\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[32,2],null,null,null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[8,[32,3],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[13]],[\\\"navbar\\\",\\\"a\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/drawer-routes/direct-messages.js\",\n        \"scope\": () => [_navbar.default, _discourseI18n.i18n, _channelsListDirect.default, _chatFooter.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatDrawerRoutesDirectMessages;\n});","define(\"discourse/plugins/chat/discourse/components/chat/drawer-routes/search\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"discourse/plugins/chat/discourse/components/chat-footer\", \"discourse/plugins/chat/discourse/components/chat-search\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _discourseI18n, _navbar, _chatFooter, _chatSearch, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatDrawerRoutesSearch extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatSearchQuery\", [_service.service]);\n    }\n    #chatSearchQuery = (dt7948.i(this, \"chatSearchQuery\"), void 0);\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"c-drawer-routes --search\">\n        <Navbar @onClick={{this.chat.toggleDrawer}} as |navbar|>\n          <navbar.Title @title={{i18n \"chat.search.title\"}} />\n          <navbar.Actions as |action|>\n            <action.ToggleDrawerButton />\n            <action.FullPageButton />\n            <action.CloseDrawerButton />\n          </navbar.Actions>\n        </Navbar>\n      \n        {{#if this.chatStateManager.isDrawerExpanded}}\n          <div class=\"chat-drawer-content\">\n            <ChatSearch\n              @query={{this.chatSearchQuery.query}}\n              @enableQueryParams={{false}}\n            />\n          </div>\n        {{/if}}\n      \n        <ChatFooter />\n      </div>\n      */\n      {\n        \"id\": \"UFU1XSIP\",\n        \"block\": \"[[[10,0],[14,0,\\\"c-drawer-routes --search\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[32,0],null,[[\\\"@onClick\\\"],[[30,0,[\\\"chat\\\",\\\"toggleDrawer\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Title\\\"]],null,[[\\\"@title\\\"],[[28,[32,1],[\\\"chat.search.title\\\"],null]]],null],[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Actions\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"ToggleDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"FullPageButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"CloseDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n    \\\"]],[2]]]]],[1,\\\"\\\\n  \\\"]],[1]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"chatStateManager\\\",\\\"isDrawerExpanded\\\"]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"chat-drawer-content\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[32,2],null,[[\\\"@query\\\",\\\"@enableQueryParams\\\"],[[30,0,[\\\"chatSearchQuery\\\",\\\"query\\\"]],false]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[8,[32,3],null,null,null],[1,\\\"\\\\n\\\"],[13]],[\\\"navbar\\\",\\\"action\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/drawer-routes/search.js\",\n        \"scope\": () => [_navbar.default, _discourseI18n.i18n, _chatSearch.default, _chatFooter.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatDrawerRoutesSearch;\n});","define(\"discourse/plugins/chat/discourse/components/chat/drawer-routes/starred-channels\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/channels-list-starred\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"discourse/plugins/chat/discourse/components/chat-footer\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _discourseI18n, _channelsListStarred, _navbar, _chatFooter, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatDrawerRoutesStarredChannels extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"c-drawer-routes --starred-channels\">\n        <Navbar @onClick={{this.chat.toggleDrawer}} as |navbar|>\n          <navbar.Title @title={{i18n \"chat.starred\"}} />\n          <navbar.Actions as |a|>\n            <a.ToggleDrawerButton />\n            <a.FullPageButton />\n            <a.CloseDrawerButton />\n          </navbar.Actions>\n        </Navbar>\n      \n        {{#if this.chatStateManager.isDrawerExpanded}}\n          <div class=\"chat-drawer-content\">\n            <ChannelsListStarred />\n          </div>\n      \n          <ChatFooter />\n        {{/if}}\n      </div>\n      */\n      {\n        \"id\": \"2leW8Fu+\",\n        \"block\": \"[[[10,0],[14,0,\\\"c-drawer-routes --starred-channels\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[32,0],null,[[\\\"@onClick\\\"],[[30,0,[\\\"chat\\\",\\\"toggleDrawer\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Title\\\"]],null,[[\\\"@title\\\"],[[28,[32,1],[\\\"chat.starred\\\"],null]]],null],[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Actions\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"ToggleDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"FullPageButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"CloseDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n    \\\"]],[2]]]]],[1,\\\"\\\\n  \\\"]],[1]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"chatStateManager\\\",\\\"isDrawerExpanded\\\"]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"chat-drawer-content\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[32,2],null,null,null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[8,[32,3],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[13]],[\\\"navbar\\\",\\\"a\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/drawer-routes/starred-channels.js\",\n        \"scope\": () => [_navbar.default, _discourseI18n.i18n, _channelsListStarred.default, _chatFooter.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatDrawerRoutesStarredChannels;\n});","define(\"discourse/plugins/chat/discourse/components/chat/drawer-routes/threads\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"discourse/plugins/chat/discourse/components/chat-footer\", \"discourse/plugins/chat/discourse/components/user-threads\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _discourseI18n, _navbar, _chatFooter, _userThreads, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatDrawerRoutesThreads extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"c-drawer-routes --threads\">\n        <Navbar @onClick={{this.chat.toggleDrawer}} as |navbar|>\n          <navbar.Title @title={{i18n \"chat.heading\"}} />\n          <navbar.Actions as |action|>\n            <action.ThreadsListButton />\n            <action.ToggleDrawerButton />\n            <action.FullPageButton />\n            <action.CloseDrawerButton />\n          </navbar.Actions>\n        </Navbar>\n      \n        {{#if this.chatStateManager.isDrawerExpanded}}\n          <div class=\"chat-drawer-content\">\n            <UserThreads />\n          </div>\n        {{/if}}\n      \n        <ChatFooter />\n      </div>\n      */\n      {\n        \"id\": \"7FTP217z\",\n        \"block\": \"[[[10,0],[14,0,\\\"c-drawer-routes --threads\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[32,0],null,[[\\\"@onClick\\\"],[[30,0,[\\\"chat\\\",\\\"toggleDrawer\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Title\\\"]],null,[[\\\"@title\\\"],[[28,[32,1],[\\\"chat.heading\\\"],null]]],null],[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Actions\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"ThreadsListButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"ToggleDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"FullPageButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"CloseDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n    \\\"]],[2]]]]],[1,\\\"\\\\n  \\\"]],[1]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"chatStateManager\\\",\\\"isDrawerExpanded\\\"]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"chat-drawer-content\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[32,2],null,null,null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[8,[32,3],null,null,null],[1,\\\"\\\\n\\\"],[13]],[\\\"navbar\\\",\\\"action\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/drawer-routes/threads.js\",\n        \"scope\": () => [_navbar.default, _discourseI18n.i18n, _userThreads.default, _chatFooter.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatDrawerRoutesThreads;\n});","define(\"discourse/plugins/chat/discourse/components/chat/footer/unread-indicator\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _component, _service, _component2, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _exports.UnreadThreadsIndicator = _exports.UnreadStarredIndicator = _exports.UnreadDirectMessagesIndicator = _exports.UnreadChannelsIndicator = void 0;\n  const CHANNELS_TAB = \"channels\";\n  const DMS_TAB = \"dms\";\n  const STARRED_TAB = \"starred\";\n  const THREADS_TAB = \"threads\";\n  const MAX_UNREAD_COUNT = 99;\n  const UnreadChannelsIndicator = _exports.UnreadChannelsIndicator = (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <FooterUnreadIndicator @badgeType={{CHANNELS_TAB}} />\n  */\n  {\n    \"id\": \"/JgtoCid\",\n    \"block\": \"[[[8,[32,0],null,[[\\\"@badgeType\\\"],[[32,1]]],null]],[],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/footer/unread-indicator.js\",\n    \"scope\": () => [FooterUnreadIndicator, CHANNELS_TAB],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"unread-indicator:UnreadChannelsIndicator\"));\n  const UnreadDirectMessagesIndicator = _exports.UnreadDirectMessagesIndicator = (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <FooterUnreadIndicator @badgeType={{DMS_TAB}} />\n  */\n  {\n    \"id\": \"/JgtoCid\",\n    \"block\": \"[[[8,[32,0],null,[[\\\"@badgeType\\\"],[[32,1]]],null]],[],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/footer/unread-indicator.js\",\n    \"scope\": () => [FooterUnreadIndicator, DMS_TAB],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"unread-indicator:UnreadDirectMessagesIndicator\"));\n  const UnreadStarredIndicator = _exports.UnreadStarredIndicator = (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <FooterUnreadIndicator @badgeType={{STARRED_TAB}} />\n  */\n  {\n    \"id\": \"/JgtoCid\",\n    \"block\": \"[[[8,[32,0],null,[[\\\"@badgeType\\\"],[[32,1]]],null]],[],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/footer/unread-indicator.js\",\n    \"scope\": () => [FooterUnreadIndicator, STARRED_TAB],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"unread-indicator:UnreadStarredIndicator\"));\n  const UnreadThreadsIndicator = _exports.UnreadThreadsIndicator = (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <FooterUnreadIndicator @badgeType={{THREADS_TAB}} />\n  */\n  {\n    \"id\": \"/JgtoCid\",\n    \"block\": \"[[[8,[32,0],null,[[\\\"@badgeType\\\"],[[32,1]]],null]],[],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/footer/unread-indicator.js\",\n    \"scope\": () => [FooterUnreadIndicator, THREADS_TAB],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"unread-indicator:UnreadThreadsIndicator\"));\n  class FooterUnreadIndicator extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatTrackingStateManager\", [_service.service]);\n    }\n    #chatTrackingStateManager = (dt7948.i(this, \"chatTrackingStateManager\"), void 0);\n    badgeType = this.args.badgeType;\n    get urgentCount() {\n      if (this.badgeType === CHANNELS_TAB) {\n        return this.unstarredPublicChannelMentionCount;\n      } else if (this.badgeType === DMS_TAB) {\n        return this.unstarredDMUrgentCount;\n      } else if (this.badgeType === STARRED_TAB) {\n        return this.starredChannelsUrgentCount;\n      } else if (this.badgeType === THREADS_TAB) {\n        return this.chatTrackingStateManager.watchedThreadsUnreadCount;\n      } else {\n        return 0;\n      }\n    }\n    get unreadCount() {\n      if (this.badgeType === CHANNELS_TAB) {\n        return this.unstarredPublicChannelUnreadCount;\n      } else if (this.badgeType === STARRED_TAB) {\n        return this.starredChannelsUnreadCount;\n      } else if (this.badgeType === THREADS_TAB) {\n        return this.chatTrackingStateManager.hasUnreadThreads ? 1 : 0;\n      } else {\n        return 0;\n      }\n    }\n    get unstarredPublicChannelMentionCount() {\n      return this.chatChannelsManager.unstarredPublicMessageChannels.reduce((count, channel) => count + channel.tracking.mentionCount, 0);\n    }\n    get unstarredPublicChannelUnreadCount() {\n      return this.chatChannelsManager.unstarredPublicMessageChannels.reduce((count, channel) => count + channel.tracking.unreadCount, 0);\n    }\n    get unstarredDMUrgentCount() {\n      return this.chatChannelsManager.unstarredDirectMessageChannels.reduce((count, channel) => count + channel.tracking.unreadCount + channel.tracking.mentionCount, 0);\n    }\n    get showUrgent() {\n      return this.urgentCount > 0;\n    }\n    get showUnread() {\n      return this.unreadCount > 0;\n    }\n    get urgentBadgeCount() {\n      let totalCount = this.urgentCount;\n      return totalCount > MAX_UNREAD_COUNT ? `${MAX_UNREAD_COUNT}+` : totalCount;\n    }\n    // Calculate urgent count for starred channels (DMs + mentions from public channels)\n    get starredChannelsUrgentCount() {\n      return this.chatChannelsManager.starredChannels.reduce((count, channel) => {\n        if (channel.isDirectMessageChannel) {\n          // DM unreads are always urgent\n          return count + channel.tracking.unreadCount;\n        } else {\n          // Public channel mentions are urgent\n          return count + channel.tracking.mentionCount;\n        }\n      }, 0);\n    }\n    // Calculate unread count for starred channels (public channel unreads only)\n    get starredChannelsUnreadCount() {\n      return this.chatChannelsManager.starredChannels.reduce((count, channel) => {\n        if (channel.isCategoryChannel) {\n          return count + channel.tracking.unreadCount;\n        }\n        return count;\n      }, 0);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.showUrgent}}\n        <div class=\"c-unread-indicator -urgent\">\n          <div class=\"c-unread-indicator__number\">\n            {{this.urgentBadgeCount}}\n          </div>\n        </div>\n      {{else if this.showUnread}}\n        <div class=\"c-unread-indicator\"></div>\n      {{/if}}\n      */\n      {\n        \"id\": \"4iuLSItG\",\n        \"block\": \"[[[41,[30,0,[\\\"showUrgent\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"c-unread-indicator -urgent\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"c-unread-indicator__number\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"urgentBadgeCount\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"showUnread\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"c-unread-indicator\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/footer/unread-indicator.js\",\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = FooterUnreadIndicator;\n});","define(\"discourse/plugins/chat/discourse/components/chat/form\", [\"exports\", \"@glimmer/component\", \"discourse/plugins/chat/discourse/components/chat/form/section\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _section, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatForm extends _component.default {\n    get yieldableArgs() {\n      return {\n        section: _section.default\n      };\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"chat-form\">\n        {{yield this.yieldableArgs}}\n      </div>\n      */\n      {\n        \"id\": \"wMQo6GSg\",\n        \"block\": \"[[[10,0],[14,0,\\\"chat-form\\\"],[12],[1,\\\"\\\\n  \\\"],[18,1,[[30,0,[\\\"yieldableArgs\\\"]]]],[1,\\\"\\\\n\\\"],[13]],[\\\"&default\\\"],[\\\"yield\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/form.js\",\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatForm;\n});","define(\"discourse/plugins/chat/discourse/components/chat/form/row\", [\"exports\", \"@ember/routing\", \"discourse/helpers/concat-class\", \"discourse/helpers/d-icon\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _routing, _concatClass, _dIcon, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatFormRow = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @route}}\n    <LinkTo\n      @route={{@route}}\n      @models={{@routeModels}}\n      class={{concatClass \"chat-form__row -link\" (if @separator \"-separator\")}}\n    >\n      <div class=\"chat-form__row-content\">\n        {{@label}}\n        {{icon \"chevron-right\" class=\"chat-form__row-icon\"}}\n      </div>\n    </LinkTo>\n  {{else}}\n    <div class={{concatClass \"chat-form__row\" (if @separator \"-separator\")}}>\n      <div class=\"chat-form__row-content\">\n        {{#if @label}}\n          <span class=\"chat-form__row-label\">{{@label}}</span>\n        {{/if}}\n  \n        {{#if (has-block)}}\n          <span class=\"chat-form__row-label\">\n            {{yield}}\n          </span>\n        {{/if}}\n  \n        {{#if (has-block \"action\")}}\n          <div class=\"chat-form__row-action\">{{yield to=\"action\"}}</div>\n        {{/if}}\n      </div>\n  \n      {{#if (has-block \"description\")}}\n        <div class=\"chat-form__row-description\">\n          {{yield to=\"description\"}}\n        </div>\n      {{/if}}\n    </div>\n  {{/if}}\n  */\n  {\n    \"id\": \"Dw+a9yhz\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[8,[32,0],[[16,0,[28,[32,1],[\\\"chat-form__row -link\\\",[52,[30,2],\\\"-separator\\\"]],null]]],[[\\\"@route\\\",\\\"@models\\\"],[[30,1],[30,3]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-form__row-content\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[30,4]],[1,\\\"\\\\n      \\\"],[1,[28,[32,2],[\\\"chevron-right\\\"],[[\\\"class\\\"],[\\\"chat-form__row-icon\\\"]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"  \\\"],[10,0],[15,0,[28,[32,1],[\\\"chat-form__row\\\",[52,[30,2],\\\"-separator\\\"]],null]],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-form__row-content\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,4],[[[1,\\\"        \\\"],[10,1],[14,0,\\\"chat-form__row-label\\\"],[12],[1,[30,4]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[48,[30,5]],[[[1,\\\"        \\\"],[10,1],[14,0,\\\"chat-form__row-label\\\"],[12],[1,\\\"\\\\n          \\\"],[18,5,null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[48,[30,6]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"chat-form__row-action\\\"],[12],[18,6,null],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[48,[30,7]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"chat-form__row-description\\\"],[12],[1,\\\"\\\\n        \\\"],[18,7,null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[\\\"@route\\\",\\\"@separator\\\",\\\"@routeModels\\\",\\\"@label\\\",\\\"&default\\\",\\\"&action\\\",\\\"&description\\\"],[\\\"if\\\",\\\"has-block\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/form/row.js\",\n    \"scope\": () => [_routing.LinkTo, _concatClass.default, _dIcon.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"row:ChatFormRow\"));\n  var _default = _exports.default = ChatFormRow;\n});","define(\"discourse/plugins/chat/discourse/components/chat/form/section\", [\"exports\", \"@glimmer/component\", \"discourse/plugins/chat/discourse/components/chat/form/row\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _row, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatFormSection extends _component.default {\n    get yieldableArgs() {\n      return {\n        row: _row.default\n      };\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"chat-form__section\" ...attributes>\n        {{#if @title}}\n          <div class=\"chat-form__section-title\">\n            {{@title}}\n          </div>\n        {{/if}}\n      \n        <div class=\"chat-form__section-content\">\n          {{yield this.yieldableArgs}}\n        </div>\n      </div>\n      */\n      {\n        \"id\": \"UoP9ECs6\",\n        \"block\": \"[[[11,0],[24,0,\\\"chat-form__section\\\"],[17,1],[12],[1,\\\"\\\\n\\\"],[41,[30,2],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"chat-form__section-title\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[30,2]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-form__section-content\\\"],[12],[1,\\\"\\\\n    \\\"],[18,3,[[30,0,[\\\"yieldableArgs\\\"]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"&attrs\\\",\\\"@title\\\",\\\"&default\\\"],[\\\"if\\\",\\\"yield\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/form/section.js\",\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatFormSection;\n});","define(\"discourse/plugins/chat/discourse/components/chat/header/icon\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/helpers/concat-class\", \"discourse/helpers/d-icon\", \"discourse/lib/get-url\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/header/icon/unread-indicator\", \"discourse/plugins/chat/discourse/lib/get-user-chat-separate-sidebar-mode\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _dButton, _concatClass, _dIcon, _getUrl, _truthHelpers, _discourseI18n, _unreadIndicator, _getUserChatSeparateSidebarMode, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatHeaderIcon extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    get showUnreadIndicator() {\n      if (this.chatStateManager.isFullPageActive && this.site.desktopView) {\n        return false;\n      }\n      return !this.currentUserInDnD;\n    }\n    get currentUserInDnD() {\n      return this.args.currentUserInDnD || this.currentUser.isInDoNotDisturb();\n    }\n    get chatSeparateSidebarMode() {\n      return (0, _getUserChatSeparateSidebarMode.getUserChatSeparateSidebarMode)(this.currentUser);\n    }\n    get isActive() {\n      return this.args.isActive || this.chatStateManager.isFullPageActive || this.chatStateManager.isDrawerActive;\n    }\n    get title() {\n      if (this.chatStateManager.isFullPageActive && !this.chatSeparateSidebarMode.never && this.site.desktopView) {\n        return (0, _discourseI18n.i18n)(\"chat.exit\");\n      }\n      return (0, _discourseI18n.i18n)(\"chat.title_capitalized\");\n    }\n    get icon() {\n      if (this.chatStateManager.isFullPageActive && !this.chatSeparateSidebarMode.never && this.site.desktopView) {\n        return \"shuffle\";\n      }\n      return \"d-chat\";\n    }\n    get targetUrl() {\n      if (this.chatStateManager.isFullPageActive && !this.chatSeparateSidebarMode.never) {\n        return this.chatStateManager.lastKnownAppURL || \"/\";\n      }\n      if (this.chatStateManager.isDrawerActive) {\n        return \"/chat\";\n      }\n      return this.chatStateManager.lastKnownChatURL || \"/chat\";\n    }\n    get href() {\n      return (0, _getUrl.default)(this.targetUrl);\n    }\n    openChat() {\n      // Opening chat: explicitly set drawer preference before navigating\n      // This ensures the route's beforeModel respects drawer mode even on\n      // full page loads (e.g., after browser refresh)\n      if (this.chatStateManager.isDrawerPreferred) {\n        this.chatStateManager.prefersDrawer();\n      }\n      this.router.transitionTo(this.targetUrl);\n    }\n    static {\n      dt7948.n(this.prototype, \"openChat\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#unless (and this.site.mobileView this.isActive)}}\n        <li class=\"header-dropdown-toggle chat-header-icon\">\n          <DButton\n            @action={{this.openChat}}\n            @href={{this.href}}\n            tabindex=\"0\"\n            class={{concatClass \"icon\" \"btn-flat\" (if this.isActive \"active\")}}\n            title={{this.title}}\n          >\n            {{~icon this.icon~}}\n            {{#if this.showUnreadIndicator}}\n              <ChatHeaderIconUnreadIndicator\n                @urgentCount={{@urgentCount}}\n                @unreadCount={{@unreadCount}}\n                @indicatorPreference={{@indicatorPreference}}\n              />\n            {{/if}}\n          </DButton>\n        </li>\n      {{/unless}}\n      */\n      {\n        \"id\": \"bP5tO9MV\",\n        \"block\": \"[[[41,[51,[28,[32,0],[[30,0,[\\\"site\\\",\\\"mobileView\\\"]],[30,0,[\\\"isActive\\\"]]],null]],[[[1,\\\"  \\\"],[10,\\\"li\\\"],[14,0,\\\"header-dropdown-toggle chat-header-icon\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[32,1],[[24,\\\"tabindex\\\",\\\"0\\\"],[16,0,[28,[32,2],[\\\"icon\\\",\\\"btn-flat\\\",[52,[30,0,[\\\"isActive\\\"]],\\\"active\\\"]],null]],[16,\\\"title\\\",[30,0,[\\\"title\\\"]]]],[[\\\"@action\\\",\\\"@href\\\"],[[30,0,[\\\"openChat\\\"]],[30,0,[\\\"href\\\"]]]],[[\\\"default\\\"],[[[[1,[28,[32,3],[[30,0,[\\\"icon\\\"]]],null]],[41,[30,0,[\\\"showUnreadIndicator\\\"]],[[[1,\\\"        \\\"],[8,[32,4],null,[[\\\"@urgentCount\\\",\\\"@unreadCount\\\",\\\"@indicatorPreference\\\"],[[30,1],[30,2],[30,3]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@urgentCount\\\",\\\"@unreadCount\\\",\\\"@indicatorPreference\\\"],[\\\"unless\\\",\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/header/icon.js\",\n        \"scope\": () => [_truthHelpers.and, _dButton.default, _concatClass.default, _dIcon.default, _unreadIndicator.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatHeaderIcon;\n});","define(\"discourse/plugins/chat/discourse/components/chat/header/icon/unread-indicator\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"discourse/plugins/chat/discourse/lib/chat-constants\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _chatConstants, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const MAX_UNREAD_COUNT = 99;\n  class ChatHeaderIconUnreadIndicator extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatTrackingStateManager\", [_service.service]);\n    }\n    #chatTrackingStateManager = (dt7948.i(this, \"chatTrackingStateManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    get urgentCount() {\n      return this.args.urgentCount || this.chatTrackingStateManager.allChannelUrgentCount;\n    }\n    get mentionCount() {\n      return this.args.mentionCount || this.chatTrackingStateManager.allChannelMentionCount;\n    }\n    get unreadCount() {\n      return this.args.unreadCount || this.chatTrackingStateManager.publicChannelUnreadCount;\n    }\n    get hasUnreads() {\n      return this.unreadCount > 0 || this.chatTrackingStateManager.hasUnreadThreads;\n    }\n    get indicatorPreference() {\n      return this.args.indicatorPreference || this.currentUser.user_option.chat_header_indicator_preference;\n    }\n    get showUrgentIndicator() {\n      if (this.onlyMentions) {\n        return this.mentionCount > 0;\n      }\n      return this.urgentCount > 0 && this.#hasAnyIndicatorPreference([_chatConstants.HEADER_INDICATOR_PREFERENCE_ALL_NEW, _chatConstants.HEADER_INDICATOR_PREFERENCE_DM_AND_MENTIONS]);\n    }\n    get showUnreadIndicator() {\n      return this.hasUnreads && this.#hasAnyIndicatorPreference([_chatConstants.HEADER_INDICATOR_PREFERENCE_ALL_NEW]);\n    }\n    get urgentCountLabel() {\n      const totalCount = this.onlyMentions ? this.mentionCount : this.urgentCount;\n      return totalCount > MAX_UNREAD_COUNT ? `${MAX_UNREAD_COUNT}+` : totalCount;\n    }\n    get onlyMentions() {\n      return this.#hasAnyIndicatorPreference([_chatConstants.HEADER_INDICATOR_PREFERENCE_ONLY_MENTIONS]);\n    }\n    #hasAnyIndicatorPreference(preferences) {\n      if (!this.currentUser || this.indicatorPreference === _chatConstants.HEADER_INDICATOR_PREFERENCE_NEVER) {\n        return false;\n      }\n      return preferences.includes(this.indicatorPreference);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.showUrgentIndicator}}\n        <div class=\"chat-channel-unread-indicator -urgent\">\n          <div class=\"chat-channel-unread-indicator__number\">\n            {{this.urgentCountLabel}}\n          </div>\n        </div>\n      {{else if this.showUnreadIndicator}}\n        <div class=\"chat-channel-unread-indicator\"></div>\n      {{/if}}\n      */\n      {\n        \"id\": \"xxIvxxSz\",\n        \"block\": \"[[[41,[30,0,[\\\"showUrgentIndicator\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"chat-channel-unread-indicator -urgent\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-channel-unread-indicator__number\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"urgentCountLabel\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"showUnreadIndicator\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"chat-channel-unread-indicator\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/header/icon/unread-indicator.js\",\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatHeaderIconUnreadIndicator;\n});","define(\"discourse/plugins/chat/discourse/components/chat/list/empty-state\", [\"exports\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const EmptyState = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"c-list-empty-state\" ...attributes>\n    {{yield}}\n  </div>\n  */\n  {\n    \"id\": \"xxdxBwya\",\n    \"block\": \"[[[11,0],[24,0,\\\"c-list-empty-state\\\"],[17,1],[12],[1,\\\"\\\\n  \\\"],[18,2,null],[1,\\\"\\\\n\\\"],[13]],[\\\"&attrs\\\",\\\"&default\\\"],[\\\"yield\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/list/empty-state.js\",\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"empty-state:EmptyState\"));\n  var _default = _exports.default = EmptyState;\n});","define(\"discourse/plugins/chat/discourse/components/chat/list/index\", [\"exports\", \"@glimmer/component\", \"@ember/helper\", \"@ember/object\", \"ember-modifier\", \"discourse/components/conditional-loading-spinner\", \"discourse/lib/debounce\", \"discourse/lib/environment\", \"discourse/lib/is-element-in-viewport\", \"discourse/plugins/chat/discourse/components/chat/list/empty-state\", \"discourse/plugins/chat/discourse/components/chat/list/item\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _helper, _object, _emberModifier, _conditionalLoadingSpinner, _debounce, _environment, _isElementInViewport, _emptyState, _item, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class List extends _component.default {\n    loadMore = (0, _emberModifier.modifier)(element => {\n      this.intersectionObserver = new IntersectionObserver(this.loadCollection);\n      this.intersectionObserver.observe(element);\n      return () => {\n        this.intersectionObserver.disconnect();\n      };\n    });\n    fill = (0, _emberModifier.modifier)(element => {\n      this.resizeObserver = new ResizeObserver(() => {\n        if ((0, _isElementInViewport.default)(element)) {\n          this.loadCollection();\n        }\n      });\n      this.resizeObserver.observe(element);\n      return () => {\n        this.resizeObserver.disconnect();\n      };\n    });\n    get itemComponent() {\n      return this.args.itemComponent ?? _item.default;\n    }\n    loadCollection() {\n      (0, _debounce.default)(this, this.debouncedLoadCollection, _environment.INPUT_DELAY);\n    }\n    static {\n      dt7948.n(this.prototype, \"loadCollection\", [_object.action]);\n    }\n    async debouncedLoadCollection() {\n      await this.args.collection.load({\n        limit: 10\n      });\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"c-list\">\n        <div\n          class={{if @collection.fetchedOnce \"--loaded\"}}\n          {{this.fill}}\n          ...attributes\n        >\n          {{#each @collection.items as |item|}}\n            {{yield (hash Item=(component this.itemComponent item=item))}}\n          {{else}}\n            {{#if @collection.fetchedOnce}}\n              {{yield (hash EmptyState=EmptyState)}}\n            {{/if}}\n          {{/each}}\n        </div>\n      \n        <div {{this.loadMore}}>\n          <br />\n        </div>\n      \n        <ConditionalLoadingSpinner @condition={{@collection.loading}} />\n      </div>\n      */\n      {\n        \"id\": \"+aW8Jwo7\",\n        \"block\": \"[[[10,0],[14,0,\\\"c-list\\\"],[12],[1,\\\"\\\\n  \\\"],[11,0],[16,0,[52,[30,1,[\\\"fetchedOnce\\\"]],\\\"--loaded\\\"]],[17,2],[4,[30,0,[\\\"fill\\\"]],null,null],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,2],[[28,[31,2],[[30,1,[\\\"items\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[18,4,[[28,[32,0],null,[[\\\"Item\\\"],[[50,[30,0,[\\\"itemComponent\\\"]],0,null,[[\\\"item\\\"],[[30,3]]]]]]]]],[1,\\\"\\\\n\\\"]],[3]],[[[41,[30,1,[\\\"fetchedOnce\\\"]],[[[1,\\\"        \\\"],[18,4,[[28,[32,0],null,[[\\\"EmptyState\\\"],[[32,1]]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[11,0],[4,[30,0,[\\\"loadMore\\\"]],null,null],[12],[1,\\\"\\\\n    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[8,[32,2],null,[[\\\"@condition\\\"],[[30,1,[\\\"loading\\\"]]]],null],[1,\\\"\\\\n\\\"],[13]],[\\\"@collection\\\",\\\"&attrs\\\",\\\"item\\\",\\\"&default\\\"],[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\",\\\"yield\\\",\\\"component\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/list/index.js\",\n        \"scope\": () => [_helper.hash, _emptyState.default, _conditionalLoadingSpinner.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = List;\n});","define(\"discourse/plugins/chat/discourse/components/chat/list/item\", [\"exports\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const Item = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    {{yield @item}}\n  */\n  {\n    \"id\": \"n8FPSC8X\",\n    \"block\": \"[[[18,2,[[30,1]]]],[\\\"@item\\\",\\\"&default\\\"],[\\\"yield\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/list/item.js\",\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"item:Item\"));\n  var _default = _exports.default = Item;\n});","define(\"discourse/plugins/chat/discourse/components/chat/message-creator/add-members\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/lib/ajax-error\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/message-creator/members-count\", \"discourse/plugins/chat/discourse/components/chat/message-creator/members-selector\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _dButton, _ajaxError, _truthHelpers, _discourseI18n, _membersCount, _membersSelector, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class AddMembers extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"toasts\", [_service.service]);\n    }\n    #toasts = (dt7948.i(this, \"toasts\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"loadingSlider\", [_service.service]);\n    }\n    #loadingSlider = (dt7948.i(this, \"loadingSlider\"), void 0);\n    get membersCount() {\n      const userCount = this.args.members?.reduce((acc, member) => {\n        if (member.type === \"group\") {\n          return acc + member.model.chat_enabled_user_count;\n        } else {\n          return acc + 1;\n        }\n      }, 0);\n      return userCount + (this.args.channel?.membershipsCount ?? 0);\n    }\n    get maxMembers() {\n      return this.siteSettings.chat_max_direct_message_users;\n    }\n    async saveGroupMembers() {\n      try {\n        this.loadingSlider.transitionStarted();\n        const usernames = this.args.members.filter(member => member.type === \"user\").map(member => member.model.username);\n        const groups = this.args.members.filter(member => member.type === \"group\").map(member => member.model.name);\n        await this.chatApi.addMembersToChannel(this.args.channel.id, {\n          usernames,\n          groups\n        });\n        this.toasts.success({\n          data: {\n            message: (0, _discourseI18n.i18n)(\"saved\")\n          }\n        });\n        this.router.transitionTo(\"chat.channel\", ...this.args.channel.routeModels);\n      } catch (error) {\n        (0, _ajaxError.popupAjaxError)(error);\n      } finally {\n        this.loadingSlider.transitionEnded();\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"saveGroupMembers\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"chat-message-creator__add-members-container\">\n        <div class=\"chat-message-creator__add-members\">\n          <MembersCount @count={{this.membersCount}} @max={{this.maxMembers}} />\n      \n          <MembersSelector\n            @channel={{@channel}}\n            @members={{@members}}\n            @onChange={{@onChangeMembers}}\n            @close={{@close}}\n            @cancel={{@cancel}}\n            @membersCount={{this.membersCount}}\n            @maxReached={{gte this.membersCount this.maxMembers}}\n          />\n      \n          {{#if @members.length}}\n            <div class=\"chat-message-creator__add-members-footer-container\">\n              <div class=\"chat-message-creator__add-members-footer\">\n                <DButton class=\"btn-flat\" @label=\"cancel\" @action={{@cancel}} />\n      \n                <DButton\n                  class=\"btn-primary add-to-channel\"\n                  @label=\"chat.direct_message_creator.add_to_channel\"\n                  @action={{this.saveGroupMembers}}\n                />\n              </div>\n            </div>\n          {{/if}}\n        </div>\n      </div>\n      */\n      {\n        \"id\": \"b54G2LpU\",\n        \"block\": \"[[[10,0],[14,0,\\\"chat-message-creator__add-members-container\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-message-creator__add-members\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[32,0],null,[[\\\"@count\\\",\\\"@max\\\"],[[30,0,[\\\"membersCount\\\"]],[30,0,[\\\"maxMembers\\\"]]]],null],[1,\\\"\\\\n\\\\n    \\\"],[8,[32,1],null,[[\\\"@channel\\\",\\\"@members\\\",\\\"@onChange\\\",\\\"@close\\\",\\\"@cancel\\\",\\\"@membersCount\\\",\\\"@maxReached\\\"],[[30,1],[30,2],[30,3],[30,4],[30,5],[30,0,[\\\"membersCount\\\"]],[28,[32,2],[[30,0,[\\\"membersCount\\\"]],[30,0,[\\\"maxMembers\\\"]]],null]]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,2,[\\\"length\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"chat-message-creator__add-members-footer-container\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"chat-message-creator__add-members-footer\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[32,3],[[24,0,\\\"btn-flat\\\"]],[[\\\"@label\\\",\\\"@action\\\"],[\\\"cancel\\\",[30,5]]],null],[1,\\\"\\\\n\\\\n          \\\"],[8,[32,3],[[24,0,\\\"btn-primary add-to-channel\\\"]],[[\\\"@label\\\",\\\"@action\\\"],[\\\"chat.direct_message_creator.add_to_channel\\\",[30,0,[\\\"saveGroupMembers\\\"]]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@channel\\\",\\\"@members\\\",\\\"@onChangeMembers\\\",\\\"@close\\\",\\\"@cancel\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/message-creator/add-members.js\",\n        \"scope\": () => [_membersCount.default, _membersSelector.default, _truthHelpers.gte, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = AddMembers;\n});","define(\"discourse/plugins/chat/discourse/components/chat/message-creator/channel\", [\"exports\", \"@glimmer/component\", \"discourse/truth-helpers\", \"discourse/plugins/chat/discourse/components/channel-title\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _truthHelpers, _channelTitle, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class Channel extends _component.default {\n    get tracking() {\n      return this.args.item.tracking;\n    }\n    get isUrgent() {\n      return this.args.item.model.isDirectMessageChannel ? this.hasUnreads || this.hasUrgent : this.hasUrgent;\n    }\n    get hasUnreads() {\n      return this.tracking?.unreadCount > 0;\n    }\n    get hasUrgent() {\n      return this.tracking?.mentionCount > 0 || this.tracking?.watchedThreadsUnreadCount > 0;\n    }\n    get hasUnreadThreads() {\n      return this.args.item.unread_thread_count > 0;\n    }\n    get showIndicator() {\n      return this.hasUnreads || this.hasUnreadThreads || this.hasUrgent;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div\n        class=\"chat-message-creator__chatable -category-channel\"\n        data-disabled={{not @item.enabled}}\n      >\n        <ChannelTitle\n          @channel={{@item.model}}\n          @isUnread={{this.showIndicator}}\n          @isUrgent={{this.isUrgent}}\n        />\n      </div>\n      */\n      {\n        \"id\": \"0oRrJvwN\",\n        \"block\": \"[[[10,0],[14,0,\\\"chat-message-creator__chatable -category-channel\\\"],[15,\\\"data-disabled\\\",[28,[32,0],[[30,1,[\\\"enabled\\\"]]],null]],[12],[1,\\\"\\\\n  \\\"],[8,[32,1],null,[[\\\"@channel\\\",\\\"@isUnread\\\",\\\"@isUrgent\\\"],[[30,1,[\\\"model\\\"]],[30,0,[\\\"showIndicator\\\"]],[30,0,[\\\"isUrgent\\\"]]]],null],[1,\\\"\\\\n\\\"],[13]],[\\\"@item\\\"],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/message-creator/channel.js\",\n        \"scope\": () => [_truthHelpers.not, _channelTitle.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = Channel;\n});","define(\"discourse/plugins/chat/discourse/components/chat/message-creator/constants\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.MODES = void 0;\n  const MODES = _exports.MODES = {\n    search: \"SEARCH\",\n    new_group: \"NEW_GROUP\",\n    add_members: \"ADD_MEMBERS\"\n  };\n});","define(\"discourse/plugins/chat/discourse/components/chat/message-creator/group\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"discourse/helpers/d-icon\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _dIcon, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatableGroup extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    group_with_too_many_members = (0, _discourseI18n.i18n)(\"chat.new_message_modal.group_with_too_many_members\", {\n      membersCount: this.args.item.model.chat_enabled_user_count\n    });\n    get isDisabled() {\n      if (!this.args.membersCount) {\n        return !this.args.item.enabled;\n      }\n      return this.args.membersCount + this.args.item.model.chat_enabled_user_count > this.siteSettings.chat_max_direct_message_users;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div\n        class=\"chat-message-creator__chatable -group\"\n        data-disabled={{this.isDisabled}}\n      >\n        <div class=\"chat-message-creator__group-icon\">\n          {{icon \"user-group\"}}\n        </div>\n        <div class=\"chat-message-creator__group-name\">\n          {{@item.model.name}}\n        </div>\n      \n        {{#if this.isDisabled}}\n          <span class=\"chat-message-creator__disabled-warning\">\n            {{this.group_with_too_many_members}}\n          </span>\n        {{/if}}\n      </div>\n      */\n      {\n        \"id\": \"PDsSouzk\",\n        \"block\": \"[[[10,0],[14,0,\\\"chat-message-creator__chatable -group\\\"],[15,\\\"data-disabled\\\",[30,0,[\\\"isDisabled\\\"]]],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-message-creator__group-icon\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[28,[32,0],[\\\"user-group\\\"],null]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-message-creator__group-name\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[30,1,[\\\"model\\\",\\\"name\\\"]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"isDisabled\\\"]],[[[1,\\\"    \\\"],[10,1],[14,0,\\\"chat-message-creator__disabled-warning\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"group_with_too_many_members\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[13]],[\\\"@item\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/message-creator/group.js\",\n        \"scope\": () => [_dIcon.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatableGroup;\n});","define(\"discourse/plugins/chat/discourse/components/chat/message-creator/index\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"discourse/lib/tracked-tools\", \"discourse/plugins/chat/discourse/components/chat/message-creator/add-members\", \"discourse/plugins/chat/discourse/components/chat/message-creator/constants\", \"discourse/plugins/chat/discourse/components/chat/message-creator/new-group\", \"discourse/plugins/chat/discourse/components/chat/message-creator/search\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _object, _trackedTools, _addMembers, _constants, _newGroup, _search, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatMessageCreator extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"mode\", [_tracking.tracked], function () {\n        return _constants.MODES.search;\n      });\n    }\n    #mode = (dt7948.i(this, \"mode\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"members\", [_trackedTools.autoTrackedArray], function () {\n        return [];\n      });\n    }\n    #members = (dt7948.i(this, \"members\"), void 0);\n    get componentForMode() {\n      switch (this.args.mode ?? this.mode) {\n        case _constants.MODES.search:\n          return _search.default;\n        case _constants.MODES.new_group:\n          return _newGroup.default;\n        case _constants.MODES.add_members:\n          return _addMembers.default;\n      }\n    }\n    changeMode(mode, members = []) {\n      this.mode = mode;\n      this.changeMembers(members);\n    }\n    static {\n      dt7948.n(this.prototype, \"changeMode\", [_object.action]);\n    }\n    changeMembers(members) {\n      this.members = members;\n    }\n    static {\n      dt7948.n(this.prototype, \"changeMembers\", [_object.action]);\n    }\n    cancelAction() {\n      return this.args.onCancel?.() || this.changeMode(_constants.MODES.search);\n    }\n    static {\n      dt7948.n(this.prototype, \"cancelAction\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"chat-message-creator-container\">\n        <div class=\"chat-message-creator\">\n          <this.componentForMode\n            @channel={{@channel}}\n            @onChangeMode={{this.changeMode}}\n            @onChangeMembers={{this.changeMembers}}\n            @close={{@onClose}}\n            @cancel={{this.cancelAction}}\n            @members={{this.members}}\n          />\n        </div>\n      </div>\n      */\n      {\n        \"id\": \"uZ9e7csK\",\n        \"block\": \"[[[10,0],[14,0,\\\"chat-message-creator-container\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-message-creator\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[30,0,[\\\"componentForMode\\\"]],null,[[\\\"@channel\\\",\\\"@onChangeMode\\\",\\\"@onChangeMembers\\\",\\\"@close\\\",\\\"@cancel\\\",\\\"@members\\\"],[[30,1],[30,0,[\\\"changeMode\\\"]],[30,0,[\\\"changeMembers\\\"]],[30,2],[30,0,[\\\"cancelAction\\\"]],[30,0,[\\\"members\\\"]]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@channel\\\",\\\"@onClose\\\"],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/message-creator/index.js\",\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatMessageCreator;\n});","define(\"discourse/plugins/chat/discourse/components/chat/message-creator/lib/chatables-loader\", [\"exports\", \"@ember/owner\", \"@ember/service\", \"discourse/lib/ajax\", \"discourse/lib/ajax-error\", \"discourse/lib/decorators\", \"discourse/plugins/chat/discourse/lib/chat-constants\", \"discourse/plugins/chat/discourse/models/chat-chatable\"], function (_exports, _owner, _service, _ajax, _ajaxError, _decorators, _chatConstants, _chatChatable) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.sortChatables = sortChatables;\n  const MAX_RESULTS = 10;\n  const TYPE_PRIORITY = {\n    USER: 0,\n    DM_CHANNEL: 1,\n    CATEGORY_CHANNEL: 2,\n    GROUP: 3\n  };\n  function typePriority(chatable) {\n    if (chatable.type === \"user\") {\n      return TYPE_PRIORITY.USER;\n    }\n    if (chatable.type === \"group\") {\n      return TYPE_PRIORITY.GROUP;\n    }\n    if (chatable.model?.chatableType === \"DirectMessage\") {\n      return TYPE_PRIORITY.DM_CHANNEL;\n    }\n    return TYPE_PRIORITY.CATEGORY_CHANNEL;\n  }\n  function sortChatables(chatables) {\n    return chatables.sort((a, b) => {\n      // Primary: match quality (from server, lower is better)\n      const matchA = a.matchQuality ?? _chatConstants.MATCH_QUALITY_PARTIAL;\n      const matchB = b.matchQuality ?? _chatConstants.MATCH_QUALITY_PARTIAL;\n      if (matchA !== matchB) {\n        return matchA - matchB;\n      }\n\n      // Secondary: type priority (users > DM channels > category channels > groups)\n      const typeA = typePriority(a);\n      const typeB = typePriority(b);\n      if (typeA !== typeB) {\n        return typeA - typeB;\n      }\n\n      // Tertiary: enabled before disabled (applies to users and groups)\n      if (a.enabled !== b.enabled) {\n        return a.enabled ? -1 : 1;\n      }\n      return 0;\n    });\n  }\n  class ChatablesLoader {\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"loadingSlider\", [_service.service]);\n    }\n    #loadingSlider = (dt7948.i(this, \"loadingSlider\"), void 0);\n    constructor(context) {\n      (0, _owner.setOwner)(this, (0, _owner.getOwner)(context));\n    }\n    async search(term, options = {\n      includeUsers: true,\n      includeGroups: true,\n      includeCategoryChannels: true,\n      includeDirectMessageChannels: true,\n      preloadChannels: false\n    }) {\n      this.request?.abort();\n      if (!term && options.preloadChannels) {\n        return this.#preloadedChannels();\n      }\n      if (!term) {\n        return [];\n      }\n      try {\n        this.loadingSlider.transitionStarted();\n        this.request = (0, _ajax.ajax)(\"/chat/api/chatables\", {\n          data: {\n            term,\n            include_users: options.includeUsers,\n            include_category_channels: options.includeCategoryChannels,\n            include_direct_message_channels: options.includeDirectMessageChannels,\n            excluded_memberships_channel_id: options.excludedMembershipsChannelId\n          }\n        });\n        const results = await this.request;\n        this.loadingSlider.transitionEnded();\n        const chatables = [...results.users, ...results.groups, ...results.direct_message_channels, ...results.category_channels].map(item => {\n          const chatable = _chatChatable.default.create(item);\n          const channel = this.#findChannel(chatable);\n          if (channel) {\n            chatable.tracking = channel.tracking;\n            chatable.unread_thread_count = channel.unreadThreadsCountSinceLastViewed;\n          }\n          return chatable;\n        });\n        return sortChatables(chatables).slice(0, MAX_RESULTS);\n      } catch (e) {\n        (0, _ajaxError.popupAjaxError)(e);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"search\", [_decorators.bind]);\n    }\n    #preloadedChannels() {\n      return this.chatChannelsManager.allChannels.map(channel => {\n        let chatable;\n        if (channel.chatable?.users?.length === 1) {\n          chatable = _chatChatable.default.createUser(channel.chatable.users[0]);\n        } else {\n          chatable = _chatChatable.default.createChannel(channel);\n        }\n        chatable.tracking = channel.tracking;\n        chatable.unread_thread_count = channel.unreadThreadsCountSinceLastViewed;\n        return chatable;\n      }).filter(Boolean).slice(0, MAX_RESULTS);\n    }\n    #findChannel(chatable) {\n      if (![\"user\", \"channel\"].includes(chatable.type)) {\n        return;\n      }\n      const {\n        allChannels\n      } = this.chatChannelsManager;\n      if (chatable.type === \"user\") {\n        return allChannels.find(({\n          chatable: {\n            users\n          }\n        }) => users?.length === 1 && users[0].id === chatable.model.id);\n      } else if (chatable.type === \"channel\") {\n        return allChannels.find(({\n          id\n        }) => id === chatable.model.id);\n      }\n    }\n  }\n  _exports.default = ChatablesLoader;\n});","define(\"discourse/plugins/chat/discourse/components/chat/message-creator/lib/iterate-list\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.getNext = getNext;\n  _exports.getPrevious = getPrevious;\n  function getNext(list, current = null) {\n    if (list.length === 0) {\n      return null;\n    }\n    list = list.filter(item => item.enabled);\n    if (current?.identifier) {\n      const currentIndex = list.findIndex(item => item.identifier === current?.identifier);\n      if (currentIndex < list.length - 1) {\n        return list[currentIndex + 1];\n      } else {\n        return list[0];\n      }\n    } else {\n      return list[0];\n    }\n  }\n  function getPrevious(list, current = null) {\n    if (list.length === 0) {\n      return null;\n    }\n    list = list.filter(item => item.enabled);\n    if (current?.identifier) {\n      const currentIndex = list.findIndex(item => item.identifier === current?.identifier);\n      if (currentIndex > 0) {\n        return list[currentIndex - 1];\n      } else {\n        return list.at(-1);\n      }\n    } else {\n      return list.at(-1);\n    }\n  }\n});","define(\"discourse/plugins/chat/discourse/components/chat/message-creator/list-action\", [\"exports\", \"discourse/components/d-button\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _dButton, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ListAction = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <DButton\n    class=\"btn btn-flat\"\n    @icon={{@item.icon}}\n    @translatedLabel={{@item.label}}\n  />\n  */\n  {\n    \"id\": \"b+hFU/xB\",\n    \"block\": \"[[[8,[32,0],[[24,0,\\\"btn btn-flat\\\"]],[[\\\"@icon\\\",\\\"@translatedLabel\\\"],[[30,1,[\\\"icon\\\"]],[30,1,[\\\"label\\\"]]]],null]],[\\\"@item\\\"],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/message-creator/list-action.js\",\n    \"scope\": () => [_dButton.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"list-action:ListAction\"));\n  var _default = _exports.default = ListAction;\n});","define(\"discourse/plugins/chat/discourse/components/chat/message-creator/list-handler\", [\"exports\", \"@glimmer/component\", \"ember-modifier\", \"discourse/plugins/chat/discourse/components/chat/message-creator/lib/iterate-list\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _emberModifier, _iterateList, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ListHandler extends _component.default {\n    handleKeydown = (0, _emberModifier.modifier)(element => {\n      const handler = event => {\n        if (event.key === \"ArrowDown\") {\n          event.preventDefault();\n          event.stopPropagation();\n          this.args.onHighlight((0, _iterateList.getNext)(this.args.items, this.args.highlightedItem));\n        } else if (event.key === \"ArrowUp\") {\n          event.preventDefault();\n          event.stopPropagation();\n          this.args.onHighlight((0, _iterateList.getPrevious)(this.args.items, this.args.highlightedItem));\n        } else if (event.key === \"Enter\" && this.args.highlightedItem) {\n          event.preventDefault();\n          event.stopPropagation();\n          if (event.shiftKey && this.args.onShifSelect) {\n            this.args.onShifSelect(this.args.highlightedItem);\n          } else {\n            this.args.onSelect(this.args.highlightedItem);\n          }\n        }\n      };\n      element.addEventListener(\"keydown\", handler);\n      return () => {\n        element.removeEventListener(\"keydown\", handler);\n      };\n    });\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <span style=\"display: contents\" {{this.handleKeydown}} ...attributes>\n        {{yield}}\n      </span>\n      */\n      {\n        \"id\": \"aRJ80Wre\",\n        \"block\": \"[[[11,1],[24,5,\\\"display: contents\\\"],[17,1],[4,[30,0,[\\\"handleKeydown\\\"]],null,null],[12],[1,\\\"\\\\n  \\\"],[18,2,null],[1,\\\"\\\\n\\\"],[13]],[\\\"&attrs\\\",\\\"&default\\\"],[\\\"yield\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/message-creator/list-handler.js\",\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ListHandler;\n});","define(\"discourse/plugins/chat/discourse/components/chat/message-creator/list\", [\"exports\", \"@glimmer/component\", \"@ember/helper\", \"@ember/modifier\", \"@ember/object\", \"discourse/helpers/concat-class\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/message-creator/channel\", \"discourse/plugins/chat/discourse/components/chat/message-creator/group\", \"discourse/plugins/chat/discourse/components/chat/message-creator/list-action\", \"discourse/plugins/chat/discourse/components/chat/message-creator/user\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _helper, _modifier, _object, _concatClass, _truthHelpers, _discourseI18n, _channel, _group, _listAction, _user, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class List extends _component.default {\n    cantAddMoreMembersLabel = (0, _discourseI18n.i18n)(\"chat.new_message_modal.cant_add_more_members\");\n    componentForItem(type) {\n      switch (type) {\n        case \"list-action\":\n          return _listAction.default;\n        case \"user\":\n          return _user.default;\n        case \"group\":\n          return _group.default;\n        case \"channel\":\n          return _channel.default;\n      }\n    }\n    handleEnter(item, event) {\n      if (event.key !== \"Enter\") {\n        return;\n      }\n      if (event.shiftKey && this.args.onShiftSelect) {\n        this.args.onShiftSelect?.(item);\n      } else {\n        this.args.onSelect?.(item);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"handleEnter\", [_object.action]);\n    }\n    handleClick(item, event) {\n      if (event.shiftKey && this.args.onShiftSelect) {\n        this.args.onShiftSelect?.(item);\n      } else {\n        this.args.onSelect?.(item);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"handleClick\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if @items}}\n        <div class=\"chat-message-creator__list-container\">\n          {{#if @maxReached}}\n            <div\n              class=\"chat-message-creator__warning-max-members\"\n            >{{this.cantAddMoreMembersLabel}}</div>\n          {{else}}\n            <ul class=\"chat-message-creator__list\">\n              {{#each @items as |item|}}\n                <li\n                  class={{concatClass\n                    \"chat-message-creator__list-item\"\n                    (if\n                      (eq item.identifier @highlightedItem.identifier)\n                      \"-highlighted\"\n                    )\n                  }}\n                  {{on \"click\" (fn this.handleClick item)}}\n                  {{on \"keypress\" (fn this.handleEnter item)}}\n                  {{on \"mousemove\" (fn @onHighlight item)}}\n                  {{on \"mouseleave\" (fn @onHighlight null)}}\n                  role=\"button\"\n                  tabindex=\"0\"\n                  data-identifier={{item.identifier}}\n                  id={{item.id}}\n                >\n                  {{component\n                    (this.componentForItem item.type)\n                    membersCount=@membersCount\n                    item=item\n                  }}\n                </li>\n              {{/each}}\n            </ul>\n          {{/if}}\n        </div>\n      {{/if}}\n      */\n      {\n        \"id\": \"7iT8Uj1t\",\n        \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"chat-message-creator__list-container\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,2],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"chat-message-creator__warning-max-members\\\"],[12],[1,[30,0,[\\\"cantAddMoreMembersLabel\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,\\\"ul\\\"],[14,0,\\\"chat-message-creator__list\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,2],[[28,[31,2],[[30,1]],null]],null],null,[[[1,\\\"          \\\"],[11,\\\"li\\\"],[16,0,[28,[32,0],[\\\"chat-message-creator__list-item\\\",[52,[28,[32,1],[[30,3,[\\\"identifier\\\"]],[30,4,[\\\"identifier\\\"]]],null],\\\"-highlighted\\\"]],null]],[24,\\\"role\\\",\\\"button\\\"],[24,\\\"tabindex\\\",\\\"0\\\"],[16,\\\"data-identifier\\\",[30,3,[\\\"identifier\\\"]]],[16,1,[30,3,[\\\"id\\\"]]],[4,[32,2],[\\\"click\\\",[28,[32,3],[[30,0,[\\\"handleClick\\\"]],[30,3]],null]],null],[4,[32,2],[\\\"keypress\\\",[28,[32,3],[[30,0,[\\\"handleEnter\\\"]],[30,3]],null]],null],[4,[32,2],[\\\"mousemove\\\",[28,[32,3],[[30,5],[30,3]],null]],null],[4,[32,2],[\\\"mouseleave\\\",[28,[32,3],[[30,5],null],null]],null],[12],[1,\\\"\\\\n            \\\"],[46,[28,[30,0,[\\\"componentForItem\\\"]],[[30,3,[\\\"type\\\"]]],null],null,[[\\\"membersCount\\\",\\\"item\\\"],[[30,6],[30,3]]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[3]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@items\\\",\\\"@maxReached\\\",\\\"item\\\",\\\"@highlightedItem\\\",\\\"@onHighlight\\\",\\\"@membersCount\\\"],[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\",\\\"component\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/message-creator/list.js\",\n        \"scope\": () => [_concatClass.default, _truthHelpers.eq, _modifier.on, _helper.fn],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = List;\n});","define(\"discourse/plugins/chat/discourse/components/chat/message-creator/member\", [\"exports\", \"@ember/helper\", \"discourse/components/d-button\", \"discourse/helpers/concat-class\", \"discourse/helpers/d-icon\", \"discourse/truth-helpers\", \"discourse/plugins/chat/discourse/components/chat-user-avatar\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _helper, _dButton, _concatClass, _dIcon, _truthHelpers, _chatUserAvatar, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const Member = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <DButton\n    class={{concatClass\n      \"chat-message-creator__member btn-default\"\n      (if @highlighted \"-highlighted\")\n    }}\n    @action={{fn @onSelect @member}}\n  >\n    {{#if (eq @member.type \"user\")}}\n      <ChatUserAvatar\n        @user={{@member.model}}\n        @interactive={{false}}\n        @showPresence={{false}}\n      />\n      <span class=\"chat-message-creator__member-username\">\n        {{@member.model.username}}\n      </span>\n    {{else if (eq @member.type \"group\")}}\n      <div class=\"chat-message-creator__group-icon\">\n        {{icon \"user-group\"}}\n      </div>\n      <span class=\"chat-message-creator__member-group\">\n        {{@member.model.name}}\n      </span>\n    {{/if}}\n  \n    {{icon \"xmark\"}}\n  </DButton>\n  */\n  {\n    \"id\": \"qdiUB1Zr\",\n    \"block\": \"[[[8,[32,0],[[16,0,[28,[32,1],[\\\"chat-message-creator__member btn-default\\\",[52,[30,1],\\\"-highlighted\\\"]],null]]],[[\\\"@action\\\"],[[28,[32,2],[[30,2],[30,3]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[28,[32,3],[[30,3,[\\\"type\\\"]],\\\"user\\\"],null],[[[1,\\\"    \\\"],[8,[32,4],null,[[\\\"@user\\\",\\\"@interactive\\\",\\\"@showPresence\\\"],[[30,3,[\\\"model\\\"]],false,false]],null],[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"chat-message-creator__member-username\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[30,3,[\\\"model\\\",\\\"username\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[32,3],[[30,3,[\\\"type\\\"]],\\\"group\\\"],null],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"chat-message-creator__group-icon\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[28,[32,5],[\\\"user-group\\\"],null]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"chat-message-creator__member-group\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[30,3,[\\\"model\\\",\\\"name\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]],null]],[]]],[1,\\\"\\\\n  \\\"],[1,[28,[32,5],[\\\"xmark\\\"],null]],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"@highlighted\\\",\\\"@onSelect\\\",\\\"@member\\\"],[\\\"if\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/message-creator/member.js\",\n    \"scope\": () => [_dButton.default, _concatClass.default, _helper.fn, _truthHelpers.eq, _chatUserAvatar.default, _dIcon.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"member:Member\"));\n  var _default = _exports.default = Member;\n});","define(\"discourse/plugins/chat/discourse/components/chat/message-creator/members-count\", [\"exports\", \"@glimmer/component\", \"discourse/helpers/concat-class\", \"discourse/truth-helpers\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _concatClass, _truthHelpers, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class MembersCount extends _component.default {\n    get countLabel() {\n      return (0, _discourseI18n.i18n)(\"chat.direct_message_creator.members_counter\", {\n        count: this.args.count,\n        max: this.args.max\n      });\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div\n        class={{concatClass\n          \"chat-message-creator__members-count\"\n          (if (gte @count @max) \"-reached-limit\")\n        }}\n      >\n        {{this.countLabel}}\n      </div>\n      */\n      {\n        \"id\": \"ILzRu2gn\",\n        \"block\": \"[[[10,0],[15,0,[28,[32,0],[\\\"chat-message-creator__members-count\\\",[52,[28,[32,1],[[30,1],[30,2]],null],\\\"-reached-limit\\\"]],null]],[12],[1,\\\"\\\\n  \\\"],[1,[30,0,[\\\"countLabel\\\"]]],[1,\\\"\\\\n\\\"],[13]],[\\\"@count\\\",\\\"@max\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/message-creator/members-count.js\",\n        \"scope\": () => [_concatClass.default, _truthHelpers.gte],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = MembersCount;\n});","define(\"discourse/plugins/chat/discourse/components/chat/message-creator/members-selector\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/lib/debounce\", \"discourse/lib/environment\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/message-creator/lib/chatables-loader\", \"discourse/plugins/chat/discourse/components/chat/message-creator/list\", \"discourse/plugins/chat/discourse/components/chat/message-creator/list-handler\", \"discourse/plugins/chat/discourse/components/chat/message-creator/members\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _object, _service, _dButton, _debounce, _environment, _discourseI18n, _chatablesLoader, _list, _listHandler, _members, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class MembersSelector extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatables\", [_tracking.tracked], function () {\n        return [];\n      });\n    }\n    #chatables = (dt7948.i(this, \"chatables\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"filter\", [_tracking.tracked], function () {\n        return \"\";\n      });\n    }\n    #filter = (dt7948.i(this, \"filter\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"highlightedMember\", [_tracking.tracked]);\n    }\n    #highlightedMember = (dt7948.i(this, \"highlightedMember\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"highlightedChatable\", [_tracking.tracked]);\n    }\n    #highlightedChatable = (dt7948.i(this, \"highlightedChatable\"), void 0);\n    placeholder = (0, _discourseI18n.i18n)(\"chat.direct_message_creator.group_name\");\n    get items() {\n      return this.chatables.filter(c => !this.highlightedMemberIds.includes(c.model.id));\n    }\n    get highlightedMemberIds() {\n      return this.args.members.map(u => u.model.id);\n    }\n    highlightMember(member) {\n      this.highlightedMember = member;\n    }\n    static {\n      dt7948.n(this.prototype, \"highlightMember\", [_object.action]);\n    }\n    highlightChatable(chatable) {\n      this.highlightedChatable = chatable;\n    }\n    static {\n      dt7948.n(this.prototype, \"highlightChatable\", [_object.action]);\n    }\n    selectChatable(chatable) {\n      if (!chatable.enabled) {\n        return;\n      }\n      const chatableMembers = chatable.type === \"group\" ? chatable.model.chat_enabled_user_count : 1;\n      if (this.args.membersCount + chatableMembers > this.siteSettings.chat_max_direct_message_users) {\n        return;\n      }\n      if (this.highlightedMemberIds.includes(chatable.model.id)) {\n        this.unselectMember(chatable);\n      } else {\n        this.args.onChange?.([...this.args.members, chatable]);\n        this.highlightedChatable = this.items[0];\n      }\n      this.filter = \"\";\n      this.focusFilterAction?.();\n      this.highlightedMember = null;\n    }\n    static {\n      dt7948.n(this.prototype, \"selectChatable\", [_object.action]);\n    }\n    registerFocusFilterAction(actionFn) {\n      this.focusFilterAction = actionFn;\n    }\n    static {\n      dt7948.n(this.prototype, \"registerFocusFilterAction\", [_object.action]);\n    }\n    onFilter(event) {\n      this.searchHandler = (0, _debounce.default)(this, this.fetch, event.target.value, _environment.INPUT_DELAY);\n    }\n    static {\n      dt7948.n(this.prototype, \"onFilter\", [_object.action]);\n    }\n    async fetch(term) {\n      this.highlightedMember = null;\n      const loader = new _chatablesLoader.default(this);\n      this.chatables = await loader.search(term, {\n        includeCategoryChannels: false,\n        includeDirectMessageChannels: false,\n        excludedMembershipsChannelId: this.args.channel?.id\n      });\n      this.highlightedChatable = this.items[0];\n    }\n    static {\n      dt7948.n(this.prototype, \"fetch\", [_object.action]);\n    }\n    unselectMember(removedMember) {\n      this.args.onChange?.(this.args.members.filter(member => member !== removedMember));\n      this.highlightedMember = null;\n      this.highlightedChatable = this.items[0];\n      this.focusFilterAction?.();\n    }\n    static {\n      dt7948.n(this.prototype, \"unselectMember\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <ListHandler\n        @items={{this.items}}\n        @highlightedItem={{this.highlightedChatable}}\n        @onHighlight={{this.highlightChatable}}\n        @onSelect={{this.selectChatable}}\n      >\n        <div class=\"chat-message-creator__add-members-header-container\">\n          <div class=\"chat-message-creator__add-members-header\">\n            <Members\n              @filter={{this.filter}}\n              @members={{@members}}\n              @highlightedMember={{this.highlightedMember}}\n              @onFilter={{this.onFilter}}\n              @registerFocusFilterAction={{this.registerFocusFilterAction}}\n              @onHighlightMember={{this.highlightMember}}\n              @onSelectMember={{this.unselectMember}}\n            />\n      \n            <DButton\n              class=\"btn-flat chat-message-creator__add-members__close-btn\"\n              @action={{@cancel}}\n              @icon=\"xmark\"\n            />\n          </div>\n        </div>\n      \n        <List\n          @items={{this.items}}\n          @highlightedItem={{this.highlightedChatable}}\n          @onSelect={{this.selectChatable}}\n          @onHighlight={{this.highlightChatable}}\n          @maxReached={{@maxReached}}\n          @membersCount={{@membersCount}}\n        />\n      \n      </ListHandler>\n      */\n      {\n        \"id\": \"6eyDr+gg\",\n        \"block\": \"[[[8,[32,0],null,[[\\\"@items\\\",\\\"@highlightedItem\\\",\\\"@onHighlight\\\",\\\"@onSelect\\\"],[[30,0,[\\\"items\\\"]],[30,0,[\\\"highlightedChatable\\\"]],[30,0,[\\\"highlightChatable\\\"]],[30,0,[\\\"selectChatable\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-message-creator__add-members-header-container\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-message-creator__add-members-header\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[32,1],null,[[\\\"@filter\\\",\\\"@members\\\",\\\"@highlightedMember\\\",\\\"@onFilter\\\",\\\"@registerFocusFilterAction\\\",\\\"@onHighlightMember\\\",\\\"@onSelectMember\\\"],[[30,0,[\\\"filter\\\"]],[30,1],[30,0,[\\\"highlightedMember\\\"]],[30,0,[\\\"onFilter\\\"]],[30,0,[\\\"registerFocusFilterAction\\\"]],[30,0,[\\\"highlightMember\\\"]],[30,0,[\\\"unselectMember\\\"]]]],null],[1,\\\"\\\\n\\\\n      \\\"],[8,[32,2],[[24,0,\\\"btn-flat chat-message-creator__add-members__close-btn\\\"]],[[\\\"@action\\\",\\\"@icon\\\"],[[30,2],\\\"xmark\\\"]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[8,[32,3],null,[[\\\"@items\\\",\\\"@highlightedItem\\\",\\\"@onSelect\\\",\\\"@onHighlight\\\",\\\"@maxReached\\\",\\\"@membersCount\\\"],[[30,0,[\\\"items\\\"]],[30,0,[\\\"highlightedChatable\\\"]],[30,0,[\\\"selectChatable\\\"]],[30,0,[\\\"highlightChatable\\\"]],[30,3],[30,4]]],null],[1,\\\"\\\\n\\\\n\\\"]],[]]]]]],[\\\"@members\\\",\\\"@cancel\\\",\\\"@maxReached\\\",\\\"@membersCount\\\"],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/message-creator/members-selector.js\",\n        \"scope\": () => [_listHandler.default, _members.default, _dButton.default, _list.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = MembersSelector;\n});","define(\"discourse/plugins/chat/discourse/components/chat/message-creator/members\", [\"exports\", \"@glimmer/component\", \"@ember/component\", \"@ember/modifier\", \"@ember/object\", \"@ember/render-modifiers/modifiers/did-insert\", \"discourse/helpers/d-icon\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/message-creator/lib/iterate-list\", \"discourse/plugins/chat/discourse/components/chat/message-creator/member\", \"@ember/template-factory\"], function (_exports, _component, _component2, _modifier, _object, _didInsert, _dIcon, _truthHelpers, _discourseI18n, _iterateList, _member, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class Members extends _component.default {\n    addMoreMembersLabel = (0, _discourseI18n.i18n)(\"chat.new_message_modal.user_search_placeholder\");\n    onFilter() {\n      this.args.onFilter(...arguments);\n    }\n    static {\n      dt7948.n(this.prototype, \"onFilter\", [_object.action]);\n    }\n    registerFocusFilterAction(element) {\n      this.args.registerFocusFilterAction(() => element.focus());\n    }\n    static {\n      dt7948.n(this.prototype, \"registerFocusFilterAction\", [_object.action]);\n    }\n    handleKeypress(event) {\n      if (event.key === \"Backspace\" && event.target.value === \"\") {\n        event.preventDefault();\n        event.stopPropagation();\n        if (!this.args.highlightedMember) {\n          this.args.onHighlightMember(this.args.members.at(-1));\n        } else {\n          this.args.onSelectMember(this.args.highlightedMember);\n        }\n        return;\n      }\n      if (event.key === \"ArrowLeft\" && event.target.value === \"\") {\n        event.preventDefault();\n        event.stopPropagation();\n        this.args.onHighlightMember((0, _iterateList.getPrevious)(this.args.members, this.args.highlightedMember));\n        return;\n      }\n      if (event.key === \"ArrowRight\" && event.target.value === \"\") {\n        event.preventDefault();\n        event.stopPropagation();\n        this.args.onHighlightMember((0, _iterateList.getNext)(this.args.members, this.args.highlightedMember));\n        return;\n      }\n      if (event.key === \"Enter\" && this.args.highlightedMember) {\n        event.preventDefault();\n        event.stopPropagation();\n        this.args.onSelectMember(this.args.highlightedMember);\n        return;\n      }\n      this.highlightedMember = null;\n    }\n    static {\n      dt7948.n(this.prototype, \"handleKeypress\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"chat-message-creator__members-container\">\n        <div class=\"chat-message-creator__members\">\n          {{icon \"magnifying-glass\"}}\n      \n          {{#each @members as |member|}}\n            <Member\n              @member={{member}}\n              @onSelect={{@onSelectMember}}\n              @highlighted={{eq member @highlightedMember}}\n            />\n          {{/each}}\n      \n          <Input\n            placeholder={{this.addMoreMembersLabel}}\n            class=\"chat-message-creator__members-input\"\n            @value={{@filter}}\n            autofocus={{true}}\n            {{on \"input\" this.onFilter}}\n            {{on \"keydown\" this.handleKeypress}}\n            {{didInsert this.registerFocusFilterAction}}\n          />\n        </div>\n      </div>\n      */\n      {\n        \"id\": \"ojJnExVU\",\n        \"block\": \"[[[10,0],[14,0,\\\"chat-message-creator__members-container\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-message-creator__members\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[28,[32,0],[\\\"magnifying-glass\\\"],null]],[1,\\\"\\\\n\\\\n\\\"],[42,[28,[31,1],[[28,[31,1],[[30,1]],null]],null],null,[[[1,\\\"      \\\"],[8,[32,1],null,[[\\\"@member\\\",\\\"@onSelect\\\",\\\"@highlighted\\\"],[[30,2],[30,3],[28,[32,2],[[30,2],[30,4]],null]]],null],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"\\\\n    \\\"],[8,[32,3],[[16,\\\"placeholder\\\",[30,0,[\\\"addMoreMembersLabel\\\"]]],[24,0,\\\"chat-message-creator__members-input\\\"],[16,\\\"autofocus\\\",true],[4,[32,4],[\\\"input\\\",[30,0,[\\\"onFilter\\\"]]],null],[4,[32,4],[\\\"keydown\\\",[30,0,[\\\"handleKeypress\\\"]]],null],[4,[32,5],[[30,0,[\\\"registerFocusFilterAction\\\"]]],null]],[[\\\"@value\\\"],[[30,5]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@members\\\",\\\"member\\\",\\\"@onSelectMember\\\",\\\"@highlightedMember\\\",\\\"@filter\\\"],[\\\"each\\\",\\\"-track-array\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/message-creator/members.js\",\n        \"scope\": () => [_dIcon.default, _member.default, _truthHelpers.eq, _component2.Input, _modifier.on, _didInsert.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = Members;\n});","define(\"discourse/plugins/chat/discourse/components/chat/message-creator/new-group\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/component\", \"@ember/object\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/lib/ajax-error\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/message-creator/members-count\", \"discourse/plugins/chat/discourse/components/chat/message-creator/members-selector\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _component2, _object, _service, _dButton, _ajaxError, _truthHelpers, _discourseI18n, _membersCount, _membersSelector, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class NewGroup extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"newGroupTitle\", [_tracking.tracked], function () {\n        return \"\";\n      });\n    }\n    #newGroupTitle = (dt7948.i(this, \"newGroupTitle\"), void 0);\n    placeholder = (0, _discourseI18n.i18n)(\"chat.direct_message_creator.group_name\");\n    get membersCount() {\n      return this.args.members?.reduce((acc, member) => {\n        if (member.type === \"group\") {\n          return acc + member.model.chat_enabled_user_count;\n        } else {\n          return acc + 1;\n        }\n      }, 0);\n    }\n    get maxMembers() {\n      return this.siteSettings.chat_max_direct_message_users;\n    }\n    async createGroup() {\n      try {\n        const usernames = this.args.members.filter(member => member.type === \"user\").map(member => member.model.username);\n        const groups = this.args.members.filter(member => member.type === \"group\").map(member => member.model.name);\n        const channel = await this.chat.createDmChannel({\n          usernames,\n          groups\n        }, {\n          name: this.newGroupTitle\n        });\n        if (!channel) {\n          return;\n        }\n        this.args.close?.();\n        this.router.transitionTo(\"chat.channel\", ...channel.routeModels);\n      } catch (error) {\n        (0, _ajaxError.popupAjaxError)(error);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"createGroup\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"chat-message-creator__new-group-container\">\n        <div class=\"chat-message-creator__new-group\">\n          <div class=\"chat-message-creator__new-group-header-container\">\n            <div class=\"chat-message-creator__new-group-header\">\n              <Input\n                name=\"channel-name\"\n                class=\"chat-message-creator__new-group-header__input\"\n                placeholder={{this.placeholder}}\n                @value={{this.newGroupTitle}}\n              />\n      \n              <MembersCount\n                @count={{this.membersCount}}\n                @max={{this.siteSettings.chat_max_direct_message_users}}\n              />\n            </div>\n          </div>\n      \n          <MembersSelector\n            @members={{@members}}\n            @channel={{@channel}}\n            @onChange={{@onChangeMembers}}\n            @close={{@close}}\n            @cancel={{@cancel}}\n            @membersCount={{this.membersCount}}\n            @maxReached={{gte this.membersCount this.maxMembers}}\n          />\n      \n          {{#if @members.length}}\n            <div class=\"chat-message-creator__new-group-footer-container\">\n              <div class=\"chat-message-creator__new-group-footer\">\n                <DButton class=\"btn-flat\" @label=\"cancel\" @action={{@cancel}} />\n                <DButton\n                  class=\"btn-primary create-chat-group\"\n                  @label=\"chat.new_message_modal.create_new_group_chat\"\n                  @action={{this.createGroup}}\n                />\n      \n              </div>\n            </div>\n          {{/if}}\n        </div>\n      </div>\n      */\n      {\n        \"id\": \"CEr0f924\",\n        \"block\": \"[[[10,0],[14,0,\\\"chat-message-creator__new-group-container\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-message-creator__new-group\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-message-creator__new-group-header-container\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"chat-message-creator__new-group-header\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[32,0],[[24,3,\\\"channel-name\\\"],[24,0,\\\"chat-message-creator__new-group-header__input\\\"],[16,\\\"placeholder\\\",[30,0,[\\\"placeholder\\\"]]]],[[\\\"@value\\\"],[[30,0,[\\\"newGroupTitle\\\"]]]],null],[1,\\\"\\\\n\\\\n        \\\"],[8,[32,1],null,[[\\\"@count\\\",\\\"@max\\\"],[[30,0,[\\\"membersCount\\\"]],[30,0,[\\\"siteSettings\\\",\\\"chat_max_direct_message_users\\\"]]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[8,[32,2],null,[[\\\"@members\\\",\\\"@channel\\\",\\\"@onChange\\\",\\\"@close\\\",\\\"@cancel\\\",\\\"@membersCount\\\",\\\"@maxReached\\\"],[[30,1],[30,2],[30,3],[30,4],[30,5],[30,0,[\\\"membersCount\\\"]],[28,[32,3],[[30,0,[\\\"membersCount\\\"]],[30,0,[\\\"maxMembers\\\"]]],null]]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,1,[\\\"length\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"chat-message-creator__new-group-footer-container\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"chat-message-creator__new-group-footer\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[32,4],[[24,0,\\\"btn-flat\\\"]],[[\\\"@label\\\",\\\"@action\\\"],[\\\"cancel\\\",[30,5]]],null],[1,\\\"\\\\n          \\\"],[8,[32,4],[[24,0,\\\"btn-primary create-chat-group\\\"]],[[\\\"@label\\\",\\\"@action\\\"],[\\\"chat.new_message_modal.create_new_group_chat\\\",[30,0,[\\\"createGroup\\\"]]]],null],[1,\\\"\\\\n\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@members\\\",\\\"@channel\\\",\\\"@onChangeMembers\\\",\\\"@close\\\",\\\"@cancel\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/message-creator/new-group.js\",\n        \"scope\": () => [_component2.Input, _membersCount.default, _membersSelector.default, _truthHelpers.gte, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = NewGroup;\n});","define(\"discourse/plugins/chat/discourse/components/chat/message-creator/search-input\", [\"exports\", \"@glimmer/component\", \"@ember/component\", \"@ember/modifier\", \"discourse/helpers/d-icon\", \"discourse-i18n\", \"@ember/template-factory\"], function (_exports, _component, _component2, _modifier, _dIcon, _discourseI18n, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatMessageCreatorSearchInput extends _component.default {\n    filterPlaceholder = (0, _discourseI18n.i18n)(\"chat.new_message_modal.filter\");\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"chat-message-creator__search-input-container\">\n        <div class=\"chat-message-creator__search-input\">\n          {{icon\n            \"magnifying-glass\"\n            class=\"chat-message-creator__search-input__search-icon\"\n          }}\n          <Input\n            class=\"chat-message-creator__search-input__input\"\n            placeholder={{this.filterPlaceholder}}\n            {{on \"input\" @onFilter}}\n          />\n        </div>\n      </div>\n      */\n      {\n        \"id\": \"JaYvtG+O\",\n        \"block\": \"[[[10,0],[14,0,\\\"chat-message-creator__search-input-container\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-message-creator__search-input\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[28,[32,0],[\\\"magnifying-glass\\\"],[[\\\"class\\\"],[\\\"chat-message-creator__search-input__search-icon\\\"]]]],[1,\\\"\\\\n    \\\"],[8,[32,1],[[24,0,\\\"chat-message-creator__search-input__input\\\"],[16,\\\"placeholder\\\",[30,0,[\\\"filterPlaceholder\\\"]]],[4,[32,2],[\\\"input\\\",[30,1]],null]],null,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@onFilter\\\"],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/message-creator/search-input.js\",\n        \"scope\": () => [_dIcon.default, _component2.Input, _modifier.on],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatMessageCreatorSearchInput;\n});","define(\"discourse/plugins/chat/discourse/components/chat/message-creator/search\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/helper\", \"@ember/object\", \"@ember/render-modifiers/modifiers/did-insert\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/lib/ajax-error\", \"discourse/lib/debounce\", \"discourse/lib/environment\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/message-creator/constants\", \"discourse/plugins/chat/discourse/components/chat/message-creator/lib/chatables-loader\", \"discourse/plugins/chat/discourse/components/chat/message-creator/list\", \"discourse/plugins/chat/discourse/components/chat/message-creator/list-handler\", \"discourse/plugins/chat/discourse/components/chat/message-creator/search-input\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _helper, _object, _didInsert, _service, _dButton, _ajaxError, _debounce, _environment, _discourseI18n, _constants, _chatablesLoader, _list, _listHandler, _searchInput, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatMessageCreatorSearch extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatGuardian\", [_service.service]);\n    }\n    #chatGuardian = (dt7948.i(this, \"chatGuardian\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatables\", [_tracking.tracked], function () {\n        return [];\n      });\n    }\n    #chatables = (dt7948.i(this, \"chatables\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"highlightedChatable\", [_tracking.tracked]);\n    }\n    #highlightedChatable = (dt7948.i(this, \"highlightedChatable\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"term\", [_tracking.tracked]);\n    }\n    #term = (dt7948.i(this, \"term\"), void 0);\n    get items() {\n      const items = [];\n      if (!this.term?.length && this.chatGuardian.canUseGroupChat()) {\n        items.push({\n          identifier: \"new-group\",\n          type: \"list-action\",\n          label: (0, _discourseI18n.i18n)(\"chat.new_message_modal.new_group_chat\"),\n          enabled: true,\n          icon: \"users\",\n          id: \"new-group-chat\"\n        });\n      }\n      return [...items, ...this.chatables];\n    }\n    prefillAddMembers(item) {\n      this.args.onChangeMode(_constants.MODES.new_group, [item]);\n    }\n    static {\n      dt7948.n(this.prototype, \"prefillAddMembers\", [_object.action]);\n    }\n    highlightChatable(chatable) {\n      this.highlightedChatable = chatable;\n    }\n    static {\n      dt7948.n(this.prototype, \"highlightChatable\", [_object.action]);\n    }\n    async selectChatable(item) {\n      switch (item.type) {\n        case \"list-action\":\n          this.args.onChangeMode(_constants.MODES.new_group);\n          break;\n        case \"user\":\n          if (!item.enabled) {\n            return;\n          }\n          await this.startOneToOneChannel(item.model.username);\n          break;\n        case \"group\":\n          if (!item.enabled) {\n            return;\n          }\n          this.args.onChangeMode(_constants.MODES.new_group, [item]);\n          break;\n        default:\n          this.router.transitionTo(\"chat.channel\", ...item.model.routeModels);\n          this.args.close();\n          break;\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"selectChatable\", [_object.action]);\n    }\n    onFilter(event) {\n      this.chatables = [];\n      this.term = event?.target?.value;\n      this.searchHandler = (0, _debounce.default)(this, this.fetch, event.target.value, _environment.INPUT_DELAY);\n    }\n    static {\n      dt7948.n(this.prototype, \"onFilter\", [_object.action]);\n    }\n    async fetch() {\n      const loader = new _chatablesLoader.default(this);\n      this.chatables = await loader.search(this.term, {\n        preloadChannels: !this.term\n      });\n      this.highlightedChatable = this.items[0];\n    }\n    static {\n      dt7948.n(this.prototype, \"fetch\", [_object.action]);\n    }\n    async startOneToOneChannel(username) {\n      try {\n        const channel = await this.chat.upsertDmChannel({\n          usernames: [username]\n        });\n        if (!channel) {\n          return;\n        }\n        this.args.close?.();\n        this.router.transitionTo(\"chat.channel\", ...channel.routeModels);\n      } catch (error) {\n        (0, _ajaxError.popupAjaxError)(error);\n      }\n    }\n    async startGroupChannel(group) {\n      try {\n        const channel = await this.chat.upsertDmChannel({\n          groups: [group]\n        });\n        if (!channel) {\n          return;\n        }\n        this.args.close?.();\n        this.router.transitionTo(\"chat.channel\", ...channel.routeModels);\n      } catch (error) {\n        (0, _ajaxError.popupAjaxError)(error);\n      }\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <ListHandler\n        @items={{this.items}}\n        @highlightedItem={{this.highlightedChatable}}\n        @onHighlight={{this.highlightChatable}}\n        @onSelect={{this.selectChatable}}\n        @onShifSelect={{this.prefillAddMembers}}\n      >\n        <div class=\"chat-message-creator__search-container\">\n          <div class=\"chat-message-creator__search\">\n            <div\n              class=\"chat-message-creator__section\"\n              {{didInsert (fn this.fetch null)}}\n            >\n              <SearchInput @filter={{this.term}} @onFilter={{this.onFilter}} />\n      \n              <DButton\n                class=\"btn-flat chat-message-creator__search-input__cancel-button\"\n                @icon=\"xmark\"\n                @action={{@close}}\n              />\n            </div>\n      \n            <List\n              @items={{this.items}}\n              @highlightedItem={{this.highlightedChatable}}\n              @onSelect={{this.selectChatable}}\n              @onHighlight={{this.highlightChatable}}\n              @onShiftSelect={{this.prefillAddMembers}}\n            />\n          </div>\n        </div>\n      </ListHandler>\n      */\n      {\n        \"id\": \"s/PZrg3i\",\n        \"block\": \"[[[8,[32,0],null,[[\\\"@items\\\",\\\"@highlightedItem\\\",\\\"@onHighlight\\\",\\\"@onSelect\\\",\\\"@onShifSelect\\\"],[[30,0,[\\\"items\\\"]],[30,0,[\\\"highlightedChatable\\\"]],[30,0,[\\\"highlightChatable\\\"]],[30,0,[\\\"selectChatable\\\"]],[30,0,[\\\"prefillAddMembers\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-message-creator__search-container\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-message-creator__search\\\"],[12],[1,\\\"\\\\n      \\\"],[11,0],[24,0,\\\"chat-message-creator__section\\\"],[4,[32,1],[[28,[32,2],[[30,0,[\\\"fetch\\\"]],null],null]],null],[12],[1,\\\"\\\\n        \\\"],[8,[32,3],null,[[\\\"@filter\\\",\\\"@onFilter\\\"],[[30,0,[\\\"term\\\"]],[30,0,[\\\"onFilter\\\"]]]],null],[1,\\\"\\\\n\\\\n        \\\"],[8,[32,4],[[24,0,\\\"btn-flat chat-message-creator__search-input__cancel-button\\\"]],[[\\\"@icon\\\",\\\"@action\\\"],[\\\"xmark\\\",[30,1]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[8,[32,5],null,[[\\\"@items\\\",\\\"@highlightedItem\\\",\\\"@onSelect\\\",\\\"@onHighlight\\\",\\\"@onShiftSelect\\\"],[[30,0,[\\\"items\\\"]],[30,0,[\\\"highlightedChatable\\\"]],[30,0,[\\\"selectChatable\\\"]],[30,0,[\\\"highlightChatable\\\"]],[30,0,[\\\"prefillAddMembers\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"@close\\\"],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/message-creator/search.js\",\n        \"scope\": () => [_listHandler.default, _didInsert.default, _helper.fn, _searchInput.default, _dButton.default, _list.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatMessageCreatorSearch;\n});","define(\"discourse/plugins/chat/discourse/components/chat/message-creator/user\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"ember-modifier\", \"discourse/components/user-status-message\", \"discourse/helpers/concat-class\", \"discourse/helpers/user-status\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat-user-avatar\", \"discourse/plugins/chat/discourse/components/chat-user-display-name\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _emberModifier, _userStatusMessage, _concatClass, _userStatus, _truthHelpers, _discourseI18n, _chatUserAvatar, _chatUserDisplayName, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatableUser extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    disabledUserLabel = (0, _discourseI18n.i18n)(\"chat.new_message_modal.disabled_user\");\n    trackUserStatus = (0, _emberModifier.modifier)((element, [user]) => {\n      user.statusManager.trackStatus();\n      return () => {\n        user.statusManager.stopTrackingStatus();\n      };\n    });\n    get showIndicator() {\n      return this.isUrgent || this.isUnread;\n    }\n    get isUrgent() {\n      return this.args.item.tracking?.unreadCount > 0 || this.args.item.tracking?.mentionCount > 0 || this.args.item.tracking?.watchedThreadsUnreadCount > 0;\n    }\n    get isUnread() {\n      return this.args.item.unread_thread_count > 0;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div\n        class=\"chat-message-creator__chatable -user\"\n        data-disabled={{not @item.enabled}}\n      >\n        <ChatUserAvatar @user={{@item.model}} @interactive={{false}} />\n        <ChatUserDisplayName @user={{@item.model}} />\n      \n        {{#if this.showIndicator}}\n          <div\n            class={{concatClass \"unread-indicator\" (if this.isUrgent \"-urgent\")}}\n          ></div>\n        {{/if}}\n      \n        {{userStatus @item.model currentUser=this.currentUser}}\n      \n        <div class=\"user-status\" {{this.trackUserStatus @item.model}}>\n          <UserStatusMessage\n            @status={{@item.model.status}}\n            @showDescription={{true}}\n          />\n        </div>\n      \n        {{#unless @item.enabled}}\n          <span class=\"chat-message-creator__disabled-warning\">\n            {{this.disabledUserLabel}}\n          </span>\n        {{/unless}}\n      </div>\n      */\n      {\n        \"id\": \"P4nX1yQf\",\n        \"block\": \"[[[10,0],[14,0,\\\"chat-message-creator__chatable -user\\\"],[15,\\\"data-disabled\\\",[28,[32,0],[[30,1,[\\\"enabled\\\"]]],null]],[12],[1,\\\"\\\\n  \\\"],[8,[32,1],null,[[\\\"@user\\\",\\\"@interactive\\\"],[[30,1,[\\\"model\\\"]],false]],null],[1,\\\"\\\\n  \\\"],[8,[32,2],null,[[\\\"@user\\\"],[[30,1,[\\\"model\\\"]]]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"showIndicator\\\"]],[[[1,\\\"    \\\"],[10,0],[15,0,[28,[32,3],[\\\"unread-indicator\\\",[52,[30,0,[\\\"isUrgent\\\"]],\\\"-urgent\\\"]],null]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[1,[28,[32,4],[[30,1,[\\\"model\\\"]]],[[\\\"currentUser\\\"],[[30,0,[\\\"currentUser\\\"]]]]]],[1,\\\"\\\\n\\\\n  \\\"],[11,0],[24,0,\\\"user-status\\\"],[4,[30,0,[\\\"trackUserStatus\\\"]],[[30,1,[\\\"model\\\"]]],null],[12],[1,\\\"\\\\n    \\\"],[8,[32,5],null,[[\\\"@status\\\",\\\"@showDescription\\\"],[[30,1,[\\\"model\\\",\\\"status\\\"]],true]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[51,[30,1,[\\\"enabled\\\"]]],[[[1,\\\"    \\\"],[10,1],[14,0,\\\"chat-message-creator__disabled-warning\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"disabledUserLabel\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[13]],[\\\"@item\\\"],[\\\"if\\\",\\\"unless\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/message-creator/user.js\",\n        \"scope\": () => [_truthHelpers.not, _chatUserAvatar.default, _chatUserDisplayName.default, _concatClass.default, _userStatus.default, _userStatusMessage.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatableUser;\n});","define(\"discourse/plugins/chat/discourse/components/chat/message/avatar\", [\"exports\", \"discourse/plugins/chat/discourse/components/chat-emoji-avatar\", \"discourse/plugins/chat/discourse/components/chat-user-avatar\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _chatEmojiAvatar, _chatUserAvatar, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const Avatar = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"chat-message-avatar\">\n    {{#if @message.chatWebhookEvent.emoji}}\n      <ChatEmojiAvatar @emoji={{@message.chatWebhookEvent.emoji}} />\n    {{else}}\n      <ChatUserAvatar\n        @user={{@message.user}}\n        @avatarSize=\"medium\"\n        @interactive={{@interactive}}\n      />\n    {{/if}}\n  </div>\n  */\n  {\n    \"id\": \"6wTwPViC\",\n    \"block\": \"[[[10,0],[14,0,\\\"chat-message-avatar\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"chatWebhookEvent\\\",\\\"emoji\\\"]],[[[1,\\\"    \\\"],[8,[32,0],null,[[\\\"@emoji\\\"],[[30,1,[\\\"chatWebhookEvent\\\",\\\"emoji\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[8,[32,1],null,[[\\\"@user\\\",\\\"@avatarSize\\\",\\\"@interactive\\\"],[[30,1,[\\\"user\\\"]],\\\"medium\\\",[30,2]]],null],[1,\\\"\\\\n\\\"]],[]]],[13]],[\\\"@message\\\",\\\"@interactive\\\"],[\\\"if\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/message/avatar.js\",\n    \"scope\": () => [_chatEmojiAvatar.default, _chatUserAvatar.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"avatar:Avatar\"));\n  var _default = _exports.default = Avatar;\n});","define(\"discourse/plugins/chat/discourse/components/chat/message/error\", [\"exports\", \"@ember/helper\", \"discourse/components/d-button\", \"discourse/truth-helpers\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _helper, _dButton, _truthHelpers, _discourseI18n, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const Error = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @message.error}}\n    <div class=\"chat-message-error\">\n      {{#if (eq @message.error \"network_error\")}}\n        <DButton\n          class=\"chat-message-error__retry-btn\"\n          @action={{fn @onRetry @message}}\n          @icon=\"circle-exclamation\"\n        >\n          <span class=\"chat-message-error__retry-btn-title\">\n            {{i18n \"chat.retry_staged_message.title\"}}\n          </span>\n          <span class=\"chat-message-error__retry-btn-action\">\n            {{i18n \"chat.retry_staged_message.action\"}}\n          </span>\n        </DButton>\n      {{else}}\n        {{@message.error}}\n      {{/if}}\n    </div>\n  {{/if}}\n  */\n  {\n    \"id\": \"AmZV4NKi\",\n    \"block\": \"[[[41,[30,1,[\\\"error\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"chat-message-error\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[32,0],[[30,1,[\\\"error\\\"]],\\\"network_error\\\"],null],[[[1,\\\"      \\\"],[8,[32,1],[[24,0,\\\"chat-message-error__retry-btn\\\"]],[[\\\"@action\\\",\\\"@icon\\\"],[[28,[32,2],[[30,2],[30,1]],null],\\\"circle-exclamation\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"chat-message-error__retry-btn-title\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[28,[32,3],[\\\"chat.retry_staged_message.title\\\"],null]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"chat-message-error__retry-btn-action\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[28,[32,3],[\\\"chat.retry_staged_message.action\\\"],null]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[1,[30,1,[\\\"error\\\"]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@message\\\",\\\"@onRetry\\\"],[\\\"if\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/message/error.js\",\n    \"scope\": () => [_truthHelpers.eq, _dButton.default, _helper.fn, _discourseI18n.i18n],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"error:Error\"));\n  var _default = _exports.default = Error;\n});","define(\"discourse/plugins/chat/discourse/components/chat/message/info\", [\"exports\", \"@glimmer/component\", \"@ember/helper\", \"@ember/render-modifiers/modifiers/did-insert\", \"@ember/render-modifiers/modifiers/will-destroy\", \"@ember/routing\", \"@ember/service\", \"discourse/components/bookmark-icon\", \"discourse/components/user-status-message\", \"discourse/helpers/concat-class\", \"discourse/helpers/d-icon\", \"discourse/lib/decorators\", \"discourse/lib/settings\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/channel-title\", \"discourse/plugins/chat/discourse/helpers/format-chat-date\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _helper, _didInsert, _willDestroy, _routing, _service, _bookmarkIcon, _userStatusMessage, _concatClass, _dIcon, _decorators, _settings, _truthHelpers, _discourseI18n, _channelTitle, _formatChatDate, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatMessageInfo extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    trackStatus() {\n      this.#user?.statusManager.trackStatus();\n    }\n    static {\n      dt7948.n(this.prototype, \"trackStatus\", [_decorators.bind]);\n    }\n    stopTrackingStatus() {\n      this.#user?.statusManager.stopTrackingStatus();\n    }\n    static {\n      dt7948.n(this.prototype, \"stopTrackingStatus\", [_decorators.bind]);\n    }\n    get usernameClasses() {\n      const user = this.#user;\n      const classes = this.prioritizeName ? [\"is-full-name\"] : [\"is-username\"];\n      if (!user) {\n        return classes;\n      }\n      if (user.staff) {\n        classes.push(\"is-staff\");\n      }\n      if (user.admin) {\n        classes.push(\"is-admin\");\n      }\n      if (user.moderator) {\n        classes.push(\"is-moderator\");\n      }\n      if (user.new_user) {\n        classes.push(\"is-new-user\");\n      }\n      if (user.primary_group_name) {\n        classes.push(\"group--\" + user.primary_group_name);\n      }\n      return classes.join(\" \");\n    }\n    get name() {\n      return this.prioritizeName ? this.#user?.get(\"name\") : this.#user?.get(\"username\");\n    }\n    get isFlagged() {\n      return this.args.message?.reviewableId || this.args.message?.userFlagStatus === 0;\n    }\n    get prioritizeName() {\n      return this.siteSettings.display_name_on_posts && (0, _settings.prioritizeNameInUx)(this.#user?.get(\"name\"));\n    }\n    get showStatus() {\n      return !!this.#user?.get(\"status\");\n    }\n    get #user() {\n      return this.args.message?.user;\n    }\n    get routeModels() {\n      if (this.site.mobileView) {\n        return [...this.args.message.channel.routeModels, this.args.message.id];\n      } else {\n        return [...this.args.message.channel.routeModels, this.args.message.id, this.args.message.thread.id];\n      }\n    }\n    get route() {\n      if (this.site.mobileView) {\n        return \"chat.channel.near-message\";\n      } else {\n        return \"chat.channel.near-message-with-thread\";\n      }\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if @show}}\n        <div\n          class=\"chat-message-info\"\n          {{didInsert this.trackStatus}}\n          {{willDestroy this.stopTrackingStatus}}\n        >\n          {{#if @message.chatWebhookEvent}}\n            {{#if @message.chatWebhookEvent.username}}\n              <span\n                class={{concatClass\n                  \"chat-message-info__username\"\n                  this.usernameClasses\n                }}\n              >\n                {{@message.chatWebhookEvent.username}}\n              </span>\n            {{/if}}\n      \n            <span class=\"chat-message-info__bot-indicator\">\n              {{i18n \"chat.bot\"}}\n            </span>\n          {{else}}\n            <span\n              role=\"button\"\n              class={{concatClass\n                \"chat-message-info__username\"\n                this.usernameClasses\n                \"clickable\"\n              }}\n              data-user-card={{@message.user.username}}\n            >\n              <span class=\"chat-message-info__username__name\">{{this.name}}</span>\n              {{#if this.showStatus}}\n                <span class=\"chat-message-info__status\">\n                  <UserStatusMessage @status={{@message.user.status}} />\n                </span>\n              {{/if}}\n            </span>\n          {{/if}}\n      \n          <span class=\"chat-message-info__date\">\n            {{formatChatDate\n              @message\n              (hash threadContext=@threadContext mode=@dateMode)\n            }}\n          </span>\n      \n          {{#if @message.bookmark}}\n            <span class=\"chat-message-info__bookmark\">\n              <BookmarkIcon @bookmark={{@message.bookmark}} />\n            </span>\n          {{/if}}\n      \n          {{#if this.siteSettings.chat_pinned_messages}}\n            {{#if (and @message.pinned (not (eq @context \"pinned\")))}}\n              <span\n                class=\"chat-message-info__pinned\"\n                title={{i18n \"chat.pinned\"}}\n              >\n                {{icon \"thumbtack\"}}\n              </span>\n            {{/if}}\n          {{/if}}\n      \n          {{#if this.isFlagged}}\n            <span class=\"chat-message-info__flag\">\n              {{#if @message.reviewableId}}\n                <LinkTo @route=\"review.show\" @model={{@message.reviewableId}}>\n                  {{icon \"flag\" title=\"chat.flagged\"}}\n                </LinkTo>\n              {{else}}\n                {{icon \"flag\" title=\"chat.you_flagged\"}}\n              {{/if}}\n            </span>\n          {{/if}}\n      \n          {{#if (and @threadContext @message.isOriginalThreadMessage)}}\n            <LinkTo\n              @route={{this.route}}\n              @models={{this.routeModels}}\n              class=\"chat-message-info__original-message\"\n            >\n              <span class=\"chat-message-info__original-message__text\">\n                {{i18n \"chat.see_in\"}}\n              </span>\n              <ChannelTitle @channel={{@message.channel}} />\n            </LinkTo>\n          {{/if}}\n        </div>\n      {{/if}}\n      */\n      {\n        \"id\": \"eqSytRd6\",\n        \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[11,0],[24,0,\\\"chat-message-info\\\"],[4,[32,0],[[30,0,[\\\"trackStatus\\\"]]],null],[4,[32,1],[[30,0,[\\\"stopTrackingStatus\\\"]]],null],[12],[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"chatWebhookEvent\\\"]],[[[41,[30,2,[\\\"chatWebhookEvent\\\",\\\"username\\\"]],[[[1,\\\"        \\\"],[10,1],[15,0,[28,[32,2],[\\\"chat-message-info__username\\\",[30,0,[\\\"usernameClasses\\\"]]],null]],[12],[1,\\\"\\\\n          \\\"],[1,[30,2,[\\\"chatWebhookEvent\\\",\\\"username\\\"]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"chat-message-info__bot-indicator\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,3],[\\\"chat.bot\\\"],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,1],[14,\\\"role\\\",\\\"button\\\"],[15,0,[28,[32,2],[\\\"chat-message-info__username\\\",[30,0,[\\\"usernameClasses\\\"]],\\\"clickable\\\"],null]],[15,\\\"data-user-card\\\",[30,2,[\\\"user\\\",\\\"username\\\"]]],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"chat-message-info__username__name\\\"],[12],[1,[30,0,[\\\"name\\\"]]],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showStatus\\\"]],[[[1,\\\"          \\\"],[10,1],[14,0,\\\"chat-message-info__status\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[32,4],null,[[\\\"@status\\\"],[[30,2,[\\\"user\\\",\\\"status\\\"]]]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"chat-message-info__date\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[28,[32,5],[[30,2],[28,[32,6],null,[[\\\"threadContext\\\",\\\"mode\\\"],[[30,3],[30,4]]]]],null]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,2,[\\\"bookmark\\\"]],[[[1,\\\"      \\\"],[10,1],[14,0,\\\"chat-message-info__bookmark\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[32,7],null,[[\\\"@bookmark\\\"],[[30,2,[\\\"bookmark\\\"]]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"siteSettings\\\",\\\"chat_pinned_messages\\\"]],[[[41,[28,[32,8],[[30,2,[\\\"pinned\\\"]],[28,[32,9],[[28,[32,10],[[30,5],\\\"pinned\\\"],null]],null]],null],[[[1,\\\"        \\\"],[10,1],[14,0,\\\"chat-message-info__pinned\\\"],[15,\\\"title\\\",[28,[32,3],[\\\"chat.pinned\\\"],null]],[12],[1,\\\"\\\\n          \\\"],[1,[28,[32,11],[\\\"thumbtack\\\"],null]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"isFlagged\\\"]],[[[1,\\\"      \\\"],[10,1],[14,0,\\\"chat-message-info__flag\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"reviewableId\\\"]],[[[1,\\\"          \\\"],[8,[32,12],null,[[\\\"@route\\\",\\\"@model\\\"],[\\\"review.show\\\",[30,2,[\\\"reviewableId\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[1,[28,[32,11],[\\\"flag\\\"],[[\\\"title\\\"],[\\\"chat.flagged\\\"]]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[1,[28,[32,11],[\\\"flag\\\"],[[\\\"title\\\"],[\\\"chat.you_flagged\\\"]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[32,8],[[30,3],[30,2,[\\\"isOriginalThreadMessage\\\"]]],null],[[[1,\\\"      \\\"],[8,[32,12],[[24,0,\\\"chat-message-info__original-message\\\"]],[[\\\"@route\\\",\\\"@models\\\"],[[30,0,[\\\"route\\\"]],[30,0,[\\\"routeModels\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"chat-message-info__original-message__text\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[28,[32,3],[\\\"chat.see_in\\\"],null]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[8,[32,13],null,[[\\\"@channel\\\"],[[30,2,[\\\"channel\\\"]]]],null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@show\\\",\\\"@message\\\",\\\"@threadContext\\\",\\\"@dateMode\\\",\\\"@context\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/message/info.js\",\n        \"scope\": () => [_didInsert.default, _willDestroy.default, _concatClass.default, _discourseI18n.i18n, _userStatusMessage.default, _formatChatDate.default, _helper.hash, _bookmarkIcon.default, _truthHelpers.and, _truthHelpers.not, _truthHelpers.eq, _dIcon.default, _routing.LinkTo, _channelTitle.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatMessageInfo;\n});","define(\"discourse/plugins/chat/discourse/components/chat/message/left-gutter\", [\"exports\", \"@glimmer/component\", \"@ember/helper\", \"@ember/routing\", \"@ember/service\", \"discourse/components/bookmark-icon\", \"discourse/helpers/d-icon\", \"discourse/truth-helpers\", \"discourse/plugins/chat/discourse/helpers/format-chat-date\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _helper, _routing, _service, _bookmarkIcon, _dIcon, _truthHelpers, _formatChatDate, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatMessageLeftGutter extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"chat-message-left-gutter\">\n        {{#if @message.reviewableId}}\n          <LinkTo\n            @route=\"review.show\"\n            @model={{@message.reviewableId}}\n            class=\"chat-message-left-gutter__flag\"\n          >\n            {{icon \"flag\" title=\"chat.flagged\"}}\n          </LinkTo>\n        {{else if (eq @message.userFlagStatus 0)}}\n          <div class=\"chat-message-left-gutter__flag\">\n            {{icon \"flag\" title=\"chat.you_flagged\"}}\n          </div>\n        {{else if this.site.desktopView}}\n          <span class=\"chat-message-left-gutter__date\">\n            {{formatChatDate\n              @message\n              (hash mode=\"tiny\" threadContext=@threadContext)\n            }}\n          </span>\n        {{/if}}\n        {{#if @message.bookmark}}\n          <span class=\"chat-message-left-gutter__bookmark\">\n            <BookmarkIcon @bookmark={{@message.bookmark}} />\n          </span>\n        {{/if}}\n      </div>\n      */\n      {\n        \"id\": \"ylIxTp+v\",\n        \"block\": \"[[[10,0],[14,0,\\\"chat-message-left-gutter\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"reviewableId\\\"]],[[[1,\\\"    \\\"],[8,[32,0],[[24,0,\\\"chat-message-left-gutter__flag\\\"]],[[\\\"@route\\\",\\\"@model\\\"],[\\\"review.show\\\",[30,1,[\\\"reviewableId\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[1,[28,[32,1],[\\\"flag\\\"],[[\\\"title\\\"],[\\\"chat.flagged\\\"]]]],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[32,2],[[30,1,[\\\"userFlagStatus\\\"]],0],null],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"chat-message-left-gutter__flag\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[28,[32,1],[\\\"flag\\\"],[[\\\"title\\\"],[\\\"chat.you_flagged\\\"]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"site\\\",\\\"desktopView\\\"]],[[[1,\\\"    \\\"],[10,1],[14,0,\\\"chat-message-left-gutter__date\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[28,[32,3],[[30,1],[28,[32,4],null,[[\\\"mode\\\",\\\"threadContext\\\"],[\\\"tiny\\\",[30,2]]]]],null]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]],null]],[]]]],[]]],[41,[30,1,[\\\"bookmark\\\"]],[[[1,\\\"    \\\"],[10,1],[14,0,\\\"chat-message-left-gutter__bookmark\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[32,5],null,[[\\\"@bookmark\\\"],[[30,1,[\\\"bookmark\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[13]],[\\\"@message\\\",\\\"@threadContext\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/message/left-gutter.js\",\n        \"scope\": () => [_routing.LinkTo, _dIcon.default, _truthHelpers.eq, _formatChatDate.default, _helper.hash, _bookmarkIcon.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatMessageLeftGutter;\n});","define(\"discourse/plugins/chat/discourse/components/chat/modal/archive-channel\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\", \"@ember/template\", \"@ember/utils\", \"discourse/components/d-button\", \"discourse/components/d-modal\", \"discourse/lib/ajax-error\", \"discourse/lib/later\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat-to-topic-selector\", \"discourse/plugins/chat/discourse/models/chat-channel\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _object, _service, _template, _utils, _dButton, _dModal, _ajaxError, _later, _discourseI18n, _chatToTopicSelector, _chatChannel, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatModalArchiveChannel extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"selection\", [_tracking.tracked], function () {\n        return _chatToTopicSelector.NEW_TOPIC_SELECTION;\n      });\n    }\n    #selection = (dt7948.i(this, \"selection\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"saving\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #saving = (dt7948.i(this, \"saving\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"topicTitle\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #topicTitle = (dt7948.i(this, \"topicTitle\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"categoryId\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #categoryId = (dt7948.i(this, \"categoryId\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"tags\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #tags = (dt7948.i(this, \"tags\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"selectedTopicId\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #selectedTopicId = (dt7948.i(this, \"selectedTopicId\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"flash\", [_tracking.tracked]);\n    }\n    #flash = (dt7948.i(this, \"flash\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"flashType\", [_tracking.tracked]);\n    }\n    #flashType = (dt7948.i(this, \"flashType\"), void 0);\n    get channel() {\n      return this.args.model.channel;\n    }\n    get newTopic() {\n      return this.selection === _chatToTopicSelector.NEW_TOPIC_SELECTION;\n    }\n    get existingTopic() {\n      return this.selection === _chatToTopicSelector.EXISTING_TOPIC_SELECTION;\n    }\n    get buttonDisabled() {\n      if (this.saving) {\n        return true;\n      }\n      if (this.newTopic && (!this.topicTitle || this.topicTitle.length < this.siteSettings.min_topic_title_length || this.topicTitle.length > this.siteSettings.max_topic_title_length)) {\n        return true;\n      }\n      if (this.existingTopic && (0, _utils.isEmpty)(this.selectedTopicId)) {\n        return true;\n      }\n      return false;\n    }\n    get instructionLabels() {\n      const labels = {};\n      labels[_chatToTopicSelector.NEW_TOPIC_SELECTION] = (0, _discourseI18n.i18n)(\"chat.selection.new_topic.instructions_channel_archive\");\n      labels[_chatToTopicSelector.EXISTING_TOPIC_SELECTION] = (0, _discourseI18n.i18n)(\"chat.selection.existing_topic.instructions_channel_archive\");\n      return labels;\n    }\n    get instructionsText() {\n      return (0, _template.trustHTML)((0, _discourseI18n.i18n)(\"chat.channel_archive.instructions\", {\n        channelTitle: this.channel.escapedTitle\n      }));\n    }\n    get data() {\n      const data = {\n        type: this.selection\n      };\n      if (this.newTopic) {\n        data.title = this.topicTitle;\n        data.category_id = this.categoryId;\n        data.tags = this.tags;\n      }\n      if (this.existingTopic) {\n        data.topic_id = this.selectedTopicId;\n      }\n      return data;\n    }\n    archiveChannel() {\n      this.saving = true;\n      return this.chatApi.createChannelArchive(this.channel.id, this.data).then(() => {\n        this.flash = (0, _discourseI18n.i18n)(\"chat.channel_archive.process_started\");\n        this.flashType = \"success\";\n        this.channel.status = _chatChannel.CHANNEL_STATUSES.archived;\n        (0, _later.default)(() => {\n          this.args.closeModal();\n        }, 3000);\n      }).catch(_ajaxError.popupAjaxError).finally(() => this.saving = false);\n    }\n    static {\n      dt7948.n(this.prototype, \"archiveChannel\", [_object.action]);\n    }\n    newTopicSelected(topic) {\n      this.selectedTopicId = topic?.id;\n    }\n    static {\n      dt7948.n(this.prototype, \"newTopicSelected\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <DModal\n        @closeModal={{@closeModal}}\n        class=\"chat-modal-archive-channel\"\n        @inline={{@inline}}\n        @title={{i18n \"chat.channel_archive.title\"}}\n        @flash={{this.flash}}\n        @flashType={{this.flashType}}\n      >\n        <:body>\n          <p class=\"chat-modal-archive-channel__instructions\">\n            {{this.instructionsText}}\n          </p>\n          <ChatToTopicSelector\n            @selection={{this.selection}}\n            @topicTitle={{this.topicTitle}}\n            @categoryId={{this.categoryId}}\n            @tags={{this.tags}}\n            @topicChangedCallback={{this.newTopicSelected}}\n            @selectedTopicId={{this.selectedTopicId}}\n            @instructionLabels={{this.instructionLabels}}\n            @allowNewMessage={{false}}\n          />\n        </:body>\n        <:footer>\n          <DButton\n            @disabled={{this.buttonDisabled}}\n            @action={{this.archiveChannel}}\n            @label=\"chat.channel_archive.title\"\n            id=\"chat-confirm-archive-channel\"\n            class=\"btn-primary\"\n          />\n        </:footer>\n      </DModal>\n      */\n      {\n        \"id\": \"41TE1KG5\",\n        \"block\": \"[[[8,[32,0],[[24,0,\\\"chat-modal-archive-channel\\\"]],[[\\\"@closeModal\\\",\\\"@inline\\\",\\\"@title\\\",\\\"@flash\\\",\\\"@flashType\\\"],[[30,1],[30,2],[28,[32,1],[\\\"chat.channel_archive.title\\\"],null],[30,0,[\\\"flash\\\"]],[30,0,[\\\"flashType\\\"]]]],[[\\\"body\\\",\\\"footer\\\"],[[[[1,\\\"\\\\n    \\\"],[10,2],[14,0,\\\"chat-modal-archive-channel__instructions\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"instructionsText\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[8,[32,2],null,[[\\\"@selection\\\",\\\"@topicTitle\\\",\\\"@categoryId\\\",\\\"@tags\\\",\\\"@topicChangedCallback\\\",\\\"@selectedTopicId\\\",\\\"@instructionLabels\\\",\\\"@allowNewMessage\\\"],[[30,0,[\\\"selection\\\"]],[30,0,[\\\"topicTitle\\\"]],[30,0,[\\\"categoryId\\\"]],[30,0,[\\\"tags\\\"]],[30,0,[\\\"newTopicSelected\\\"]],[30,0,[\\\"selectedTopicId\\\"]],[30,0,[\\\"instructionLabels\\\"]],false]],null],[1,\\\"\\\\n  \\\"]],[]],[[[1,\\\"\\\\n    \\\"],[8,[32,3],[[24,1,\\\"chat-confirm-archive-channel\\\"],[24,0,\\\"btn-primary\\\"]],[[\\\"@disabled\\\",\\\"@action\\\",\\\"@label\\\"],[[30,0,[\\\"buttonDisabled\\\"]],[30,0,[\\\"archiveChannel\\\"]],\\\"chat.channel_archive.title\\\"]],null],[1,\\\"\\\\n  \\\"]],[]]]]]],[\\\"@closeModal\\\",\\\"@inline\\\"],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/modal/archive-channel.js\",\n        \"scope\": () => [_dModal.default, _discourseI18n.i18n, _chatToTopicSelector.default, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatModalArchiveChannel;\n});","define(\"discourse/plugins/chat/discourse/components/chat/modal/create-channel\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/component\", \"@ember/helper\", \"@ember/modifier\", \"@ember/object\", \"@ember/runloop\", \"@ember/service\", \"@ember/template\", \"@ember/utils\", \"discourse/components/d-button\", \"discourse/components/d-modal\", \"discourse/components/emoji-picker\", \"discourse/float-kit/components/d-tooltip\", \"discourse/helpers/concat-class\", \"discourse/helpers/d-icon\", \"discourse/helpers/with-event-value\", \"discourse/lib/ajax\", \"discourse/lib/ajax-error\", \"discourse/lib/debounce\", \"discourse/lib/utilities\", \"discourse/models/category\", \"discourse/select-kit/components/category-chooser\", \"discourse/truth-helpers\", \"discourse-i18n\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _component2, _helper, _modifier, _object, _runloop, _service, _template, _utils, _dButton, _dModal, _emojiPicker, _dTooltip, _concatClass, _dIcon, _withEventValue, _ajax, _ajaxError, _debounce, _utilities, _category3, _categoryChooser, _truthHelpers, _discourseI18n, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const DEFAULT_HINT = (0, _template.trustHTML)((0, _discourseI18n.i18n)(\"chat.create_channel.choose_category.default_hint\", {\n    link: \"/categories\",\n    category: \"category\"\n  }));\n  class ChatModalCreateChannel extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"dialog\", [_service.service]);\n    }\n    #dialog = (dt7948.i(this, \"dialog\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"flash\", [_tracking.tracked]);\n    }\n    #flash = (dt7948.i(this, \"flash\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"name\", [_tracking.tracked]);\n    }\n    #name = (dt7948.i(this, \"name\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"category\", [_tracking.tracked]);\n    }\n    #category = (dt7948.i(this, \"category\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"categoryId\", [_tracking.tracked]);\n    }\n    #categoryId = (dt7948.i(this, \"categoryId\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"autoGeneratedSlug\", [_tracking.tracked], function () {\n        return \"\";\n      });\n    }\n    #autoGeneratedSlug = (dt7948.i(this, \"autoGeneratedSlug\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"categoryPermissionsHint\", [_tracking.tracked]);\n    }\n    #categoryPermissionsHint = (dt7948.i(this, \"categoryPermissionsHint\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"autoJoinWarning\", [_tracking.tracked], function () {\n        return \"\";\n      });\n    }\n    #autoJoinWarning = (dt7948.i(this, \"autoJoinWarning\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"loadingPermissionHint\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #loadingPermissionHint = (dt7948.i(this, \"loadingPermissionHint\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"editedEmoji\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #editedEmoji = (dt7948.i(this, \"editedEmoji\"), void 0);\n    #generateSlugHandler = null;\n    willDestroy() {\n      super.willDestroy(...arguments);\n      (0, _runloop.cancel)(this.#generateSlugHandler);\n    }\n    get autoJoinAvailable() {\n      return this.siteSettings.max_chat_auto_joined_users > 0;\n    }\n    get categorySelected() {\n      return (0, _utils.isPresent)(this.category);\n    }\n    get createDisabled() {\n      return !this.categorySelected || (0, _utils.isBlank)(this.name);\n    }\n    get categoryName() {\n      return this.categorySelected ? (0, _utilities.escapeExpression)(this.category?.name) : null;\n    }\n    onShow() {\n      this.categoryPermissionsHint = DEFAULT_HINT;\n    }\n    static {\n      dt7948.n(this.prototype, \"onShow\", [_object.action]);\n    }\n    onCategoryChange(categoryId) {\n      const category = categoryId ? _category3.default.findById(categoryId) : null;\n      this.#updatePermissionsHint(category);\n      const name = this.name || category?.name || \"\";\n      this.categoryId = categoryId;\n      this.category = category;\n      this.name = name;\n      this.#debouncedGenerateSlug(name);\n    }\n    static {\n      dt7948.n(this.prototype, \"onCategoryChange\", [_object.action]);\n    }\n    onNameChange(name) {\n      this.#debouncedGenerateSlug(name);\n    }\n    static {\n      dt7948.n(this.prototype, \"onNameChange\", [_object.action]);\n    }\n    emojiSelected(emoji) {\n      this.editedEmoji = emoji;\n    }\n    static {\n      dt7948.n(this.prototype, \"emojiSelected\", [_object.action]);\n    }\n    resetEmoji() {\n      this.editedEmoji = null;\n    }\n    static {\n      dt7948.n(this.prototype, \"resetEmoji\", [_object.action]);\n    }\n    onSave(event) {\n      event.preventDefault();\n      if (this.createDisabled) {\n        return;\n      }\n      const formData = new FormData(event.currentTarget);\n      const data = Object.fromEntries(formData.entries());\n      data.auto_join_users = data.auto_join_users === \"on\";\n      data.slug ??= this.autoGeneratedSlug;\n      data.threading_enabled = data.threading_enabled === \"on\";\n      data.emoji = this.editedEmoji;\n      if (data.auto_join_users) {\n        this.dialog.yesNoConfirm({\n          message: this.autoJoinWarning,\n          didConfirm: () => this.#createChannel(data)\n        });\n      } else {\n        this.#createChannel(data);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"onSave\", [_object.action]);\n    }\n    async #createChannel(data) {\n      try {\n        const channel = await this.chatApi.createChannel(data);\n        this.args.closeModal();\n        this.chatChannelsManager.follow(channel);\n        this.router.transitionTo(\"chat.channel\", ...channel.routeModels);\n      } catch (e) {\n        this.flash = (0, _ajaxError.extractError)(e);\n      }\n    }\n    #buildCategorySlug(category) {\n      const parent = category.parentCategory;\n      if (parent) {\n        return `${this.#buildCategorySlug(parent)}/${category.slug}`;\n      } else {\n        return category.slug;\n      }\n    }\n    #updateAutoJoinConfirmWarning(category, catPermissions) {\n      const allowedGroups = catPermissions.allowed_groups;\n      let warning;\n      if (catPermissions.private) {\n        switch (allowedGroups.length) {\n          case 1:\n            warning = (0, _discourseI18n.i18n)(\"chat.create_channel.auto_join_users.warning_1_group\", {\n              count: catPermissions.members_count,\n              group: (0, _utilities.escapeExpression)(allowedGroups[0])\n            });\n            break;\n          case 2:\n            warning = (0, _discourseI18n.i18n)(\"chat.create_channel.auto_join_users.warning_2_groups\", {\n              count: catPermissions.members_count,\n              group1: (0, _utilities.escapeExpression)(allowedGroups[0]),\n              group2: (0, _utilities.escapeExpression)(allowedGroups[1])\n            });\n            break;\n          default:\n            warning = _discourseI18n.default.messageFormat(\"chat.create_channel.auto_join_users.warning_multiple_groups_MF\", {\n              groupCount: allowedGroups.length - 1,\n              userCount: catPermissions.members_count,\n              groupName: (0, _utilities.escapeExpression)(allowedGroups[0])\n            });\n            break;\n        }\n      } else {\n        warning = (0, _discourseI18n.i18n)(\"chat.create_channel.auto_join_users.public_category_warning\", {\n          category: (0, _utilities.escapeExpression)(category.name)\n        });\n      }\n      this.autoJoinWarning = warning;\n    }\n    #updatePermissionsHint(category) {\n      if (category) {\n        const fullSlug = this.#buildCategorySlug(category);\n        this.loadingPermissionHint = true;\n        return this.chatApi.categoryPermissions(category.id).then(catPermissions => {\n          this.#updateAutoJoinConfirmWarning(category, catPermissions);\n          const allowedGroups = catPermissions.allowed_groups;\n          const settingLink = `/c/${(0, _utilities.escapeExpression)(fullSlug)}/edit/security`;\n          let hint;\n          switch (allowedGroups.length) {\n            case 1:\n              hint = (0, _discourseI18n.i18n)(\"chat.create_channel.choose_category.hint_1_group\", {\n                settingLink,\n                group: (0, _utilities.escapeExpression)(allowedGroups[0])\n              });\n              break;\n            case 2:\n              hint = (0, _discourseI18n.i18n)(\"chat.create_channel.choose_category.hint_2_groups\", {\n                settingLink,\n                group1: (0, _utilities.escapeExpression)(allowedGroups[0]),\n                group2: (0, _utilities.escapeExpression)(allowedGroups[1])\n              });\n              break;\n            default:\n              hint = (0, _discourseI18n.i18n)(\"chat.create_channel.choose_category.hint_multiple_groups\", {\n                settingLink,\n                group: (0, _utilities.escapeExpression)(allowedGroups[0]),\n                count: allowedGroups.length - 1\n              });\n              break;\n          }\n          this.categoryPermissionsHint = (0, _template.trustHTML)(hint);\n        }).finally(() => {\n          this.loadingPermissionHint = false;\n        });\n      } else {\n        this.categoryPermissionsHint = DEFAULT_HINT;\n        this.autoJoinWarning = \"\";\n      }\n    }\n    // intentionally not showing AJAX error for this, we will autogenerate\n    // the slug server-side if they leave it blank\n    #generateSlug(name) {\n      return (0, _ajax.ajax)(\"/slugs.json\", {\n        type: \"POST\",\n        data: {\n          name\n        }\n      }).then(response => {\n        this.autoGeneratedSlug = response.slug;\n      });\n    }\n    #debouncedGenerateSlug(name) {\n      (0, _runloop.cancel)(this.#generateSlugHandler);\n      this.autoGeneratedSlug = \"\";\n      if (!name) {\n        return;\n      }\n      this.#generateSlugHandler = (0, _debounce.default)(this, this.#generateSlug, name, 300);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <DModal\n        @closeModal={{@closeModal}}\n        class=\"chat-modal-create-channel\"\n        @inline={{@inline}}\n        @title={{i18n \"chat.create_channel.title\"}}\n        @flash={{this.flash}}\n        @tagName=\"form\"\n        {{on \"submit\" this.onSave}}\n      >\n        <:body>\n          <div class=\"chat-modal-create-channel__control -name\">\n            <label for=\"name\" class=\"chat-modal-create-channel__label\">\n              {{i18n \"chat.create_channel.name\"}}\n            </label>\n            <Input\n              name=\"name\"\n              class=\"chat-modal-create-channel__input\"\n              @type=\"text\"\n              @value={{this.name}}\n              {{on \"input\" (withEventValue this.onNameChange)}}\n            />\n          </div>\n      \n          <div class=\"chat-modal-create-channel__control -slug\">\n            <label for=\"slug\" class=\"chat-modal-create-channel__label\">\n              {{i18n \"chat.create_channel.slug\"}}&nbsp;\n              <span>\n                {{icon \"circle-info\"}}\n                <DTooltip>\n                  {{i18n \"chat.channel_edit_name_slug_modal.slug_description\"}}\n                </DTooltip>\n              </span>\n            </label>\n            <Input\n              name=\"slug\"\n              class=\"chat-modal-create-channel__input\"\n              @type=\"text\"\n              @value={{this.slug}}\n              placeholder={{this.autoGeneratedSlug}}\n            />\n          </div>\n      \n          <div class=\"chat-modal-create-channel__control -description\">\n            <label for=\"description\" class=\"chat-modal-create-channel__label\">\n              {{i18n \"chat.create_channel.description\"}}\n            </label>\n            <Input\n              name=\"description\"\n              class=\"chat-modal-create-channel__input\"\n              @type=\"textarea\"\n              @value={{this.description}}\n            />\n          </div>\n      \n          <div class=\"chat-modal-create-channel__control\">\n            <label class=\"chat-modal-create-channel__label\">\n              {{i18n \"chat.create_channel.choose_category.label\"}}\n            </label>\n            <CategoryChooser\n              @value={{this.categoryId}}\n              @onChange={{this.onCategoryChange}}\n              @options={{hash\n                formName=\"chatable_id\"\n                none=\"chat.create_channel.choose_category.none\"\n              }}\n            />\n      \n            {{#if this.categoryPermissionsHint}}\n              <div\n                class={{concatClass\n                  \"chat-modal-create-channel__hint\"\n                  (if this.loadingPermissionHint \"loading-permissions\")\n                }}\n              >\n                {{this.categoryPermissionsHint}}\n              </div>\n            {{/if}}\n          </div>\n      \n          <div class=\"chat-modal-create-channel__control -emoji\">\n            <label for=\"emoji\" class=\"chat-modal-create-channel__label\">\n              {{i18n \"chat.create_channel.emoji.label\"}}\n            </label>\n      \n            <EmojiPicker\n              @emoji={{this.editedEmoji}}\n              @didSelectEmoji={{this.emojiSelected}}\n              @btnClass=\"btn-emoji\"\n              @modalForMobile={{false}}\n              @context=\"channel-emoji\"\n              @inline={{true}}\n            />\n      \n            <DButton\n              @label=\"chat.create_channel.emoji.reset\"\n              @action={{this.resetEmoji}}\n              @disabled={{not this.editedEmoji}}\n              class=\"btn-flat edit-channel-clear-emoji\"\n            />\n          </div>\n      \n          {{#if this.autoJoinAvailable}}\n            <div class=\"chat-modal-create-channel__control -auto-join\">\n              <label class=\"chat-modal-create-channel__label\">\n                <Input\n                  name=\"auto_join_users\"\n                  @type=\"checkbox\"\n                  @checked={{this.autoJoinUsers}}\n                />\n                <div class=\"auto-join-channel\">\n                  <span class=\"chat-modal-create-channel__label-title\">\n                    {{i18n \"chat.settings.auto_join_users_label\"}}\n                  </span>\n                  <p class=\"chat-modal-create-channel__label-description\">\n                    {{#if this.categoryName}}\n                      {{i18n\n                        \"chat.settings.auto_join_users_info\"\n                        category=this.categoryName\n                      }}\n                    {{else}}\n                      {{i18n \"chat.settings.auto_join_users_info_no_category\"}}\n                    {{/if}}\n                  </p>\n                </div>\n              </label>\n            </div>\n          {{/if}}\n      \n          <div class=\"chat-modal-create-channel__control -threading-toggle\">\n            <label class=\"chat-modal-create-channel__label\">\n              <Input\n                name=\"threading_enabled\"\n                @type=\"checkbox\"\n                @checked={{this.threadingEnabled}}\n              />\n              <div class=\"threading-channel\">\n                <span class=\"chat-modal-create-channel__label-title\">\n                  {{i18n \"chat.create_channel.threading.label\"}}\n                </span>\n                <p class=\"chat-modal-create-channel__label-description\">\n                  {{i18n \"chat.settings.channel_threading_description\"}}\n                </p>\n              </div>\n            </label>\n          </div>\n        </:body>\n        <:footer>\n          <button\n            class=\"btn btn-primary create\"\n            disabled={{this.createDisabled}}\n            type=\"submit\"\n          >\n            {{i18n \"chat.create_channel.create\"}}\n          </button>\n        </:footer>\n      </DModal>\n      */\n      {\n        \"id\": \"7JBXsYFO\",\n        \"block\": \"[[[8,[32,0],[[24,0,\\\"chat-modal-create-channel\\\"],[4,[32,2],[\\\"submit\\\",[30,0,[\\\"onSave\\\"]]],null]],[[\\\"@closeModal\\\",\\\"@inline\\\",\\\"@title\\\",\\\"@flash\\\",\\\"@tagName\\\"],[[30,1],[30,2],[28,[32,1],[\\\"chat.create_channel.title\\\"],null],[30,0,[\\\"flash\\\"]],\\\"form\\\"]],[[\\\"body\\\",\\\"footer\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-modal-create-channel__control -name\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"name\\\"],[14,0,\\\"chat-modal-create-channel__label\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,1],[\\\"chat.create_channel.name\\\"],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[32,3],[[24,3,\\\"name\\\"],[24,0,\\\"chat-modal-create-channel__input\\\"],[4,[32,2],[\\\"input\\\",[28,[32,4],[[30,0,[\\\"onNameChange\\\"]]],null]],null]],[[\\\"@type\\\",\\\"@value\\\"],[\\\"text\\\",[30,0,[\\\"name\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,0,\\\"chat-modal-create-channel__control -slug\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"slug\\\"],[14,0,\\\"chat-modal-create-channel__label\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,1],[\\\"chat.create_channel.slug\\\"],null]],[1,\\\" \\\\n        \\\"],[10,1],[12],[1,\\\"\\\\n          \\\"],[1,[28,[32,5],[\\\"circle-info\\\"],null]],[1,\\\"\\\\n          \\\"],[8,[32,6],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[1,[28,[32,1],[\\\"chat.channel_edit_name_slug_modal.slug_description\\\"],null]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[32,3],[[24,3,\\\"slug\\\"],[24,0,\\\"chat-modal-create-channel__input\\\"],[16,\\\"placeholder\\\",[30,0,[\\\"autoGeneratedSlug\\\"]]]],[[\\\"@type\\\",\\\"@value\\\"],[\\\"text\\\",[30,0,[\\\"slug\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,0,\\\"chat-modal-create-channel__control -description\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"description\\\"],[14,0,\\\"chat-modal-create-channel__label\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,1],[\\\"chat.create_channel.description\\\"],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[32,3],[[24,3,\\\"description\\\"],[24,0,\\\"chat-modal-create-channel__input\\\"]],[[\\\"@type\\\",\\\"@value\\\"],[\\\"textarea\\\",[30,0,[\\\"description\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,0,\\\"chat-modal-create-channel__control\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"label\\\"],[14,0,\\\"chat-modal-create-channel__label\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,1],[\\\"chat.create_channel.choose_category.label\\\"],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[32,7],null,[[\\\"@value\\\",\\\"@onChange\\\",\\\"@options\\\"],[[30,0,[\\\"categoryId\\\"]],[30,0,[\\\"onCategoryChange\\\"]],[28,[32,8],null,[[\\\"formName\\\",\\\"none\\\"],[\\\"chatable_id\\\",\\\"chat.create_channel.choose_category.none\\\"]]]]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"categoryPermissionsHint\\\"]],[[[1,\\\"        \\\"],[10,0],[15,0,[28,[32,9],[\\\"chat-modal-create-channel__hint\\\",[52,[30,0,[\\\"loadingPermissionHint\\\"]],\\\"loading-permissions\\\"]],null]],[12],[1,\\\"\\\\n          \\\"],[1,[30,0,[\\\"categoryPermissionsHint\\\"]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,0,\\\"chat-modal-create-channel__control -emoji\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"emoji\\\"],[14,0,\\\"chat-modal-create-channel__label\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,1],[\\\"chat.create_channel.emoji.label\\\"],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[8,[32,10],null,[[\\\"@emoji\\\",\\\"@didSelectEmoji\\\",\\\"@btnClass\\\",\\\"@modalForMobile\\\",\\\"@context\\\",\\\"@inline\\\"],[[30,0,[\\\"editedEmoji\\\"]],[30,0,[\\\"emojiSelected\\\"]],\\\"btn-emoji\\\",false,\\\"channel-emoji\\\",true]],null],[1,\\\"\\\\n\\\\n      \\\"],[8,[32,11],[[24,0,\\\"btn-flat edit-channel-clear-emoji\\\"]],[[\\\"@label\\\",\\\"@action\\\",\\\"@disabled\\\"],[\\\"chat.create_channel.emoji.reset\\\",[30,0,[\\\"resetEmoji\\\"]],[28,[32,12],[[30,0,[\\\"editedEmoji\\\"]]],null]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"autoJoinAvailable\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"chat-modal-create-channel__control -auto-join\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"label\\\"],[14,0,\\\"chat-modal-create-channel__label\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[32,3],[[24,3,\\\"auto_join_users\\\"]],[[\\\"@type\\\",\\\"@checked\\\"],[\\\"checkbox\\\",[30,0,[\\\"autoJoinUsers\\\"]]]],null],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"auto-join-channel\\\"],[12],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"chat-modal-create-channel__label-title\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[28,[32,1],[\\\"chat.settings.auto_join_users_label\\\"],null]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,2],[14,0,\\\"chat-modal-create-channel__label-description\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"categoryName\\\"]],[[[1,\\\"                \\\"],[1,[28,[32,1],[\\\"chat.settings.auto_join_users_info\\\"],[[\\\"category\\\"],[[30,0,[\\\"categoryName\\\"]]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                \\\"],[1,[28,[32,1],[\\\"chat.settings.auto_join_users_info_no_category\\\"],null]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-modal-create-channel__control -threading-toggle\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"label\\\"],[14,0,\\\"chat-modal-create-channel__label\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[32,3],[[24,3,\\\"threading_enabled\\\"]],[[\\\"@type\\\",\\\"@checked\\\"],[\\\"checkbox\\\",[30,0,[\\\"threadingEnabled\\\"]]]],null],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"threading-channel\\\"],[12],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"chat-modal-create-channel__label-title\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[28,[32,1],[\\\"chat.create_channel.threading.label\\\"],null]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,2],[14,0,\\\"chat-modal-create-channel__label-description\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[28,[32,1],[\\\"chat.settings.channel_threading_description\\\"],null]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]],[[[1,\\\"\\\\n    \\\"],[10,\\\"button\\\"],[14,0,\\\"btn btn-primary create\\\"],[15,\\\"disabled\\\",[30,0,[\\\"createDisabled\\\"]]],[14,4,\\\"submit\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[28,[32,1],[\\\"chat.create_channel.create\\\"],null]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]]],[\\\"@closeModal\\\",\\\"@inline\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/modal/create-channel.js\",\n        \"scope\": () => [_dModal.default, _discourseI18n.i18n, _modifier.on, _component2.Input, _withEventValue.default, _dIcon.default, _dTooltip.default, _categoryChooser.default, _helper.hash, _concatClass.default, _emojiPicker.default, _dButton.default, _truthHelpers.not],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatModalCreateChannel;\n});","define(\"discourse/plugins/chat/discourse/components/chat/modal/delete-channel\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/helper\", \"@ember/modifier\", \"@ember/object\", \"@ember/service\", \"@ember/template\", \"@ember/utils\", \"discourse/components/d-button\", \"discourse/components/d-modal\", \"discourse/helpers/with-event-value\", \"discourse/lib/ajax-error\", \"discourse/lib/later\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _helper, _modifier, _object, _service, _template, _utils, _dButton, _dModal, _withEventValue, _ajaxError, _later, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatModalDeleteChannel extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"channelNameConfirmation\", [_tracking.tracked]);\n    }\n    #channelNameConfirmation = (dt7948.i(this, \"channelNameConfirmation\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"deleting\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #deleting = (dt7948.i(this, \"deleting\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"confirmed\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #confirmed = (dt7948.i(this, \"confirmed\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"flash\", [_tracking.tracked]);\n    }\n    #flash = (dt7948.i(this, \"flash\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"flashType\", [_tracking.tracked]);\n    }\n    #flashType = (dt7948.i(this, \"flashType\"), void 0);\n    get channel() {\n      return this.args.model.channel;\n    }\n    get buttonDisabled() {\n      if (this.deleting || this.confirmed) {\n        return true;\n      }\n      if ((0, _utils.isEmpty)(this.channelNameConfirmation) || this.channelNameConfirmation.toLowerCase() !== this.channel.title.toLowerCase()) {\n        return true;\n      }\n      return false;\n    }\n    get instructionsText() {\n      return (0, _template.trustHTML)((0, _discourseI18n.i18n)(\"chat.channel_delete.instructions\", {\n        name: this.channel.escapedTitle\n      }));\n    }\n    deleteChannel() {\n      this.deleting = true;\n      return this.chatApi.destroyChannel(this.channel.id, this.channelNameConfirmation).then(() => {\n        this.confirmed = true;\n        this.flash = (0, _discourseI18n.i18n)(\"chat.channel_delete.process_started\");\n        this.flashType = \"success\";\n        (0, _later.default)(() => {\n          this.args.closeModal();\n          this.router.transitionTo(\"chat\");\n        }, 3000);\n      }).catch(_ajaxError.popupAjaxError).finally(() => this.deleting = false);\n    }\n    static {\n      dt7948.n(this.prototype, \"deleteChannel\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <DModal\n        @closeModal={{@closeModal}}\n        class=\"chat-modal-delete-channel\"\n        @inline={{@inline}}\n        @title={{i18n \"chat.channel_delete.title\"}}\n        @flash={{this.flash}}\n        @flashType={{this.flashType}}\n      >\n        <:body>\n          <p class=\"chat-modal-delete-channel__instructions\">\n            {{this.instructionsText}}\n          </p>\n          <input\n            {{on\n              \"input\"\n              (withEventValue (fn (mut this.channelNameConfirmation)))\n            }}\n            id=\"channel-delete-confirm-name\"\n            placeholder={{i18n \"chat.channel_delete.confirm_channel_name\"}}\n            autocorrect=\"off\"\n            autocapitalize=\"off\"\n            type=\"text\"\n          />\n        </:body>\n        <:footer>\n          <DButton\n            @disabled={{this.buttonDisabled}}\n            @action={{this.deleteChannel}}\n            @label=\"chat.channel_delete.confirm\"\n            id=\"chat-confirm-delete-channel\"\n            class=\"btn-danger\"\n          />\n          <DButton @label=\"cancel\" @action={{@closeModal}} class=\"btn-flat\" />\n        </:footer>\n      </DModal>\n      */\n      {\n        \"id\": \"w6ip5qfq\",\n        \"block\": \"[[[8,[32,0],[[24,0,\\\"chat-modal-delete-channel\\\"]],[[\\\"@closeModal\\\",\\\"@inline\\\",\\\"@title\\\",\\\"@flash\\\",\\\"@flashType\\\"],[[30,1],[30,2],[28,[32,1],[\\\"chat.channel_delete.title\\\"],null],[30,0,[\\\"flash\\\"]],[30,0,[\\\"flashType\\\"]]]],[[\\\"body\\\",\\\"footer\\\"],[[[[1,\\\"\\\\n    \\\"],[10,2],[14,0,\\\"chat-modal-delete-channel__instructions\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"instructionsText\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[11,\\\"input\\\"],[24,1,\\\"channel-delete-confirm-name\\\"],[16,\\\"placeholder\\\",[28,[32,1],[\\\"chat.channel_delete.confirm_channel_name\\\"],null]],[24,\\\"autocorrect\\\",\\\"off\\\"],[24,\\\"autocapitalize\\\",\\\"off\\\"],[24,4,\\\"text\\\"],[4,[32,2],[\\\"input\\\",[28,[32,3],[[28,[32,4],[[28,[31,0],[[30,0,[\\\"channelNameConfirmation\\\"]]],null]],null]],null]],null],[12],[13],[1,\\\"\\\\n  \\\"]],[]],[[[1,\\\"\\\\n    \\\"],[8,[32,5],[[24,1,\\\"chat-confirm-delete-channel\\\"],[24,0,\\\"btn-danger\\\"]],[[\\\"@disabled\\\",\\\"@action\\\",\\\"@label\\\"],[[30,0,[\\\"buttonDisabled\\\"]],[30,0,[\\\"deleteChannel\\\"]],\\\"chat.channel_delete.confirm\\\"]],null],[1,\\\"\\\\n    \\\"],[8,[32,5],[[24,0,\\\"btn-flat\\\"]],[[\\\"@label\\\",\\\"@action\\\"],[\\\"cancel\\\",[30,1]]],null],[1,\\\"\\\\n  \\\"]],[]]]]]],[\\\"@closeModal\\\",\\\"@inline\\\"],[\\\"mut\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/modal/delete-channel.js\",\n        \"scope\": () => [_dModal.default, _discourseI18n.i18n, _modifier.on, _withEventValue.default, _helper.fn, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatModalDeleteChannel;\n});","define(\"discourse/plugins/chat/discourse/components/chat/modal/delete-messages-confirm\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/components/d-modal\", \"discourse/components/d-modal-cancel\", \"discourse/lib/ajax-error\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _dButton, _dModal, _dModalCancel, _ajaxError, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class DeleteMessagesConfirm extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    async delete() {\n      try {\n        await this.chatApi.trashMessages(this.args.model.sourceChannel.id, this.args.model.selectedMessageIds);\n      } catch (error) {\n        (0, _ajaxError.popupAjaxError)(error);\n      } finally {\n        this.args.closeModal();\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"delete\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <DModal @closeModal={{@closeModal}} @headerClass=\"hidden\">\n        <:body>\n          {{i18n\n            \"chat.delete_messages.confirm\"\n            count=@model.selectedMessageIds.length\n          }}\n        </:body>\n        <:footer>\n          <DButton\n            class=\"btn-primary\"\n            @action={{this.delete}}\n            @label=\"delete\"\n            @icon=\"trash-can\"\n          />\n          <DModalCancel @close={{@closeModal}} />\n        </:footer>\n      </DModal>\n      */\n      {\n        \"id\": \"SfvsMAfn\",\n        \"block\": \"[[[8,[32,0],null,[[\\\"@closeModal\\\",\\\"@headerClass\\\"],[[30,1],\\\"hidden\\\"]],[[\\\"body\\\",\\\"footer\\\"],[[[[1,\\\"\\\\n    \\\"],[1,[28,[32,1],[\\\"chat.delete_messages.confirm\\\"],[[\\\"count\\\"],[[30,2,[\\\"selectedMessageIds\\\",\\\"length\\\"]]]]]],[1,\\\"\\\\n  \\\"]],[]],[[[1,\\\"\\\\n    \\\"],[8,[32,2],[[24,0,\\\"btn-primary\\\"]],[[\\\"@action\\\",\\\"@label\\\",\\\"@icon\\\"],[[30,0,[\\\"delete\\\"]],\\\"delete\\\",\\\"trash-can\\\"]],null],[1,\\\"\\\\n    \\\"],[8,[32,3],null,[[\\\"@close\\\"],[[30,1]]],null],[1,\\\"\\\\n  \\\"]],[]]]]]],[\\\"@closeModal\\\",\\\"@model\\\"],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/modal/delete-messages-confirm.js\",\n        \"scope\": () => [_dModal.default, _discourseI18n.i18n, _dButton.default, _dModalCancel.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = DeleteMessagesConfirm;\n});","define(\"discourse/plugins/chat/discourse/components/chat/modal/edit-channel-description\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/modifier\", \"@ember/object\", \"@ember/service\", \"discourse/components/char-counter\", \"discourse/components/d-button\", \"discourse/components/d-modal\", \"discourse/components/d-modal-cancel\", \"discourse/helpers/with-event-value\", \"discourse/lib/ajax-error\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _modifier, _object, _service, _charCounter, _dButton, _dModal, _dModalCancel, _withEventValue, _ajaxError, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const DESCRIPTION_MAX_LENGTH = 280;\n  class ChatModalEditChannelDescription extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"editedDescription\", [_tracking.tracked], function () {\n        return this.channel.description || \"\";\n      });\n    }\n    #editedDescription = (dt7948.i(this, \"editedDescription\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"flash\", [_tracking.tracked]);\n    }\n    #flash = (dt7948.i(this, \"flash\"), void 0);\n    get channel() {\n      return this.args.model;\n    }\n    get isSaveDisabled() {\n      return this.channel.description === this.editedDescription || this.editedDescription?.length > DESCRIPTION_MAX_LENGTH;\n    }\n    get descriptionMaxLength() {\n      return DESCRIPTION_MAX_LENGTH;\n    }\n    async onSaveChatChannelDescription() {\n      try {\n        const result = await this.chatApi.updateChannel(this.channel.id, {\n          description: this.editedDescription\n        });\n        this.channel.description = result.channel.description;\n        this.args.closeModal();\n      } catch (error) {\n        this.flash = (0, _ajaxError.extractError)(error);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"onSaveChatChannelDescription\", [_object.action]);\n    }\n    onChangeChatChannelDescription(description) {\n      this.flash = null;\n      this.editedDescription = description;\n    }\n    static {\n      dt7948.n(this.prototype, \"onChangeChatChannelDescription\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <DModal\n        @closeModal={{@closeModal}}\n        class=\"chat-modal-edit-channel-description\"\n        @inline={{@inline}}\n        @title={{i18n \"chat.channel_edit_description_modal.title\"}}\n        @flash={{this.flash}}\n      >\n        <:body>\n          <span class=\"chat-modal-edit-channel-description__description\">{{i18n\n              \"chat.channel_edit_description_modal.description\"\n            }}</span>\n          <CharCounter\n            @value={{this.editedDescription}}\n            @max={{this.descriptionMaxLength}}\n          >\n            <textarea\n              {{on \"input\" (withEventValue this.onChangeChatChannelDescription)}}\n              class=\"chat-modal-edit-channel-description__description-input\"\n              placeholder={{i18n\n                \"chat.channel_edit_description_modal.input_placeholder\"\n              }}\n            >{{this.editedDescription}}</textarea>\n          </CharCounter>\n        </:body>\n        <:footer>\n          <DButton\n            @action={{this.onSaveChatChannelDescription}}\n            @label=\"save\"\n            @disabled={{this.isSaveDisabled}}\n            class=\"btn-primary create\"\n          />\n          <DModalCancel @close={{@closeModal}} />\n        </:footer>\n      </DModal>\n      */\n      {\n        \"id\": \"eMqSFbMU\",\n        \"block\": \"[[[8,[32,0],[[24,0,\\\"chat-modal-edit-channel-description\\\"]],[[\\\"@closeModal\\\",\\\"@inline\\\",\\\"@title\\\",\\\"@flash\\\"],[[30,1],[30,2],[28,[32,1],[\\\"chat.channel_edit_description_modal.title\\\"],null],[30,0,[\\\"flash\\\"]]]],[[\\\"body\\\",\\\"footer\\\"],[[[[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"chat-modal-edit-channel-description__description\\\"],[12],[1,[28,[32,1],[\\\"chat.channel_edit_description_modal.description\\\"],null]],[13],[1,\\\"\\\\n    \\\"],[8,[32,2],null,[[\\\"@value\\\",\\\"@max\\\"],[[30,0,[\\\"editedDescription\\\"]],[30,0,[\\\"descriptionMaxLength\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[11,\\\"textarea\\\"],[24,0,\\\"chat-modal-edit-channel-description__description-input\\\"],[16,\\\"placeholder\\\",[28,[32,1],[\\\"chat.channel_edit_description_modal.input_placeholder\\\"],null]],[4,[32,3],[\\\"input\\\",[28,[32,4],[[30,0,[\\\"onChangeChatChannelDescription\\\"]]],null]],null],[12],[1,[30,0,[\\\"editedDescription\\\"]]],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"]],[]],[[[1,\\\"\\\\n    \\\"],[8,[32,5],[[24,0,\\\"btn-primary create\\\"]],[[\\\"@action\\\",\\\"@label\\\",\\\"@disabled\\\"],[[30,0,[\\\"onSaveChatChannelDescription\\\"]],\\\"save\\\",[30,0,[\\\"isSaveDisabled\\\"]]]],null],[1,\\\"\\\\n    \\\"],[8,[32,6],null,[[\\\"@close\\\"],[[30,1]]],null],[1,\\\"\\\\n  \\\"]],[]]]]]],[\\\"@closeModal\\\",\\\"@inline\\\"],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/modal/edit-channel-description.js\",\n        \"scope\": () => [_dModal.default, _discourseI18n.i18n, _charCounter.default, _modifier.on, _withEventValue.default, _dButton.default, _dModalCancel.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatModalEditChannelDescription;\n});","define(\"discourse/plugins/chat/discourse/components/chat/modal/edit-channel-name\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/component\", \"@ember/modifier\", \"@ember/object\", \"@ember/runloop\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/components/d-modal\", \"discourse/components/d-modal-cancel\", \"discourse/components/emoji-picker\", \"discourse/float-kit/components/d-tooltip\", \"discourse/lib/ajax\", \"discourse/lib/ajax-error\", \"discourse/lib/debounce\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/lib/slugify-channel\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _component2, _modifier, _object, _runloop, _service, _dButton, _dModal, _dModalCancel, _emojiPicker, _dTooltip, _ajax, _ajaxError, _debounce, _truthHelpers, _discourseI18n, _slugifyChannel, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const SLUG_MAX_LENGTH = 100;\n  class ChatModalEditChannelName extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"editedName\", [_tracking.tracked], function () {\n        return this.channel.title;\n      });\n    }\n    #editedName = (dt7948.i(this, \"editedName\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"editedSlug\", [_tracking.tracked], function () {\n        return this.channel.slug;\n      });\n    }\n    #editedSlug = (dt7948.i(this, \"editedSlug\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"editedEmoji\", [_tracking.tracked], function () {\n        return this.channel.emoji;\n      });\n    }\n    #editedEmoji = (dt7948.i(this, \"editedEmoji\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"autoGeneratedSlug\", [_tracking.tracked], function () {\n        return this.channel.slug ?? (0, _slugifyChannel.default)(this.channel);\n      });\n    }\n    #autoGeneratedSlug = (dt7948.i(this, \"autoGeneratedSlug\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"flash\", [_tracking.tracked]);\n    }\n    #flash = (dt7948.i(this, \"flash\"), void 0);\n    #generateSlugHandler = null;\n    get channel() {\n      return this.args.model;\n    }\n    get isSaveDisabled() {\n      return this.channel.title === this.editedName && this.channel.slug === this.editedSlug && this.channel.emoji === this.editedEmoji || this.editedName?.length > this.siteSettings.max_topic_title_length || this.editedSlug?.length > SLUG_MAX_LENGTH;\n    }\n    async onSave() {\n      try {\n        const result = await this.chatApi.updateChannel(this.channel.id, {\n          name: this.editedName,\n          slug: this.editedSlug || this.autoGeneratedSlug || this.channel.slug,\n          emoji: this.editedEmoji\n        });\n        this.channel.title = result.channel.title;\n        this.channel.slug = result.channel.slug;\n        this.channel.emoji = result.channel.emoji;\n        await this.args.closeModal();\n        this.router.replaceWith(\"chat.channel\", ...this.channel.routeModels);\n      } catch (error) {\n        this.flash = (0, _ajaxError.extractError)(error);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"onSave\", [_object.action]);\n    }\n    onChangeChatChannelName(event) {\n      this.flash = null;\n      this.#debouncedGenerateSlug(event?.target?.value);\n    }\n    static {\n      dt7948.n(this.prototype, \"onChangeChatChannelName\", [_object.action]);\n    }\n    onChangeChatChannelSlug() {\n      this.flash = null;\n      this.#debouncedGenerateSlug(this.editedName);\n    }\n    static {\n      dt7948.n(this.prototype, \"onChangeChatChannelSlug\", [_object.action]);\n    }\n    emojiSelected(emoji) {\n      this.editedEmoji = emoji;\n    }\n    static {\n      dt7948.n(this.prototype, \"emojiSelected\", [_object.action]);\n    }\n    resetEmoji() {\n      this.editedEmoji = null;\n    }\n    static {\n      dt7948.n(this.prototype, \"resetEmoji\", [_object.action]);\n    }\n    #debouncedGenerateSlug(name) {\n      (0, _runloop.cancel)(this.#generateSlugHandler);\n      this.autoGeneratedSlug = \"\";\n      if (!name) {\n        return;\n      }\n      this.#generateSlugHandler = (0, _debounce.default)(this, this.#generateSlug, name, 300);\n    }\n    async #generateSlug(name) {\n      try {\n        await (0, _ajax.ajax)(\"/slugs.json\", {\n          type: \"POST\",\n          data: {\n            name\n          }\n        }).then(response => {\n          this.autoGeneratedSlug = response.slug;\n        });\n      } catch (error) {\n        // eslint-disable-next-line no-console\n        console.log(error);\n      }\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <DModal\n        @closeModal={{@closeModal}}\n        class=\"chat-modal-edit-channel-name\"\n        @inline={{@inline}}\n        @title={{i18n \"chat.channel_edit_name_slug_modal.title\"}}\n        @flash={{this.flash}}\n      >\n        <:body>\n          <div class=\"edit-channel-control\">\n            <label for=\"channel-name\" class=\"edit-channel-label\">\n              {{i18n \"chat.channel_edit_name_slug_modal.name\"}}\n            </label>\n            <Input\n              name=\"channel-name\"\n              class=\"chat-channel-edit-name-slug-modal__name-input\"\n              placeholder={{i18n\n                \"chat.channel_edit_name_slug_modal.input_placeholder\"\n              }}\n              @type=\"text\"\n              @value={{this.editedName}}\n              {{on \"input\" this.onChangeChatChannelName}}\n            />\n          </div>\n      \n          <div class=\"edit-channel-control\">\n            <label for=\"channel-slug\" class=\"edit-channel-label\">\n              {{i18n \"chat.channel_edit_name_slug_modal.slug\"}}&nbsp;\n              <DTooltip\n                @icon=\"circle-info\"\n                @content={{i18n\n                  \"chat.channel_edit_name_slug_modal.slug_description\"\n                }}\n              />\n            </label>\n            <Input\n              name=\"channel-slug\"\n              class=\"chat-channel-edit-name-slug-modal__slug-input\"\n              placeholder={{this.autoGeneratedSlug}}\n              {{on \"input\" this.onChangeChatChannelSlug}}\n              @type=\"text\"\n              @value={{this.editedSlug}}\n            />\n          </div>\n          <div class=\"edit-channel-control\">\n            <label for=\"channel-emoji\" class=\"edit-channel-label\">\n              {{i18n \"chat.channel_edit_name_slug_modal.emoji\"}}\n            </label>\n      \n            <EmojiPicker\n              @emoji={{this.editedEmoji}}\n              @didSelectEmoji={{this.emojiSelected}}\n              @btnClass=\"btn-emoji\"\n              @modalForMobile={{false}}\n              @context=\"channel-emoji\"\n              @inline={{true}}\n            />\n      \n            <DButton\n              @label=\"chat.channel_edit_name_slug_modal.reset_emoji\"\n              @action={{this.resetEmoji}}\n              @disabled={{not this.editedEmoji}}\n              class=\"btn-flat edit-channel-clear-emoji\"\n            />\n      \n          </div>\n        </:body>\n        <:footer>\n          <DButton\n            @action={{this.onSave}}\n            @label=\"save\"\n            @disabled={{this.isSaveDisabled}}\n            class=\"btn-primary create\"\n          />\n          <DModalCancel @close={{@closeModal}} />\n        </:footer>\n      </DModal>\n      */\n      {\n        \"id\": \"jbXmupKQ\",\n        \"block\": \"[[[8,[32,0],[[24,0,\\\"chat-modal-edit-channel-name\\\"]],[[\\\"@closeModal\\\",\\\"@inline\\\",\\\"@title\\\",\\\"@flash\\\"],[[30,1],[30,2],[28,[32,1],[\\\"chat.channel_edit_name_slug_modal.title\\\"],null],[30,0,[\\\"flash\\\"]]]],[[\\\"body\\\",\\\"footer\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"edit-channel-control\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"channel-name\\\"],[14,0,\\\"edit-channel-label\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,1],[\\\"chat.channel_edit_name_slug_modal.name\\\"],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[32,2],[[24,3,\\\"channel-name\\\"],[24,0,\\\"chat-channel-edit-name-slug-modal__name-input\\\"],[16,\\\"placeholder\\\",[28,[32,1],[\\\"chat.channel_edit_name_slug_modal.input_placeholder\\\"],null]],[4,[32,3],[\\\"input\\\",[30,0,[\\\"onChangeChatChannelName\\\"]]],null]],[[\\\"@type\\\",\\\"@value\\\"],[\\\"text\\\",[30,0,[\\\"editedName\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,0,\\\"edit-channel-control\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"channel-slug\\\"],[14,0,\\\"edit-channel-label\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,1],[\\\"chat.channel_edit_name_slug_modal.slug\\\"],null]],[1,\\\" \\\\n        \\\"],[8,[32,4],null,[[\\\"@icon\\\",\\\"@content\\\"],[\\\"circle-info\\\",[28,[32,1],[\\\"chat.channel_edit_name_slug_modal.slug_description\\\"],null]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[32,2],[[24,3,\\\"channel-slug\\\"],[24,0,\\\"chat-channel-edit-name-slug-modal__slug-input\\\"],[16,\\\"placeholder\\\",[30,0,[\\\"autoGeneratedSlug\\\"]]],[4,[32,3],[\\\"input\\\",[30,0,[\\\"onChangeChatChannelSlug\\\"]]],null]],[[\\\"@type\\\",\\\"@value\\\"],[\\\"text\\\",[30,0,[\\\"editedSlug\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"edit-channel-control\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"channel-emoji\\\"],[14,0,\\\"edit-channel-label\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,1],[\\\"chat.channel_edit_name_slug_modal.emoji\\\"],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[8,[32,5],null,[[\\\"@emoji\\\",\\\"@didSelectEmoji\\\",\\\"@btnClass\\\",\\\"@modalForMobile\\\",\\\"@context\\\",\\\"@inline\\\"],[[30,0,[\\\"editedEmoji\\\"]],[30,0,[\\\"emojiSelected\\\"]],\\\"btn-emoji\\\",false,\\\"channel-emoji\\\",true]],null],[1,\\\"\\\\n\\\\n      \\\"],[8,[32,6],[[24,0,\\\"btn-flat edit-channel-clear-emoji\\\"]],[[\\\"@label\\\",\\\"@action\\\",\\\"@disabled\\\"],[\\\"chat.channel_edit_name_slug_modal.reset_emoji\\\",[30,0,[\\\"resetEmoji\\\"]],[28,[32,7],[[30,0,[\\\"editedEmoji\\\"]]],null]]],null],[1,\\\"\\\\n\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]],[[[1,\\\"\\\\n    \\\"],[8,[32,6],[[24,0,\\\"btn-primary create\\\"]],[[\\\"@action\\\",\\\"@label\\\",\\\"@disabled\\\"],[[30,0,[\\\"onSave\\\"]],\\\"save\\\",[30,0,[\\\"isSaveDisabled\\\"]]]],null],[1,\\\"\\\\n    \\\"],[8,[32,8],null,[[\\\"@close\\\"],[[30,1]]],null],[1,\\\"\\\\n  \\\"]],[]]]]]],[\\\"@closeModal\\\",\\\"@inline\\\"],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/modal/edit-channel-name.js\",\n        \"scope\": () => [_dModal.default, _discourseI18n.i18n, _component2.Input, _modifier.on, _dTooltip.default, _emojiPicker.default, _dButton.default, _truthHelpers.not, _dModalCancel.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatModalEditChannelName;\n});","define(\"discourse/plugins/chat/discourse/components/chat/modal/move-message-to-channel\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\", \"@ember/template\", \"@ember/utils\", \"discourse/components/d-button\", \"discourse/components/d-modal\", \"discourse/lib/ajax-error\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat-channel-chooser\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _object, _service, _template, _utils, _dButton, _dModal, _ajaxError, _discourseI18n, _chatChannelChooser, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatModalMoveMessageToChannel extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"destinationChannelId\", [_tracking.tracked]);\n    }\n    #destinationChannelId = (dt7948.i(this, \"destinationChannelId\"), void 0);\n    get sourceChannel() {\n      return this.args.model.sourceChannel;\n    }\n    get selectedMessageIds() {\n      return this.args.model.selectedMessageIds;\n    }\n    get selectedMessageCount() {\n      return this.selectedMessageIds?.length;\n    }\n    get disableMoveButton() {\n      return (0, _utils.isBlank)(this.destinationChannelId);\n    }\n    get availableChannels() {\n      return (this.args.model.availableChannels || this.chatChannelsManager.publicMessageChannels).filter(channel => channel.id !== this.sourceChannel.id);\n    }\n    get instructionsText() {\n      return (0, _template.trustHTML)((0, _discourseI18n.i18n)(\"chat.move_to_channel.instructions\", {\n        channelTitle: this.sourceChannel.escapedTitle,\n        count: this.selectedMessageCount\n      }));\n    }\n    moveMessages() {\n      return this.chatApi.moveChannelMessages(this.sourceChannel.id, {\n        message_ids: this.selectedMessageIds,\n        destination_channel_id: this.destinationChannelId\n      }).then(response => {\n        this.args.closeModal();\n        this.router.transitionTo(\"chat.channel.near-message\", \"-\", response.destination_channel_id, response.first_moved_message_id);\n      }).catch(_ajaxError.popupAjaxError);\n    }\n    static {\n      dt7948.n(this.prototype, \"moveMessages\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <DModal\n        @closeModal={{@closeModal}}\n        class=\"chat-modal-move-message-to-channel\"\n        @inline={{@inline}}\n        @title={{i18n \"chat.move_to_channel.title\"}}\n      >\n        <:body>\n          {{#if this.selectedMessageCount}}\n            <p>{{this.instructionsText}}</p>\n          {{/if}}\n      \n          <ChatChannelChooser\n            @content={{this.availableChannels}}\n            @value={{this.destinationChannelId}}\n            @nameProperty=\"title\"\n            class=\"chat-modal-move-message-to-channel__channel-chooser\"\n          />\n        </:body>\n        <:footer>\n          <DButton\n            @icon=\"right-from-bracket\"\n            @disabled={{this.disableMoveButton}}\n            @action={{this.moveMessages}}\n            @label=\"chat.move_to_channel.confirm_move\"\n            class=\"btn-primary\"\n          />\n          <DButton @label=\"cancel\" @action={{@closeModal}} class=\"btn-flat\" />\n        </:footer>\n      </DModal>\n      */\n      {\n        \"id\": \"6+EpFk5v\",\n        \"block\": \"[[[8,[32,0],[[24,0,\\\"chat-modal-move-message-to-channel\\\"]],[[\\\"@closeModal\\\",\\\"@inline\\\",\\\"@title\\\"],[[30,1],[30,2],[28,[32,1],[\\\"chat.move_to_channel.title\\\"],null]]],[[\\\"body\\\",\\\"footer\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"selectedMessageCount\\\"]],[[[1,\\\"      \\\"],[10,2],[12],[1,[30,0,[\\\"instructionsText\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n    \\\"],[8,[32,2],[[24,0,\\\"chat-modal-move-message-to-channel__channel-chooser\\\"]],[[\\\"@content\\\",\\\"@value\\\",\\\"@nameProperty\\\"],[[30,0,[\\\"availableChannels\\\"]],[30,0,[\\\"destinationChannelId\\\"]],\\\"title\\\"]],null],[1,\\\"\\\\n  \\\"]],[]],[[[1,\\\"\\\\n    \\\"],[8,[32,3],[[24,0,\\\"btn-primary\\\"]],[[\\\"@icon\\\",\\\"@disabled\\\",\\\"@action\\\",\\\"@label\\\"],[\\\"right-from-bracket\\\",[30,0,[\\\"disableMoveButton\\\"]],[30,0,[\\\"moveMessages\\\"]],\\\"chat.move_to_channel.confirm_move\\\"]],null],[1,\\\"\\\\n    \\\"],[8,[32,3],[[24,0,\\\"btn-flat\\\"]],[[\\\"@label\\\",\\\"@action\\\"],[\\\"cancel\\\",[30,1]]],null],[1,\\\"\\\\n  \\\"]],[]]]]]],[\\\"@closeModal\\\",\\\"@inline\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/modal/move-message-to-channel.js\",\n        \"scope\": () => [_dModal.default, _discourseI18n.i18n, _chatChannelChooser.default, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatModalMoveMessageToChannel;\n});","define(\"discourse/plugins/chat/discourse/components/chat/modal/new-message\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"discourse/components/d-modal\", \"discourse/plugins/chat/discourse/components/chat/message-creator\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _dModal, _messageCreator, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatModalNewMessage extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    get shouldRender() {\n      return this.siteSettings.enable_public_channels || this.chat.userCanDirectMessage;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.shouldRender}}\n        <DModal\n          @closeModal={{@closeModal}}\n          class=\"chat-modal-new-message --quick-palette\"\n          @title=\"chat.new_message_modal.title\"\n          @inline={{@inline}}\n          @hideHeader={{true}}\n        >\n          <MessageCreator @onClose={{@closeModal}} @channel={{@model}} />\n        </DModal>\n      {{/if}}\n      */\n      {\n        \"id\": \"HkU2ygj+\",\n        \"block\": \"[[[41,[30,0,[\\\"shouldRender\\\"]],[[[1,\\\"  \\\"],[8,[32,0],[[24,0,\\\"chat-modal-new-message --quick-palette\\\"]],[[\\\"@closeModal\\\",\\\"@title\\\",\\\"@inline\\\",\\\"@hideHeader\\\"],[[30,1],\\\"chat.new_message_modal.title\\\",[30,2],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,1],null,[[\\\"@onClose\\\",\\\"@channel\\\"],[[30,1],[30,3]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@closeModal\\\",\\\"@inline\\\",\\\"@model\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/modal/new-message.js\",\n        \"scope\": () => [_dModal.default, _messageCreator.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatModalNewMessage;\n});","define(\"discourse/plugins/chat/discourse/components/chat/modal/thread-settings\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/component\", \"@ember/object\", \"@ember/service\", \"@ember/template\", \"discourse/components/d-button\", \"discourse/components/d-modal\", \"discourse/helpers/d-icon\", \"discourse/lib/ajax-error\", \"discourse-i18n\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _component2, _object, _service, _template, _dButton, _dModal, _dIcon, _ajaxError, _discourseI18n, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatModalThreadSettings extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"editedTitle\", [_tracking.tracked], function () {\n        return this.thread.title || \"\";\n      });\n    }\n    #editedTitle = (dt7948.i(this, \"editedTitle\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"saving\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #saving = (dt7948.i(this, \"saving\"), void 0);\n    get buttonDisabled() {\n      return this.saving;\n    }\n    get thread() {\n      return this.args.model;\n    }\n    get threadTitleLength() {\n      return this.editedTitle.length;\n    }\n    saveThread() {\n      this.saving = true;\n      this.chatApi.editThread(this.thread.channel.id, this.thread.id, {\n        title: this.editedTitle\n      }).then(() => {\n        this.thread.title = this.editedTitle;\n        this.args.closeModal();\n      }).catch(_ajaxError.popupAjaxError).finally(() => {\n        this.saving = false;\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"saveThread\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <DModal\n        @closeModal={{@closeModal}}\n        class=\"chat-modal-thread-settings\"\n        @inline={{@inline}}\n        @title={{i18n \"chat.thread_title_modal.title\"}}\n      >\n        <:headerPrimaryAction>\n          <DButton\n            @disabled={{this.buttonDisabled}}\n            @action={{this.saveThread}}\n            @label=\"chat.save\"\n            class=\"btn-transparent --primary\"\n          />\n        </:headerPrimaryAction>\n        <:body>\n          <Input\n            name=\"thread-title\"\n            class=\"chat-modal-thread-settings__title-input\"\n            maxlength=\"100\"\n            placeholder={{i18n \"chat.thread_title_modal.input_placeholder\"}}\n            @type=\"text\"\n            @value={{this.editedTitle}}\n          />\n          <div class=\"thread-title-length\">\n            <span>{{this.threadTitleLength}}</span>/100\n          </div>\n      \n          {{#if this.currentUser.admin}}\n            <div class=\"discourse-ai-cta\">\n              <p class=\"discourse-ai-cta__title\">{{icon \"circle-info\"}}\n                {{i18n \"chat.thread_title_modal.discourse_ai.title\"}}</p>\n              <p class=\"discourse-ai-cta__description\">{{trustHTML\n                  (i18n\n                    \"chat.thread_title_modal.discourse_ai.description\"\n                    url=\"<a href='https://www.discourse.org/ai' rel='noopener noreferrer' target='_blank'>Discourse AI</a>\"\n                  )\n                }}\n              </p>\n            </div>\n          {{/if}}\n        </:body>\n        <:footer>\n          <DButton\n            @disabled={{this.buttonDisabled}}\n            @action={{this.saveThread}}\n            @label=\"save\"\n            class=\"btn-primary\"\n          />\n        </:footer>\n      </DModal>\n      */\n      {\n        \"id\": \"ptDck7pO\",\n        \"block\": \"[[[8,[32,0],[[24,0,\\\"chat-modal-thread-settings\\\"]],[[\\\"@closeModal\\\",\\\"@inline\\\",\\\"@title\\\"],[[30,1],[30,2],[28,[32,1],[\\\"chat.thread_title_modal.title\\\"],null]]],[[\\\"headerPrimaryAction\\\",\\\"body\\\",\\\"footer\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,2],[[24,0,\\\"btn-transparent --primary\\\"]],[[\\\"@disabled\\\",\\\"@action\\\",\\\"@label\\\"],[[30,0,[\\\"buttonDisabled\\\"]],[30,0,[\\\"saveThread\\\"]],\\\"chat.save\\\"]],null],[1,\\\"\\\\n  \\\"]],[]],[[[1,\\\"\\\\n    \\\"],[8,[32,3],[[24,3,\\\"thread-title\\\"],[24,0,\\\"chat-modal-thread-settings__title-input\\\"],[24,\\\"maxlength\\\",\\\"100\\\"],[16,\\\"placeholder\\\",[28,[32,1],[\\\"chat.thread_title_modal.input_placeholder\\\"],null]]],[[\\\"@type\\\",\\\"@value\\\"],[\\\"text\\\",[30,0,[\\\"editedTitle\\\"]]]],null],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"thread-title-length\\\"],[12],[1,\\\"\\\\n      \\\"],[10,1],[12],[1,[30,0,[\\\"threadTitleLength\\\"]]],[13],[1,\\\"/100\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"currentUser\\\",\\\"admin\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"discourse-ai-cta\\\"],[12],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"discourse-ai-cta__title\\\"],[12],[1,[28,[32,4],[\\\"circle-info\\\"],null]],[1,\\\"\\\\n          \\\"],[1,[28,[32,1],[\\\"chat.thread_title_modal.discourse_ai.title\\\"],null]],[13],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"discourse-ai-cta__description\\\"],[12],[1,[28,[32,5],[[28,[32,1],[\\\"chat.thread_title_modal.discourse_ai.description\\\"],[[\\\"url\\\"],[\\\"<a href='https://www.discourse.org/ai' rel='noopener noreferrer' target='_blank'>Discourse AI</a>\\\"]]]],null]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"]],[]],[[[1,\\\"\\\\n    \\\"],[8,[32,2],[[24,0,\\\"btn-primary\\\"]],[[\\\"@disabled\\\",\\\"@action\\\",\\\"@label\\\"],[[30,0,[\\\"buttonDisabled\\\"]],[30,0,[\\\"saveThread\\\"]],\\\"save\\\"]],null],[1,\\\"\\\\n  \\\"]],[]]]]]],[\\\"@closeModal\\\",\\\"@inline\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/modal/thread-settings.js\",\n        \"scope\": () => [_dModal.default, _discourseI18n.i18n, _dButton.default, _component2.Input, _dIcon.default, _template.trustHTML],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatModalThreadSettings;\n});","define(\"discourse/plugins/chat/discourse/components/chat/modal/toggle-channel-status\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/service\", \"@ember/template\", \"discourse/components/d-button\", \"discourse/components/d-modal\", \"discourse/lib/ajax-error\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/models/chat-channel\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _template, _dButton, _dModal, _ajaxError, _discourseI18n, _chatChannel, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatModalToggleChannelStatus extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    get channel() {\n      return this.args.model;\n    }\n    get buttonLabel() {\n      if (this.channel?.isClosed) {\n        return \"chat.channel_settings.open_channel\";\n      } else {\n        return \"chat.channel_settings.close_channel\";\n      }\n    }\n    get instructions() {\n      if (this.channel?.isClosed) {\n        return (0, _template.trustHTML)((0, _discourseI18n.i18n)(\"chat.channel_open.instructions\"));\n      } else {\n        return (0, _template.trustHTML)((0, _discourseI18n.i18n)(\"chat.channel_close.instructions\"));\n      }\n    }\n    get modalTitle() {\n      if (this.channel?.isClosed) {\n        return \"chat.channel_open.title\";\n      } else {\n        return \"chat.channel_close.title\";\n      }\n    }\n    onStatusChange() {\n      const status = this.channel.isClosed ? _chatChannel.CHANNEL_STATUSES.open : _chatChannel.CHANNEL_STATUSES.closed;\n      return this.chatApi.updateChannelStatus(this.channel.id, status).then(() => {\n        this.args.closeModal();\n        this.router.transitionTo(\"chat.channel\", ...this.channel.routeModels);\n      }).catch(_ajaxError.popupAjaxError);\n    }\n    static {\n      dt7948.n(this.prototype, \"onStatusChange\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <DModal\n        @closeModal={{@closeModal}}\n        class=\"chat-modal-toggle-channel-status\"\n        @inline={{@inline}}\n        @title={{i18n this.modalTitle}}\n      >\n        <:body>\n          <p\n            class=\"chat-modal-toggle-channel-status__instructions\"\n          >{{this.instructions}}</p>\n        </:body>\n        <:footer>\n          <DButton\n            @action={{this.onStatusChange}}\n            @label={{this.buttonLabel}}\n            id=\"chat-channel-toggle-btn\"\n            class=\"btn-primary\"\n          />\n        </:footer>\n      </DModal>\n      */\n      {\n        \"id\": \"lPs12hR3\",\n        \"block\": \"[[[8,[32,0],[[24,0,\\\"chat-modal-toggle-channel-status\\\"]],[[\\\"@closeModal\\\",\\\"@inline\\\",\\\"@title\\\"],[[30,1],[30,2],[28,[32,1],[[30,0,[\\\"modalTitle\\\"]]],null]]],[[\\\"body\\\",\\\"footer\\\"],[[[[1,\\\"\\\\n    \\\"],[10,2],[14,0,\\\"chat-modal-toggle-channel-status__instructions\\\"],[12],[1,[30,0,[\\\"instructions\\\"]]],[13],[1,\\\"\\\\n  \\\"]],[]],[[[1,\\\"\\\\n    \\\"],[8,[32,2],[[24,1,\\\"chat-channel-toggle-btn\\\"],[24,0,\\\"btn-primary\\\"]],[[\\\"@action\\\",\\\"@label\\\"],[[30,0,[\\\"onStatusChange\\\"]],[30,0,[\\\"buttonLabel\\\"]]]],null],[1,\\\"\\\\n  \\\"]],[]]]]]],[\\\"@closeModal\\\",\\\"@inline\\\"],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/modal/toggle-channel-status.js\",\n        \"scope\": () => [_dModal.default, _discourseI18n.i18n, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatModalToggleChannelStatus;\n});","define(\"discourse/plugins/chat/discourse/components/chat/navbar/actions\", [\"exports\", \"@ember/helper\", \"discourse/plugins/chat/discourse/components/chat/navbar/browse-channels-button\", \"discourse/plugins/chat/discourse/components/chat/navbar/close-drawer-button\", \"discourse/plugins/chat/discourse/components/chat/navbar/close-pins-button\", \"discourse/plugins/chat/discourse/components/chat/navbar/close-thread-button\", \"discourse/plugins/chat/discourse/components/chat/navbar/close-threads-button\", \"discourse/plugins/chat/discourse/components/chat/navbar/filter\", \"discourse/plugins/chat/discourse/components/chat/navbar/full-page-button\", \"discourse/plugins/chat/discourse/components/chat/navbar/new-channel-button\", \"discourse/plugins/chat/discourse/components/chat/navbar/new-direct-message-button\", \"discourse/plugins/chat/discourse/components/chat/navbar/open-drawer-button\", \"discourse/plugins/chat/discourse/components/chat/navbar/pinned-messages-button\", \"discourse/plugins/chat/discourse/components/chat/navbar/thread-settings-button\", \"discourse/plugins/chat/discourse/components/chat/navbar/thread-tracking-dropdown\", \"discourse/plugins/chat/discourse/components/chat/navbar/threads-list-button\", \"discourse/plugins/chat/discourse/components/chat/navbar/toggle-drawer-button\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _helper, _browseChannelsButton, _closeDrawerButton, _closePinsButton, _closeThreadButton, _closeThreadsButton, _filter, _fullPageButton, _newChannelButton, _newDirectMessageButton, _openDrawerButton, _pinnedMessagesButton, _threadSettingsButton, _threadTrackingDropdown, _threadsListButton, _toggleDrawerButton, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatNavbarActions = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <nav class=\"c-navbar__actions\">\n    {{yield\n      (hash\n        OpenDrawerButton=OpenDrawerButton\n        BrowseChannelsButton=BrowseChannelsButton\n        NewDirectMessageButton=NewDirectMessageButton\n        NewChannelButton=NewChannelButton\n        ThreadTrackingDropdown=ThreadTrackingDropdown\n        CloseThreadButton=CloseThreadButton\n        CloseThreadsButton=CloseThreadsButton\n        ClosePinsButton=ClosePinsButton\n        ThreadSettingsButton=ThreadSettingsButton\n        ThreadsListButton=ThreadsListButton\n        PinnedMessagesButton=PinnedMessagesButton\n        CloseDrawerButton=CloseDrawerButton\n        ToggleDrawerButton=ToggleDrawerButton\n        FullPageButton=FullPageButton\n        Filter=Filter\n      )\n    }}\n  </nav>\n  */\n  {\n    \"id\": \"GkxEQQUm\",\n    \"block\": \"[[[10,\\\"nav\\\"],[14,0,\\\"c-navbar__actions\\\"],[12],[1,\\\"\\\\n  \\\"],[18,1,[[28,[32,0],null,[[\\\"OpenDrawerButton\\\",\\\"BrowseChannelsButton\\\",\\\"NewDirectMessageButton\\\",\\\"NewChannelButton\\\",\\\"ThreadTrackingDropdown\\\",\\\"CloseThreadButton\\\",\\\"CloseThreadsButton\\\",\\\"ClosePinsButton\\\",\\\"ThreadSettingsButton\\\",\\\"ThreadsListButton\\\",\\\"PinnedMessagesButton\\\",\\\"CloseDrawerButton\\\",\\\"ToggleDrawerButton\\\",\\\"FullPageButton\\\",\\\"Filter\\\"],[[32,1],[32,2],[32,3],[32,4],[32,5],[32,6],[32,7],[32,8],[32,9],[32,10],[32,11],[32,12],[32,13],[32,14],[32,15]]]]]],[1,\\\"\\\\n\\\"],[13]],[\\\"&default\\\"],[\\\"yield\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/navbar/actions.js\",\n    \"scope\": () => [_helper.hash, _openDrawerButton.default, _browseChannelsButton.default, _newDirectMessageButton.default, _newChannelButton.default, _threadTrackingDropdown.default, _closeThreadButton.default, _closeThreadsButton.default, _closePinsButton.default, _threadSettingsButton.default, _threadsListButton.default, _pinnedMessagesButton.default, _closeDrawerButton.default, _toggleDrawerButton.default, _fullPageButton.default, _filter.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"actions:ChatNavbarActions\"));\n  var _default = _exports.default = ChatNavbarActions;\n});","define(\"discourse/plugins/chat/discourse/components/chat/navbar/back-button\", [\"exports\", \"@glimmer/component\", \"@ember/routing\", \"@ember/service\", \"discourse/helpers/d-icon\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/header/icon/unread-indicator\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _routing, _service, _dIcon, _discourseI18n, _unreadIndicator, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatNavbarBackButton extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    get icon() {\n      return this.args.icon ?? \"chevron-left\";\n    }\n    get title() {\n      return this.args.title ?? (0, _discourseI18n.i18n)(\"chat.browse.back\");\n    }\n    get targetRoute() {\n      return this.args.route ?? \"chat\";\n    }\n    get showBackButton() {\n      return this.chatStateManager.isDrawerExpanded || this.chatStateManager.isFullPageActive;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.showBackButton}}\n        {{#if @routeModels}}\n          <LinkTo\n            @route={{@route}}\n            @models={{@routeModels}}\n            class=\"c-navbar__back-button no-text btn-transparent btn\"\n            title={{this.title}}\n          >\n            {{#if (has-block)}}\n              {{yield}}\n            {{else}}\n              {{icon this.icon}}\n            {{/if}}\n            {{#if this.site.mobileView}}\n              <ChatHeaderIconUnreadIndicator\n                @urgentCount={{@urgentCount}}\n                @unreadCount={{@unreadCount}}\n                @indicatorPreference={{@indicatorPreference}}\n              />\n            {{/if}}\n          </LinkTo>\n        {{else}}\n          <LinkTo\n            @route={{this.targetRoute}}\n            class=\"c-navbar__back-button no-text btn-transparent btn\"\n            title={{this.title}}\n          >\n            {{#if (has-block)}}\n              {{yield}}\n            {{else}}\n              {{icon this.icon}}\n            {{/if}}\n            {{#if this.site.mobileView}}\n              <ChatHeaderIconUnreadIndicator\n                @urgentCount={{@urgentCount}}\n                @unreadCount={{@unreadCount}}\n                @indicatorPreference={{@indicatorPreference}}\n              />\n            {{/if}}\n          </LinkTo>\n        {{/if}}\n      \n      {{/if}}\n      */\n      {\n        \"id\": \"r8W75PkV\",\n        \"block\": \"[[[41,[30,0,[\\\"showBackButton\\\"]],[[[41,[30,1],[[[1,\\\"    \\\"],[8,[32,0],[[24,0,\\\"c-navbar__back-button no-text btn-transparent btn\\\"],[16,\\\"title\\\",[30,0,[\\\"title\\\"]]]],[[\\\"@route\\\",\\\"@models\\\"],[[30,2],[30,1]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[48,[30,6]],[[[1,\\\"        \\\"],[18,6,null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[1,[28,[32,1],[[30,0,[\\\"icon\\\"]]],null]],[1,\\\"\\\\n\\\"]],[]]],[41,[30,0,[\\\"site\\\",\\\"mobileView\\\"]],[[[1,\\\"        \\\"],[8,[32,2],null,[[\\\"@urgentCount\\\",\\\"@unreadCount\\\",\\\"@indicatorPreference\\\"],[[30,3],[30,4],[30,5]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[8,[32,0],[[24,0,\\\"c-navbar__back-button no-text btn-transparent btn\\\"],[16,\\\"title\\\",[30,0,[\\\"title\\\"]]]],[[\\\"@route\\\"],[[30,0,[\\\"targetRoute\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[48,[30,6]],[[[1,\\\"        \\\"],[18,6,null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[1,[28,[32,1],[[30,0,[\\\"icon\\\"]]],null]],[1,\\\"\\\\n\\\"]],[]]],[41,[30,0,[\\\"site\\\",\\\"mobileView\\\"]],[[[1,\\\"        \\\"],[8,[32,2],null,[[\\\"@urgentCount\\\",\\\"@unreadCount\\\",\\\"@indicatorPreference\\\"],[[30,3],[30,4],[30,5]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@routeModels\\\",\\\"@route\\\",\\\"@urgentCount\\\",\\\"@unreadCount\\\",\\\"@indicatorPreference\\\",\\\"&default\\\"],[\\\"if\\\",\\\"has-block\\\",\\\"yield\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/navbar/back-button.js\",\n        \"scope\": () => [_routing.LinkTo, _dIcon.default, _unreadIndicator.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatNavbarBackButton;\n});","define(\"discourse/plugins/chat/discourse/components/chat/navbar/browse-channels-button\", [\"exports\", \"@glimmer/component\", \"@ember/routing\", \"@ember/service\", \"discourse/helpers/d-icon\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _routing, _service, _dIcon, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatNavbarBrowseChannelsButton extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    browseChannelsLabel = (0, _discourseI18n.i18n)(\"chat.channels_list_popup.browse\");\n    get showBrowseChannelsButton() {\n      return this.router.currentRoute.name === \"chat.channels\";\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.showBrowseChannelsButton}}\n        <LinkTo\n          @route=\"chat.browse\"\n          class=\"btn no-text btn-flat c-navbar__browse-button\"\n          title={{this.browseChannelsLabel}}\n        >\n          {{icon \"pencil\"}}\n        </LinkTo>\n      {{/if}}\n      */\n      {\n        \"id\": \"GGcwmeQn\",\n        \"block\": \"[[[41,[30,0,[\\\"showBrowseChannelsButton\\\"]],[[[1,\\\"  \\\"],[8,[32,0],[[24,0,\\\"btn no-text btn-flat c-navbar__browse-button\\\"],[16,\\\"title\\\",[30,0,[\\\"browseChannelsLabel\\\"]]]],[[\\\"@route\\\"],[\\\"chat.browse\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[1,[28,[32,1],[\\\"pencil\\\"],null]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/navbar/browse-channels-button.js\",\n        \"scope\": () => [_routing.LinkTo, _dIcon.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatNavbarBrowseChannelsButton;\n});","define(\"discourse/plugins/chat/discourse/components/chat/navbar/channel-title\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/routing\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/float-kit/components/d-tooltip\", \"discourse/helpers/concat-class\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/channel-title\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _object, _routing, _service, _dButton, _dTooltip, _concatClass, _discourseI18n, _channelTitle, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatNavbarChannelTitle extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"isTogglingStarred\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #isTogglingStarred = (dt7948.i(this, \"isTogglingStarred\"), void 0);\n    get shouldLinkToSettings() {\n      return this.chatStateManager.isDrawerExpanded || this.chatStateManager.isFullPageActive;\n    }\n    get isStarred() {\n      return this.args.channel?.currentUserMembership?.starred;\n    }\n    get starIcon() {\n      return this.isStarred ? \"star\" : \"far-star\";\n    }\n    get starTooltip() {\n      return this.isStarred ? (0, _discourseI18n.i18n)(\"chat.channel_settings.unstar_channel\") : (0, _discourseI18n.i18n)(\"chat.channel_settings.star_channel\");\n    }\n    get showStarButton() {\n      return !!this.args.channel?.currentUserMembership;\n    }\n    async toggleStarred() {\n      const channel = this.args.channel;\n      if (!channel?.currentUserMembership || this.isTogglingStarred) {\n        return;\n      }\n      this.isTogglingStarred = true;\n      const newValue = !channel.currentUserMembership.starred;\n      const previousValue = channel.currentUserMembership.starred;\n      channel.currentUserMembership.starred = newValue;\n      try {\n        await this.chatApi.updateCurrentUserChannelMembership(channel.id, {\n          starred: newValue\n        });\n      } catch {\n        channel.currentUserMembership.starred = previousValue;\n      } finally {\n        this.isTogglingStarred = false;\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleStarred\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if @channel}}\n        {{#if this.shouldLinkToSettings}}\n          <LinkTo\n            @route=\"chat.channel.info.settings\"\n            @models={{@channel.routeModels}}\n            class=\"c-navbar__channel-title\"\n          >\n            <ChannelTitle @channel={{@channel}} />\n          </LinkTo>\n        {{else}}\n          <div class=\"c-navbar__channel-title\">\n            <ChannelTitle @channel={{@channel}} />\n          </div>\n        {{/if}}\n        {{#if this.showStarButton}}\n          <DTooltip @placement=\"bottom\" @identifier=\"star-channel\">\n            <:trigger>\n              <DButton\n                @action={{this.toggleStarred}}\n                @icon={{this.starIcon}}\n                @disabled={{this.isTogglingStarred}}\n                class={{concatClass\n                  \"btn-transparent\"\n                  \"c-navbar__star-channel-button\"\n                  (if this.isStarred \"--starred\")\n                }}\n              />\n            </:trigger>\n            <:content>\n              {{this.starTooltip}}\n            </:content>\n          </DTooltip>\n        {{/if}}\n      {{/if}}\n      */\n      {\n        \"id\": \"0gau4KT8\",\n        \"block\": \"[[[41,[30,1],[[[41,[30,0,[\\\"shouldLinkToSettings\\\"]],[[[1,\\\"    \\\"],[8,[32,0],[[24,0,\\\"c-navbar__channel-title\\\"]],[[\\\"@route\\\",\\\"@models\\\"],[\\\"chat.channel.info.settings\\\",[30,1,[\\\"routeModels\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[32,1],null,[[\\\"@channel\\\"],[[30,1]]],null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"c-navbar__channel-title\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[32,1],null,[[\\\"@channel\\\"],[[30,1]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[41,[30,0,[\\\"showStarButton\\\"]],[[[1,\\\"    \\\"],[8,[32,2],null,[[\\\"@placement\\\",\\\"@identifier\\\"],[\\\"bottom\\\",\\\"star-channel\\\"]],[[\\\"trigger\\\",\\\"content\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[32,3],[[16,0,[28,[32,4],[\\\"btn-transparent\\\",\\\"c-navbar__star-channel-button\\\",[52,[30,0,[\\\"isStarred\\\"]],\\\"--starred\\\"]],null]]],[[\\\"@action\\\",\\\"@icon\\\",\\\"@disabled\\\"],[[30,0,[\\\"toggleStarred\\\"]],[30,0,[\\\"starIcon\\\"]],[30,0,[\\\"isTogglingStarred\\\"]]]],null],[1,\\\"\\\\n      \\\"]],[]],[[[1,\\\"\\\\n        \\\"],[1,[30,0,[\\\"starTooltip\\\"]]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[]],null]],[\\\"@channel\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/navbar/channel-title.js\",\n        \"scope\": () => [_routing.LinkTo, _channelTitle.default, _dTooltip.default, _dButton.default, _concatClass.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatNavbarChannelTitle;\n});","define(\"discourse/plugins/chat/discourse/components/chat/navbar/close-drawer-button\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/service\", \"discourse/components/d-button\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _dButton, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatNavbarCloseDrawerButton extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    closeDrawer() {\n      this.chatStateManager.didCloseDrawer();\n      this.chat.activeChannel = null;\n    }\n    static {\n      dt7948.n(this.prototype, \"closeDrawer\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <DButton\n        @icon=\"xmark\"\n        @action={{this.closeDrawer}}\n        @title=\"chat.close\"\n        class=\"btn-transparent no-text c-navbar__close-drawer-button\"\n      />\n      */\n      {\n        \"id\": \"E6BWlLhF\",\n        \"block\": \"[[[8,[32,0],[[24,0,\\\"btn-transparent no-text c-navbar__close-drawer-button\\\"]],[[\\\"@icon\\\",\\\"@action\\\",\\\"@title\\\"],[\\\"xmark\\\",[30,0,[\\\"closeDrawer\\\"]],\\\"chat.close\\\"]],null]],[],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/navbar/close-drawer-button.js\",\n        \"scope\": () => [_dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatNavbarCloseDrawerButton;\n});","define(\"discourse/plugins/chat/discourse/components/chat/navbar/close-pins-button\", [\"exports\", \"@glimmer/component\", \"@ember/routing\", \"@ember/service\", \"discourse/helpers/d-icon\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _routing, _service, _dIcon, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatNavbarClosePinsButton extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    closeButtonTitle = (0, _discourseI18n.i18n)(\"chat.pinned_messages.close\");\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.site.desktopView}}\n        <LinkTo\n          class=\"c-navbar__close-pins-button btn-transparent btn btn-icon no-text\"\n          @route=\"chat.channel\"\n          @models={{@channel.routeModels}}\n          title={{this.closeButtonTitle}}\n        >\n          {{icon \"xmark\"}}\n        </LinkTo>\n      {{/if}}\n      */\n      {\n        \"id\": \"LCx3jdJZ\",\n        \"block\": \"[[[41,[30,0,[\\\"site\\\",\\\"desktopView\\\"]],[[[1,\\\"  \\\"],[8,[32,0],[[24,0,\\\"c-navbar__close-pins-button btn-transparent btn btn-icon no-text\\\"],[16,\\\"title\\\",[30,0,[\\\"closeButtonTitle\\\"]]]],[[\\\"@route\\\",\\\"@models\\\"],[\\\"chat.channel\\\",[30,1,[\\\"routeModels\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[1,[28,[32,1],[\\\"xmark\\\"],null]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@channel\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/navbar/close-pins-button.js\",\n        \"scope\": () => [_routing.LinkTo, _dIcon.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatNavbarClosePinsButton;\n});","define(\"discourse/plugins/chat/discourse/components/chat/navbar/close-thread-button\", [\"exports\", \"@glimmer/component\", \"@ember/routing\", \"@ember/service\", \"discourse/helpers/d-icon\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _routing, _service, _dIcon, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatNavbarCloseThreadButton extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.site.desktopView}}\n        <LinkTo\n          class=\"c-navbar__close-thread-button btn-transparent btn btn-icon no-text\"\n          @route=\"chat.channel\"\n          @models={{@thread.channel.routeModels}}\n          title={{i18n \"chat.thread.close\"}}\n        >\n          {{icon \"xmark\"}}\n        </LinkTo>\n      {{/if}}\n      */\n      {\n        \"id\": \"yDHxVReL\",\n        \"block\": \"[[[41,[30,0,[\\\"site\\\",\\\"desktopView\\\"]],[[[1,\\\"  \\\"],[8,[32,0],[[24,0,\\\"c-navbar__close-thread-button btn-transparent btn btn-icon no-text\\\"],[16,\\\"title\\\",[28,[32,1],[\\\"chat.thread.close\\\"],null]]],[[\\\"@route\\\",\\\"@models\\\"],[\\\"chat.channel\\\",[30,1,[\\\"channel\\\",\\\"routeModels\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[1,[28,[32,2],[\\\"xmark\\\"],null]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@thread\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/navbar/close-thread-button.js\",\n        \"scope\": () => [_routing.LinkTo, _discourseI18n.i18n, _dIcon.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatNavbarCloseThreadButton;\n});","define(\"discourse/plugins/chat/discourse/components/chat/navbar/close-threads-button\", [\"exports\", \"@glimmer/component\", \"@ember/routing\", \"@ember/service\", \"discourse/helpers/d-icon\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _routing, _service, _dIcon, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatNavbarCloseThreadsButton extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    closeButtonTitle = (0, _discourseI18n.i18n)(\"chat.thread.close\");\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.site.desktopView}}\n        <LinkTo\n          class=\"c-navbar__close-threads-button btn-transparent btn btn-icon no-text\"\n          @route=\"chat.channel\"\n          @models={{@channel.routeModels}}\n          title={{this.closeButtonTitle}}\n        >\n          {{icon \"xmark\"}}\n        </LinkTo>\n      {{/if}}\n      */\n      {\n        \"id\": \"5Gnu7Zfu\",\n        \"block\": \"[[[41,[30,0,[\\\"site\\\",\\\"desktopView\\\"]],[[[1,\\\"  \\\"],[8,[32,0],[[24,0,\\\"c-navbar__close-threads-button btn-transparent btn btn-icon no-text\\\"],[16,\\\"title\\\",[30,0,[\\\"closeButtonTitle\\\"]]]],[[\\\"@route\\\",\\\"@models\\\"],[\\\"chat.channel\\\",[30,1,[\\\"routeModels\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[1,[28,[32,1],[\\\"xmark\\\"],null]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@channel\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/navbar/close-threads-button.js\",\n        \"scope\": () => [_routing.LinkTo, _dIcon.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatNavbarCloseThreadsButton;\n});","define(\"discourse/plugins/chat/discourse/components/chat/navbar/filter\", [\"exports\", \"discourse/components/d-button\", \"discourse/helpers/concat-class\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _dButton, _concatClass, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatNavbarFilter = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <DButton\n    @icon=\"discourse-chat-search\"\n    @action={{@onToggleFilter}}\n    class={{concatClass\n      \"btn-transparent c-navbar__filter\"\n      (if @isFiltering \"active\")\n    }}\n  />\n  */\n  {\n    \"id\": \"lKuUL0OB\",\n    \"block\": \"[[[8,[32,0],[[16,0,[28,[32,1],[\\\"btn-transparent c-navbar__filter\\\",[52,[30,1],\\\"active\\\"]],null]]],[[\\\"@icon\\\",\\\"@action\\\"],[\\\"discourse-chat-search\\\",[30,2]]],null]],[\\\"@isFiltering\\\",\\\"@onToggleFilter\\\"],[\\\"if\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/navbar/filter.js\",\n    \"scope\": () => [_dButton.default, _concatClass.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"filter:ChatNavbarFilter\"));\n  var _default = _exports.default = ChatNavbarFilter;\n});","define(\"discourse/plugins/chat/discourse/components/chat/navbar/full-page-button\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/runloop\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/lib/url\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _runloop, _service, _dButton, _url, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatNavbarFullPageButton extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    async openInFullPage() {\n      this.chatStateManager.storeAppURL();\n      this.chatStateManager.prefersFullPage();\n      this.chat.activeChannel = null;\n      await new Promise(resolve => (0, _runloop.next)(resolve));\n      _url.default.routeTo(this.chatStateManager.lastKnownChatURL);\n    }\n    static {\n      dt7948.n(this.prototype, \"openInFullPage\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.chatStateManager.isDrawerExpanded}}\n        <DButton\n          @icon=\"discourse-expand\"\n          class=\"btn-transparent no-text c-navbar__full-page-button\"\n          @title=\"chat.open_full_page\"\n          @action={{this.openInFullPage}}\n        />\n      {{/if}}\n      */\n      {\n        \"id\": \"y0q2tNnE\",\n        \"block\": \"[[[41,[30,0,[\\\"chatStateManager\\\",\\\"isDrawerExpanded\\\"]],[[[1,\\\"  \\\"],[8,[32,0],[[24,0,\\\"btn-transparent no-text c-navbar__full-page-button\\\"]],[[\\\"@icon\\\",\\\"@title\\\",\\\"@action\\\"],[\\\"discourse-expand\\\",\\\"chat.open_full_page\\\",[30,0,[\\\"openInFullPage\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/navbar/full-page-button.js\",\n        \"scope\": () => [_dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatNavbarFullPageButton;\n});","define(\"discourse/plugins/chat/discourse/components/chat/navbar/index\", [\"exports\", \"@glimmer/component\", \"@ember/helper\", \"@ember/modifier\", \"@ember/object\", \"discourse/helpers/concat-class\", \"discourse/helpers/noop\", \"discourse/modifiers/on-resize\", \"discourse/plugins/chat/discourse/components/chat/navbar/actions\", \"discourse/plugins/chat/discourse/components/chat/navbar/back-button\", \"discourse/plugins/chat/discourse/components/chat/navbar/channel-title\", \"discourse/plugins/chat/discourse/components/chat/navbar/title\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _helper, _modifier, _object, _concatClass, _noop, _onResize, _actions, _backButton, _channelTitle, _title, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatNavbar extends _component.default {\n    handleResize(entries) {\n      for (let entry of entries) {\n        const height = entry.target.clientHeight;\n        requestAnimationFrame(() => {\n          document.documentElement.style.setProperty(\"--chat-header-expanded-offset\", `${height}px`);\n        });\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"handleResize\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{! template-lint-disable no-invalid-interactive }}\n      <div\n        class={{concatClass \"c-navbar-container\" (if @onClick \"-clickable\")}}\n        {{on \"click\" (if @onClick @onClick (noop))}}\n        {{onResize this.handleResize}}\n      >\n        <nav class=\"c-navbar\">\n          {{yield\n            (hash\n              BackButton=BackButton\n              ChannelTitle=ChannelTitle\n              Title=Title\n              Actions=Actions\n            )\n          }}\n        </nav>\n      </div>\n      */\n      {\n        \"id\": \"U7zPk2Gi\",\n        \"block\": \"[[[11,0],[16,0,[28,[32,0],[\\\"c-navbar-container\\\",[52,[30,1],\\\"-clickable\\\"]],null]],[4,[32,1],[\\\"click\\\",[52,[30,1],[30,1],[28,[32,2],null,null]]],null],[4,[32,3],[[30,0,[\\\"handleResize\\\"]]],null],[12],[1,\\\"\\\\n  \\\"],[10,\\\"nav\\\"],[14,0,\\\"c-navbar\\\"],[12],[1,\\\"\\\\n    \\\"],[18,2,[[28,[32,4],null,[[\\\"BackButton\\\",\\\"ChannelTitle\\\",\\\"Title\\\",\\\"Actions\\\"],[[32,5],[32,6],[32,7],[32,8]]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@onClick\\\",\\\"&default\\\"],[\\\"if\\\",\\\"yield\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/navbar/index.js\",\n        \"scope\": () => [_concatClass.default, _modifier.on, _noop.default, _onResize.default, _helper.hash, _backButton.default, _channelTitle.default, _title.default, _actions.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatNavbar;\n});","define(\"discourse/plugins/chat/discourse/components/chat/navbar/new-channel-button\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/plugins/chat/discourse/components/chat/modal/create-channel\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _dButton, _createChannel2, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatNavbarNewChannelButton extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    createChannel() {\n      this.modal.show(_createChannel2.default);\n    }\n    static {\n      dt7948.n(this.prototype, \"createChannel\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.currentUser.staff}}\n        <DButton\n          @action={{this.createChannel}}\n          @icon=\"plus\"\n          @label={{if this.site.desktopView \"chat.create_channel.title\"}}\n          class=\"c-navbar__new-channel-button btn-transparent\"\n        />\n      {{/if}}\n      */\n      {\n        \"id\": \"fFyEcRRf\",\n        \"block\": \"[[[41,[30,0,[\\\"currentUser\\\",\\\"staff\\\"]],[[[1,\\\"  \\\"],[8,[32,0],[[24,0,\\\"c-navbar__new-channel-button btn-transparent\\\"]],[[\\\"@action\\\",\\\"@icon\\\",\\\"@label\\\"],[[30,0,[\\\"createChannel\\\"]],\\\"plus\\\",[52,[30,0,[\\\"site\\\",\\\"desktopView\\\"]],\\\"chat.create_channel.title\\\"]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/navbar/new-channel-button.js\",\n        \"scope\": () => [_dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatNavbarNewChannelButton;\n});","define(\"discourse/plugins/chat/discourse/components/chat/navbar/new-direct-message-button\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/service\", \"discourse/components/d-button\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/modal/new-message\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _dButton, _discourseI18n, _newMessage, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatNavbarNewDirectMessageButton extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    buttonLabel = (0, _discourseI18n.i18n)(\"chat.channels_list_popup.browse\");\n    get showButtonComponent() {\n      return this.router.currentRoute.name === \"chat.direct-messages\" && this.canCreateDirectMessageChannel;\n    }\n    get canCreateDirectMessageChannel() {\n      return this.chat.userCanDirectMessage;\n    }\n    openNewMessageModal() {\n      this.modal.show(_newMessage.default);\n    }\n    static {\n      dt7948.n(this.prototype, \"openNewMessageModal\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.showButtonComponent}}\n        <DButton\n          class=\"btn no-text btn-flat c-navbar__new-dm-button\"\n          title={{this.buttonLabel}}\n          @action={{this.openNewMessageModal}}\n          @icon=\"plus\"\n        />\n      {{/if}}\n      */\n      {\n        \"id\": \"8Mtqp3pq\",\n        \"block\": \"[[[41,[30,0,[\\\"showButtonComponent\\\"]],[[[1,\\\"  \\\"],[8,[32,0],[[24,0,\\\"btn no-text btn-flat c-navbar__new-dm-button\\\"],[16,\\\"title\\\",[30,0,[\\\"buttonLabel\\\"]]]],[[\\\"@action\\\",\\\"@icon\\\"],[[30,0,[\\\"openNewMessageModal\\\"]],\\\"plus\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/navbar/new-direct-message-button.js\",\n        \"scope\": () => [_dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatNavbarNewDirectMessageButton;\n});","define(\"discourse/plugins/chat/discourse/components/chat/navbar/open-drawer-button\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/lib/url\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _dButton, _url, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatNavbarOpenDrawerButton extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    async openDrawer() {\n      this.chatStateManager.prefersDrawer();\n      _url.default.routeTo(this.chatStateManager.lastKnownAppURL).then(() => {\n        _url.default.routeTo(this.chatStateManager.lastKnownChatURL);\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"openDrawer\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.site.desktopView}}\n        <DButton\n          @icon=\"discourse-compress\"\n          @title=\"chat.close_full_page\"\n          class=\"c-navbar__open-drawer-button btn-transparent\"\n          @action={{this.openDrawer}}\n        />\n      {{/if}}\n      */\n      {\n        \"id\": \"w/JiFvuC\",\n        \"block\": \"[[[41,[30,0,[\\\"site\\\",\\\"desktopView\\\"]],[[[1,\\\"  \\\"],[8,[32,0],[[24,0,\\\"c-navbar__open-drawer-button btn-transparent\\\"]],[[\\\"@icon\\\",\\\"@title\\\",\\\"@action\\\"],[\\\"discourse-compress\\\",\\\"chat.close_full_page\\\",[30,0,[\\\"openDrawer\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/navbar/open-drawer-button.js\",\n        \"scope\": () => [_dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatNavbarOpenDrawerButton;\n});","define(\"discourse/plugins/chat/discourse/components/chat/navbar/pinned-messages-button\", [\"exports\", \"@glimmer/component\", \"@ember/modifier\", \"@ember/routing\", \"@ember/service\", \"discourse/helpers/d-icon\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _modifier, _routing, _service, _dIcon, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatNavbarPinnedMessagesButton extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    pinnedMessagesLabel = (0, _discourseI18n.i18n)(\"chat.pinned_messages.title\");\n    handleClick = event => {\n      event.stopPropagation();\n    };\n    get showButton() {\n      return this.siteSettings.chat_pinned_messages && this.args.channel?.hasPinnedMessages && this.router.currentRoute?.name !== \"chat.channel.pins\";\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.showButton}}\n        <LinkTo\n          @route=\"chat.channel.pins\"\n          @models={{@channel.routeModels}}\n          title={{this.pinnedMessagesLabel}}\n          class=\"c-navbar__pinned-messages-btn btn no-text btn-transparent\"\n          {{on \"click\" this.handleClick}}\n        >\n          {{icon \"thumbtack\"}}\n          {{#if @channel.hasUnseenPins}}\n            <span class=\"c-navbar__pinned-messages-btn__unread-indicator\"></span>\n          {{/if}}\n        </LinkTo>\n      {{/if}}\n      */\n      {\n        \"id\": \"2BCJhurr\",\n        \"block\": \"[[[41,[30,0,[\\\"showButton\\\"]],[[[1,\\\"  \\\"],[8,[32,0],[[16,\\\"title\\\",[30,0,[\\\"pinnedMessagesLabel\\\"]]],[24,0,\\\"c-navbar__pinned-messages-btn btn no-text btn-transparent\\\"],[4,[32,1],[\\\"click\\\",[30,0,[\\\"handleClick\\\"]]],null]],[[\\\"@route\\\",\\\"@models\\\"],[\\\"chat.channel.pins\\\",[30,1,[\\\"routeModels\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[1,[28,[32,2],[\\\"thumbtack\\\"],null]],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"hasUnseenPins\\\"]],[[[1,\\\"      \\\"],[10,1],[14,0,\\\"c-navbar__pinned-messages-btn__unread-indicator\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@channel\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/navbar/pinned-messages-button.js\",\n        \"scope\": () => [_routing.LinkTo, _modifier.on, _dIcon.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatNavbarPinnedMessagesButton;\n});","define(\"discourse/plugins/chat/discourse/components/chat/navbar/sub-title\", [\"exports\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatNavbarSubTitle = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"c-navbar__sub-title\">\n    {{#if (has-block)}}\n      {{yield}}\n    {{else}}\n      {{@title}}\n    {{/if}}\n  </div>\n  */\n  {\n    \"id\": \"BhNfVnss\",\n    \"block\": \"[[[10,0],[14,0,\\\"c-navbar__sub-title\\\"],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,2]],[[[1,\\\"    \\\"],[18,2,null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[1,[30,1]],[1,\\\"\\\\n\\\"]],[]]],[13]],[\\\"@title\\\",\\\"&default\\\"],[\\\"if\\\",\\\"has-block\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/navbar/sub-title.js\",\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"sub-title:ChatNavbarSubTitle\"));\n  var _default = _exports.default = ChatNavbarSubTitle;\n});","define(\"discourse/plugins/chat/discourse/components/chat/navbar/thread-settings-button\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/plugins/chat/discourse/components/chat/modal/thread-settings\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _dButton, _threadSettings, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatNavbarThreadSettingsButton extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    get canChangeThreadSettings() {\n      if (!this.args.thread?.originalMessage) {\n        return false;\n      }\n      return this.currentUser.staff || this.currentUser.id === this.args.thread.originalMessage.user.id;\n    }\n    openThreadSettings() {\n      this.modal.show(_threadSettings.default, {\n        model: this.args.thread\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"openThreadSettings\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.canChangeThreadSettings}}\n        <DButton\n          @action={{this.openThreadSettings}}\n          @icon=\"gear\"\n          @title=\"chat.thread.settings\"\n          class=\"btn-transparent c-navbar__thread-settings-button\"\n        />\n      {{/if}}\n      */\n      {\n        \"id\": \"vn31s0r7\",\n        \"block\": \"[[[41,[30,0,[\\\"canChangeThreadSettings\\\"]],[[[1,\\\"  \\\"],[8,[32,0],[[24,0,\\\"btn-transparent c-navbar__thread-settings-button\\\"]],[[\\\"@action\\\",\\\"@icon\\\",\\\"@title\\\"],[[30,0,[\\\"openThreadSettings\\\"]],\\\"gear\\\",\\\"chat.thread.settings\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/navbar/thread-settings-button.js\",\n        \"scope\": () => [_dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatNavbarThreadSettingsButton;\n});","define(\"discourse/plugins/chat/discourse/components/chat/navbar/thread-tracking-dropdown\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\", \"discourse/helpers/concat-class\", \"discourse/lib/ajax-error\", \"discourse/lib/notification-levels\", \"discourse/plugins/chat/discourse/components/thread-notifications-tracking\", \"discourse/plugins/chat/discourse/models/user-chat-thread-membership\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _object, _service, _concatClass, _ajaxError, _notificationLevels, _threadNotificationsTracking, _userChatThreadMembership, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatNavbarThreadTrackingDropdown extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"persistedNotificationLevel\", [_tracking.tracked], function () {\n        return true;\n      });\n    }\n    #persistedNotificationLevel = (dt7948.i(this, \"persistedNotificationLevel\"), void 0);\n    get threadNotificationLevel() {\n      return this.membership?.notificationLevel || _notificationLevels.NotificationLevels.REGULAR;\n    }\n    get membership() {\n      return this.args.thread.currentUserMembership;\n    }\n    async updateThreadNotificationLevel(newNotificationLevel) {\n      this.persistedNotificationLevel = false;\n      let currentNotificationLevel;\n      if (this.membership) {\n        currentNotificationLevel = this.membership.notificationLevel;\n        this.membership.notificationLevel = newNotificationLevel;\n      } else {\n        this.args.thread.currentUserMembership = _userChatThreadMembership.default.create({\n          notification_level: newNotificationLevel,\n          last_read_message_id: null\n        });\n      }\n      try {\n        const response = await this.chatApi.updateCurrentUserThreadNotificationsSettings(this.args.thread.channel.id, this.args.thread.id, {\n          notificationLevel: newNotificationLevel\n        });\n        this.membership.last_read_message_id = response.membership.last_read_message_id;\n        this.persistedNotificationLevel = true;\n      } catch (error) {\n        this.membership.notificationLevel = currentNotificationLevel;\n        (0, _ajaxError.popupAjaxError)(error);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"updateThreadNotificationLevel\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <ThreadNotificationsTracking\n        @levelId={{this.threadNotificationLevel}}\n        @onChange={{this.updateThreadNotificationLevel}}\n        class={{concatClass\n          \"c-navbar__thread-tracking-dropdown\"\n          (if this.persistedNotificationLevel \"-persisted\")\n        }}\n      />\n      */\n      {\n        \"id\": \"uDvwdEiL\",\n        \"block\": \"[[[8,[32,0],[[16,0,[28,[32,1],[\\\"c-navbar__thread-tracking-dropdown\\\",[52,[30,0,[\\\"persistedNotificationLevel\\\"]],\\\"-persisted\\\"]],null]]],[[\\\"@levelId\\\",\\\"@onChange\\\"],[[30,0,[\\\"threadNotificationLevel\\\"]],[30,0,[\\\"updateThreadNotificationLevel\\\"]]]],null]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/navbar/thread-tracking-dropdown.js\",\n        \"scope\": () => [_threadNotificationsTracking.default, _concatClass.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatNavbarThreadTrackingDropdown;\n});","define(\"discourse/plugins/chat/discourse/components/chat/navbar/threads-list-button\", [\"exports\", \"@glimmer/component\", \"@ember/routing\", \"@ember/service\", \"discourse/helpers/concat-class\", \"discourse/helpers/d-icon\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/thread/header-unread-indicator\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _routing, _service, _concatClass, _dIcon, _discourseI18n, _headerUnreadIndicator, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatNavbarThreadsListButton extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    threadsListLabel = (0, _discourseI18n.i18n)(\"chat.threads.list\");\n    get showThreadsListButton() {\n      return this.args.channel?.threadingEnabled && this.router.currentRoute.name !== \"chat.channel.threads\" && this.router.currentRoute.name !== \"chat.channel.thread\" && this.router.currentRoute.name !== \"chat.channel.thread.index\";\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.showThreadsListButton}}\n        <LinkTo\n          @route=\"chat.channel.threads\"\n          @models={{@channel.routeModels}}\n          title={{this.threadsListLabel}}\n          class={{concatClass\n            \"c-navbar__threads-list-button\"\n            \"btn\"\n            \"no-text\"\n            \"btn-transparent\"\n            (if @channel.threadsManager.unreadThreadCount \"has-unreads\")\n          }}\n        >\n          {{icon \"discourse-threads\"}}\n          <ThreadHeaderUnreadIndicator @channel={{@channel}} />\n        </LinkTo>\n      {{/if}}\n      */\n      {\n        \"id\": \"5zskoUtU\",\n        \"block\": \"[[[41,[30,0,[\\\"showThreadsListButton\\\"]],[[[1,\\\"  \\\"],[8,[32,0],[[16,\\\"title\\\",[30,0,[\\\"threadsListLabel\\\"]]],[16,0,[28,[32,1],[\\\"c-navbar__threads-list-button\\\",\\\"btn\\\",\\\"no-text\\\",\\\"btn-transparent\\\",[52,[30,1,[\\\"threadsManager\\\",\\\"unreadThreadCount\\\"]],\\\"has-unreads\\\"]],null]]],[[\\\"@route\\\",\\\"@models\\\"],[\\\"chat.channel.threads\\\",[30,1,[\\\"routeModels\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[1,[28,[32,2],[\\\"discourse-threads\\\"],null]],[1,\\\"\\\\n    \\\"],[8,[32,3],null,[[\\\"@channel\\\"],[[30,1]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@channel\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/navbar/threads-list-button.js\",\n        \"scope\": () => [_routing.LinkTo, _concatClass.default, _dIcon.default, _headerUnreadIndicator.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatNavbarThreadsListButton;\n});","define(\"discourse/plugins/chat/discourse/components/chat/navbar/title\", [\"exports\", \"@ember/helper\", \"discourse/helpers/concat-class\", \"discourse/helpers/d-icon\", \"discourse/plugins/chat/discourse/components/chat/navbar/sub-title\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _helper, _concatClass, _dIcon, _subTitle, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatNavbarTitle = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div\n    title={{@title}}\n    class={{concatClass \"c-navbar__title\" (if @showFullTitle \"full-title\")}}\n    ...attributes\n  >\n    <span class=\"c-navbar__title-text\">\n      {{if @icon (icon @icon)}}\n      {{@title}}\n    </span>\n  \n    {{#if (has-block)}}\n      {{yield (hash SubTitle=SubTitle)}}\n    {{/if}}\n  </div>\n  */\n  {\n    \"id\": \"5ol4VWtD\",\n    \"block\": \"[[[11,0],[16,\\\"title\\\",[30,1]],[16,0,[28,[32,0],[\\\"c-navbar__title\\\",[52,[30,2],\\\"full-title\\\"]],null]],[17,3],[12],[1,\\\"\\\\n  \\\"],[10,1],[14,0,\\\"c-navbar__title-text\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[52,[30,4],[28,[32,1],[[30,4]],null]]],[1,\\\"\\\\n    \\\"],[1,[30,1]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[48,[30,5]],[[[1,\\\"    \\\"],[18,5,[[28,[32,2],null,[[\\\"SubTitle\\\"],[[32,3]]]]]],[1,\\\"\\\\n\\\"]],[]],null],[13]],[\\\"@title\\\",\\\"@showFullTitle\\\",\\\"&attrs\\\",\\\"@icon\\\",\\\"&default\\\"],[\\\"if\\\",\\\"has-block\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/navbar/title.js\",\n    \"scope\": () => [_concatClass.default, _dIcon.default, _helper.hash, _subTitle.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"title:ChatNavbarTitle\"));\n  var _default = _exports.default = ChatNavbarTitle;\n});","define(\"discourse/plugins/chat/discourse/components/chat/navbar/toggle-drawer-button\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"discourse/components/d-button\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _dButton, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatNavbarToggleDrawerButton extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <DButton\n        @icon={{if\n          this.chatStateManager.isDrawerExpanded\n          \"angles-down\"\n          \"angles-up\"\n        }}\n        @action={{this.chat.toggleDrawer}}\n        @title={{if\n          this.chatStateManager.isDrawerExpanded\n          \"chat.collapse\"\n          \"chat.expand\"\n        }}\n        class=\"btn-transparent no-text c-navbar__toggle-drawer-button\"\n      />\n      */\n      {\n        \"id\": \"CGSpo2L1\",\n        \"block\": \"[[[8,[32,0],[[24,0,\\\"btn-transparent no-text c-navbar__toggle-drawer-button\\\"]],[[\\\"@icon\\\",\\\"@action\\\",\\\"@title\\\"],[[52,[30,0,[\\\"chatStateManager\\\",\\\"isDrawerExpanded\\\"]],\\\"angles-down\\\",\\\"angles-up\\\"],[30,0,[\\\"chat\\\",\\\"toggleDrawer\\\"]],[52,[30,0,[\\\"chatStateManager\\\",\\\"isDrawerExpanded\\\"]],\\\"chat.collapse\\\",\\\"chat.expand\\\"]]],null]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/navbar/toggle-drawer-button.js\",\n        \"scope\": () => [_dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatNavbarToggleDrawerButton;\n});","define(\"discourse/plugins/chat/discourse/components/chat/notices/mention_without_membership\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/modifier\", \"@ember/object\", \"@ember/service\", \"discourse/helpers/d-icon\", \"discourse/lib/ajax-error\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/modifiers/chat/later-fn\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _modifier, _object, _service, _dIcon, _ajaxError, _discourseI18n, _laterFn, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class MentionWithoutMembership extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [(0, _service.service)(\"chat-api\")]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"invitationsSent\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #invitationsSent = (dt7948.i(this, \"invitationsSent\"), void 0);\n    get userIds() {\n      return this.args.notice.data.user_ids;\n    }\n    async sendInvitations(event) {\n      // preventDefault to avoid a refresh\n      event.preventDefault();\n      try {\n        await this.chatApi.invite(this.args.channel.id, this.userIds, {\n          messageId: this.args.notice.data.messageId\n        });\n        this.invitationsSent = true;\n      } catch (error) {\n        (0, _ajaxError.popupAjaxError)(error);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"sendInvitations\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"mention-without-membership-notice\">\n        {{#if this.invitationsSent}}\n          <span\n            class=\"mention-without-membership-notice__invitation-sent\"\n            {{laterFn @clearNotice 3000}}\n          >\n            {{icon \"check\"}}\n            <span>\n              {{i18n\n                \"chat.mention_warning.invitations_sent\"\n                count=this.userIds.length\n              }}\n            </span>\n          </span>\n        {{else}}\n          <p class=\"mention-without-membership-notice__body -without-membership\">\n            <span\n              class=\"mention-without-membership-notice__body__text\"\n            >{{@notice.data.text}}</span>\n            <a\n              class=\"mention-without-membership-notice__body__link\"\n              href\n              {{on \"click\" this.sendInvitations}}\n            >\n              {{i18n \"chat.mention_warning.invite\"}}\n            </a>\n          </p>\n        {{/if}}\n      </div>\n      */\n      {\n        \"id\": \"jmavlh3n\",\n        \"block\": \"[[[10,0],[14,0,\\\"mention-without-membership-notice\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"invitationsSent\\\"]],[[[1,\\\"    \\\"],[11,1],[24,0,\\\"mention-without-membership-notice__invitation-sent\\\"],[4,[32,0],[[30,1],3000],null],[12],[1,\\\"\\\\n      \\\"],[1,[28,[32,1],[\\\"check\\\"],null]],[1,\\\"\\\\n      \\\"],[10,1],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,2],[\\\"chat.mention_warning.invitations_sent\\\"],[[\\\"count\\\"],[[30,0,[\\\"userIds\\\",\\\"length\\\"]]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,2],[14,0,\\\"mention-without-membership-notice__body -without-membership\\\"],[12],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"mention-without-membership-notice__body__text\\\"],[12],[1,[30,2,[\\\"data\\\",\\\"text\\\"]]],[13],[1,\\\"\\\\n      \\\"],[11,3],[24,0,\\\"mention-without-membership-notice__body__link\\\"],[24,6,\\\"\\\"],[4,[32,3],[\\\"click\\\",[30,0,[\\\"sendInvitations\\\"]]],null],[12],[1,\\\"\\\\n        \\\"],[1,[28,[32,2],[\\\"chat.mention_warning.invite\\\"],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[13]],[\\\"@clearNotice\\\",\\\"@notice\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/notices/mention_without_membership.js\",\n        \"scope\": () => [_laterFn.default, _dIcon.default, _discourseI18n.i18n, _modifier.on],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = MentionWithoutMembership;\n});","define(\"discourse/plugins/chat/discourse/components/chat/pinned-messages-list/header\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"@ember/template\", \"discourse/helpers/replace-emoji\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _template, _replaceEmoji, _discourseI18n, _navbar, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatPinnedMessagesListHeader extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    pinnedMessagesTitle = (0, _discourseI18n.i18n)(\"chat.pinned_messages.title\");\n    get title() {\n      let title = (0, _replaceEmoji.default)(this.pinnedMessagesTitle);\n      if (this.site.mobileView) {\n        title += \" - \" + (0, _replaceEmoji.default)(this.args.channel.escapedTitle);\n      }\n      return (0, _template.trustHTML)(title);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <Navbar as |navbar|>\n        {{#if this.site.mobileView}}\n          <navbar.BackButton\n            @route=\"chat.channel\"\n            @routeModels={{@channel.routeModels}}\n            @title={{i18n \"chat.return_to_channel\"}}\n          />\n        {{/if}}\n      \n        <navbar.Title @title={{this.title}} @icon=\"thumbtack\" />\n      \n        <navbar.Actions as |action|>\n          <action.ClosePinsButton @channel={{@channel}} />\n        </navbar.Actions>\n      </Navbar>\n      */\n      {\n        \"id\": \"UYeL9o+D\",\n        \"block\": \"[[[8,[32,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"site\\\",\\\"mobileView\\\"]],[[[1,\\\"    \\\"],[8,[30,1,[\\\"BackButton\\\"]],null,[[\\\"@route\\\",\\\"@routeModels\\\",\\\"@title\\\"],[\\\"chat.channel\\\",[30,2,[\\\"routeModels\\\"]],[28,[32,1],[\\\"chat.return_to_channel\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[8,[30,1,[\\\"Title\\\"]],null,[[\\\"@title\\\",\\\"@icon\\\"],[[30,0,[\\\"title\\\"]],\\\"thumbtack\\\"]],null],[1,\\\"\\\\n\\\\n  \\\"],[8,[30,1,[\\\"Actions\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[30,3,[\\\"ClosePinsButton\\\"]],null,[[\\\"@channel\\\"],[[30,2]]],null],[1,\\\"\\\\n  \\\"]],[3]]]]],[1,\\\"\\\\n\\\"]],[1]]]]]],[\\\"navbar\\\",\\\"@channel\\\",\\\"action\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/pinned-messages-list/header.js\",\n        \"scope\": () => [_navbar.default, _discourseI18n.i18n],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatPinnedMessagesListHeader;\n});","define(\"discourse/plugins/chat/discourse/components/chat/routes/channel-info-members\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/helper\", \"@ember/modifier\", \"@ember/object\", \"@ember/routing\", \"@ember/service\", \"ember-modifier\", \"discourse/components/d-button\", \"discourse/components/filter-input\", \"discourse/helpers/d-icon\", \"discourse/lib/debounce\", \"discourse/lib/decorators\", \"discourse/lib/environment\", \"discourse/lib/is-element-in-viewport\", \"discourse/lib/url\", \"discourse/modifiers/auto-focus\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/message-creator\", \"discourse/plugins/chat/discourse/components/chat/message-creator/constants\", \"discourse/plugins/chat/discourse/components/chat-user-info\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _helper, _modifier, _object, _routing, _service, _emberModifier, _dButton, _filterInput, _dIcon, _debounce, _decorators, _environment, _isElementInViewport, _url, _autoFocus, _discourseI18n, _messageCreator, _constants, _chatUserInfo, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatRouteChannelInfoMembers extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatGuardian\", [_service.service]);\n    }\n    #chatGuardian = (dt7948.i(this, \"chatGuardian\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"loadingSlider\", [_service.service]);\n    }\n    #loadingSlider = (dt7948.i(this, \"loadingSlider\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"filter\", [_tracking.tracked], function () {\n        return \"\";\n      });\n    }\n    #filter = (dt7948.i(this, \"filter\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"updatedAt\", [_tracking.tracked], function () {\n        return Date.now();\n      });\n    }\n    #updatedAt = (dt7948.i(this, \"updatedAt\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"showAddMembers\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #showAddMembers = (dt7948.i(this, \"showAddMembers\"), void 0);\n    addMemberLabel = (0, _discourseI18n.i18n)(\"chat.members_view.add_member\");\n    filterPlaceholder = (0, _discourseI18n.i18n)(\"chat.members_view.filter_placeholder\");\n    noMembershipsFoundLabel = (0, _discourseI18n.i18n)(\"chat.channel.no_memberships_found\");\n    noMembershipsLabel = (0, _discourseI18n.i18n)(\"chat.channel.no_memberships\");\n    onEnter = (0, _emberModifier.modifier)((element, [callback]) => {\n      const handler = event => {\n        if (event.key !== \"Enter\") {\n          return;\n        }\n        callback(event);\n      };\n      element.addEventListener(\"keydown\", handler);\n      return () => {\n        element.removeEventListener(\"keydown\", handler);\n      };\n    });\n    fill = (0, _emberModifier.modifier)(element => {\n      this.resizeObserver = new ResizeObserver(() => {\n        if ((0, _isElementInViewport.default)(element)) {\n          this.load();\n        }\n      });\n      this.resizeObserver.observe(element);\n      return () => {\n        this.resizeObserver.disconnect();\n      };\n    });\n    loadMore = (0, _emberModifier.modifier)(element => {\n      this.intersectionObserver = new IntersectionObserver(this.load);\n      this.intersectionObserver.observe(element);\n      return () => {\n        this.intersectionObserver.disconnect();\n      };\n    });\n    get noResults() {\n      return this.members.fetchedOnce && !this.members.loading;\n    }\n    get members() {\n      const params = {};\n      if (this.filter?.length) {\n        params.username = this.filter;\n      }\n      this.updatedAt;\n      return this.chatApi.listChannelMemberships(this.args.channel.id, params);\n    }\n    static {\n      dt7948.n(this.prototype, \"members\", [_tracking.cached]);\n    }\n    load() {\n      (0, _debounce.default)(this, this.debouncedLoad, _environment.INPUT_DELAY);\n    }\n    static {\n      dt7948.n(this.prototype, \"load\", [_object.action]);\n    }\n    mutFilter(event) {\n      this.filter = event.target.value;\n      this.load();\n    }\n    static {\n      dt7948.n(this.prototype, \"mutFilter\", [_object.action]);\n    }\n    addMember() {\n      this.showAddMembers = true;\n    }\n    static {\n      dt7948.n(this.prototype, \"addMember\", [_object.action]);\n    }\n    hideAddMember() {\n      this.showAddMembers = false;\n    }\n    static {\n      dt7948.n(this.prototype, \"hideAddMember\", [_object.action]);\n    }\n    openMemberCard(user, event) {\n      event.preventDefault();\n      _url.default.routeTo((0, _url.userPath)(user.username_lower));\n    }\n    static {\n      dt7948.n(this.prototype, \"openMemberCard\", [_object.action]);\n    }\n    async removeMember(user) {\n      await this.chatApi.removeMemberFromChannel(this.args.channel.id, user.id);\n      this.updatedAt = Date.now();\n      this.load();\n    }\n    static {\n      dt7948.n(this.prototype, \"removeMember\", [_object.action]);\n    }\n    canRemoveMember(user) {\n      return this.args.channel.canRemoveMembers && user.id !== this.currentUser.id;\n    }\n    static {\n      dt7948.n(this.prototype, \"canRemoveMember\", [_decorators.bind]);\n    }\n    async debouncedLoad() {\n      this.loadingSlider.transitionStarted();\n      await this.members.load({\n        limit: 20\n      });\n      this.loadingSlider.transitionEnded();\n    }\n    get addMembersMode() {\n      return _constants.MODES.add_members;\n    }\n    get canAddMembers() {\n      if (!this.args.channel.isDirectMessageChannel || !this.chatGuardian.canUseGroupChat()) {\n        return false;\n      }\n      return this.args.channel.chatable.group || !this.args.channel.lastMessage?.message;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"c-routes --channel-info-members\">\n        {{#if this.site.mobileView}}\n          <LinkTo\n            class=\"c-back-button\"\n            @route=\"chat.channel.info.settings\"\n            @model={{@channel}}\n          >\n            {{icon \"chevron-left\"}}\n            {{i18n \"chat.members_view.back_to_settings\"}}\n          </LinkTo>\n        {{/if}}\n        {{#if this.showAddMembers}}\n          <MessageCreator\n            @mode={{this.addMembersMode}}\n            @channel={{@channel}}\n            @onClose={{this.hideAddMember}}\n            @onCancel={{this.hideAddMember}}\n          />\n        {{else}}\n          <div class=\"c-channel-members\">\n            <FilterInput\n              {{autoFocus}}\n              @filterAction={{this.mutFilter}}\n              @icons={{hash right=\"magnifying-glass\"}}\n              @containerClass=\"c-channel-members__filter\"\n              placeholder={{this.filterPlaceholder}}\n            />\n      \n            <ul class=\"c-channel-members__list\" {{this.fill}}>\n              {{#if this.canAddMembers}}\n                <li\n                  class=\"c-channel-members__list-item -add-member\"\n                  role=\"button\"\n                  {{on \"click\" this.addMember}}\n                  {{this.onEnter this.addMember}}\n                  tabindex=\"0\"\n                >\n                  {{icon \"plus\"}}\n                  <span>{{this.addMemberLabel}}</span>\n                </li>\n              {{/if}}\n              {{#each this.members as |membership|}}\n                <li class=\"c-channel-members__list-item -member\" tabindex=\"0\">\n                  <div\n                    class=\"c-channel-members__list-item -user-info\"\n                    role=\"button\"\n                    {{on \"click\" (fn this.openMemberCard membership.user)}}\n                    {{this.onEnter (fn this.openMemberCard membership.user)}}\n                  >\n                    <ChatUserInfo\n                      @user={{membership.user}}\n                      @avatarSize=\"tiny\"\n                      @interactive={{false}}\n                      @showStatus={{true}}\n                      @showStatusDescription={{true}}\n                    />\n                  </div>\n                  {{#if (this.canRemoveMember membership.user)}}\n                    <DButton\n                      @action={{fn this.removeMember membership.user}}\n                      @label=\"chat.channel_info.remove_member\"\n                      class=\"btn-flat -remove-member\"\n                    />\n                  {{/if}}\n                </li>\n              {{else}}\n                {{#if this.noResults}}\n                  <li\n                    class=\"c-channel-members__list-item -no-results alert alert-info\"\n                  >\n                    {{this.noMembershipsFoundLabel}}\n                  </li>\n                {{/if}}\n              {{/each}}\n            </ul>\n      \n            <div {{this.loadMore}}>\n              <br />\n            </div>\n          </div>\n        {{/if}}\n      </div>\n      */\n      {\n        \"id\": \"9ZU9iDVc\",\n        \"block\": \"[[[10,0],[14,0,\\\"c-routes --channel-info-members\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"site\\\",\\\"mobileView\\\"]],[[[1,\\\"    \\\"],[8,[32,0],[[24,0,\\\"c-back-button\\\"]],[[\\\"@route\\\",\\\"@model\\\"],[\\\"chat.channel.info.settings\\\",[30,1]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[1,[28,[32,1],[\\\"chevron-left\\\"],null]],[1,\\\"\\\\n      \\\"],[1,[28,[32,2],[\\\"chat.members_view.back_to_settings\\\"],null]],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"showAddMembers\\\"]],[[[1,\\\"    \\\"],[8,[32,3],null,[[\\\"@mode\\\",\\\"@channel\\\",\\\"@onClose\\\",\\\"@onCancel\\\"],[[30,0,[\\\"addMembersMode\\\"]],[30,1],[30,0,[\\\"hideAddMember\\\"]],[30,0,[\\\"hideAddMember\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"c-channel-members\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[32,4],[[16,\\\"placeholder\\\",[30,0,[\\\"filterPlaceholder\\\"]]],[4,[32,6],null,null]],[[\\\"@filterAction\\\",\\\"@icons\\\",\\\"@containerClass\\\"],[[30,0,[\\\"mutFilter\\\"]],[28,[32,5],null,[[\\\"right\\\"],[\\\"magnifying-glass\\\"]]],\\\"c-channel-members__filter\\\"]],null],[1,\\\"\\\\n\\\\n      \\\"],[11,\\\"ul\\\"],[24,0,\\\"c-channel-members__list\\\"],[4,[30,0,[\\\"fill\\\"]],null,null],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"canAddMembers\\\"]],[[[1,\\\"          \\\"],[11,\\\"li\\\"],[24,0,\\\"c-channel-members__list-item -add-member\\\"],[24,\\\"role\\\",\\\"button\\\"],[24,\\\"tabindex\\\",\\\"0\\\"],[4,[32,7],[\\\"click\\\",[30,0,[\\\"addMember\\\"]]],null],[4,[30,0,[\\\"onEnter\\\"]],[[30,0,[\\\"addMember\\\"]]],null],[12],[1,\\\"\\\\n            \\\"],[1,[28,[32,1],[\\\"plus\\\"],null]],[1,\\\"\\\\n            \\\"],[10,1],[12],[1,[30,0,[\\\"addMemberLabel\\\"]]],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[31,2],[[28,[31,2],[[30,0,[\\\"members\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[10,\\\"li\\\"],[14,0,\\\"c-channel-members__list-item -member\\\"],[14,\\\"tabindex\\\",\\\"0\\\"],[12],[1,\\\"\\\\n            \\\"],[11,0],[24,0,\\\"c-channel-members__list-item -user-info\\\"],[24,\\\"role\\\",\\\"button\\\"],[4,[32,7],[\\\"click\\\",[28,[32,8],[[30,0,[\\\"openMemberCard\\\"]],[30,2,[\\\"user\\\"]]],null]],null],[4,[30,0,[\\\"onEnter\\\"]],[[28,[32,8],[[30,0,[\\\"openMemberCard\\\"]],[30,2,[\\\"user\\\"]]],null]],null],[12],[1,\\\"\\\\n              \\\"],[8,[32,9],null,[[\\\"@user\\\",\\\"@avatarSize\\\",\\\"@interactive\\\",\\\"@showStatus\\\",\\\"@showStatusDescription\\\"],[[30,2,[\\\"user\\\"]],\\\"tiny\\\",false,true,true]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[30,0,[\\\"canRemoveMember\\\"]],[[30,2,[\\\"user\\\"]]],null],[[[1,\\\"              \\\"],[8,[32,10],[[24,0,\\\"btn-flat -remove-member\\\"]],[[\\\"@action\\\",\\\"@label\\\"],[[28,[32,8],[[30,0,[\\\"removeMember\\\"]],[30,2,[\\\"user\\\"]]],null],\\\"chat.channel_info.remove_member\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],[[[41,[30,0,[\\\"noResults\\\"]],[[[1,\\\"            \\\"],[10,\\\"li\\\"],[14,0,\\\"c-channel-members__list-item -no-results alert alert-info\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[30,0,[\\\"noMembershipsFoundLabel\\\"]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[11,0],[4,[30,0,[\\\"loadMore\\\"]],null,null],[12],[1,\\\"\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[13]],[\\\"@channel\\\",\\\"membership\\\"],[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/routes/channel-info-members.js\",\n        \"scope\": () => [_routing.LinkTo, _dIcon.default, _discourseI18n.i18n, _messageCreator.default, _filterInput.default, _helper.hash, _autoFocus.default, _modifier.on, _helper.fn, _chatUserInfo.default, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatRouteChannelInfoMembers;\n});","define(\"discourse/plugins/chat/discourse/components/chat/routes/channel-info-nav\", [\"exports\", \"@glimmer/component\", \"@ember/routing\", \"@ember/service\", \"discourse/truth-helpers\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _routing, _service, _truthHelpers, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatRoutesChannelInfoNav extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    get showTabs() {\n      return this.site.desktopView && this.args.channel.isOpen;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"c-routes --channel-info-nav\">\n        {{#if this.showTabs}}\n          <nav class=\"c-channel-info__nav\">\n            <ul class=\"nav nav-pills\">\n              <li>\n                <LinkTo\n                  @route=\"chat.channel.info.settings\"\n                  @models={{@channel.routeModels}}\n                  class={{if (eq @tab \"settings\") \"active\"}}\n                  @replace={{true}}\n                >\n                  {{i18n \"chat.channel_info.tabs.settings\"}}\n                </LinkTo>\n              </li>\n              <li>\n                <LinkTo\n                  @route=\"chat.channel.info.members\"\n                  @models={{@channel.routeModels}}\n                  class={{if (eq @tab \"members\") \"active\"}}\n                  @replace={{true}}\n                >\n                  {{i18n \"chat.channel_info.tabs.members\"}}\n                  {{#if @channel.isCategoryChannel}}\n                    <span\n                      class=\"c-channel-info__member-count\"\n                    >({{@channel.membershipsCount}})</span>\n                  {{/if}}\n                </LinkTo>\n              </li>\n            </ul>\n          </nav>\n        {{/if}}\n      </div>\n      */\n      {\n        \"id\": \"5XASqR8G\",\n        \"block\": \"[[[10,0],[14,0,\\\"c-routes --channel-info-nav\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showTabs\\\"]],[[[1,\\\"    \\\"],[10,\\\"nav\\\"],[14,0,\\\"c-channel-info__nav\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"ul\\\"],[14,0,\\\"nav nav-pills\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[32,0],[[16,0,[52,[28,[32,1],[[30,1],\\\"settings\\\"],null],\\\"active\\\"]]],[[\\\"@route\\\",\\\"@models\\\",\\\"@replace\\\"],[\\\"chat.channel.info.settings\\\",[30,2,[\\\"routeModels\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[1,[28,[32,2],[\\\"chat.channel_info.tabs.settings\\\"],null]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[32,0],[[16,0,[52,[28,[32,1],[[30,1],\\\"members\\\"],null],\\\"active\\\"]]],[[\\\"@route\\\",\\\"@models\\\",\\\"@replace\\\"],[\\\"chat.channel.info.members\\\",[30,2,[\\\"routeModels\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[1,[28,[32,2],[\\\"chat.channel_info.tabs.members\\\"],null]],[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"isCategoryChannel\\\"]],[[[1,\\\"              \\\"],[10,1],[14,0,\\\"c-channel-info__member-count\\\"],[12],[1,\\\"(\\\"],[1,[30,2,[\\\"membershipsCount\\\"]]],[1,\\\")\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[13]],[\\\"@tab\\\",\\\"@channel\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/routes/channel-info-nav.js\",\n        \"scope\": () => [_routing.LinkTo, _truthHelpers.eq, _discourseI18n.i18n],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatRoutesChannelInfoNav;\n});","define(\"discourse/plugins/chat/discourse/components/chat/routes/channel-info-settings\", [\"exports\", \"@glimmer/component\", \"@ember/helper\", \"@ember/modifier\", \"@ember/object\", \"@ember/routing\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/components/d-toggle-switch\", \"discourse/float-kit/components/d-tooltip\", \"discourse/helpers/category-badge\", \"discourse/helpers/d-icon\", \"discourse/helpers/replace-emoji\", \"discourse/lib/ajax-error\", \"discourse/select-kit/components/combo-box\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/form\", \"discourse/plugins/chat/discourse/components/chat/modal/archive-channel\", \"discourse/plugins/chat/discourse/components/chat/modal/delete-channel\", \"discourse/plugins/chat/discourse/components/chat/modal/edit-channel-description\", \"discourse/plugins/chat/discourse/components/chat/modal/edit-channel-name\", \"discourse/plugins/chat/discourse/components/chat/modal/toggle-channel-status\", \"discourse/plugins/chat/discourse/components/chat-retention-reminder-text\", \"discourse/plugins/chat/discourse/components/toggle-channel-membership-button\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _helper, _modifier, _object, _routing, _service, _dButton, _dToggleSwitch, _dTooltip, _categoryBadge, _dIcon, _replaceEmoji, _ajaxError, _comboBox, _discourseI18n, _form, _archiveChannel, _deleteChannel, _editChannelDescription, _editChannelName, _toggleChannelStatus, _chatRetentionReminderText, _toggleChannelMembershipButton, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const NOTIFICATION_LEVELS = [{\n    name: (0, _discourseI18n.i18n)(\"chat.notification_levels.never\"),\n    value: \"never\"\n  }, {\n    name: (0, _discourseI18n.i18n)(\"chat.notification_levels.mention\"),\n    value: \"mention\"\n  }, {\n    name: (0, _discourseI18n.i18n)(\"chat.notification_levels.always\"),\n    value: \"always\"\n  }];\n  class ChatRouteChannelInfoSettings extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatGuardian\", [_service.service]);\n    }\n    #chatGuardian = (dt7948.i(this, \"chatGuardian\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"dialog\", [_service.service]);\n    }\n    #dialog = (dt7948.i(this, \"dialog\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"toasts\", [_service.service]);\n    }\n    #toasts = (dt7948.i(this, \"toasts\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    notificationLevels = NOTIFICATION_LEVELS;\n    settingsSectionTitle = (0, _discourseI18n.i18n)(\"chat.settings.settings_title\");\n    channelInfoSectionTitle = (0, _discourseI18n.i18n)(\"chat.settings.info_title\");\n    categoryLabel = (0, _discourseI18n.i18n)(\"chat.settings.category_label\");\n    historyLabel = (0, _discourseI18n.i18n)(\"chat.settings.history_label\");\n    adminSectionTitle = (0, _discourseI18n.i18n)(\"chat.settings.admin_title\");\n    membersLabel = (0, _discourseI18n.i18n)(\"chat.channel_info.tabs.members\");\n    descriptionSectionTitle = (0, _discourseI18n.i18n)(\"chat.about_view.description\");\n    titleSectionTitle = (0, _discourseI18n.i18n)(\"chat.about_view.title\");\n    descriptionPlaceholder = (0, _discourseI18n.i18n)(\"chat.channel_edit_description_modal.description\");\n    toggleThreadingLabel = (0, _discourseI18n.i18n)(\"chat.settings.channel_threading_label\");\n    toggleThreadingDescription = (0, _discourseI18n.i18n)(\"chat.settings.channel_threading_description\");\n    muteSectionLabel = (0, _discourseI18n.i18n)(\"chat.settings.mute\");\n    channelWideMentionsLabel = (0, _discourseI18n.i18n)(\"chat.settings.channel_wide_mentions_label\");\n    autoJoinLabel = (0, _discourseI18n.i18n)(\"chat.settings.auto_join_users_label\");\n    notificationsLevelLabel = (0, _discourseI18n.i18n)(\"chat.settings.notification_level\");\n    get canEditChannel() {\n      if (this.args.channel.isCategoryChannel && this.chatGuardian.canEditChatChannel()) {\n        return true;\n      }\n      if (this.args.channel.isDirectMessageChannel && this.args.channel.chatable.group) {\n        return true;\n      }\n      return false;\n    }\n    get shouldRenderDescriptionSection() {\n      return this.args.channel.isCategoryChannel;\n    }\n    get shouldRenderStatusSection() {\n      return this.args.channel.isCategoryChannel;\n    }\n    get shouldRenderArchiveRow() {\n      return this.chatGuardian.canArchiveChannel(this.args.channel);\n    }\n    get canToggleChannelState() {\n      return this.args.channel.isClosed;\n    }\n    get openChannelDisabledReason() {\n      if (this.args.channel.isArchived) {\n        return (0, _discourseI18n.i18n)(\"chat.channel_settings.open_channel_disabled_archived\");\n      }\n      return (0, _discourseI18n.i18n)(\"chat.channel_settings.open_channel_disabled_read_only\");\n    }\n    get toggleChannelWideMentionsAvailable() {\n      return this.args.channel.isCategoryChannel && this.args.channel.isOpen;\n    }\n    get toggleThreadingCategoryChannel() {\n      return this.args.channel.isCategoryChannel && this.args.channel.isOpen;\n    }\n    get toggleThreadingDirectMessage() {\n      return this.args.channel.isDirectMessageChannel && this.args.channel.isOpen;\n    }\n    get channelWideMentionsDescription() {\n      return (0, _discourseI18n.i18n)(\"chat.settings.channel_wide_mentions_description\", {\n        channel: this.args.channel.title\n      });\n    }\n    get isChannelMuted() {\n      return this.args.channel.currentUserMembership.muted;\n    }\n    get shouldRenderMuteSection() {\n      return this.args.channel.currentUserMembership.following;\n    }\n    get shouldRenderChannelWideMentionsAvailable() {\n      return this.args.channel.isCategoryChannel;\n    }\n    get shouldRenderNotificationsLevelSection() {\n      return this.args.channel.currentUserMembership.following && !this.isChannelMuted;\n    }\n    get autoJoinAvailable() {\n      return this.siteSettings.max_chat_auto_joined_users > 0 && this.args.channel.isCategoryChannel && this.args.channel.isOpen;\n    }\n    get shouldRenderSettingsSection() {\n      return this.args.channel.isOpen && (this.shouldRenderMuteSection || this.shouldRenderNotificationsLevelSection || this.toggleThreadingDirectMessage);\n    }\n    get shouldRenderAdminSection() {\n      return this.canEditChannel && (this.toggleChannelWideMentionsAvailable || this.args.channel.isCategoryChannel);\n    }\n    async onToggleChannelWideMentions() {\n      const newValue = !this.args.channel.allowChannelWideMentions;\n      if (this.args.channel.allowChannelWideMentions === newValue) {\n        return;\n      }\n      try {\n        this.args.channel.allowChannelWideMentions = newValue;\n        const result = await this._updateChannelProperty(this.args.channel, \"allow_channel_wide_mentions\", newValue);\n        this.args.channel.allowChannelWideMentions = result.channel.allow_channel_wide_mentions;\n      } catch (error) {\n        (0, _ajaxError.popupAjaxError)(error);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"onToggleChannelWideMentions\", [_object.action]);\n    }\n    async onToggleAutoJoinUsers() {\n      if (this.args.channel.autoJoinUsers) {\n        return await this.onDisableAutoJoinUsers();\n      }\n      return await this.onEnableAutoJoinUsers();\n    }\n    static {\n      dt7948.n(this.prototype, \"onToggleAutoJoinUsers\", [_object.action]);\n    }\n    async onDisableAutoJoinUsers() {\n      if (this.args.channel.autoJoinUsers === false) {\n        return;\n      }\n      try {\n        this.args.channel.autoJoinUsers = false;\n        const result = await this._updateChannelProperty(this.args.channel, \"auto_join_users\", false);\n        this.args.channel.autoJoinUsers = result.channel.auto_join_users;\n      } catch (error) {\n        (0, _ajaxError.popupAjaxError)(error);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"onDisableAutoJoinUsers\", [_object.action]);\n    }\n    onEnableAutoJoinUsers() {\n      if (this.args.channel.autoJoinUsers === true) {\n        return;\n      }\n      return this.dialog.confirm({\n        message: (0, _discourseI18n.i18n)(\"chat.settings.auto_join_users_warning\", {\n          category: this.args.channel.chatable.name\n        }),\n        didConfirm: async () => {\n          try {\n            const result = await this._updateChannelProperty(this.args.channel, \"auto_join_users\", true);\n            this.args.channel.autoJoinUsers = result.channel.auto_join_users;\n          } catch (error) {\n            (0, _ajaxError.popupAjaxError)(error);\n          }\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"onEnableAutoJoinUsers\", [_object.action]);\n    }\n    onToggleMuted() {\n      const newValue = !this.args.channel.currentUserMembership.muted;\n      this.saveNotificationSettings(\"muted\", \"muted\", newValue);\n    }\n    static {\n      dt7948.n(this.prototype, \"onToggleMuted\", [_object.action]);\n    }\n    async saveNotificationSettings(frontendKey, backendKey, newValue) {\n      if (this.args.channel.currentUserMembership[frontendKey] === newValue) {\n        return;\n      }\n      this.args.channel.currentUserMembership[frontendKey] = newValue;\n      const settings = {};\n      settings[backendKey] = newValue;\n      try {\n        const result = await this.chatApi.updateCurrentUserChannelNotificationsSettings(this.args.channel.id, settings);\n        this.args.channel.currentUserMembership[frontendKey] = result.membership[backendKey];\n        this.toasts.success({\n          data: {\n            message: (0, _discourseI18n.i18n)(\"saved\")\n          }\n        });\n      } catch (error) {\n        (0, _ajaxError.popupAjaxError)(error);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"saveNotificationSettings\", [_object.action]);\n    }\n    async _updateChannelProperty(channel, property, value) {\n      try {\n        const result = await this.chatApi.updateChannel(channel.id, {\n          [property]: value\n        });\n        this.toasts.success({\n          data: {\n            message: (0, _discourseI18n.i18n)(\"saved\")\n          }\n        });\n        return result;\n      } catch (error) {\n        (0, _ajaxError.popupAjaxError)(error);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"_updateChannelProperty\", [_object.action]);\n    }\n    async onToggleThreadingEnabled(value) {\n      try {\n        this.args.channel.threadingEnabled = !value;\n        const result = await this._updateChannelProperty(this.args.channel, \"threading_enabled\", !value);\n        this.args.channel.threadingEnabled = result.channel.threading_enabled;\n      } catch (error) {\n        (0, _ajaxError.popupAjaxError)(error);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"onToggleThreadingEnabled\", [_object.action]);\n    }\n    onToggleChannelState() {\n      return this.modal.show(_toggleChannelStatus.default, {\n        model: this.args.channel\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"onToggleChannelState\", [_object.action]);\n    }\n    onArchiveChannel() {\n      return this.modal.show(_archiveChannel.default, {\n        model: {\n          channel: this.args.channel\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"onArchiveChannel\", [_object.action]);\n    }\n    onDeleteChannel() {\n      return this.modal.show(_deleteChannel.default, {\n        model: {\n          channel: this.args.channel\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"onDeleteChannel\", [_object.action]);\n    }\n    onEditChannelTitle() {\n      return this.modal.show(_editChannelName.default, {\n        model: this.args.channel\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"onEditChannelTitle\", [_object.action]);\n    }\n    onLeaveChannel(channel) {\n      this.chatChannelsManager.remove(channel);\n      return this.router.transitionTo(\"chat\");\n    }\n    static {\n      dt7948.n(this.prototype, \"onLeaveChannel\", [_object.action]);\n    }\n    onEditChannelDescription() {\n      return this.modal.show(_editChannelDescription.default, {\n        model: this.args.channel\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"onEditChannelDescription\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"c-routes --channel-info-settings\">\n        <div class=\"c-channel-settings\">\n          <ChatForm as |form|>\n            <form.section @title={{this.titleSectionTitle}} as |section|>\n              <section.row>\n                <:default>\n                  <div class=\"c-channel-settings__name\">\n                    {{replaceEmoji @channel.title}}\n                  </div>\n      \n                  {{#if @channel.isCategoryChannel}}\n                    <div class=\"c-channel-settings__slug\">\n                      <LinkTo\n                        @route=\"chat.channel\"\n                        @models={{@channel.routeModels}}\n                      >\n                        /chat/c/{{@channel.slug}}/{{@channel.id}}\n                      </LinkTo>\n                    </div>\n                  {{/if}}\n                </:default>\n      \n                <:action>\n                  {{#if this.canEditChannel}}\n                    <DButton\n                      @label=\"chat.channel_settings.edit\"\n                      @action={{this.onEditChannelTitle}}\n                      class=\"edit-name-slug-btn btn-flat\"\n                    />\n                  {{/if}}\n                </:action>\n      \n              </section.row>\n            </form.section>\n      \n            {{#if this.shouldRenderDescriptionSection}}\n              <form.section @title={{this.descriptionSectionTitle}} as |section|>\n                <section.row>\n                  <:default>\n                    {{#if @channel.description.length}}\n                      {{@channel.description}}\n                    {{else}}\n                      {{this.descriptionPlaceholder}}\n                    {{/if}}\n                  </:default>\n      \n                  <:action>\n                    {{#if this.canEditChannel}}\n                      <DButton\n                        @label={{if\n                          @channel.description.length\n                          \"chat.channel_settings.edit\"\n                          \"chat.channel_settings.add\"\n                        }}\n                        @action={{this.onEditChannelDescription}}\n                        class=\"edit-description-btn btn-flat\"\n                      />\n                    {{/if}}\n                  </:action>\n                </section.row>\n              </form.section>\n            {{/if}}\n      \n            {{#if this.site.mobileView}}\n              <form.section as |section|>\n                <section.row\n                  @label={{this.membersLabel}}\n                  @route=\"chat.channel.info.members\"\n                  @routeModels={{@channel.routeModels}}\n                />\n              </form.section>\n            {{/if}}\n      \n            {{#if this.shouldRenderSettingsSection}}\n              <form.section @title={{this.settingsSectionTitle}} as |section|>\n                {{#if this.shouldRenderMuteSection}}\n                  <section.row @label={{this.muteSectionLabel}}>\n                    <:action>\n                      <DToggleSwitch\n                        @state={{@channel.currentUserMembership.muted}}\n                        class=\"c-channel-settings__mute-switch\"\n                        {{on \"click\" this.onToggleMuted}}\n                      />\n                    </:action>\n                  </section.row>\n                {{/if}}\n      \n                {{#if this.shouldRenderNotificationsLevelSection}}\n                  <section.row @label={{this.notificationsLevelLabel}}>\n                    <:action>\n                      <ComboBox\n                        @content={{this.notificationLevels}}\n                        @value={{@channel.currentUserMembership.notificationLevel}}\n                        @valueProperty=\"value\"\n                        @onChange={{fn\n                          this.saveNotificationSettings\n                          \"notificationLevel\"\n                          \"notification_level\"\n                        }}\n                        class=\"c-channel-settings__selector c-channel-settings__notifications-selector\"\n                      />\n                    </:action>\n                  </section.row>\n                {{/if}}\n      \n                {{#if this.toggleThreadingDirectMessage}}\n                  <section.row @label={{this.toggleThreadingLabel}}>\n                    <:action>\n                      <DToggleSwitch\n                        @state={{@channel.threadingEnabled}}\n                        class=\"c-channel-settings__threading-switch\"\n                        {{on\n                          \"click\"\n                          (fn\n                            this.onToggleThreadingEnabled\n                            @channel.threadingEnabled\n                          )\n                        }}\n                      />\n                    </:action>\n      \n                    <:description>\n                      {{this.toggleThreadingDescription}}\n                    </:description>\n                  </section.row>\n                {{/if}}\n              </form.section>\n            {{/if}}\n      \n            <form.section @title={{this.channelInfoSectionTitle}} as |section|>\n              {{#if @channel.isCategoryChannel}}\n                <section.row @label={{this.categoryLabel}}>\n                  {{categoryBadge\n                    @channel.chatable\n                    link=true\n                    allowUncategorized=true\n                  }}\n                </section.row>\n              {{/if}}\n      \n              <section.row @label={{this.historyLabel}}>\n                <ChatRetentionReminderText @channel={{@channel}} @type=\"short\" />\n              </section.row>\n            </form.section>\n      \n            {{#if this.shouldRenderAdminSection}}\n              <form.section\n                @title={{this.adminSectionTitle}}\n                data-section=\"admin\"\n                as |section|\n              >\n                {{#if this.autoJoinAvailable}}\n                  <section.row @label={{this.autoJoinLabel}}>\n                    <:action>\n                      <DToggleSwitch\n                        @state={{@channel.autoJoinUsers}}\n                        class=\"c-channel-settings__auto-join-switch\"\n                        {{on\n                          \"click\"\n                          (fn this.onToggleAutoJoinUsers @channel.autoJoinUsers)\n                        }}\n                      />\n                    </:action>\n                  </section.row>\n                {{/if}}\n      \n                {{#if this.toggleChannelWideMentionsAvailable}}\n                  <section.row @label={{this.channelWideMentionsLabel}}>\n                    <:action>\n                      <DToggleSwitch\n                        class=\"c-channel-settings__channel-wide-mentions\"\n                        @state={{@channel.allowChannelWideMentions}}\n                        {{on\n                          \"click\"\n                          (fn\n                            this.onToggleChannelWideMentions\n                            @channel.allowChannelWideMentions\n                          )\n                        }}\n                      />\n                    </:action>\n      \n                    <:description>\n                      {{this.channelWideMentionsDescription}}\n                    </:description>\n                  </section.row>\n                {{/if}}\n      \n                {{#if this.toggleThreadingCategoryChannel}}\n                  <section.row @label={{this.toggleThreadingLabel}}>\n                    <:action>\n                      <DToggleSwitch\n                        @state={{@channel.threadingEnabled}}\n                        class=\"c-channel-settings__threading-switch\"\n                        {{on\n                          \"click\"\n                          (fn\n                            this.onToggleThreadingEnabled\n                            @channel.threadingEnabled\n                          )\n                        }}\n                      />\n                    </:action>\n      \n                    <:description>\n                      {{this.toggleThreadingDescription}}\n                    </:description>\n                  </section.row>\n                {{/if}}\n      \n                {{#if this.shouldRenderStatusSection}}\n                  {{#if this.shouldRenderArchiveRow}}\n                    <section.row>\n                      <:action>\n                        <DButton\n                          @action={{this.onArchiveChannel}}\n                          @label=\"chat.channel_settings.archive_channel\"\n                          @icon=\"box-archive\"\n                          class=\"archive-btn chat-form__btn btn-transparent\"\n                        />\n                      </:action>\n                    </section.row>\n                  {{/if}}\n      \n                  <section.row>\n                    <:action>\n                      {{#if @channel.isOpen}}\n                        <DButton\n                          @action={{this.onToggleChannelState}}\n                          @label=\"chat.channel_settings.close_channel\"\n                          @icon=\"lock\"\n                          class=\"close-btn chat-form__btn btn-transparent\"\n                        />\n                      {{else if this.canToggleChannelState}}\n                        <DButton\n                          @action={{this.onToggleChannelState}}\n                          @label=\"chat.channel_settings.open_channel\"\n                          @icon=\"unlock\"\n                          class=\"open-btn chat-form__btn btn-transparent\"\n                        />\n                      {{else}}\n                        <DTooltip\n                          @identifier=\"channel-open-disabled\"\n                          @placement=\"left\"\n                        >\n                          <:trigger>\n                            <DButton\n                              @label=\"chat.channel_settings.open_channel\"\n                              @icon=\"unlock\"\n                              @disabled={{true}}\n                              class=\"open-btn chat-form__btn btn-transparent\"\n                            />\n                          </:trigger>\n                          <:content>\n                            {{this.openChannelDisabledReason}}\n                          </:content>\n                        </DTooltip>\n                      {{/if}}\n                    </:action>\n                  </section.row>\n      \n                  <section.row>\n                    <:action>\n                      <DButton\n                        @action={{this.onDeleteChannel}}\n                        @label=\"chat.channel_settings.delete_channel\"\n                        @icon=\"trash-can\"\n                        class=\"delete-btn chat-form__btn btn-transparent\"\n                      />\n                    </:action>\n                  </section.row>\n                {{/if}}\n      \n              </form.section>\n            {{/if}}\n      \n            <form.section class=\"--leave-channel\" as |section|>\n              {{#if @channel.chatable.group}}\n                <div class=\"c-channel-settings__leave-info\">\n                  {{icon \"triangle-exclamation\"}}\n                  {{i18n \"chat.channel_settings.leave_groupchat_info\"}}\n                </div>\n              {{/if}}\n              <section.row>\n                <:action>\n                  <ToggleChannelMembershipButton\n                    @channel={{@channel}}\n                    @onLeave={{this.onLeaveChannel}}\n                    @options={{hash\n                      joinClass=\"btn-primary\"\n                      leaveClass=\"btn-danger\"\n                      joinIcon=\"right-to-bracket\"\n                      leaveIcon=\"right-from-bracket\"\n                      leaveDestructive=true\n                    }}\n                  />\n                </:action>\n              </section.row>\n            </form.section>\n          </ChatForm>\n        </div>\n      </div>\n      */\n      {\n        \"id\": \"Oj6705UZ\",\n        \"block\": \"[[[10,0],[14,0,\\\"c-routes --channel-info-settings\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"c-channel-settings\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[32,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,1,[\\\"section\\\"]],null,[[\\\"@title\\\"],[[30,0,[\\\"titleSectionTitle\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[30,2,[\\\"row\\\"]],null,null,[[\\\"default\\\",\\\"action\\\"],[[[[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"c-channel-settings__name\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[28,[32,1],[[30,3,[\\\"title\\\"]]],null]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,3,[\\\"isCategoryChannel\\\"]],[[[1,\\\"              \\\"],[10,0],[14,0,\\\"c-channel-settings__slug\\\"],[12],[1,\\\"\\\\n                \\\"],[8,[32,2],null,[[\\\"@route\\\",\\\"@models\\\"],[\\\"chat.channel\\\",[30,3,[\\\"routeModels\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  /chat/c/\\\"],[1,[30,3,[\\\"slug\\\"]]],[1,\\\"/\\\"],[1,[30,3,[\\\"id\\\"]]],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"]],[]],[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"canEditChannel\\\"]],[[[1,\\\"              \\\"],[8,[32,3],[[24,0,\\\"edit-name-slug-btn btn-flat\\\"]],[[\\\"@label\\\",\\\"@action\\\"],[\\\"chat.channel_settings.edit\\\",[30,0,[\\\"onEditChannelTitle\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"]],[]]]]],[1,\\\"\\\\n      \\\"]],[2]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"shouldRenderDescriptionSection\\\"]],[[[1,\\\"        \\\"],[8,[30,1,[\\\"section\\\"]],null,[[\\\"@title\\\"],[[30,0,[\\\"descriptionSectionTitle\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[30,4,[\\\"row\\\"]],null,null,[[\\\"default\\\",\\\"action\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"description\\\",\\\"length\\\"]],[[[1,\\\"                \\\"],[1,[30,3,[\\\"description\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                \\\"],[1,[30,0,[\\\"descriptionPlaceholder\\\"]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"            \\\"]],[]],[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"canEditChannel\\\"]],[[[1,\\\"                \\\"],[8,[32,3],[[24,0,\\\"edit-description-btn btn-flat\\\"]],[[\\\"@label\\\",\\\"@action\\\"],[[52,[30,3,[\\\"description\\\",\\\"length\\\"]],\\\"chat.channel_settings.edit\\\",\\\"chat.channel_settings.add\\\"],[30,0,[\\\"onEditChannelDescription\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"]],[]]]]],[1,\\\"\\\\n        \\\"]],[4]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"site\\\",\\\"mobileView\\\"]],[[[1,\\\"        \\\"],[8,[30,1,[\\\"section\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[30,5,[\\\"row\\\"]],null,[[\\\"@label\\\",\\\"@route\\\",\\\"@routeModels\\\"],[[30,0,[\\\"membersLabel\\\"]],\\\"chat.channel.info.members\\\",[30,3,[\\\"routeModels\\\"]]]],null],[1,\\\"\\\\n        \\\"]],[5]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"shouldRenderSettingsSection\\\"]],[[[1,\\\"        \\\"],[8,[30,1,[\\\"section\\\"]],null,[[\\\"@title\\\"],[[30,0,[\\\"settingsSectionTitle\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"shouldRenderMuteSection\\\"]],[[[1,\\\"            \\\"],[8,[30,6,[\\\"row\\\"]],null,[[\\\"@label\\\"],[[30,0,[\\\"muteSectionLabel\\\"]]]],[[\\\"action\\\"],[[[[1,\\\"\\\\n                \\\"],[8,[32,4],[[24,0,\\\"c-channel-settings__mute-switch\\\"],[4,[32,5],[\\\"click\\\",[30,0,[\\\"onToggleMuted\\\"]]],null]],[[\\\"@state\\\"],[[30,3,[\\\"currentUserMembership\\\",\\\"muted\\\"]]]],null],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"shouldRenderNotificationsLevelSection\\\"]],[[[1,\\\"            \\\"],[8,[30,6,[\\\"row\\\"]],null,[[\\\"@label\\\"],[[30,0,[\\\"notificationsLevelLabel\\\"]]]],[[\\\"action\\\"],[[[[1,\\\"\\\\n                \\\"],[8,[32,6],[[24,0,\\\"c-channel-settings__selector c-channel-settings__notifications-selector\\\"]],[[\\\"@content\\\",\\\"@value\\\",\\\"@valueProperty\\\",\\\"@onChange\\\"],[[30,0,[\\\"notificationLevels\\\"]],[30,3,[\\\"currentUserMembership\\\",\\\"notificationLevel\\\"]],\\\"value\\\",[28,[32,7],[[30,0,[\\\"saveNotificationSettings\\\"]],\\\"notificationLevel\\\",\\\"notification_level\\\"],null]]],null],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"toggleThreadingDirectMessage\\\"]],[[[1,\\\"            \\\"],[8,[30,6,[\\\"row\\\"]],null,[[\\\"@label\\\"],[[30,0,[\\\"toggleThreadingLabel\\\"]]]],[[\\\"action\\\",\\\"description\\\"],[[[[1,\\\"\\\\n                \\\"],[8,[32,4],[[24,0,\\\"c-channel-settings__threading-switch\\\"],[4,[32,5],[\\\"click\\\",[28,[32,7],[[30,0,[\\\"onToggleThreadingEnabled\\\"]],[30,3,[\\\"threadingEnabled\\\"]]],null]],null]],[[\\\"@state\\\"],[[30,3,[\\\"threadingEnabled\\\"]]]],null],[1,\\\"\\\\n              \\\"]],[]],[[[1,\\\"\\\\n                \\\"],[1,[30,0,[\\\"toggleThreadingDescription\\\"]]],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"]],[6]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n      \\\"],[8,[30,1,[\\\"section\\\"]],null,[[\\\"@title\\\"],[[30,0,[\\\"channelInfoSectionTitle\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"isCategoryChannel\\\"]],[[[1,\\\"          \\\"],[8,[30,7,[\\\"row\\\"]],null,[[\\\"@label\\\"],[[30,0,[\\\"categoryLabel\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[1,[28,[32,8],[[30,3,[\\\"chatable\\\"]]],[[\\\"link\\\",\\\"allowUncategorized\\\"],[true,true]]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n        \\\"],[8,[30,7,[\\\"row\\\"]],null,[[\\\"@label\\\"],[[30,0,[\\\"historyLabel\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[32,9],null,[[\\\"@channel\\\",\\\"@type\\\"],[[30,3],\\\"short\\\"]],null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"]],[7]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"shouldRenderAdminSection\\\"]],[[[1,\\\"        \\\"],[8,[30,1,[\\\"section\\\"]],[[24,\\\"data-section\\\",\\\"admin\\\"]],[[\\\"@title\\\"],[[30,0,[\\\"adminSectionTitle\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"autoJoinAvailable\\\"]],[[[1,\\\"            \\\"],[8,[30,8,[\\\"row\\\"]],null,[[\\\"@label\\\"],[[30,0,[\\\"autoJoinLabel\\\"]]]],[[\\\"action\\\"],[[[[1,\\\"\\\\n                \\\"],[8,[32,4],[[24,0,\\\"c-channel-settings__auto-join-switch\\\"],[4,[32,5],[\\\"click\\\",[28,[32,7],[[30,0,[\\\"onToggleAutoJoinUsers\\\"]],[30,3,[\\\"autoJoinUsers\\\"]]],null]],null]],[[\\\"@state\\\"],[[30,3,[\\\"autoJoinUsers\\\"]]]],null],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"toggleChannelWideMentionsAvailable\\\"]],[[[1,\\\"            \\\"],[8,[30,8,[\\\"row\\\"]],null,[[\\\"@label\\\"],[[30,0,[\\\"channelWideMentionsLabel\\\"]]]],[[\\\"action\\\",\\\"description\\\"],[[[[1,\\\"\\\\n                \\\"],[8,[32,4],[[24,0,\\\"c-channel-settings__channel-wide-mentions\\\"],[4,[32,5],[\\\"click\\\",[28,[32,7],[[30,0,[\\\"onToggleChannelWideMentions\\\"]],[30,3,[\\\"allowChannelWideMentions\\\"]]],null]],null]],[[\\\"@state\\\"],[[30,3,[\\\"allowChannelWideMentions\\\"]]]],null],[1,\\\"\\\\n              \\\"]],[]],[[[1,\\\"\\\\n                \\\"],[1,[30,0,[\\\"channelWideMentionsDescription\\\"]]],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"toggleThreadingCategoryChannel\\\"]],[[[1,\\\"            \\\"],[8,[30,8,[\\\"row\\\"]],null,[[\\\"@label\\\"],[[30,0,[\\\"toggleThreadingLabel\\\"]]]],[[\\\"action\\\",\\\"description\\\"],[[[[1,\\\"\\\\n                \\\"],[8,[32,4],[[24,0,\\\"c-channel-settings__threading-switch\\\"],[4,[32,5],[\\\"click\\\",[28,[32,7],[[30,0,[\\\"onToggleThreadingEnabled\\\"]],[30,3,[\\\"threadingEnabled\\\"]]],null]],null]],[[\\\"@state\\\"],[[30,3,[\\\"threadingEnabled\\\"]]]],null],[1,\\\"\\\\n              \\\"]],[]],[[[1,\\\"\\\\n                \\\"],[1,[30,0,[\\\"toggleThreadingDescription\\\"]]],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"shouldRenderStatusSection\\\"]],[[[41,[30,0,[\\\"shouldRenderArchiveRow\\\"]],[[[1,\\\"              \\\"],[8,[30,8,[\\\"row\\\"]],null,null,[[\\\"action\\\"],[[[[1,\\\"\\\\n                  \\\"],[8,[32,3],[[24,0,\\\"archive-btn chat-form__btn btn-transparent\\\"]],[[\\\"@action\\\",\\\"@label\\\",\\\"@icon\\\"],[[30,0,[\\\"onArchiveChannel\\\"]],\\\"chat.channel_settings.archive_channel\\\",\\\"box-archive\\\"]],null],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n            \\\"],[8,[30,8,[\\\"row\\\"]],null,null,[[\\\"action\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"isOpen\\\"]],[[[1,\\\"                  \\\"],[8,[32,3],[[24,0,\\\"close-btn chat-form__btn btn-transparent\\\"]],[[\\\"@action\\\",\\\"@label\\\",\\\"@icon\\\"],[[30,0,[\\\"onToggleChannelState\\\"]],\\\"chat.channel_settings.close_channel\\\",\\\"lock\\\"]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"canToggleChannelState\\\"]],[[[1,\\\"                  \\\"],[8,[32,3],[[24,0,\\\"open-btn chat-form__btn btn-transparent\\\"]],[[\\\"@action\\\",\\\"@label\\\",\\\"@icon\\\"],[[30,0,[\\\"onToggleChannelState\\\"]],\\\"chat.channel_settings.open_channel\\\",\\\"unlock\\\"]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                  \\\"],[8,[32,10],null,[[\\\"@identifier\\\",\\\"@placement\\\"],[\\\"channel-open-disabled\\\",\\\"left\\\"]],[[\\\"trigger\\\",\\\"content\\\"],[[[[1,\\\"\\\\n                      \\\"],[8,[32,3],[[24,0,\\\"open-btn chat-form__btn btn-transparent\\\"]],[[\\\"@label\\\",\\\"@icon\\\",\\\"@disabled\\\"],[\\\"chat.channel_settings.open_channel\\\",\\\"unlock\\\",true]],null],[1,\\\"\\\\n                    \\\"]],[]],[[[1,\\\"\\\\n                      \\\"],[1,[30,0,[\\\"openChannelDisabledReason\\\"]]],[1,\\\"\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                \\\"]],[]]]],[]]],[1,\\\"              \\\"]],[]]]]],[1,\\\"\\\\n\\\\n            \\\"],[8,[30,8,[\\\"row\\\"]],null,null,[[\\\"action\\\"],[[[[1,\\\"\\\\n                \\\"],[8,[32,3],[[24,0,\\\"delete-btn chat-form__btn btn-transparent\\\"]],[[\\\"@action\\\",\\\"@label\\\",\\\"@icon\\\"],[[30,0,[\\\"onDeleteChannel\\\"]],\\\"chat.channel_settings.delete_channel\\\",\\\"trash-can\\\"]],null],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n        \\\"]],[8]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n      \\\"],[8,[30,1,[\\\"section\\\"]],[[24,0,\\\"--leave-channel\\\"]],null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"chatable\\\",\\\"group\\\"]],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"c-channel-settings__leave-info\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[28,[32,11],[\\\"triangle-exclamation\\\"],null]],[1,\\\"\\\\n            \\\"],[1,[28,[32,12],[\\\"chat.channel_settings.leave_groupchat_info\\\"],null]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[8,[30,9,[\\\"row\\\"]],null,null,[[\\\"action\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[32,13],null,[[\\\"@channel\\\",\\\"@onLeave\\\",\\\"@options\\\"],[[30,3],[30,0,[\\\"onLeaveChannel\\\"]],[28,[32,14],null,[[\\\"joinClass\\\",\\\"leaveClass\\\",\\\"joinIcon\\\",\\\"leaveIcon\\\",\\\"leaveDestructive\\\"],[\\\"btn-primary\\\",\\\"btn-danger\\\",\\\"right-to-bracket\\\",\\\"right-from-bracket\\\",true]]]]],null],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n      \\\"]],[9]]]]],[1,\\\"\\\\n    \\\"]],[1]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"form\\\",\\\"section\\\",\\\"@channel\\\",\\\"section\\\",\\\"section\\\",\\\"section\\\",\\\"section\\\",\\\"section\\\",\\\"section\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/routes/channel-info-settings.js\",\n        \"scope\": () => [_form.default, _replaceEmoji.default, _routing.LinkTo, _dButton.default, _dToggleSwitch.default, _modifier.on, _comboBox.default, _helper.fn, _categoryBadge.default, _chatRetentionReminderText.default, _dTooltip.default, _dIcon.default, _discourseI18n.i18n, _toggleChannelMembershipButton.default, _helper.hash],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatRouteChannelInfoSettings;\n});","define(\"discourse/plugins/chat/discourse/components/chat/routes/channel-info\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/service\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/modal/edit-channel-name\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"discourse/plugins/chat/discourse/components/chat-channel-status\", \"discourse/plugins/chat/discourse/components/chat/routes/channel-info-nav\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _discourseI18n, _editChannelName, _navbar, _chatChannelStatus, _channelInfoNav, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatRoutesChannelInfo extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatChannelInfoRouteOriginManager\", [_service.service]);\n    }\n    #chatChannelInfoRouteOriginManager = (dt7948.i(this, \"chatChannelInfoRouteOriginManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatGuardian\", [_service.service]);\n    }\n    #chatGuardian = (dt7948.i(this, \"chatGuardian\"), void 0);\n    get canEditChannel() {\n      return this.chatGuardian.canEditChatChannel() && (this.args.channel.isCategoryChannel || this.args.channel.isDirectMessageChannel && this.args.channel.chatable.group);\n    }\n    editChannelTitle() {\n      return this.modal.show(_editChannelName.default, {\n        model: this.args.channel\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"editChannelTitle\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"c-routes --channel-info\">\n        <Navbar as |navbar|>\n          {{#if this.chatChannelInfoRouteOriginManager.isBrowse}}\n            <navbar.BackButton\n              @route=\"chat.browse\"\n              @title={{i18n \"chat.channel_info.back_to_all_channels\"}}\n            />\n          {{else}}\n            <navbar.BackButton\n              @route=\"chat.channel\"\n              @routeModels={{@channel.routeModels}}\n              @title={{i18n \"chat.channel_info.back_to_channel\"}}\n            />\n          {{/if}}\n          <navbar.ChannelTitle @channel={{@channel}} />\n        </Navbar>\n      \n        <ChatChannelStatus @channel={{@channel}} />\n      \n        <div class=\"c-channel-info\">\n          <ChannelInfoNav @channel={{@channel}} />\n          {{outlet}}\n        </div>\n      </div>\n      */\n      {\n        \"id\": \"KreuMDR4\",\n        \"block\": \"[[[10,0],[14,0,\\\"c-routes --channel-info\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[32,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"chatChannelInfoRouteOriginManager\\\",\\\"isBrowse\\\"]],[[[1,\\\"      \\\"],[8,[30,1,[\\\"BackButton\\\"]],null,[[\\\"@route\\\",\\\"@title\\\"],[\\\"chat.browse\\\",[28,[32,1],[\\\"chat.channel_info.back_to_all_channels\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[30,1,[\\\"BackButton\\\"]],null,[[\\\"@route\\\",\\\"@routeModels\\\",\\\"@title\\\"],[\\\"chat.channel\\\",[30,2,[\\\"routeModels\\\"]],[28,[32,1],[\\\"chat.channel_info.back_to_channel\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[8,[30,1,[\\\"ChannelTitle\\\"]],null,[[\\\"@channel\\\"],[[30,2]]],null],[1,\\\"\\\\n  \\\"]],[1]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[32,2],null,[[\\\"@channel\\\"],[[30,2]]],null],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"c-channel-info\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[32,3],null,[[\\\"@channel\\\"],[[30,2]]],null],[1,\\\"\\\\n    \\\"],[46,[28,[31,2],null,null],null,null,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"navbar\\\",\\\"@channel\\\"],[\\\"if\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/routes/channel-info.js\",\n        \"scope\": () => [_navbar.default, _discourseI18n.i18n, _chatChannelStatus.default, _channelInfoNav.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatRoutesChannelInfo;\n});","define(\"discourse/plugins/chat/discourse/components/chat/routes/channel-pins\", [\"exports\", \"discourse/plugins/chat/discourse/components/chat/pinned-messages-list/header\", \"discourse/plugins/chat/discourse/components/chat-pinned-messages-list\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _header, _chatPinnedMessagesList, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatRoutesChannelPins = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"c-routes --channel-pins c-channel-pins\">\n    <ChatPinnedMessagesListHeader @channel={{@channel}} />\n    <ChatPinnedMessagesList\n      @channel={{@channel}}\n      @pinnedMessages={{@pinnedMessages}}\n    />\n  </div>\n  */\n  {\n    \"id\": \"lVaMxABa\",\n    \"block\": \"[[[10,0],[14,0,\\\"c-routes --channel-pins c-channel-pins\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[32,0],null,[[\\\"@channel\\\"],[[30,1]]],null],[1,\\\"\\\\n  \\\"],[8,[32,1],null,[[\\\"@channel\\\",\\\"@pinnedMessages\\\"],[[30,1],[30,2]]],null],[1,\\\"\\\\n\\\"],[13]],[\\\"@channel\\\",\\\"@pinnedMessages\\\"],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/routes/channel-pins.js\",\n    \"scope\": () => [_header.default, _chatPinnedMessagesList.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"channel-pins:ChatRoutesChannelPins\"));\n  var _default = _exports.default = ChatRoutesChannelPins;\n});","define(\"discourse/plugins/chat/discourse/components/chat/routes/channel-thread\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/helper\", \"@ember/object\", \"discourse/plugins/chat/discourse/components/chat/thread/header\", \"discourse/plugins/chat/discourse/components/chat-thread\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _helper, _object, _header, _chatThread, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatRoutesChannelThread extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"showfullTitle\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #showfullTitle = (dt7948.i(this, \"showfullTitle\"), void 0);\n    setFullTitle(value) {\n      this.showfullTitle = value;\n    }\n    static {\n      dt7948.n(this.prototype, \"setFullTitle\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"c-routes --channel-thread\">\n        {{#each (array @thread) as |thread|}}\n          <ThreadHeader\n            @thread={{thread}}\n            @showFullTitle={{this.showfullTitle}}\n          />\n      \n          <Thread\n            @thread={{thread}}\n            @targetMessageId={{@targetMessageId}}\n            @setFullTitle={{this.setFullTitle}}\n          />\n        {{/each}}\n      </div>\n      */\n      {\n        \"id\": \"tYFYxKHD\",\n        \"block\": \"[[[10,0],[14,0,\\\"c-routes --channel-thread\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,1],[[28,[31,1],[[28,[32,0],[[30,1]],null]],null]],null],null,[[[1,\\\"    \\\"],[8,[32,1],null,[[\\\"@thread\\\",\\\"@showFullTitle\\\"],[[30,2],[30,0,[\\\"showfullTitle\\\"]]]],null],[1,\\\"\\\\n\\\\n    \\\"],[8,[32,2],null,[[\\\"@thread\\\",\\\"@targetMessageId\\\",\\\"@setFullTitle\\\"],[[30,2],[30,3],[30,0,[\\\"setFullTitle\\\"]]]],null],[1,\\\"\\\\n\\\"]],[2]],null],[13]],[\\\"@thread\\\",\\\"thread\\\",\\\"@targetMessageId\\\"],[\\\"each\\\",\\\"-track-array\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/routes/channel-thread.js\",\n        \"scope\": () => [_helper.array, _header.default, _chatThread.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatRoutesChannelThread;\n});","define(\"discourse/plugins/chat/discourse/components/chat/routes/channel-threads\", [\"exports\", \"discourse/plugins/chat/discourse/components/chat/thread-list/header\", \"discourse/plugins/chat/discourse/components/chat-thread-list\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _header, _chatThreadList, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatRoutesChannelThreads = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"c-routes --channel-threads\">\n    <ChatThreadListHeader @channel={{@channel}} />\n    <ChatThreadList @channel={{@channel}} />\n  </div>\n  */\n  {\n    \"id\": \"Pj5urouK\",\n    \"block\": \"[[[10,0],[14,0,\\\"c-routes --channel-threads\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[32,0],null,[[\\\"@channel\\\"],[[30,1]]],null],[1,\\\"\\\\n  \\\"],[8,[32,1],null,[[\\\"@channel\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"],[13]],[\\\"@channel\\\"],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/routes/channel-threads.js\",\n    \"scope\": () => [_header.default, _chatThreadList.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"channel-threads:ChatRoutesChannelThreads\"));\n  var _default = _exports.default = ChatRoutesChannelThreads;\n});","define(\"discourse/plugins/chat/discourse/components/chat/routes/channel\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"discourse/plugins/chat/discourse/components/chat-side-panel\", \"discourse/plugins/chat/discourse/components/full-page-chat\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _object, _service, _navbar, _chatSidePanel, _fullPageChat, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatRoutesChannel extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatHistory\", [_service.service]);\n    }\n    #chatHistory = (dt7948.i(this, \"chatHistory\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"isFiltering\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #isFiltering = (dt7948.i(this, \"isFiltering\"), void 0);\n    toggleIsFiltering() {\n      this.isFiltering = !this.isFiltering;\n      this.chat.activeMessage = null;\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleIsFiltering\", [_object.action]);\n    }\n    get getChannelsRoute() {\n      if (this.chatHistory.previousRoute?.name === \"chat.browse\") {\n        return \"chat.browse\";\n      } else if (this.chatHistory.previousRoute?.name === \"chat.starred-channels\") {\n        return \"chat.starred-channels\";\n      } else if (this.args.channel.isDirectMessageChannel) {\n        return \"chat.direct-messages\";\n      } else {\n        return \"chat.channels\";\n      }\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"c-routes --channel\">\n        <Navbar as |navbar|>\n          {{#if this.site.mobileView}}\n            <navbar.BackButton @route={{this.getChannelsRoute}} />\n          {{/if}}\n          <navbar.ChannelTitle @channel={{@channel}} />\n          <navbar.Actions as |a|>\n            {{#if this.siteSettings.chat_search_enabled}}\n              <a.Filter\n                @channel={{@channel}}\n                @isFiltering={{this.isFiltering}}\n                @onToggleFilter={{this.toggleIsFiltering}}\n              />\n            {{/if}}\n      \n            <a.OpenDrawerButton />\n            <a.PinnedMessagesButton @channel={{@channel}} />\n            <a.ThreadsListButton @channel={{@channel}} />\n          </navbar.Actions>\n        </Navbar>\n      \n        <FullPageChat\n          @isFiltering={{this.isFiltering}}\n          @channel={{@channel}}\n          @targetMessageId={{@targetMessageId}}\n          @onToggleFilter={{this.toggleIsFiltering}}\n        />\n      </div>\n      \n      <ChatSidePanel>\n        {{outlet}}\n      </ChatSidePanel>\n      */\n      {\n        \"id\": \"tixY8cNi\",\n        \"block\": \"[[[10,0],[14,0,\\\"c-routes --channel\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[32,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"site\\\",\\\"mobileView\\\"]],[[[1,\\\"      \\\"],[8,[30,1,[\\\"BackButton\\\"]],null,[[\\\"@route\\\"],[[30,0,[\\\"getChannelsRoute\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[8,[30,1,[\\\"ChannelTitle\\\"]],null,[[\\\"@channel\\\"],[[30,2]]],null],[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Actions\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"siteSettings\\\",\\\"chat_search_enabled\\\"]],[[[1,\\\"        \\\"],[8,[30,3,[\\\"Filter\\\"]],null,[[\\\"@channel\\\",\\\"@isFiltering\\\",\\\"@onToggleFilter\\\"],[[30,2],[30,0,[\\\"isFiltering\\\"]],[30,0,[\\\"toggleIsFiltering\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n      \\\"],[8,[30,3,[\\\"OpenDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"],[8,[30,3,[\\\"PinnedMessagesButton\\\"]],null,[[\\\"@channel\\\"],[[30,2]]],null],[1,\\\"\\\\n      \\\"],[8,[30,3,[\\\"ThreadsListButton\\\"]],null,[[\\\"@channel\\\"],[[30,2]]],null],[1,\\\"\\\\n    \\\"]],[3]]]]],[1,\\\"\\\\n  \\\"]],[1]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[32,1],null,[[\\\"@isFiltering\\\",\\\"@channel\\\",\\\"@targetMessageId\\\",\\\"@onToggleFilter\\\"],[[30,0,[\\\"isFiltering\\\"]],[30,2],[30,4],[30,0,[\\\"toggleIsFiltering\\\"]]]],null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[32,2],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[46,[28,[31,2],null,null],null,null,null],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"navbar\\\",\\\"@channel\\\",\\\"a\\\",\\\"@targetMessageId\\\"],[\\\"if\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/routes/channel.js\",\n        \"scope\": () => [_navbar.default, _fullPageChat.default, _chatSidePanel.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatRoutesChannel;\n});","define(\"discourse/plugins/chat/discourse/components/chat/routes/channels\", [\"exports\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/channels-list-public\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _discourseI18n, _channelsListPublic, _navbar, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatRoutesChannels = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"c-routes --channels\">\n    <Navbar as |navbar|>\n      <navbar.Title @title={{i18n \"chat.chat_channels\"}} />\n      <navbar.Actions as |action|>\n        <action.OpenDrawerButton />\n        <action.BrowseChannelsButton />\n      </navbar.Actions>\n    </Navbar>\n  \n    <ChannelsListPublic />\n  </div>\n  */\n  {\n    \"id\": \"y7gTfCHV\",\n    \"block\": \"[[[10,0],[14,0,\\\"c-routes --channels\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[32,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Title\\\"]],null,[[\\\"@title\\\"],[[28,[32,1],[\\\"chat.chat_channels\\\"],null]]],null],[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Actions\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"OpenDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"BrowseChannelsButton\\\"]],null,null,null],[1,\\\"\\\\n    \\\"]],[2]]]]],[1,\\\"\\\\n  \\\"]],[1]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[32,2],null,null,null],[1,\\\"\\\\n\\\"],[13]],[\\\"navbar\\\",\\\"action\\\"],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/routes/channels.js\",\n    \"scope\": () => [_navbar.default, _discourseI18n.i18n, _channelsListPublic.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"channels:ChatRoutesChannels\"));\n  var _default = _exports.default = ChatRoutesChannels;\n});","define(\"discourse/plugins/chat/discourse/components/chat/routes/direct-messages\", [\"exports\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/channels-list-direct\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _discourseI18n, _channelsListDirect, _navbar, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatRoutesDirectMessages = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"c-routes --direct-messages\">\n    <Navbar as |navbar|>\n      <navbar.Title @title={{i18n \"chat.direct_messages.title\"}} />\n      <navbar.Actions as |action|>\n        <action.OpenDrawerButton />\n        <action.NewDirectMessageButton />\n      </navbar.Actions>\n    </Navbar>\n  \n    <ChannelsListDirect />\n  </div>\n  */\n  {\n    \"id\": \"TZGdOGzw\",\n    \"block\": \"[[[10,0],[14,0,\\\"c-routes --direct-messages\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[32,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Title\\\"]],null,[[\\\"@title\\\"],[[28,[32,1],[\\\"chat.direct_messages.title\\\"],null]]],null],[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Actions\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"OpenDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"NewDirectMessageButton\\\"]],null,null,null],[1,\\\"\\\\n    \\\"]],[2]]]]],[1,\\\"\\\\n  \\\"]],[1]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[32,2],null,null,null],[1,\\\"\\\\n\\\"],[13]],[\\\"navbar\\\",\\\"action\\\"],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/routes/direct-messages.js\",\n    \"scope\": () => [_navbar.default, _discourseI18n.i18n, _channelsListDirect.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"direct-messages:ChatRoutesDirectMessages\"));\n  var _default = _exports.default = ChatRoutesDirectMessages;\n});","define(\"discourse/plugins/chat/discourse/components/chat/routes/search\", [\"exports\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat-search\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _discourseI18n, _chatSearch, _navbar, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatRoutesSearch = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"c-routes --search\">\n    <Navbar as |navbar|>\n      <navbar.Title @title={{i18n \"chat.search.title\"}} />\n      <navbar.Actions as |action|>\n        <action.OpenDrawerButton />\n      </navbar.Actions>\n    </Navbar>\n    <ChatSearch @query={{@query}} />\n  </div>\n  */\n  {\n    \"id\": \"8Seu/VlR\",\n    \"block\": \"[[[10,0],[14,0,\\\"c-routes --search\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[32,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Title\\\"]],null,[[\\\"@title\\\"],[[28,[32,1],[\\\"chat.search.title\\\"],null]]],null],[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Actions\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"OpenDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n    \\\"]],[2]]]]],[1,\\\"\\\\n  \\\"]],[1]]]]],[1,\\\"\\\\n  \\\"],[8,[32,2],null,[[\\\"@query\\\"],[[30,3]]],null],[1,\\\"\\\\n\\\"],[13]],[\\\"navbar\\\",\\\"action\\\",\\\"@query\\\"],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/routes/search.js\",\n    \"scope\": () => [_navbar.default, _discourseI18n.i18n, _chatSearch.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"search:ChatRoutesSearch\"));\n  var _default = _exports.default = ChatRoutesSearch;\n});","define(\"discourse/plugins/chat/discourse/components/chat/routes/starred-channels\", [\"exports\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/channels-list-starred\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _discourseI18n, _channelsListStarred, _navbar, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatRoutesStarredChannels = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"c-routes --starred-channels\">\n    <Navbar as |navbar|>\n      <navbar.Title @title={{i18n \"chat.starred\"}} />\n      <navbar.Actions as |action|>\n  \n        <action.OpenDrawerButton />\n      </navbar.Actions>\n    </Navbar>\n  \n    <ChannelsListStarred />\n  </div>\n  */\n  {\n    \"id\": \"O9xCBusR\",\n    \"block\": \"[[[10,0],[14,0,\\\"c-routes --starred-channels\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[32,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Title\\\"]],null,[[\\\"@title\\\"],[[28,[32,1],[\\\"chat.starred\\\"],null]]],null],[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Actions\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\\n      \\\"],[8,[30,2,[\\\"OpenDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n    \\\"]],[2]]]]],[1,\\\"\\\\n  \\\"]],[1]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[32,2],null,null,null],[1,\\\"\\\\n\\\"],[13]],[\\\"navbar\\\",\\\"action\\\"],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/routes/starred-channels.js\",\n    \"scope\": () => [_navbar.default, _discourseI18n.i18n, _channelsListStarred.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"starred-channels:ChatRoutesStarredChannels\"));\n  var _default = _exports.default = ChatRoutesStarredChannels;\n});","define(\"discourse/plugins/chat/discourse/components/chat/routes/threads\", [\"exports\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/user-threads\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _discourseI18n, _userThreads, _navbar, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatRoutesThreads = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"c-routes --threads\">\n    <Navbar as |navbar|>\n      <navbar.Title @title={{i18n \"chat.my_threads.title\"}} />\n  \n      <navbar.Actions as |action|>\n        <action.OpenDrawerButton />\n      </navbar.Actions>\n    </Navbar>\n  \n    <UserThreads />\n  </div>\n  */\n  {\n    \"id\": \"ZfPGPPAs\",\n    \"block\": \"[[[10,0],[14,0,\\\"c-routes --threads\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[32,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Title\\\"]],null,[[\\\"@title\\\"],[[28,[32,1],[\\\"chat.my_threads.title\\\"],null]]],null],[1,\\\"\\\\n\\\\n    \\\"],[8,[30,1,[\\\"Actions\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"OpenDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n    \\\"]],[2]]]]],[1,\\\"\\\\n  \\\"]],[1]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[32,2],null,null,null],[1,\\\"\\\\n\\\"],[13]],[\\\"navbar\\\",\\\"action\\\"],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/routes/threads.js\",\n    \"scope\": () => [_navbar.default, _discourseI18n.i18n, _userThreads.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"threads:ChatRoutesThreads\"));\n  var _default = _exports.default = ChatRoutesThreads;\n});","define(\"discourse/plugins/chat/discourse/components/chat/scroll-to-bottom-arrow\", [\"exports\", \"discourse/components/d-button\", \"discourse/helpers/concat-class\", \"discourse/helpers/d-icon\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _dButton, _concatClass, _dIcon, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ScrollToBottomArrow = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"chat-scroll-to-bottom\">\n    <DButton\n      class={{concatClass\n        \"btn-flat\"\n        \"chat-scroll-to-bottom__button\"\n        (if @isVisible \"visible\")\n      }}\n      @action={{@onScrollToBottom}}\n    >\n      <span class=\"chat-scroll-to-bottom__arrow\">\n        {{icon \"arrow-down\"}}\n      </span>\n    </DButton>\n  </div>\n  */\n  {\n    \"id\": \"SSy+83Sf\",\n    \"block\": \"[[[10,0],[14,0,\\\"chat-scroll-to-bottom\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[32,0],[[16,0,[28,[32,1],[\\\"btn-flat\\\",\\\"chat-scroll-to-bottom__button\\\",[52,[30,1],\\\"visible\\\"]],null]]],[[\\\"@action\\\"],[[30,2]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"chat-scroll-to-bottom__arrow\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[28,[32,2],[\\\"arrow-down\\\"],null]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[13]],[\\\"@isVisible\\\",\\\"@onScrollToBottom\\\"],[\\\"if\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/scroll-to-bottom-arrow.js\",\n    \"scope\": () => [_dButton.default, _concatClass.default, _dIcon.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"scroll-to-bottom-arrow:ScrollToBottomArrow\"));\n  var _default = _exports.default = ScrollToBottomArrow;\n});","define(\"discourse/plugins/chat/discourse/components/chat/selection-manager\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/owner\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/lib/ajax-error\", \"discourse/lib/decorators\", \"discourse/lib/environment\", \"discourse/lib/utilities\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/modal/delete-messages-confirm\", \"discourse/plugins/chat/discourse/components/chat/modal/move-message-to-channel\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _owner, _service, _dButton, _ajaxError, _decorators, _environment, _utilities, _truthHelpers, _discourseI18n, _deleteMessagesConfirm, _moveMessageToChannel, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const DELETE_COUNT_LIMIT = 200;\n  class ChatSelectionManager extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"topicComposer\", [(0, _service.service)(\"composer\")]);\n    }\n    #topicComposer = (dt7948.i(this, \"topicComposer\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"toasts\", [_service.service]);\n    }\n    #toasts = (dt7948.i(this, \"toasts\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"api\", [(0, _service.service)(\"chat-api\")]);\n    }\n    #api = (dt7948.i(this, \"api\"), void 0);\n    get enableMove() {\n      return this.args.enableMove ?? false;\n    }\n    get anyMessagesSelected() {\n      return this.args.pane.selectedMessageIds.length > 0;\n    }\n    get deleteCountLimitReached() {\n      return this.args.pane.selectedMessageIds.length > DELETE_COUNT_LIMIT;\n    }\n    get canDeleteMessages() {\n      return this.args.pane.selectedMessageIds.every(id => {\n        return this.canDeleteMessage(id);\n      });\n    }\n    canDeleteMessage(id) {\n      const message = this.args.messagesManager?.findMessage(id);\n      if (message) {\n        const canDelete = this.currentUser.id === message.user.id ? message.channel?.canDeleteSelf : message.channel?.canDeleteOthers;\n        return canDelete && !message.deletedAt && message.channel?.canModifyMessages?.(this.currentUser);\n      }\n    }\n    get deleteButtonTitle() {\n      return (0, _discourseI18n.i18n)(\"chat.selection.delete\", {\n        selectionCount: this.args.pane.selectedMessageIds.length,\n        totalCount: DELETE_COUNT_LIMIT\n      });\n    }\n    async generateQuote() {\n      const {\n        markdown\n      } = await this.api.generateQuote(this.args.pane.channel.id, this.args.pane.selectedMessageIds);\n      return new Blob([markdown], {\n        type: \"text/plain\"\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"generateQuote\", [_decorators.bind]);\n    }\n    openMoveMessageModal() {\n      this.modal.show(_moveMessageToChannel.default, {\n        model: {\n          sourceChannel: this.args.pane.channel,\n          selectedMessageIds: this.args.pane.selectedMessageIds\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"openMoveMessageModal\", [_object.action]);\n    }\n    openDeleteMessagesModal() {\n      this.modal.show(_deleteMessagesConfirm.default, {\n        model: {\n          sourceChannel: this.args.pane.channel,\n          selectedMessageIds: this.args.pane.selectedMessageIds\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"openDeleteMessagesModal\", [_object.action]);\n    }\n    async quoteMessages() {\n      let quoteMarkdown;\n      try {\n        const quoteMarkdownBlob = await this.generateQuote();\n        quoteMarkdown = await quoteMarkdownBlob.text();\n      } catch (error) {\n        (0, _ajaxError.popupAjaxError)(error);\n      }\n      const openOpts = {};\n      if (this.args.pane.channel.isCategoryChannel) {\n        openOpts.categoryId = this.args.pane.channel.chatableId;\n      }\n      if (this.site.mobileView) {\n        // go to the relevant chatable (e.g. category) and open the\n        // composer to insert text\n        if (this.args.pane.channel.chatableUrl) {\n          this.router.transitionTo(this.args.pane.channel.chatableUrl);\n        }\n        await this.topicComposer.focusComposer({\n          fallbackToNewTopic: true,\n          insertText: quoteMarkdown,\n          openOpts\n        });\n      } else {\n        // open the composer and insert text, reply to the current\n        // topic if there is one, use the active draft if there is one\n        const container = (0, _owner.getOwner)(this);\n        const topic = container.lookup(\"controller:topic\");\n        await this.topicComposer.focusComposer({\n          fallbackToNewTopic: true,\n          topic: topic?.model,\n          insertText: quoteMarkdown,\n          openOpts\n        });\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"quoteMessages\", [_object.action]);\n    }\n    async copyMessages() {\n      try {\n        if (!(0, _environment.isTesting)()) {\n          // clipboard API throws errors in tests\n          await (0, _utilities.clipboardCopyAsync)(this.generateQuote);\n          this.toasts.success({\n            duration: \"short\",\n            data: {\n              message: (0, _discourseI18n.i18n)(\"chat.quote.copy_success\")\n            }\n          });\n        }\n      } catch (error) {\n        (0, _ajaxError.popupAjaxError)(error);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"copyMessages\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div\n        class=\"chat-selection-management\"\n        data-last-copy-successful={{this.lastCopySuccessful}}\n      >\n        <div class=\"chat-selection-management__buttons\">\n          <DButton\n            @icon=\"quote-left\"\n            @label=\"chat.selection.quote_selection\"\n            @disabled={{not this.anyMessagesSelected}}\n            @action={{this.quoteMessages}}\n            id=\"chat-quote-btn\"\n          />\n      \n          <DButton\n            @icon=\"copy\"\n            @label=\"chat.selection.copy\"\n            @disabled={{not this.anyMessagesSelected}}\n            @action={{this.copyMessages}}\n            id=\"chat-copy-btn\"\n          />\n      \n          {{#if this.enableMove}}\n            <DButton\n              @icon=\"right-from-bracket\"\n              @label=\"chat.selection.move_selection_to_channel\"\n              @disabled={{not this.anyMessagesSelected}}\n              @action={{this.openMoveMessageModal}}\n              id=\"chat-move-to-channel-btn\"\n            />\n          {{/if}}\n      \n          <DButton\n            @icon=\"trash-can\"\n            @translatedLabel={{this.deleteButtonTitle}}\n            @disabled={{or\n              (not this.anyMessagesSelected)\n              (not this.canDeleteMessages)\n              this.deleteCountLimitReached\n            }}\n            @action={{this.openDeleteMessagesModal}}\n            id=\"chat-delete-btn\"\n          />\n      \n          <DButton\n            @icon=\"xmark\"\n            @label=\"chat.selection.cancel\"\n            @action={{@pane.cancelSelecting}}\n            id=\"chat-cancel-selection-btn\"\n            class=\"btn-secondary cancel-btn\"\n          />\n        </div>\n      </div>\n      */\n      {\n        \"id\": \"wrWnThmB\",\n        \"block\": \"[[[10,0],[14,0,\\\"chat-selection-management\\\"],[15,\\\"data-last-copy-successful\\\",[30,0,[\\\"lastCopySuccessful\\\"]]],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-selection-management__buttons\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[32,0],[[24,1,\\\"chat-quote-btn\\\"]],[[\\\"@icon\\\",\\\"@label\\\",\\\"@disabled\\\",\\\"@action\\\"],[\\\"quote-left\\\",\\\"chat.selection.quote_selection\\\",[28,[32,1],[[30,0,[\\\"anyMessagesSelected\\\"]]],null],[30,0,[\\\"quoteMessages\\\"]]]],null],[1,\\\"\\\\n\\\\n    \\\"],[8,[32,0],[[24,1,\\\"chat-copy-btn\\\"]],[[\\\"@icon\\\",\\\"@label\\\",\\\"@disabled\\\",\\\"@action\\\"],[\\\"copy\\\",\\\"chat.selection.copy\\\",[28,[32,1],[[30,0,[\\\"anyMessagesSelected\\\"]]],null],[30,0,[\\\"copyMessages\\\"]]]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"enableMove\\\"]],[[[1,\\\"      \\\"],[8,[32,0],[[24,1,\\\"chat-move-to-channel-btn\\\"]],[[\\\"@icon\\\",\\\"@label\\\",\\\"@disabled\\\",\\\"@action\\\"],[\\\"right-from-bracket\\\",\\\"chat.selection.move_selection_to_channel\\\",[28,[32,1],[[30,0,[\\\"anyMessagesSelected\\\"]]],null],[30,0,[\\\"openMoveMessageModal\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n    \\\"],[8,[32,0],[[24,1,\\\"chat-delete-btn\\\"]],[[\\\"@icon\\\",\\\"@translatedLabel\\\",\\\"@disabled\\\",\\\"@action\\\"],[\\\"trash-can\\\",[30,0,[\\\"deleteButtonTitle\\\"]],[28,[32,2],[[28,[32,1],[[30,0,[\\\"anyMessagesSelected\\\"]]],null],[28,[32,1],[[30,0,[\\\"canDeleteMessages\\\"]]],null],[30,0,[\\\"deleteCountLimitReached\\\"]]],null],[30,0,[\\\"openDeleteMessagesModal\\\"]]]],null],[1,\\\"\\\\n\\\\n    \\\"],[8,[32,0],[[24,1,\\\"chat-cancel-selection-btn\\\"],[24,0,\\\"btn-secondary cancel-btn\\\"]],[[\\\"@icon\\\",\\\"@label\\\",\\\"@action\\\"],[\\\"xmark\\\",\\\"chat.selection.cancel\\\",[30,1,[\\\"cancelSelecting\\\"]]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@pane\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/selection-manager.js\",\n        \"scope\": () => [_dButton.default, _truthHelpers.not, _truthHelpers.or],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatSelectionManager;\n});","define(\"discourse/plugins/chat/discourse/components/chat/thread-list/header\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"@ember/template\", \"discourse/helpers/replace-emoji\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _template, _replaceEmoji, _discourseI18n, _navbar, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatThreadListHeader extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    threadListTitle = (0, _discourseI18n.i18n)(\"chat.threads.list\");\n    get title() {\n      let title = (0, _replaceEmoji.default)(this.threadListTitle);\n      if (this.site.mobileView) {\n        title += \" - \" + (0, _replaceEmoji.default)(this.args.channel.escapedTitle);\n      }\n      return (0, _template.trustHTML)(title);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <Navbar as |navbar|>\n        {{#if this.site.mobileView}}\n          <navbar.BackButton\n            @route=\"chat.channel\"\n            @routeModels={{@channel.routeModels}}\n            @title={{i18n \"chat.return_to_channel\"}}\n          />\n        {{/if}}\n      \n        <navbar.Title @title={{this.title}} @icon=\"discourse-threads\" />\n      \n        <navbar.Actions as |action|>\n          <action.CloseThreadsButton @channel={{@channel}} />\n        </navbar.Actions>\n      </Navbar>\n      */\n      {\n        \"id\": \"aMK4lZrT\",\n        \"block\": \"[[[8,[32,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"site\\\",\\\"mobileView\\\"]],[[[1,\\\"    \\\"],[8,[30,1,[\\\"BackButton\\\"]],null,[[\\\"@route\\\",\\\"@routeModels\\\",\\\"@title\\\"],[\\\"chat.channel\\\",[30,2,[\\\"routeModels\\\"]],[28,[32,1],[\\\"chat.return_to_channel\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[8,[30,1,[\\\"Title\\\"]],null,[[\\\"@title\\\",\\\"@icon\\\"],[[30,0,[\\\"title\\\"]],\\\"discourse-threads\\\"]],null],[1,\\\"\\\\n\\\\n  \\\"],[8,[30,1,[\\\"Actions\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[30,3,[\\\"CloseThreadsButton\\\"]],null,[[\\\"@channel\\\"],[[30,2]]],null],[1,\\\"\\\\n  \\\"]],[3]]]]],[1,\\\"\\\\n\\\"]],[1]]]]]],[\\\"navbar\\\",\\\"@channel\\\",\\\"action\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/thread-list/header.js\",\n        \"scope\": () => [_navbar.default, _discourseI18n.i18n],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatThreadListHeader;\n});","define(\"discourse/plugins/chat/discourse/components/chat/thread-list/item\", [\"exports\", \"@glimmer/component\", \"@ember/helper\", \"@ember/modifier\", \"@ember/object\", \"@ember/service\", \"discourse/helpers/concat-class\", \"discourse/helpers/format-date\", \"discourse/helpers/replace-emoji\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/thread-unread-indicator\", \"discourse/plugins/chat/discourse/components/chat-thread-participants\", \"discourse/plugins/chat/discourse/components/chat-user-avatar\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _helper, _modifier, _object, _service, _concatClass, _formatDate, _replaceEmoji, _truthHelpers, _discourseI18n, _threadUnreadIndicator, _chatThreadParticipants, _chatUserAvatar, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatThreadListItem extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    openThread(thread) {\n      this.router.transitionTo(\"chat.channel.thread\", ...thread.routeModels);\n    }\n    static {\n      dt7948.n(this.prototype, \"openThread\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div\n        class={{concatClass\n          \"chat-thread-list-item\"\n          (if (gt @thread.tracking.unreadCount 0) \"-is-unread\")\n          (if (gt @thread.tracking.watchedThreadsUnreadCount 0) \"-is-urgent\")\n        }}\n        data-thread-id={{@thread.id}}\n        ...attributes\n      >\n        <div class=\"chat-thread-list-item__main\">\n          <div\n            title={{i18n \"chat.thread.view_thread\"}}\n            role=\"button\"\n            class=\"chat-thread-list-item__open-button\"\n            {{on \"click\" (fn this.openThread @thread) passive=true}}\n          >\n            <div class=\"chat-thread-list-item__header\">\n              <div class=\"chat-thread-list-item__title\">\n                {{#if @thread.title}}\n                  {{replaceEmoji @thread.title}}\n                {{else}}\n                  {{replaceEmoji @thread.originalMessage.excerpt}}\n                {{/if}}\n              </div>\n              <div class=\"chat-thread-list-item__unread-indicator\">\n                <ThreadUnreadIndicator @thread={{@thread}} />\n              </div>\n            </div>\n      \n            <div class=\"chat-thread-list-item__metadata\">\n              <div class=\"chat-thread-list-item__members\">\n                <ChatUserAvatar\n                  @user={{@thread.originalMessage.user}}\n                  @showPresence={{false}}\n                  @interactive={{false}}\n                />\n                <ChatThreadParticipants\n                  @thread={{@thread}}\n                  @includeOriginalMessageUser={{false}}\n                  class=\"chat-thread-list-item__participants\"\n                />\n              </div>\n      \n              <div class=\"chat-thread-list-item__last-reply-timestamp\">\n                {{#if @thread.preview.lastReplyCreatedAt}}\n                  {{formatDate\n                    @thread.preview.lastReplyCreatedAt\n                    leaveAgo=\"true\"\n                  }}\n                {{/if}}\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n      */\n      {\n        \"id\": \"Cx2QHHbr\",\n        \"block\": \"[[[11,0],[16,0,[28,[32,0],[\\\"chat-thread-list-item\\\",[52,[28,[32,1],[[30,1,[\\\"tracking\\\",\\\"unreadCount\\\"]],0],null],\\\"-is-unread\\\"],[52,[28,[32,1],[[30,1,[\\\"tracking\\\",\\\"watchedThreadsUnreadCount\\\"]],0],null],\\\"-is-urgent\\\"]],null]],[16,\\\"data-thread-id\\\",[30,1,[\\\"id\\\"]]],[17,2],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-thread-list-item__main\\\"],[12],[1,\\\"\\\\n    \\\"],[11,0],[16,\\\"title\\\",[28,[32,2],[\\\"chat.thread.view_thread\\\"],null]],[24,\\\"role\\\",\\\"button\\\"],[24,0,\\\"chat-thread-list-item__open-button\\\"],[4,[32,3],[\\\"click\\\",[28,[32,4],[[30,0,[\\\"openThread\\\"]],[30,1]],null]],[[\\\"passive\\\"],[true]]],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"chat-thread-list-item__header\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"chat-thread-list-item__title\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"title\\\"]],[[[1,\\\"            \\\"],[1,[28,[32,5],[[30,1,[\\\"title\\\"]]],null]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            \\\"],[1,[28,[32,5],[[30,1,[\\\"originalMessage\\\",\\\"excerpt\\\"]]],null]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"chat-thread-list-item__unread-indicator\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[32,6],null,[[\\\"@thread\\\"],[[30,1]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,0],[14,0,\\\"chat-thread-list-item__metadata\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"chat-thread-list-item__members\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[32,7],null,[[\\\"@user\\\",\\\"@showPresence\\\",\\\"@interactive\\\"],[[30,1,[\\\"originalMessage\\\",\\\"user\\\"]],false,false]],null],[1,\\\"\\\\n          \\\"],[8,[32,8],[[24,0,\\\"chat-thread-list-item__participants\\\"]],[[\\\"@thread\\\",\\\"@includeOriginalMessageUser\\\"],[[30,1],false]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,0],[14,0,\\\"chat-thread-list-item__last-reply-timestamp\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"preview\\\",\\\"lastReplyCreatedAt\\\"]],[[[1,\\\"            \\\"],[1,[28,[32,9],[[30,1,[\\\"preview\\\",\\\"lastReplyCreatedAt\\\"]]],[[\\\"leaveAgo\\\"],[\\\"true\\\"]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@thread\\\",\\\"&attrs\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/thread-list/item.js\",\n        \"scope\": () => [_concatClass.default, _truthHelpers.gt, _discourseI18n.i18n, _modifier.on, _helper.fn, _replaceEmoji.default, _threadUnreadIndicator.default, _chatUserAvatar.default, _chatThreadParticipants.default, _formatDate.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatThreadListItem;\n});","define(\"discourse/plugins/chat/discourse/components/chat/thread/header-unread-indicator\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ThreadHeaderUnreadIndicator extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    unreadCountLabel = (0, _discourseI18n.i18n)(\"chat.unread_threads_count\", {\n      count: this.cappedUnreadCount\n    });\n    get unreadCount() {\n      return this.args.channel.threadsManager.unreadThreadCount;\n    }\n    get showUnreadIndicator() {\n      return !this.currentUser.isInDoNotDisturb() && this.unreadCount > 0;\n    }\n    get cappedUnreadCount() {\n      return this.unreadCount > 99 ? \"99+\" : this.unreadCount;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.showUnreadIndicator}}\n        <div\n          class=\"chat-thread-header-unread-indicator\"\n          title={{this.unreadCountLabel}}\n        >\n          <div\n            class=\"chat-thread-header-unread-indicator__number\"\n          >{{this.cappedUnreadCount}}</div>\n        </div>\n      {{/if}}\n      */\n      {\n        \"id\": \"fkXspN6y\",\n        \"block\": \"[[[41,[30,0,[\\\"showUnreadIndicator\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"chat-thread-header-unread-indicator\\\"],[15,\\\"title\\\",[30,0,[\\\"unreadCountLabel\\\"]]],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chat-thread-header-unread-indicator__number\\\"],[12],[1,[30,0,[\\\"cappedUnreadCount\\\"]]],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/thread/header-unread-indicator.js\",\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ThreadHeaderUnreadIndicator;\n});","define(\"discourse/plugins/chat/discourse/components/chat/thread/header\", [\"exports\", \"@glimmer/component\", \"@ember/modifier\", \"@ember/service\", \"discourse/helpers/d-icon\", \"discourse/helpers/noop\", \"discourse/helpers/replace-emoji\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/modal/thread-settings\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"discourse/plugins/chat/discourse/components/chat/thread/header-unread-indicator\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _modifier, _service, _dIcon, _noop, _replaceEmoji, _truthHelpers, _discourseI18n, _threadSettings, _navbar, _headerUnreadIndicator, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatThreadHeader extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatHistory\", [_service.service]);\n    }\n    #chatHistory = (dt7948.i(this, \"chatHistory\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    get backLink() {\n      const prevPage = this.chatHistory.previousRoute?.name;\n      let route, title, models;\n      if (prevPage === \"chat.channel.threads\") {\n        route = \"chat.channel.threads\";\n        title = (0, _discourseI18n.i18n)(\"chat.return_to_threads_list\");\n        models = this.channel?.routeModels;\n      } else if (prevPage === \"chat.channel.index\" && this.site.desktopView) {\n        route = \"chat.channel.threads\";\n        title = (0, _discourseI18n.i18n)(\"chat.return_to_threads_list\");\n        models = this.channel?.routeModels;\n      } else if (prevPage === \"chat.threads\") {\n        route = \"chat.threads\";\n        title = (0, _discourseI18n.i18n)(\"chat.my_threads.title\");\n        models = [];\n      } else if (!this.currentUser.isInDoNotDisturb() && this.unreadCount > 0) {\n        route = \"chat.channel.threads\";\n        title = (0, _discourseI18n.i18n)(\"chat.return_to_threads_list\");\n        models = this.channel?.routeModels;\n      } else {\n        route = \"chat.channel.index\";\n        title = (0, _discourseI18n.i18n)(\"chat.return_to_channel\");\n        models = this.channel?.routeModels;\n      }\n      return {\n        route,\n        models,\n        title\n      };\n    }\n    get channel() {\n      return this.args.thread?.channel;\n    }\n    get headerTitle() {\n      return this.args.thread?.title ?? (0, _discourseI18n.i18n)(\"chat.thread.label\");\n    }\n    get unreadCount() {\n      return this.channel?.threadsManager?.unreadThreadCount;\n    }\n    get showThreadUnreadIndicator() {\n      return this.backLink.route === \"chat.channel.threads\" && this.unreadCount > 0;\n    }\n    get openThreadTitleModal() {\n      if (this.currentUser.admin || this.currentUser.id === this.args.thread?.originalMessage?.user?.id) {\n        return () => this.modal.show(_threadSettings.default, {\n          model: this.args.thread\n        });\n      }\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <Navbar @showFullTitle={{@showFullTitle}} as |navbar|>\n        {{#if (and this.channel.threadingEnabled @thread)}}\n          <navbar.BackButton\n            @route={{this.backLink.route}}\n            @routeModels={{this.backLink.models}}\n            @title={{this.backLink.title}}\n          >\n            {{#if this.showThreadUnreadIndicator}}\n              <ChatThreadHeaderUnreadIndicator @channel={{this.channel}} />\n            {{/if}}\n            {{icon \"chevron-left\"}}\n          </navbar.BackButton>\n        {{/if}}\n      \n        <navbar.Title\n          @title={{replaceEmoji this.headerTitle}}\n          {{on \"click\" (or this.openThreadTitleModal noop)}}\n          role={{if this.openThreadTitleModal \"button\"}}\n          class={{if this.openThreadTitleModal \"clickable\"}}\n        />\n        <navbar.Actions as |action|>\n          <action.ThreadTrackingDropdown @thread={{@thread}} />\n          <action.ThreadSettingsButton @thread={{@thread}} />\n          <action.CloseThreadButton @thread={{@thread}} />\n        </navbar.Actions>\n      </Navbar>\n      */\n      {\n        \"id\": \"NSLbVRiw\",\n        \"block\": \"[[[8,[32,0],null,[[\\\"@showFullTitle\\\"],[[30,1]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[28,[32,1],[[30,0,[\\\"channel\\\",\\\"threadingEnabled\\\"]],[30,3]],null],[[[1,\\\"    \\\"],[8,[30,2,[\\\"BackButton\\\"]],null,[[\\\"@route\\\",\\\"@routeModels\\\",\\\"@title\\\"],[[30,0,[\\\"backLink\\\",\\\"route\\\"]],[30,0,[\\\"backLink\\\",\\\"models\\\"]],[30,0,[\\\"backLink\\\",\\\"title\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showThreadUnreadIndicator\\\"]],[[[1,\\\"        \\\"],[8,[32,2],null,[[\\\"@channel\\\"],[[30,0,[\\\"channel\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[1,[28,[32,3],[\\\"chevron-left\\\"],null]],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[8,[30,2,[\\\"Title\\\"]],[[16,\\\"role\\\",[52,[30,0,[\\\"openThreadTitleModal\\\"]],\\\"button\\\"]],[16,0,[52,[30,0,[\\\"openThreadTitleModal\\\"]],\\\"clickable\\\"]],[4,[32,5],[\\\"click\\\",[28,[32,6],[[30,0,[\\\"openThreadTitleModal\\\"]],[32,7]],null]],null]],[[\\\"@title\\\"],[[28,[32,4],[[30,0,[\\\"headerTitle\\\"]]],null]]],null],[1,\\\"\\\\n  \\\"],[8,[30,2,[\\\"Actions\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[30,4,[\\\"ThreadTrackingDropdown\\\"]],null,[[\\\"@thread\\\"],[[30,3]]],null],[1,\\\"\\\\n    \\\"],[8,[30,4,[\\\"ThreadSettingsButton\\\"]],null,[[\\\"@thread\\\"],[[30,3]]],null],[1,\\\"\\\\n    \\\"],[8,[30,4,[\\\"CloseThreadButton\\\"]],null,[[\\\"@thread\\\"],[[30,3]]],null],[1,\\\"\\\\n  \\\"]],[4]]]]],[1,\\\"\\\\n\\\"]],[2]]]]]],[\\\"@showFullTitle\\\",\\\"navbar\\\",\\\"@thread\\\",\\\"action\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/chat/thread/header.js\",\n        \"scope\": () => [_navbar.default, _truthHelpers.and, _headerUnreadIndicator.default, _dIcon.default, _replaceEmoji.default, _modifier.on, _truthHelpers.or, _noop.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatThreadHeader;\n});","define(\"discourse/plugins/chat/discourse/components/collapser\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember-decorators/component\", \"discourse/components/d-button\", \"discourse/helpers/concat-class\", \"@ember/template-factory\"], function (_exports, _component, _object, _component2, _dButton, _concatClass, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /* eslint-disable ember/no-classic-components */\n  const Collapser = dt7948.c(class Collapser extends _component.default {\n    collapsed = false;\n    header = null;\n    onToggle = null;\n    open() {\n      this.set(\"collapsed\", false);\n      this.onToggle?.(false);\n    }\n    static {\n      dt7948.n(this.prototype, \"open\", [_object.action]);\n    }\n    close() {\n      this.set(\"collapsed\", true);\n      this.onToggle?.(true);\n    }\n    static {\n      dt7948.n(this.prototype, \"close\", [_object.action]);\n    }\n    static {\n      (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"chat-message-collapser-header\">\n        {{this.header}}\n      \n        {{#if this.collapsed}}\n          <DButton\n            @action={{this.open}}\n            @icon=\"angle-right\"\n            class=\"chat-message-collapser-button chat-message-collapser-closed\"\n          />\n        {{else}}\n          <DButton\n            @action={{this.close}}\n            @icon=\"angle-down\"\n            class=\"chat-message-collapser-button chat-message-collapser-opened\"\n          />\n        {{/if}}\n      </div>\n      \n      <div\n        class={{concatClass\n          \"chat-message-collapser-body\"\n          (if this.collapsed \"hidden\")\n        }}\n      >\n        {{yield this.collapsed}}\n      </div>\n      */\n      {\n        \"id\": \"PqoOcnzu\",\n        \"block\": \"[[[10,0],[14,0,\\\"chat-message-collapser-header\\\"],[12],[1,\\\"\\\\n  \\\"],[1,[30,0,[\\\"header\\\"]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"collapsed\\\"]],[[[1,\\\"    \\\"],[8,[32,0],[[24,0,\\\"chat-message-collapser-button chat-message-collapser-closed\\\"]],[[\\\"@action\\\",\\\"@icon\\\"],[[30,0,[\\\"open\\\"]],\\\"angle-right\\\"]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[8,[32,0],[[24,0,\\\"chat-message-collapser-button chat-message-collapser-opened\\\"]],[[\\\"@action\\\",\\\"@icon\\\"],[[30,0,[\\\"close\\\"]],\\\"angle-down\\\"]],null],[1,\\\"\\\\n\\\"]],[]]],[13],[1,\\\"\\\\n\\\\n\\\"],[10,0],[15,0,[28,[32,1],[\\\"chat-message-collapser-body\\\",[52,[30,0,[\\\"collapsed\\\"]],\\\"hidden\\\"]],null]],[12],[1,\\\"\\\\n  \\\"],[18,1,[[30,0,[\\\"collapsed\\\"]]]],[1,\\\"\\\\n\\\"],[13]],[\\\"&default\\\"],[\\\"if\\\",\\\"yield\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/collapser.js\",\n        \"scope\": () => [_dButton.default, _concatClass.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }, [(0, _component2.tagName)(\"\")]);\n  var _default = _exports.default = Collapser;\n});","define(\"discourse/plugins/chat/discourse/components/full-page-chat\", [\"exports\", \"@ember/helper\", \"discourse/plugins/chat/discourse/components/chat-channel\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _helper, _chatChannel, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const FullPageChat = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#each (array @channel) as |channel|}}\n    <ChatChannel\n      @channel={{channel}}\n      @targetMessageId={{@targetMessageId}}\n      @isFiltering={{@isFiltering}}\n      @onToggleFilter={{@onToggleFilter}}\n    />\n  {{/each}}\n  */\n  {\n    \"id\": \"ZkVNMzsF\",\n    \"block\": \"[[[42,[28,[31,1],[[28,[31,1],[[28,[32,0],[[30,1]],null]],null]],null],null,[[[1,\\\"  \\\"],[8,[32,1],null,[[\\\"@channel\\\",\\\"@targetMessageId\\\",\\\"@isFiltering\\\",\\\"@onToggleFilter\\\"],[[30,2],[30,3],[30,4],[30,5]]],null],[1,\\\"\\\\n\\\"]],[2]],null]],[\\\"@channel\\\",\\\"channel\\\",\\\"@targetMessageId\\\",\\\"@isFiltering\\\",\\\"@onToggleFilter\\\"],[\\\"each\\\",\\\"-track-array\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/full-page-chat.js\",\n    \"scope\": () => [_helper.array, _chatChannel.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"full-page-chat:FullPageChat\"));\n  var _default = _exports.default = FullPageChat;\n});","define(\"discourse/plugins/chat/discourse/components/reviewable/chat-message\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/helper\", \"@ember/routing\", \"discourse/components/reviewable/created-by\", \"discourse/components/reviewable/topic-link\", \"discourse/lib/highlight-watched-words\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/channel-title\", \"discourse/plugins/chat/discourse/models/chat-channel\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _helper, _routing, _createdBy, _topicLink, _highlightWatchedWords, _discourseI18n, _channelTitle, _chatChannel, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ReviewableRefreshChatMessage extends _component.default {\n    get channel() {\n      if (!this.args.reviewable.chat_channel) {\n        return;\n      }\n      return _chatChannel.default.create(this.args.reviewable.chat_channel);\n    }\n    static {\n      dt7948.n(this.prototype, \"channel\", [_tracking.cached]);\n    }\n    get messageCooked() {\n      return this.args.reviewable.payload?.message_cooked || this.args.reviewable.cooked;\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <div class=\"review-item__meta-content\">\n        <div class=\"review-item__meta-label\">{{i18n\n            \"chat.reviewable.message_in_channel\"\n          }}</div>\n      \n        <div class=\"review-item__meta-topic-title\">\n          {{#if this.channel}}\n            <LinkTo\n              @route=\"chat.channel.near-message\"\n              @models={{array\n                this.channel.slugifiedTitle\n                this.channel.id\n                @reviewable.target_id\n              }}\n            >\n              <ChannelTitle @channel={{this.channel}} />\n            </LinkTo>\n          {{else}}\n            <ReviewableTopicLink @reviewable={{@reviewable}} />\n          {{/if}}\n        </div>\n      \n        <div class=\"review-item__meta-label\">{{i18n \"review.review_user\"}}</div>\n      \n        <div class=\"review-item__meta-flagged-user\">\n          <ReviewableCreatedBy @user={{@reviewable.target_created_by}} />\n        </div>\n      </div>\n      \n      <div class=\"review-item__post\">\n        <div class=\"review-item__post-content-wrapper\">\n          <div class=\"review-item__post-content\">\n            {{highlightWatchedWords this.messageCooked @reviewable}}\n      \n            {{#if @reviewable.payload.transcript_topic_id}}\n              <div class=\"transcript\">\n                <LinkTo\n                  @route=\"topic\"\n                  @models={{array \"-\" @reviewable.payload.transcript_topic_id}}\n                  class=\"btn btn-default btn-small\"\n                >\n                  {{i18n \"review.transcript.view\"}}\n                </LinkTo>\n              </div>\n            {{/if}}\n      \n            {{yield}}\n          </div>\n        </div>\n      </div>\n      */\n      {\n        \"id\": \"6M7NL0rx\",\n        \"block\": \"[[[10,0],[14,0,\\\"review-item__meta-content\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"review-item__meta-label\\\"],[12],[1,[28,[32,0],[\\\"chat.reviewable.message_in_channel\\\"],null]],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"review-item__meta-topic-title\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"channel\\\"]],[[[1,\\\"      \\\"],[8,[32,1],null,[[\\\"@route\\\",\\\"@models\\\"],[\\\"chat.channel.near-message\\\",[28,[32,2],[[30,0,[\\\"channel\\\",\\\"slugifiedTitle\\\"]],[30,0,[\\\"channel\\\",\\\"id\\\"]],[30,1,[\\\"target_id\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[32,3],null,[[\\\"@channel\\\"],[[30,0,[\\\"channel\\\"]]]],null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[32,4],null,[[\\\"@reviewable\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"review-item__meta-label\\\"],[12],[1,[28,[32,0],[\\\"review.review_user\\\"],null]],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"review-item__meta-flagged-user\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[32,5],null,[[\\\"@user\\\"],[[30,1,[\\\"target_created_by\\\"]]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"review-item__post\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"review-item__post-content-wrapper\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"review-item__post-content\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[28,[32,6],[[30,0,[\\\"messageCooked\\\"]],[30,1]],null]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,1,[\\\"payload\\\",\\\"transcript_topic_id\\\"]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"transcript\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[32,1],[[24,0,\\\"btn btn-default btn-small\\\"]],[[\\\"@route\\\",\\\"@models\\\"],[\\\"topic\\\",[28,[32,2],[\\\"-\\\",[30,1,[\\\"payload\\\",\\\"transcript_topic_id\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[1,[28,[32,0],[\\\"review.transcript.view\\\"],null]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n      \\\"],[18,2,null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@reviewable\\\",\\\"&default\\\"],[\\\"if\\\",\\\"yield\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/reviewable/chat-message.js\",\n        \"scope\": () => [_discourseI18n.i18n, _routing.LinkTo, _helper.array, _channelTitle.default, _topicLink.default, _createdBy.default, _highlightWatchedWords.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ReviewableRefreshChatMessage;\n});","define(\"discourse/plugins/chat/discourse/components/styleguide/chat-composer-message-details\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/owner\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/lib/utilities\", \"discourse/plugins/chat/discourse/components/chat-composer-message-details\", \"discourse/plugins/chat/discourse/lib/fabricators\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _object, _owner, _service, _dButton, _utilities, _chatComposerMessageDetails, _fabricators, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const StyleguideComponent = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide/component\");\n  const Controls = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide/controls\");\n  const Row = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide/controls/row\");\n  const StyleguideExample = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide-example\");\n  class ChatStyleguideChatComposerMessageDetails extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    get message() {\n      return new _fabricators.default((0, _owner.getOwner)(this)).message({\n        user: this.currentUser\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"message\", [_tracking.cached]);\n    }\n    toggleMode() {\n      if (this.message.editing) {\n        this.message.editing = false;\n        this.message.inReplyTo = new _fabricators.default((0, _owner.getOwner)(this)).message();\n      } else {\n        this.message.editing = true;\n        this.message.inReplyTo = null;\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleMode\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <StyleguideExample @title=\"<ChatComposerMessageDetails>\">\n        <StyleguideComponent>\n          <ChatComposerMessageDetails @message={{this.message}} />\n        </StyleguideComponent>\n      \n        <Controls>\n          <Row @name=\"Mode\">\n            {{#if this.message.editing}}\n              <DButton @action={{this.toggleMode}} @translatedLabel=\"Reply\" />\n            {{else}}\n              <DButton @action={{this.toggleMode}} @translatedLabel=\"Editing\" />\n            {{/if}}\n          </Row>\n        </Controls>\n      </StyleguideExample>\n      */\n      {\n        \"id\": \"HSsWg14v\",\n        \"block\": \"[[[8,[32,0],null,[[\\\"@title\\\"],[\\\"<ChatComposerMessageDetails>\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[32,1],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,2],null,[[\\\"@message\\\"],[[30,0,[\\\"message\\\"]]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[32,3],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,4],null,[[\\\"@name\\\"],[\\\"Mode\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"message\\\",\\\"editing\\\"]],[[[1,\\\"        \\\"],[8,[32,5],null,[[\\\"@action\\\",\\\"@translatedLabel\\\"],[[30,0,[\\\"toggleMode\\\"]],\\\"Reply\\\"]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[8,[32,5],null,[[\\\"@action\\\",\\\"@translatedLabel\\\"],[[30,0,[\\\"toggleMode\\\"]],\\\"Editing\\\"]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]]]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/styleguide/chat-composer-message-details.js\",\n        \"scope\": () => [StyleguideExample, StyleguideComponent, _chatComposerMessageDetails.default, Controls, Row, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatStyleguideChatComposerMessageDetails;\n});","define(\"discourse/plugins/chat/discourse/components/styleguide/chat-composer\", [\"exports\", \"@glimmer/component\", \"@ember/modifier\", \"@ember/object\", \"@ember/owner\", \"@ember/service\", \"discourse/components/d-toggle-switch\", \"discourse/lib/utilities\", \"discourse/plugins/chat/discourse/components/chat/composer/channel\", \"discourse/plugins/chat/discourse/lib/fabricators\", \"discourse/plugins/chat/discourse/models/chat-channel\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _modifier, _object, _owner, _service, _dToggleSwitch, _utilities, _channel, _fabricators, _chatChannel, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const StyleguideComponent = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide/component\");\n  const Controls = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide/controls\");\n  const Row = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide/controls/row\");\n  const StyleguideExample = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide-example\");\n  class ChatStyleguideChatComposer extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatChannelComposer\", [_service.service]);\n    }\n    #chatChannelComposer = (dt7948.i(this, \"chatChannelComposer\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelPane\", [_service.service]);\n    }\n    #chatChannelPane = (dt7948.i(this, \"chatChannelPane\"), void 0);\n    channel = new _fabricators.default((0, _owner.getOwner)(this)).channel({\n      id: -999\n    });\n    toggleDisabled() {\n      if (this.channel.status === _chatChannel.CHANNEL_STATUSES.open) {\n        this.channel.status = _chatChannel.CHANNEL_STATUSES.readOnly;\n      } else {\n        this.channel.status = _chatChannel.CHANNEL_STATUSES.open;\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleDisabled\", [_object.action]);\n    }\n    toggleSending() {\n      this.chatChannelPane.sending = !this.chatChannelPane.sending;\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleSending\", [_object.action]);\n    }\n    onSendMessage() {\n      this.chatChannelComposer.reset();\n    }\n    static {\n      dt7948.n(this.prototype, \"onSendMessage\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <StyleguideExample @title=\"<ChatComposer>\">\n        <StyleguideComponent>\n          <Channel\n            @channel={{this.channel}}\n            @onSendMessage={{this.onSendMessage}}\n          />\n        </StyleguideComponent>\n      \n        <Controls>\n          <Row @name=\"Disabled\">\n            <DToggleSwitch\n              @state={{this.channel.isReadOnly}}\n              {{on \"click\" this.toggleDisabled}}\n            />\n          </Row>\n          <Row @name=\"Sending\">\n            <DToggleSwitch\n              @state={{this.chatChannelPane.sending}}\n              {{on \"click\" this.toggleSending}}\n            />\n          </Row>\n        </Controls>\n      </StyleguideExample>\n      */\n      {\n        \"id\": \"jnb3o2/+\",\n        \"block\": \"[[[8,[32,0],null,[[\\\"@title\\\"],[\\\"<ChatComposer>\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[32,1],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,2],null,[[\\\"@channel\\\",\\\"@onSendMessage\\\"],[[30,0,[\\\"channel\\\"]],[30,0,[\\\"onSendMessage\\\"]]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[32,3],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,4],null,[[\\\"@name\\\"],[\\\"Disabled\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[32,5],[[4,[32,6],[\\\"click\\\",[30,0,[\\\"toggleDisabled\\\"]]],null]],[[\\\"@state\\\"],[[30,0,[\\\"channel\\\",\\\"isReadOnly\\\"]]]],null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[32,4],null,[[\\\"@name\\\"],[\\\"Sending\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[32,5],[[4,[32,6],[\\\"click\\\",[30,0,[\\\"toggleSending\\\"]]],null]],[[\\\"@state\\\"],[[30,0,[\\\"chatChannelPane\\\",\\\"sending\\\"]]]],null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]]]],[],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/styleguide/chat-composer.js\",\n        \"scope\": () => [StyleguideExample, StyleguideComponent, _channel.default, Controls, Row, _dToggleSwitch.default, _modifier.on],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatStyleguideChatComposer;\n});","define(\"discourse/plugins/chat/discourse/components/styleguide/chat-header-icon\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/modifier\", \"@ember/object\", \"discourse/components/d-toggle-switch\", \"discourse/lib/utilities\", \"discourse/select-kit/components/combo-box\", \"discourse/plugins/chat/discourse/components/chat/header/icon\", \"discourse/plugins/chat/discourse/lib/chat-constants\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _modifier, _object, _dToggleSwitch, _utilities, _comboBox, _icon, _chatConstants, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const StyleguideComponent = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide/component\");\n  const Controls = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide/controls\");\n  const Row = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide/controls/row\");\n  const StyleguideExample = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide-example\");\n  class ChatStyleguideChatHeaderIcon extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"isActive\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #isActive = (dt7948.i(this, \"isActive\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUserInDnD\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #currentUserInDnD = (dt7948.i(this, \"currentUserInDnD\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"urgentCount\", [_tracking.tracked]);\n    }\n    #urgentCount = (dt7948.i(this, \"urgentCount\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"unreadCount\", [_tracking.tracked]);\n    }\n    #unreadCount = (dt7948.i(this, \"unreadCount\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"indicatorPreference\", [_tracking.tracked], function () {\n        return _chatConstants.HEADER_INDICATOR_PREFERENCE_ALL_NEW;\n      });\n    }\n    #indicatorPreference = (dt7948.i(this, \"indicatorPreference\"), void 0);\n    get indicatorPreferences() {\n      return [_chatConstants.HEADER_INDICATOR_PREFERENCE_ALL_NEW, _chatConstants.HEADER_INDICATOR_PREFERENCE_DM_AND_MENTIONS, _chatConstants.HEADER_INDICATOR_PREFERENCE_ONLY_MENTIONS, _chatConstants.HEADER_INDICATOR_PREFERENCE_NEVER];\n    }\n    toggleIsActive() {\n      this.isActive = !this.isActive;\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleIsActive\", [_object.action]);\n    }\n    toggleCurrentUserInDnD() {\n      this.currentUserInDnD = !this.currentUserInDnD;\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleCurrentUserInDnD\", [_object.action]);\n    }\n    updateUnreadCount(event) {\n      this.unreadCount = event.target.value;\n    }\n    static {\n      dt7948.n(this.prototype, \"updateUnreadCount\", [_object.action]);\n    }\n    updateUrgentCount(event) {\n      this.urgentCount = event.target.value;\n    }\n    static {\n      dt7948.n(this.prototype, \"updateUrgentCount\", [_object.action]);\n    }\n    updateIndicatorPreference(value) {\n      this.indicatorPreference = value;\n    }\n    static {\n      dt7948.n(this.prototype, \"updateIndicatorPreference\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <StyleguideExample @title=\"<Chat::Header::Icon>\">\n        <StyleguideComponent>\n          <header\n            class=\"d-header\"\n            style=\"display: flex; align-items: center; justify-content: center;\"\n          >\n            <ul class=\"d-header-icons\">\n              <li class=\"header-dropdown-toggle chat-header-icon\">\n                <Icon\n                  @isActive={{this.isActive}}\n                  @currentUserInDnD={{this.currentUserInDnD}}\n                  @unreadCount={{this.unreadCount}}\n                  @urgentCount={{this.urgentCount}}\n                  @indicatorPreference={{this.indicatorPreference}}\n                />\n              </li>\n            </ul>\n          </header>\n        </StyleguideComponent>\n      \n        <Controls>\n          <Row @name=\"isActive\">\n            <DToggleSwitch\n              @state={{this.isActive}}\n              {{on \"click\" this.toggleIsActive}}\n            />\n          </Row>\n          <Row @name=\"currentUserInDnD\">\n            <DToggleSwitch\n              @state={{this.currentUserInDnD}}\n              {{on \"click\" this.toggleCurrentUserInDnD}}\n            />\n          </Row>\n        </Controls>\n        <Row @name=\"Unread count\">\n          <input\n            type=\"number\"\n            {{on \"input\" this.updateUnreadCount}}\n            value={{this.unreadCount}}\n          />\n        </Row>\n        <Row @name=\"Urgent count\">\n          <input\n            type=\"number\"\n            {{on \"input\" this.updateUrgentCount}}\n            value={{this.urgentCount}}\n          />\n        </Row>\n        <Row @name=\"Indicator preference\">\n          <ComboBox\n            @value={{this.indicatorPreference}}\n            @content={{this.indicatorPreferences}}\n            @onChange={{this.updateIndicatorPreference}}\n            @valueProperty={{null}}\n            @nameProperty={{null}}\n          />\n      \n        </Row>\n      </StyleguideExample>\n      */\n      {\n        \"id\": \"CFvDWeJt\",\n        \"block\": \"[[[8,[32,0],null,[[\\\"@title\\\"],[\\\"<Chat::Header::Icon>\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[32,1],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,\\\"header\\\"],[14,0,\\\"d-header\\\"],[14,5,\\\"display: flex; align-items: center; justify-content: center;\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"ul\\\"],[14,0,\\\"d-header-icons\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"li\\\"],[14,0,\\\"header-dropdown-toggle chat-header-icon\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[32,2],null,[[\\\"@isActive\\\",\\\"@currentUserInDnD\\\",\\\"@unreadCount\\\",\\\"@urgentCount\\\",\\\"@indicatorPreference\\\"],[[30,0,[\\\"isActive\\\"]],[30,0,[\\\"currentUserInDnD\\\"]],[30,0,[\\\"unreadCount\\\"]],[30,0,[\\\"urgentCount\\\"]],[30,0,[\\\"indicatorPreference\\\"]]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[32,3],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,4],null,[[\\\"@name\\\"],[\\\"isActive\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[32,5],[[4,[32,6],[\\\"click\\\",[30,0,[\\\"toggleIsActive\\\"]]],null]],[[\\\"@state\\\"],[[30,0,[\\\"isActive\\\"]]]],null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[32,4],null,[[\\\"@name\\\"],[\\\"currentUserInDnD\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[32,5],[[4,[32,6],[\\\"click\\\",[30,0,[\\\"toggleCurrentUserInDnD\\\"]]],null]],[[\\\"@state\\\"],[[30,0,[\\\"currentUserInDnD\\\"]]]],null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[32,4],null,[[\\\"@name\\\"],[\\\"Unread count\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[11,\\\"input\\\"],[16,2,[30,0,[\\\"unreadCount\\\"]]],[24,4,\\\"number\\\"],[4,[32,6],[\\\"input\\\",[30,0,[\\\"updateUnreadCount\\\"]]],null],[12],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[32,4],null,[[\\\"@name\\\"],[\\\"Urgent count\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[11,\\\"input\\\"],[16,2,[30,0,[\\\"urgentCount\\\"]]],[24,4,\\\"number\\\"],[4,[32,6],[\\\"input\\\",[30,0,[\\\"updateUrgentCount\\\"]]],null],[12],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[32,4],null,[[\\\"@name\\\"],[\\\"Indicator preference\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,7],null,[[\\\"@value\\\",\\\"@content\\\",\\\"@onChange\\\",\\\"@valueProperty\\\",\\\"@nameProperty\\\"],[[30,0,[\\\"indicatorPreference\\\"]],[30,0,[\\\"indicatorPreferences\\\"]],[30,0,[\\\"updateIndicatorPreference\\\"]],null,null]],null],[1,\\\"\\\\n\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]]]],[],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/styleguide/chat-header-icon.js\",\n        \"scope\": () => [StyleguideExample, StyleguideComponent, _icon.default, Controls, Row, _dToggleSwitch.default, _modifier.on, _comboBox.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatStyleguideChatHeaderIcon;\n});","define(\"discourse/plugins/chat/discourse/components/styleguide/chat-message\", [\"exports\", \"@glimmer/component\", \"@ember/modifier\", \"@ember/object\", \"@ember/owner\", \"@ember/service\", \"discourse/components/d-toggle-switch\", \"discourse/lib/utilities\", \"discourse/truth-helpers\", \"discourse/plugins/chat/discourse/components/chat-message\", \"discourse/plugins/chat/discourse/lib/chat-messages-manager\", \"discourse/plugins/chat/discourse/lib/fabricators\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _modifier, _object, _owner, _service, _dToggleSwitch, _utilities, _truthHelpers, _chatMessage, _chatMessagesManager, _fabricators, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const StyleguideComponent = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide/component\");\n  const Controls = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide/controls\");\n  const Row = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide/controls/row\");\n  const StyleguideExample = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide-example\");\n  class ChatStyleguideChatMessage extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    manager = new _chatMessagesManager.default((0, _owner.getOwner)(this));\n    constructor() {\n      super(...arguments);\n      this.message = new _fabricators.default((0, _owner.getOwner)(this)).message({\n        user: this.currentUser\n      });\n      this.message.cook();\n    }\n    toggleDeleted() {\n      if (this.message.deletedAt) {\n        this.message.deletedAt = null;\n      } else {\n        this.message.deletedAt = moment();\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleDeleted\", [_object.action]);\n    }\n    toggleBookmarked() {\n      if (this.message.bookmark) {\n        this.message.bookmark = null;\n      } else {\n        this.message.bookmark = new _fabricators.default((0, _owner.getOwner)(this)).bookmark();\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleBookmarked\", [_object.action]);\n    }\n    toggleHighlighted() {\n      this.message.highlighted = !this.message.highlighted;\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleHighlighted\", [_object.action]);\n    }\n    toggleEdited() {\n      this.message.edited = !this.message.edited;\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleEdited\", [_object.action]);\n    }\n    toggleThread() {\n      if (this.message.thread) {\n        this.message.channel.threadingEnabled = false;\n        this.message.thread = null;\n      } else {\n        this.message.thread = new _fabricators.default((0, _owner.getOwner)(this)).thread({\n          channel: this.message.channel\n        });\n        this.message.thread.preview.replyCount = 1;\n        this.message.channel.threadingEnabled = true;\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleThread\", [_object.action]);\n    }\n    async updateMessage(event) {\n      this.message.message = event.target.value;\n      await this.message.cook();\n    }\n    static {\n      dt7948.n(this.prototype, \"updateMessage\", [_object.action]);\n    }\n    toggleReaction() {\n      if (this.message.reactions?.length) {\n        this.message.reactions = [];\n      } else {\n        this.message.reactions = [new _fabricators.default((0, _owner.getOwner)(this)).reaction({\n          emoji: \"heart\"\n        }), new _fabricators.default((0, _owner.getOwner)(this)).reaction({\n          emoji: \"rocket\",\n          reacted: true\n        })];\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleReaction\", [_object.action]);\n    }\n    toggleUpload() {\n      if (this.message.uploads?.length) {\n        this.message.uploads = [];\n      } else {\n        this.message.uploads = [new _fabricators.default((0, _owner.getOwner)(this)).upload(), new _fabricators.default((0, _owner.getOwner)(this)).upload()];\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleUpload\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <StyleguideExample @title=\"<ChatMessage>\">\n        <StyleguideComponent>\n          <ChatMessage @message={{this.message}} @context=\"channel\" />\n        </StyleguideComponent>\n      \n        <Controls>\n          <Row @name=\"Deleted\">\n            <DToggleSwitch\n              @state={{not (not this.message.deletedAt)}}\n              {{on \"click\" this.toggleDeleted}}\n            />\n          </Row>\n          <Row @name=\"Bookmark\">\n            <DToggleSwitch\n              @state={{not (not this.message.bookmark)}}\n              {{on \"click\" this.toggleBookmarked}}\n            />\n          </Row>\n          <Row @name=\"Thread\">\n            <DToggleSwitch\n              @state={{not (not this.message.thread)}}\n              {{on \"click\" this.toggleThread}}\n            />\n          </Row>\n          <Row @name=\"Reactions\">\n            <DToggleSwitch\n              @state={{not (not this.message.reactions)}}\n              {{on \"click\" this.toggleReaction}}\n            />\n          </Row>\n          <Row @name=\"Upload\">\n            <DToggleSwitch\n              @state={{not (not this.message.uploads)}}\n              {{on \"click\" this.toggleUpload}}\n            />\n          </Row>\n          <Row @name=\"Message\">\n            <textarea\n              {{on \"input\" this.updateMessage}}\n            >{{this.message.message}}</textarea>\n          </Row>\n        </Controls>\n      </StyleguideExample>\n      */\n      {\n        \"id\": \"RnASjSB9\",\n        \"block\": \"[[[8,[32,0],null,[[\\\"@title\\\"],[\\\"<ChatMessage>\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[32,1],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,2],null,[[\\\"@message\\\",\\\"@context\\\"],[[30,0,[\\\"message\\\"]],\\\"channel\\\"]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[32,3],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,4],null,[[\\\"@name\\\"],[\\\"Deleted\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[32,5],[[4,[32,7],[\\\"click\\\",[30,0,[\\\"toggleDeleted\\\"]]],null]],[[\\\"@state\\\"],[[28,[32,6],[[28,[32,6],[[30,0,[\\\"message\\\",\\\"deletedAt\\\"]]],null]],null]]],null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[32,4],null,[[\\\"@name\\\"],[\\\"Bookmark\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[32,5],[[4,[32,7],[\\\"click\\\",[30,0,[\\\"toggleBookmarked\\\"]]],null]],[[\\\"@state\\\"],[[28,[32,6],[[28,[32,6],[[30,0,[\\\"message\\\",\\\"bookmark\\\"]]],null]],null]]],null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[32,4],null,[[\\\"@name\\\"],[\\\"Thread\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[32,5],[[4,[32,7],[\\\"click\\\",[30,0,[\\\"toggleThread\\\"]]],null]],[[\\\"@state\\\"],[[28,[32,6],[[28,[32,6],[[30,0,[\\\"message\\\",\\\"thread\\\"]]],null]],null]]],null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[32,4],null,[[\\\"@name\\\"],[\\\"Reactions\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[32,5],[[4,[32,7],[\\\"click\\\",[30,0,[\\\"toggleReaction\\\"]]],null]],[[\\\"@state\\\"],[[28,[32,6],[[28,[32,6],[[30,0,[\\\"message\\\",\\\"reactions\\\"]]],null]],null]]],null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[32,4],null,[[\\\"@name\\\"],[\\\"Upload\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[32,5],[[4,[32,7],[\\\"click\\\",[30,0,[\\\"toggleUpload\\\"]]],null]],[[\\\"@state\\\"],[[28,[32,6],[[28,[32,6],[[30,0,[\\\"message\\\",\\\"uploads\\\"]]],null]],null]]],null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[32,4],null,[[\\\"@name\\\"],[\\\"Message\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[11,\\\"textarea\\\"],[4,[32,7],[\\\"input\\\",[30,0,[\\\"updateMessage\\\"]]],null],[12],[1,[30,0,[\\\"message\\\",\\\"message\\\"]]],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]]]],[],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/styleguide/chat-message.js\",\n        \"scope\": () => [StyleguideExample, StyleguideComponent, _chatMessage.default, Controls, Row, _dToggleSwitch.default, _truthHelpers.not, _modifier.on],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatStyleguideChatMessage;\n});","define(\"discourse/plugins/chat/discourse/components/styleguide/chat-modal-archive-channel\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/owner\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/lib/utilities\", \"discourse/plugins/chat/discourse/components/chat/modal/archive-channel\", \"discourse/plugins/chat/discourse/lib/fabricators\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _owner, _service, _dButton, _utilities, _archiveChannel, _fabricators, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const Row = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide/controls/row\");\n  const StyleguideExample = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide-example\");\n  class ChatStyleguideChatModalArchiveChannel extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    channel = new _fabricators.default((0, _owner.getOwner)(this)).channel();\n    openModal() {\n      return this.modal.show(_archiveChannel.default, {\n        model: {\n          channel: this.channel\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"openModal\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <StyleguideExample @title=\"<Chat::Modal::ArchiveChannel>\">\n        <Row>\n          <DButton @translatedLabel=\"Open modal\" @action={{this.openModal}} />\n        </Row>\n      </StyleguideExample>\n      */\n      {\n        \"id\": \"7XwXjRLa\",\n        \"block\": \"[[[8,[32,0],null,[[\\\"@title\\\"],[\\\"<Chat::Modal::ArchiveChannel>\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[32,1],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,2],null,[[\\\"@translatedLabel\\\",\\\"@action\\\"],[\\\"Open modal\\\",[30,0,[\\\"openModal\\\"]]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]]]],[],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/styleguide/chat-modal-archive-channel.js\",\n        \"scope\": () => [StyleguideExample, Row, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatStyleguideChatModalArchiveChannel;\n});","define(\"discourse/plugins/chat/discourse/components/styleguide/chat-modal-create-channel\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/lib/utilities\", \"discourse/plugins/chat/discourse/components/chat/modal/create-channel\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _dButton, _utilities, _createChannel, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const Row = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide/controls/row\");\n  const StyleguideExample = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide-example\");\n  class ChatStyleguideChatModalCreateChannel extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    openModal() {\n      return this.modal.show(_createChannel.default);\n    }\n    static {\n      dt7948.n(this.prototype, \"openModal\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <StyleguideExample @title=\"<Chat::Modal::CreateChannel>\">\n        <Row>\n          <DButton @translatedLabel=\"Open modal\" @action={{this.openModal}} />\n        </Row>\n      </StyleguideExample>\n      */\n      {\n        \"id\": \"YJiKC22x\",\n        \"block\": \"[[[8,[32,0],null,[[\\\"@title\\\"],[\\\"<Chat::Modal::CreateChannel>\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[32,1],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,2],null,[[\\\"@translatedLabel\\\",\\\"@action\\\"],[\\\"Open modal\\\",[30,0,[\\\"openModal\\\"]]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]]]],[],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/styleguide/chat-modal-create-channel.js\",\n        \"scope\": () => [StyleguideExample, Row, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatStyleguideChatModalCreateChannel;\n});","define(\"discourse/plugins/chat/discourse/components/styleguide/chat-modal-delete-channel\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/owner\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/lib/utilities\", \"discourse/plugins/chat/discourse/components/chat/modal/delete-channel\", \"discourse/plugins/chat/discourse/lib/fabricators\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _owner, _service, _dButton, _utilities, _deleteChannel, _fabricators, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const Row = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide/controls/row\");\n  const StyleguideExample = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide-example\");\n  class ChatStyleguideChatModalDeleteChannel extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    channel = new _fabricators.default((0, _owner.getOwner)(this)).channel();\n    openModal() {\n      return this.modal.show(_deleteChannel.default, {\n        model: {\n          channel: this.channel\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"openModal\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <StyleguideExample @title=\"<Chat::Modal::DeleteChannel>\">\n        <Row>\n          <DButton @translatedLabel=\"Open modal\" @action={{this.openModal}} />\n        </Row>\n      </StyleguideExample>\n      */\n      {\n        \"id\": \"ol9i7eO6\",\n        \"block\": \"[[[8,[32,0],null,[[\\\"@title\\\"],[\\\"<Chat::Modal::DeleteChannel>\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[32,1],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,2],null,[[\\\"@translatedLabel\\\",\\\"@action\\\"],[\\\"Open modal\\\",[30,0,[\\\"openModal\\\"]]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]]]],[],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/styleguide/chat-modal-delete-channel.js\",\n        \"scope\": () => [StyleguideExample, Row, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatStyleguideChatModalDeleteChannel;\n});","define(\"discourse/plugins/chat/discourse/components/styleguide/chat-modal-edit-channel-description\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/owner\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/lib/utilities\", \"discourse/plugins/chat/discourse/components/chat/modal/edit-channel-description\", \"discourse/plugins/chat/discourse/lib/fabricators\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _owner, _service, _dButton, _utilities, _editChannelDescription, _fabricators, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const Row = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide/controls/row\");\n  const StyleguideExample = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide-example\");\n  class ChatStyleguideChatModalEditChannelDescription extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    channel = new _fabricators.default((0, _owner.getOwner)(this)).channel();\n    openModal() {\n      return this.modal.show(_editChannelDescription.default, {\n        model: this.channel\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"openModal\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <StyleguideExample @title=\"<Chat::Modal::EditChannelDescription>\">\n        <Row>\n          <DButton @translatedLabel=\"Open modal\" @action={{this.openModal}} />\n        </Row>\n      </StyleguideExample>\n      */\n      {\n        \"id\": \"FFhGD8Jb\",\n        \"block\": \"[[[8,[32,0],null,[[\\\"@title\\\"],[\\\"<Chat::Modal::EditChannelDescription>\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[32,1],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,2],null,[[\\\"@translatedLabel\\\",\\\"@action\\\"],[\\\"Open modal\\\",[30,0,[\\\"openModal\\\"]]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]]]],[],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/styleguide/chat-modal-edit-channel-description.js\",\n        \"scope\": () => [StyleguideExample, Row, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatStyleguideChatModalEditChannelDescription;\n});","define(\"discourse/plugins/chat/discourse/components/styleguide/chat-modal-edit-channel-name\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/owner\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/lib/utilities\", \"discourse/plugins/chat/discourse/components/chat/modal/edit-channel-name\", \"discourse/plugins/chat/discourse/lib/fabricators\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _owner, _service, _dButton, _utilities, _editChannelName, _fabricators, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const Row = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide/controls/row\");\n  const StyleguideExample = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide-example\");\n  class ChatStyleguideChatModalEditChannelName extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    channel = new _fabricators.default((0, _owner.getOwner)(this)).channel();\n    openModal() {\n      return this.modal.show(_editChannelName.default, {\n        model: this.channel\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"openModal\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <StyleguideExample @title=\"<Chat::Modal::EditChannelName>\">\n        <Row>\n          <DButton @translatedLabel=\"Open modal\" @action={{this.openModal}} />\n        </Row>\n      </StyleguideExample>\n      */\n      {\n        \"id\": \"ssegwMfO\",\n        \"block\": \"[[[8,[32,0],null,[[\\\"@title\\\"],[\\\"<Chat::Modal::EditChannelName>\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[32,1],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,2],null,[[\\\"@translatedLabel\\\",\\\"@action\\\"],[\\\"Open modal\\\",[30,0,[\\\"openModal\\\"]]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]]]],[],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/styleguide/chat-modal-edit-channel-name.js\",\n        \"scope\": () => [StyleguideExample, Row, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatStyleguideChatModalEditChannelName;\n});","define(\"discourse/plugins/chat/discourse/components/styleguide/chat-modal-move-message-to-channel\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/owner\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/lib/utilities\", \"discourse/plugins/chat/discourse/components/chat/modal/move-message-to-channel\", \"discourse/plugins/chat/discourse/lib/fabricators\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _owner, _service, _dButton, _utilities, _moveMessageToChannel, _fabricators, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const Row = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide/controls/row\");\n  const StyleguideExample = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide-example\");\n  class ChatStyleguideChatModalMoveMessageToChannel extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    channel = new _fabricators.default((0, _owner.getOwner)(this)).channel();\n    selectedMessageIds = [new _fabricators.default((0, _owner.getOwner)(this)).message({\n      channel: this.channel\n    })].map(item => item.id);\n    openModal() {\n      return this.modal.show(_moveMessageToChannel.default, {\n        model: {\n          sourceChannel: this.channel,\n          selectedMessageIds: [new _fabricators.default((0, _owner.getOwner)(this)).message({\n            channel: this.channel\n          })].map(item => item.id)\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"openModal\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <StyleguideExample @title=\"<Chat::Modal::MoveMessageToChannel>\">\n        <Row>\n          <DButton @translatedLabel=\"Open modal\" @action={{this.openModal}} />\n        </Row>\n      </StyleguideExample>\n      */\n      {\n        \"id\": \"QhVKmmv4\",\n        \"block\": \"[[[8,[32,0],null,[[\\\"@title\\\"],[\\\"<Chat::Modal::MoveMessageToChannel>\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[32,1],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,2],null,[[\\\"@translatedLabel\\\",\\\"@action\\\"],[\\\"Open modal\\\",[30,0,[\\\"openModal\\\"]]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]]]],[],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/styleguide/chat-modal-move-message-to-channel.js\",\n        \"scope\": () => [StyleguideExample, Row, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatStyleguideChatModalMoveMessageToChannel;\n});","define(\"discourse/plugins/chat/discourse/components/styleguide/chat-modal-new-message\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/lib/utilities\", \"discourse/plugins/chat/discourse/components/chat/modal/new-message\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _dButton, _utilities, _newMessage, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const Row = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide/controls/row\");\n  const StyleguideExample = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide-example\");\n  class ChatStyleguideChatModalNewMessage extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    openModal() {\n      return this.modal.show(_newMessage.default);\n    }\n    static {\n      dt7948.n(this.prototype, \"openModal\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <StyleguideExample @title=\"<Chat::Modal::NewMessage>\">\n        <Row>\n          <DButton @translatedLabel=\"Open modal\" @action={{this.openModal}} />\n        </Row>\n      </StyleguideExample>\n      */\n      {\n        \"id\": \"jX+JnCRl\",\n        \"block\": \"[[[8,[32,0],null,[[\\\"@title\\\"],[\\\"<Chat::Modal::NewMessage>\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[32,1],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,2],null,[[\\\"@translatedLabel\\\",\\\"@action\\\"],[\\\"Open modal\\\",[30,0,[\\\"openModal\\\"]]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]]]],[],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/styleguide/chat-modal-new-message.js\",\n        \"scope\": () => [StyleguideExample, Row, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatStyleguideChatModalNewMessage;\n});","define(\"discourse/plugins/chat/discourse/components/styleguide/chat-modal-thread-settings\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/owner\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/lib/utilities\", \"discourse/plugins/chat/discourse/components/chat/modal/thread-settings\", \"discourse/plugins/chat/discourse/lib/fabricators\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _owner, _service, _dButton, _utilities, _threadSettings, _fabricators, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const Row = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide/controls/row\");\n  const StyleguideExample = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide-example\");\n  class ChatStyleguideChatModalThreadSettings extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    openModal() {\n      return this.modal.show(_threadSettings.default, {\n        model: new _fabricators.default((0, _owner.getOwner)(this)).thread()\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"openModal\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <StyleguideExample @title=\"<Chat::Modal::ThreadSettings>\">\n        <Row>\n          <DButton @translatedLabel=\"Open modal\" @action={{this.openModal}} />\n        </Row>\n      </StyleguideExample>\n      */\n      {\n        \"id\": \"XwHXvf7D\",\n        \"block\": \"[[[8,[32,0],null,[[\\\"@title\\\"],[\\\"<Chat::Modal::ThreadSettings>\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[32,1],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,2],null,[[\\\"@translatedLabel\\\",\\\"@action\\\"],[\\\"Open modal\\\",[30,0,[\\\"openModal\\\"]]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]]]],[],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/styleguide/chat-modal-thread-settings.js\",\n        \"scope\": () => [StyleguideExample, Row, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatStyleguideChatModalThreadSettings;\n});","define(\"discourse/plugins/chat/discourse/components/styleguide/chat-modal-toggle-channel-status\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/owner\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/lib/utilities\", \"discourse/plugins/chat/discourse/components/chat/modal/toggle-channel-status\", \"discourse/plugins/chat/discourse/lib/fabricators\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _owner, _service, _dButton, _utilities, _toggleChannelStatus, _fabricators, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const Row = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide/controls/row\");\n  const StyleguideExample = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide-example\");\n  class ChatStyleguideChatModalToggleChannelStatus extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    openModal() {\n      return this.modal.show(_toggleChannelStatus.default, {\n        model: new _fabricators.default((0, _owner.getOwner)(this)).channel()\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"openModal\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <StyleguideExample @title=\"<Chat::Modal::ToggleChannelStatus>\">\n        <Row>\n          <DButton @translatedLabel=\"Open modal\" @action={{this.openModal}} />\n        </Row>\n      </StyleguideExample>\n      */\n      {\n        \"id\": \"IU9BByG6\",\n        \"block\": \"[[[8,[32,0],null,[[\\\"@title\\\"],[\\\"<Chat::Modal::ToggleChannelStatus>\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[32,1],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,2],null,[[\\\"@translatedLabel\\\",\\\"@action\\\"],[\\\"Open modal\\\",[30,0,[\\\"openModal\\\"]]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]]]],[],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/styleguide/chat-modal-toggle-channel-status.js\",\n        \"scope\": () => [StyleguideExample, Row, _dButton.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatStyleguideChatModalToggleChannelStatus;\n});","define(\"discourse/plugins/chat/discourse/components/styleguide/chat-thread-list-item\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/owner\", \"@ember/runloop\", \"discourse/lib/utilities\", \"discourse/plugins/chat/discourse/components/chat/thread-list/item\", \"discourse/plugins/chat/discourse/lib/fabricators\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _owner, _runloop, _utilities, _item, _fabricators, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const StyleguideComponent = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide/component\");\n  const StyleguideExample = (0, _utilities.optionalRequire)(\"discourse/plugins/styleguide/discourse/components/styleguide-example\");\n  class ChatStyleguideChatThreadListItem extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"thread\", [_tracking.tracked]);\n    }\n    #thread = (dt7948.i(this, \"thread\"), void 0);\n    constructor() {\n      super(...arguments);\n      (0, _runloop.next)(() => {\n        this.thread = new _fabricators.default((0, _owner.getOwner)(this)).thread();\n      });\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <StyleguideExample @title=\"<Chat::ThreadList::Item>\">\n        <StyleguideComponent>\n          {{#if this.thread}}\n            <Item @thread={{this.thread}} />\n          {{/if}}\n        </StyleguideComponent>\n      </StyleguideExample>\n      */\n      {\n        \"id\": \"9h2MdmfV\",\n        \"block\": \"[[[8,[32,0],null,[[\\\"@title\\\"],[\\\"<Chat::ThreadList::Item>\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[32,1],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"thread\\\"]],[[[1,\\\"      \\\"],[8,[32,2],null,[[\\\"@thread\\\"],[[30,0,[\\\"thread\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]]]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/styleguide/chat-thread-list-item.js\",\n        \"scope\": () => [StyleguideExample, StyleguideComponent, _item.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatStyleguideChatThreadListItem;\n});","define(\"discourse/plugins/chat/discourse/components/styleguide/organisms/chat\", [\"exports\", \"discourse/plugins/chat/discourse/components/styleguide/chat-composer\", \"discourse/plugins/chat/discourse/components/styleguide/chat-composer-message-details\", \"discourse/plugins/chat/discourse/components/styleguide/chat-header-icon\", \"discourse/plugins/chat/discourse/components/styleguide/chat-message\", \"discourse/plugins/chat/discourse/components/styleguide/chat-modal-archive-channel\", \"discourse/plugins/chat/discourse/components/styleguide/chat-modal-create-channel\", \"discourse/plugins/chat/discourse/components/styleguide/chat-modal-delete-channel\", \"discourse/plugins/chat/discourse/components/styleguide/chat-modal-edit-channel-description\", \"discourse/plugins/chat/discourse/components/styleguide/chat-modal-edit-channel-name\", \"discourse/plugins/chat/discourse/components/styleguide/chat-modal-move-message-to-channel\", \"discourse/plugins/chat/discourse/components/styleguide/chat-modal-new-message\", \"discourse/plugins/chat/discourse/components/styleguide/chat-modal-thread-settings\", \"discourse/plugins/chat/discourse/components/styleguide/chat-modal-toggle-channel-status\", \"discourse/plugins/chat/discourse/components/styleguide/chat-thread-list-item\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _chatComposer, _chatComposerMessageDetails, _chatHeaderIcon, _chatMessage, _chatModalArchiveChannel, _chatModalCreateChannel, _chatModalDeleteChannel, _chatModalEditChannelDescription, _chatModalEditChannelName, _chatModalMoveMessageToChannel, _chatModalNewMessage, _chatModalThreadSettings, _chatModalToggleChannelStatus, _chatThreadListItem, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatOrganism = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <ChatMessage />\n  <ChatComposer />\n  <ChatThreadListItem />\n  <ChatComposerMessageDetails />\n  <ChatHeaderIcon />\n  \n  <h2>Modals</h2>\n  \n  <ChatModalArchiveChannel />\n  <ChatModalMoveMessageToChannel />\n  <ChatModalDeleteChannel />\n  <ChatModalEditChannelDescription />\n  <ChatModalEditChannelName />\n  <ChatModalThreadSettings />\n  <ChatModalCreateChannel />\n  <ChatModalToggleChannelStatus />\n  <ChatModalNewMessage />\n  */\n  {\n    \"id\": \"InyGbqRR\",\n    \"block\": \"[[[8,[32,0],null,null,null],[1,\\\"\\\\n\\\"],[8,[32,1],null,null,null],[1,\\\"\\\\n\\\"],[8,[32,2],null,null,null],[1,\\\"\\\\n\\\"],[8,[32,3],null,null,null],[1,\\\"\\\\n\\\"],[8,[32,4],null,null,null],[1,\\\"\\\\n\\\\n\\\"],[10,\\\"h2\\\"],[12],[1,\\\"Modals\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[32,5],null,null,null],[1,\\\"\\\\n\\\"],[8,[32,6],null,null,null],[1,\\\"\\\\n\\\"],[8,[32,7],null,null,null],[1,\\\"\\\\n\\\"],[8,[32,8],null,null,null],[1,\\\"\\\\n\\\"],[8,[32,9],null,null,null],[1,\\\"\\\\n\\\"],[8,[32,10],null,null,null],[1,\\\"\\\\n\\\"],[8,[32,11],null,null,null],[1,\\\"\\\\n\\\"],[8,[32,12],null,null,null],[1,\\\"\\\\n\\\"],[8,[32,13],null,null,null]],[],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/styleguide/organisms/chat.js\",\n    \"scope\": () => [_chatMessage.default, _chatComposer.default, _chatThreadListItem.default, _chatComposerMessageDetails.default, _chatHeaderIcon.default, _chatModalArchiveChannel.default, _chatModalMoveMessageToChannel.default, _chatModalDeleteChannel.default, _chatModalEditChannelDescription.default, _chatModalEditChannelName.default, _chatModalThreadSettings.default, _chatModalCreateChannel.default, _chatModalToggleChannelStatus.default, _chatModalNewMessage.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"chat:ChatOrganism\"));\n  var _default = _exports.default = ChatOrganism;\n});","define(\"discourse/plugins/chat/discourse/components/svg/chat-zero\", [\"exports\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const SvgChatZero = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <svg\n    width=\"217\"\n    height=\"163\"\n    viewBox=\"0 0 217 163\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <path\n      d=\"M4 128.5C12.5 128.5 30.5 148.5 69.5 142.5C86.9422 139.817 168.5 84.5 197.5 73\"\n      stroke=\"var(--tertiary-high)\"\n      stroke-linecap=\"round\"\n      stroke-dasharray=\"6 6\"\n    />\n    <path\n      fill-rule=\"evenodd\"\n      clip-rule=\"evenodd\"\n      d=\"M53 15C39.7452 15 29 25.7452 29 39V96.4576C29 109.377 39.2089 119.913 52 120.437V137L74.3809 120.458H156C169.255 120.458 180 109.712 180 96.4576V39C180 25.7452 169.255 15 156 15H53Z\"\n      fill=\"var(--secondary)\"\n    />\n    <path\n      d=\"M52 120.437H52.5V119.957L52.0205 119.938L52 120.437ZM52 137H51.5V137.991L52.2972 137.402L52 137ZM74.3809 120.458V119.958H74.2162L74.0837 120.056L74.3809 120.458ZM29.5 39C29.5 26.0213 40.0213 15.5 53 15.5V14.5C39.469 14.5 28.5 25.469 28.5 39H29.5ZM29.5 96.4576V39H28.5V96.4576H29.5ZM52.0205 119.938C39.4962 119.424 29.5 109.108 29.5 96.4576H28.5C28.5 109.647 38.9216 120.402 51.9795 120.937L52.0205 119.938ZM52.5 137V120.437H51.5V137H52.5ZM74.0837 120.056L51.7028 136.598L52.2972 137.402L74.6781 120.86L74.0837 120.056ZM156 119.958H74.3809V120.958H156V119.958ZM179.5 96.4576C179.5 109.436 168.979 119.958 156 119.958V120.958C169.531 120.958 180.5 109.989 180.5 96.4576H179.5ZM179.5 39V96.4576H180.5V39H179.5ZM156 15.5C168.979 15.5 179.5 26.0213 179.5 39H180.5C180.5 25.469 169.531 14.5 156 14.5V15.5ZM53 15.5H156V14.5H53V15.5Z\"\n      fill=\"var(--tertiary-high)\"\n    />\n    <ellipse cx=\"104\" cy=\"156\" rx=\"96\" ry=\"7\" fill=\"var(--primary-low)\" />\n    <path\n      d=\"M215.833 65.4678L209.881 73.3052C209.749 73.5001 209.525 73.6186 209.283 73.6212C209.158 73.6066 209.033 73.592 208.909 73.525C208.827 73.4803 208.755 73.415 208.695 73.3292L206.751 70.9161L204.851 71.9128C204.691 72.0124 204.513 71.9961 204.369 71.9179C204.142 71.7951 204.057 71.5092 204.18 71.2825L205.252 69.3042C205.341 69.1393 205.46 69.0174 205.598 68.959L213.217 65.6229L204.2 67.8014L202.557 65.7653C202.386 65.5394 202.333 65.244 202.478 64.9761C202.614 64.6765 202.849 64.5374 203.143 64.5366L215.222 64.2836C215.495 64.2716 215.784 64.4279 215.912 64.6838C216.04 64.9397 216.009 65.2428 215.833 65.4678Z\"\n      fill=\"var(--tertiary-high)\"\n    />\n    <ellipse\n      cx=\"148\"\n      cy=\"18.4167\"\n      rx=\"17\"\n      ry=\"18.4167\"\n      fill=\"var(--primary-low)\"\n    />\n    <path\n      d=\"M147.883 8.27081C149.963 8.27081 151.589 9.013 152.761 10.4974C154.157 12.2552 154.855 15.1702 154.855 19.2425C154.855 23.305 154.152 26.2249 152.746 28.0023C151.584 29.4671 149.963 30.1995 147.883 30.1995C145.793 30.1995 144.108 29.3987 142.829 27.7972C141.55 26.1859 140.91 23.3196 140.91 19.1985C140.91 15.1556 141.613 12.2454 143.02 10.4681C144.182 9.00323 145.803 8.27081 147.883 8.27081ZM147.883 11.6839C147.385 11.6839 146.94 11.845 146.55 12.1673C146.159 12.4798 145.856 13.0462 145.642 13.8665C145.358 14.931 145.217 16.723 145.217 19.2425C145.217 21.762 145.344 23.4954 145.598 24.4427C145.852 25.3802 146.169 26.0052 146.55 26.3177C146.94 26.6302 147.385 26.7864 147.883 26.7864C148.381 26.7864 148.825 26.6302 149.216 26.3177C149.606 25.9954 149.909 25.4241 150.124 24.6038C150.407 23.5491 150.549 21.762 150.549 19.2425C150.549 16.723 150.422 14.9944 150.168 14.0569C149.914 13.1097 149.592 12.4798 149.201 12.1673C148.82 11.845 148.381 11.6839 147.883 11.6839Z\"\n      fill=\"var(--primary)\"\n    />\n    <path\n      d=\"M13.013 41.1986C13.4829 41.2395 13.9951 41.6417 14.228 42.2301C14.4696 42.8402 14.3716 43.484 14.057 43.8355L15.3252 47.0389C15.4373 47.3221 15.3665 47.6527 15.1482 47.8652C14.9298 48.0776 14.5988 48.1331 14.3251 48.0146L12.9866 47.4353C11.5265 46.8034 9.87709 46.7758 8.39524 47.3625L8.22091 47.4315L9.32521 50.2209C9.4805 50.6131 9.27441 51.0476 8.90395 51.1943L7.50927 51.7464C7.11702 51.9017 6.69115 51.7174 6.53585 51.3252L5.43155 48.5358C4.64704 48.8464 3.7953 48.4778 3.48472 47.6933L2.65649 45.6013C2.35453 44.8386 2.71451 43.965 3.49901 43.6545L6.46271 42.4811C7.94455 41.8945 9.12808 40.7453 9.7686 39.307L10.3478 37.9685C10.4663 37.6948 10.7455 37.5086 11.0502 37.514C11.3548 37.5195 11.6327 37.7119 11.7362 37.9734L13.013 41.1986ZM7.01486 43.8758L6.84052 43.9448L7.66875 46.0368L7.84309 45.9678C9.58644 45.2776 11.5232 45.2671 13.2748 45.9348L11.0058 40.2036C10.186 41.8893 8.75821 43.1856 7.01486 43.8758Z\"\n      fill=\"var(--tertiary-high)\"\n    />\n    <path\n      d=\"M148.762 128.636C149.155 128.701 149.422 129.101 149.358 129.494C149.29 129.91 148.913 130.181 148.52 130.116C148.103 130.048 147.833 129.671 147.901 129.255C147.965 128.862 148.346 128.568 148.762 128.636ZM151.353 129.061C151.746 129.125 152.013 129.525 151.948 129.918C151.888 130.288 151.484 130.578 151.114 130.518C150.721 130.453 150.427 130.073 150.491 129.679C150.559 129.263 150.936 128.992 151.353 129.061ZM153.943 129.485C154.336 129.549 154.626 129.953 154.539 130.343C154.471 130.759 154.094 131.03 153.701 130.965C153.307 130.901 153.014 130.52 153.082 130.104C153.146 129.711 153.527 129.417 153.943 129.485ZM152.02 124.99C155.281 125.524 157.558 128.153 157.126 130.79C156.694 133.427 153.705 135.146 150.443 134.612C149.68 134.486 148.959 134.25 148.345 133.935C147.572 134.307 146.367 134.704 144.956 134.473C144.725 134.435 144.536 134.285 144.504 134.042C144.469 133.823 144.53 133.595 144.718 133.46C144.718 133.46 145.564 132.791 146.059 131.946C145.428 131.011 145.132 129.918 145.31 128.831C145.746 126.171 148.735 124.452 152.02 124.99ZM150.625 133.501C153.262 133.933 155.659 132.64 155.996 130.581C156.329 128.546 154.451 126.528 151.815 126.096C149.178 125.664 146.754 126.977 146.421 129.013C146.258 130.007 146.622 130.827 146.966 131.334L147.369 131.923L147.008 132.529C146.84 132.834 146.625 133.131 146.394 133.378C146.98 133.284 147.484 133.105 147.845 132.927L148.338 132.675L148.843 132.924C149.391 133.204 150.001 133.399 150.625 133.501Z\"\n      fill=\"var(--tertiary-high)\"\n    />\n  </svg>\n  */\n  {\n    \"id\": \"XmMIXsY+\",\n    \"block\": \"[[[10,\\\"svg\\\"],[14,\\\"width\\\",\\\"217\\\"],[14,\\\"height\\\",\\\"163\\\"],[14,\\\"viewBox\\\",\\\"0 0 217 163\\\"],[14,\\\"fill\\\",\\\"none\\\"],[14,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"path\\\"],[14,\\\"d\\\",\\\"M4 128.5C12.5 128.5 30.5 148.5 69.5 142.5C86.9422 139.817 168.5 84.5 197.5 73\\\"],[14,\\\"stroke\\\",\\\"var(--tertiary-high)\\\"],[14,\\\"stroke-linecap\\\",\\\"round\\\"],[14,\\\"stroke-dasharray\\\",\\\"6 6\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[10,\\\"path\\\"],[14,\\\"fill-rule\\\",\\\"evenodd\\\"],[14,\\\"clip-rule\\\",\\\"evenodd\\\"],[14,\\\"d\\\",\\\"M53 15C39.7452 15 29 25.7452 29 39V96.4576C29 109.377 39.2089 119.913 52 120.437V137L74.3809 120.458H156C169.255 120.458 180 109.712 180 96.4576V39C180 25.7452 169.255 15 156 15H53Z\\\"],[14,\\\"fill\\\",\\\"var(--secondary)\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[10,\\\"path\\\"],[14,\\\"d\\\",\\\"M52 120.437H52.5V119.957L52.0205 119.938L52 120.437ZM52 137H51.5V137.991L52.2972 137.402L52 137ZM74.3809 120.458V119.958H74.2162L74.0837 120.056L74.3809 120.458ZM29.5 39C29.5 26.0213 40.0213 15.5 53 15.5V14.5C39.469 14.5 28.5 25.469 28.5 39H29.5ZM29.5 96.4576V39H28.5V96.4576H29.5ZM52.0205 119.938C39.4962 119.424 29.5 109.108 29.5 96.4576H28.5C28.5 109.647 38.9216 120.402 51.9795 120.937L52.0205 119.938ZM52.5 137V120.437H51.5V137H52.5ZM74.0837 120.056L51.7028 136.598L52.2972 137.402L74.6781 120.86L74.0837 120.056ZM156 119.958H74.3809V120.958H156V119.958ZM179.5 96.4576C179.5 109.436 168.979 119.958 156 119.958V120.958C169.531 120.958 180.5 109.989 180.5 96.4576H179.5ZM179.5 39V96.4576H180.5V39H179.5ZM156 15.5C168.979 15.5 179.5 26.0213 179.5 39H180.5C180.5 25.469 169.531 14.5 156 14.5V15.5ZM53 15.5H156V14.5H53V15.5Z\\\"],[14,\\\"fill\\\",\\\"var(--tertiary-high)\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[10,\\\"ellipse\\\"],[14,\\\"cx\\\",\\\"104\\\"],[14,\\\"cy\\\",\\\"156\\\"],[14,\\\"rx\\\",\\\"96\\\"],[14,\\\"ry\\\",\\\"7\\\"],[14,\\\"fill\\\",\\\"var(--primary-low)\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[10,\\\"path\\\"],[14,\\\"d\\\",\\\"M215.833 65.4678L209.881 73.3052C209.749 73.5001 209.525 73.6186 209.283 73.6212C209.158 73.6066 209.033 73.592 208.909 73.525C208.827 73.4803 208.755 73.415 208.695 73.3292L206.751 70.9161L204.851 71.9128C204.691 72.0124 204.513 71.9961 204.369 71.9179C204.142 71.7951 204.057 71.5092 204.18 71.2825L205.252 69.3042C205.341 69.1393 205.46 69.0174 205.598 68.959L213.217 65.6229L204.2 67.8014L202.557 65.7653C202.386 65.5394 202.333 65.244 202.478 64.9761C202.614 64.6765 202.849 64.5374 203.143 64.5366L215.222 64.2836C215.495 64.2716 215.784 64.4279 215.912 64.6838C216.04 64.9397 216.009 65.2428 215.833 65.4678Z\\\"],[14,\\\"fill\\\",\\\"var(--tertiary-high)\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[10,\\\"ellipse\\\"],[14,\\\"cx\\\",\\\"148\\\"],[14,\\\"cy\\\",\\\"18.4167\\\"],[14,\\\"rx\\\",\\\"17\\\"],[14,\\\"ry\\\",\\\"18.4167\\\"],[14,\\\"fill\\\",\\\"var(--primary-low)\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[10,\\\"path\\\"],[14,\\\"d\\\",\\\"M147.883 8.27081C149.963 8.27081 151.589 9.013 152.761 10.4974C154.157 12.2552 154.855 15.1702 154.855 19.2425C154.855 23.305 154.152 26.2249 152.746 28.0023C151.584 29.4671 149.963 30.1995 147.883 30.1995C145.793 30.1995 144.108 29.3987 142.829 27.7972C141.55 26.1859 140.91 23.3196 140.91 19.1985C140.91 15.1556 141.613 12.2454 143.02 10.4681C144.182 9.00323 145.803 8.27081 147.883 8.27081ZM147.883 11.6839C147.385 11.6839 146.94 11.845 146.55 12.1673C146.159 12.4798 145.856 13.0462 145.642 13.8665C145.358 14.931 145.217 16.723 145.217 19.2425C145.217 21.762 145.344 23.4954 145.598 24.4427C145.852 25.3802 146.169 26.0052 146.55 26.3177C146.94 26.6302 147.385 26.7864 147.883 26.7864C148.381 26.7864 148.825 26.6302 149.216 26.3177C149.606 25.9954 149.909 25.4241 150.124 24.6038C150.407 23.5491 150.549 21.762 150.549 19.2425C150.549 16.723 150.422 14.9944 150.168 14.0569C149.914 13.1097 149.592 12.4798 149.201 12.1673C148.82 11.845 148.381 11.6839 147.883 11.6839Z\\\"],[14,\\\"fill\\\",\\\"var(--primary)\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[10,\\\"path\\\"],[14,\\\"d\\\",\\\"M13.013 41.1986C13.4829 41.2395 13.9951 41.6417 14.228 42.2301C14.4696 42.8402 14.3716 43.484 14.057 43.8355L15.3252 47.0389C15.4373 47.3221 15.3665 47.6527 15.1482 47.8652C14.9298 48.0776 14.5988 48.1331 14.3251 48.0146L12.9866 47.4353C11.5265 46.8034 9.87709 46.7758 8.39524 47.3625L8.22091 47.4315L9.32521 50.2209C9.4805 50.6131 9.27441 51.0476 8.90395 51.1943L7.50927 51.7464C7.11702 51.9017 6.69115 51.7174 6.53585 51.3252L5.43155 48.5358C4.64704 48.8464 3.7953 48.4778 3.48472 47.6933L2.65649 45.6013C2.35453 44.8386 2.71451 43.965 3.49901 43.6545L6.46271 42.4811C7.94455 41.8945 9.12808 40.7453 9.7686 39.307L10.3478 37.9685C10.4663 37.6948 10.7455 37.5086 11.0502 37.514C11.3548 37.5195 11.6327 37.7119 11.7362 37.9734L13.013 41.1986ZM7.01486 43.8758L6.84052 43.9448L7.66875 46.0368L7.84309 45.9678C9.58644 45.2776 11.5232 45.2671 13.2748 45.9348L11.0058 40.2036C10.186 41.8893 8.75821 43.1856 7.01486 43.8758Z\\\"],[14,\\\"fill\\\",\\\"var(--tertiary-high)\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[10,\\\"path\\\"],[14,\\\"d\\\",\\\"M148.762 128.636C149.155 128.701 149.422 129.101 149.358 129.494C149.29 129.91 148.913 130.181 148.52 130.116C148.103 130.048 147.833 129.671 147.901 129.255C147.965 128.862 148.346 128.568 148.762 128.636ZM151.353 129.061C151.746 129.125 152.013 129.525 151.948 129.918C151.888 130.288 151.484 130.578 151.114 130.518C150.721 130.453 150.427 130.073 150.491 129.679C150.559 129.263 150.936 128.992 151.353 129.061ZM153.943 129.485C154.336 129.549 154.626 129.953 154.539 130.343C154.471 130.759 154.094 131.03 153.701 130.965C153.307 130.901 153.014 130.52 153.082 130.104C153.146 129.711 153.527 129.417 153.943 129.485ZM152.02 124.99C155.281 125.524 157.558 128.153 157.126 130.79C156.694 133.427 153.705 135.146 150.443 134.612C149.68 134.486 148.959 134.25 148.345 133.935C147.572 134.307 146.367 134.704 144.956 134.473C144.725 134.435 144.536 134.285 144.504 134.042C144.469 133.823 144.53 133.595 144.718 133.46C144.718 133.46 145.564 132.791 146.059 131.946C145.428 131.011 145.132 129.918 145.31 128.831C145.746 126.171 148.735 124.452 152.02 124.99ZM150.625 133.501C153.262 133.933 155.659 132.64 155.996 130.581C156.329 128.546 154.451 126.528 151.815 126.096C149.178 125.664 146.754 126.977 146.421 129.013C146.258 130.007 146.622 130.827 146.966 131.334L147.369 131.923L147.008 132.529C146.84 132.834 146.625 133.131 146.394 133.378C146.98 133.284 147.484 133.105 147.845 132.927L148.338 132.675L148.843 132.924C149.391 133.204 150.001 133.399 150.625 133.501Z\\\"],[14,\\\"fill\\\",\\\"var(--tertiary-high)\\\"],[12],[13],[1,\\\"\\\\n\\\"],[13]],[],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/svg/chat-zero.js\",\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"chat-zero:SvgChatZero\"));\n  var _default = _exports.default = SvgChatZero;\n});","define(\"discourse/plugins/chat/discourse/components/thread-notifications-tracking\", [\"exports\", \"discourse/components/notifications-tracking\", \"discourse/plugins/chat/discourse/lib/chat-notification-levels\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _notificationsTracking, _chatNotificationLevels, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ThreadNotificationsTracking = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <NotificationsTracking\n    @onChange={{@onChange}}\n    @levels={{threadNotificationButtonLevels}}\n    @levelId={{@levelId}}\n    @showCaret={{false}}\n    @showFullTitle={{false}}\n    @prefix=\"chat.thread.notifications\"\n    class=\"thread-notifications-tracking\"\n    @triggerClass=\"btn-transparent\"\n  />\n  */\n  {\n    \"id\": \"08Mlfbj/\",\n    \"block\": \"[[[8,[32,0],[[24,0,\\\"thread-notifications-tracking\\\"]],[[\\\"@onChange\\\",\\\"@levels\\\",\\\"@levelId\\\",\\\"@showCaret\\\",\\\"@showFullTitle\\\",\\\"@prefix\\\",\\\"@triggerClass\\\"],[[30,1],[32,1],[30,2],false,false,\\\"chat.thread.notifications\\\",\\\"btn-transparent\\\"]],null]],[\\\"@onChange\\\",\\\"@levelId\\\"],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/thread-notifications-tracking.js\",\n    \"scope\": () => [_notificationsTracking.default, _chatNotificationLevels.threadNotificationButtonLevels],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"thread-notifications-tracking:ThreadNotificationsTracking\"));\n  var _default = _exports.default = ThreadNotificationsTracking;\n});","define(\"discourse/plugins/chat/discourse/components/thread-title/index\", [\"exports\", \"@glimmer/component\", \"@ember/routing\", \"@ember/service\", \"@ember/template\", \"discourse/helpers/replace-emoji\", \"discourse/lib/utilities\", \"discourse/plugins/chat/discourse/components/thread-unread-indicator\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _routing, _service, _template, _replaceEmoji, _utilities, _threadUnreadIndicator, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatThreadTitle extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    get title() {\n      if (this.args.thread.title) {\n        return (0, _replaceEmoji.default)((0, _template.trustHTML)((0, _utilities.escapeExpression)(this.args.thread.title)));\n      } else {\n        return (0, _replaceEmoji.default)((0, _template.trustHTML)(this.args.thread.originalMessage.excerpt));\n      }\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <span class=\"chat__thread-title-container\">\n        <span class=\"chat__thread-title\">\n          {{#if this.site.desktopView}}\n            <LinkTo\n              class=\"chat__thread-title__name\"\n              @route=\"chat.channel.thread\"\n              @models={{@thread.routeModels}}\n            >\n              {{this.title}}\n            </LinkTo>\n          {{else}}\n            <span class=\"chat__thread-title__name\">\n              {{this.title}}\n            </span>\n          {{/if}}\n      \n        </span>\n        <ThreadUnreadIndicator @thread={{@thread}} />\n      </span>\n      */\n      {\n        \"id\": \"9tB798+2\",\n        \"block\": \"[[[10,1],[14,0,\\\"chat__thread-title-container\\\"],[12],[1,\\\"\\\\n  \\\"],[10,1],[14,0,\\\"chat__thread-title\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"site\\\",\\\"desktopView\\\"]],[[[1,\\\"      \\\"],[8,[32,0],[[24,0,\\\"chat__thread-title__name\\\"]],[[\\\"@route\\\",\\\"@models\\\"],[\\\"chat.channel.thread\\\",[30,1,[\\\"routeModels\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[1,[30,0,[\\\"title\\\"]]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,1],[14,0,\\\"chat__thread-title__name\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[30,0,[\\\"title\\\"]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[8,[32,1],null,[[\\\"@thread\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"],[13]],[\\\"@thread\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/thread-title/index.js\",\n        \"scope\": () => [_routing.LinkTo, _threadUnreadIndicator.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatThreadTitle;\n});","define(\"discourse/plugins/chat/discourse/components/thread-unread-indicator/index\", [\"exports\", \"@glimmer/component\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const MAX_UNREAD_COUNT = 99;\n  class ChatThreadUnreadIndicator extends _component.default {\n    get unreadCount() {\n      return this.args.thread.tracking.unreadCount;\n    }\n    get urgentCount() {\n      return this.args.thread.tracking.mentionCount + this.args.thread.tracking.watchedThreadsUnreadCount;\n    }\n    get showUnreadIndicator() {\n      return this.unreadCount > 0 || this.urgentCount > 0;\n    }\n    get unreadCountLabel() {\n      const count = this.urgentCount > 0 ? this.urgentCount : this.unreadCount;\n      return count > MAX_UNREAD_COUNT ? `${MAX_UNREAD_COUNT}+` : count;\n    }\n    get isUrgent() {\n      return this.urgentCount > 0 ? \"-urgent\" : \"\";\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.showUnreadIndicator}}\n        <span class=\"chat-thread-list-item-unread-indicator {{this.isUrgent}}\">\n          <span class=\"chat-thread-list-item-unread-indicator__number\">\n            {{this.unreadCountLabel}}\n          </span>\n        </span>\n      {{/if}}\n      */\n      {\n        \"id\": \"NhmEu/5+\",\n        \"block\": \"[[[41,[30,0,[\\\"showUnreadIndicator\\\"]],[[[1,\\\"  \\\"],[10,1],[15,0,[29,[\\\"chat-thread-list-item-unread-indicator \\\",[30,0,[\\\"isUrgent\\\"]]]]],[12],[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"chat-thread-list-item-unread-indicator__number\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"unreadCountLabel\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/thread-unread-indicator/index.js\",\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatThreadUnreadIndicator;\n});","define(\"discourse/plugins/chat/discourse/components/toggle-channel-membership-button\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/components/plugin-outlet\", \"discourse/helpers/concat-class\", \"discourse/helpers/lazy-hash\", \"discourse/lib/ajax-error\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _object, _service, _dButton, _pluginOutlet, _concatClass, _lazyHash, _ajaxError, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ToggleChannelMembershipButton extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"isLoading\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #isLoading = (dt7948.i(this, \"isLoading\"), void 0);\n    options = {};\n    constructor() {\n      super(...arguments);\n      this.options = {\n        labelType: \"normal\",\n        joinTitle: (0, _discourseI18n.i18n)(\"chat.channel_settings.join_channel\"),\n        joinIcon: \"\",\n        joinClass: \"\",\n        leaveTitle: (0, _discourseI18n.i18n)(\"chat.channel_settings.leave_channel\"),\n        leaveIcon: \"\",\n        leaveClass: \"\",\n        ...this.args.options\n      };\n    }\n    get label() {\n      if (this.options.labelType === \"none\") {\n        return \"\";\n      }\n      if (this.options.labelType === \"short\") {\n        if (this.args.channel.currentUserMembership.following) {\n          return (0, _discourseI18n.i18n)(\"chat.channel_settings.leave\");\n        } else {\n          return (0, _discourseI18n.i18n)(\"chat.channel_settings.join\");\n        }\n      }\n      if (this.args.channel.currentUserMembership.following) {\n        return (0, _discourseI18n.i18n)(\"chat.channel_settings.leave_channel\");\n      } else {\n        return (0, _discourseI18n.i18n)(\"chat.channel_settings.join_channel\");\n      }\n    }\n    onJoinChannel() {\n      this.isLoading = true;\n      return this.chat.followChannel(this.args.channel).then(() => {\n        this.args.onJoin?.(this.args.channel);\n      }).catch(_ajaxError.popupAjaxError).finally(() => {\n        if (this.isDestroying || this.isDestroyed) {\n          return;\n        }\n        this.isLoading = false;\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"onJoinChannel\", [_object.action]);\n    }\n    async onLeaveChannel() {\n      this.isLoading = true;\n      try {\n        // For DM channels (including group DMs), use non-destructive unfollow\n        // unless explicitly requested to be destructive (e.g., from settings page)\n        if (this.args.channel.chatable.group && this.options.leaveDestructive) {\n          await this.chatApi.leaveChannel(this.args.channel.id);\n        } else {\n          await this.chat.unfollowChannel(this.args.channel);\n        }\n        this.args.onLeave?.(this.args.channel);\n      } catch (error) {\n        (0, _ajaxError.popupAjaxError)(error);\n      } finally {\n        this.isLoading = false;\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"onLeaveChannel\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if @channel.currentUserMembership.following}}\n        <DButton\n          @action={{this.onLeaveChannel}}\n          @translatedLabel={{this.label}}\n          @translatedTitle={{this.options.leaveTitle}}\n          @icon={{this.options.leaveIcon}}\n          @disabled={{this.isLoading}}\n          class={{concatClass\n            \"toggle-channel-membership-button -leave\"\n            this.options.leaveClass\n          }}\n        />\n      {{else}}\n        <PluginOutlet\n          @name=\"chat-join-channel-button\"\n          @outletArgs={{lazyHash\n            onJoinChannel=this.onJoinChannel\n            channel=@channel\n            icon=this.options.joinIcon\n            title=this.options.joinTitle\n            label=this.label\n            disabled=this.isLoading\n          }}\n          @defaultGlimmer={{true}}\n        >\n          <DButton\n            @action={{this.onJoinChannel}}\n            @translatedLabel={{this.label}}\n            @translatedTitle={{this.options.joinTitle}}\n            @icon={{this.options.joinIcon}}\n            @disabled={{this.isLoading}}\n            class={{concatClass\n              \"toggle-channel-membership-button -join\"\n              this.options.joinClass\n            }}\n          />\n        </PluginOutlet>\n      {{/if}}\n      */\n      {\n        \"id\": \"osivYdGe\",\n        \"block\": \"[[[41,[30,1,[\\\"currentUserMembership\\\",\\\"following\\\"]],[[[1,\\\"  \\\"],[8,[32,0],[[16,0,[28,[32,1],[\\\"toggle-channel-membership-button -leave\\\",[30,0,[\\\"options\\\",\\\"leaveClass\\\"]]],null]]],[[\\\"@action\\\",\\\"@translatedLabel\\\",\\\"@translatedTitle\\\",\\\"@icon\\\",\\\"@disabled\\\"],[[30,0,[\\\"onLeaveChannel\\\"]],[30,0,[\\\"label\\\"]],[30,0,[\\\"options\\\",\\\"leaveTitle\\\"]],[30,0,[\\\"options\\\",\\\"leaveIcon\\\"]],[30,0,[\\\"isLoading\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"  \\\"],[8,[32,2],null,[[\\\"@name\\\",\\\"@outletArgs\\\",\\\"@defaultGlimmer\\\"],[\\\"chat-join-channel-button\\\",[28,[32,3],null,[[\\\"onJoinChannel\\\",\\\"channel\\\",\\\"icon\\\",\\\"title\\\",\\\"label\\\",\\\"disabled\\\"],[[30,0,[\\\"onJoinChannel\\\"]],[30,1],[30,0,[\\\"options\\\",\\\"joinIcon\\\"]],[30,0,[\\\"options\\\",\\\"joinTitle\\\"]],[30,0,[\\\"label\\\"]],[30,0,[\\\"isLoading\\\"]]]]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[32,0],[[16,0,[28,[32,1],[\\\"toggle-channel-membership-button -join\\\",[30,0,[\\\"options\\\",\\\"joinClass\\\"]]],null]]],[[\\\"@action\\\",\\\"@translatedLabel\\\",\\\"@translatedTitle\\\",\\\"@icon\\\",\\\"@disabled\\\"],[[30,0,[\\\"onJoinChannel\\\"]],[30,0,[\\\"label\\\"]],[30,0,[\\\"options\\\",\\\"joinTitle\\\"]],[30,0,[\\\"options\\\",\\\"joinIcon\\\"]],[30,0,[\\\"isLoading\\\"]]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]],[\\\"@channel\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/toggle-channel-membership-button.js\",\n        \"scope\": () => [_dButton.default, _concatClass.default, _pluginOutlet.default, _lazyHash.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ToggleChannelMembershipButton;\n});","define(\"discourse/plugins/chat/discourse/components/upsert-category/chat\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/helper\", \"@ember/modifier\", \"@ember/object\", \"@ember/render-modifiers/modifiers/did-insert\", \"@ember/routing\", \"@ember/template\", \"discourse/components/conditional-loading-spinner\", \"discourse/components/d-toggle-switch\", \"discourse/components/empty-state\", \"discourse/helpers/category-badge\", \"discourse/helpers/d-icon\", \"discourse/helpers/replace-emoji\", \"discourse/lib/ajax\", \"discourse/lib/ajax-error\", \"discourse/lib/get-url\", \"discourse/truth-helpers\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _helper, _modifier, _object, _didInsert, _routing, _template, _conditionalLoadingSpinner, _dToggleSwitch, _emptyState, _categoryBadge, _dIcon, _replaceEmoji, _ajax, _ajaxError, _getUrl, _truthHelpers, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function channelColorStyle(channel) {\n    return (0, _template.trustHTML)(`color: #${channel.chatable?.color || \"000\"}`);\n  }\n  function channelIcon(channel) {\n    return channel.emoji ? (0, _replaceEmoji.default)(`:${channel.emoji}:`) : (0, _dIcon.default)(\"d-chat\");\n  }\n  function isSubcategoryChannel(channel, categoryId) {\n    return channel.chatable?.id !== categoryId;\n  }\n  class EditCategoryChat extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"channels\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #channels = (dt7948.i(this, \"channels\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"loading\", [_tracking.tracked], function () {\n        return true;\n      });\n    }\n    #loading = (dt7948.i(this, \"loading\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"showSubcategoryChannels\", [_tracking.tracked], function () {\n        return true;\n      });\n    }\n    #showSubcategoryChannels = (dt7948.i(this, \"showSubcategoryChannels\"), void 0);\n    get categoryChannels() {\n      return (this.channels || []).filter(c => !isSubcategoryChannel(c, this.args.category.id));\n    }\n    get subcategoryChannels() {\n      return (this.channels || []).filter(c => isSubcategoryChannel(c, this.args.category.id));\n    }\n    get hasSubcategoryChannels() {\n      return this.subcategoryChannels.length > 0;\n    }\n    get displayedChannels() {\n      if (this.showSubcategoryChannels) {\n        return this.channels || [];\n      }\n      return this.categoryChannels;\n    }\n    toggleSubcategoryChannels() {\n      this.showSubcategoryChannels = !this.showSubcategoryChannels;\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleSubcategoryChannels\", [_object.action]);\n    }\n    async loadChannels() {\n      try {\n        this.loading = true;\n        const result = await (0, _ajax.ajax)(`/chat/api/channels?chatable_id=${this.args.category.id}&chatable_type=Category&include_subcategories=true`);\n        this.channels = (result.channels || []).sort((a, b) => (a.title || \"\").localeCompare(b.title || \"\"));\n      } catch (err) {\n        (0, _ajaxError.popupAjaxError)(err);\n        this.channels = [];\n      } finally {\n        this.loading = false;\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"loadChannels\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <section class=\"edit-category-chat\" {{didInsert this.loadChannels}}>\n        <ConditionalLoadingSpinner @condition={{this.loading}}>\n          {{#if this.displayedChannels.length}}\n            {{#if this.hasSubcategoryChannels}}\n              <div class=\"edit-category-chat__subcategory-toggle\">\n                <DToggleSwitch\n                  @state={{this.showSubcategoryChannels}}\n                  {{on \"click\" this.toggleSubcategoryChannels}}\n                />\n                <span>{{i18n \"chat.edit_category.include_subcategories\"}}</span>\n              </div>\n            {{/if}}\n            <table class=\"d-table edit-category-chat__table\">\n              <thead class=\"d-table__header\">\n                <tr class=\"d-table__row\">\n                  <th class=\"d-table__header-cell\">{{i18n\n                      \"chat.edit_category.channel\"\n                    }}</th>\n                  <th class=\"d-table__header-cell\">{{i18n\n                      \"chat.edit_category.description\"\n                    }}</th>\n                  <th class=\"d-table__header-cell\"></th>\n                </tr>\n              </thead>\n              <tbody>\n                {{#each this.displayedChannels as |channel|}}\n                  <tr class=\"d-table__row\" data-channel-id={{channel.id}}>\n                    <td class=\"d-table__cell edit-category-chat__channel-name\">\n                      <span\n                        class=\"chat-channel-icon --icon\"\n                        style={{channelColorStyle channel}}\n                      >\n                        {{channelIcon channel}}\n                      </span>\n                      <span>{{channel.title}}</span>\n                      {{#if (isSubcategoryChannel channel @category.id)}}\n                        <div>\n                          {{categoryBadge channel.chatable link=true}}\n                        </div>\n                      {{/if}}\n                    </td>\n                    <td\n                      class=\"d-table__cell edit-category-chat__channel-description\"\n                    >\n                      {{if channel.description channel.description \"-\"}}\n                    </td>\n                    <td\n                      class=\"d-table__cell edit-category-chat__channel-actions d-table__cell-actions\"\n                    >\n                      <LinkTo\n                        @route=\"chat.channel.info.settings\"\n                        @models={{array (or channel.slug \"-\") channel.id}}\n                        class=\"btn btn-default btn-small\"\n                      >\n                        {{i18n \"chat.edit_category.settings\"}}\n                      </LinkTo>\n                    </td>\n                  </tr>\n                {{/each}}\n              </tbody>\n            </table>\n          {{else}}\n            <EmptyState\n              @title={{i18n \"chat.edit_category.no_channels\"}}\n              @body={{trustHTML\n                (i18n\n                  \"chat.edit_category.no_channels_body\"\n                  chatBrowseUrl=(getURL \"/chat/browse/open\")\n                )\n              }}\n            />\n          {{/if}}\n        </ConditionalLoadingSpinner>\n      </section>\n      */\n      {\n        \"id\": \"IB1jq1hQ\",\n        \"block\": \"[[[11,\\\"section\\\"],[24,0,\\\"edit-category-chat\\\"],[4,[32,0],[[30,0,[\\\"loadChannels\\\"]]],null],[12],[1,\\\"\\\\n  \\\"],[8,[32,1],null,[[\\\"@condition\\\"],[[30,0,[\\\"loading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"displayedChannels\\\",\\\"length\\\"]],[[[41,[30,0,[\\\"hasSubcategoryChannels\\\"]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"edit-category-chat__subcategory-toggle\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[32,2],[[4,[32,3],[\\\"click\\\",[30,0,[\\\"toggleSubcategoryChannels\\\"]]],null]],[[\\\"@state\\\"],[[30,0,[\\\"showSubcategoryChannels\\\"]]]],null],[1,\\\"\\\\n          \\\"],[10,1],[12],[1,[28,[32,4],[\\\"chat.edit_category.include_subcategories\\\"],null]],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,\\\"table\\\"],[14,0,\\\"d-table edit-category-chat__table\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"thead\\\"],[14,0,\\\"d-table__header\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tr\\\"],[14,0,\\\"d-table__row\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,0,\\\"d-table__header-cell\\\"],[12],[1,[28,[32,4],[\\\"chat.edit_category.channel\\\"],null]],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,0,\\\"d-table__header-cell\\\"],[12],[1,[28,[32,4],[\\\"chat.edit_category.description\\\"],null]],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,0,\\\"d-table__header-cell\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\\\"displayedChannels\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[10,\\\"tr\\\"],[14,0,\\\"d-table__row\\\"],[15,\\\"data-channel-id\\\",[30,1,[\\\"id\\\"]]],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[14,0,\\\"d-table__cell edit-category-chat__channel-name\\\"],[12],[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"chat-channel-icon --icon\\\"],[15,5,[28,[32,5],[[30,1]],null]],[12],[1,\\\"\\\\n                  \\\"],[1,[28,[32,6],[[30,1]],null]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,1],[12],[1,[30,1,[\\\"title\\\"]]],[13],[1,\\\"\\\\n\\\"],[41,[28,[32,7],[[30,1],[30,2,[\\\"id\\\"]]],null],[[[1,\\\"                  \\\"],[10,0],[12],[1,\\\"\\\\n                    \\\"],[1,[28,[32,8],[[30,1,[\\\"chatable\\\"]]],[[\\\"link\\\"],[true]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[14,0,\\\"d-table__cell edit-category-chat__channel-description\\\"],[12],[1,\\\"\\\\n                \\\"],[1,[52,[30,1,[\\\"description\\\"]],[30,1,[\\\"description\\\"]],\\\"-\\\"]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[14,0,\\\"d-table__cell edit-category-chat__channel-actions d-table__cell-actions\\\"],[12],[1,\\\"\\\\n                \\\"],[8,[32,9],[[24,0,\\\"btn btn-default btn-small\\\"]],[[\\\"@route\\\",\\\"@models\\\"],[\\\"chat.channel.info.settings\\\",[28,[32,10],[[28,[32,11],[[30,1,[\\\"slug\\\"]],\\\"-\\\"],null],[30,1,[\\\"id\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[1,[28,[32,4],[\\\"chat.edit_category.settings\\\"],null]],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[32,12],null,[[\\\"@title\\\",\\\"@body\\\"],[[28,[32,4],[\\\"chat.edit_category.no_channels\\\"],null],[28,[32,13],[[28,[32,4],[\\\"chat.edit_category.no_channels_body\\\"],[[\\\"chatBrowseUrl\\\"],[[28,[32,14],[\\\"/chat/browse/open\\\"],null]]]]],null]]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[13]],[\\\"channel\\\",\\\"@category\\\"],[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/upsert-category/chat.js\",\n        \"scope\": () => [_didInsert.default, _conditionalLoadingSpinner.default, _dToggleSwitch.default, _modifier.on, _discourseI18n.i18n, channelColorStyle, channelIcon, isSubcategoryChannel, _categoryBadge.default, _routing.LinkTo, _helper.array, _truthHelpers.or, _emptyState.default, _template.trustHTML, _getUrl.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = EditCategoryChat;\n});","define(\"discourse/plugins/chat/discourse/components/user-menu/chat-notifications-list-empty-state\", [\"exports\", \"@ember/template\", \"discourse/components/empty-state\", \"discourse/lib/get-url\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _template, _emptyState, _getUrl, _discourseI18n, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatNotificationsListEmptyState = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <EmptyState\n    @title={{i18n \"user_menu.no_chat_notifications_title\"}}\n    @body={{trustHTML\n      (i18n\n        \"user_menu.no_chat_notifications_body\"\n        preferencesUrl=(getUrl \"/my/preferences/notifications\")\n      )\n    }}\n  />\n  */\n  {\n    \"id\": \"WfhSk6G3\",\n    \"block\": \"[[[8,[32,0],null,[[\\\"@title\\\",\\\"@body\\\"],[[28,[32,1],[\\\"user_menu.no_chat_notifications_title\\\"],null],[28,[32,2],[[28,[32,1],[\\\"user_menu.no_chat_notifications_body\\\"],[[\\\"preferencesUrl\\\"],[[28,[32,3],[\\\"/my/preferences/notifications\\\"],null]]]]],null]]],null]],[],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/user-menu/chat-notifications-list-empty-state.js\",\n    \"scope\": () => [_emptyState.default, _discourseI18n.i18n, _template.trustHTML, _getUrl.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"chat-notifications-list-empty-state:ChatNotificationsListEmptyState\"));\n  var _default = _exports.default = ChatNotificationsListEmptyState;\n});","define(\"discourse/plugins/chat/discourse/components/user-menu/chat-notifications-list\", [\"exports\", \"discourse/components/user-menu/notifications-list\"], function (_exports, _notificationsList) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class UserMenuChatNotificationsList extends _notificationsList.default {\n    get dismissTypes() {\n      return this.filterByTypes;\n    }\n    get emptyStateComponent() {\n      return \"user-menu/chat-notifications-list-empty-state\";\n    }\n  }\n  _exports.default = UserMenuChatNotificationsList;\n});","define(\"discourse/plugins/chat/discourse/components/user-threads/index\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/routing\", \"@ember/service\", \"discourse/lib/decorators\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/channel-icon\", \"discourse/plugins/chat/discourse/components/channel-title\", \"discourse/plugins/chat/discourse/components/chat/list\", \"discourse/plugins/chat/discourse/components/chat-message-thread-indicator\", \"discourse/plugins/chat/discourse/components/thread-title\", \"discourse/plugins/chat/discourse/components/user-threads/preview\", \"discourse/plugins/chat/discourse/models/chat-thread-preview\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _routing, _service, _decorators, _discourseI18n, _channelIcon, _channelTitle, _list, _chatMessageThreadIndicator, _threadTitle, _preview, _chatThreadPreview, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class UserThreads extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"messageBus\", [_service.service]);\n    }\n    #messageBus = (dt7948.i(this, \"messageBus\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    trackedChannels = {};\n    willDestroy() {\n      super.willDestroy(...arguments);\n      Object.keys(this.trackedChannels).forEach(id => {\n        this.messageBus.unsubscribe(`/chat/${id}`, this.onMessage);\n      });\n      this.trackedChannels = {};\n    }\n    get threadsCollection() {\n      return this.chatApi.userThreads(this.handleLoadedThreads);\n    }\n    static {\n      dt7948.n(this.prototype, \"threadsCollection\", [_tracking.cached]);\n    }\n    handleLoadedThreads(result) {\n      return result.threads.map(threadObject => {\n        const channel = this.chatChannelsManager.store(threadObject.channel);\n        const thread = channel.threadsManager.add(channel, threadObject);\n        const tracking = result.tracking[thread.id];\n        if (tracking) {\n          thread.tracking.mentionCount = tracking.mention_count;\n          thread.tracking.unreadCount = tracking.unread_count;\n          thread.tracking.watchedThreadsUnreadCount = tracking.watched_threads_unread_count;\n        }\n        this.trackChannel(thread.channel);\n        return thread;\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"handleLoadedThreads\", [_decorators.bind]);\n    }\n    trackChannel(channel) {\n      if (this.trackedChannels[channel.id]) {\n        return;\n      }\n      this.trackedChannels[channel.id] = channel;\n      this.messageBus.subscribe(`/chat/${channel.id}`, this.onMessage, channel.channelMessageBusLastId);\n    }\n    onMessage(data) {\n      if (data.type === \"update_thread_original_message\") {\n        const channel = this.trackedChannels[data.channel_id];\n        if (!channel) {\n          return;\n        }\n        const thread = channel.threadsManager.threads.find(t => t.id === data.thread_id);\n        if (thread) {\n          thread.preview = _chatThreadPreview.default.create(data.preview);\n        }\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"onMessage\", [_decorators.bind]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <List\n        @collection={{this.threadsCollection}}\n        class=\"c-user-threads\"\n        as |list|\n      >\n        <list.Item as |thread|>\n          <div class=\"c-user-thread\" data-id={{thread.id}}>\n            {{#if this.site.mobileView}}\n              <ChannelIcon @thread={{thread}} />\n            {{/if}}\n      \n            {{#if this.site.mobileView}}\n              <LinkTo\n                class=\"c-user-thread__link\"\n                @route=\"chat.channel.thread\"\n                @models={{thread.routeModels}}\n              >\n                <ChannelTitle @channel={{thread.channel}} />\n                <ThreadTitle @thread={{thread}} />\n      \n                <ThreadPreview @preview={{thread.preview}} />\n              </LinkTo>\n            {{else}}\n              <ChannelTitle @channel={{thread.channel}} />\n              <ThreadTitle @thread={{thread}} />\n      \n              <ThreadIndicator\n                @message={{thread.originalMessage}}\n                @interactiveUser={{false}}\n                @interactiveThread={{false}}\n                tabindex=\"-1\"\n              />\n            {{/if}}\n          </div>\n        </list.Item>\n        <list.EmptyState>\n          <div class=\"empty-state-threads\">\n            {{i18n \"chat.empty_state.my_threads\"}}\n          </div>\n        </list.EmptyState>\n      </List>\n      */\n      {\n        \"id\": \"mJgEjGu3\",\n        \"block\": \"[[[8,[32,0],[[24,0,\\\"c-user-threads\\\"]],[[\\\"@collection\\\"],[[30,0,[\\\"threadsCollection\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[30,1,[\\\"Item\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"c-user-thread\\\"],[15,\\\"data-id\\\",[30,2,[\\\"id\\\"]]],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"site\\\",\\\"mobileView\\\"]],[[[1,\\\"        \\\"],[8,[32,1],null,[[\\\"@thread\\\"],[[30,2]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"site\\\",\\\"mobileView\\\"]],[[[1,\\\"        \\\"],[8,[32,2],[[24,0,\\\"c-user-thread__link\\\"]],[[\\\"@route\\\",\\\"@models\\\"],[\\\"chat.channel.thread\\\",[30,2,[\\\"routeModels\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[32,3],null,[[\\\"@channel\\\"],[[30,2,[\\\"channel\\\"]]]],null],[1,\\\"\\\\n          \\\"],[8,[32,4],null,[[\\\"@thread\\\"],[[30,2]]],null],[1,\\\"\\\\n\\\\n          \\\"],[8,[32,5],null,[[\\\"@preview\\\"],[[30,2,[\\\"preview\\\"]]]],null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[8,[32,3],null,[[\\\"@channel\\\"],[[30,2,[\\\"channel\\\"]]]],null],[1,\\\"\\\\n        \\\"],[8,[32,4],null,[[\\\"@thread\\\"],[[30,2]]],null],[1,\\\"\\\\n\\\\n        \\\"],[8,[32,6],[[24,\\\"tabindex\\\",\\\"-1\\\"]],[[\\\"@message\\\",\\\"@interactiveUser\\\",\\\"@interactiveThread\\\"],[[30,2,[\\\"originalMessage\\\"]],false,false]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"]],[2]]]]],[1,\\\"\\\\n  \\\"],[8,[30,1,[\\\"EmptyState\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"empty-state-threads\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[28,[32,7],[\\\"chat.empty_state.my_threads\\\"],null]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[1]]]]]],[\\\"list\\\",\\\"thread\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/user-threads/index.js\",\n        \"scope\": () => [_list.default, _channelIcon.default, _routing.LinkTo, _channelTitle.default, _threadTitle.default, _preview.default, _chatMessageThreadIndicator.default, _discourseI18n.i18n],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = UserThreads;\n});","define(\"discourse/plugins/chat/discourse/components/user-threads/preview\", [\"exports\", \"@glimmer/component\", \"@ember/template\", \"discourse/helpers/format-date\", \"discourse/helpers/replace-emoji\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _template, _formatDate, _replaceEmoji, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ThreadPreview extends _component.default {\n    get lastReplyDate() {\n      return (0, _formatDate.default)(this.args.preview.lastReplyCreatedAt, {\n        leaveAgo: true\n      });\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <span class=\"chat-message-thread-indicator__last-reply-timestamp\">\n        {{this.lastReplyDate}}\n      </span>\n      <span class=\"c-user-thread__excerpt\">\n        <span class=\"c-user-thread__excerpt-poster\">\n          {{@preview.lastReplyUser.username}}\n        </span>\n        <span>:</span>\n        <span class=\"c-user-thread__excerpt-text\">\n          {{replaceEmoji (trustHTML @preview.lastReplyExcerpt)}}\n        </span>\n      </span>\n      */\n      {\n        \"id\": \"00uFcxsz\",\n        \"block\": \"[[[10,1],[14,0,\\\"chat-message-thread-indicator__last-reply-timestamp\\\"],[12],[1,\\\"\\\\n  \\\"],[1,[30,0,[\\\"lastReplyDate\\\"]]],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[10,1],[14,0,\\\"c-user-thread__excerpt\\\"],[12],[1,\\\"\\\\n  \\\"],[10,1],[14,0,\\\"c-user-thread__excerpt-poster\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[30,1,[\\\"lastReplyUser\\\",\\\"username\\\"]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,1],[12],[1,\\\":\\\"],[13],[1,\\\"\\\\n  \\\"],[10,1],[14,0,\\\"c-user-thread__excerpt-text\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[28,[32,0],[[28,[32,1],[[30,1,[\\\"lastReplyExcerpt\\\"]]],null]],null]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@preview\\\"],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/components/user-threads/preview.js\",\n        \"scope\": () => [_replaceEmoji.default, _template.trustHTML],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ThreadPreview;\n});","define(\"discourse/plugins/chat/discourse/connectors/above-site-header/chat-body-class\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"discourse/helpers/body-class\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _bodyClass, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatBodyClass extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.chatStateManager.hasPreloadedChannels}}\n        {{bodyClass \"has-preloaded-chat-channels\"}}\n      {{/if}}\n      */\n      {\n        \"id\": \"YyM3lTj3\",\n        \"block\": \"[[[41,[30,0,[\\\"chatStateManager\\\",\\\"hasPreloadedChannels\\\"]],[[[1,\\\"  \\\"],[1,[28,[32,0],[\\\"has-preloaded-chat-channels\\\"],null]],[1,\\\"\\\\n\\\"]],[]],null]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/connectors/above-site-header/chat-body-class.js\",\n        \"scope\": () => [_bodyClass.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatBodyClass;\n});","define(\"discourse/plugins/chat/discourse/connectors/below-footer/chat-drawer-outlet\", [\"exports\", \"discourse/plugins/chat/discourse/components/chat-drawer\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _chatDrawer, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatDrawerOutlet = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"below-footer-outlet chat-drawer-outlet\">\n    <div class=\"chat-drawer-outlet-container\">\n      <ChatDrawer />\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"04npnIPg\",\n    \"block\": \"[[[10,0],[14,0,\\\"below-footer-outlet chat-drawer-outlet\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"chat-drawer-outlet-container\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[32,0],null,null,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/connectors/below-footer/chat-drawer-outlet.js\",\n    \"scope\": () => [_chatDrawer.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"chat-drawer-outlet:ChatDrawerOutlet\"));\n  var _default = _exports.default = ChatDrawerOutlet;\n});","define(\"discourse/plugins/chat/discourse/connectors/below-footer/chat-message-actions-desktop-outlet\", [\"exports\", \"discourse/plugins/chat/discourse/components/chat-message-actions-desktop\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _chatMessageActionsDesktop, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatMessageActionsDesktopOutlet = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"below-footer-outlet chat-message-actions-desktop-outlet\">\n    <ChatMessageActionsDesktop />\n  </div>\n  */\n  {\n    \"id\": \"BLB908dH\",\n    \"block\": \"[[[10,0],[14,0,\\\"below-footer-outlet chat-message-actions-desktop-outlet\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[32,0],null,null,null],[1,\\\"\\\\n\\\"],[13]],[],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/connectors/below-footer/chat-message-actions-desktop-outlet.js\",\n    \"scope\": () => [_chatMessageActionsDesktop.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"chat-message-actions-desktop-outlet:ChatMessageActionsDesktopOutlet\"));\n  var _default = _exports.default = ChatMessageActionsDesktopOutlet;\n});","define(\"discourse/plugins/chat/discourse/connectors/chat-composer-inline-buttons/emoji-picker\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"discourse/components/emoji-picker\", \"discourse/plugins/chat/discourse/components/chat/composer/separator\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _emojiPicker, _separator, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatEmojiPicker extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.site.desktopView}}\n        <EmojiPicker\n          @didSelectEmoji={{@outletArgs.composer.onSelectEmoji}}\n          @btnClass=\"chat-composer-button btn-transparent -emoji\"\n          @context=\"chat\"\n        />\n      \n        <ChatComposerSeparator />\n      {{/if}}\n      */\n      {\n        \"id\": \"AFXYps8T\",\n        \"block\": \"[[[41,[30,0,[\\\"site\\\",\\\"desktopView\\\"]],[[[1,\\\"  \\\"],[8,[32,0],null,[[\\\"@didSelectEmoji\\\",\\\"@btnClass\\\",\\\"@context\\\"],[[30,1,[\\\"composer\\\",\\\"onSelectEmoji\\\"]],\\\"chat-composer-button btn-transparent -emoji\\\",\\\"chat\\\"]],null],[1,\\\"\\\\n\\\\n  \\\"],[8,[32,1],null,null,null],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@outletArgs\\\"],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/connectors/chat-composer-inline-buttons/emoji-picker.js\",\n        \"scope\": () => [_emojiPicker.default, _separator.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatEmojiPicker;\n});","define(\"discourse/plugins/chat/discourse/connectors/home-logo-wrapper/chat-header-connector\", [\"exports\", \"discourse/plugins/chat/discourse/components/chat-header\"], function (_exports, _chatHeader) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _chatHeader.default;\n    }\n  });\n});","define(\"discourse/plugins/chat/discourse/connectors/user-card-below-message-button/chat-button\", [\"exports\", \"discourse/plugins/chat/discourse/components/chat/direct-message-button\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _directMessageButton, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatButton = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @outletArgs.user.can_chat_user}}\n    <li class=\"user-card-below-message-button chat-button\">\n      <ChatDirectMessageButton @user={{@outletArgs.user}} @modal={{true}} />\n    </li>\n  {{/if}}\n  */\n  {\n    \"id\": \"zKEvLGYc\",\n    \"block\": \"[[[41,[30,1,[\\\"user\\\",\\\"can_chat_user\\\"]],[[[1,\\\"  \\\"],[10,\\\"li\\\"],[14,0,\\\"user-card-below-message-button chat-button\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[32,0],null,[[\\\"@user\\\",\\\"@modal\\\"],[[30,1,[\\\"user\\\"]],true]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@outletArgs\\\"],[\\\"if\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/connectors/user-card-below-message-button/chat-button.js\",\n    \"scope\": () => [_directMessageButton.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"chat-button:ChatButton\"));\n  var _default = _exports.default = ChatButton;\n});","define(\"discourse/plugins/chat/discourse/connectors/user-preferences-emails-pref-email-settings/preferences-chat-emails\", [\"exports\", \"@ember/helper\", \"discourse/select-kit/components/combo-box\", \"discourse/truth-helpers\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _helper, _comboBox, _truthHelpers, _discourseI18n, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const EMAIL_FREQUENCY_OPTIONS = [{\n    name: (0, _discourseI18n.i18n)(\"chat.email_frequency.never\"),\n    value: \"never\"\n  }, {\n    name: (0, _discourseI18n.i18n)(\"chat.email_frequency.when_away\"),\n    value: \"when_away\"\n  }];\n  const PreferencesChatEmails = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <h3>{{i18n \"chat.heading\"}}</h3>\n  \n  <div\n    class=\"control-group chat-setting controls-dropdown\"\n    data-setting-name=\"user_chat_email_frequency\"\n  >\n    <label for=\"user_chat_email_frequency\">\n      {{i18n \"chat.email_frequency.title\"}}\n    </label>\n    <ComboBox\n      @valueProperty=\"value\"\n      @content={{EMAIL_FREQUENCY_OPTIONS}}\n      @value={{@outletArgs.model.user_option.chat_email_frequency}}\n      @id=\"user_chat_email_frequency\"\n      @onChange={{fn (mut @outletArgs.model.user_option.chat_email_frequency)}}\n    />\n    {{#if (eq @outletArgs.model.user_option.chat_email_frequency \"when_away\")}}\n      <div class=\"control-instructions\">\n        {{i18n \"chat.email_frequency.description\"}}\n      </div>\n    {{/if}}\n  </div>\n  */\n  {\n    \"id\": \"3ZSlqF4Y\",\n    \"block\": \"[[[10,\\\"h3\\\"],[12],[1,[28,[32,0],[\\\"chat.heading\\\"],null]],[13],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"control-group chat-setting controls-dropdown\\\"],[14,\\\"data-setting-name\\\",\\\"user_chat_email_frequency\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"user_chat_email_frequency\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[28,[32,0],[\\\"chat.email_frequency.title\\\"],null]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[8,[32,1],null,[[\\\"@valueProperty\\\",\\\"@content\\\",\\\"@value\\\",\\\"@id\\\",\\\"@onChange\\\"],[\\\"value\\\",[32,2],[30,1,[\\\"model\\\",\\\"user_option\\\",\\\"chat_email_frequency\\\"]],\\\"user_chat_email_frequency\\\",[28,[32,3],[[28,[31,0],[[30,1,[\\\"model\\\",\\\"user_option\\\",\\\"chat_email_frequency\\\"]]],null]],null]]],null],[1,\\\"\\\\n\\\"],[41,[28,[32,4],[[30,1,[\\\"model\\\",\\\"user_option\\\",\\\"chat_email_frequency\\\"]],\\\"when_away\\\"],null],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"control-instructions\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[28,[32,0],[\\\"chat.email_frequency.description\\\"],null]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[13]],[\\\"@outletArgs\\\"],[\\\"mut\\\",\\\"if\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/connectors/user-preferences-emails-pref-email-settings/preferences-chat-emails.js\",\n    \"scope\": () => [_discourseI18n.i18n, _comboBox.default, EMAIL_FREQUENCY_OPTIONS, _helper.fn, _truthHelpers.eq],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"preferences-chat-emails:PreferencesChatEmails\"));\n  var _default = _exports.default = PreferencesChatEmails;\n});","define(\"discourse/plugins/chat/discourse/connectors/user-preferences-nav/chat-preferences\", [\"exports\", \"@glimmer/component\", \"@ember/routing\", \"discourse/helpers/d-icon\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _routing, _dIcon, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatPreferences extends _component.default {\n    static shouldRender({\n      model\n    }, {\n      siteSettings,\n      currentUser\n    }) {\n      return siteSettings.chat_enabled && (model.can_chat || currentUser?.admin);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <li class=\"user-nav__preferences-chat\">\n        <LinkTo @route=\"preferences.chat\">\n          {{icon \"d-chat\"}}\n          <span>{{i18n \"chat.title_capitalized\"}}</span>\n        </LinkTo>\n      </li>\n      */\n      {\n        \"id\": \"sSLCSYps\",\n        \"block\": \"[[[10,\\\"li\\\"],[14,0,\\\"user-nav__preferences-chat\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[32,0],null,[[\\\"@route\\\"],[\\\"preferences.chat\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[1,[28,[32,1],[\\\"d-chat\\\"],null]],[1,\\\"\\\\n    \\\"],[10,1],[12],[1,[28,[32,2],[\\\"chat.title_capitalized\\\"],null]],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[13]],[],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/connectors/user-preferences-nav/chat-preferences.js\",\n        \"scope\": () => [_routing.LinkTo, _dIcon.default, _discourseI18n.i18n],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = ChatPreferences;\n});","define(\"discourse/plugins/chat/discourse/connectors/user-profile-controls/chat-button\", [\"exports\", \"discourse/truth-helpers\", \"discourse/plugins/chat/discourse/components/chat/direct-message-button\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _truthHelpers, _directMessageButton, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatButton = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if\n    (and @outletArgs.model.can_chat_user (not @outletArgs.model.isCurrent))\n  }}\n    <li class=\"user-card-below-message-button chat-button\">\n      <ChatDirectMessageButton @user={{@outletArgs.model}} />\n    </li>\n  {{/if}}\n  */\n  {\n    \"id\": \"khMCbTt4\",\n    \"block\": \"[[[41,[28,[32,0],[[30,1,[\\\"model\\\",\\\"can_chat_user\\\"]],[28,[32,1],[[30,1,[\\\"model\\\",\\\"isCurrent\\\"]]],null]],null],[[[1,\\\"  \\\"],[10,\\\"li\\\"],[14,0,\\\"user-card-below-message-button chat-button\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[32,2],null,[[\\\"@user\\\"],[[30,1,[\\\"model\\\"]]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@outletArgs\\\"],[\\\"if\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/connectors/user-profile-controls/chat-button.js\",\n    \"scope\": () => [_truthHelpers.and, _truthHelpers.not, _directMessageButton.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"chat-button:ChatButton\"));\n  var _default = _exports.default = ChatButton;\n});","define(\"discourse/plugins/chat/discourse/controllers/chat-draft-channel\", [\"exports\", \"@ember/controller\"], function (_exports, _controller) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatDraftChannelController extends _controller.default {}\n  _exports.default = ChatDraftChannelController;\n});","define(\"discourse/plugins/chat/discourse/controllers/chat\", [\"exports\", \"@ember/controller\", \"@ember/service\", \"discourse/plugins/chat/discourse/lib/chat-constants\"], function (_exports, _controller, _service, _chatConstants) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatController extends _controller.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    get shouldUseChatSidebar() {\n      if (this.site.mobileView) {\n        return false;\n      }\n      if (this.shouldUseCoreSidebar) {\n        return false;\n      }\n      return true;\n    }\n    get publicMessageChannelsEmpty() {\n      return this.chatChannelsManager.publicMessageChannels?.length === 0 && this.chatStateManager.hasPreloadedChannels;\n    }\n    get shouldUseCoreSidebar() {\n      return this.siteSettings.navigation_menu === \"sidebar\";\n    }\n    get enabledRouteCount() {\n      return [this.siteSettings.chat_threads_enabled, this.chat.userCanAccessDirectMessages, this.siteSettings.enable_public_channels].filter(Boolean).length;\n    }\n    get shouldUseChatFooter() {\n      return _chatConstants.FOOTER_NAV_ROUTES.includes(this.router.currentRouteName) && this.enabledRouteCount > 1;\n    }\n    get mainOutletModifierClasses() {\n      let modifierClasses = [];\n      if (this.chatStateManager.isSidePanelExpanded) {\n        modifierClasses.push(\"has-side-panel-expanded\");\n      }\n      if (!this.router.currentRouteName.startsWith(\"chat.channel.info\") && !this.router.currentRouteName.startsWith(\"chat.browse\")) {\n        modifierClasses.push(\"chat-view\");\n      }\n      return modifierClasses.join(\" \");\n    }\n  }\n  _exports.default = ChatController;\n});","define(\"discourse/plugins/chat/discourse/controllers/chat/channel\", [\"exports\", \"@glimmer/tracking\", \"@ember/controller\"], function (_exports, _tracking, _controller) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelController extends _controller.default {\n    static {\n      dt7948.g(this.prototype, \"targetMessageId\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #targetMessageId = (dt7948.i(this, \"targetMessageId\"), void 0);\n    // Backwards-compatibility\n    queryParams = [\"messageId\"];\n  }\n  _exports.default = ChatChannelController;\n});","define(\"discourse/plugins/chat/discourse/controllers/chat/channel/index\", [\"exports\", \"@ember/controller\"], function (_exports, _controller) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelIndexController extends _controller.default {}\n  _exports.default = ChatChannelIndexController;\n});","define(\"discourse/plugins/chat/discourse/controllers/chat/channel/thread\", [\"exports\", \"@glimmer/tracking\", \"@ember/controller\"], function (_exports, _tracking, _controller) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelThreadController extends _controller.default {\n    static {\n      dt7948.g(this.prototype, \"targetMessageId\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #targetMessageId = (dt7948.i(this, \"targetMessageId\"), void 0);\n  }\n  _exports.default = ChatChannelThreadController;\n});","define(\"discourse/plugins/chat/discourse/controllers/chat/index\", [\"exports\", \"@ember/controller\"], function (_exports, _controller) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatIndexController extends _controller.default {}\n  _exports.default = ChatIndexController;\n});","define(\"discourse/plugins/chat/discourse/controllers/chat/new-message\", [\"exports\", \"@ember/controller\"], function (_exports, _controller) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatNewMessageController extends _controller.default {\n    queryParams = [\"recipients\"];\n  }\n  _exports.default = ChatNewMessageController;\n});","define(\"discourse/plugins/chat/discourse/helpers/chat-guardian\", [\"exports\", \"@ember/component/helper\", \"@ember/service\", \"@ember/string\"], function (_exports, _helper, _service, _string) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatGuardianHelper extends _helper.default {\n    static {\n      dt7948.g(this.prototype, \"chatGuardian\", [_service.service]);\n    }\n    #chatGuardian = (dt7948.i(this, \"chatGuardian\"), void 0);\n    compute(inputs) {\n      const [key, ...params] = inputs;\n      if (!key) {\n        return;\n      }\n      return this.chatGuardian[(0, _string.camelize)(key)]?.(...params);\n    }\n  }\n  _exports.default = ChatGuardianHelper;\n});","define(\"discourse/plugins/chat/discourse/helpers/first-visible-message-id\", [\"exports\", \"discourse/plugins/chat/discourse/lib/check-message-visibility\"], function (_exports, _checkMessageVisibility) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = firstVisibleMessageId;\n  function firstVisibleMessageId(container) {\n    let _found;\n    const messages = container.querySelectorAll(\":scope .chat-messages-container > [data-id]\");\n    for (let i = messages.length - 1; i >= 0; i--) {\n      const message = messages[i];\n      if ((0, _checkMessageVisibility.checkMessageBottomVisibility)(container, message)) {\n        _found = message;\n        break;\n      }\n    }\n    const id = _found?.dataset?.id;\n    return id ? parseInt(id, 10) : null;\n  }\n});","define(\"discourse/plugins/chat/discourse/helpers/format-chat-date\", [\"exports\", \"@ember/template\", \"discourse/lib/get-url\", \"discourse/models/user\", \"discourse-i18n\"], function (_exports, _template, _getUrl, _user, _discourseI18n) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = formatChatDate;\n  function formatChatDate(message, options = {}) {\n    const currentUser = _user.default.current();\n    const tz = currentUser ? currentUser.user_option.timezone : moment.tz.guess();\n    const date = moment(new Date(message.createdAt), tz);\n    const title = date.format((0, _discourseI18n.i18n)(\"dates.long_with_year\"));\n    let display;\n    if (options.mode === \"tiny\") {\n      display = date.format((0, _discourseI18n.i18n)(\"dates.time_short\"));\n    } else if (options.mode === \"short\") {\n      display = date.format((0, _discourseI18n.i18n)(\"dates.time_short_day\"));\n    } else if (options.mode === \"long\") {\n      display = date.format((0, _discourseI18n.i18n)(\"dates.long_no_year\"));\n    } else {\n      display = date.format((0, _discourseI18n.i18n)(\"dates.time\"));\n    }\n    if (message.staged) {\n      return (0, _template.trustHTML)(`<span title='${title}' tabindex=\"-1\" class='chat-time'>${display}</span>`);\n    } else {\n      let url;\n      if (options.threadContext) {\n        url = (0, _getUrl.default)(`/chat/c/-/${message.channel.id}/t/${message.thread.id}/${message.id}`);\n      } else {\n        url = (0, _getUrl.default)(`/chat/c/-/${message.channel.id}/${message.id}`);\n      }\n      return (0, _template.trustHTML)(`<a title='${title}' tabindex=\"-1\" class='chat-time' href='${url}'>${display}</a>`);\n    }\n  }\n});","define(\"discourse/plugins/chat/discourse/initializers/chat-audio\", [\"exports\", \"discourse/lib/plugin-api\", \"discourse/lib/utilities\", \"discourse/plugins/chat/discourse/lib/chat-constants\"], function (_exports, _pluginApi, _utilities, _chatConstants) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const MENTION = 29;\n  const MESSAGE = 30;\n  const CHAT_NOTIFICATION_TYPES = [MENTION, MESSAGE];\n  var _default = _exports.default = {\n    name: \"chat-audio\",\n    initialize(container) {\n      const chat = container.lookup(\"service:chat\");\n      if (!chat.userCanChat) {\n        return;\n      }\n      this.canPlaySound = async () => {\n        return await (0, _utilities.isPrimaryTab)();\n      };\n      (0, _pluginApi.withPluginApi)(api => {\n        api.registerDesktopNotificationHandler((data, siteSettings, user) => {\n          const indicatorType = user.user_option.chat_header_indicator_preference;\n          const isMention = data.notification_type === MENTION;\n          if (user.isInDoNotDisturb()) {\n            return;\n          }\n          if (!user.chat_sound || indicatorType === _chatConstants.INDICATOR_PREFERENCES.never) {\n            return;\n          }\n          if (indicatorType === _chatConstants.INDICATOR_PREFERENCES.only_mentions && !isMention) {\n            return;\n          }\n          if (indicatorType === _chatConstants.INDICATOR_PREFERENCES.dm_and_mentions && !data.is_direct_message_channel && !isMention) {\n            return;\n          }\n          if (CHAT_NOTIFICATION_TYPES.includes(data.notification_type)) {\n            this.canPlaySound().then(success => {\n              if (success) {\n                const chatAudioManager = container.lookup(\"service:chat-audio-manager\");\n                chatAudioManager.play(user.chat_sound);\n              }\n            });\n          }\n        });\n      });\n    }\n  };\n});","define(\"discourse/plugins/chat/discourse/initializers/chat-category-tab\", [\"exports\", \"discourse/lib/plugin-api\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/upsert-category/chat\"], function (_exports, _pluginApi, _discourseI18n, _chat) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    name: \"chat-category-tab\",\n    initialize() {\n      (0, _pluginApi.withPluginApi)(api => {\n        api.registerEditCategoryTab({\n          id: \"chat\",\n          name: (0, _discourseI18n.i18n)(\"chat.edit_category.tab_title\"),\n          component: _chat.default,\n          condition: ({\n            category,\n            siteSettings\n          }) => siteSettings.chat_enabled && category.id && siteSettings.enable_simplified_category_creation\n        });\n      });\n    }\n  };\n});","define(\"discourse/plugins/chat/discourse/initializers/chat-decorators\", [\"exports\", \"discourse/instance-initializers/onebox-decorators\", \"discourse/lib/codeblock-buttons\", \"discourse/lib/get-url\", \"discourse/lib/hashtag-decorator\", \"discourse/lib/highlight-syntax\", \"discourse/lib/lightbox\", \"discourse/lib/plugin-api\", \"discourse/lib/url\", \"discourse-i18n\"], function (_exports, _oneboxDecorators, _codeblockButtons, _getUrl, _hashtagDecorator, _highlightSyntax, _lightbox, _pluginApi, _url, _discourseI18n) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    name: \"chat-decorators\",\n    initializeWithPluginApi(api, container) {\n      const siteSettings = container.lookup(\"service:site-settings\");\n      const site = container.lookup(\"service:site\");\n      api.decorateChatMessage(element => (0, _oneboxDecorators.decorateGithubOneboxBody)(element), {\n        id: \"onebox-github-body\"\n      });\n      api.decorateChatMessage(element => {\n        element.querySelectorAll(\".onebox.githubblob li.selected\").forEach(line => {\n          const scrollingElement = this._getScrollParent(line, \"onebox\");\n\n          // most likely a very small file which doesn’t need scrolling\n          if (!scrollingElement) {\n            return;\n          }\n          const scrollBarWidth = scrollingElement.offsetHeight - scrollingElement.clientHeight;\n          scrollingElement.scroll({\n            top: line.offsetTop + scrollBarWidth - scrollingElement.offsetHeight / 2 + line.offsetHeight / 2\n          });\n        });\n      }, {\n        id: \"onebox-github-scrolling\"\n      });\n      api.decorateChatMessage(element => (0, _highlightSyntax.default)(element, siteSettings, container.lookup(\"service:session\")), {\n        id: \"highlightSyntax\"\n      });\n      api.decorateChatMessage(this.renderChatTranscriptDates, {\n        id: \"transcriptDates\"\n      });\n      api.decorateChatMessage(this.forceLinksToOpenNewTab, {\n        id: \"linksNewTab\"\n      });\n      api.decorateChatMessage(element => (0, _lightbox.default)(element), {\n        id: \"lightbox\"\n      });\n      api.decorateChatMessage(element => (0, _hashtagDecorator.decorateHashtags)(element, site), {\n        id: \"hashtagIcons\"\n      });\n      api.decorateChatMessage(element => {\n        if (!siteSettings.chat_show_copy_button_on_codeblocks) {\n          return;\n        }\n        if (!element.querySelector(\"pre > code\")) {\n          return;\n        }\n        const cb = new _codeblockButtons.default({\n          site,\n          showFullscreen: true,\n          showCopy: true\n        });\n        cb.attachToGeneric(element);\n        return cb.cleanup;\n      }, {\n        id: \"codeblockButtons\"\n      });\n    },\n    _getScrollParent(node, maxParentSelector) {\n      if (node === null || node.classList.contains(maxParentSelector)) {\n        return null;\n      }\n      if (node.scrollHeight > node.clientHeight) {\n        return node;\n      } else {\n        return this._getScrollParent(node.parentNode, maxParentSelector);\n      }\n    },\n    renderChatTranscriptDates(element) {\n      element.querySelectorAll(\".chat-transcript\").forEach(transcriptEl => {\n        const dateTimeRaw = transcriptEl.dataset[\"datetime\"];\n        const dateTimeLinkEl = transcriptEl.querySelector(\".chat-transcript-datetime a\");\n\n        // we only show date for first message\n        if (!dateTimeLinkEl) {\n          return;\n        }\n        if (dateTimeLinkEl.innerText !== \"\") {\n          // same as highlight, no need to do this for every single message every time\n          // any message changes\n          return;\n        }\n        dateTimeLinkEl.innerText = moment(dateTimeRaw).format((0, _discourseI18n.i18n)(\"dates.long_no_year\"));\n      });\n    },\n    forceLinksToOpenNewTab(element) {\n      const links = element.querySelectorAll(\"a:not([target]), a[target]:not([target='_blank'])\");\n      for (let linkIndex = 0; linkIndex < links.length; linkIndex++) {\n        const link = links[linkIndex];\n        if (!_url.default.isInternal(link.href) || !(0, _getUrl.samePrefix)(link.href)) {\n          link.setAttribute(\"target\", \"_blank\");\n        }\n      }\n    },\n    initialize(container) {\n      if (container.lookup(\"service:chat\").userCanChat) {\n        (0, _pluginApi.withPluginApi)(api => this.initializeWithPluginApi(api, container));\n      }\n    }\n  };\n});","define(\"discourse/plugins/chat/discourse/initializers/chat-keyboard-shortcuts\", [\"exports\", \"discourse/lib/plugin-api\", \"discourse/services/keyboard-shortcuts\", \"discourse/plugins/chat/discourse/components/chat/modal/new-message\"], function (_exports, _pluginApi, _keyboardShortcuts, _newMessage) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    name: \"chat-keyboard-shortcuts\",\n    initialize(container) {\n      const chatService = container.lookup(\"service:chat\");\n      if (!chatService.userCanChat) {\n        return;\n      }\n      const router = container.lookup(\"service:router\");\n      const appEvents = container.lookup(\"service:app-events\");\n      const modal = container.lookup(\"service:modal\");\n      const chatStateManager = container.lookup(\"service:chat-state-manager\");\n      const chatThreadPane = container.lookup(\"service:chat-thread-pane\");\n      const chatThreadListPane = container.lookup(\"service:chat-thread-list-pane\");\n      const chatChannelsManager = container.lookup(\"service:chat-channels-manager\");\n      const openQuickChannelSelector = e => {\n        if (isInputSelection(e.target) && !isChatComposer(e.target)) {\n          return;\n        }\n        e.preventDefault();\n        e.stopPropagation();\n        modal.show(_newMessage.default);\n      };\n      const handleMoveUpShortcut = e => {\n        e.preventDefault();\n        e.stopPropagation();\n        chatService.switchChannelUpOrDown(\"up\");\n      };\n      const handleMoveDownShortcut = e => {\n        e.preventDefault();\n        e.stopPropagation();\n        chatService.switchChannelUpOrDown(\"down\");\n      };\n      const handleMoveUpUnreadShortcut = e => {\n        e.preventDefault();\n        e.stopPropagation();\n        chatService.switchChannelUpOrDown(\"up\", true);\n      };\n      const handleMoveDownUnreadShortcut = e => {\n        e.preventDefault();\n        e.stopPropagation();\n        chatService.switchChannelUpOrDown(\"down\", true);\n      };\n      const isChatComposer = el => el.classList.contains(\"chat-composer__input\");\n      const isInputSelection = el => {\n        const inputs = [\"input\", \"textarea\", \"select\", \"button\"];\n        const elementTagName = el?.tagName.toLowerCase();\n        return inputs.includes(elementTagName) || !!el?.closest('[contenteditable=\"true\"]');\n      };\n      const modifyComposerSelection = (event, type) => {\n        if (!isChatComposer(event.target)) {\n          return;\n        }\n        event.preventDefault();\n        event.stopPropagation();\n        appEvents.trigger(\"chat:modify-selection\", event, {\n          type,\n          context: event.target.dataset.chatComposerContext\n        });\n      };\n      const openInsertLinkModal = event => {\n        if (!isChatComposer(event.target)) {\n          return;\n        }\n        event.preventDefault();\n        event.stopPropagation();\n        appEvents.trigger(\"chat:open-insert-link-modal\", event, {\n          context: event.target.dataset.chatComposerContext\n        });\n      };\n      const toggleChatDrawer = event => {\n        if (isInputSelection(event.target)) {\n          return;\n        }\n        event.preventDefault();\n        event.stopPropagation();\n        if (chatStateManager.isDrawerActive) {\n          appEvents.trigger(\"chat:toggle-close\", event);\n        } else {\n          chatStateManager.prefersDrawer();\n          router.transitionTo(chatStateManager.lastKnownChatURL || \"chat\");\n        }\n      };\n      const closeChat = event => {\n        // when escaping from lightbox, do not close chat\n        if (event.srcElement?.classList?.value?.includes(\"lightbox\")) {\n          return;\n        }\n        if (chatStateManager.isDrawerActive) {\n          event.preventDefault();\n          event.stopPropagation();\n          appEvents.trigger(\"chat:toggle-close\", event);\n          return;\n        }\n        if (chatThreadPane.isOpened) {\n          event.preventDefault();\n          event.stopPropagation();\n          chatThreadPane.close();\n          return;\n        }\n        if (chatThreadListPane.isOpened) {\n          event.preventDefault();\n          event.stopPropagation();\n          chatThreadListPane.close();\n          return;\n        }\n        if (chatStateManager.isPinnedMessagesPaneOpen) {\n          event.preventDefault();\n          event.stopPropagation();\n          router.transitionTo(\"chat.channel\", ...chatService.activeChannel.routeModels);\n          return;\n        }\n      };\n      const markAllChannelsRead = event => {\n        event.preventDefault();\n        event.stopPropagation();\n        if (chatStateManager.isActive) {\n          chatChannelsManager.markAllChannelsRead();\n        }\n      };\n      (0, _pluginApi.withPluginApi)(api => {\n        api.addKeyboardShortcut(`${_keyboardShortcuts.PLATFORM_KEY_MODIFIER}+k`, openQuickChannelSelector, {\n          global: true,\n          help: {\n            category: \"chat\",\n            name: \"chat.keyboard_shortcuts.open_quick_channel_selector\",\n            definition: {\n              keys1: [\"meta\", \"k\"],\n              keysDelimiter: \"plus\"\n            }\n          }\n        });\n        api.addKeyboardShortcut(\"alt+up\", handleMoveUpShortcut, {\n          global: true,\n          help: {\n            category: \"chat\",\n            name: \"chat.keyboard_shortcuts.switch_channel_arrows\",\n            definition: {\n              keys1: [\"alt\", \"&uarr;\"],\n              keys2: [\"alt\", \"&darr;\"],\n              keysDelimiter: \"plus\",\n              shortcutsDelimiter: \"slash\"\n            }\n          }\n        });\n        api.addKeyboardShortcut(\"alt+down\", handleMoveDownShortcut, {\n          global: true\n        });\n        api.addKeyboardShortcut(\"alt+shift+up\", handleMoveUpUnreadShortcut, {\n          global: true,\n          help: {\n            category: \"chat\",\n            name: \"chat.keyboard_shortcuts.switch__unread_channel_arrows\",\n            definition: {\n              keys1: [\"alt\", \"shift\", \"&uarr;\"],\n              keys2: [\"alt\", \"shift\", \"&darr;\"],\n              keysDelimiter: \"plus\",\n              shortcutsDelimiter: \"newline\"\n            }\n          }\n        });\n        api.addKeyboardShortcut(\"alt+shift+down\", handleMoveDownUnreadShortcut, {\n          global: true\n        });\n        api.addKeyboardShortcut(`${_keyboardShortcuts.PLATFORM_KEY_MODIFIER}+b`, event => modifyComposerSelection(event, \"bold\"), {\n          global: true,\n          help: {\n            category: \"chat\",\n            name: \"chat.keyboard_shortcuts.composer_bold\",\n            definition: {\n              keys1: [\"meta\", \"b\"],\n              keysDelimiter: \"plus\"\n            }\n          }\n        });\n        api.addKeyboardShortcut(`${_keyboardShortcuts.PLATFORM_KEY_MODIFIER}+i`, event => modifyComposerSelection(event, \"italic\"), {\n          global: true,\n          help: {\n            category: \"chat\",\n            name: \"chat.keyboard_shortcuts.composer_italic\",\n            definition: {\n              keys1: [\"meta\", \"i\"],\n              keysDelimiter: \"plus\"\n            }\n          }\n        });\n        api.addKeyboardShortcut(`${_keyboardShortcuts.PLATFORM_KEY_MODIFIER}+e`, event => modifyComposerSelection(event, \"code\"), {\n          global: true,\n          help: {\n            category: \"chat\",\n            name: \"chat.keyboard_shortcuts.composer_code\",\n            definition: {\n              keys1: [\"meta\", \"e\"],\n              keysDelimiter: \"plus\"\n            }\n          }\n        });\n        api.addKeyboardShortcut(`${_keyboardShortcuts.PLATFORM_KEY_MODIFIER}+l`, event => openInsertLinkModal(event), {\n          global: true,\n          help: {\n            category: \"chat\",\n            name: \"chat.keyboard_shortcuts.open_insert_link_modal\",\n            definition: {\n              keys1: [\"meta\", \"l\"],\n              keysDelimiter: \"plus\"\n            }\n          }\n        });\n        api.addKeyboardShortcut(`-`, event => toggleChatDrawer(event), {\n          global: true,\n          help: {\n            category: \"chat\",\n            name: \"chat.keyboard_shortcuts.drawer_toggle\",\n            definition: {\n              keys1: [\"-\"]\n            }\n          }\n        });\n        api.addKeyboardShortcut(\"esc\", event => closeChat(event), {\n          global: true,\n          help: {\n            category: \"chat\",\n            name: \"chat.keyboard_shortcuts.drawer_close\",\n            definition: {\n              keys1: [\"esc\"]\n            }\n          }\n        });\n        api.addKeyboardShortcut(`shift+esc`, event => markAllChannelsRead(event), {\n          global: true,\n          help: {\n            category: \"chat\",\n            name: \"chat.keyboard_shortcuts.mark_all_channels_read\",\n            definition: {\n              keys1: [\"shift\", \"esc\"],\n              keysDelimiter: \"plus\"\n            }\n          }\n        });\n      });\n    }\n  };\n});","define(\"discourse/plugins/chat/discourse/initializers/chat-plugin-decorators\", [\"exports\", \"discourse/lib/local-dates\", \"discourse/lib/plugin-api\", \"discourse/lib/utilities\"], function (_exports, _localDates, _pluginApi, _utilities) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    name: \"chat-plugin-decorators\",\n    initializeWithPluginApi(api, siteSettings) {\n      api.decorateChatMessage(element => {\n        (0, _localDates.applyLocalDates)(element.querySelectorAll(\".discourse-local-date\"), siteSettings);\n      }, {\n        id: \"local-dates\"\n      });\n      if (siteSettings.spoiler_enabled) {\n        const applySpoiler = (0, _utilities.optionalRequire)(\"discourse/plugins/spoiler-alert/lib/apply-spoiler\");\n        api.decorateChatMessage(element => {\n          element.querySelectorAll(\".spoiler\").forEach(spoiler => {\n            spoiler.classList.remove(\"spoiler\");\n            spoiler.classList.add(\"spoiled\");\n            applySpoiler(spoiler);\n          });\n        }, {\n          id: \"spoiler\"\n        });\n      }\n    },\n    initialize(container) {\n      if (container.lookup(\"service:chat\").userCanChat) {\n        const siteSettings = container.lookup(\"service:site-settings\");\n        (0, _pluginApi.withPluginApi)(api => {\n          this.initializeWithPluginApi(api, siteSettings);\n        });\n      }\n    }\n  };\n});","define(\"discourse/plugins/chat/discourse/initializers/chat-setup\", [\"exports\", \"@ember/owner\", \"@ember/service\", \"discourse/components/emoji-picker/detached\", \"discourse/lib/decorators\", \"discourse/lib/formatter\", \"discourse/lib/icon-library\", \"discourse/lib/plugin-api\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/lib/chat-composer-buttons\", \"discourse/plugins/chat/discourse/lib/hashtag-types/channel\", \"discourse/plugins/chat/lib/rich-editor-extension\", \"discourse/plugins/chat/discourse/components/chat/header/icon\", \"discourse/plugins/chat/discourse/components/styleguide/organisms/chat\"], function (_exports, _owner, _service, _detached, _decorators, _formatter, _iconLibrary, _pluginApi, _discourseI18n, _chatComposerButtons, _channel, _richEditorExtension, _icon, _chat) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  let _lastForcedRefreshAt;\n  const MIN_REFRESH_DURATION_MS = 180000; // 3 minutes\n\n  (0, _iconLibrary.replaceIcon)(\"d-chat\", \"comment\");\n  class ChatSetupInit {\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatService\", [(0, _service.service)(\"chat\")]);\n    }\n    #chatService = (dt7948.i(this, \"chatService\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatHistory\", [_service.service]);\n    }\n    #chatHistory = (dt7948.i(this, \"chatHistory\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"appEvents\", [_service.service]);\n    }\n    #appEvents = (dt7948.i(this, \"appEvents\"), void 0);\n    constructor(owner) {\n      (0, _owner.setOwner)(this, owner);\n      this.appEvents.on(\"discourse:focus-changed\", this, \"_handleFocusChanged\");\n      (0, _pluginApi.withPluginApi)(api => {\n        api.addAboutPageActivity(\"chat_messages\", periods => {\n          const count = periods[\"7_days\"];\n          if (count) {\n            return {\n              icon: \"comment-dots\",\n              class: \"chat-messages\",\n              activityText: (0, _discourseI18n.i18n)(\"about.activities.chat_messages\", {\n                count,\n                formatted_number: (0, _formatter.number)(count)\n              }),\n              period: (0, _discourseI18n.i18n)(\"about.activities.periods.last_7_days\")\n            };\n          }\n        });\n        if (!this.chatService.userCanChat) {\n          return;\n        }\n        api.onPageChange(path => {\n          const route = this.router.recognize(path);\n          if (route.name.startsWith(\"chat.\")) {\n            this.chatHistory.visit(route);\n          }\n        });\n        api.registerHashtagType(\"channel\", new _channel.default(owner));\n        if (this.siteSettings.enable_emoji) {\n          api.registerChatComposerButton({\n            label: \"chat.emoji\",\n            id: \"emoji\",\n            class: \"chat-emoji-btn\",\n            icon: \"face-smile\",\n            position: \"dropdown\",\n            displayed: () => owner.lookup(\"service:site\").mobileView,\n            action(context) {\n              const didSelectEmoji = emoji => {\n                const composer = owner.lookup(`service:chat-${context}-composer`);\n                composer.textarea.addText(composer.textarea.getSelected(), `:${emoji}:`);\n              };\n              owner.lookup(\"service:menu\").show(document.body, {\n                identifier: \"emoji-picker\",\n                groupIdentifier: \"emoji-picker\",\n                component: _detached.default,\n                modalForMobile: true,\n                data: {\n                  context: \"chat\",\n                  didSelectEmoji\n                }\n              });\n            }\n          });\n        }\n        api.registerChatComposerButton({\n          id: \"chat-upload-btn\",\n          icon: \"far-image\",\n          label: \"chat.upload\",\n          position: \"dropdown\",\n          action: \"uploadClicked\",\n          synchronous: true,\n          dependentKeys: [\"canAttachUploads\"],\n          displayed() {\n            return this.canAttachUploads;\n          }\n        });\n        if (this.siteSettings.discourse_local_dates_enabled) {\n          api.registerChatComposerButton({\n            label: \"discourse_local_dates.title\",\n            id: \"local-dates\",\n            class: \"chat-local-dates-btn\",\n            icon: \"calendar-days\",\n            position: \"dropdown\",\n            action() {\n              this.insertDiscourseLocalDate();\n            }\n          });\n        }\n\n        // we want to decorate the chat quote dates regardless\n        // of whether the current user has chat enabled\n        api.decorateCookedElement(elem => {\n          const currentUser = owner.lookup(\"service:current-user\");\n          const currentUserTimezone = currentUser?.user_option?.timezone;\n          const chatTranscriptElements = elem.querySelectorAll(\".chat-transcript\");\n          chatTranscriptElements.forEach(el => {\n            const dateTimeRaw = el.dataset[\"datetime\"];\n            const dateTimeEl = el.querySelector(\".chat-transcript-datetime a, .chat-transcript-datetime span\");\n            if (currentUserTimezone) {\n              dateTimeEl.innerText = moment.tz(dateTimeRaw, currentUserTimezone).format((0, _discourseI18n.i18n)(\"dates.long_no_year\"));\n            } else {\n              dateTimeEl.innerText = moment(dateTimeRaw).format((0, _discourseI18n.i18n)(\"dates.long_no_year\"));\n            }\n            dateTimeEl.dataset.dateFormatted = true;\n          });\n        });\n        if (!this.chatService.userCanChat) {\n          return;\n        }\n        document.body.classList.add(\"chat-enabled\");\n        this.chatService.loadChannels();\n        const chatNotificationManager = owner.lookup(\"service:chat-notification-manager\");\n        chatNotificationManager.start();\n        if (!this._registeredDocumentTitleCountCallback) {\n          api.addDocumentTitleCounter(this.documentTitleCountCallback);\n          this._registeredDocumentTitleCountCallback = true;\n        }\n        api.addCardClickListenerSelector(\".chat-drawer-outlet\");\n        if (this.chatService.userCanChat) {\n          api.headerIcons.add(\"chat\", _icon.default, {\n            after: \"search\",\n            before: \"hamburger\"\n          });\n        }\n        api.addStyleguideSection?.({\n          component: _chat.default,\n          category: \"organisms\",\n          id: \"chat\"\n        });\n        api.registerRichEditorExtension(_richEditorExtension.default);\n      });\n    }\n    documentTitleCountCallback() {\n      return this.chatService.getDocumentTitleCount();\n    }\n    static {\n      dt7948.n(this.prototype, \"documentTitleCountCallback\", [_decorators.bind]);\n    }\n    teardown() {\n      this.appEvents.off(\"discourse:focus-changed\", this, \"_handleFocusChanged\");\n      if (!this.chatService.userCanChat) {\n        return;\n      }\n      _lastForcedRefreshAt = null;\n      (0, _chatComposerButtons.clearChatComposerButtons)();\n    }\n    _handleFocusChanged(hasFocus) {\n      if (!this.chatService.userCanChat) {\n        return;\n      }\n      if (!hasFocus) {\n        _lastForcedRefreshAt = Date.now();\n        return;\n      }\n      _lastForcedRefreshAt = _lastForcedRefreshAt || Date.now();\n      const duration = Date.now() - _lastForcedRefreshAt;\n      if (duration <= MIN_REFRESH_DURATION_MS) {\n        return;\n      }\n      _lastForcedRefreshAt = Date.now();\n    }\n    static {\n      dt7948.n(this.prototype, \"_handleFocusChanged\", [_decorators.bind]);\n    }\n  }\n  var _default = _exports.default = {\n    name: \"chat-setup\",\n    before: \"hashtag-css-generator\",\n    initialize(owner) {\n      this.instance = new ChatSetupInit(owner);\n    },\n    teardown() {\n      this.instance.teardown();\n      this.instance = null;\n    }\n  };\n});","define(\"discourse/plugins/chat/discourse/initializers/chat-sidebar\", [\"exports\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\", \"@ember/string\", \"@ember/template\", \"discourse/helpers/decorate-username-selector\", \"discourse/helpers/noop\", \"discourse/lib/avatar-utils\", \"discourse/lib/decorators\", \"discourse/lib/plugin-api\", \"discourse/lib/text\", \"discourse/lib/utilities\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/modal/new-message\", \"discourse/plugins/chat/discourse/components/chat-channel-sidebar-context-menu\", \"discourse/plugins/chat/discourse/components/chat-sidebar-indicators\", \"discourse/plugins/chat/discourse/lib/init-sidebar-state\"], function (_exports, _tracking, _object, _service, _string, _template, _decorateUsernameSelector, _noop, _avatarUtils, _decorators, _pluginApi, _text, _utilities, _discourseI18n, _newMessage, _chatChannelSidebarContextMenu, _chatSidebarIndicators, _initSidebarState) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const CHAT_STARRED_CHANNELS_SECTION = \"chat-starred-channels\";\n  function createChannelLink(BaseCustomSidebarSectionLink, options = {}) {\n    const {\n      showSuffix = true\n    } = options;\n    return class extends BaseCustomSidebarSectionLink {\n      route = \"chat.channel\";\n      suffixType = \"icon\";\n      hoverType = \"icon\";\n      constructor({\n        channel,\n        chatService,\n        currentUser,\n        siteSettings,\n        chatStateManager\n      }) {\n        super(...arguments);\n        this.channel = channel;\n        this.chatService = chatService;\n        this.siteSettings = siteSettings;\n        this.currentUser = currentUser;\n        this.chatStateManager = chatStateManager;\n        if (this.isOneOnOneDM) {\n          const user = this.channel.chatable.users?.[0];\n          if (user?.username !== (0, _discourseI18n.i18n)(\"chat.deleted_chat_username\")) {\n            user.statusManager.trackStatus();\n          }\n        }\n      }\n      willDestroy() {\n        if (this.isOneOnOneDM) {\n          this.channel.chatable.users?.[0]?.statusManager?.stopTrackingStatus();\n        }\n      }\n      static {\n        dt7948.n(this.prototype, \"willDestroy\", [_decorators.bind]);\n      }\n      get isDM() {\n        return this.channel.isDirectMessageChannel;\n      }\n      get isOneOnOneDM() {\n        return this.isDM && this.channel.chatable.users.length === 1;\n      }\n      get name() {\n        return this.isDM ? this.channel.slugifiedTitle : (0, _string.dasherize)(this.channel.slugifiedTitle);\n      }\n      get classNames() {\n        const classes = [];\n        if (this.channel.currentUserMembership.muted) {\n          classes.push(\"sidebar-section-link--muted\");\n        }\n        if (this.channel.id === this.chatService.activeChannel?.id && (this.chatStateManager.isDrawerExpanded || this.chatStateManager.isFullPageActive)) {\n          classes.push(\"sidebar-section-link--active\");\n        }\n        classes.push(`channel-${this.channel.id}`);\n        return classes.join(\" \");\n      }\n      get models() {\n        return this.channel.routeModels;\n      }\n      get text() {\n        if (this.isDM) {\n          if (this.channel.chatable.group) {\n            return this.channel.displayTitle;\n          } else {\n            const username = this.channel.escapedTitle.replaceAll(\"@\", \"\");\n            return (0, _template.trustHTML)(`${(0, _utilities.escapeExpression)(username)}${(0, _decorateUsernameSelector.decorateUsername)((0, _utilities.escapeExpression)(username))}`);\n          }\n        } else {\n          return (0, _template.trustHTML)((0, _text.emojiUnescape)(this.channel.escapedTitle));\n        }\n      }\n      get title() {\n        if (this.isDM) {\n          if (this.channel.chatable.group) {\n            return (0, _discourseI18n.i18n)(\"chat.placeholder_channel\", {\n              channelName: this.channel.escapedTitle\n            });\n          } else {\n            return (0, _discourseI18n.i18n)(\"chat.placeholder_users\", {\n              commaSeparatedNames: this.channel.escapedTitle\n            });\n          }\n        } else {\n          return this.channel.escapedDescription ? (0, _template.trustHTML)(this.channel.escapedDescription) : `${this.channel.escapedTitle} ${(0, _discourseI18n.i18n)(\"chat.title\")}`;\n        }\n      }\n      get prefixType() {\n        if (this.isDM) {\n          if (this.channel.emoji) {\n            return \"emoji\";\n          } else if (this.channel.chatable.group) {\n            return \"text\";\n          } else {\n            return \"image\";\n          }\n        } else {\n          return this.channel.emoji ? \"emoji\" : \"icon\";\n        }\n      }\n      get prefixValue() {\n        if (this.isDM) {\n          if (this.channel.emoji) {\n            return this.channel.emoji;\n          } else if (this.channel.chatable.group) {\n            return this.channel.membershipsCount;\n          } else {\n            return (0, _avatarUtils.avatarUrl)(this.channel.chatable.users[0].avatar_template, \"tiny\");\n          }\n        } else {\n          return this.channel.emoji ?? \"d-chat\";\n        }\n      }\n      get prefixColor() {\n        return this.isDM ? null : this.channel.chatable.color;\n      }\n      get prefixBadge() {\n        return !this.isDM && this.channel.chatable.read_restricted ? \"lock\" : \"\";\n      }\n      get prefixCSSClass() {\n        if (this.isDM) {\n          const activeUsers = this.chatService.presenceChannel.users;\n          const user = this.channel.chatable.users[0];\n          if (!!activeUsers?.find(item => (0, _object.get)(item, \"id\") === user?.id) || !!activeUsers?.find(item => (0, _object.get)(item, \"username\") === user?.username)) {\n            return \"active\";\n          }\n        }\n        return \"\";\n      }\n      get suffixComponent() {\n        return _chatSidebarIndicators.default;\n      }\n      get suffixArgs() {\n        if (this.isDM) {\n          return {\n            userStatus: this.isOneOnOneDM ? this.channel.chatable.users[0].get(\"status\") : null,\n            unreadCount: this.channel.tracking.unreadCount,\n            unreadThreadsCount: this.channel.unreadThreadsCountSinceLastViewed,\n            mentionCount: this.channel.tracking.mentionCount,\n            watchedThreadsUnreadCount: this.channel.tracking.watchedThreadsUnreadCount,\n            isDirectMessageChannel: true\n          };\n        } else {\n          return {\n            unreadCount: this.channel.tracking.unreadCount,\n            unreadThreadsCount: this.chatService.activeChannel?.id !== this.channel.id ? this.channel.unreadThreadsCountSinceLastViewed : 0,\n            mentionCount: this.channel.tracking.mentionCount,\n            watchedThreadsUnreadCount: this.channel.tracking.watchedThreadsUnreadCount,\n            isDirectMessageChannel: false\n          };\n        }\n      }\n      get suffixValue() {\n        return showSuffix ? \"\" : \"\";\n      }\n      get suffixCSSClass() {\n        return showSuffix ? \"\" : \"\";\n      }\n    };\n  }\n  var _default = _exports.default = {\n    name: \"chat-sidebar\",\n    initialize(container) {\n      this.chatService = container.lookup(\"service:chat\");\n      if (!this.chatService.userCanChat) {\n        return;\n      }\n      this.siteSettings = container.lookup(\"service:site-settings\");\n      this.currentUser = container.lookup(\"service:current-user\");\n      this.capabilities = container.lookup(\"service:capabilities\");\n      (0, _pluginApi.withPluginApi)(api => {\n        const chatStateManager = container.lookup(\"service:chat-state-manager\");\n        api.addSidebarPanel(BaseCustomSidebarPanel => class ChatSidebarPanel extends BaseCustomSidebarPanel {\n          key = _initSidebarState.CHAT_PANEL;\n          switchButtonLabel = (0, _discourseI18n.i18n)(\"sidebar.panels.chat.label\");\n          switchButtonIcon = \"d-chat\";\n          get switchButtonDefaultUrl() {\n            return chatStateManager.lastKnownChatURL || \"/chat\";\n          }\n        });\n        (0, _initSidebarState.initSidebarState)(api, api.getCurrentUser());\n      });\n      (0, _pluginApi.withPluginApi)(api => {\n        const chatChannelsManager = container.lookup(\"service:chat-channels-manager\");\n        const chatStateManager = container.lookup(\"service:chat-state-manager\");\n        if (this.siteSettings.chat_search_enabled) {\n          api.addSidebarSection((BaseCustomSidebarSection, BaseCustomSidebarSectionLink) => {\n            const SidebarChatSearchSectionLink = class extends BaseCustomSidebarSectionLink {\n              route = \"chat.search\";\n              text = (0, _discourseI18n.i18n)(\"chat.search.title\");\n              title = (0, _discourseI18n.i18n)(\"chat.search.title\");\n              name = \"chat-search\";\n              prefixType = \"icon\";\n              prefixValue = \"magnifying-glass\";\n            };\n            const SidebarChatSearchSection = class extends BaseCustomSidebarSection {\n              hideSectionHeader = true;\n              name = \"chat-search\";\n              title = \"\";\n              get links() {\n                return [new SidebarChatSearchSectionLink()];\n              }\n              get text() {\n                return null;\n              }\n            };\n            return SidebarChatSearchSection;\n          }, _initSidebarState.CHAT_PANEL);\n        }\n        api.addSidebarSection((BaseCustomSidebarSection, BaseCustomSidebarSectionLink) => {\n          const SidebarChatMyThreadsSectionLink = class extends BaseCustomSidebarSectionLink {\n            route = \"chat.threads\";\n            text = (0, _discourseI18n.i18n)(\"chat.my_threads.title\");\n            title = (0, _discourseI18n.i18n)(\"chat.my_threads.title\");\n            name = \"user-threads\";\n            prefixType = \"icon\";\n            prefixValue = \"discourse-threads\";\n            suffixType = \"icon\";\n            constructor() {\n              super(...arguments);\n              if (container.isDestroyed) {\n                return;\n              }\n            }\n            get suffixValue() {\n              return chatChannelsManager.allChannels.some(channel => channel.unreadThreadsCount > 0) ? \"circle\" : \"\";\n            }\n            get suffixCSSClass() {\n              return chatChannelsManager.allChannels.some(channel => channel.tracking.watchedThreadsUnreadCount > 0) ? \"urgent\" : \"unread\";\n            }\n          };\n          const SidebarChatMyThreadsSection = class extends BaseCustomSidebarSection {\n            static {\n              dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n            }\n            #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n            // we only show `My Threads` link\n            hideSectionHeader = true;\n            name = \"user-threads\";\n\n            // sidebar API doesn’t let you have undefined values\n            // even if you don't show the section’s header\n            title = \"\";\n            get links() {\n              return [new SidebarChatMyThreadsSectionLink()];\n            }\n            get text() {\n              return null;\n            }\n            get displaySection() {\n              return this.chatChannelsManager.shouldShowMyThreads;\n            }\n          };\n          return SidebarChatMyThreadsSection;\n        }, _initSidebarState.CHAT_PANEL);\n        api.addSidebarSection((BaseCustomSidebarSection, BaseCustomSidebarSectionLink) => {\n          const BaseStarredChannelLink = createChannelLink(BaseCustomSidebarSectionLink, {\n            showSuffix: false\n          });\n          const SidebarChatStarredChannelLink = class extends BaseStarredChannelLink {\n            constructor({\n              menuService,\n              capabilities\n            }) {\n              super(...arguments);\n              this.menuService = menuService;\n              this.capabilities = capabilities;\n            }\n            get hoverValue() {\n              if (this.capabilities.isIpadOS) {\n                return;\n              }\n              return \"ellipsis-vertical\";\n            }\n            get hoverTitle() {\n              return (0, _discourseI18n.i18n)(\"chat.open_channel_menu\");\n            }\n            get hoverAction() {\n              if (this.capabilities.isIpadOS) {\n                return _noop.default;\n              }\n              return (event, onMenuClose) => {\n                event.stopPropagation();\n                event.preventDefault();\n                this.menuService.show(event.target, {\n                  identifier: this.isDM ? \"chat-direct-message-channel-menu\" : \"chat-channel-menu\",\n                  component: _chatChannelSidebarContextMenu.default,\n                  placement: \"right\",\n                  data: {\n                    channel: this.channel\n                  },\n                  onClose: onMenuClose\n                });\n              };\n            }\n          };\n          const SidebarChatStarredChannelsSection = class extends BaseCustomSidebarSection {\n            static {\n              dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n            }\n            #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n            static {\n              dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n            }\n            #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n            static {\n              dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n            }\n            #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n            constructor() {\n              super(...arguments);\n              if (container.isDestroyed) {\n                return;\n              }\n              this.chatService = container.lookup(\"service:chat\");\n              this.chatChannelsManager = container.lookup(\"service:chat-channels-manager\");\n              this.menuService = container.lookup(\"service:menu\");\n              this.capabilities = container.lookup(\"service:capabilities\");\n            }\n            get sectionLinks() {\n              return this.chatChannelsManager.starredChannels.map(channel => new SidebarChatStarredChannelLink({\n                channel,\n                chatService: this.chatService,\n                currentUser: this.currentUser,\n                siteSettings: this.siteSettings,\n                chatStateManager: this.chatStateManager,\n                menuService: this.menuService,\n                capabilities: this.capabilities\n              }));\n            }\n            get name() {\n              return CHAT_STARRED_CHANNELS_SECTION;\n            }\n            get title() {\n              return (0, _discourseI18n.i18n)(\"chat.starred_channels\");\n            }\n            get text() {\n              return (0, _discourseI18n.i18n)(\"chat.starred_channels\");\n            }\n            get links() {\n              return this.sectionLinks;\n            }\n            get displaySection() {\n              return this.chatStateManager.hasPreloadedChannels && this.chatChannelsManager.hasStarredChannels;\n            }\n          };\n          return SidebarChatStarredChannelsSection;\n        }, _initSidebarState.CHAT_PANEL);\n        if (this.siteSettings.enable_public_channels) {\n          api.addSidebarSection((BaseCustomSidebarSection, BaseCustomSidebarSectionLink) => {\n            const SidebarChatChannelsSectionLink = class extends BaseCustomSidebarSectionLink {\n              hoverType = \"icon\";\n              hoverTitle = (0, _discourseI18n.i18n)(\"chat.open_channel_menu\");\n              constructor({\n                channel,\n                chatService,\n                siteSettings,\n                menuService,\n                capabilities\n              }) {\n                super(...arguments);\n                this.channel = channel;\n                this.chatService = chatService;\n                this.menuService = menuService;\n                this.chatStateManager = chatStateManager;\n                this.siteSettings = siteSettings;\n                this.capabilities = capabilities;\n              }\n              get hoverValue() {\n                return this.capabilities.isIpadOS ? null : \"ellipsis-vertical\";\n              }\n              get name() {\n                return (0, _string.dasherize)(this.channel.slugifiedTitle);\n              }\n              get classNames() {\n                const classes = [];\n                if (this.channel.currentUserMembership.muted) {\n                  classes.push(\"sidebar-section-link--muted\");\n                }\n                if (this.channel.id === this.chatService.activeChannel?.id && (this.chatStateManager.isDrawerExpanded || this.chatStateManager.isFullPageActive)) {\n                  classes.push(\"sidebar-section-link--active\");\n                }\n                classes.push(`channel-${this.channel.id}`);\n                return classes.join(\" \");\n              }\n              get route() {\n                return \"chat.channel\";\n              }\n              get models() {\n                return this.channel.routeModels;\n              }\n              get text() {\n                return (0, _template.trustHTML)((0, _text.emojiUnescape)(this.channel.escapedTitle));\n              }\n              get prefixType() {\n                return this.channel.emoji ? \"emoji\" : \"icon\";\n              }\n              get prefixValue() {\n                return this.channel.emoji ?? \"d-chat\";\n              }\n              get prefixColor() {\n                return this.channel.chatable.color;\n              }\n              get title() {\n                return this.channel.escapedDescription ? (0, _template.trustHTML)(this.channel.escapedDescription) : `${this.channel.escapedTitle} ${(0, _discourseI18n.i18n)(\"chat.title\")}`;\n              }\n              get prefixBadge() {\n                return this.channel.chatable.read_restricted ? \"lock\" : \"\";\n              }\n              get suffixComponent() {\n                return _chatSidebarIndicators.default;\n              }\n              get suffixArgs() {\n                return {\n                  unreadCount: this.channel.tracking.unreadCount,\n                  // We want to do this so we don't show a blue dot if the user is inside\n                  // the channel and a new unread thread comes in.\n                  unreadThreadsCount: this.chatService.activeChannel?.id !== this.channel.id ? this.channel.unreadThreadsCountSinceLastViewed : 0,\n                  mentionCount: this.channel.tracking.mentionCount,\n                  watchedThreadsUnreadCount: this.channel.tracking.watchedThreadsUnreadCount,\n                  isDirectMessageChannel: false\n                };\n              }\n              get hoverAction() {\n                if (this.capabilities.isIpadOS) {\n                  return _noop.default;\n                }\n                return (event, onMenuClose) => {\n                  event.stopPropagation();\n                  event.preventDefault();\n                  this.menuService.show(event.target, {\n                    identifier: \"chat-channel-menu\",\n                    component: _chatChannelSidebarContextMenu.default,\n                    placement: \"right\",\n                    data: {\n                      channel: this.channel\n                    },\n                    onClose: onMenuClose\n                  });\n                };\n              }\n            };\n            const SidebarChatChannelsSection = class extends BaseCustomSidebarSection {\n              static {\n                dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n              }\n              #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n              static {\n                dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n              }\n              #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n              static {\n                dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n              }\n              #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n              static {\n                dt7948.g(this.prototype, \"currentUserCanJoinPublicChannels\", [_tracking.tracked], function () {\n                  return this.currentUser && (this.currentUser.staff || this.currentUser.has_joinable_public_channels);\n                });\n              }\n              #currentUserCanJoinPublicChannels = (dt7948.i(this, \"currentUserCanJoinPublicChannels\"), void 0);\n              constructor() {\n                super(...arguments);\n                if (container.isDestroyed) {\n                  return;\n                }\n                this.chatService = container.lookup(\"service:chat\");\n                this.chatChannelsManager = container.lookup(\"service:chat-channels-manager\");\n                this.router = container.lookup(\"service:router\");\n                this.menuService = container.lookup(\"service:menu\");\n                this.capabilities = container.lookup(\"service:capabilities\");\n              }\n              get sectionLinks() {\n                return this.chatChannelsManager.unstarredPublicMessageChannels.map(channel => new SidebarChatChannelsSectionLink({\n                  channel,\n                  chatService: this.chatService,\n                  menuService: this.menuService,\n                  siteSettings: this.siteSettings,\n                  capabilities: this.capabilities\n                }));\n              }\n              get name() {\n                return \"chat-channels\";\n              }\n              get title() {\n                return (0, _discourseI18n.i18n)(\"chat.chat_channels\");\n              }\n              get text() {\n                return (0, _discourseI18n.i18n)(\"chat.chat_channels\");\n              }\n              get actions() {\n                return [{\n                  id: \"browseChannels\",\n                  title: (0, _discourseI18n.i18n)(\"chat.channels_list_popup.browse\"),\n                  action: () => this.router.transitionTo(\"chat.browse.open\")\n                }];\n              }\n              get actionsIcon() {\n                return \"pencil\";\n              }\n              get links() {\n                return this.sectionLinks;\n              }\n              get displaySection() {\n                return this.chatStateManager.hasPreloadedChannels && (this.sectionLinks.length > 0 || this.currentUserCanJoinPublicChannels);\n              }\n            };\n            return SidebarChatChannelsSection;\n          }, _initSidebarState.CHAT_PANEL);\n        }\n        if (this.chatService.userCanDirectMessage) {\n          api.addSidebarSection((BaseCustomSidebarSection, BaseCustomSidebarSectionLink) => {\n            const SidebarChatNewDirectMessagesSectionLink = class extends BaseCustomSidebarSectionLink {\n              route = \"chat.new-message\";\n              name = \"new-chat-dm\";\n              title = (0, _discourseI18n.i18n)(\"sidebar.start_new_dm.title\");\n              text = (0, _discourseI18n.i18n)(\"sidebar.start_new_dm.text\");\n              prefixType = \"icon\";\n              prefixValue = \"plus\";\n            };\n            const SidebarChatDirectMessagesSectionLink = class extends BaseCustomSidebarSectionLink {\n              route = \"chat.channel\";\n              suffixType = \"icon\";\n              hoverType = \"icon\";\n              hoverTitle = (0, _discourseI18n.i18n)(\"chat.open_channel_menu\");\n              constructor({\n                channel,\n                chatService,\n                currentUser,\n                menuService,\n                siteSettings,\n                capabilities\n              }) {\n                super(...arguments);\n                this.channel = channel;\n                this.chatService = chatService;\n                this.siteSettings = siteSettings;\n                this.currentUser = currentUser;\n                this.chatStateManager = chatStateManager;\n                this.menuService = menuService;\n                this.capabilities = capabilities;\n                if (this.oneOnOneMessage) {\n                  const user = this.channel.chatable.users[0];\n                  if (user.username !== (0, _discourseI18n.i18n)(\"chat.deleted_chat_username\")) {\n                    user.statusManager.trackStatus();\n                  }\n                }\n              }\n              willDestroy() {\n                if (this.oneOnOneMessage) {\n                  this.channel.chatable.users[0].statusManager.stopTrackingStatus();\n                }\n              }\n              static {\n                dt7948.n(this.prototype, \"willDestroy\", [_decorators.bind]);\n              }\n              get hoverValue() {\n                return this.capabilities.isIpadOS ? null : \"ellipsis-vertical\";\n              }\n              get oneOnOneMessage() {\n                return this.channel.chatable.users.length === 1;\n              }\n              get suffixComponent() {\n                return _chatSidebarIndicators.default;\n              }\n              get suffixArgs() {\n                return {\n                  userStatus: this.oneOnOneMessage ? this.channel.chatable.users[0].get(\"status\") : null,\n                  unreadCount: this.channel.tracking.unreadCount,\n                  unreadThreadsCount: this.channel.unreadThreadsCountSinceLastViewed,\n                  mentionCount: this.channel.tracking.mentionCount,\n                  watchedThreadsUnreadCount: this.channel.tracking.watchedThreadsUnreadCount,\n                  isDirectMessageChannel: true\n                };\n              }\n              get name() {\n                return this.channel.slugifiedTitle;\n              }\n              get classNames() {\n                const classes = [];\n                if (this.channel.currentUserMembership.muted) {\n                  classes.push(\"sidebar-section-link--muted\");\n                }\n                if (this.channel.id === this.chatService.activeChannel?.id && (this.chatStateManager.isDrawerExpanded || this.chatStateManager.isFullPageActive)) {\n                  classes.push(\"sidebar-section-link--active\");\n                }\n                classes.push(`channel-${this.channel.id}`);\n                return classes.join(\" \");\n              }\n              get models() {\n                return this.channel.routeModels;\n              }\n              get title() {\n                if (this.channel.chatable.group) {\n                  return (0, _discourseI18n.i18n)(\"chat.placeholder_channel\", {\n                    channelName: this.channel.escapedTitle\n                  });\n                } else {\n                  return (0, _discourseI18n.i18n)(\"chat.placeholder_users\", {\n                    commaSeparatedNames: this.channel.escapedTitle\n                  });\n                }\n              }\n              get text() {\n                if (this.channel.chatable.group) {\n                  return this.channel.displayTitle;\n                } else {\n                  const username = this.channel.escapedTitle.replaceAll(\"@\", \"\");\n                  return (0, _template.trustHTML)(`${(0, _utilities.escapeExpression)(username)}${(0, _decorateUsernameSelector.decorateUsername)((0, _utilities.escapeExpression)(username))}`);\n                }\n              }\n              get prefixType() {\n                if (this.channel.emoji) {\n                  return \"emoji\";\n                } else if (this.channel.chatable.group) {\n                  return \"text\";\n                } else {\n                  return \"image\";\n                }\n              }\n              get prefixValue() {\n                if (this.channel.emoji) {\n                  return this.channel.emoji;\n                } else if (this.channel.chatable.group) {\n                  return this.channel.membershipsCount;\n                } else {\n                  return (0, _avatarUtils.avatarUrl)(this.channel.chatable.users[0].avatar_template, \"tiny\");\n                }\n              }\n              get prefixCSSClass() {\n                const activeUsers = this.chatService.presenceChannel.users;\n                const user = this.channel.chatable.users[0];\n                if (!!activeUsers?.find(item => (0, _object.get)(item, \"id\") === user?.id) || !!activeUsers?.find(item => (0, _object.get)(item, \"username\") === user?.username)) {\n                  return \"active\";\n                }\n                return \"\";\n              }\n              get hoverAction() {\n                if (this.capabilities.isIpadOS) {\n                  return _noop.default;\n                }\n                return (event, onMenuClose) => {\n                  event.stopPropagation();\n                  event.preventDefault();\n                  this.menuService.show(event.target, {\n                    identifier: \"chat-direct-message-channel-menu\",\n                    component: _chatChannelSidebarContextMenu.default,\n                    placement: \"right\",\n                    data: {\n                      channel: this.channel\n                    },\n                    onClose: onMenuClose\n                  });\n                };\n              }\n            };\n            const SidebarChatDirectMessagesSection = class extends BaseCustomSidebarSection {\n              static {\n                dt7948.g(this.prototype, \"site\", [_service.service]);\n              }\n              #site = (dt7948.i(this, \"site\"), void 0);\n              static {\n                dt7948.g(this.prototype, \"modal\", [_service.service]);\n              }\n              #modal = (dt7948.i(this, \"modal\"), void 0);\n              static {\n                dt7948.g(this.prototype, \"router\", [_service.service]);\n              }\n              #router = (dt7948.i(this, \"router\"), void 0);\n              static {\n                dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n              }\n              #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n              static {\n                dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n              }\n              #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n              static {\n                dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n              }\n              #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n              constructor() {\n                super(...arguments);\n                if (container.isDestroyed) {\n                  return;\n                }\n                this.chatService = container.lookup(\"service:chat\");\n                this.chatChannelsManager = container.lookup(\"service:chat-channels-manager\");\n                this.menuService = container.lookup(\"service:menu\");\n                this.capabilities = container.lookup(\"service:capabilities\");\n              }\n              get hideSectionHeader() {\n                return this.chatChannelsManager.truncatedUnstarredDirectMessageChannels.length === 0;\n              }\n              get sectionLinks() {\n                const channels = this.chatChannelsManager.truncatedUnstarredDirectMessageChannels;\n                if (channels.length > 0) {\n                  return channels.map(channel => new SidebarChatDirectMessagesSectionLink({\n                    channel,\n                    chatService: this.chatService,\n                    currentUser: this.currentUser,\n                    menuService: this.menuService,\n                    siteSettings: this.siteSettings,\n                    capabilities: this.capabilities\n                  }));\n                } else {\n                  return [new SidebarChatNewDirectMessagesSectionLink()];\n                }\n              }\n              get name() {\n                return \"chat-dms\";\n              }\n              get title() {\n                return (0, _discourseI18n.i18n)(\"chat.direct_messages.title\");\n              }\n              get text() {\n                return (0, _discourseI18n.i18n)(\"chat.direct_messages.title\");\n              }\n              get actions() {\n                return [{\n                  id: \"startDm\",\n                  title: (0, _discourseI18n.i18n)(\"chat.direct_messages.new\"),\n                  action: () => {\n                    this.modal.show(_newMessage.default);\n                  }\n                }];\n              }\n              get actionsIcon() {\n                return \"plus\";\n              }\n              get links() {\n                return this.sectionLinks;\n              }\n              get displaySection() {\n                return this.chatStateManager.hasPreloadedChannels && this.sectionLinks?.length > 0;\n              }\n            };\n            return SidebarChatDirectMessagesSection;\n          }, _initSidebarState.CHAT_PANEL);\n        }\n      });\n    }\n  };\n});","define(\"discourse/plugins/chat/discourse/initializers/chat-user-menu\", [\"exports\", \"discourse/lib/get-url\", \"discourse/lib/plugin-api\", \"discourse/lib/utilities\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/lib/slugify-channel\", \"discourse/plugins/chat/discourse/components/user-menu/chat-notifications-list\"], function (_exports, _getUrl, _pluginApi, _utilities, _discourseI18n, _slugifyChannel, _chatNotificationsList) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    name: \"chat-user-menu\",\n    initialize(container) {\n      (0, _pluginApi.withPluginApi)(api => {\n        const chat = container.lookup(\"service:chat\");\n        if (!chat.userCanChat) {\n          return;\n        }\n        if (api.registerNotificationTypeRenderer) {\n          api.registerNotificationTypeRenderer(\"chat_invitation\", NotificationItemBase => {\n            return class extends NotificationItemBase {\n              linkTitle = (0, _discourseI18n.i18n)(\"notifications.titles.chat_invitation\");\n              icon = \"link\";\n              description = (0, _discourseI18n.i18n)(\"notifications.chat_invitation\");\n              get linkHref() {\n                const data = this.notification.data;\n                const slug = (0, _slugifyChannel.default)({\n                  title: data.chat_channel_title,\n                  slug: data.chat_channel_slug\n                });\n                let url = `/chat/c/${slug || \"-\"}/${data.chat_channel_id}`;\n                if (data.chat_message_id) {\n                  url += `/${data.chat_message_id}`;\n                }\n                return (0, _getUrl.default)(url);\n              }\n              get label() {\n                return (0, _utilities.formatUsername)(this.notification.data.invited_by_username);\n              }\n            };\n          });\n          api.registerNotificationTypeRenderer(\"chat_mention\", NotificationItemBase => {\n            return class extends NotificationItemBase {\n              get linkHref() {\n                const slug = (0, _slugifyChannel.default)({\n                  title: this.notification.data.chat_channel_title,\n                  slug: this.notification.data.chat_channel_slug\n                });\n                let notificationRoute = `/chat/c/${slug || \"-\"}/${this.notification.data.chat_channel_id}`;\n                if (this.notification.data.chat_thread_id) {\n                  notificationRoute += `/t/${this.notification.data.chat_thread_id}`;\n                } else {\n                  notificationRoute += `/${this.notification.data.chat_message_id}`;\n                }\n                return (0, _getUrl.default)(notificationRoute);\n              }\n              get linkTitle() {\n                return (0, _discourseI18n.i18n)(\"notifications.titles.chat_mention\");\n              }\n              get icon() {\n                return \"d-chat\";\n              }\n              get label() {\n                return (0, _utilities.formatUsername)(this.notification.data.mentioned_by_username);\n              }\n              get description() {\n                const identifier = this.notification.data.identifier ? `@${this.notification.data.identifier}` : null;\n                const i18nPrefix = this.notification.data.is_direct_message_channel ? \"notifications.popup.direct_message_chat_mention\" : \"notifications.popup.chat_mention\";\n                const i18nSuffix = identifier ? \"other_plain\" : \"direct\";\n                return (0, _discourseI18n.i18n)(`${i18nPrefix}.${i18nSuffix}`, {\n                  identifier,\n                  channel: this.notification.data.chat_channel_title\n                });\n              }\n            };\n          });\n          api.registerNotificationTypeRenderer(\"chat_watched_thread\", NotificationItemBase => {\n            return class extends NotificationItemBase {\n              icon = \"discourse-threads\";\n              linkTitle = (0, _discourseI18n.i18n)(\"notifications.titles.chat_watched_thread\");\n              description = this.notification.data.description;\n              get label() {\n                const data = this.notification.data;\n                if (data.user_ids.length > 2) {\n                  return (0, _discourseI18n.i18n)(\"notifications.chat_watched_thread_label\", {\n                    username: (0, _utilities.formatUsername)(data.username2),\n                    count: data.user_ids.length - 1\n                  });\n                } else if (data.user_ids.length === 2) {\n                  return (0, _discourseI18n.i18n)(\"notifications.chat_watched_thread_label\", {\n                    username: (0, _utilities.formatUsername)(data.username2),\n                    username2: (0, _utilities.formatUsername)(data.username),\n                    count: 1\n                  });\n                } else {\n                  return (0, _utilities.formatUsername)(data.username);\n                }\n              }\n              get linkHref() {\n                const data = this.notification.data;\n                return (0, _getUrl.default)(`/chat/c/-/${data.chat_channel_id}/t/${data.chat_thread_id}/${data.chat_message_id}`);\n              }\n            };\n          });\n        }\n        if (api.registerUserMenuTab) {\n          api.registerUserMenuTab(UserMenuTab => {\n            return class extends UserMenuTab {\n              get id() {\n                return \"chat-notifications\";\n              }\n              get panelComponent() {\n                return _chatNotificationsList.default;\n              }\n              get icon() {\n                return \"d-chat\";\n              }\n              get count() {\n                return this.getUnreadCountForType(\"chat_mention\") + this.getUnreadCountForType(\"chat_invitation\") + this.getUnreadCountForType(\"chat_watched_thread\");\n              }\n              get notificationTypes() {\n                return [\"chat_invitation\", \"chat_mention\", \"chat_message\", \"chat_quoted\", \"chat_watched_thread\"];\n              }\n            };\n          });\n        }\n      });\n    }\n  };\n});","define(\"discourse/plugins/chat/discourse/initializers/chat-user-options\", [\"exports\", \"discourse/lib/plugin-api\"], function (_exports, _pluginApi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    name: \"chat-user-options\",\n    initialize(container) {\n      (0, _pluginApi.withPluginApi)(api => {\n        const {\n          chat_enabled\n        } = container.lookup(\"service:site-settings\");\n        if (chat_enabled) {\n          // Chat settings\n          api.addSaveableUserOption(\"chat_enabled\");\n          api.addSaveableUserOption(\"chat_header_indicator_preference\");\n          api.addSaveableUserOption(\"chat_quick_reaction_type\");\n          api.addSaveableUserOption(\"chat_quick_reactions_custom\");\n          api.addSaveableUserOption(\"chat_send_shortcut\");\n          api.addSaveableUserOption(\"chat_separate_sidebar_mode\");\n          api.addSaveableUserOption(\"chat_sound\");\n          api.addSaveableUserOption(\"ignore_channel_wide_mention\");\n          api.addSaveableUserOption(\"only_chat_push_notifications\");\n          api.addSaveableUserOption(\"show_thread_title_prompts\");\n          // Email settings\n          api.addSaveableUserOption(\"chat_email_frequency\", {\n            page: \"emails\"\n          });\n        }\n      });\n    }\n  };\n});","define(\"discourse/plugins/chat/discourse/lib/chat-channel-subscription-manager\", [\"exports\", \"@glimmer/tracking\", \"@ember/owner\", \"@ember/service\", \"discourse/lib/decorators\", \"discourse/lib/object\", \"discourse/plugins/chat/discourse/models/chat-message\", \"discourse/plugins/chat/discourse/models/chat-thread-preview\"], function (_exports, _tracking, _owner, _service, _decorators, _object, _chatMessage, _chatThreadPreview) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelSubscriptionManager {\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelNoticesManager\", [_service.service]);\n    }\n    #chatChannelNoticesManager = (dt7948.i(this, \"chatChannelNoticesManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"messageBus\", [_service.service]);\n    }\n    #messageBus = (dt7948.i(this, \"messageBus\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"channel\", [_tracking.tracked]);\n    }\n    #channel = (dt7948.i(this, \"channel\"), void 0);\n    constructor(context, channel, {\n      onNewMessage\n    } = {}) {\n      (0, _owner.setOwner)(this, (0, _owner.getOwner)(context));\n      this.channel = channel;\n      this.onNewMessage = onNewMessage;\n      this.messageBus.subscribe(this.messageBusChannel, this.onMessage, this.channel.channelMessageBusLastId);\n    }\n    get messagesManager() {\n      return this.channel.messagesManager;\n    }\n    get messageBusChannel() {\n      return `/chat/${this.channel.id}`;\n    }\n    teardown() {\n      this.messageBus.unsubscribe(this.messageBusChannel, this.onMessage);\n    }\n    onMessage(busData, _, lastMessageBusId) {\n      switch (busData.type) {\n        case \"sent\":\n          this.handleSentMessage(busData);\n          break;\n        case \"reaction\":\n          this.handleReactionMessage(busData);\n          break;\n        case \"processed\":\n          this.handleProcessedMessage(busData);\n          break;\n        case \"edit\":\n          this.handleEditMessage(busData);\n          break;\n        case \"refresh\":\n          this.handleRefreshMessage(busData);\n          break;\n        case \"delete\":\n          this.handleDeleteMessage(busData);\n          break;\n        case \"bulk_delete\":\n          this.handleBulkDeleteMessage(busData);\n          break;\n        case \"restore\":\n          this.handleRestoreMessage(busData);\n          break;\n        case \"self_flagged\":\n          this.handleSelfFlaggedMessage(busData);\n          break;\n        case \"flag\":\n          this.handleFlaggedMessage(busData);\n          break;\n        case \"thread_created\":\n          this.handleNewThreadCreated(busData);\n          break;\n        case \"update_thread_original_message\":\n          this.handleThreadOriginalMessageUpdate(busData);\n          break;\n        case \"notice\":\n          this.handleNotice(busData);\n          break;\n        case \"pin\":\n          this.handlePinMessage(busData);\n          break;\n        case \"unpin\":\n          this.handleUnpinMessage(busData);\n          break;\n      }\n      this.channel.channelMessageBusLastId = lastMessageBusId;\n    }\n    static {\n      dt7948.n(this.prototype, \"onMessage\", [_decorators.bind]);\n    }\n    handleSentMessage(data) {\n      if (data.chat_message.user.id === this.currentUser.id && data.staged_id) {\n        const stagedMessage = this.handleStagedMessage(this.channel, this.messagesManager, data);\n        if (stagedMessage) {\n          return;\n        }\n      }\n      const message = _chatMessage.default.create(this.channel, data.chat_message);\n      message.manager = this.channel.messagesManager;\n      this.onNewMessage?.(message);\n      this.channel.lastMessage = message;\n    }\n    handleStagedMessage(channel, messagesManager, data) {\n      const stagedMessage = messagesManager.findStagedMessage(data.staged_id);\n      if (!stagedMessage) {\n        return;\n      }\n      stagedMessage.error = null;\n      stagedMessage.id = data.chat_message.id;\n      stagedMessage.staged = false;\n      stagedMessage.message = data.chat_message.message;\n      stagedMessage.excerpt = data.chat_message.excerpt;\n      stagedMessage.channel = channel;\n      stagedMessage.createdAt = new Date(data.chat_message.created_at);\n      stagedMessage.cooked = data.chat_message.cooked;\n      stagedMessage.uploads = (0, _object.cloneJSON)(data.chat_message.uploads || []);\n      stagedMessage.streaming = data.chat_message.streaming;\n      stagedMessage.edited = data.chat_message.edited;\n      return stagedMessage;\n    }\n    handleProcessedMessage(data) {\n      const message = this.messagesManager.findMessage(data.chat_message.id);\n      if (message) {\n        message.cooked = data.chat_message.cooked;\n        message.uploads = (0, _object.cloneJSON)(data.chat_message.uploads || []);\n        message.processed = true;\n        message.incrementVersion();\n      }\n    }\n    handleReactionMessage(data) {\n      const message = this.messagesManager.findMessage(data.chat_message_id);\n      if (message) {\n        message.react(data.emoji, data.action, data.user, this.currentUser.id);\n      }\n    }\n    handleEditMessage(data) {\n      const message = this.messagesManager.findMessage(data.chat_message.id);\n      if (message) {\n        message.message = data.chat_message.message;\n        message.cooked = data.chat_message.cooked;\n        message.excerpt = data.chat_message.excerpt;\n        message.uploads = (0, _object.cloneJSON)(data.chat_message.uploads || []);\n        message.edited = data.chat_message.edited;\n        message.streaming = data.chat_message.streaming;\n      }\n    }\n    handleRefreshMessage(data) {\n      const message = this.messagesManager.findMessage(data.chat_message.id);\n      if (message) {\n        message.incrementVersion();\n      }\n    }\n    handleBulkDeleteMessage(data) {\n      data.deleted_ids.forEach(deletedId => {\n        this.handleDeleteMessage({\n          deleted_id: deletedId,\n          deleted_at: data.deleted_at\n        });\n      });\n    }\n    handleDeleteMessage(data) {\n      const deletedId = data.deleted_id;\n      const targetMsg = this.messagesManager.findMessage(deletedId);\n      if (!targetMsg) {\n        return;\n      }\n      if (this.currentUser.staff || this.channel.canModerate || this.currentUser.id === targetMsg.user.id) {\n        targetMsg.deletedAt = data.deleted_at;\n        targetMsg.deletedById = data.deleted_by_id;\n        targetMsg.expanded = false;\n      } else {\n        this.messagesManager.removeMessage(targetMsg);\n      }\n      if (this.channel.currentUserMembership.lastReadMessageId === targetMsg.id) {\n        this.channel.currentUserMembership.lastReadMessageId = data.latest_not_deleted_message_id;\n      }\n    }\n    handleRestoreMessage(data) {\n      const message = this.messagesManager.findMessage(data.chat_message.id);\n      if (message) {\n        message.deletedAt = null;\n      } else {\n        const newMessage = _chatMessage.default.create(this.channel, data.chat_message);\n        newMessage.manager = this.messagesManager;\n        this.messagesManager.addMessages([newMessage]);\n      }\n    }\n    handleSelfFlaggedMessage(data) {\n      const message = this.messagesManager.findMessage(data.chat_message_id);\n      if (message) {\n        message.userFlagStatus = data.user_flag_status;\n      }\n    }\n    handleFlaggedMessage(data) {\n      const message = this.messagesManager.findMessage(data.chat_message_id);\n      if (message) {\n        message.reviewableId = data.reviewable_id;\n      }\n    }\n    handleNewThreadCreated(data) {\n      this.channel.threadsManager.find(this.channel.id, data.thread_id, {\n        fetchIfNotFound: false\n      }).then(thread => {\n        thread ??= this.channel.threadsManager.add(this.channel, data.chat_message.thread);\n        const channelOriginalMessage = this.channel.messagesManager.findMessage(thread.originalMessage.id);\n        if (channelOriginalMessage) {\n          channelOriginalMessage.thread = thread;\n        }\n      });\n    }\n    handleNotice(data) {\n      this.chatChannelNoticesManager.handleNotice(data);\n    }\n    handleThreadOriginalMessageUpdate(data) {\n      const message = this.messagesManager.findMessage(data.original_message_id);\n      if (message?.thread) {\n        if (message.thread.preview) {\n          message.thread.preview.update(data.preview);\n        } else {\n          message.thread.preview = _chatThreadPreview.default.create(data.preview);\n        }\n      }\n    }\n    handlePinMessage(data) {\n      const alreadyApplied = this.channel.pendingOptimisticPins.delete(data.chat_message_id);\n      const message = this.messagesManager.findMessage(data.chat_message_id);\n      if (message) {\n        message.pinned = true;\n      }\n      if (!alreadyApplied) {\n        this.channel.pinnedMessagesCount++;\n      }\n      if (this.channel.currentUserMembership && data.pinned_by_id !== this.currentUser?.id) {\n        this.channel.currentUserMembership.hasUnseenPins = true;\n      }\n    }\n    handleUnpinMessage(data) {\n      const alreadyApplied = this.channel.pendingOptimisticUnpins.delete(data.chat_message_id);\n      const message = this.messagesManager.findMessage(data.chat_message_id);\n      if (message) {\n        message.pinned = false;\n      }\n      if (!alreadyApplied) {\n        this.channel.pinnedMessagesCount = Math.max(0, this.channel.pinnedMessagesCount - 1);\n      }\n    }\n  }\n  _exports.default = ChatChannelSubscriptionManager;\n});","define(\"discourse/plugins/chat/discourse/lib/chat-channel-thread-subscription-manager\", [\"exports\", \"@glimmer/tracking\", \"@ember/owner\", \"@ember/service\", \"discourse/lib/decorators\", \"discourse/lib/object\", \"discourse/plugins/chat/discourse/models/chat-message\"], function (_exports, _tracking, _owner, _service, _decorators, _object, _chatMessage) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelThreadSubscriptionManager {\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"messageBus\", [_service.service]);\n    }\n    #messageBus = (dt7948.i(this, \"messageBus\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"channel\", [_tracking.tracked]);\n    }\n    #channel = (dt7948.i(this, \"channel\"), void 0);\n    constructor(context, thread, {\n      onNewMessage\n    } = {}) {\n      (0, _owner.setOwner)(this, (0, _owner.getOwner)(context));\n      this.thread = thread;\n      this.onNewMessage = onNewMessage;\n      this.messageBus.subscribe(this.messageBusChannel, this.onMessage, this.thread.threadMessageBusLastId);\n    }\n    get messagesManager() {\n      return this.thread.messagesManager;\n    }\n    get messageBusChannel() {\n      return `/chat/${this.thread.channel.id}/thread/${this.thread.id}`;\n    }\n    teardown() {\n      this.messageBus.unsubscribe(this.messageBusChannel, this.onMessage);\n    }\n    onMessage(busData, _, lastMessageBusId) {\n      switch (busData.type) {\n        case \"sent\":\n          this.handleSentMessage(busData);\n          break;\n        case \"reaction\":\n          this.handleReactionMessage(busData);\n          break;\n        case \"processed\":\n          this.handleProcessedMessage(busData);\n          break;\n        case \"edit\":\n          this.handleEditMessage(busData);\n          break;\n        case \"refresh\":\n          this.handleRefreshMessage(busData);\n          break;\n        case \"delete\":\n          this.handleDeleteMessage(busData);\n          break;\n        case \"bulk_delete\":\n          this.handleBulkDeleteMessage(busData);\n          break;\n        case \"restore\":\n          this.handleRestoreMessage(busData);\n          break;\n        case \"self_flagged\":\n          this.handleSelfFlaggedMessage(busData);\n          break;\n        case \"flag\":\n          this.handleFlaggedMessage(busData);\n          break;\n        case \"thread_created\":\n          this.handleNewThreadCreated(busData);\n          break;\n      }\n      this.thread.threadMessageBusLastId = lastMessageBusId;\n    }\n    static {\n      dt7948.n(this.prototype, \"onMessage\", [_decorators.bind]);\n    }\n    handleSentMessage(data) {\n      if (data.chat_message.user.id === this.currentUser.id && data.staged_id) {\n        const stagedMessage = this.handleStagedMessage(this.thread.channel, this.messagesManager, data);\n        if (stagedMessage) {\n          return;\n        }\n      }\n      const message = _chatMessage.default.create(this.thread.channel, data.chat_message);\n      message.thread = this.thread;\n      message.manager = this.messagesManager;\n      this.onNewMessage?.(message);\n    }\n    handleStagedMessage(channel, messagesManager, data) {\n      const stagedMessage = messagesManager.findStagedMessage(data.staged_id);\n      if (!stagedMessage) {\n        return;\n      }\n      stagedMessage.error = null;\n      stagedMessage.id = data.chat_message.id;\n      stagedMessage.staged = false;\n      stagedMessage.message = data.chat_message.message;\n      stagedMessage.excerpt = data.chat_message.excerpt;\n      stagedMessage.channel = channel;\n      stagedMessage.createdAt = new Date(data.chat_message.created_at);\n      stagedMessage.cooked = data.chat_message.cooked;\n      stagedMessage.uploads = (0, _object.cloneJSON)(data.chat_message.uploads || []);\n      stagedMessage.streaming = data.chat_message.streaming;\n      stagedMessage.edited = data.chat_message.edited;\n      return stagedMessage;\n    }\n    handleProcessedMessage(data) {\n      const message = this.messagesManager.findMessage(data.chat_message.id);\n      if (message) {\n        message.cooked = data.chat_message.cooked;\n        message.uploads = (0, _object.cloneJSON)(data.chat_message.uploads || []);\n        message.processed = true;\n        message.incrementVersion();\n      }\n    }\n    handleReactionMessage(data) {\n      const message = this.messagesManager.findMessage(data.chat_message_id);\n      if (message) {\n        message.react(data.emoji, data.action, data.user, this.currentUser.id);\n      }\n    }\n    handleEditMessage(data) {\n      const message = this.messagesManager.findMessage(data.chat_message.id);\n      if (message) {\n        message.excerpt = data.chat_message.excerpt;\n        message.uploads = (0, _object.cloneJSON)(data.chat_message.uploads || []);\n        message.edited = data.chat_message.edited;\n        message.streaming = data.chat_message.streaming;\n      }\n    }\n    handleRefreshMessage(data) {\n      const message = this.messagesManager.findMessage(data.chat_message.id);\n      if (message) {\n        message.incrementVersion();\n      }\n    }\n    handleBulkDeleteMessage(data) {\n      data.deleted_ids.forEach(deletedId => {\n        this.handleDeleteMessage({\n          deleted_id: deletedId,\n          deleted_at: data.deleted_at\n        });\n      });\n    }\n    handleDeleteMessage(data) {\n      const deletedId = data.deleted_id;\n      const targetMsg = this.messagesManager.findMessage(deletedId);\n      if (!targetMsg) {\n        return;\n      }\n      if (this.currentUser.staff || this.thread.channel.canModerate || this.currentUser.id === targetMsg.user.id) {\n        targetMsg.deletedAt = data.deleted_at;\n        targetMsg.deletedById = data.deleted_by_id;\n        targetMsg.expanded = false;\n      } else {\n        this.messagesManager.removeMessage(targetMsg);\n      }\n      if (this.thread.currentUserMembership?.lastReadMessageId === targetMsg.id) {\n        this.thread.currentUserMembership.lastReadMessageId = data.latest_not_deleted_message_id;\n      }\n    }\n    handleRestoreMessage(data) {\n      const message = this.messagesManager.findMessage(data.chat_message.id);\n      if (message) {\n        message.deletedAt = null;\n      } else {\n        const newMessage = _chatMessage.default.create(this.model, data.chat_message);\n        newMessage.manager = this.messagesManager;\n        this.messagesManager.addMessages([newMessage]);\n      }\n    }\n    handleSelfFlaggedMessage(data) {\n      const message = this.messagesManager.findMessage(data.chat_message_id);\n      if (message) {\n        message.userFlagStatus = data.user_flag_status;\n      }\n    }\n    handleFlaggedMessage(data) {\n      const message = this.messagesManager.findMessage(data.chat_message_id);\n      if (message) {\n        message.reviewableId = data.reviewable_id;\n      }\n    }\n    handleNewThreadCreated(data) {\n      this.thread.threadsManager.find(this.thread.id, data.thread_id, {\n        fetchIfNotFound: true\n      }).then(thread => {\n        const channelOriginalMessage = this.thread.messagesManager.findMessage(thread.originalMessage.id);\n        if (channelOriginalMessage) {\n          channelOriginalMessage.thread = thread;\n        }\n      });\n    }\n  }\n  _exports.default = ChatChannelThreadSubscriptionManager;\n});","define(\"discourse/plugins/chat/discourse/lib/chat-composer-buttons\", [\"exports\", \"discourse-i18n\"], function (_exports, _discourseI18n) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.chatComposerButtons = chatComposerButtons;\n  _exports.chatComposerButtonsDependentKeys = chatComposerButtonsDependentKeys;\n  _exports.clearChatComposerButtons = clearChatComposerButtons;\n  _exports.registerChatComposerButton = registerChatComposerButton;\n  let _chatComposerButtons = {};\n  function registerChatComposerButton(button) {\n    if (!button.id) {\n      throw new Error(\"Attempted to register a chat composer button with no id.\");\n    }\n    if (_chatComposerButtons[button.id]) {\n      return;\n    }\n    const defaultButton = {\n      id: null,\n      action: null,\n      icon: null,\n      title: null,\n      translatedTitle: null,\n      label: null,\n      translatedLabel: null,\n      ariaLabel: null,\n      translatedAriaLabel: null,\n      position: \"inline\",\n      classNames: [],\n      dependentKeys: [],\n      displayed: true,\n      disabled: false,\n      priority: 0,\n      synchronous: false\n    };\n    const normalizedButton = Object.assign(defaultButton, button);\n    if (!normalizedButton.icon && !normalizedButton.label && !normalizedButton.translatedLabel) {\n      throw new Error(`Attempted to register a chat composer button: ${button.id} with no icon or label.`);\n    }\n    _chatComposerButtons[normalizedButton.id] = normalizedButton;\n  }\n  function computeButton(context, button, property) {\n    const field = button[property];\n    if (isFunction(field)) {\n      return field.apply(context);\n    }\n    return field;\n  }\n  function isFunction(descriptor) {\n    return descriptor && typeof descriptor === \"function\";\n  }\n  function chatComposerButtonsDependentKeys() {\n    return [].concat(...Object.values(_chatComposerButtons).map(item => item.dependentKeys).filter(Boolean));\n  }\n  function chatComposerButtons(composer, position, context) {\n    return Object.values(_chatComposerButtons).filter(button => {\n      let valid = computeButton(composer, button, \"displayed\") && computeButton(composer, button, \"position\") === position;\n      if (button.context) {\n        valid = valid && computeButton(composer, button, \"context\") === context;\n      }\n      return valid;\n    }).map(button => {\n      const result = {\n        id: button.id\n      };\n      const label = computeButton(composer, button, \"label\");\n      result.label = label ? label : computeButton(composer, button, \"translatedLabel\");\n      const ariaLabel = computeButton(composer, button, \"ariaLabel\");\n      if (ariaLabel) {\n        result.ariaLabel = (0, _discourseI18n.i18n)(ariaLabel);\n      } else {\n        const translatedAriaLabel = computeButton(composer, button, \"translatedAriaLabel\");\n        result.ariaLabel = translatedAriaLabel || result.label;\n      }\n      const title = computeButton(composer, button, \"title\");\n      result.title = title ? (0, _discourseI18n.i18n)(title) : computeButton(composer, button, \"translatedTitle\");\n      result.classNames = (computeButton(composer, button, \"classNames\") || []).join(\" \");\n      result.icon = computeButton(composer, button, \"icon\");\n      result.disabled = computeButton(composer, button, \"disabled\");\n      result.priority = computeButton(composer, button, \"priority\");\n      result.synchronous = computeButton(composer, button, \"synchronous\");\n      if (isFunction(button.action)) {\n        result.action = () => {\n          button.action.apply(composer, [context]);\n        };\n      } else {\n        const actionName = button.action;\n        result.action = () => {\n          composer[actionName](context);\n        };\n      }\n      return result;\n    });\n  }\n  function clearChatComposerButtons() {\n    _chatComposerButtons = [];\n  }\n});","define(\"discourse/plugins/chat/discourse/lib/chat-constants\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.THREAD_TITLE_PROMPT_THRESHOLD = _exports.READ_INTERVAL_MS = _exports.PAST = _exports.MATCH_QUALITY_PREFIX = _exports.MATCH_QUALITY_PARTIAL = _exports.MATCH_QUALITY_EXACT = _exports.INDICATOR_PREFERENCES = _exports.HEADER_INDICATOR_PREFERENCE_ONLY_MENTIONS = _exports.HEADER_INDICATOR_PREFERENCE_NEVER = _exports.HEADER_INDICATOR_PREFERENCE_DM_AND_MENTIONS = _exports.HEADER_INDICATOR_PREFERENCE_ALL_NEW = _exports.FUTURE = _exports.FOOTER_NAV_ROUTES = _exports.DEFAULT_MESSAGE_PAGE_SIZE = _exports.CHAT_SEPARATE_SIDEBAR_MODE_NEVER = _exports.CHAT_SEPARATE_SIDEBAR_MODE_FULLSCREEN = _exports.CHAT_SEPARATE_SIDEBAR_MODE_ALWAYS = _exports.CHAT_SEND_SHORTCUT_META_ENTER = _exports.CHAT_SEND_SHORTCUT_ENTER = _exports.CHAT_QUICK_REACTION_TYPE_FREQUENT = _exports.CHAT_QUICK_REACTION_TYPE_CUSTOM = _exports.CHAT_QUICK_REACTIONS_CUSTOM_DEFAULT = _exports.CHAT_ATTRS = void 0;\n  const PAST = _exports.PAST = \"past\";\n  const FUTURE = _exports.FUTURE = \"future\";\n  const READ_INTERVAL_MS = _exports.READ_INTERVAL_MS = 1000;\n  const DEFAULT_MESSAGE_PAGE_SIZE = _exports.DEFAULT_MESSAGE_PAGE_SIZE = 50;\n  const THREAD_TITLE_PROMPT_THRESHOLD = _exports.THREAD_TITLE_PROMPT_THRESHOLD = 5;\n  const FOOTER_NAV_ROUTES = _exports.FOOTER_NAV_ROUTES = [\"chat.starred-channels\", \"chat.direct-messages\", \"chat.channels\", \"chat.threads\", \"chat.search\"];\n  const INDICATOR_PREFERENCES = _exports.INDICATOR_PREFERENCES = {\n    all_new: \"all_new\",\n    dm_and_mentions: \"dm_and_mentions\",\n    only_mentions: \"only_mentions\",\n    never: \"never\"\n  };\n  const CHAT_ATTRS = _exports.CHAT_ATTRS = [\"chat_enabled\", \"only_chat_push_notifications\", \"ignore_channel_wide_mention\", \"show_thread_title_prompts\", \"chat_sound\", \"chat_email_frequency\", \"chat_header_indicator_preference\", \"chat_separate_sidebar_mode\", \"chat_send_shortcut\", \"chat_quick_reaction_type\", \"chat_quick_reactions_custom\"];\n  const CHAT_QUICK_REACTIONS_CUSTOM_DEFAULT = _exports.CHAT_QUICK_REACTIONS_CUSTOM_DEFAULT = \"heart|+1|smile\";\n  const HEADER_INDICATOR_PREFERENCE_NEVER = _exports.HEADER_INDICATOR_PREFERENCE_NEVER = \"never\";\n  const HEADER_INDICATOR_PREFERENCE_DM_AND_MENTIONS = _exports.HEADER_INDICATOR_PREFERENCE_DM_AND_MENTIONS = \"dm_and_mentions\";\n  const HEADER_INDICATOR_PREFERENCE_ALL_NEW = _exports.HEADER_INDICATOR_PREFERENCE_ALL_NEW = \"all_new\";\n  const HEADER_INDICATOR_PREFERENCE_ONLY_MENTIONS = _exports.HEADER_INDICATOR_PREFERENCE_ONLY_MENTIONS = \"only_mentions\";\n  const CHAT_SEND_SHORTCUT_ENTER = _exports.CHAT_SEND_SHORTCUT_ENTER = \"enter\";\n  const CHAT_SEND_SHORTCUT_META_ENTER = _exports.CHAT_SEND_SHORTCUT_META_ENTER = \"meta_enter\";\n  const CHAT_QUICK_REACTION_TYPE_FREQUENT = _exports.CHAT_QUICK_REACTION_TYPE_FREQUENT = \"frequent\";\n  const CHAT_QUICK_REACTION_TYPE_CUSTOM = _exports.CHAT_QUICK_REACTION_TYPE_CUSTOM = \"custom\";\n  const CHAT_SEPARATE_SIDEBAR_MODE_ALWAYS = _exports.CHAT_SEPARATE_SIDEBAR_MODE_ALWAYS = \"always\";\n  const CHAT_SEPARATE_SIDEBAR_MODE_FULLSCREEN = _exports.CHAT_SEPARATE_SIDEBAR_MODE_FULLSCREEN = \"fullscreen\";\n  const CHAT_SEPARATE_SIDEBAR_MODE_NEVER = _exports.CHAT_SEPARATE_SIDEBAR_MODE_NEVER = \"never\";\n  const MATCH_QUALITY_EXACT = _exports.MATCH_QUALITY_EXACT = 1;\n  const MATCH_QUALITY_PREFIX = _exports.MATCH_QUALITY_PREFIX = 2;\n  const MATCH_QUALITY_PARTIAL = _exports.MATCH_QUALITY_PARTIAL = 3;\n});","define(\"discourse/plugins/chat/discourse/lib/chat-message-container\", [\"exports\", \"discourse/plugins/chat/discourse/components/chat-message\"], function (_exports, _chatMessage) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.MESSAGE_CONTEXT_PINNED = void 0;\n  _exports.default = chatMessageContainer;\n  const MESSAGE_CONTEXT_PINNED = _exports.MESSAGE_CONTEXT_PINNED = \"pinned\";\n  function chatMessageContainer(id, context) {\n    let selector;\n    if (context === _chatMessage.MESSAGE_CONTEXT_THREAD) {\n      selector = `.chat-thread .chat-message-container[data-id=\"${id}\"]`;\n    } else if (context === MESSAGE_CONTEXT_PINNED) {\n      selector = `.chat-pinned-messages-list .chat-message-container[data-id=\"${id}\"]`;\n    } else {\n      selector = `.chat-channel .chat-message-container[data-id=\"${id}\"]`;\n    }\n    return document.querySelector(selector);\n  }\n});","define(\"discourse/plugins/chat/discourse/lib/chat-message-flag\", [\"exports\", \"@ember/owner\", \"@ember/service\", \"discourse/lib/ajax-error\", \"discourse/lib/get-url\", \"discourse-i18n\"], function (_exports, _owner, _service, _ajaxError, _getUrl, _discourseI18n) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatMessageFlag {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    constructor(owner) {\n      (0, _owner.setOwner)(this, owner);\n    }\n    title() {\n      return \"flagging.title\";\n    }\n    customSubmitLabel() {\n      return \"flagging.notify_action\";\n    }\n    submitLabel() {\n      return \"chat.flagging.action\";\n    }\n    targetsTopic() {\n      return false;\n    }\n    editable() {\n      return false;\n    }\n    _rewriteFlagDescriptions(flags) {\n      return flags.map(flag => {\n        flag.set(\"description\", (0, _discourseI18n.i18n)(`chat.flags.${flag.name_key}`, {\n          basePath: (0, _getUrl.default)(\"\"),\n          defaultValue: flag.description\n        }));\n        return flag;\n      });\n    }\n    flagsAvailable(flagModal) {\n      let flagsAvailable = flagModal.site.flagTypes;\n      flagsAvailable = flagsAvailable.filter(flag => {\n        return flagModal.args.model.flagModel.availableFlags.includes(flag.name_key) && flag.applies_to.includes(\"Chat::Message\");\n      });\n\n      // \"message user\" option should be at the top\n      const notifyUserIndex = flagsAvailable.findIndex(flag => flag.name_key === \"notify_user\");\n      if (notifyUserIndex !== -1) {\n        const notifyUser = flagsAvailable[notifyUserIndex];\n        flagsAvailable.splice(notifyUserIndex, 1);\n        flagsAvailable.splice(0, 0, notifyUser);\n      }\n      return this._rewriteFlagDescriptions(flagsAvailable);\n    }\n    async create(flagModal, opts) {\n      flagModal.args.closeModal();\n      const channelId = flagModal.args.model.flagModel.channel.id;\n      const messageId = flagModal.args.model.flagModel.id;\n      try {\n        await this.chatApi.flagMessage(channelId, messageId, {\n          flag_type_id: flagModal.selected.id,\n          message: opts.message,\n          is_warning: opts.isWarning,\n          take_action: opts.takeAction,\n          queue_for_review: opts.queue_for_review\n        });\n      } catch (error) {\n        (0, _ajaxError.popupAjaxError)(error);\n      }\n    }\n  }\n  _exports.default = ChatMessageFlag;\n});","define(\"discourse/plugins/chat/discourse/lib/chat-message-interactor\", [\"exports\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/owner\", \"@ember/service\", \"pretty-text/emoji\", \"discourse/components/emoji-picker/detached\", \"discourse/components/modal/bookmark\", \"discourse/components/modal/flag\", \"discourse/lib/ajax-error\", \"discourse/lib/bookmark-form-data\", \"discourse/lib/decorators\", \"discourse/lib/get-url\", \"discourse/lib/utilities\", \"discourse/models/bookmark\", \"discourse/services/emoji-store\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat-message\", \"discourse/plugins/chat/discourse/lib/chat-message-flag\", \"discourse/plugins/chat/discourse/models/chat-message\", \"discourse/plugins/chat/discourse/models/chat-message-reaction\"], function (_exports, _tracking, _object, _owner, _service, _emoji, _detached, _bookmark, _flag2, _ajaxError, _bookmarkFormData, _decorators, _getUrl, _utilities, _bookmark2, _emojiStore3, _discourseI18n, _chatMessage, _chatMessageFlag, _chatMessage2, _chatMessageReaction) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.removeChatComposerSecondaryActions = removeChatComposerSecondaryActions;\n  _exports.resetRemovedChatComposerSecondaryActions = resetRemovedChatComposerSecondaryActions;\n  const removedSecondaryActions = new Set();\n  function removeChatComposerSecondaryActions(actionIds) {\n    actionIds.forEach(id => removedSecondaryActions.add(id));\n  }\n  function resetRemovedChatComposerSecondaryActions() {\n    removedSecondaryActions.clear();\n  }\n  class ChatMessageInteractor {\n    static {\n      dt7948.g(this.prototype, \"appEvents\", [_service.service]);\n    }\n    #appEvents = (dt7948.i(this, \"appEvents\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelComposer\", [_service.service]);\n    }\n    #chatChannelComposer = (dt7948.i(this, \"chatChannelComposer\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatThreadComposer\", [_service.service]);\n    }\n    #chatThreadComposer = (dt7948.i(this, \"chatThreadComposer\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelPane\", [_service.service]);\n    }\n    #chatChannelPane = (dt7948.i(this, \"chatChannelPane\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatThreadPane\", [_service.service]);\n    }\n    #chatThreadPane = (dt7948.i(this, \"chatThreadPane\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"capabilities\", [_service.service]);\n    }\n    #capabilities = (dt7948.i(this, \"capabilities\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"menu\", [_service.service]);\n    }\n    #menu = (dt7948.i(this, \"menu\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"toasts\", [_service.service]);\n    }\n    #toasts = (dt7948.i(this, \"toasts\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"interactedChatMessage\", [_service.service]);\n    }\n    #interactedChatMessage = (dt7948.i(this, \"interactedChatMessage\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"emojiStore\", [_service.service]);\n    }\n    #emojiStore = (dt7948.i(this, \"emojiStore\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"message\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #message = (dt7948.i(this, \"message\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"context\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #context = (dt7948.i(this, \"context\"), void 0);\n    constructor(owner, message, context) {\n      (0, _owner.setOwner)(this, owner);\n      this.message = message;\n      this.context = context;\n    }\n    get emojiReactions() {\n      const userQuickReactionsCustom = (this.currentUser.user_option.chat_quick_reaction_type === \"custom\" && this.currentUser.user_option.chat_quick_reactions_custom || \"\").split(\"|\").filter(Boolean);\n      const frequentReactions = this.emojiStore.favoritesForContext(\"chat\");\n      const defaultReactions = this.siteSettings.default_emoji_reactions.split(\"|\").map(emoji => {\n        if (this.emojiStore.diversity !== _emojiStore3.DEFAULT_DIVERSITY && (0, _emoji.isSkinTonableEmoji)(emoji)) {\n          return `${emoji}:t${this.emojiStore.diversity}`;\n        }\n        return emoji;\n      });\n      const allReactionsInOrder = userQuickReactionsCustom.concat(frequentReactions).concat(defaultReactions);\n      return allReactionsInOrder.filter((item, index) => {\n        return allReactionsInOrder.indexOf(item) === index;\n      }).filter(Boolean).slice(0, 3).map(emoji => this.message.reactions.find(reaction => reaction.emoji === emoji) || _chatMessageReaction.default.create({\n        emoji\n      }));\n    }\n    get pane() {\n      return this.context === _chatMessage.MESSAGE_CONTEXT_THREAD ? this.chatThreadPane : this.chatChannelPane;\n    }\n    get canEdit() {\n      return !this.message.deletedAt && this.currentUser.id === this.message.user.id && this.message.channel?.canModifyMessages?.(this.currentUser);\n    }\n    get canInteractWithMessage() {\n      return !this.message?.deletedAt && this.message?.channel?.canModifyMessages(this.currentUser) && this.message?.channel?.isFollowing;\n    }\n    get canRestoreMessage() {\n      return this.message?.deletedAt && (this.currentUser.staff || this.message?.channel?.canModerate || this.message?.user?.id === this.currentUser.id && this.message?.deletedById === this.currentUser.id) && this.message.channel?.canModifyMessages?.(this.currentUser);\n    }\n    get canBookmark() {\n      return this.message?.channel?.canModifyMessages?.(this.currentUser);\n    }\n    get canReply() {\n      return this.canInteractWithMessage && this.context !== _chatMessage.MESSAGE_CONTEXT_THREAD;\n    }\n    get canReact() {\n      return this.canInteractWithMessage;\n    }\n    get canFlagMessage() {\n      return this.currentUser.id !== this.message?.user?.id && this.message?.userFlagStatus === undefined && this.message.channel?.canFlag && !this.message?.chatWebhookEvent && !this.message?.deletedAt;\n    }\n    get canPinMessage() {\n      if (!this.siteSettings.chat_pinned_messages) {\n        return false;\n      }\n      return this.message.channel?.canManagePins;\n    }\n    get canRebakeMessage() {\n      return this.currentUser.staff && this.message.channel?.canModifyMessages?.(this.currentUser);\n    }\n    get canDeleteMessage() {\n      return this.canDelete && !this.message?.deletedAt && this.message.channel?.canModifyMessages?.(this.currentUser);\n    }\n    get canDelete() {\n      return this.currentUser.id === this.message.user.id ? this.message.channel?.canDeleteSelf : this.message.channel?.canDeleteOthers;\n    }\n    get composer() {\n      return this.context === _chatMessage.MESSAGE_CONTEXT_THREAD ? this.chatThreadComposer : this.chatChannelComposer;\n    }\n    get secondaryActions() {\n      const buttons = [];\n      buttons.push({\n        id: \"copyLink\",\n        name: (0, _discourseI18n.i18n)(\"chat.copy_link\"),\n        icon: \"link\"\n      });\n      if (this.site.mobileView) {\n        buttons.push({\n          id: \"copyText\",\n          name: (0, _discourseI18n.i18n)(\"chat.copy_text\"),\n          icon: \"clipboard\"\n        });\n      }\n      if (this.canEdit) {\n        buttons.push({\n          id: \"edit\",\n          name: (0, _discourseI18n.i18n)(\"chat.edit\"),\n          icon: \"pencil\"\n        });\n      }\n      if (!this.pane.selectingMessages) {\n        buttons.push({\n          id: \"select\",\n          name: (0, _discourseI18n.i18n)(\"chat.select\"),\n          icon: \"list-check\"\n        });\n      }\n      if (this.canPinMessage && !this.message.pinned) {\n        buttons.push({\n          id: \"pin\",\n          name: (0, _discourseI18n.i18n)(\"chat.pin_message\"),\n          icon: \"thumbtack\"\n        });\n      }\n      if (this.canPinMessage && this.message.pinned) {\n        buttons.push({\n          id: \"unpin\",\n          name: (0, _discourseI18n.i18n)(\"chat.unpin_message\"),\n          icon: \"thumbtack\"\n        });\n      }\n      if (this.canFlagMessage) {\n        buttons.push({\n          id: \"flag\",\n          name: (0, _discourseI18n.i18n)(\"chat.flag\"),\n          icon: \"flag\"\n        });\n      }\n      if (this.canDeleteMessage) {\n        buttons.push({\n          id: \"delete\",\n          name: (0, _discourseI18n.i18n)(\"chat.delete\"),\n          icon: \"trash-can\"\n        });\n      }\n      if (this.canRestoreMessage) {\n        buttons.push({\n          id: \"restore\",\n          name: (0, _discourseI18n.i18n)(\"chat.restore\"),\n          icon: \"arrow-rotate-left\"\n        });\n      }\n      if (this.canRebakeMessage) {\n        buttons.push({\n          id: \"rebake\",\n          name: (0, _discourseI18n.i18n)(\"chat.rebake_message\"),\n          icon: \"rotate\"\n        });\n      }\n      return buttons.filter(button => !removedSecondaryActions.has(button.id));\n    }\n    select(checked = true) {\n      this.message.selected = checked;\n      this.pane.onSelectMessage(this.message);\n    }\n    bulkSelect(checked) {\n      const manager = this.message.manager;\n      const lastSelectedIndex = manager.findIndexOfMessage(this.pane.lastSelectedMessage.id);\n      const newlySelectedIndex = manager.findIndexOfMessage(this.message.id);\n      const sortedIndices = [lastSelectedIndex, newlySelectedIndex].sort((a, b) => a - b);\n      for (let i = sortedIndices[0]; i <= sortedIndices[1]; i++) {\n        manager.messages[i].selected = checked;\n      }\n    }\n    copyText() {\n      (0, _utilities.clipboardCopy)(this.message.message);\n      this.toasts.success({\n        duration: \"short\",\n        data: {\n          message: (0, _discourseI18n.i18n)(\"chat.text_copied\")\n        }\n      });\n    }\n    copyLink() {\n      const {\n        protocol,\n        host\n      } = window.location;\n      const channelId = this.message.channel.id;\n      const threadId = this.message.thread?.id;\n      let url;\n      if (this.context === _chatMessage.MESSAGE_CONTEXT_THREAD && threadId) {\n        url = (0, _getUrl.default)(`/chat/c/-/${channelId}/t/${threadId}/${this.message.id}`);\n      } else {\n        url = (0, _getUrl.default)(`/chat/c/-/${channelId}/${this.message.id}`);\n      }\n      url = url.indexOf(\"/\") === 0 ? protocol + \"//\" + host + url : url;\n      (0, _utilities.clipboardCopy)(url);\n      this.toasts.success({\n        duration: \"short\",\n        data: {\n          message: (0, _discourseI18n.i18n)(\"chat.link_copied\")\n        }\n      });\n    }\n    react(emoji, reactAction) {\n      if (!this.chat.userCanInteractWithChat) {\n        return;\n      }\n      if (this.pane.reacting) {\n        return;\n      }\n      if (this.capabilities.userHasBeenActive && this.capabilities.canVibrate) {\n        navigator.vibrate(5);\n      }\n      if (this.site.mobileView) {\n        this.chat.activeMessage = null;\n      }\n      this.pane.reacting = true;\n      this.message.react(emoji, reactAction, this.currentUser, this.currentUser.id);\n      return this.chatApi.publishReaction(this.message.channel.id, this.message.id, emoji, reactAction).then(() => {\n        this.emojiStore.trackEmojiForContext(emoji, \"chat\");\n      }).catch(errResult => {\n        (0, _ajaxError.popupAjaxError)(errResult);\n        this.message.react(emoji, _chatMessageReaction.REACTIONS.remove, this.currentUser, this.currentUser.id);\n      }).finally(() => {\n        this.pane.reacting = false;\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"react\", [_object.action]);\n    }\n    toggleBookmark() {\n      // somehow, this works around a low-level chrome rendering issue which\n      // causes a complete browser crash when saving/deleting bookmarks in chat.\n      // Error message: \"Check failed: !NeedsToUpdateCachedValues().\"\n      // Internal topic: t/143485\n      // Hopefully, this can be dropped in future chrome versions\n      document.activeElement?.blur();\n      this.modal.show(_bookmark.default, {\n        model: {\n          bookmark: new _bookmarkFormData.BookmarkFormData(this.message.bookmark || _bookmark2.default.createFor(this.currentUser, \"Chat::Message\", this.message.id)),\n          afterSave: bookmarkFormData => {\n            const bookmark = _bookmark2.default.create(bookmarkFormData.saveData);\n            this.message.bookmark = bookmark;\n            this.appEvents.trigger(\"bookmarks:changed\", bookmarkFormData.saveData, bookmark.attachedTo());\n          },\n          afterDelete: () => {\n            this.message.bookmark = null;\n          }\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleBookmark\", [_object.action]);\n    }\n    flag() {\n      const model = new _chatMessage2.default(this.message.channel, this.message);\n      model.username = this.message.user?.username;\n      model.user_id = this.message.user?.id;\n      this.modal.show(_flag2.default, {\n        model: {\n          flagTarget: new _chatMessageFlag.default((0, _owner.getOwner)(this)),\n          flagModel: model,\n          setHidden: () => model.set(\"hidden\", true)\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"flag\", [_object.action]);\n    }\n    delete() {\n      return this.chatApi.trashMessage(this.message.channel.id, this.message.id).catch(_ajaxError.popupAjaxError);\n    }\n    static {\n      dt7948.n(this.prototype, \"delete\", [_object.action]);\n    }\n    restore() {\n      return this.chatApi.restoreMessage(this.message.channel.id, this.message.id).catch(_ajaxError.popupAjaxError);\n    }\n    static {\n      dt7948.n(this.prototype, \"restore\", [_object.action]);\n    }\n    rebake() {\n      return this.chatApi.rebakeMessage(this.message.channel.id, this.message.id).catch(_ajaxError.popupAjaxError);\n    }\n    static {\n      dt7948.n(this.prototype, \"rebake\", [_object.action]);\n    }\n    pin() {\n      this.message.pinned = true;\n      this.message.channel.pinnedMessagesCount++;\n      this.message.channel.pendingOptimisticPins.add(this.message.id);\n      return this.chatApi.pinMessage(this.message.channel.id, this.message.id).catch(error => {\n        this.message.pinned = false;\n        this.message.channel.pinnedMessagesCount--;\n        this.message.channel.pendingOptimisticPins.delete(this.message.id);\n        (0, _ajaxError.popupAjaxError)(error);\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"pin\", [_object.action]);\n    }\n    unpin() {\n      this.message.pinned = false;\n      this.message.channel.pinnedMessagesCount = Math.max(0, this.message.channel.pinnedMessagesCount - 1);\n      this.message.channel.pendingOptimisticUnpins.add(this.message.id);\n      return this.chatApi.unpinMessage(this.message.channel.id, this.message.id).catch(error => {\n        this.message.pinned = true;\n        this.message.channel.pinnedMessagesCount++;\n        this.message.channel.pendingOptimisticUnpins.delete(this.message.id);\n        (0, _ajaxError.popupAjaxError)(error);\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"unpin\", [_object.action]);\n    }\n    reply() {\n      this.composer.replyTo(this.message);\n    }\n    static {\n      dt7948.n(this.prototype, \"reply\", [_object.action]);\n    }\n    edit() {\n      this.composer.edit(this.message);\n    }\n    static {\n      dt7948.n(this.prototype, \"edit\", [_object.action]);\n    }\n    async openEmojiPicker(trigger) {\n      this.interactedChatMessage.emojiPickerOpen = true;\n      await this.menu.show(trigger, {\n        identifier: \"emoji-picker\",\n        groupIdentifier: \"emoji-picker\",\n        component: _detached.default,\n        onClose: () => {\n          this.interactedChatMessage.emojiPickerOpen = false;\n        },\n        data: {\n          context: \"chat\",\n          didSelectEmoji: emoji => {\n            this.selectReaction(emoji);\n          }\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"openEmojiPicker\", [_object.action]);\n    }\n    async closeEmojiPicker() {\n      await this.menu.close(\"emoji-picker\");\n      this.interactedChatMessage.emojiPickerOpen = false;\n    }\n    static {\n      dt7948.n(this.prototype, \"closeEmojiPicker\", [_object.action]);\n    }\n    selectReaction(emoji) {\n      if (!this.chat.userCanInteractWithChat) {\n        return;\n      }\n      this.react(emoji, _chatMessageReaction.REACTIONS.add);\n    }\n    static {\n      dt7948.n(this.prototype, \"selectReaction\", [_decorators.bind]);\n    }\n    handleSecondaryActions(id) {\n      this[id](this.message);\n    }\n    static {\n      dt7948.n(this.prototype, \"handleSecondaryActions\", [_object.action]);\n    }\n  }\n  _exports.default = ChatMessageInteractor;\n});","define(\"discourse/plugins/chat/discourse/lib/chat-messages-loader\", [\"exports\", \"@glimmer/tracking\", \"@ember/owner\", \"@ember/service\", \"discourse/lib/ajax-error\", \"discourse/plugins/chat/discourse/lib/chat-constants\", \"discourse/plugins/chat/discourse/models/chat-channel\"], function (_exports, _tracking, _owner, _service, _ajaxError, _chatConstants, _chatChannel) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatMessagesLoader {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"loading\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #loading = (dt7948.i(this, \"loading\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"canLoadMorePast\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #canLoadMorePast = (dt7948.i(this, \"canLoadMorePast\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"canLoadMoreFuture\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #canLoadMoreFuture = (dt7948.i(this, \"canLoadMoreFuture\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"fetchedOnce\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #fetchedOnce = (dt7948.i(this, \"fetchedOnce\"), void 0);\n    constructor(owner, model) {\n      (0, _owner.setOwner)(this, owner);\n      this.model = model;\n    }\n    get loadedPast() {\n      return this.canLoadMorePast === false && this.fetchedOnce;\n    }\n    async loadMore(args = {}) {\n      if (this.canLoadMoreFuture === false && args.direction === _chatConstants.FUTURE) {\n        return;\n      }\n      if (this.canLoadMorePast === false && args.direction === _chatConstants.PAST) {\n        return;\n      }\n      const nextTargetMessage = this.#computeNextTargetMessage(args.direction, this.model);\n      args = {\n        direction: args.direction,\n        page_size: _chatConstants.DEFAULT_MESSAGE_PAGE_SIZE,\n        target_message_id: nextTargetMessage?.id\n      };\n      args = this.#cleanArgs(args);\n      let result;\n      try {\n        this.loading = true;\n        result = await this.#apiFunction(args);\n        this.canLoadMoreFuture = result.meta.can_load_more_future;\n        this.canLoadMorePast = result.meta.can_load_more_past;\n      } catch (error) {\n        (0, _ajaxError.popupAjaxError)(error);\n      } finally {\n        this.loading = false;\n      }\n      return result;\n    }\n    async load(args = {}) {\n      this.canLoadMorePast = true;\n      this.canLoadMoreFuture = true;\n      this.fetchedOnce = false;\n      this.loading = true;\n      args.page_size ??= _chatConstants.DEFAULT_MESSAGE_PAGE_SIZE;\n      args = this.#cleanArgs(args);\n      let result;\n      try {\n        result = await this.#apiFunction(args);\n        this.canLoadMoreFuture = result.meta.can_load_more_future;\n        this.canLoadMorePast = result.meta.can_load_more_past;\n        this.fetchedOnce = true;\n      } catch (error) {\n        (0, _ajaxError.popupAjaxError)(error);\n      } finally {\n        this.loading = false;\n      }\n      return result;\n    }\n    #apiFunction(args = {}) {\n      if (this.model instanceof _chatChannel.default) {\n        return this.chatApi.channelMessages(this.model.id, args);\n      } else {\n        return this.chatApi.channelThreadMessages(this.model.channel.id, this.model.id, args);\n      }\n    }\n    #cleanArgs(args) {\n      return Object.keys(args).filter(k => args[k] != null).reduce((a, k) => ({\n        ...a,\n        [k]: args[k]\n      }), {});\n    }\n    #computeNextTargetMessage(direction, model) {\n      return direction === _chatConstants.PAST ? model.messagesManager.messages.find(message => !message.staged) : model.messagesManager.messages.findLast(message => !message.staged);\n    }\n  }\n  _exports.default = ChatMessagesLoader;\n});","define(\"discourse/plugins/chat/discourse/lib/chat-messages-manager\", [\"exports\", \"@glimmer/tracking\", \"@ember/owner\", \"discourse/lib/array-tools\", \"discourse/lib/tracked-tools\"], function (_exports, _tracking, _owner, _arrayTools, _trackedTools) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatMessagesManager {\n    static {\n      dt7948.g(this.prototype, \"messages\", [_trackedTools.autoTrackedArray], function () {\n        return [];\n      });\n    }\n    #messages = (dt7948.i(this, \"messages\"), void 0);\n    constructor(owner) {\n      (0, _owner.setOwner)(this, owner);\n    }\n    get stagedMessages() {\n      return this.messages.filter(message => message.staged);\n    }\n    static {\n      dt7948.n(this.prototype, \"stagedMessages\", [_tracking.cached]);\n    }\n    get selectedMessages() {\n      return this.messages.filter(message => message.selected);\n    }\n    static {\n      dt7948.n(this.prototype, \"selectedMessages\", [_tracking.cached]);\n    }\n    clearSelectedMessages() {\n      this.selectedMessages.forEach(message => message.selected = false);\n    }\n    clear() {\n      this.messages = [];\n    }\n    addMessages(messages = []) {\n      this.messages = (0, _arrayTools.uniqueItemsFromArray)(this.messages.concat(messages), \"id\").sort((a, b) => a.createdAt - b.createdAt);\n    }\n    findMessage(messageId) {\n      return this.messages.find(message => message.id === parseInt(messageId, 10));\n    }\n    findFirstMessageOfDay(a) {\n      return this.messages.find(b => a.getFullYear() === b.createdAt.getFullYear() && a.getMonth() === b.createdAt.getMonth() && a.getDate() === b.createdAt.getDate());\n    }\n    removeMessage(message) {\n      return (0, _arrayTools.removeValueFromArray)(this.messages, message);\n    }\n    findStagedMessage(stagedMessageId) {\n      return this.stagedMessages.find(message => message.id === stagedMessageId);\n    }\n    findIndexOfMessage(id) {\n      return this.messages.findIndex(m => m.id === id);\n    }\n    findLastMessage() {\n      return this.messages.findLast(message => !message.deletedAt);\n    }\n    findLastUserMessage(user) {\n      return this.messages.findLast(message => message.user.id === user.id && !message.deletedAt);\n    }\n  }\n  _exports.default = ChatMessagesManager;\n});","define(\"discourse/plugins/chat/discourse/lib/chat-notification-levels\", [\"exports\", \"discourse/lib/notification-levels\"], function (_exports, _notificationLevels) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.threadNotificationButtonLevels = void 0;\n  const threadNotificationButtonLevels = _exports.threadNotificationButtonLevels = [_notificationLevels.NotificationLevels.WATCHING, _notificationLevels.NotificationLevels.TRACKING, _notificationLevels.NotificationLevels.REGULAR].map(_notificationLevels.buttonDetails);\n});","define(\"discourse/plugins/chat/discourse/lib/chat-pane-state\", [\"exports\", \"@glimmer/tracking\", \"@ember/owner\", \"@ember/runloop\", \"@ember/service\", \"discourse/lib/decorators\", \"discourse/lib/user-presence\", \"discourse/plugins/chat/discourse/lib/scroll-helpers\"], function (_exports, _tracking, _owner, _runloop, _service, _decorators, _userPresence, _scrollHelpers) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const CHAT_PRESENCE_OPTIONS = {\n    userUnseenTime: 1 * 60 * 1000,\n    browserHiddenTime: 0\n  };\n\n  /**\n   * Shared state and helpers for chat panes (channel and thread).\n   *\n   * Manages:\n   * - User presence detection (is the user actively viewing the tab?)\n   * - Pending message tracking (messages that arrived while scrolled away)\n   * - Pending content indicator visibility\n   *\n   * Used via composition rather than inheritance so callers can be explicit\n   * about which behaviors they're invoking.\n   *\n   * @example\n   * ```js\n   * this.paneState = new ChatPaneState(getOwner(this), {\n   *   contextKey: `channel:${this.channel.id}`,\n   *   onUserPresent: this.handleUserReturned,\n   * });\n   * // Call teardown() when done\n   * ```\n   */\n  class ChatPaneState {\n    static {\n      dt7948.g(this.prototype, \"chatPanePendingManager\", [_service.service]);\n    }\n    #chatPanePendingManager = (dt7948.i(this, \"chatPanePendingManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"userIsPresent\", [_tracking.tracked], function () {\n        return true;\n      });\n    }\n    #userIsPresent = (dt7948.i(this, \"userIsPresent\"), void 0);\n    /**\n     * Whether the user is currently present (tab visible and recently active).\n     *\n     * @type {boolean}\n     */\n    static {\n      dt7948.g(this.prototype, \"hasPendingContentBelow\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #hasPendingContentBelow = (dt7948.i(this, \"hasPendingContentBelow\"), void 0);\n    /**\n     * Whether there is pending content below the current scroll position.\n     * True when there are pending messages or the user is scrolled away.\n     *\n     * @type {boolean}\n     */\n    /**\n     * Identifier for this chat context (e.g. \"channel-123\" or \"thread-456\").\n     * Used to track pending messages per-context in ChatPanePendingManager.\n     *\n     * @type {string | null}\n     */\n    contextKey = null;\n\n    /**\n     * Callback invoked when user returns after being away.\n     *\n     * @type {(() => void) | null}\n     */\n    #onUserPresent = null;\n\n    /**\n     * @param {object} owner - The Ember owner for dependency injection\n     * @param {object} options\n     * @param {string} options.contextKey - The context identifier (e.g. \"channel-123\")\n     * @param {(() => void) | null} [options.onUserPresent] - Called when user returns\n     */\n    constructor(owner, options) {\n      (0, _owner.setOwner)(this, owner);\n      this.contextKey = options.contextKey;\n      this.#onUserPresent = options.onUserPresent ?? null;\n      this.userIsPresent = (0, _userPresence.default)(CHAT_PRESENCE_OPTIONS);\n      (0, _userPresence.onPresenceChange)({\n        callback: this.onPresenceChangeCallback,\n        ...CHAT_PRESENCE_OPTIONS\n      });\n    }\n\n    /**\n     * Cleanup presence tracking. Call from component teardown (e.g. willDestroy).\n     */\n    teardown() {\n      (0, _userPresence.removeOnPresenceChange)(this.onPresenceChangeCallback);\n      this.clearPendingMessages();\n    }\n\n    /**\n     * Whether there are pending messages for this context.\n     * Reads from ChatPanePendingManager (the single source of truth).\n     *\n     * @returns {boolean}\n     */\n    get hasPendingMessages() {\n      return this.chatPanePendingManager.hasPending(this.contextKey);\n    }\n\n    /**\n     * Checks if the scroller element has overflow (can scroll).\n     *\n     * @param {HTMLElement | null} scroller\n     * @returns {boolean}\n     */\n    #canScroll(scroller) {\n      if (!scroller) {\n        return false;\n      }\n\n      // Use a small tolerance because scrollHeight and clientHeight can\n      // occasionally differ by subpixel rounding.\n      return scroller.scrollHeight - scroller.clientHeight > 1;\n    }\n\n    /**\n     * Computes whether the user is scrolled away from the bottom.\n     * True if there are more messages to load OR they've scrolled up past the threshold.\n     *\n     * @param {object} options\n     * @param {boolean} options.fetchedOnce - Whether initial fetch has completed\n     * @param {boolean} options.canLoadMoreFuture - Whether more future messages exist\n     * @param {number} options.distanceToBottomPixels - Current distance from bottom\n     * @param {number} [options.distanceThresholdPixels=250] - Threshold to trigger \"scrolled away\"\n     * @returns {boolean}\n     */\n    #computeIsScrolledAway(options) {\n      const {\n        fetchedOnce,\n        canLoadMoreFuture,\n        distanceToBottomPixels,\n        distanceThresholdPixels = 250\n      } = options;\n      return fetchedOnce && canLoadMoreFuture || distanceToBottomPixels > distanceThresholdPixels;\n    }\n\n    /**\n     * Updates hasPendingContentBelow based on scroll position and loader state.\n     *\n     * @param {object} options\n     * @param {HTMLElement | null} options.scroller\n     * @param {boolean} options.fetchedOnce\n     * @param {boolean} options.canLoadMoreFuture\n     * @param {number} options.distanceToBottomPixels\n     * @param {number} [options.distanceThresholdPixels]\n     */\n    #updateHasPendingContentBelow(options) {\n      const {\n        scroller\n      } = options;\n      const isScrolledAway = this.#computeIsScrolledAway(options);\n      this.hasPendingContentBelow = this.#computeHasPendingContentBelow(scroller, isScrolledAway);\n    }\n\n    /**\n     * Update pending content state from a scroll event's state object.\n     * Use this in scroll handlers that already have distanceToBottom computed.\n     *\n     * @param {object} options\n     * @param {HTMLElement | null} options.scroller\n     * @param {boolean} options.fetchedOnce\n     * @param {boolean} options.canLoadMoreFuture\n     * @param {object} options.state - Scroll state with distanceToBottom\n     * @param {number} [options.distanceThresholdPixels]\n     */\n    updatePendingContentFromScrollState(options) {\n      const {\n        scroller,\n        fetchedOnce,\n        canLoadMoreFuture,\n        state,\n        distanceThresholdPixels\n      } = options;\n      this.#updateHasPendingContentBelow({\n        scroller,\n        fetchedOnce,\n        canLoadMoreFuture,\n        distanceToBottomPixels: state?.distanceToBottom?.pixels ?? 0,\n        distanceThresholdPixels\n      });\n    }\n\n    /**\n     * Update pending content state by reading current scroller position.\n     * Use this when you need to recompute after a resize or similar event.\n     *\n     * @param {object} options\n     * @param {HTMLElement | null} options.scroller\n     * @param {boolean} options.fetchedOnce\n     * @param {boolean} options.canLoadMoreFuture\n     * @param {number} [options.distanceThresholdPixels]\n     */\n    updatePendingContentFromScrollerPosition(options) {\n      const {\n        scroller,\n        fetchedOnce,\n        canLoadMoreFuture,\n        distanceThresholdPixels\n      } = options;\n      if (!scroller) {\n        this.hasPendingContentBelow = false;\n        return;\n      }\n      const distanceToBottomPixels = -scroller.scrollTop;\n      this.#updateHasPendingContentBelow({\n        scroller,\n        fetchedOnce,\n        canLoadMoreFuture,\n        distanceToBottomPixels,\n        distanceThresholdPixels\n      });\n    }\n\n    /**\n     * Callback for presence change events. Updates userIsPresent and\n     * triggers onUserPresent callback when user returns.\n     *\n     * @param {boolean} present\n     */\n    onPresenceChangeCallback(present) {\n      this.userIsPresent = present;\n      if (present) {\n        this.#onUserPresent?.();\n      }\n    }\n\n    /**\n     * Handle an incoming message by either auto-scrolling or preserving viewport.\n     *\n     * If shouldAutoScroll is true, adds the message and scrolls to show it.\n     * Otherwise, preserves the current scroll position and tracks the message as pending.\n     *\n     * @param {object} options\n     * @param {HTMLElement | null} options.scroller - The scrollable container\n     * @param {boolean} options.shouldAutoScroll - Whether to auto-scroll to the new message\n     * @param {Function} options.addMessage - Function that adds the message to the list\n     * @param {Function} [options.onAutoAdd] - Callback after auto-adding (e.g. to scroll)\n     * @param {number} [options.messageCount=1] - Number of messages being added\n     */\n    static {\n      dt7948.n(this.prototype, \"onPresenceChangeCallback\", [_decorators.bind]);\n    }\n    handleIncomingMessage(options = {}) {\n      const {\n        scroller,\n        shouldAutoScroll,\n        addMessage,\n        onAutoAdd,\n        messageCount = 1\n      } = options;\n      if (shouldAutoScroll) {\n        addMessage?.();\n        this.clearPendingMessages();\n        onAutoAdd?.();\n        return;\n      }\n      (0, _scrollHelpers.maintainScrollPosition)(scroller, addMessage);\n      this.addPendingMessages(messageCount);\n      (0, _runloop.schedule)(\"afterRender\", () => {\n        const owner = (0, _owner.getOwner)(this);\n        if (owner.isDestroying || owner.isDestroyed) {\n          return;\n        }\n        this.hasPendingContentBelow = this.#computeHasPendingContentBelow(scroller, false);\n      });\n    }\n\n    /**\n     * Compute whether there is pending content below the current scroll position.\n     *\n     * @param {HTMLElement | null} scroller\n     * @param {boolean} isScrolledAway - Whether user is scrolled away from bottom\n     * @returns {boolean}\n     */\n    #computeHasPendingContentBelow(scroller, isScrolledAway) {\n      return this.#canScroll(scroller) && (this.hasPendingMessages || isScrolledAway);\n    }\n\n    /**\n     * Add pending messages to the count for this context.\n     *\n     * @param {number} [count=1] - Number of messages to add\n     */\n    addPendingMessages(count = 1) {\n      if (this.contextKey && count > 0) {\n        this.chatPanePendingManager.add(this.contextKey, count);\n      }\n    }\n\n    /**\n     * Clear all pending messages for this context and reset pending content state.\n     */\n    clearPendingMessages() {\n      if (this.contextKey) {\n        this.chatPanePendingManager.clear(this.contextKey);\n      }\n      this.hasPendingContentBelow = false;\n    }\n  }\n  _exports.default = ChatPaneState;\n});","define(\"discourse/plugins/chat/discourse/lib/chat-threads-manager\", [\"exports\", \"@glimmer/tracking\", \"@ember/owner\", \"@ember/service\", \"@ember-compat/tracked-built-ins\", \"rsvp\", \"discourse/plugins/chat/discourse/models/chat-thread\"], function (_exports, _tracking, _owner, _service, _trackedBuiltIns, _rsvp, _chatThread) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /*\n    The ChatThreadsManager is responsible for managing the loaded chat threads\n    for a ChatChannel model.\n  \n    It provides helpers to facilitate using and managing loaded threads instead of constantly\n    fetching them from the server.\n  */\n\n  class ChatThreadsManager {\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"_cached\", [_tracking.tracked], function () {\n        return new _trackedBuiltIns.TrackedObject();\n      });\n    }\n    #_cached = (dt7948.i(this, \"_cached\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"_unreadThreadOverview\", [_tracking.tracked], function () {\n        return new _trackedBuiltIns.TrackedMap();\n      });\n    }\n    #_unreadThreadOverview = (dt7948.i(this, \"_unreadThreadOverview\"), void 0);\n    constructor(owner) {\n      (0, _owner.setOwner)(this, owner);\n    }\n    get unreadThreadCount() {\n      return this.unreadThreadOverview.size;\n    }\n    get unreadThreadOverview() {\n      return this._unreadThreadOverview;\n    }\n    set unreadThreadOverview(unreadThreadOverview) {\n      this._unreadThreadOverview.clear();\n      for (const [threadId, lastReplyCreatedAt] of Object.entries(unreadThreadOverview)) {\n        this.markThreadUnread(threadId, lastReplyCreatedAt);\n      }\n    }\n    markThreadUnread(threadId, lastReplyCreatedAt) {\n      this.unreadThreadOverview.set(parseInt(threadId, 10), new Date(lastReplyCreatedAt));\n    }\n    get threads() {\n      return Object.values(this._cached);\n    }\n    static {\n      dt7948.n(this.prototype, \"threads\", [_tracking.cached]);\n    }\n    async find(channelId, threadId, options = {\n      fetchIfNotFound: true\n    }) {\n      const existingThread = this.#getFromCache(threadId);\n      if (existingThread) {\n        return _rsvp.default.resolve(existingThread);\n      } else if (options.fetchIfNotFound) {\n        return await this.#fetchFromServer(channelId, threadId);\n      } else {\n        return _rsvp.default.resolve();\n      }\n    }\n    remove(threadObject) {\n      delete this._cached[threadObject.id];\n    }\n    add(channel, threadObject, options = {}) {\n      let model;\n      if (!options.replace) {\n        model = this.#getFromCache(threadObject.id);\n      }\n      if (!model) {\n        if (threadObject instanceof _chatThread.default) {\n          model = threadObject;\n        } else {\n          model = _chatThread.default.create(channel, threadObject);\n        }\n        this.#cache(model);\n      }\n      if (threadObject?.meta?.message_bus_last_ids?.thread_message_bus_last_id !== undefined) {\n        model.threadMessageBusLastId = threadObject.meta.message_bus_last_ids.thread_message_bus_last_id;\n      }\n      return model;\n    }\n    #cache(thread) {\n      this._cached[thread.id] = thread;\n    }\n    #getFromCache(id) {\n      return this._cached[id];\n    }\n    async #fetchFromServer(channelId, threadId) {\n      return this.chatApi.thread(channelId, threadId).then(result => {\n        return this.chatChannelsManager.find(channelId).then(channel => {\n          return channel.threadsManager.add(channel, result.thread);\n        });\n      });\n    }\n  }\n  _exports.default = ChatThreadsManager;\n});","define(\"discourse/plugins/chat/discourse/lib/chat-user-preferences\", [\"exports\", \"discourse/plugins/chat/discourse/lib/chat-constants\"], function (_exports, _chatConstants) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.hasChatIndicator = hasChatIndicator;\n  function hasChatIndicator(user) {\n    const pref = user.user_option.chat_header_indicator_preference;\n    return {\n      ALL_NEW: pref === _chatConstants.HEADER_INDICATOR_PREFERENCE_ALL_NEW,\n      DM_AND_MENTIONS: pref === _chatConstants.HEADER_INDICATOR_PREFERENCE_DM_AND_MENTIONS,\n      ONLY_MENTIONS: pref === _chatConstants.HEADER_INDICATOR_PREFERENCE_ONLY_MENTIONS,\n      NEVER: pref === _chatConstants.HEADER_INDICATOR_PREFERENCE_NEVER\n    };\n  }\n});","define(\"discourse/plugins/chat/discourse/lib/check-message-visibility\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.checkMessageBottomVisibility = checkMessageBottomVisibility;\n  _exports.checkMessageTopVisibility = checkMessageTopVisibility;\n  function checkMessageBottomVisibility(list, message) {\n    const distanceToTop = window.pageYOffset + list.getBoundingClientRect().top;\n    const bounding = message.getBoundingClientRect();\n    return bounding.bottom - distanceToTop <= list.clientHeight + 1;\n  }\n  function checkMessageTopVisibility(list, message) {\n    const distanceToTop = window.pageYOffset + list.getBoundingClientRect().top;\n    const bounding = message.getBoundingClientRect();\n    return bounding.top - distanceToTop >= -1;\n  }\n});","define(\"discourse/plugins/chat/discourse/lib/collection\", [\"exports\", \"@glimmer/tracking\", \"rsvp\", \"discourse/lib/ajax\", \"discourse/lib/decorators\"], function (_exports, _tracking, _rsvp, _ajax, _decorators) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /**\n   * Handles a paginated API response.\n   */\n  class Collection {\n    static {\n      dt7948.g(this.prototype, \"items\", [_tracking.tracked], function () {\n        return [];\n      });\n    }\n    #items = (dt7948.i(this, \"items\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"meta\", [_tracking.tracked], function () {\n        return {};\n      });\n    }\n    #meta = (dt7948.i(this, \"meta\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"loading\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #loading = (dt7948.i(this, \"loading\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"fetchedOnce\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #fetchedOnce = (dt7948.i(this, \"fetchedOnce\"), void 0);\n    constructor(resourceURL, handler, params = {}) {\n      this._resourceURL = resourceURL;\n      this._handler = handler;\n      this._params = params;\n      this._fetchedAll = false;\n    }\n    get loadMoreURL() {\n      return this.meta?.load_more_url;\n    }\n    get totalRows() {\n      return this.meta?.total_rows;\n    }\n    get length() {\n      return this.items?.length;\n    }\n\n    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols\n    [Symbol.iterator]() {\n      let index = 0;\n      return {\n        next: () => {\n          if (index < this.length) {\n            return {\n              value: this.items[index++],\n              done: false\n            };\n          } else {\n            return {\n              done: true\n            };\n          }\n        }\n      };\n    }\n\n    /**\n     * Loads first batch of results\n     * @returns {Promise}\n     */\n    load(params = {}) {\n      if (this.loading || this._fetchedAll || this.totalRows && this.items.length >= this.totalRows) {\n        return _rsvp.Promise.resolve();\n      }\n      this.loading = true;\n      let endpoint;\n      if (this.loadMoreURL) {\n        endpoint = this.loadMoreURL;\n      } else {\n        const filteredQueryParams = Object.entries(params).filter(([, v]) => v !== undefined);\n        const queryString = new URLSearchParams(filteredQueryParams).toString();\n        endpoint = this._resourceURL + (queryString ? `?${queryString}` : \"\");\n      }\n      return this.#fetch(endpoint).then(result => {\n        const items = this._handler(result);\n        if (items.length) {\n          this.items = (this.items ?? []).concat(items);\n        }\n        if (!items.length || items.length < params.limit) {\n          this._fetchedAll = true;\n        }\n        this.meta = result.meta;\n        this.fetchedOnce = true;\n      }).finally(() => {\n        this.loading = false;\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"load\", [_decorators.bind]);\n    }\n    #fetch(url) {\n      return (0, _ajax.ajax)(url, {\n        type: \"GET\",\n        data: this._params\n      });\n    }\n  }\n  _exports.default = Collection;\n});","define(\"discourse/plugins/chat/discourse/lib/dates-separators-positioner\", [\"exports\", \"@ember/runloop\"], function (_exports, _runloop) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class DatesSeparatorsPositioner {\n    static apply(list) {\n      (0, _runloop.schedule)(\"afterRender\", () => {\n        if (!list) {\n          return;\n        }\n        const dates = [...list.querySelectorAll(\".chat-message-separator-date\")].reverse();\n        const container = list.querySelector(\".chat-messages-container\");\n        if (!container) {\n          return;\n        }\n        const height = container.clientHeight;\n        dates.map((date, index) => {\n          const item = {\n            bottom: 0,\n            date\n          };\n          const line = date.nextElementSibling;\n          if (index > 0) {\n            const prevDate = dates[index - 1];\n            const prevLine = prevDate.nextElementSibling;\n            item.bottom = height - prevLine.offsetTop;\n          }\n          if (dates.length === 1) {\n            item.height = height;\n          } else {\n            if (index === 0) {\n              item.height = height - line.offsetTop;\n            } else {\n              const prevDate = dates[index - 1];\n              const prevLine = prevDate.nextElementSibling;\n              item.height = height - line.offsetTop - (height - prevLine.offsetTop);\n            }\n          }\n          return item;\n        })\n        // group all writes at the end\n        .forEach(item => {\n          item.date.style.bottom = item.bottom + \"px\";\n          item.date.style.height = item.height + \"px\";\n        });\n      });\n    }\n  }\n  _exports.default = DatesSeparatorsPositioner;\n});","define(\"discourse/plugins/chat/discourse/lib/extract-current-topic-info\", [\"exports\", \"@ember/owner\"], function (_exports, _owner) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.extractCurrentTopicInfo = extractCurrentTopicInfo;\n  function extractCurrentTopicInfo(context) {\n    const topic = (0, _owner.getOwner)(context).lookup(\"controller:topic\")?.model;\n    if (!topic) {\n      return;\n    }\n    const info = {\n      context_topic_id: topic.id\n    };\n    const currentPostNumber = topic.currentPost;\n    const posts = topic.postStream.posts;\n    const currentPost = posts.find(post => post.post_number === currentPostNumber);\n    const previousPost = posts.findLast(post => !post.hidden && !post.deleted_at && post.post_number < currentPostNumber);\n    const nextPost = posts.find(post => !post.hidden && !post.deleted_at && post.post_number > currentPostNumber);\n    info.context_post_ids = [previousPost?.id, currentPost?.id, nextPost?.id].filter(Boolean);\n    return info;\n  }\n});","define(\"discourse/plugins/chat/discourse/lib/fabricators\", [\"exports\", \"@ember/application/instance\", \"@ember/owner\", \"discourse/lib/fabricators\", \"discourse/models/category\", \"discourse/plugins/chat/discourse/models/chat-channel\", \"discourse/plugins/chat/discourse/models/chat-direct-message\", \"discourse/plugins/chat/discourse/models/chat-message\", \"discourse/plugins/chat/discourse/models/chat-message-reaction\", \"discourse/plugins/chat/discourse/models/chat-thread\", \"discourse/plugins/chat/discourse/models/chat-thread-preview\"], function (_exports, _instance, _owner, _fabricators, _category, _chatChannel, _chatDirectMessage, _chatMessage, _chatMessageReaction, _chatThread, _chatThreadPreview) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /*\n  Fabricators are used to create fake data for testing purposes.\n  The following fabricators are available in lib folder to allow\n  styleguide to use them, and eventually to generate dummy data\n  in a placeholder component. It should not be used for any other case.\n  */\n\n  class ChatFabricators {\n    constructor(owner) {\n      if (owner && !(owner instanceof _instance.default)) {\n        throw new Error(\"First argument of ChatFabricators constructor must be the owning ApplicationInstance\");\n      }\n      (0, _owner.setOwner)(this, owner);\n      this.coreFabricators = new _fabricators.default(owner);\n    }\n    message(args = {}) {\n      const channel = args.channel || this.channel();\n      const message = _chatMessage.default.create(channel, Object.assign({\n        id: args.id || (0, _fabricators.incrementSequence)(),\n        user: args.user || this.coreFabricators.user(),\n        message: args.message || \"@discobot **abc**defghijklmnopqrstuvwxyz [discourse](discourse.org) :rocket: \",\n        created_at: args.created_at || moment()\n      }, args));\n      const excerptLength = 50;\n      const text = message.message.toString();\n      if (text.length <= excerptLength) {\n        message.excerpt = text;\n      } else {\n        message.excerpt = text.slice(0, excerptLength) + \"...\";\n      }\n      return message;\n    }\n    channel(args = {}) {\n      const id = args.id || (0, _fabricators.incrementSequence)();\n      const chatable = args.chatable || this.coreFabricators.category();\n      const channel = _chatChannel.default.create({\n        id,\n        chatable_type: (chatable instanceof _category.default ? _chatChannel.CHATABLE_TYPES.categoryChannel : _chatChannel.CHATABLE_TYPES.directMessageChannel) || chatable?.type || args.chatable_type,\n        chatable_id: chatable?.id || args.chatable_id,\n        title: args.title ? args.title : chatable instanceof _category.default ? chatable.name : null,\n        description: args.description,\n        chatable,\n        status: args.status || _chatChannel.CHANNEL_STATUSES.open,\n        slug: chatable?.slug || chatable instanceof _category.default ? chatable.slug : null,\n        meta: {\n          can_delete_self: true,\n          ...(args.meta || {})\n        },\n        archive_failed: args.archive_failed ?? false,\n        memberships_count: args.memberships_count ?? 0\n      });\n      channel.lastMessage = this.message({\n        channel\n      });\n      return channel;\n    }\n    directMessage(args = {}) {\n      return _chatDirectMessage.default.create({\n        group: args.group ?? false,\n        users: args.users ?? [this.coreFabricators.user(), this.coreFabricators.user()]\n      });\n    }\n    directMessageChannel(args = {}) {\n      const directMessage = args.chatable || this.directMessage({\n        id: args.chatable_id || (0, _fabricators.incrementSequence)(),\n        group: args.group ?? false,\n        users: args.users\n      });\n      return this.channel(Object.assign(args, {\n        chatable_type: _chatChannel.CHATABLE_TYPES.directMessageChannel,\n        chatable_id: directMessage.id,\n        chatable: directMessage,\n        memberships_count: directMessage.users.length\n      }));\n    }\n    thread(args = {}) {\n      const channel = args.channel || this.channel();\n      return _chatThread.default.create(channel, {\n        id: args.id || (0, _fabricators.incrementSequence)(),\n        title: args.title,\n        original_message: args.original_message || this.message({\n          channel\n        }),\n        preview: args.preview || this.threadPreview({\n          channel\n        })\n      });\n    }\n    threadPreview(args = {}) {\n      return _chatThreadPreview.default.create({\n        last_reply_id: args.last_reply_id || (0, _fabricators.incrementSequence)(),\n        last_reply_created_at: args.last_reply_created_at || Date.now(),\n        last_reply_excerpt: args.last_reply_excerpt || \"This is a reply\",\n        participant_count: args.participant_count ?? 0,\n        participant_users: args.participant_users ?? []\n      });\n    }\n    reaction(args = {}) {\n      return _chatMessageReaction.default.create({\n        count: args.count ?? 1,\n        users: args.users || [this.coreFabricators.user()],\n        emoji: args.emoji || \"heart\",\n        reacted: args.reacted ?? false\n      });\n    }\n  }\n  _exports.default = ChatFabricators;\n});","define(\"discourse/plugins/chat/discourse/lib/get-reaction-text\", [\"exports\", \"discourse-i18n\"], function (_exports, _discourseI18n) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.MAX_DISPLAYED_USERNAMES = void 0;\n  _exports.getReactionText = getReactionText;\n  const MAX_DISPLAYED_USERNAMES = _exports.MAX_DISPLAYED_USERNAMES = 15;\n  function filterUsernames(users, currentUser) {\n    return users.filter(user => user.id !== currentUser?.id).slice(0, MAX_DISPLAYED_USERNAMES).map(item => item.username);\n  }\n  function reactionIncludingCurrentUser(reaction, currentUser) {\n    if (reaction.count === 1) {\n      return (0, _discourseI18n.i18n)(\"chat.reactions.only_you\", {\n        emoji: reaction.emoji\n      });\n    }\n    const usernames = filterUsernames(reaction.users, currentUser);\n    if (reaction.count === 2) {\n      return (0, _discourseI18n.i18n)(\"chat.reactions.you_and_single_user\", {\n        emoji: reaction.emoji,\n        username: usernames.pop()\n      });\n    }\n\n    // - 1 for \"you\"\n    const unnamedUserCount = reaction.count - usernames.length - 1;\n    if (unnamedUserCount > 0) {\n      return (0, _discourseI18n.i18n)(\"chat.reactions.you_multiple_users_and_more\", {\n        emoji: reaction.emoji,\n        commaSeparatedUsernames: joinUsernames(usernames),\n        count: unnamedUserCount\n      });\n    }\n    return (0, _discourseI18n.i18n)(\"chat.reactions.you_and_multiple_users\", {\n      emoji: reaction.emoji,\n      username: usernames.pop(),\n      commaSeparatedUsernames: joinUsernames(usernames)\n    });\n  }\n  function reactionText(reaction, currentUser) {\n    const usernames = filterUsernames(reaction.users, currentUser);\n    if (reaction.count === 1) {\n      return (0, _discourseI18n.i18n)(\"chat.reactions.single_user\", {\n        emoji: reaction.emoji,\n        username: usernames.pop()\n      });\n    }\n    const unnamedUserCount = reaction.count - usernames.length;\n    if (unnamedUserCount > 0) {\n      return (0, _discourseI18n.i18n)(\"chat.reactions.multiple_users_and_more\", {\n        emoji: reaction.emoji,\n        commaSeparatedUsernames: joinUsernames(usernames),\n        count: unnamedUserCount\n      });\n    }\n    return (0, _discourseI18n.i18n)(\"chat.reactions.multiple_users\", {\n      emoji: reaction.emoji,\n      username: usernames.pop(),\n      commaSeparatedUsernames: joinUsernames(usernames)\n    });\n  }\n  function joinUsernames(usernames) {\n    return usernames.join((0, _discourseI18n.i18n)(\"word_connector.comma\"));\n  }\n  function getReactionText(reaction, currentUser) {\n    if (reaction.count === 0) {\n      return;\n    }\n    if (reaction.reacted) {\n      return reactionIncludingCurrentUser(reaction, currentUser);\n    } else {\n      return reactionText(reaction, currentUser);\n    }\n  }\n});","define(\"discourse/plugins/chat/discourse/lib/get-user-chat-separate-sidebar-mode\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.getUserChatSeparateSidebarMode = getUserChatSeparateSidebarMode;\n  function getUserChatSeparateSidebarMode(user) {\n    let mode = user?.get(\"user_option.chat_separate_sidebar_mode\");\n    if (mode === \"default\") {\n      mode = user.siteSettings.chat_separate_sidebar_mode;\n    }\n    return {\n      never: \"never\" === mode,\n      always: \"always\" === mode,\n      fullscreen: \"fullscreen\" === mode\n    };\n  }\n});","define(\"discourse/plugins/chat/discourse/lib/hashtag-types/channel\", [\"exports\", \"@ember/service\", \"discourse/helpers/replace-emoji\", \"discourse/lib/hashtag-types/base\", \"discourse/lib/icon-library\"], function (_exports, _service, _replaceEmoji, _base, _iconLibrary) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChannelHashtagType extends _base.default {\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    get type() {\n      return \"channel\";\n    }\n    get preloadedData() {\n      if (this.currentUser) {\n        return this.chatChannelsManager.publicMessageChannels;\n      } else {\n        return [];\n      }\n    }\n    generateColorCssClasses(channelOrHashtag) {\n      const color = channelOrHashtag.colors ? channelOrHashtag.colors[0] : channelOrHashtag.chatable.color;\n      return [`.d-icon.hashtag-color--${this.type}-${channelOrHashtag.id} { color: #${color} }`];\n    }\n    generateIconHTML(hashtag) {\n      hashtag.colors ? this.onLoad(hashtag) : this.load(hashtag.id);\n      if (hashtag.emoji) {\n        return String((0, _replaceEmoji.default)(`:${hashtag.emoji}:`));\n      } else {\n        return (0, _iconLibrary.iconHTML)(hashtag.icon, {\n          class: `hashtag-color--${this.type}-${hashtag.id}`\n        });\n      }\n    }\n    isLoaded(id) {\n      return super.isLoaded(id);\n    }\n  }\n  _exports.default = ChannelHashtagType;\n});","define(\"discourse/plugins/chat/discourse/lib/init-sidebar-state\", [\"exports\", \"discourse/lib/sidebar/panels\", \"discourse/plugins/chat/discourse/lib/get-user-chat-separate-sidebar-mode\"], function (_exports, _panels, _getUserChatSeparateSidebarMode) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.CHAT_PANEL = void 0;\n  _exports.initSidebarState = initSidebarState;\n  const CHAT_PANEL = _exports.CHAT_PANEL = \"chat\";\n  function initSidebarState(api, user) {\n    const chatSeparateSidebarMode = (0, _getUserChatSeparateSidebarMode.getUserChatSeparateSidebarMode)(user);\n    if (chatSeparateSidebarMode.fullscreen) {\n      api.setCombinedSidebarMode();\n      api.showSidebarSwitchPanelButtons();\n    } else if (chatSeparateSidebarMode.always) {\n      api.setSeparatedSidebarMode();\n    } else {\n      api.setCombinedSidebarMode();\n      api.hideSidebarSwitchPanelButtons();\n    }\n    if (api.getSidebarPanel()?.key !== _panels.MAIN_PANEL && api.getSidebarPanel()?.key !== CHAT_PANEL) {\n      return;\n    }\n    api.setSidebarPanel(_panels.MAIN_PANEL);\n  }\n});","define(\"discourse/plugins/chat/discourse/lib/scroll-helpers\", [\"exports\", \"@ember/runloop\"], function (_exports, _runloop) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.maintainScrollPosition = maintainScrollPosition;\n  _exports.scrollListToBottom = scrollListToBottom;\n  _exports.scrollListToMessage = scrollListToMessage;\n  _exports.scrollListToTop = scrollListToTop;\n  /**\n   * Tracks pending scroll adjustments to handle re-entrant calls.\n   * Maps scroller elements to their captured state.\n   *\n   * @type {WeakMap<HTMLElement, { scrollTop: number; scrollHeight: number }>}\n   */\n  const pendingAdjustments = new WeakMap();\n\n  /**\n   * Prevent viewport drift when the list grows while scrolled away from bottom.\n   *\n   * Our chat scroller uses flex-direction: column-reverse for bottom-origin scroll.\n   * Appending content can shift the viewport unless we compensate for height changes.\n   *\n   * @param {HTMLElement | null} scroller - The scrollable container\n   * @param {Function} callback - Function that modifies the list content\n   */\n  function maintainScrollPosition(scroller, callback) {\n    if (!scroller) {\n      callback?.();\n      return;\n    }\n    const existing = pendingAdjustments.get(scroller);\n    if (existing) {\n      existing.scrollTop = scroller.scrollTop;\n      callback?.();\n      return;\n    }\n    const state = {\n      scrollTop: scroller.scrollTop,\n      scrollHeight: scroller.scrollHeight\n    };\n    pendingAdjustments.set(scroller, state);\n    callback?.();\n    (0, _runloop.schedule)(\"afterRender\", () => {\n      const captured = pendingAdjustments.get(scroller);\n      pendingAdjustments.delete(scroller);\n      if (!captured || !scroller.isConnected) {\n        return;\n      }\n      const heightDiff = scroller.scrollHeight - captured.scrollHeight;\n      if (!heightDiff || heightDiff < 1) {\n        return;\n      }\n      scroller.scrollTop = captured.scrollTop - heightDiff;\n    });\n  }\n  async function scrollListToBottom(list) {\n    await new Promise(resolve => {\n      list.scrollTo({\n        top: 0,\n        behavior: \"auto\"\n      });\n      (0, _runloop.next)(resolve);\n    });\n  }\n  async function scrollListToTop(list) {\n    await new Promise(resolve => {\n      list.scrollTo({\n        top: -list.scrollHeight,\n        behavior: \"auto\"\n      });\n      (0, _runloop.next)(resolve);\n    });\n  }\n  function scrollListToMessage(list, message, opts = {\n    highlight: false,\n    position: \"start\",\n    autoExpand: false\n  }) {\n    if (!message) {\n      return;\n    }\n    if (message?.deletedAt && opts.autoExpand) {\n      message.expanded = true;\n    }\n    (0, _runloop.next)(() => {\n      (0, _runloop.schedule)(\"afterRender\", () => {\n        const messageEl = list.querySelector(`.chat-message-container[data-id='${message.id}']`);\n        if (!messageEl) {\n          return;\n        }\n        if (opts.highlight) {\n          message.highlight();\n        }\n        messageEl.scrollIntoView({\n          behavior: \"auto\",\n          block: opts.position || \"center\"\n        });\n      });\n    });\n  }\n});","define(\"discourse/plugins/chat/discourse/lib/slugify-channel\", [\"exports\", \"discourse/lib/utilities\"], function (_exports, _utilities) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = slugifyChannel;\n  function slugifyChannel(channel) {\n    if (channel.slug) {\n      return channel.slug;\n    }\n    if (!channel.escapedTitle && !channel.title) {\n      return \"-\";\n    }\n    const slug = (0, _utilities.slugify)(channel.escapedTitle || channel.title);\n    const resolvedSlug = (slug.length ? slug : channel.title.trim().toLowerCase().replace(/\\s|_+/g, \"-\")).slice(0, 100);\n    if (!resolvedSlug) {\n      return \"-\";\n    }\n    return resolvedSlug;\n  }\n});","define(\"discourse/plugins/chat/discourse/lib/textarea-interactor\", [\"exports\", \"@ember/destroyable\", \"@ember/object\", \"@ember/owner\", \"@ember/runloop\", \"@ember/service\", \"discourse/lib/decorators\", \"discourse/lib/textarea-text-manipulation\"], function (_exports, _destroyable, _object, _owner, _runloop, _service, _decorators, _textareaTextManipulation) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  // This class sole purpose is to provide a way to interact with the textarea\n  // using the existing TextareaTextManipulation mixin without using it directly\n  // in the composer component. It will make future migration easier.\n  class TextareaInteractor extends _object.default {\n    static {\n      dt7948.g(this.prototype, \"capabilities\", [_service.service]);\n    }\n    #capabilities = (dt7948.i(this, \"capabilities\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    textManipulation;\n    constructor(owner, textarea) {\n      super(...arguments);\n      (0, _owner.setOwner)(this, owner);\n      this.textarea = textarea;\n      this.element = textarea;\n      this.textManipulation = new _textareaTextManipulation.default(owner, {\n        textarea,\n        // we don't need app events\n        eventPrefix: null\n      });\n\n      // paste is using old native ember events defined on composer\n      this.textarea.addEventListener(\"paste\", this.textManipulation.paste);\n      (0, _destroyable.registerDestructor)(this, instance => instance.teardown());\n    }\n    teardown() {\n      this.textarea.removeEventListener(\"paste\", this.textManipulation.paste);\n    }\n    set value(value) {\n      this.textarea.value = value;\n      const event = new Event(\"input\", {\n        bubbles: true,\n        cancelable: true\n      });\n      this.textarea.dispatchEvent(event);\n    }\n    blur() {\n      (0, _runloop.next)(() => {\n        this.textarea.blur();\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"blur\", [_decorators.bind]);\n    }\n    focus(opts = {\n      ensureAtEnd: false,\n      refreshHeight: true,\n      addText: null\n    }) {\n      (0, _runloop.next)(() => {\n        if (opts.refreshHeight) {\n          this.refreshHeight();\n        }\n        if (opts.ensureAtEnd) {\n          this.ensureCaretAtEnd();\n        }\n        if (this.capabilities.isIpadOS || this.site.mobileView) {\n          return;\n        }\n        if (opts.addText) {\n          this.textManipulation.addText(this.textManipulation.getSelected(), opts.addText);\n        }\n        this.textManipulation.blurAndFocus();\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"focus\", [_decorators.bind]);\n    }\n    ensureCaretAtEnd() {\n      (0, _runloop.schedule)(\"afterRender\", () => {\n        this.textarea.setSelectionRange(this.textarea.value.length, this.textarea.value.length);\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"ensureCaretAtEnd\", [_decorators.bind]);\n    }\n    refreshHeight() {\n      (0, _runloop.schedule)(\"afterRender\", () => {\n        // this is a quirk which forces us to `auto` first or textarea\n        // won't resize\n        this.textarea.style.height = \"auto\";\n\n        // +1 is to workaround a rounding error visible on electron\n        // causing scrollbars to show when they shouldn’t\n        this.textarea.style.height = this.textarea.scrollHeight + 1 + \"px\";\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"refreshHeight\", [_decorators.bind]);\n    }\n    getSelected() {\n      return this.textManipulation.getSelected(...arguments);\n    }\n    static {\n      dt7948.n(this.prototype, \"getSelected\", [_decorators.bind]);\n    }\n    applySurround() {\n      return this.textManipulation.applySurround(...arguments);\n    }\n    static {\n      dt7948.n(this.prototype, \"applySurround\", [_decorators.bind]);\n    }\n    addText() {\n      return this.textManipulation.addText(...arguments);\n    }\n    static {\n      dt7948.n(this.prototype, \"addText\", [_decorators.bind]);\n    }\n    isInside() {\n      return this.textManipulation.isInside(...arguments);\n    }\n    static {\n      dt7948.n(this.prototype, \"isInside\", [_decorators.bind]);\n    }\n    emojiSelected(code) {\n      this.textManipulation.emojiSelected(code);\n    }\n  }\n  _exports.default = TextareaInteractor;\n});","define(\"discourse/plugins/chat/discourse/lib/transform-auto-links\", [\"exports\", \"discourse/lib/get-url\", \"discourse/lib/hashtag-decorator\"], function (_exports, _getUrl, _hashtagDecorator) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = transformAutolinks;\n  const domParser = new DOMParser();\n  function transformAutolinks(cooked) {\n    const html = domParser.parseFromString(cooked, \"text/html\");\n    transformMentions(html);\n    transformHashtags(html);\n    return html.body.innerHTML;\n  }\n  function transformMentions(html) {\n    (html.querySelectorAll(\"span.mention\") || []).forEach(mentionSpan => {\n      let mentionLink = document.createElement(\"a\");\n      let mentionText = document.createTextNode(mentionSpan.innerText);\n      mentionLink.classList.add(\"mention\");\n      mentionLink.appendChild(mentionText);\n      mentionLink.href = (0, _getUrl.default)(`/u/${mentionSpan.innerText.substring(1)}`);\n      mentionSpan.replaceWith(mentionLink);\n    });\n  }\n  function transformHashtags(html) {\n    (html.querySelectorAll(\"span.hashtag-raw\") || []).forEach(hashtagSpan => {\n      // Doesn't matter what \"type\" of hashtag we use here, it will get replaced anyway,\n      // this is just for the placeholder HTML.\n      (0, _hashtagDecorator.generatePlaceholderHashtagHTML)(\"category\", hashtagSpan, {\n        id: -1,\n        text: \"...\",\n        relative_url: \"/\",\n        slug: \"\",\n        icon: \"square-full\"\n      });\n    });\n  }\n});","define(\"discourse/plugins/chat/discourse/models/chat-channel-archive\", [\"exports\", \"@glimmer/tracking\"], function (_exports, _tracking) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelArchive {\n    static create(args = {}) {\n      return new ChatChannelArchive(args);\n    }\n    static {\n      dt7948.g(this.prototype, \"failed\", [_tracking.tracked]);\n    }\n    #failed = (dt7948.i(this, \"failed\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"completed\", [_tracking.tracked]);\n    }\n    #completed = (dt7948.i(this, \"completed\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"messages\", [_tracking.tracked]);\n    }\n    #messages = (dt7948.i(this, \"messages\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"topicId\", [_tracking.tracked]);\n    }\n    #topicId = (dt7948.i(this, \"topicId\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"totalMessages\", [_tracking.tracked]);\n    }\n    #totalMessages = (dt7948.i(this, \"totalMessages\"), void 0);\n    constructor(args = {}) {\n      this.failed = args.archive_failed;\n      this.completed = args.archive_completed;\n      this.messages = args.archived_messages;\n      this.topicId = args.archive_topic_id;\n      this.totalMessages = args.total_messages;\n    }\n  }\n  _exports.default = ChatChannelArchive;\n});","define(\"discourse/plugins/chat/discourse/models/chat-channel\", [\"exports\", \"@glimmer/tracking\", \"pretty-text/guid\", \"discourse/lib/get-owner\", \"discourse/lib/utilities\", \"discourse/models/category\", \"discourse/plugins/chat/discourse/lib/chat-messages-manager\", \"discourse/plugins/chat/discourse/lib/chat-threads-manager\", \"discourse/plugins/chat/discourse/lib/slugify-channel\", \"discourse/plugins/chat/discourse/models/chat-channel-archive\", \"discourse/plugins/chat/discourse/models/chat-direct-message\", \"discourse/plugins/chat/discourse/models/chat-message\", \"discourse/plugins/chat/discourse/models/chat-tracking-state\", \"discourse/plugins/chat/discourse/models/user-chat-channel-membership\"], function (_exports, _tracking3, _guid, _getOwner, _utilities, _category, _chatMessagesManager, _chatThreadsManager, _slugifyChannel, _chatChannelArchive, _chatDirectMessage, _chatMessage, _chatTrackingState, _userChatChannelMembership) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.CHATABLE_TYPES = _exports.CHANNEL_STATUSES = void 0;\n  _exports.channelStatusIcon = channelStatusIcon;\n  _exports.default = void 0;\n  const CHATABLE_TYPES = _exports.CHATABLE_TYPES = {\n    directMessageChannel: \"DirectMessage\",\n    categoryChannel: \"Category\"\n  };\n  const CHANNEL_STATUSES = _exports.CHANNEL_STATUSES = {\n    open: \"open\",\n    readOnly: \"read_only\",\n    closed: \"closed\",\n    archived: \"archived\"\n  };\n  function channelStatusIcon(channelStatus) {\n    if (channelStatus === CHANNEL_STATUSES.open) {\n      return null;\n    }\n    switch (channelStatus) {\n      case CHANNEL_STATUSES.closed:\n        return \"lock\";\n      case CHANNEL_STATUSES.readOnly:\n        return \"comment-slash\";\n      case CHANNEL_STATUSES.archived:\n        return \"box-archive\";\n    }\n  }\n  const STAFF_READONLY_STATUSES = [CHANNEL_STATUSES.readOnly, CHANNEL_STATUSES.archived];\n  const READONLY_STATUSES = [CHANNEL_STATUSES.closed, CHANNEL_STATUSES.readOnly, CHANNEL_STATUSES.archived];\n  class ChatChannel {\n    static create(args = {}) {\n      return new ChatChannel(args);\n    }\n    static {\n      dt7948.g(this.prototype, \"title\", [_tracking3.tracked]);\n    }\n    #title = (dt7948.i(this, \"title\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"slug\", [_tracking3.tracked]);\n    }\n    #slug = (dt7948.i(this, \"slug\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"description\", [_tracking3.tracked]);\n    }\n    #description = (dt7948.i(this, \"description\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"status\", [_tracking3.tracked]);\n    }\n    #status = (dt7948.i(this, \"status\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"activeThread\", [_tracking3.tracked]);\n    }\n    #activeThread = (dt7948.i(this, \"activeThread\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"meta\", [_tracking3.tracked]);\n    }\n    #meta = (dt7948.i(this, \"meta\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatableId\", [_tracking3.tracked]);\n    }\n    #chatableId = (dt7948.i(this, \"chatableId\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatableType\", [_tracking3.tracked]);\n    }\n    #chatableType = (dt7948.i(this, \"chatableType\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatableUrl\", [_tracking3.tracked]);\n    }\n    #chatableUrl = (dt7948.i(this, \"chatableUrl\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"autoJoinUsers\", [_tracking3.tracked]);\n    }\n    #autoJoinUsers = (dt7948.i(this, \"autoJoinUsers\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"allowChannelWideMentions\", [_tracking3.tracked]);\n    }\n    #allowChannelWideMentions = (dt7948.i(this, \"allowChannelWideMentions\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"membershipsCount\", [_tracking3.tracked]);\n    }\n    #membershipsCount = (dt7948.i(this, \"membershipsCount\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"archive\", [_tracking3.tracked]);\n    }\n    #archive = (dt7948.i(this, \"archive\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"tracking\", [_tracking3.tracked]);\n    }\n    #tracking = (dt7948.i(this, \"tracking\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"threadingEnabled\", [_tracking3.tracked]);\n    }\n    #threadingEnabled = (dt7948.i(this, \"threadingEnabled\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"draft\", [_tracking3.tracked]);\n    }\n    #draft = (dt7948.i(this, \"draft\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"newestMessage\", [_tracking3.tracked]);\n    }\n    #newestMessage = (dt7948.i(this, \"newestMessage\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"pinnedMessagesCount\", [_tracking3.tracked]);\n    }\n    #pinnedMessagesCount = (dt7948.i(this, \"pinnedMessagesCount\"), void 0);\n    threadsManager = new _chatThreadsManager.default((0, _getOwner.getOwnerWithFallback)(this));\n    messagesManager = new _chatMessagesManager.default((0, _getOwner.getOwnerWithFallback)(this));\n    pendingOptimisticPins = new Set();\n    pendingOptimisticUnpins = new Set();\n    static {\n      dt7948.g(this.prototype, \"_currentUserMembership\", [_tracking3.tracked]);\n    }\n    #_currentUserMembership = (dt7948.i(this, \"_currentUserMembership\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"_lastMessage\", [_tracking3.tracked]);\n    }\n    #_lastMessage = (dt7948.i(this, \"_lastMessage\"), void 0);\n    constructor(args = {}) {\n      this.id = args.id;\n      this.chatableId = args.chatable_id;\n      this.chatableUrl = args.chatable_url;\n      this.chatableType = args.chatable_type;\n      this.membershipsCount = args.memberships_count;\n      this.slug = args.slug;\n      this.title = args.title;\n      this.emoji = args.emoji;\n      this.unicodeTitle = args.unicode_title;\n      this.status = args.status;\n      this.description = args.description;\n      this.threadingEnabled = args.threading_enabled;\n      this.autoJoinUsers = args.auto_join_users;\n      this.allowChannelWideMentions = args.allow_channel_wide_mentions;\n      this.currentUserMembership = args.current_user_membership;\n      this.lastMessage = args.last_message;\n      this.meta = args.meta;\n      this.chatable = this.#initChatable(args.chatable ?? []);\n      this.tracking = new _chatTrackingState.default((0, _getOwner.getOwnerWithFallback)(this));\n      this.pinnedMessagesCount = args.pinned_messages_count ?? 0;\n      if (args.archive_completed || args.archive_failed) {\n        this.archive = _chatChannelArchive.default.create(args);\n      }\n    }\n    get unreadThreadsCountSinceLastViewed() {\n      if (!this.threadingEnabled) {\n        return 0;\n      }\n      return Array.from(this.threadsManager.unreadThreadOverview.values()).filter(lastReplyCreatedAt => lastReplyCreatedAt >= this.currentUserMembership.lastViewedAt).length;\n    }\n    get unreadThreadsCount() {\n      return this.threadingEnabled ? this.threadsManager.unreadThreadCount : 0;\n    }\n    get lastUnreadThreadDate() {\n      if (this.unreadThreadsCount === 0) {\n        return this.lastMessage.createdAt;\n      }\n      return Array.from(this.threadsManager.unreadThreadOverview.values()).sort((a, b) => b - a).pop();\n    }\n    get watchedThreadsUnreadCount() {\n      if (!this.threadingEnabled) {\n        return 0;\n      }\n      return this.threadsManager.threads.reduce((unreadCount, thread) => {\n        return unreadCount + thread.tracking.watchedThreadsUnreadCount;\n      }, 0);\n    }\n    updateLastViewedAt() {\n      this.currentUserMembership.lastViewedAt = new Date();\n    }\n    get canDeleteSelf() {\n      return this.meta?.can_delete_self;\n    }\n    get canDeleteOthers() {\n      return this.meta?.can_delete_others;\n    }\n    get canFlag() {\n      return this.meta?.can_flag;\n    }\n    get userSilenced() {\n      return this.meta?.user_silenced;\n    }\n    get canModerate() {\n      return this.meta?.can_moderate;\n    }\n    get canRemoveMembers() {\n      return this.meta?.can_remove_members;\n    }\n    get canManagePins() {\n      return this.meta?.can_manage_pins;\n    }\n    get escapedTitle() {\n      return (0, _utilities.escapeExpression)(this.title);\n    }\n    get displayTitle() {\n      return this.unicodeTitle ?? this.title;\n    }\n    get escapedDescription() {\n      return (0, _utilities.escapeExpression)(this.description?.trim());\n    }\n    get slugifiedTitle() {\n      return this.slug || (0, _slugifyChannel.default)(this);\n    }\n    get routeModels() {\n      return [this.slugifiedTitle, this.id];\n    }\n    get isDirectMessageChannel() {\n      return this.chatableType === CHATABLE_TYPES.directMessageChannel;\n    }\n    get isCategoryChannel() {\n      return this.chatableType === CHATABLE_TYPES.categoryChannel;\n    }\n    get isOpen() {\n      return !this.status || this.status === CHANNEL_STATUSES.open;\n    }\n    get isReadOnly() {\n      return this.status === CHANNEL_STATUSES.readOnly;\n    }\n    get isClosed() {\n      return this.status === CHANNEL_STATUSES.closed;\n    }\n    get isArchived() {\n      return this.status === CHANNEL_STATUSES.archived;\n    }\n    get isJoinable() {\n      return this.isOpen && !this.isArchived;\n    }\n    get isFollowing() {\n      return this.currentUserMembership.following;\n    }\n    get canJoin() {\n      return this.meta.can_join_chat_channel;\n    }\n    get hasUnread() {\n      return this.tracking.unreadCount + this.tracking.mentionCount + this.tracking.watchedThreadsUnreadCount + this.threadsManager.unreadThreadCount > 0;\n    }\n    get hasPinnedMessages() {\n      return this.pinnedMessagesCount > 0;\n    }\n    get hasUnseenPins() {\n      return this.currentUserMembership?.hasUnseenPins ?? false;\n    }\n    async stageMessage(message) {\n      message.id = (0, _guid.default)();\n      message.staged = true;\n      message.processed = false;\n      message.draft = false;\n      message.createdAt = new Date();\n      message.channel = this;\n      if (message.inReplyTo) {\n        if (!this.threadingEnabled) {\n          this.messagesManager.addMessages([message]);\n        }\n      } else {\n        this.messagesManager.addMessages([message]);\n      }\n      message.manager = this.messagesManager;\n    }\n    resetDraft(user) {\n      this.draft = _chatMessage.default.createDraftMessage(this, {\n        user\n      });\n    }\n    canModifyMessages(user) {\n      if (user.staff) {\n        return !STAFF_READONLY_STATUSES.includes(this.status);\n      }\n      return !READONLY_STATUSES.includes(this.status);\n    }\n    get currentUserMembership() {\n      return this._currentUserMembership;\n    }\n    set currentUserMembership(membership) {\n      if (membership instanceof _userChatChannelMembership.default) {\n        this._currentUserMembership = membership;\n      } else {\n        this._currentUserMembership = _userChatChannelMembership.default.create(membership);\n      }\n    }\n    get lastMessage() {\n      return this._lastMessage;\n    }\n    set lastMessage(message) {\n      if (!message) {\n        this._lastMessage = null;\n        return;\n      }\n      if (message instanceof _chatMessage.default) {\n        this._lastMessage = message;\n      } else {\n        this._lastMessage = _chatMessage.default.create(this, message);\n      }\n    }\n    #initChatable(chatable) {\n      if (!chatable || chatable instanceof _category.default || chatable instanceof _chatDirectMessage.default) {\n        return chatable;\n      } else {\n        if (this.isDirectMessageChannel) {\n          return _chatDirectMessage.default.create({\n            users: chatable?.users,\n            group: chatable?.group\n          });\n        } else {\n          return _category.default.create(chatable);\n        }\n      }\n    }\n  }\n  _exports.default = ChatChannel;\n});","define(\"discourse/plugins/chat/discourse/models/chat-chatable\", [\"exports\", \"@glimmer/tracking\", \"discourse/models/category\", \"discourse/models/group\", \"discourse/models/user\", \"discourse/plugins/chat/discourse/lib/chat-constants\", \"discourse/plugins/chat/discourse/models/chat-channel\"], function (_exports, _tracking3, _category, _group, _user, _chatConstants, _chatChannel) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChatable {\n    static create(args = {}) {\n      return new ChatChatable(args);\n    }\n    static createUser(model) {\n      return new ChatChatable({\n        type: \"user\",\n        model,\n        identifier: `u-${model.id}`\n      });\n    }\n    static createGroup(model) {\n      return new ChatChatable({\n        type: \"group\",\n        model,\n        identifier: `g-${model.id}`\n      });\n    }\n    static createChannel(model) {\n      return new ChatChatable({\n        type: \"channel\",\n        model,\n        identifier: `c-${model.id}`\n      });\n    }\n    static {\n      dt7948.g(this.prototype, \"identifier\", [_tracking3.tracked]);\n    }\n    #identifier = (dt7948.i(this, \"identifier\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"type\", [_tracking3.tracked]);\n    }\n    #type = (dt7948.i(this, \"type\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"model\", [_tracking3.tracked]);\n    }\n    #model = (dt7948.i(this, \"model\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"enabled\", [_tracking3.tracked], function () {\n        return true;\n      });\n    }\n    #enabled = (dt7948.i(this, \"enabled\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"tracking\", [_tracking3.tracked]);\n    }\n    #tracking = (dt7948.i(this, \"tracking\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"matchQuality\", [_tracking3.tracked], function () {\n        return _chatConstants.MATCH_QUALITY_PARTIAL;\n      });\n    }\n    #matchQuality = (dt7948.i(this, \"matchQuality\"), void 0);\n    constructor(args = {}) {\n      this.identifier = args.identifier;\n      this.type = args.type;\n      this.matchQuality = args.match_quality ?? _chatConstants.MATCH_QUALITY_PARTIAL;\n      switch (this.type) {\n        case \"channel\":\n          if (args.model.chatable?.users?.length === 1) {\n            this.enabled = args.model.chatable?.users[0].has_chat_enabled;\n          }\n          if (args.model instanceof _chatChannel.default) {\n            this.model = args.model;\n            break;\n          }\n          this.model = _chatChannel.default.create(args.model);\n          break;\n        case \"user\":\n          this.enabled = args.model.has_chat_enabled;\n          if (args.model instanceof _user.default) {\n            this.model = args.model;\n            break;\n          }\n          this.model = _user.default.create(args.model);\n          break;\n        case \"group\":\n          this.enabled = args.model.can_chat;\n          if (args.model instanceof _group.default) {\n            this.model = args.model;\n            break;\n          }\n          this.model = _group.default.create(args.model);\n          break;\n      }\n    }\n    get isUser() {\n      return this.type === \"user\";\n    }\n    get isGroup() {\n      return this.type === \"group\";\n    }\n    get isCategory() {\n      return this instanceof _category.default;\n    }\n  }\n  _exports.default = ChatChatable;\n});","define(\"discourse/plugins/chat/discourse/models/chat-direct-message\", [\"exports\", \"@glimmer/tracking\", \"discourse/lib/tracked-tools\", \"discourse/models/user\", \"discourse/plugins/chat/discourse/models/chat-channel\"], function (_exports, _tracking, _trackedTools, _user, _chatChannel) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatDirectMessage {\n    static create(args = {}) {\n      return new ChatDirectMessage(args);\n    }\n    static {\n      dt7948.g(this.prototype, \"group\", [_tracking.tracked]);\n    }\n    #group = (dt7948.i(this, \"group\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"users\", [_trackedTools.autoTrackedArray]);\n    }\n    #users = (dt7948.i(this, \"users\"), void 0);\n    type = _chatChannel.CHATABLE_TYPES.directMessageChannel;\n    constructor(args = {}) {\n      this.group = args.group ?? false;\n      this.users = this.#initUsers(args.users || []);\n    }\n    #initUsers(users) {\n      return users.map(user => {\n        if (!user || user instanceof _user.default) {\n          return user;\n        } else {\n          return _user.default.create(user);\n        }\n      });\n    }\n  }\n  _exports.default = ChatDirectMessage;\n});","define(\"discourse/plugins/chat/discourse/models/chat-message-reaction\", [\"exports\", \"@glimmer/tracking\", \"discourse/lib/tracked-tools\", \"discourse/models/user\"], function (_exports, _tracking, _trackedTools, _user) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _exports.REACTIONS = void 0;\n  const REACTIONS = _exports.REACTIONS = {\n    add: \"add\",\n    remove: \"remove\"\n  };\n  class ChatMessageReaction {\n    static create(args = {}) {\n      return new ChatMessageReaction(args);\n    }\n    static {\n      dt7948.g(this.prototype, \"count\", [_tracking.tracked]);\n    }\n    #count = (dt7948.i(this, \"count\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"reacted\", [_tracking.tracked]);\n    }\n    #reacted = (dt7948.i(this, \"reacted\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"emoji\", [_tracking.tracked]);\n    }\n    #emoji = (dt7948.i(this, \"emoji\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"users\", [_trackedTools.autoTrackedArray]);\n    }\n    #users = (dt7948.i(this, \"users\"), void 0);\n    constructor(args = {}) {\n      this.count = args.count;\n      this.emoji = args.emoji;\n      this.reacted = args.reacted;\n      this.users = this.#initUsersModels(args.users);\n    }\n    #initUsersModels(users = []) {\n      return users.map(user => {\n        if (user instanceof _user.default) {\n          return user;\n        }\n        return _user.default.create(user);\n      });\n    }\n  }\n  _exports.default = ChatMessageReaction;\n});","define(\"discourse/plugins/chat/discourse/models/chat-message\", [\"exports\", \"@glimmer/tracking\", \"@ember-compat/tracked-built-ins\", \"discourse/lib/array-tools\", \"discourse/lib/get-owner\", \"discourse/lib/get-url\", \"discourse/lib/later\", \"discourse/lib/text\", \"discourse/lib/tracked-tools\", \"discourse/models/bookmark\", \"discourse/models/user\", \"discourse/plugins/chat/discourse/lib/transform-auto-links\", \"discourse/plugins/chat/discourse/models/chat-message-reaction\"], function (_exports, _tracking, _trackedBuiltIns, _arrayTools, _getOwner, _getUrl, _later, _text, _trackedTools, _bookmark3, _user3, _transformAutoLinks, _chatMessageReaction) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatMessage {\n    static cookFunction = null;\n    static create(channel, args = {}) {\n      return new ChatMessage(channel, args);\n    }\n    static createDraftMessage(channel, args = {}) {\n      args.draft = true;\n      return ChatMessage.create(channel, args);\n    }\n    static {\n      dt7948.g(this.prototype, \"id\", [_tracking.tracked]);\n    }\n    #id = (dt7948.i(this, \"id\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"error\", [_tracking.tracked]);\n    }\n    #error = (dt7948.i(this, \"error\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"selected\", [_tracking.tracked]);\n    }\n    #selected = (dt7948.i(this, \"selected\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"channel\", [_tracking.tracked]);\n    }\n    #channel = (dt7948.i(this, \"channel\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"staged\", [_tracking.tracked]);\n    }\n    #staged = (dt7948.i(this, \"staged\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"processed\", [_tracking.tracked]);\n    }\n    #processed = (dt7948.i(this, \"processed\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"draftSaved\", [_tracking.tracked]);\n    }\n    #draftSaved = (dt7948.i(this, \"draftSaved\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"draft\", [_tracking.tracked]);\n    }\n    #draft = (dt7948.i(this, \"draft\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"createdAt\", [_tracking.tracked]);\n    }\n    #createdAt = (dt7948.i(this, \"createdAt\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"uploads\", [_tracking.tracked]);\n    }\n    #uploads = (dt7948.i(this, \"uploads\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"excerpt\", [_tracking.tracked]);\n    }\n    #excerpt = (dt7948.i(this, \"excerpt\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"reviewableId\", [_tracking.tracked]);\n    }\n    #reviewableId = (dt7948.i(this, \"reviewableId\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"user\", [_tracking.tracked]);\n    }\n    #user = (dt7948.i(this, \"user\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"inReplyTo\", [_tracking.tracked]);\n    }\n    #inReplyTo = (dt7948.i(this, \"inReplyTo\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"expanded\", [_tracking.tracked]);\n    }\n    #expanded = (dt7948.i(this, \"expanded\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"bookmark\", [_tracking.tracked]);\n    }\n    #bookmark = (dt7948.i(this, \"bookmark\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"userFlagStatus\", [_tracking.tracked]);\n    }\n    #userFlagStatus = (dt7948.i(this, \"userFlagStatus\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"hidden\", [_tracking.tracked]);\n    }\n    #hidden = (dt7948.i(this, \"hidden\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"version\", [_tracking.tracked], function () {\n        return 0;\n      });\n    }\n    #version = (dt7948.i(this, \"version\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"edited\", [_tracking.tracked]);\n    }\n    #edited = (dt7948.i(this, \"edited\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"editing\", [_tracking.tracked]);\n    }\n    #editing = (dt7948.i(this, \"editing\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatWebhookEvent\", [_tracking.tracked]);\n    }\n    #chatWebhookEvent = (dt7948.i(this, \"chatWebhookEvent\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"mentionWarning\", [_tracking.tracked]);\n    }\n    #mentionWarning = (dt7948.i(this, \"mentionWarning\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"availableFlags\", [_tracking.tracked]);\n    }\n    #availableFlags = (dt7948.i(this, \"availableFlags\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"highlighted\", [_tracking.tracked]);\n    }\n    #highlighted = (dt7948.i(this, \"highlighted\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"firstOfResults\", [_tracking.tracked]);\n    }\n    #firstOfResults = (dt7948.i(this, \"firstOfResults\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"message\", [_tracking.tracked]);\n    }\n    #message = (dt7948.i(this, \"message\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"manager\", [_tracking.tracked]);\n    }\n    #manager = (dt7948.i(this, \"manager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"deletedById\", [_tracking.tracked]);\n    }\n    #deletedById = (dt7948.i(this, \"deletedById\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"streaming\", [_tracking.tracked]);\n    }\n    #streaming = (dt7948.i(this, \"streaming\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"pinned\", [_tracking.tracked]);\n    }\n    #pinned = (dt7948.i(this, \"pinned\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"reactions\", [_trackedTools.autoTrackedArray]);\n    }\n    #reactions = (dt7948.i(this, \"reactions\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"_deletedAt\", [_tracking.tracked]);\n    }\n    #_deletedAt = (dt7948.i(this, \"_deletedAt\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"_cooked\", [_tracking.tracked]);\n    }\n    #_cooked = (dt7948.i(this, \"_cooked\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"_thread\", [_tracking.tracked]);\n    }\n    #_thread = (dt7948.i(this, \"_thread\"), void 0);\n    constructor(channel, args = {}) {\n      this.id = args.id;\n      this.channel = channel;\n      this.streaming = args.streaming;\n      this.manager = args.manager;\n      this.draftSaved = args.draftSaved ?? args.draft_saved ?? false;\n      this.firstOfResults = args.firstOfResults ?? args.first_of_results ?? false;\n      this.staged = args.staged ?? false;\n      this.processed = args.processed ?? true;\n      this.edited = args.edited ?? false;\n      this.editing = args.editing ?? false;\n      this.availableFlags = args.availableFlags ?? args.available_flags;\n      this.hidden = args.hidden ?? false;\n      this.chatWebhookEvent = args.chatWebhookEvent ?? args.chat_webhook_event;\n      this.createdAt = args.created_at ? new Date(args.created_at) : new Date(args.createdAt);\n      this.deletedById = args.deletedById || args.deleted_by_id;\n      this._deletedAt = args.deletedAt || args.deleted_at;\n      this.expanded = this.hidden || this._deletedAt ? false : args.expanded ?? true;\n      this.excerpt = args.excerpt;\n      this.reviewableId = args.reviewableId ?? args.reviewable_id;\n      this.userFlagStatus = args.userFlagStatus ?? args.user_flag_status;\n      this.draft = args.draft;\n      this.message = args.message ?? \"\";\n      this._cooked = args.cooked ?? \"\";\n      this.inReplyTo = args.inReplyTo ?? (args.in_reply_to ?? args.replyToMsg ? ChatMessage.create(channel, args.in_reply_to ?? args.replyToMsg) : null);\n      this.reactions = this.#initChatMessageReactionModel(args.reactions);\n      this.uploads = new _trackedBuiltIns.TrackedArray(args.uploads || []);\n      this.user = this.#initUserModel(args.user);\n      this.bookmark = args.bookmark ? _bookmark3.default.create(args.bookmark) : null;\n      this.mentionedUsers = this.#initMentionedUsers(args.mentioned_users);\n      this.blocks = args.blocks;\n      this.threadTitle = args.thread_title;\n      this.threadId = args.thread_id;\n      if (args.thread) {\n        this.thread = args.thread;\n      }\n      this.pinned = args.pinned ?? false;\n    }\n    get url() {\n      if (this.threadId) {\n        return (0, _getUrl.default)(`/chat/c/-/${this.channel.id}/t/${this.threadId}/${this.id}`);\n      }\n      return (0, _getUrl.default)(`/chat/c/-/${this.channel.id}/${this.id}`);\n    }\n    get persisted() {\n      return !!this.id && !this.staged;\n    }\n    get replyable() {\n      return !this.staged && !this.error;\n    }\n    get editable() {\n      return !this.staged && !this.error;\n    }\n    get thread() {\n      return this._thread;\n    }\n    set thread(thread) {\n      if (!thread) {\n        this._thread = null;\n        return;\n      }\n      this._thread = this.channel.threadsManager.add(this.channel, thread, {\n        replace: true\n      });\n    }\n    get deletedAt() {\n      return this._deletedAt;\n    }\n    set deletedAt(value) {\n      this._deletedAt = value;\n      this.incrementVersion();\n    }\n    get cooked() {\n      return this._cooked;\n    }\n    set cooked(newCooked) {\n      // some markdown is cooked differently on the server-side, e.g.\n      // quotes, avatar images etc.\n      if (newCooked !== this._cooked) {\n        this._cooked = newCooked;\n        this.incrementVersion();\n      }\n    }\n    async cook() {\n      if (this.isDestroyed || this.isDestroying) {\n        return;\n      }\n      await this.#ensureCookFunctionInitialized();\n      this.cooked = ChatMessage.cookFunction(this.message);\n    }\n    get read() {\n      return this.channel.currentUserMembership?.lastReadMessageId >= this.id;\n    }\n    get isOriginalThreadMessage() {\n      return this.thread?.originalMessage?.id === this.id;\n    }\n    get index() {\n      return this.manager?.messages?.indexOf(this);\n    }\n    static {\n      dt7948.n(this.prototype, \"index\", [_tracking.cached]);\n    }\n    get previousMessage() {\n      return this.manager?.messages?.[this.index - 1];\n    }\n    static {\n      dt7948.n(this.prototype, \"previousMessage\", [_tracking.cached]);\n    }\n    get nextMessage() {\n      return this.manager?.messages?.[this.index + 1];\n    }\n    static {\n      dt7948.n(this.prototype, \"nextMessage\", [_tracking.cached]);\n    }\n    highlight() {\n      this.highlighted = true;\n      (0, _later.default)(() => {\n        if (this.isDestroying || this.isDestroyed) {\n          return;\n        }\n        this.highlighted = false;\n      }, 2000);\n    }\n    incrementVersion() {\n      this.version++;\n    }\n    async parseMentions() {\n      return await (0, _text.parseMentions)(this.message, this.#markdownOptions);\n    }\n    toJSONDraft() {\n      if (this.message?.length === 0 && this.uploads?.length === 0 && !this.inReplyTo) {\n        return null;\n      }\n      const data = {};\n      if (this.uploads?.length > 0) {\n        data.uploads = this.uploads;\n      }\n      if (this.message?.length > 0) {\n        data.message = this.message;\n      }\n      if (this.inReplyTo) {\n        data.replyToMsg = {\n          id: this.inReplyTo.id,\n          excerpt: this.inReplyTo.excerpt,\n          user: {\n            id: this.inReplyTo.user.id,\n            name: this.inReplyTo.user.name,\n            avatar_template: this.inReplyTo.user.avatar_template,\n            username: this.inReplyTo.user.username\n          }\n        };\n      }\n      if (this.editing) {\n        data.editing = true;\n        data.id = this.id;\n        data.excerpt = this.excerpt;\n      }\n      return JSON.stringify(data);\n    }\n    react(emoji, action, actor, currentUserId) {\n      const selfReaction = actor.id === currentUserId;\n      const existingReaction = this.reactions.find(reaction => reaction.emoji === emoji);\n      if (existingReaction) {\n        if (action === \"add\") {\n          if (selfReaction && existingReaction.reacted) {\n            return;\n          }\n\n          // we might receive a message bus event while loading a channel who would\n          // already have the reaction added to the message\n          if (existingReaction.users.find(user => user.id === actor.id)) {\n            return;\n          }\n          existingReaction.count = existingReaction.count + 1;\n          if (selfReaction) {\n            existingReaction.reacted = true;\n          }\n          existingReaction.users.push(actor);\n        } else {\n          const existingUserReaction = existingReaction.users.find(user => user.id === actor.id);\n          if (!existingUserReaction) {\n            return;\n          }\n          if (selfReaction) {\n            existingReaction.reacted = false;\n          }\n          if (existingReaction.count === 1) {\n            (0, _arrayTools.removeValueFromArray)(this.reactions, existingReaction);\n          } else {\n            existingReaction.count = existingReaction.count - 1;\n            (0, _arrayTools.removeValueFromArray)(existingReaction.users, existingUserReaction);\n          }\n        }\n      } else {\n        if (action === \"add\") {\n          this.reactions.push(_chatMessageReaction.default.create({\n            count: 1,\n            emoji,\n            reacted: selfReaction,\n            users: [actor]\n          }));\n        }\n      }\n    }\n    async #ensureCookFunctionInitialized() {\n      if (ChatMessage.cookFunction) {\n        return;\n      }\n      const cookFunction = await (0, _text.generateCookFunction)(this.#markdownOptions);\n      ChatMessage.cookFunction = raw => {\n        return (0, _transformAutoLinks.default)(cookFunction(raw));\n      };\n    }\n    get #markdownOptions() {\n      const site = (0, _getOwner.getOwnerWithFallback)(this).lookup(\"service:site\");\n      return {\n        featuresOverride: site.markdown_additional_options?.chat?.limited_pretty_text_features,\n        markdownItRules: site.markdown_additional_options?.chat?.limited_pretty_text_markdown_rules,\n        hashtagTypesInPriorityOrder: site.hashtag_configurations?.[\"chat-composer\"],\n        hashtagIcons: site.hashtag_icons\n      };\n    }\n    #initChatMessageReactionModel(reactions = []) {\n      return reactions.map(reaction => _chatMessageReaction.default.create(reaction));\n    }\n    #initMentionedUsers(mentionedUsers) {\n      const map = new Map();\n      if (mentionedUsers) {\n        mentionedUsers.forEach(userData => {\n          const user = _user3.default.create(userData);\n          map.set(user.id, user);\n        });\n      }\n      return map;\n    }\n    #initUserModel(user) {\n      if (!user || user instanceof _user3.default) {\n        return user;\n      }\n      return _user3.default.create(user);\n    }\n  }\n  _exports.default = ChatMessage;\n});","define(\"discourse/plugins/chat/discourse/models/chat-notice\", [\"exports\", \"@glimmer/tracking\"], function (_exports, _tracking) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatNotice {\n    static create(args = {}) {\n      return new ChatNotice(args);\n    }\n    static {\n      dt7948.g(this.prototype, \"channelId\", [_tracking.tracked]);\n    }\n    #channelId = (dt7948.i(this, \"channelId\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"textContent\", [_tracking.tracked]);\n    }\n    #textContent = (dt7948.i(this, \"textContent\"), void 0);\n    constructor(args = {}) {\n      this.channelId = args.channel_id;\n      this.textContent = args.text_content;\n      this.type = args.notice_type;\n      this.data = args.data;\n    }\n  }\n  _exports.default = ChatNotice;\n});","define(\"discourse/plugins/chat/discourse/models/chat-thread-preview\", [\"exports\", \"@glimmer/tracking\"], function (_exports, _tracking) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatThreadPreview {\n    static create(args = {}) {\n      return new ChatThreadPreview(args);\n    }\n    static {\n      dt7948.g(this.prototype, \"replyCount\", [_tracking.tracked]);\n    }\n    #replyCount = (dt7948.i(this, \"replyCount\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"lastReplyId\", [_tracking.tracked]);\n    }\n    #lastReplyId = (dt7948.i(this, \"lastReplyId\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"lastReplyCreatedAt\", [_tracking.tracked]);\n    }\n    #lastReplyCreatedAt = (dt7948.i(this, \"lastReplyCreatedAt\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"lastReplyExcerpt\", [_tracking.tracked]);\n    }\n    #lastReplyExcerpt = (dt7948.i(this, \"lastReplyExcerpt\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"lastReplyUser\", [_tracking.tracked]);\n    }\n    #lastReplyUser = (dt7948.i(this, \"lastReplyUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"participantCount\", [_tracking.tracked]);\n    }\n    #participantCount = (dt7948.i(this, \"participantCount\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"participantUsers\", [_tracking.tracked]);\n    }\n    #participantUsers = (dt7948.i(this, \"participantUsers\"), void 0);\n    constructor(args) {\n      this.update(args || {});\n    }\n    get otherParticipantCount() {\n      return this.participantCount - this.participantUsers.length;\n    }\n    update(args = {}) {\n      this.replyCount = args.reply_count ?? args.replyCount ?? 0;\n      this.lastReplyId = args.last_reply_id ?? args.lastReplyId;\n      this.lastReplyCreatedAt = new Date(args.last_reply_created_at ?? args.lastReplyCreatedAt);\n      this.lastReplyExcerpt = args.last_reply_excerpt ?? args.lastReplyExcerpt;\n      this.participantCount = args.participant_count ?? args.participantCount ?? 0;\n\n      // cheap trick to avoid avatars flickering\n      const lastReplyUser = args.last_reply_user ?? args.lastReplyUser;\n      if (lastReplyUser?.id !== this.lastReplyUser?.id) {\n        this.lastReplyUser = lastReplyUser;\n      }\n\n      // cheap trick to avoid avatars flickering\n      const participantUsers = args.participant_users ?? args.participantUsers ?? [];\n      if (participantUsers?.map(u => u.id).join(\",\") !== this.participantUsers?.map(u => u.id).join(\",\")) {\n        this.participantUsers = participantUsers;\n      }\n    }\n  }\n  _exports.default = ChatThreadPreview;\n});","define(\"discourse/plugins/chat/discourse/models/chat-thread\", [\"exports\", \"@glimmer/tracking\", \"pretty-text/guid\", \"discourse/lib/get-owner\", \"discourse/plugins/chat/discourse/lib/chat-messages-manager\", \"discourse/plugins/chat/discourse/models/chat-message\", \"discourse/plugins/chat/discourse/models/chat-thread-preview\", \"discourse/plugins/chat/discourse/models/chat-tracking-state\", \"discourse/plugins/chat/discourse/models/user-chat-thread-membership\"], function (_exports, _tracking3, _guid, _getOwner, _chatMessagesManager, _chatMessage, _chatThreadPreview, _chatTrackingState, _userChatThreadMembership) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _exports.THREAD_STATUSES = void 0;\n  const THREAD_STATUSES = _exports.THREAD_STATUSES = {\n    open: \"open\",\n    readOnly: \"read_only\",\n    closed: \"closed\",\n    archived: \"archived\"\n  };\n  class ChatThread {\n    static create(channel, args = {}) {\n      return new ChatThread(channel, args);\n    }\n    static {\n      dt7948.g(this.prototype, \"id\", [_tracking3.tracked]);\n    }\n    #id = (dt7948.i(this, \"id\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"title\", [_tracking3.tracked]);\n    }\n    #title = (dt7948.i(this, \"title\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"status\", [_tracking3.tracked]);\n    }\n    #status = (dt7948.i(this, \"status\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"draft\", [_tracking3.tracked]);\n    }\n    #draft = (dt7948.i(this, \"draft\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"staged\", [_tracking3.tracked]);\n    }\n    #staged = (dt7948.i(this, \"staged\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"channel\", [_tracking3.tracked]);\n    }\n    #channel = (dt7948.i(this, \"channel\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"originalMessage\", [_tracking3.tracked]);\n    }\n    #originalMessage = (dt7948.i(this, \"originalMessage\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"lastMessageId\", [_tracking3.tracked]);\n    }\n    #lastMessageId = (dt7948.i(this, \"lastMessageId\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"threadMessageBusLastId\", [_tracking3.tracked]);\n    }\n    #threadMessageBusLastId = (dt7948.i(this, \"threadMessageBusLastId\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"replyCount\", [_tracking3.tracked]);\n    }\n    #replyCount = (dt7948.i(this, \"replyCount\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"tracking\", [_tracking3.tracked]);\n    }\n    #tracking = (dt7948.i(this, \"tracking\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUserMembership\", [_tracking3.tracked]);\n    }\n    #currentUserMembership = (dt7948.i(this, \"currentUserMembership\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"preview\", [_tracking3.tracked]);\n    }\n    #preview = (dt7948.i(this, \"preview\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"force\", [_tracking3.tracked]);\n    }\n    #force = (dt7948.i(this, \"force\"), void 0);\n    messagesManager = new _chatMessagesManager.default((0, _getOwner.getOwnerWithFallback)(this));\n    constructor(channel, args = {}) {\n      this.id = args.id;\n      this.channel = channel;\n      this.status = args.status;\n      this.staged = args.staged;\n      this.replyCount = args.reply_count;\n      this.force = args.force;\n      this.originalMessage = args.original_message ? _chatMessage.default.create(channel, args.original_message) : null;\n      if (this.originalMessage) {\n        this.originalMessage.thread = this;\n      }\n      this.lastMessageId = args.last_message_id;\n      this.title = args.title;\n      if (args.current_user_membership) {\n        this.currentUserMembership = _userChatThreadMembership.default.create(args.current_user_membership);\n      }\n      this.tracking = new _chatTrackingState.default((0, _getOwner.getOwnerWithFallback)(this));\n      this.preview = _chatThreadPreview.default.create(args.preview);\n    }\n    resetDraft(user) {\n      this.draft = _chatMessage.default.createDraftMessage(this.channel, {\n        user,\n        thread: this\n      });\n    }\n    async stageMessage(message) {\n      message.id = (0, _guid.default)();\n      message.staged = true;\n      message.processed = false;\n      message.draft = false;\n      message.createdAt = new Date();\n      message.thread = this;\n      this.messagesManager.addMessages([message]);\n      message.manager = this.messagesManager;\n    }\n    get routeModels() {\n      return [...this.channel.routeModels, this.id];\n    }\n  }\n  _exports.default = ChatThread;\n});","define(\"discourse/plugins/chat/discourse/models/chat-tracking-state\", [\"exports\", \"@glimmer/tracking\", \"@ember/owner\", \"@ember/service\"], function (_exports, _tracking, _owner, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatTrackingState {\n    static {\n      dt7948.g(this.prototype, \"chatTrackingStateManager\", [_service.service]);\n    }\n    #chatTrackingStateManager = (dt7948.i(this, \"chatTrackingStateManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"_unreadCount\", [_tracking.tracked]);\n    }\n    #_unreadCount = (dt7948.i(this, \"_unreadCount\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"_mentionCount\", [_tracking.tracked]);\n    }\n    #_mentionCount = (dt7948.i(this, \"_mentionCount\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"_watchedThreadsUnreadCount\", [_tracking.tracked]);\n    }\n    #_watchedThreadsUnreadCount = (dt7948.i(this, \"_watchedThreadsUnreadCount\"), void 0);\n    constructor(owner, params = {}) {\n      (0, _owner.setOwner)(this, owner);\n      this._unreadCount = params.unreadCount ?? 0;\n      this._mentionCount = params.mentionCount ?? 0;\n      this._watchedThreadsUnreadCount = params.watchedThreadsUnreadCount ?? 0;\n    }\n    reset() {\n      this._unreadCount = 0;\n      this._mentionCount = 0;\n      this._watchedThreadsUnreadCount = 0;\n    }\n    get unreadCount() {\n      return this._unreadCount;\n    }\n    set unreadCount(value) {\n      const valueChanged = this._unreadCount !== value;\n      if (valueChanged) {\n        this._unreadCount = value;\n        this.chatTrackingStateManager.triggerNotificationsChanged();\n      }\n    }\n    get mentionCount() {\n      return this._mentionCount;\n    }\n    set mentionCount(value) {\n      const valueChanged = this._mentionCount !== value;\n      if (valueChanged) {\n        this._mentionCount = value;\n        this.chatTrackingStateManager.triggerNotificationsChanged();\n      }\n    }\n    get watchedThreadsUnreadCount() {\n      return this._watchedThreadsUnreadCount;\n    }\n    set watchedThreadsUnreadCount(value) {\n      const valueChanged = this._watchedThreadsUnreadCount !== value;\n      if (valueChanged) {\n        this._watchedThreadsUnreadCount = value;\n        this.chatTrackingStateManager.triggerNotificationsChanged();\n      }\n    }\n  }\n  _exports.default = ChatTrackingState;\n});","define(\"discourse/plugins/chat/discourse/models/user-chat-channel-membership\", [\"exports\", \"@glimmer/tracking\", \"discourse/models/user\"], function (_exports, _tracking, _user3) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class UserChatChannelMembership {\n    static create(args = {}) {\n      return new UserChatChannelMembership(args);\n    }\n    static {\n      dt7948.g(this.prototype, \"following\", [_tracking.tracked]);\n    }\n    #following = (dt7948.i(this, \"following\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"muted\", [_tracking.tracked]);\n    }\n    #muted = (dt7948.i(this, \"muted\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"notificationLevel\", [_tracking.tracked]);\n    }\n    #notificationLevel = (dt7948.i(this, \"notificationLevel\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"lastReadMessageId\", [_tracking.tracked]);\n    }\n    #lastReadMessageId = (dt7948.i(this, \"lastReadMessageId\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"lastViewedAt\", [_tracking.tracked]);\n    }\n    #lastViewedAt = (dt7948.i(this, \"lastViewedAt\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"lastViewedPinsAt\", [_tracking.tracked]);\n    }\n    #lastViewedPinsAt = (dt7948.i(this, \"lastViewedPinsAt\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"starred\", [_tracking.tracked]);\n    }\n    #starred = (dt7948.i(this, \"starred\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"hasUnseenPins\", [_tracking.tracked]);\n    }\n    #hasUnseenPins = (dt7948.i(this, \"hasUnseenPins\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"user\", [_tracking.tracked]);\n    }\n    #user = (dt7948.i(this, \"user\"), void 0);\n    constructor(args = {}) {\n      this.following = args.following;\n      this.muted = args.muted;\n      this.notificationLevel = args.notification_level;\n      this.lastReadMessageId = args.last_read_message_id;\n      this.lastViewedAt = new Date(args.last_viewed_at);\n      this.lastViewedPinsAt = args.last_viewed_pins_at ? new Date(args.last_viewed_pins_at) : null;\n      this.starred = args.starred;\n      this.hasUnseenPins = args.has_unseen_pins;\n      this.user = this.#initUserModel(args.user);\n    }\n    #initUserModel(user) {\n      if (!user || user instanceof _user3.default) {\n        return user;\n      }\n      return _user3.default.create(user);\n    }\n  }\n  _exports.default = UserChatChannelMembership;\n});","define(\"discourse/plugins/chat/discourse/models/user-chat-thread-membership\", [\"exports\", \"@glimmer/tracking\", \"discourse/lib/notification-levels\"], function (_exports, _tracking, _notificationLevels) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class UserChatThreadMembership {\n    static create(args = {}) {\n      return new UserChatThreadMembership(args);\n    }\n    static {\n      dt7948.g(this.prototype, \"lastReadMessageId\", [_tracking.tracked]);\n    }\n    #lastReadMessageId = (dt7948.i(this, \"lastReadMessageId\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"notificationLevel\", [_tracking.tracked]);\n    }\n    #notificationLevel = (dt7948.i(this, \"notificationLevel\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"threadTitlePromptSeen\", [_tracking.tracked]);\n    }\n    #threadTitlePromptSeen = (dt7948.i(this, \"threadTitlePromptSeen\"), void 0);\n    constructor(args = {}) {\n      this.lastReadMessageId = args.last_read_message_id;\n      this.notificationLevel = args.notification_level;\n      this.threadTitlePromptSeen = args.thread_title_prompt_seen;\n    }\n    get isQuiet() {\n      return this.notificationLevel === _notificationLevels.NotificationLevels.REGULAR || this.notificationLevel === _notificationLevels.NotificationLevels.MUTED;\n    }\n  }\n  _exports.default = UserChatThreadMembership;\n});","define(\"discourse/plugins/chat/discourse/modifiers/chat/later-fn\", [\"exports\", \"@ember/destroyable\", \"@ember/runloop\", \"ember-modifier\", \"discourse/lib/later\"], function (_exports, _destroyable, _runloop, _emberModifier, _later) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatLaterFn extends _emberModifier.default {\n    constructor(owner, args) {\n      super(owner, args);\n      (0, _destroyable.registerDestructor)(this, instance => instance.cleanup());\n    }\n    modify(element, [fn, delay]) {\n      this.handler = (0, _later.default)(() => {\n        fn?.(element);\n      }, delay);\n    }\n    cleanup() {\n      (0, _runloop.cancel)(this.handler);\n    }\n  }\n  _exports.default = ChatLaterFn;\n});","define(\"discourse/plugins/chat/discourse/modifiers/chat/on-animation-end\", [\"exports\", \"@ember/destroyable\", \"@ember/runloop\", \"ember-modifier\", \"discourse/lib/decorators\"], function (_exports, _destroyable, _runloop, _emberModifier, _decorators) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatOnAnimationEnd extends _emberModifier.default {\n    constructor(owner, args) {\n      super(owner, args);\n      (0, _destroyable.registerDestructor)(this, instance => instance.cleanup());\n    }\n    modify(element, [fn]) {\n      this.element = element;\n      this.fn = fn;\n      this.handler = (0, _runloop.schedule)(\"afterRender\", () => {\n        this.element.addEventListener(\"animationend\", this.handleAnimationEnd);\n      });\n    }\n    handleAnimationEnd() {\n      if (this.isDestroying || this.isDestroyed) {\n        return;\n      }\n      this.fn?.(this.element);\n    }\n    static {\n      dt7948.n(this.prototype, \"handleAnimationEnd\", [_decorators.bind]);\n    }\n    cleanup() {\n      (0, _runloop.cancel)(this.handler);\n      this.element?.removeEventListener(\"animationend\", this.handleAnimationEnd);\n    }\n  }\n  _exports.default = ChatOnAnimationEnd;\n});","define(\"discourse/plugins/chat/discourse/modifiers/chat/on-long-press\", [\"exports\", \"@ember/destroyable\", \"@ember/runloop\", \"@ember/service\", \"ember-modifier\", \"discourse/lib/decorators\", \"discourse/lib/later\"], function (_exports, _destroyable, _runloop, _service, _emberModifier, _decorators, _later) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function cancelEvent(event) {\n    event.stopPropagation();\n  }\n  class ChatOnLongPress extends _emberModifier.default {\n    static {\n      dt7948.g(this.prototype, \"capabilities\", [_service.service]);\n    }\n    #capabilities = (dt7948.i(this, \"capabilities\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    constructor(owner, args) {\n      super(owner, args);\n      (0, _destroyable.registerDestructor)(this, instance => instance.cleanup());\n    }\n    get enabled() {\n      return this.capabilities.touch && this.site.mobileView;\n    }\n    modify(element, [onLongPressStart, onLongPressEnd, onLongPressCancel]) {\n      if (!this.enabled) {\n        return;\n      }\n      this.element = element;\n      this.onLongPressStart = onLongPressStart || (() => {});\n      this.onLongPressEnd = onLongPressEnd || (() => {});\n      this.onLongPressCancel = onLongPressCancel || (() => {});\n      this.element.addEventListener(\"touchstart\", this.handleTouchStart, {\n        passive: true\n      });\n    }\n    onCancel() {\n      (0, _runloop.cancel)(this.timeout);\n      if (this.capabilities.touch) {\n        this.element.removeEventListener(\"touchmove\", this.onCancel, {\n          passive: true\n        });\n        this.element.removeEventListener(\"touchend\", this.onCancel);\n        this.element.removeEventListener(\"touchcancel\", this.onCancel);\n      }\n      this.onLongPressCancel(this.element);\n    }\n    static {\n      dt7948.n(this.prototype, \"onCancel\", [_decorators.bind]);\n    }\n    handleTouchStart(event) {\n      if (event.touches.length > 1) {\n        this.onCancel();\n        return;\n      }\n      this.onLongPressStart(this.element, event);\n      this.element.addEventListener(\"touchmove\", this.onCancel, {\n        passive: true\n      });\n      this.element.addEventListener(\"touchend\", this.onCancel);\n      this.element.addEventListener(\"touchcancel\", this.onCancel);\n      this.timeout = (0, _later.default)(() => {\n        if (this.isDestroying || this.isDestroyed) {\n          return;\n        }\n        this.element.addEventListener(\"touchend\", cancelEvent, {\n          once: true,\n          passive: true\n        });\n        this.onLongPressEnd(this.element, event);\n      }, 400);\n    }\n    static {\n      dt7948.n(this.prototype, \"handleTouchStart\", [_decorators.bind]);\n    }\n    cleanup() {\n      if (!this.enabled) {\n        return;\n      }\n      this.element.removeEventListener(\"touchstart\", this.handleTouchStart, {\n        passive: true\n      });\n      this.onCancel();\n    }\n  }\n  _exports.default = ChatOnLongPress;\n});","define(\"discourse/plugins/chat/discourse/modifiers/chat/on-scroll\", [\"exports\", \"@ember/destroyable\", \"@ember/runloop\", \"ember-modifier\", \"discourse/lib/decorators\"], function (_exports, _destroyable, _runloop, _emberModifier, _decorators) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatOnScroll extends _emberModifier.default {\n    constructor(owner, args) {\n      super(owner, args);\n      (0, _destroyable.registerDestructor)(this, instance => instance.cleanup());\n    }\n    modify(element, [callback, options]) {\n      this.element = element;\n      this.callback = callback;\n      this.options = options;\n      this.element.addEventListener(\"scroll\", this.throttledCallback, {\n        passive: true\n      });\n    }\n    throttledCallback(event) {\n      this.throttledHandler = (0, _runloop.throttle)(this, this.callback, event, this.options.delay ?? 100, this.options.immediate ?? false);\n    }\n    static {\n      dt7948.n(this.prototype, \"throttledCallback\", [_decorators.bind]);\n    }\n    cleanup() {\n      (0, _runloop.cancel)(this.throttledHandler);\n      this.element.removeEventListener(\"scroll\", this.throttledCallback);\n    }\n  }\n  _exports.default = ChatOnScroll;\n});","define(\"discourse/plugins/chat/discourse/modifiers/chat/resizable-node\", [\"exports\", \"@ember/destroyable\", \"@ember/runloop\", \"ember-modifier\", \"discourse/lib/decorators\"], function (_exports, _destroyable, _runloop, _emberModifier, _decorators) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const MINIMUM_SIZE = 20;\n  class ResizableNode extends _emberModifier.default {\n    element = null;\n    resizerSelector = null;\n    didResizeContainer = null;\n    options = null;\n    _originalWidth = 0;\n    _originalHeight = 0;\n    _originalX = 0;\n    _originalY = 0;\n    _originalPageX = 0;\n    _originalPageY = 0;\n    constructor(owner, args) {\n      super(owner, args);\n      (0, _destroyable.registerDestructor)(this, instance => instance.cleanup());\n    }\n    modify(element, [resizerSelector, didResizeContainer, options = {}]) {\n      this.resizerSelector = resizerSelector;\n      this.element = element;\n      this.didResizeContainer = didResizeContainer;\n      this.options = Object.assign({\n        vertical: true,\n        horizontal: true,\n        position: true,\n        mutate: true,\n        resetOnWindowResize: false\n      }, options);\n      this.element.querySelector(this.resizerSelector)?.addEventListener(\"touchstart\", this._startResize);\n      this.element.querySelector(this.resizerSelector)?.addEventListener(\"mousedown\", this._startResize);\n      window.addEventListener(\"resize\", this._resizeWindow);\n    }\n    cleanup() {\n      this.element.querySelector(this.resizerSelector)?.removeEventListener(\"touchstart\", this._startResize);\n      this.element.querySelector(this.resizerSelector)?.removeEventListener(\"mousedown\", this._startResize);\n      window.removeEventListener(\"resize\", this._resizeWindow);\n      (0, _runloop.cancel)(this._throttledResizeHandler);\n    }\n    _startResize(event) {\n      event.preventDefault();\n      this._minimumWidth = parseFloat(getComputedStyle(this.element, null).getPropertyValue(\"min-width\").replace(\"px\", \"\") || MINIMUM_SIZE);\n      this._minimumHeight = parseFloat(getComputedStyle(this.element, null).getPropertyValue(\"min-height\").replace(\"px\", \"\") || MINIMUM_SIZE);\n      this._originalWidth = parseFloat(getComputedStyle(this.element, null).getPropertyValue(\"width\").replace(\"px\", \"\"));\n      this._originalHeight = parseFloat(getComputedStyle(this.element, null).getPropertyValue(\"height\").replace(\"px\", \"\"));\n      this._originalX = this.element.getBoundingClientRect().left;\n      this._originalY = this.element.getBoundingClientRect().top;\n      this._originalPageX = this._eventValueForProperty(event, \"pageX\");\n      this._originalPageY = this._eventValueForProperty(event, \"pageY\");\n      window.addEventListener(\"touchmove\", this._resize);\n      window.addEventListener(\"touchend\", this._stopResize);\n      window.addEventListener(\"mousemove\", this._resize);\n      window.addEventListener(\"mouseup\", this._stopResize);\n    }\n\n    /*\n      The bulk of the logic is to calculate the new width and height of the element\n      based on the current position on page: width is calculated by subtracting\n      the difference between the current pageX and the original this._originalPageX\n      from the original this._originalWidth, and rounding up to the nearest integer.\n      height is calculated in a similar way using pageY and this._originalPageY.\n       In this example (B) is the current element top/left and (A) is x/y of the mouse after dragging:\n       A------\n      |     |\n      |  B--|\n      |  |  |\n      -------\n    */\n    static {\n      dt7948.n(this.prototype, \"_startResize\", [_decorators.bind]);\n    }\n    _resize(event) {\n      let width = this._originalWidth;\n      let diffWidth = this._eventValueForProperty(event, \"pageX\") - this._originalPageX;\n      if (document.documentElement.classList.contains(\"rtl\")) {\n        width = Math.ceil(width + diffWidth);\n      } else {\n        width = Math.ceil(width - diffWidth);\n      }\n      const height = Math.ceil(this._originalHeight - (this._eventValueForProperty(event, \"pageY\") - this._originalPageY));\n      const newStyle = {};\n      if (this.options.horizontal && width >= this._minimumWidth) {\n        newStyle.width = width + \"px\";\n        if (this.options.position) {\n          newStyle.left = Math.ceil(this._originalX + (this._eventValueForProperty(event, \"pageX\") - this._originalPageX)) + \"px\";\n        }\n      }\n      if (this.options.vertical && height >= this._minimumHeight) {\n        newStyle.height = height + \"px\";\n        if (this.options.position) {\n          newStyle.top = Math.ceil(this._originalY + (this._eventValueForProperty(event, \"pageY\") - this._originalPageY)) + \"px\";\n        }\n      }\n      if (this.options.mutate) {\n        Object.assign(this.element.style, newStyle);\n      }\n      const containerStyle = {};\n      const containerWidth = width >= this._minimumWidth ? width : this._minimumWidth;\n      if (containerWidth) {\n        containerStyle.width = containerWidth;\n      }\n      const containerHeight = height >= this._minimumHeight ? height : this._minimumHeight;\n      if (containerHeight) {\n        containerStyle.height = containerHeight;\n      }\n      this.didResizeContainer?.(this.element, containerStyle);\n    }\n    static {\n      dt7948.n(this.prototype, \"_resize\", [_decorators.bind]);\n    }\n    _resizeWindow(event) {\n      if (!this.options.resetOnWindowResize) {\n        return;\n      }\n      this._throttledResizeHandler = (0, _runloop.throttle)(this, this._resize, event, 100);\n    }\n    static {\n      dt7948.n(this.prototype, \"_resizeWindow\", [_decorators.bind]);\n    }\n    _stopResize() {\n      window.removeEventListener(\"touchmove\", this._resize);\n      window.removeEventListener(\"touchend\", this._stopResize);\n      window.removeEventListener(\"mousemove\", this._resize);\n      window.removeEventListener(\"mouseup\", this._stopResize);\n    }\n    static {\n      dt7948.n(this.prototype, \"_stopResize\", [_decorators.bind]);\n    }\n    _eventValueForProperty(event, property) {\n      if (event.changedTouches) {\n        return event.changedTouches[0][property];\n      } else {\n        return event[property];\n      }\n    }\n  }\n  _exports.default = ResizableNode;\n});","define(\"discourse/plugins/chat/discourse/modifiers/chat/scrollable-list\", [\"exports\", \"@ember/destroyable\", \"@ember/runloop\", \"ember-modifier\", \"discourse/lib/decorators\", \"discourse/lib/later\", \"discourse/plugins/chat/discourse/helpers/first-visible-message-id\"], function (_exports, _destroyable, _runloop, _emberModifier, _decorators, _later, _firstVisibleMessageId) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const UP = \"up\";\n  const DOWN = \"down\";\n  class ChatScrollableList extends _emberModifier.default {\n    constructor(owner, args) {\n      super(owner, args);\n      (0, _destroyable.registerDestructor)(this, instance => instance.cleanup());\n    }\n    modify(element, [options]) {\n      this.element = element;\n      this.options = options;\n      this.lastScrollTop = this.computeInitialScrollTop();\n      this.element.addEventListener(\"scroll\", this.handleScroll, {\n        passive: true\n      });\n      // listen for wheel events to detect scrolling even when at the top or bottom\n      this.element.addEventListener(\"wheel\", this.handleWheel, {\n        passive: true\n      });\n      this.throttleComputeScroll();\n    }\n    handleScroll() {\n      this.throttleComputeScroll();\n    }\n    static {\n      dt7948.n(this.prototype, \"handleScroll\", [_decorators.bind]);\n    }\n    handleWheel() {\n      this.throttleComputeScroll();\n    }\n    static {\n      dt7948.n(this.prototype, \"handleWheel\", [_decorators.bind]);\n    }\n    computeScroll() {\n      const scrollTop = this.element.scrollTop;\n      this.options.onScroll?.(this.computeState());\n      this.lastScrollTop = scrollTop;\n    }\n    static {\n      dt7948.n(this.prototype, \"computeScroll\", [_decorators.bind]);\n    }\n    throttleComputeScroll() {\n      (0, _runloop.cancel)(this.scrollTimer);\n      this.throttleTimer = (0, _runloop.throttle)(this, this.computeScroll, 50, true);\n      this.scrollTimer = (0, _later.default)(() => {\n        this.options.onScrollEnd?.(Object.assign(this.computeState(), {\n          firstVisibleId: (0, _firstVisibleMessageId.default)(this.element)\n        }));\n      }, this.options.delay || 250);\n    }\n    cleanup() {\n      (0, _runloop.cancel)(this.scrollTimer);\n      (0, _runloop.cancel)(this.throttleTimer);\n      this.element.removeEventListener(\"scroll\", this.handleScroll);\n      this.element.removeEventListener(\"wheel\", this.handleWheel);\n    }\n    computeState() {\n      const direction = this.computeScrollDirection();\n      const distanceToBottom = this.computeDistanceToBottom();\n      const distanceToTop = this.computeDistanceToTop();\n      return {\n        up: direction === UP,\n        down: direction === DOWN,\n        distanceToBottom,\n        distanceToTop,\n        atBottom: distanceToBottom.pixels <= 1,\n        atTop: distanceToTop.pixels <= 1\n      };\n    }\n    computeInitialScrollTop() {\n      if (this.options.reverse) {\n        return this.element.scrollHeight - this.element.clientHeight;\n      } else {\n        return this.element.scrollTop;\n      }\n    }\n    computeScrollTop() {\n      if (this.options.reverse) {\n        return this.element.scrollHeight - this.element.clientHeight - this.element.scrollTop;\n      } else {\n        return this.element.scrollTop;\n      }\n    }\n    computeDistanceToTop() {\n      let pixels;\n      const height = this.element.scrollHeight - this.element.clientHeight;\n      if (this.options.reverse) {\n        pixels = height - Math.abs(this.element.scrollTop);\n      } else {\n        pixels = Math.abs(this.element.scrollTop);\n      }\n      return {\n        pixels,\n        percentage: Math.round(pixels / height * 100)\n      };\n    }\n    computeDistanceToBottom() {\n      let pixels;\n      const height = this.element.scrollHeight - this.element.clientHeight;\n      if (this.options.reverse) {\n        pixels = -this.element.scrollTop;\n      } else {\n        pixels = height - Math.abs(this.element.scrollTop);\n      }\n      return {\n        pixels,\n        percentage: Math.round(pixels / height * 100)\n      };\n    }\n    computeScrollDirection() {\n      if (this.element.scrollTop === this.lastScrollTop) {\n        return null;\n      }\n      return this.element.scrollTop < this.lastScrollTop ? UP : DOWN;\n    }\n  }\n  _exports.default = ChatScrollableList;\n});","define(\"discourse/plugins/chat/discourse/modifiers/chat/track-message-separator-date\", [\"exports\", \"@ember/destroyable\", \"ember-modifier\"], function (_exports, _destroyable, _emberModifier) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const IS_PINNED_CLASS = \"is-pinned\";\n\n  /*\n    This modifier is used to track the date separator in the chat message list.\n    The trick is to have an element with `top: -1px` which will stop fully intersecting\n    as soon as it's scrolled a little bit.\n  */\n  class ChatTrackMessageSeparatorDate extends _emberModifier.default {\n    constructor(owner, args) {\n      super(owner, args);\n      (0, _destroyable.registerDestructor)(this, instance => instance.cleanup());\n    }\n    modify(element) {\n      this.intersectionObserver = new IntersectionObserver(([entry]) => {\n        if (entry.isIntersecting && entry.intersectionRatio < 1 && entry.boundingClientRect.y < entry.intersectionRect.y) {\n          entry.target.classList.add(IS_PINNED_CLASS);\n        } else {\n          entry.target.classList.remove(IS_PINNED_CLASS);\n        }\n      }, {\n        threshold: [0, 1]\n      });\n      this.intersectionObserver.observe(element);\n    }\n    cleanup() {\n      this.intersectionObserver?.disconnect();\n    }\n  }\n  _exports.default = ChatTrackMessageSeparatorDate;\n});","define(\"discourse/plugins/chat/discourse/modifiers/chat/track-message\", [\"exports\", \"@ember/destroyable\", \"ember-modifier\", \"discourse/lib/decorators\"], function (_exports, _destroyable, _emberModifier, _decorators) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatTrackMessage extends _emberModifier.default {\n    didEnterViewport = null;\n    didLeaveViewport = null;\n    constructor(owner, args) {\n      super(owner, args);\n      (0, _destroyable.registerDestructor)(this, instance => instance.cleanup());\n    }\n    modify(element, [didEnterViewport, didLeaveViewport]) {\n      this.didEnterViewport = didEnterViewport;\n      this.didLeaveViewport = didLeaveViewport;\n      this.intersectionObserver = new IntersectionObserver(this._intersectionObserverCallback, {\n        root: document,\n        threshold: 0\n      });\n      this.intersectionObserver.observe(element);\n    }\n    cleanup() {\n      this.intersectionObserver?.disconnect();\n    }\n    _intersectionObserverCallback(entries) {\n      entries.forEach(entry => {\n        if (entry.isIntersecting) {\n          this.didEnterViewport?.();\n        } else {\n          this.didLeaveViewport?.();\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"_intersectionObserverCallback\", [_decorators.bind]);\n    }\n  }\n  _exports.default = ChatTrackMessage;\n});","define(\"discourse/plugins/chat/discourse/pre-initializers/chat-plugin-api\", [\"exports\", \"discourse/lib/plugin-api\", \"discourse/plugins/chat/discourse/components/chat-message\", \"discourse/plugins/chat/discourse/lib/chat-composer-buttons\", \"discourse/plugins/chat/discourse/lib/chat-message-interactor\", \"discourse/plugins/chat/discourse/services/chat-state-manager\"], function (_exports, _pluginApi, _chatMessage, _chatComposerButtons, _chatMessageInteractor, _chatStateManager) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /**\n   * Class exposing the javascript API available to plugins and themes.\n   * @class PluginApi\n   */\n  /**\n   * Callback used to decorate a chat message\n   *\n   * @callback PluginApi~decorateChatMessageCallback\n   * @param {ChatMessage} chatMessage - model\n   * @param {HTMLElement} messageContainer - DOM node\n   * @param {ChatChannel} chatChannel - model\n   */\n  /**\n   * Callback used to decorate a chat message\n   *\n   * @callback PluginApi~chatDrawerStateCallback\n   * @param {Object} state\n   * @param {boolean} state.isDrawerActive - is the chat drawer active\n   * @param {boolean} state.isDrawerExpanded - is the chat drawer expanded\n   */\n  /**\n   * Decorate a chat message\n   *\n   * @memberof PluginApi\n   * @instance\n   * @function decorateChatMessage\n   * @param {PluginApi~decorateChatMessageCallback} decorator\n   * @example\n   *\n   * api.decorateChatMessage((chatMessage, messageContainer) => {\n   *   messageContainer.dataset.foo = chatMessage.id;\n   * });\n   */\n  /**\n   * Register a button in the chat composer\n   *\n   * @memberof PluginApi\n   * @instance\n   * @function registerChatComposerButton\n   * @param {Object} options\n   * @param {number} options.id - The id of the button\n   * @param {function} options.action - An action name or an anonymous function called when the button is pressed, eg: \"onFooClicked\" or `() => { console.log(\"clicked\") }`\n   * @param {string} options.icon - A valid font awesome icon name, eg: \"far fa-image\"\n   * @param {string} options.label - Text displayed on the button, a translatable key, eg: \"foo.bar\"\n   * @param {string} options.translatedLabel - Text displayed on the button, a string, eg: \"Add gifs\"\n   * @param {string} [options.position] - Can be \"inline\" or \"dropdown\", defaults to \"inline\"\n   * @param {string} [options.title] - Title attribute of the button, a translatable key, eg: \"foo.bar\"\n   * @param {string} [options.translatedTitle] - Title attribute of the button, a string, eg: \"Add gifs\"\n   * @param {string} [options.ariaLabel] - aria-label attribute of the button, a translatable key, eg: \"foo.bar\"\n   * @param {string} [options.translatedAriaLabel] - aria-label attribute of the button, a string, eg: \"Add gifs\"\n   * @param {string} [options.classNames] - Additional names to add to the button’s class attribute, eg: [\"foo\", \"bar\"]\n   * @param {boolean} [options.displayed] - Hide or show the button\n   * @param {boolean} [options.disabled] - Sets the disabled attribute on the button\n   * @param {number} [options.priority] - An integer defining the order of the buttons, higher comes first, eg: `700`\n   * @param {Array.<string>} [options.dependentKeys] - List of property names which should trigger a refresh of the buttons when changed, eg: `[\"foo.bar\", \"bar.baz\"]`\n   * @example\n   *\n   * api.registerChatComposerButton({\n   *   id: \"foo\",\n   *   displayed() {\n   *     return this.site.mobileView && this.canAttachUploads;\n   *   }\n   * });\n   */\n  /**\n   * Callback when the sate of the chat drawer changes\n   *\n   * @memberof PluginApi\n   * @instance\n   * @function addChatDrawerStateCallback\n   * @param {PluginApi~chatDrawerStateCallback} callback\n   * @example\n   *\n   * api.addChatDrawerStateCallback(({isDrawerExpanded, isDrawerActive}) => {\n   *   if (isDrawerActive && isDrawerExpanded) {\n   *     // do something\n   *   }\n   * });\n   */\n  /**\n   * Send a chat message, message or uploads must be provided\n   *\n   * @memberof PluginApi\n   * @instance\n   * @function sendChatMessage\n   * @param {number} channelId - The id of the channel\n   * @param {Object} options\n   * @param {string} [options.message] - The content of the message to send\n   * @param {string} [options.uploads] - A list of uploads to send\n   * @param {number} [options.threadId] - The thread id where the message should be sent\n   * @param {number} [options.inReplyToId] - The ID of the replied to  message\n   *\n   * @example\n   *\n   * api.sendChatMessage(\n   *   1,\n   *  { message: \"Hello world\", threadId: 2 }\n   * );\n   */\n  /**\n   * Removes secondary actions from the chat composer\n   *\n   * @memberof PluginApi\n   * @instance\n   * @function removeChatComposerSecondaryActions\n   * @param {...string} [1] - List of secondary action ids to remove, eg: `\"copyLink\", \"select\"\n   * @example\n   *\n   * api.removeChatComposerSecondaryActions(\"copyLink\", \"select\");\n   */\n  var _default = _exports.default = {\n    name: \"chat-plugin-api\",\n    after: \"inject-discourse-objects\",\n    initialize() {\n      (0, _pluginApi.withPluginApi)(api => {\n        const apiPrototype = Object.getPrototypeOf(api);\n        if (!apiPrototype.hasOwnProperty(\"decorateChatMessage\")) {\n          Object.defineProperty(apiPrototype, \"decorateChatMessage\", {\n            value(decorator) {\n              (0, _chatMessage.addChatMessageDecorator)(decorator);\n            }\n          });\n        }\n        if (!apiPrototype.hasOwnProperty(\"registerChatComposerButton\")) {\n          Object.defineProperty(apiPrototype, \"registerChatComposerButton\", {\n            value(button) {\n              (0, _chatComposerButtons.registerChatComposerButton)(button);\n            }\n          });\n        }\n        if (!apiPrototype.hasOwnProperty(\"addChatDrawerStateCallback\")) {\n          Object.defineProperty(apiPrototype, \"addChatDrawerStateCallback\", {\n            value(callback) {\n              (0, _chatStateManager.addChatDrawerStateCallback)(callback);\n            }\n          });\n        }\n        if (!apiPrototype.hasOwnProperty(\"sendChatMessage\")) {\n          Object.defineProperty(apiPrototype, \"sendChatMessage\", {\n            async value(channelId, options = {}) {\n              return this.container.lookup(\"service:chat-api\").sendMessage(channelId, {\n                thread_id: options.threadId,\n                in_reply_to_id: options.inReplyToId,\n                post_ids: options.postIds,\n                topic_id: options.topicId,\n                message: options.message,\n                uploads: options.uploads\n              });\n            }\n          });\n        }\n        if (!apiPrototype.hasOwnProperty(\"removeChatComposerSecondaryActions\")) {\n          Object.defineProperty(apiPrototype, \"removeChatComposerSecondaryActions\", {\n            value(...actionIds) {\n              (0, _chatMessageInteractor.removeChatComposerSecondaryActions)(actionIds);\n            }\n          });\n        }\n      });\n    },\n    teardown() {\n      (0, _chatMessage.resetChatMessageDecorators)();\n    }\n  };\n});","define(\"discourse/plugins/chat/discourse/preferences-chat-route-map\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    resource: \"user.preferences\",\n    map() {\n      this.route(\"chat\");\n    }\n  };\n});","define(\"discourse/plugins/chat/discourse/routes/chat-channel-decorator\", [\"exports\", \"@ember/service\"], function (_exports, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = withChatChannel;\n  function withChatChannel(extendedClass) {\n    return class WithChatChannel extends extendedClass {\n      static {\n        dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n      }\n      #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n      static {\n        dt7948.g(this.prototype, \"chat\", [_service.service]);\n      }\n      #chat = (dt7948.i(this, \"chat\"), void 0);\n      static {\n        dt7948.g(this.prototype, \"router\", [_service.service]);\n      }\n      #router = (dt7948.i(this, \"router\"), void 0);\n      async model(params) {\n        await this.chat.loadChannels();\n        return this.chatChannelsManager.find(params.channelId);\n      }\n      titleToken() {\n        if (!this.currentModel) {\n          return;\n        }\n        const title = this.currentModel.displayTitle;\n        if (this.currentModel.isDirectMessageChannel) {\n          return `${title}`;\n        } else {\n          return `#${title}`;\n        }\n      }\n      afterModel(model) {\n        super.afterModel?.(...arguments);\n        this.chat.activeChannel = model;\n        if (!model) {\n          return this.router.replaceWith(\"chat\");\n        }\n        let {\n          channelTitle\n        } = this.paramsFor(this.routeName);\n        if (channelTitle && channelTitle !== model.slugifiedTitle) {\n          if (this.routeName === \"chat.channel.info\") {\n            return this.router.replaceWith(\"chat.channel.info\", ...model.routeModels);\n          }\n          const messageId = this.paramsFor(\"chat.channel.near-message\").messageId;\n          const threadId = this.paramsFor(\"chat.channel.thread\").threadId;\n          if (threadId) {\n            const threadMessageId = this.paramsFor(\"chat.channel.thread.near-message\").messageId;\n            if (threadMessageId) {\n              this.router.replaceWith(\"chat.channel.thread.near-message\", ...model.routeModels, threadId, threadMessageId);\n            } else {\n              this.router.replaceWith(\"chat.channel.thread\", ...model.routeModels, threadId);\n            }\n          } else if (messageId) {\n            this.router.replaceWith(\"chat.channel.near-message\", ...model.routeModels, messageId);\n          } else {\n            this.router.replaceWith(\"chat.channel\", ...model.routeModels);\n          }\n        } else {\n          this.controllerFor(\"chat.channel\").set(\"targetMessageId\", null);\n        }\n      }\n    };\n  }\n});","define(\"discourse/plugins/chat/discourse/routes/chat-channel-legacy\", [\"exports\", \"@ember/service\", \"discourse/routes/discourse\"], function (_exports, _service, _discourse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelLegacyRoute extends _discourse.default {\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    redirect() {\n      const {\n        channelTitle,\n        channelId,\n        messageId\n      } = this.paramsFor(this.routeName);\n      this.router.replaceWith(\"chat.channel\", channelTitle, channelId, {\n        queryParams: {\n          messageId\n        }\n      });\n    }\n  }\n  _exports.default = ChatChannelLegacyRoute;\n});","define(\"discourse/plugins/chat/discourse/routes/chat-draft-channel\", [\"exports\", \"@ember/service\", \"discourse/routes/discourse\"], function (_exports, _service, _discourse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatDraftChannelRoute extends _discourse.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    beforeModel() {\n      if (!this.chat.userCanDirectMessage) {\n        this.router.transitionTo(\"chat\");\n      }\n    }\n    activate() {\n      this.chat.activeChannel = null;\n    }\n  }\n  _exports.default = ChatDraftChannelRoute;\n});","define(\"discourse/plugins/chat/discourse/routes/chat\", [\"exports\", \"@ember/service\", \"discourse/lib/plugin-api\", \"discourse/lib/utilities\", \"discourse/models/session\", \"discourse/routes/discourse\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/lib/get-user-chat-separate-sidebar-mode\", \"discourse/plugins/chat/discourse/lib/init-sidebar-state\"], function (_exports, _service, _pluginApi, _utilities, _session, _discourse, _discourseI18n, _getUserChatSeparateSidebarMode, _initSidebarState) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatRoute extends _discourse.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatDrawerRouter\", [_service.service]);\n    }\n    #chatDrawerRouter = (dt7948.i(this, \"chatDrawerRouter\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    titleToken() {\n      return (0, _discourseI18n.i18n)(\"chat.title_capitalized\");\n    }\n    beforeModel(transition) {\n      if (!this.chat.userCanChat) {\n        return this.router.transitionTo(`discovery.${(0, _utilities.defaultHomepage)()}`);\n      }\n\n      // Check if user prefers drawer mode and the route can be handled in drawer\n      const isDrawerPreferred = this.chatStateManager.isDrawerPreferred;\n      const canHandleInDrawer = this.chatDrawerRouter.canHandleRoute(transition.to);\n      const fullPageReload = !transition.from;\n      const requiresRefresh = _session.default.currentProp(\"requiresRefresh\");\n\n      // Don't intercept direct loads unless requiresRefresh is forcing a reload\n      // This preserves the original behavior: if someone directly types /chat in\n      // the address bar, show them full page chat (they explicitly chose it).\n      // But if requiresRefresh caused a reload mid-session, respect drawer preference.\n      if (isDrawerPreferred && canHandleInDrawer && (!fullPageReload || requiresRefresh)) {\n        transition.abort();\n        let url = transition.intent.url;\n        if (transition.targetName.startsWith(\"chat.channel\")) {\n          url ??= this.router.urlFor(transition.targetName, ...transition.intent.contexts);\n        } else {\n          url ??= this.router.urlFor(transition.targetName);\n        }\n\n        // If this is a full page reload (no transition.from), we need to\n        // navigate to a non-chat page first before opening the drawer\n        if (fullPageReload) {\n          const appURL = this.chatStateManager.lastKnownAppURL || `discovery.${(0, _utilities.defaultHomepage)()}`;\n          return this.router.transitionTo(appURL).then(() => {\n            this.appEvents.trigger(\"chat:open-url\", url);\n          });\n        }\n\n        // Normal SPA navigation - just open the drawer\n        this.appEvents.trigger(\"chat:open-url\", url);\n        return;\n      }\n\n      // Full page mode - close any open drawer\n      this.appEvents.trigger(\"chat:toggle-close\");\n    }\n    activate() {\n      (0, _pluginApi.withPluginApi)(api => {\n        api.setSidebarPanel(_initSidebarState.CHAT_PANEL);\n        const chatSeparateSidebarMode = (0, _getUserChatSeparateSidebarMode.getUserChatSeparateSidebarMode)(this.currentUser);\n        if (chatSeparateSidebarMode.never) {\n          api.setCombinedSidebarMode();\n          api.hideSidebarSwitchPanelButtons();\n        } else {\n          api.setSeparatedSidebarMode();\n        }\n      });\n      this.chatStateManager.storeAppURL();\n      this.chat.updatePresence();\n    }\n    deactivate(transition) {\n      (0, _pluginApi.withPluginApi)(api => {\n        (0, _initSidebarState.initSidebarState)(api, this.currentUser);\n      });\n      if (transition) {\n        let url = this.router.urlFor(transition.from.name);\n        if (this.router.rootURL !== \"/\") {\n          url = url.replace(new RegExp(`^${this.router.rootURL}`), \"/\");\n        }\n        this.chatStateManager.storeChatURL(url);\n      }\n      this.chat.activeChannel = null;\n      this.chat.updatePresence();\n    }\n  }\n  _exports.default = ChatRoute;\n});","define(\"discourse/plugins/chat/discourse/routes/chat/browse\", [\"exports\", \"@ember/routing/route\"], function (_exports, _route) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class _default extends _route.default {}\n  _exports.default = _default;\n});","define(\"discourse/plugins/chat/discourse/routes/chat/browse/archived\", [\"exports\", \"@ember/service\", \"discourse/routes/discourse\"], function (_exports, _service, _discourse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatBrowseIndexRoute extends _discourse.default {\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    afterModel() {\n      if (!this.siteSettings.chat_allow_archiving_channels) {\n        this.router.replaceWith(\"chat.browse\");\n      }\n    }\n  }\n  _exports.default = ChatBrowseIndexRoute;\n});","define(\"discourse/plugins/chat/discourse/routes/chat/browse/index\", [\"exports\", \"@ember/service\", \"discourse/lib/utilities\", \"discourse/routes/discourse\"], function (_exports, _service, _utilities, _discourse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatBrowseIndexRoute extends _discourse.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    beforeModel() {\n      if (!this.siteSettings.enable_public_channels) {\n        return this.router.transitionTo(`discovery.${(0, _utilities.defaultHomepage)()}`);\n      }\n    }\n    activate() {\n      this.chat.activeChannel = null;\n    }\n    afterModel() {\n      this.router.replaceWith(\"chat.browse.open\");\n    }\n  }\n  _exports.default = ChatBrowseIndexRoute;\n});","define(\"discourse/plugins/chat/discourse/routes/chat/channel\", [\"exports\", \"@ember/service\", \"discourse/routes/discourse\", \"discourse/plugins/chat/discourse/routes/chat-channel-decorator\"], function (_exports, _service, _discourse, _chatChannelDecorator) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatChannelRoute = dt7948.c(class ChatChannelRoute extends _discourse.default {\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    redirect(model) {\n      if (this.site.mobileView) {\n        return;\n      }\n      const messageId = this.paramsFor(\"chat.channel.near-message\").messageId;\n      const threadId = this.paramsFor(\"chat.channel.thread\").threadId;\n      if (model.threadingEnabled && !messageId && !threadId && model.threadsManager.unreadThreadCount > 0) {\n        this.router.transitionTo(\"chat.channel.threads\", ...model.routeModels);\n      }\n    }\n  }, [_chatChannelDecorator.default]);\n  var _default = _exports.default = ChatChannelRoute;\n});","define(\"discourse/plugins/chat/discourse/routes/chat/channel/info\", [\"exports\", \"@ember/service\", \"discourse/routes/discourse\", \"discourse/plugins/chat/discourse/services/chat-channel-info-route-origin-manager\", \"discourse/plugins/chat/discourse/routes/chat-channel-decorator\"], function (_exports, _service, _discourse, _chatChannelInfoRouteOriginManager, _chatChannelDecorator) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ChatChannelInfoRoute = dt7948.c(class ChatChannelInfoRoute extends _discourse.default {\n    static {\n      dt7948.g(this.prototype, \"chatChannelInfoRouteOriginManager\", [_service.service]);\n    }\n    #chatChannelInfoRouteOriginManager = (dt7948.i(this, \"chatChannelInfoRouteOriginManager\"), void 0);\n    activate(transition) {\n      const name = transition?.from?.name;\n      if (name) {\n        this.chatChannelInfoRouteOriginManager.origin = name.startsWith(\"chat.browse\") ? _chatChannelInfoRouteOriginManager.ORIGINS.browse : _chatChannelInfoRouteOriginManager.ORIGINS.channel;\n      }\n    }\n    deactivate() {\n      this.chatChannelInfoRouteOriginManager.origin = null;\n    }\n  }, [_chatChannelDecorator.default]);\n  var _default = _exports.default = ChatChannelInfoRoute;\n});","define(\"discourse/plugins/chat/discourse/routes/chat/channel/info/index\", [\"exports\", \"@ember/service\", \"discourse/routes/discourse\"], function (_exports, _service, _discourse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelInfoIndexRoute extends _discourse.default {\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    afterModel() {\n      this.router.replaceWith(\"chat.channel.info.settings\");\n    }\n  }\n  _exports.default = ChatChannelInfoIndexRoute;\n});","define(\"discourse/plugins/chat/discourse/routes/chat/channel/info/members\", [\"exports\", \"@ember/service\", \"discourse/routes/discourse\"], function (_exports, _service, _discourse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelInfoMembersRoute extends _discourse.default {\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    afterModel(model) {\n      if (!model.isOpen) {\n        return this.router.replaceWith(\"chat.channel.info.settings\");\n      }\n    }\n  }\n  _exports.default = ChatChannelInfoMembersRoute;\n});","define(\"discourse/plugins/chat/discourse/routes/chat/channel/info/search\", [\"exports\", \"discourse/routes/discourse\"], function (_exports, _discourse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelInfoSearchRoute extends _discourse.default {\n    queryParams = {\n      q: {\n        replace: true\n      }\n    };\n  }\n  _exports.default = ChatChannelInfoSearchRoute;\n});","define(\"discourse/plugins/chat/discourse/routes/chat/channel/near-message-with-thread\", [\"exports\", \"@ember/service\", \"discourse/routes/discourse\"], function (_exports, _service, _discourse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  // This route is only here as a convenience method for a clean `/c/:channelTitle/:channelId/:messageId/t/:threadId` URL.\n  // It's not a real route, it just redirects to the real route after setting a param on the controller.\n  class ChatChannelNearMessageWithThread extends _discourse.default {\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    beforeModel() {\n      const channel = this.modelFor(\"chat.channel\");\n      const {\n        messageId,\n        threadId\n      } = this.paramsFor(this.routeName);\n      this.controllerFor(\"chat.channel\").set(\"messageId\", null);\n      if (messageId || this.controllerFor(\"chat.channel\").get(\"targetMessageId\")) {\n        this.controllerFor(\"chat.channel\").set(\"targetMessageId\", messageId);\n      }\n      if (threadId && this.site.desktopView) {\n        this.router.replaceWith(\"chat.channel.thread\", ...channel.routeModels, threadId);\n      }\n    }\n  }\n  _exports.default = ChatChannelNearMessageWithThread;\n});","define(\"discourse/plugins/chat/discourse/routes/chat/channel/near-message\", [\"exports\", \"@ember/service\", \"discourse/routes/discourse\"], function (_exports, _service, _discourse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  // This route is only here as a convenience method for a clean `/c/:channelTitle/:channelId/:messageId` URL.\n  // It's not a real route, it just redirects to the real route after setting a param on the controller.\n  class ChatChannelNearMessage extends _discourse.default {\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    beforeModel() {\n      const channel = this.modelFor(\"chat.channel\");\n      const {\n        messageId\n      } = this.paramsFor(this.routeName);\n      this.controllerFor(\"chat.channel\").set(\"messageId\", null);\n      if (messageId || this.controllerFor(\"chat.channel\").get(\"targetMessageId\")) {\n        this.controllerFor(\"chat.channel\").set(\"targetMessageId\", messageId);\n      }\n      this.router.replaceWith(\"chat.channel\", ...channel.routeModels);\n    }\n  }\n  _exports.default = ChatChannelNearMessage;\n});","define(\"discourse/plugins/chat/discourse/routes/chat/channel/pins\", [\"exports\", \"@ember/object\", \"@ember/service\", \"discourse/routes/discourse\"], function (_exports, _object, _service, _discourse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelPins extends _discourse.default {\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    async model() {\n      const channel = this.modelFor(\"chat.channel\");\n      const pinnedMessages = await this.chatApi.pinnedMessages(channel);\n      return {\n        channel,\n        pinnedMessages\n      };\n    }\n    activate() {\n      this.chat.activeMessage = null;\n      this.chatStateManager.openSidePanel();\n    }\n    static {\n      dt7948.n(this.prototype, \"activate\", [_object.action]);\n    }\n    deactivate() {\n      this.chatStateManager.closeSidePanel();\n    }\n    static {\n      dt7948.n(this.prototype, \"deactivate\", [_object.action]);\n    }\n  }\n  _exports.default = ChatChannelPins;\n});","define(\"discourse/plugins/chat/discourse/routes/chat/channel/thread\", [\"exports\", \"@ember/object\", \"@ember/service\", \"discourse/routes/discourse\"], function (_exports, _object, _service, _discourse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelThread extends _discourse.default {\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    redirectToChannel(channel, transition) {\n      transition.abort();\n      this.chatStateManager.closeSidePanel();\n      this.router.transitionTo(\"chat.channel\", ...channel.routeModels);\n    }\n    model(params, transition) {\n      const channel = this.modelFor(\"chat.channel\");\n      return channel.threadsManager.find(channel.id, params.threadId).catch(() => {\n        this.redirectToChannel(channel, transition);\n        return;\n      });\n    }\n    afterModel(thread, transition) {\n      const channel = this.modelFor(\"chat.channel\");\n      if (!channel.threadingEnabled && !thread.force) {\n        this.redirectToChannel(channel, transition);\n        return;\n      }\n      channel.activeThread = thread;\n    }\n    activate() {\n      this.chat.activeMessage = null;\n      this.chatStateManager.openSidePanel();\n    }\n    static {\n      dt7948.n(this.prototype, \"activate\", [_object.action]);\n    }\n    deactivate() {\n      this.chatStateManager.closeSidePanel();\n    }\n    static {\n      dt7948.n(this.prototype, \"deactivate\", [_object.action]);\n    }\n    beforeModel() {\n      const {\n        messageId\n      } = this.paramsFor(this.routeName + \".near-message\");\n      if (!messageId && this.controllerFor(\"chat.channel.thread\").get(\"targetMessageId\")) {\n        this.controllerFor(\"chat.channel.thread\").set(\"targetMessageId\", null);\n      }\n    }\n  }\n  _exports.default = ChatChannelThread;\n});","define(\"discourse/plugins/chat/discourse/routes/chat/channel/thread/near-message\", [\"exports\", \"@ember/service\", \"discourse/routes/discourse\"], function (_exports, _service, _discourse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  // This route is only here as a convenience method for a clean `/c/:channelTitle/:channelId/t/:threadId/:messageId` URL.\n  // It's not a real route, it just redirects to the real route after setting a param on the controller.\n  class ChatChannelThreadNearMessage extends _discourse.default {\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    beforeModel() {\n      const thread = this.modelFor(\"chat.channel.thread\");\n      const {\n        messageId\n      } = this.paramsFor(this.routeName);\n      if (messageId || this.controllerFor(\"chat.channel.thread\").get(\"targetMessageId\")) {\n        this.controllerFor(\"chat.channel.thread\").set(\"targetMessageId\", messageId);\n      }\n      this.router.replaceWith(\"chat.channel.thread\", ...thread.routeModels);\n    }\n  }\n  _exports.default = ChatChannelThreadNearMessage;\n});","define(\"discourse/plugins/chat/discourse/routes/chat/channel/threads\", [\"exports\", \"@ember/object\", \"@ember/service\", \"discourse/routes/discourse\"], function (_exports, _object, _service, _discourse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelThreads extends _discourse.default {\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    beforeModel(transition) {\n      const channel = this.modelFor(\"chat.channel\");\n      if (!channel.threadingEnabled) {\n        transition.abort();\n        this.router.transitionTo(\"chat.channel\", ...channel.routeModels);\n        return;\n      }\n    }\n    activate() {\n      this.chat.activeMessage = null;\n      this.chatStateManager.openSidePanel();\n    }\n    static {\n      dt7948.n(this.prototype, \"activate\", [_object.action]);\n    }\n    deactivate() {\n      this.chatStateManager.closeSidePanel();\n    }\n    static {\n      dt7948.n(this.prototype, \"deactivate\", [_object.action]);\n    }\n  }\n  _exports.default = ChatChannelThreads;\n});","define(\"discourse/plugins/chat/discourse/routes/chat/channels\", [\"exports\", \"@ember/service\", \"discourse/routes/discourse\"], function (_exports, _service, _discourse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelsRoute extends _discourse.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    activate() {\n      this.chat.activeChannel = null;\n    }\n    beforeModel() {\n      const id = this.currentUser.custom_fields.last_chat_channel_id;\n      if (this.site.desktopView) {\n        if (id) {\n          this.chatChannelsManager.find(id).then(c => {\n            return this.router.replaceWith(\"chat.channel\", ...c.routeModels);\n          });\n        } else {\n          this.router.replaceWith(\"chat.browse.open\");\n        }\n      }\n    }\n    model() {\n      return this.chatChannelsManager.publicMessageChannels;\n    }\n  }\n  _exports.default = ChatChannelsRoute;\n});","define(\"discourse/plugins/chat/discourse/routes/chat/direct-messages\", [\"exports\", \"@ember/service\", \"discourse/routes/discourse\"], function (_exports, _service, _discourse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatDirectMessagesRoute extends _discourse.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    activate() {\n      this.chat.activeChannel = null;\n    }\n    beforeModel() {\n      if (this.site.desktopView) {\n        if (this.chatChannelsManager.directMessageChannels.length === 0) {\n          // first time browsing chat and the preferred index is dms\n          this.router.replaceWith(\"chat.direct-messages\");\n        } else {\n          // there should be at least one dm channel\n          // we can reroute using the last channel id\n          const id = this.currentUser.custom_fields.last_chat_channel_id;\n          this.chatChannelsManager.find(id).then(c => {\n            return this.router.replaceWith(\"chat.channel\", ...c.routeModels);\n          });\n        }\n      }\n    }\n    model() {\n      return this.chatChannelsManager.directMessageChannels;\n    }\n  }\n  _exports.default = ChatDirectMessagesRoute;\n});","define(\"discourse/plugins/chat/discourse/routes/chat/index\", [\"exports\", \"@ember/service\", \"discourse/routes/discourse\"], function (_exports, _service, _discourse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatIndexRoute extends _discourse.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    get hasThreads() {\n      if (!this.siteSettings.chat_threads_enabled) {\n        return false;\n      }\n      return this.chatChannelsManager.shouldShowMyThreads;\n    }\n    get hasDirectMessages() {\n      return this.chat.userCanAccessDirectMessages;\n    }\n    get isPublicChannelsEnabled() {\n      return this.siteSettings.enable_public_channels;\n    }\n    activate() {\n      this.chat.activeChannel = null;\n    }\n    async model() {\n      return await this.chat.loadChannels();\n    }\n    async redirect() {\n      if (this.siteSettings.chat_preferred_index === \"my_threads\" && this.hasThreads) {\n        return this.router.replaceWith(\"chat.threads\");\n      } else if (this.siteSettings.chat_preferred_index === \"direct_messages\" && this.hasDirectMessages) {\n        return this.router.replaceWith(\"chat.direct-messages\");\n      } else if (this.siteSettings.chat_preferred_index === \"channels\" && this.isPublicChannelsEnabled) {\n        return this.router.replaceWith(\"chat.channels\");\n      }\n      if (!this.isPublicChannelsEnabled && this.hasDirectMessages) {\n        return this.router.replaceWith(\"chat.direct-messages\");\n      }\n      return this.router.replaceWith(\"chat.browse.open\");\n    }\n  }\n  _exports.default = ChatIndexRoute;\n});","define(\"discourse/plugins/chat/discourse/routes/chat/new-message\", [\"exports\", \"@ember/service\", \"discourse/routes/discourse\", \"discourse/plugins/chat/discourse/components/chat/modal/new-message\"], function (_exports, _service, _discourse, _newMessage) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatNewMessageRoute extends _discourse.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"modal\", [_service.service]);\n    }\n    #modal = (dt7948.i(this, \"modal\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    beforeModel(transition) {\n      const recipients = this.paramsFor(this.routeName).recipients?.split(\",\");\n      if (!recipients) {\n        transition.abort();\n        if (!transition.from) {\n          this.router.transitionTo(\"chat\");\n          return;\n        }\n        this.modal.show(_newMessage.default);\n        return;\n      }\n      this.chat.upsertDmChannel({\n        usernames: recipients\n      }).then(channel => {\n        this.router.transitionTo(\"chat.channel\", channel.title, channel.id);\n      });\n    }\n  }\n  _exports.default = ChatNewMessageRoute;\n});","define(\"discourse/plugins/chat/discourse/routes/chat/search\", [\"exports\", \"@ember/service\", \"discourse/routes/discourse\"], function (_exports, _service, _discourse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatSearchRoute extends _discourse.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    queryParams = {\n      q: {\n        replace: true\n      }\n    };\n    activate() {\n      this.chat.activeChannel = null;\n    }\n    redirect() {\n      if (!this.siteSettings.chat_search_enabled) {\n        this.router.transitionTo(\"chat\");\n      }\n    }\n  }\n  _exports.default = ChatSearchRoute;\n});","define(\"discourse/plugins/chat/discourse/routes/chat/starred-channels\", [\"exports\", \"@ember/service\", \"discourse/routes/discourse\"], function (_exports, _service, _discourse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatStarredChannelsRoute extends _discourse.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    activate() {\n      this.chat.activeChannel = null;\n    }\n    async beforeModel() {\n      if (this.site.desktopView) {\n        const channel = this.chat.activeChannel;\n        if (channel) {\n          this.router.replaceWith(\"chat.channel\", ...channel.routeModels);\n        } else {\n          this.router.replaceWith(\"chat\");\n        }\n      } else {\n        // Load channels before rendering (mobile only)\n        await this.chat.loadChannels();\n\n        // If there are no starred channels, redirect to all channels\n        if (!this.chatChannelsManager.hasStarredChannels) {\n          this.router.replaceWith(\"chat.channels\");\n        }\n      }\n    }\n  }\n  _exports.default = ChatStarredChannelsRoute;\n});","define(\"discourse/plugins/chat/discourse/routes/chat/threads\", [\"exports\", \"@ember/service\", \"discourse/routes/discourse\"], function (_exports, _service, _discourse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelThreads extends _discourse.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    activate() {\n      this.chat.activeChannel = null;\n      this.chatStateManager.closeSidePanel();\n    }\n  }\n  _exports.default = ChatChannelThreads;\n});","define(\"discourse/plugins/chat/discourse/routes/preferences/chat\", [\"exports\", \"@ember/service\", \"discourse/lib/utilities\", \"discourse/routes/restricted-user\"], function (_exports, _service, _utilities, _restrictedUser) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class PreferencesChatRoute extends _restrictedUser.default {\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    showFooter = true;\n    setupController(controller, user) {\n      if (!this.siteSettings.chat_enabled || !user.can_chat && !this.currentUser?.admin) {\n        return this.router.transitionTo(`discovery.${(0, _utilities.defaultHomepage)()}`);\n      }\n      controller.set(\"model\", user);\n    }\n  }\n  _exports.default = PreferencesChatRoute;\n});","define(\"discourse/plugins/chat/discourse/services/chat-admin-api\", [\"exports\", \"@ember/service\", \"discourse/lib/ajax\"], function (_exports, _service, _ajax) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatAdminApi extends _service.default {\n    async exportMessages() {\n      await this.#post(`/export/messages`);\n    }\n    get #basePath() {\n      return \"/chat/admin\";\n    }\n    #post(endpoint, data = {}) {\n      return (0, _ajax.ajax)(`${this.#basePath}${endpoint}`, {\n        type: \"POST\",\n        data\n      });\n    }\n  }\n  _exports.default = ChatAdminApi;\n});","define(\"discourse/plugins/chat/discourse/services/chat-api\", [\"exports\", \"@ember/service\", \"discourse/lib/ajax\", \"discourse/plugins/chat/discourse/models/chat-message\", \"discourse/plugins/chat/discourse/models/user-chat-channel-membership\", \"discourse/plugins/chat/discourse/lib/collection\"], function (_exports, _service, _ajax, _chatMessage, _userChatChannelMembership, _collection) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /**\n   * Chat API service. Provides methods to interact with the chat API.\n   *\n   * @module ChatApi\n   * @implements {@ember/service}\n   */\n  class ChatApi extends _service.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    channel(channelId) {\n      return this.#getRequest(`/channels/${channelId}`);\n    }\n    channelThreadMessages(channelId, threadId, params = {}) {\n      return this.#getRequest(`/channels/${channelId}/threads/${threadId}/messages?${new URLSearchParams(params).toString()}`);\n    }\n    channelMessages(channelId, params = {}) {\n      return this.#getRequest(`/channels/${channelId}/messages?${new URLSearchParams(params).toString()}`);\n    }\n\n    /**\n     * Flags a message in a channel.\n     * @param {number} channelId - The ID of the channel.\n     * @param {number} messageId - The ID of the message to flag.\n     * @param {object} params - Params of the flag.\n     * @param {integer} params.flag_type_id\n     * @param {string} [params.message]\n     * @param {boolean} [params.is_warning]\n     * @param {boolean} [params.queue_for_review]\n     * @param {boolean} [params.take_action]\n     * @returns {Promise}\n     *\n     * @example\n     *\n     *    this.chatApi.flagMessage(5, 1);\n     */\n    flagMessage(channelId, messageId, params = {}) {\n      return this.#postRequest(`/channels/${channelId}/messages/${messageId}/flags`, params);\n    }\n\n    /**\n     * Get a thread in a channel by its ID.\n     * @param {number} channelId - The ID of the channel.\n     * @param {number} threadId - The ID of the thread.\n     * @returns {Promise}\n     *\n     * @example\n     *\n     *    this.chatApi.thread(5, 1).then(thread => { ... })\n     */\n    thread(channelId, threadId) {\n      return this.#getRequest(`/channels/${channelId}/threads/${threadId}`);\n    }\n\n    /**\n     * Loads all threads for a channel.\n     * For now we only get the 50 threads ordered\n     * by the last message sent by the user then the\n     * thread creation date, later we will paginate\n     * and add filters.\n     * @param {number} channelId - The ID of the channel.\n     * @returns {Promise}\n     */\n    threads(channelId, handler) {\n      return new _collection.default(`${this.#basePath}/channels/${channelId}/threads`, handler);\n    }\n\n    /**\n     * List all accessible category channels of the current user.\n     * @returns {Collection}\n     *\n     * @example\n     *\n     *    this.chatApi.channels.then(channels => { ... })\n     */\n    channels(params = {}) {\n      return new _collection.default(`${this.#basePath}/channels`, response => {\n        return response.channels.map(channel => this.chatChannelsManager.store(channel));\n      }, params);\n    }\n\n    /**\n     * Moves messages from one channel to another.\n     * @param {number} channelId - The ID of the original channel.\n     * @param {object} data - Params of the move.\n     * @param {Array.<number>} data.message_ids - IDs of the moved messages.\n     * @param {number} data.destination_channel_id - ID of the channel where the messages are moved to.\n     * @returns {Promise}\n     *\n     * @example\n     *\n     *   this.chatApi\n     *     .moveChannelMessages(1, {\n     *       message_ids: [2, 3],\n     *       destination_channel_id: 4,\n     *     }).then(() => { ... })\n     */\n    moveChannelMessages(channelId, data = {}) {\n      return this.#postRequest(`/channels/${channelId}/messages/moves`, {\n        move: data\n      });\n    }\n\n    /**\n     * Destroys a channel.\n     * @param {number} channelId - The ID of the channel.\n     * @returns {Promise}\n     *\n     * @example\n     *\n     *    this.chatApi.destroyChannel(1).then(() => { ... })\n     */\n    destroyChannel(channelId) {\n      return this.#deleteRequest(`/channels/${channelId}`);\n    }\n\n    /**\n     * Creates a channel.\n     * @param {object} data - Params of the channel.\n     * @param {string} data.name - The name of the channel.\n     * @param {string} data.chatable_id - The category of the channel.\n     * @param {string} data.description - The description of the channel.\n     * @param {boolean} [data.auto_join_users] - Should users join this channel automatically.\n     * @returns {Promise}\n     *\n     * @example\n     *\n     *    this.chatApi\n     *      .createChannel({ name: \"foo\", chatable_id: 1, description \"bar\" })\n     *      .then((channel) => { ... })\n     */\n    createChannel(data = {}) {\n      return this.#postRequest(\"/channels\", {\n        channel: data\n      }).then(response => this.chatChannelsManager.store(response.channel));\n    }\n\n    /**\n     * Lists chat permissions for a category.\n     * @param {number} categoryId - ID of the category.\n     * @returns {Promise}\n     */\n    categoryPermissions(categoryId) {\n      return this.#getRequest(`/category-chatables/${categoryId}/permissions`);\n    }\n\n    /**\n     * Sends a message.\n     * @param {number} channelId - ID of the channel.\n     * @param {object} data - Params of the message.\n     * @param {string} data.message - The raw content of the message in markdown.\n     * @param {string} data.cooked - The cooked content of the message.\n     * @param {number} [data.in_reply_to_id] - The ID of the replied-to message.\n     * @param {number} [data.staged_id] - The staged ID of the message before it was persisted.\n     * @param {number} [data.thread_id] - The ID of the thread where this message should be posted.\n     * @param {number} [data.topic_id] - The ID of the currently visible topic in drawer mode.\n     * @param {number} [data.post_ids] - The ID of the currently visible posts in drawer mode.\n     * @param {Array.<number>} [data.upload_ids] - Array of upload ids linked to the message.\n     * @returns {Promise}\n     */\n    sendMessage(channelId, data = {}) {\n      return (0, _ajax.ajax)(`/chat/${channelId}`, {\n        ignoreUnsent: false,\n        type: \"POST\",\n        data\n      });\n    }\n\n    /**\n     * Stop streaming of a message\n     * @param {number} channelId - ID of the channel.\n     * @param {number} messageId - ID of the message.\n     * @returns {Promise}\n     */\n    stopMessageStreaming(channelId, messageId) {\n      return this.#deleteRequest(`/channels/${channelId}/messages/${messageId}/streaming`);\n    }\n\n    /**\n     * Trashes (soft deletes) a chat message.\n     * @param {number} channelId - ID of the channel.\n     * @param {number} messageId - ID of the message.\n     * @returns {Promise}\n     */\n    trashMessage(channelId, messageId) {\n      return this.#deleteRequest(`/channels/${channelId}/messages/${messageId}`);\n    }\n\n    /**\n     * Trashes (soft deletes) multiple chat messages.\n     * @param {number} channelId - ID of the channel.\n     * @param {Array.<number>} messageIds - IDs of the messages to delete.\n     * @returns {Promise}\n     */\n    trashMessages(channelId, messageIds) {\n      return this.#deleteRequest(`/channels/${channelId}/messages`, {\n        message_ids: messageIds\n      });\n    }\n\n    /**\n     * Creates a channel archive.\n     * @param {number} channelId - The ID of the channel.\n     * @param {object} data - Params of the archive.\n     * @param {string} data.selection - \"new_topic\" or \"existing_topic\".\n     * @param {string} [data.title] - Title of the topic when creating a new topic.\n     * @param {string} [data.category_id] - ID of the category used when creating a new topic.\n     * @param {Array.<string>} [data.tags] - tags used when creating a new topic.\n     * @param {string} [data.topic_id] - ID of the topic when using an existing topic.\n     * @returns {Promise}\n     */\n    createChannelArchive(channelId, data = {}) {\n      return this.#postRequest(`/channels/${channelId}/archives`, {\n        archive: data\n      });\n    }\n\n    /**\n     * Updates a channel.\n     * @param {number} channelId - The ID of the channel.\n     * @param {object} data - Params of the archive.\n     * @param {string} [data.description] - Description of the channel.\n     * @param {string} [data.name] - Name of the channel.\n     * @returns {Promise}\n     */\n    updateChannel(channelId, data = {}) {\n      return this.#putRequest(`/channels/${channelId}`, {\n        channel: data\n      });\n    }\n\n    /**\n     * Creates a thread.\n     * @param {number} channelId - The ID of the channel.\n     * @param {number} originalMessageId - The ID of the original message.\n     * @param {object} data - Params of the thread.\n     * @param {string} [data.title] - Title of the thread.\n     * @returns {Promise}\n     */\n    createThread(channelId, originalMessageId, data = {}) {\n      return this.#postRequest(`/channels/${channelId}/threads`, {\n        title: data.title,\n        original_message_id: originalMessageId\n      });\n    }\n\n    /**\n     * Creates a message interaction.\n     * @param {number} channelId - The ID of the channel.\n     * @param {number} messageId - The ID of the message.\n     * @param {object} data - Params of the interaction.\n     * @param {string} data.action_id - The ID of the action.\n     * @returns {Promise}\n     */\n    createInteraction(channelId, messageId, data = {}) {\n      return this.#postRequest(`/channels/${channelId}/messages/${messageId}/interactions`, data);\n    }\n\n    /**\n     * Updates the status of a channel.\n     * @param {number} channelId - The ID of the channel.\n     * @param {string} status - The new status, can be \"open\" or \"closed\".\n     * @returns {Promise}\n     */\n    updateChannelStatus(channelId, status) {\n      return this.#putRequest(`/channels/${channelId}/status`, {\n        status\n      });\n    }\n\n    /**\n     * Lists members of a channel.\n     * @param {number} channelId - The ID of the channel.\n     * @returns {Collection}\n     */\n    listChannelMemberships(channelId, params = {}) {\n      return new _collection.default(`${this.#basePath}/channels/${channelId}/memberships`, response => {\n        return response.memberships.map(membership => _userChatChannelMembership.default.create(membership));\n      }, params);\n    }\n\n    /**\n     * Lists public and direct message channels of the current user.\n     * @returns {Promise}\n     */\n    listCurrentUserChannels() {\n      return this.#getRequest(\"/me/channels\");\n    }\n\n    /**\n     * Makes current user follow a channel.\n     * @param {number} channelId - The ID of the channel.\n     * @returns {Promise}\n     */\n    followChannel(channelId) {\n      return this.#postRequest(`/channels/${channelId}/memberships/me`).then(result => _userChatChannelMembership.default.create(result.membership));\n    }\n\n    /**\n     * Makes current user unfollow a channel.\n     * @param {number} channelId - The ID of the channel.\n     * @returns {Promise}\n     */\n    unfollowChannel(channelId) {\n      return this.#deleteRequest(`/channels/${channelId}/memberships/me/follows`).then(result => _userChatChannelMembership.default.create(result.membership));\n    }\n\n    /**\n     * Update membership settings of current user for a channel.\n     * @param {number} channelId - The ID of the channel.\n     * @param {object} data - The settings to modify.\n     * @param {boolean} [data.starred] - Stars the channel.\n     * @returns {Promise}\n     */\n    updateCurrentUserChannelMembership(channelId, data = {}) {\n      return this.#putRequest(`/channels/${channelId}/memberships/me`, data);\n    }\n\n    /**\n     * Destroys the membership of current user on a channel.\n     *\n     * @param {number} channelId - The ID of the channel.\n     * @returns {Promise}\n     */\n    async leaveChannel(channelId) {\n      await this.#deleteRequest(`/channels/${channelId}/memberships/me`);\n      const channel = await this.chatChannelsManager.find(channelId, {\n        fetchIfNotFound: false\n      });\n      if (channel) {\n        this.chatChannelsManager.remove(channel);\n      }\n    }\n\n    /**\n     * Get the list of tracked threads for the current user.\n     *\n     * @returns {Promise}\n     */\n    userThreads(handler) {\n      return new _collection.default(`${this.#basePath}/me/threads`, handler);\n    }\n\n    /**\n     * Update notifications settings of current user for a channel.\n     * @param {number} channelId - The ID of the channel.\n     * @param {object} data - The settings to modify.\n     * @param {boolean} [data.muted] - Mutes the channel.\n     * @param {string} [data.notification_level] - Notifications level: never, mention or always.\n     * @returns {Promise}\n     */\n    updateCurrentUserChannelNotificationsSettings(channelId, data = {}) {\n      return this.#putRequest(`/channels/${channelId}/notifications-settings/me`, {\n        notifications_settings: data\n      });\n    }\n\n    /**\n     * Update notifications settings of current user for a thread.\n     * @param {number} channelId - The ID of the channel.\n     * @param {number} threadId - The ID of the thread.\n     * @param {object} data - The settings to modify.\n     * @param {boolean} [data.notification_level] - The new notification level, c.f. Chat::NotificationLevels. Threads only support\n     *  \"regular\" and \"tracking\" for now.\n     * @returns {Promise}\n     */\n    updateCurrentUserThreadNotificationsSettings(channelId, threadId, data) {\n      return this.#putRequest(`/channels/${channelId}/threads/${threadId}/notifications-settings/me`, {\n        notification_level: data.notificationLevel\n      });\n    }\n\n    /**\n     * Update thread title prompt of current user for a thread.\n     * @param {number} channelId - The ID of the channel.\n     * @param {number} threadId - The ID of the thread.\n     * @returns {Promise}\n     */\n    updateCurrentUserThreadTitlePrompt(channelId, threadId) {\n      return this.#postRequest(`/channels/${channelId}/threads/${threadId}/mark-thread-title-prompt-seen/me`);\n    }\n\n    /**\n     * Saves a draft for the channel, which includes message contents and uploads.\n     * @param {number} channelId - The ID of the channel.\n     * @param {object} data - The draft data, see ChatMessage.toJSONDraft() for more details.\n     * @returns {Promise}\n     */\n    saveDraft(channelId, data, options = {}) {\n      let endpoint = `/chat/api/channels/${channelId}`;\n      if (options.threadId) {\n        endpoint += `/threads/${options.threadId}`;\n      }\n      endpoint += \"/drafts\";\n      return (0, _ajax.ajax)(endpoint, {\n        type: \"POST\",\n        data: {\n          data\n        },\n        ignoreUnsent: false\n      }).then(() => {\n        this.chat.markNetworkAsReliable();\n      }).catch(error => {\n        // we ignore a draft which can't be saved because it's too big\n        // and only deal with network error for now\n        if (!error.jqXHR?.responseJSON?.errors?.length) {\n          this.chat.markNetworkAsUnreliable();\n        }\n      });\n    }\n\n    /**\n     * Adds or removes an emoji reaction for a message inside a channel.\n     * @param {number} channelId - The ID of the channel.\n     * @param {number} messageId - The ID of the message to react on.\n     * @param {string} emoji - The text version of the emoji without colons, e.g. tada\n     * @param {string} reaction - Either \"add\" or \"remove\"\n     * @returns {Promise}\n     */\n    publishReaction(channelId, messageId, emoji, reactAction) {\n      return (0, _ajax.ajax)(`/chat/${channelId}/react/${messageId}`, {\n        type: \"PUT\",\n        data: {\n          react_action: reactAction,\n          emoji\n        }\n      });\n    }\n\n    /**\n     * Restores a single deleted chat message in a channel.\n     *\n     * @param {number} channelId - The ID of the channel for the message being restored.\n     * @param {number} messageId - The ID of the message being restored.\n     */\n    restoreMessage(channelId, messageId) {\n      return this.#putRequest(`/channels/${channelId}/messages/${messageId}/restore`);\n    }\n\n    /**\n     * Rebakes the cooked HTML of a single message in a channel.\n     *\n     * @param {number} channelId - The ID of the channel for the message being restored.\n     * @param {number} messageId - The ID of the message being restored.\n     */\n    rebakeMessage(channelId, messageId) {\n      return (0, _ajax.ajax)(`/chat/${channelId}/${messageId}/rebake`, {\n        type: \"PUT\"\n      });\n    }\n\n    /**\n     * Saves an edit to a message's contents in a channel.\n     *\n     * @param {number} channelId - The ID of the channel for the message being edited.\n     * @param {number} messageId - The ID of the message being edited.\n     * @param {object} data - Params of the edit.\n     * @param {string} data.new_message - The edited content of the message.\n     * @param {Array<number>} data.upload_ids - The uploads attached to the message after editing.\n     */\n    editMessage(channelId, messageId, data) {\n      return this.#putRequest(`/channels/${channelId}/messages/${messageId}`, data);\n    }\n\n    /**\n     * Marks messages for all of a user's chat channel memberships as read.\n     *\n     * @returns {Promise}\n     */\n    markAllChannelsAsRead() {\n      return this.#putRequest(`/channels/read`);\n    }\n\n    /**\n     * Lists all possible chatables.\n     *\n     * @param {term} string - The term to search for. # prefix will scope to channels, @ to users.\n     *\n     * @returns {Promise}\n     */\n    chatables(args = {}) {\n      return this.#getRequest(\"/chatables\", args);\n    }\n\n    /**\n     * Marks messages for a single user chat channel membership as read. If no\n     * message ID is provided, then the latest message for the channel is fetched\n     * on the server and used for the last read message.\n     *\n     * @param {number} channelId - The ID of the channel for the message being marked as read.\n     * @param {number} [messageId] - The ID of the message being marked as read.\n     * @returns {Promise}\n     */\n    markChannelAsRead(channelId, messageId = null) {\n      return this.#putRequest(`/channels/${channelId}/read?message_id=${messageId}`);\n    }\n\n    /**\n     * Marks messages for a single user chat thread membership as read. If no\n     * message ID is provided, then the latest message for the channel is fetched\n     * on the server and used for the last read message.\n     *\n     * @param {number} channelId - The ID of the channel for the thread being marked as read.\n     * @param {number} threadId - The ID of the thread being marked as read.\n     * @param {number} messageId - The ID of the message being marked as read.\n     * @returns {Promise}\n     */\n    markThreadAsRead(channelId, threadId, messageId) {\n      return this.#putRequest(`/channels/${channelId}/threads/${threadId}/read?message_id=${messageId}`);\n    }\n\n    /**\n     * Updates settings of a thread.\n     *\n     * @param {number} channelId - The ID of the channel for the thread being edited.\n     * @param {number} threadId - The ID of the thread being edited.\n     * @param {object} data - Params of the edit.\n     * @param {string} data.title - The new title for the thread.\n     */\n    editThread(channelId, threadId, data) {\n      return this.#putRequest(`/channels/${channelId}/threads/${threadId}`, data);\n    }\n\n    /**\n     * Generate a quote for a list of messages.\n     *\n     * @param {number} channelId - The ID of the channel containing the messages.\n     * @param {Array<number>} messageIds - The IDs of the messages to quote.\n     */\n    generateQuote(channelId, messageIds) {\n      return (0, _ajax.ajax)(`/chat/${channelId}/quote`, {\n        type: \"POST\",\n        data: {\n          message_ids: messageIds\n        }\n      });\n    }\n\n    /**\n     * Invite users to a channel.\n     *\n     * @param {number} channelId - The ID of the channel.\n     * @param {Array<number>} userIds - The IDs of the users to invite.\n     * @param {object} options\n     * @param {number} options.chat_message_id - A message ID to display in the invite.\n     */\n    invite(channelId, userIds, options = {}) {\n      return this.#postRequest(`/channels/${channelId}/invites`, {\n        user_ids: userIds,\n        message_id: options.messageId\n      });\n    }\n\n    /**\n     * Add members to a channel.\n     *\n     * @param {number} channelId - The ID of the channel.\n     * @param {object} targets\n     * @param {Array<string>} targets.usernames - The usernames of the users to add.\n     * @param {Array<string>} targets.groups - The groups names of the groups to add.\n     */\n    addMembersToChannel(channelId, targets) {\n      return this.#postRequest(`/channels/${channelId}/memberships`, {\n        usernames: targets.usernames,\n        groups: targets.groups\n      });\n    }\n\n    /**\n     * Remove member from a channel.\n     *\n     * @param {number} channelId - The ID of the channel.\n     * @param {string} userId - The ID of the user to remove.\n     */\n    removeMemberFromChannel(channelId, userId) {\n      return this.#deleteRequest(`/channels/${channelId}/memberships/${userId}`);\n    }\n    pinMessage(channelId, messageId) {\n      return this.#postRequest(`/channels/${channelId}/messages/${messageId}/pin`);\n    }\n    unpinMessage(channelId, messageId) {\n      return this.#deleteRequest(`/channels/${channelId}/messages/${messageId}/pin`);\n    }\n    async pinnedMessages(channel) {\n      const response = await this.#getRequest(`/channels/${channel.id}/pins`);\n      const pinnedMessages = response.pinned_messages.map(pin => {\n        const message = _chatMessage.default.create(channel, pin.message);\n        message.channel = channel;\n        return {\n          ...pin,\n          message\n        };\n      });\n      if (response.membership && channel.currentUserMembership) {\n        channel.currentUserMembership.hasUnseenPins = response.membership.has_unseen_pins;\n        channel.currentUserMembership.lastViewedPinsAt = response.membership.last_viewed_pins_at;\n      }\n      return pinnedMessages;\n    }\n    markPinsAsRead(channelId) {\n      return this.#putRequest(`/channels/${channelId}/pins/read`);\n    }\n    get #basePath() {\n      return \"/chat/api\";\n    }\n    #getRequest(endpoint, data = {}) {\n      return (0, _ajax.ajax)(`${this.#basePath}${endpoint}`, {\n        type: \"GET\",\n        data\n      });\n    }\n    #putRequest(endpoint, data = {}) {\n      return (0, _ajax.ajax)(`${this.#basePath}${endpoint}`, {\n        type: \"PUT\",\n        data\n      });\n    }\n    #postRequest(endpoint, data = {}) {\n      return (0, _ajax.ajax)(`${this.#basePath}${endpoint}`, {\n        type: \"POST\",\n        data\n      });\n    }\n    #deleteRequest(endpoint, data = {}) {\n      return (0, _ajax.ajax)(`${this.#basePath}${endpoint}`, {\n        type: \"DELETE\",\n        data\n      });\n    }\n  }\n  _exports.default = ChatApi;\n});","define(\"discourse/plugins/chat/discourse/services/chat-audio-manager\", [\"exports\", \"@ember/service\", \"discourse/lib/environment\", \"discourse/lib/get-url\"], function (_exports, _service, _environment, _getUrl) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _exports.CHAT_SOUNDS = void 0;\n  const CHAT_SOUNDS = _exports.CHAT_SOUNDS = {\n    bell: [{\n      src: \"/plugins/chat/audio/bell.mp3\",\n      type: \"audio/mpeg\"\n    }],\n    ding: [{\n      src: \"/plugins/chat/audio/ding.mp3\",\n      type: \"audio/mpeg\"\n    }]\n  };\n  const DEFAULT_SOUND_NAME = \"bell\";\n  const THROTTLE_TIME = 3000; // 3 seconds\n\n  class ChatAudioManager extends _service.default {\n    canPlay = true;\n    async play(name) {\n      if (this.canPlay) {\n        await this.#tryPlay(name);\n        this.canPlay = false;\n        setTimeout(() => {\n          this.canPlay = true;\n        }, THROTTLE_TIME);\n      }\n    }\n    async #tryPlay(name) {\n      const src = (0, _getUrl.getURLWithCDN)((CHAT_SOUNDS[name] || CHAT_SOUNDS[DEFAULT_SOUND_NAME])[0].src);\n      const audio = new Audio(src);\n      try {\n        await audio.play();\n      } catch {\n        if (!(0, _environment.isTesting)()) {\n          // eslint-disable-next-line no-console\n          console.info(\"[chat] User needs to interact with DOM before we can play notification sounds.\");\n        }\n      }\n    }\n  }\n  _exports.default = ChatAudioManager;\n});","define(\"discourse/plugins/chat/discourse/services/chat-channel-composer\", [\"exports\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\"], function (_exports, _tracking, _object, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelComposer extends _service.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"threadComposer\", [(0, _service.service)(\"chat-thread-composer\")]);\n    }\n    #threadComposer = (dt7948.i(this, \"threadComposer\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"loadingSlider\", [_service.service]);\n    }\n    #loadingSlider = (dt7948.i(this, \"loadingSlider\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"appEvents\", [_service.service]);\n    }\n    #appEvents = (dt7948.i(this, \"appEvents\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"textarea\", [_tracking.tracked]);\n    }\n    #textarea = (dt7948.i(this, \"textarea\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"scroller\", [_tracking.tracked]);\n    }\n    #scroller = (dt7948.i(this, \"scroller\"), void 0);\n    init() {\n      super.init(...arguments);\n      this.appEvents.on(\"discourse:focus-changed\", this, this.blur);\n    }\n    willDestroy() {\n      super.willDestroy(...arguments);\n      this.appEvents.off(\"discourse:focus-changed\", this, this.blur);\n    }\n    focus(options = {}) {\n      this.textarea?.focus(options);\n    }\n    static {\n      dt7948.n(this.prototype, \"focus\", [_object.action]);\n    }\n    blur() {\n      this.textarea?.blur();\n    }\n    static {\n      dt7948.n(this.prototype, \"blur\", [_object.action]);\n    }\n    edit(message) {\n      this.chat.activeMessage = null;\n      message.editing = true;\n      message.channel.draft = message;\n      if (this.site.desktopView) {\n        this.focus({\n          refreshHeight: true,\n          ensureAtEnd: true\n        });\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"edit\", [_object.action]);\n    }\n    async replyTo(message) {\n      this.chat.activeMessage = null;\n      if (message.channel.threadingEnabled) {\n        if (!message.thread?.id) {\n          try {\n            this.loadingSlider.transitionStarted();\n            const threadObject = await this.chatApi.createThread(message.channel.id, message.id);\n            message.thread = message.channel.threadsManager.add(message.channel, threadObject);\n          } finally {\n            this.loadingSlider.transitionEnded();\n          }\n        }\n        message.channel.resetDraft(this.currentUser);\n        try {\n          await this.router.transitionTo(\"chat.channel.thread\", ...message.thread.routeModels);\n        } catch (e) {\n          if (e.name !== \"TransitionAborted\") {\n            throw e;\n          }\n        }\n        this.threadComposer.focus({\n          ensureAtEnd: true,\n          refreshHeight: true\n        });\n      } else {\n        message.channel.draft.inReplyTo = message;\n        this.focus({\n          ensureAtEnd: true,\n          refreshHeight: true\n        });\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"replyTo\", [_object.action]);\n    }\n  }\n  _exports.default = ChatChannelComposer;\n});","define(\"discourse/plugins/chat/discourse/services/chat-channel-info-route-origin-manager\", [\"exports\", \"@ember/service\", \"@ember/utils\", \"discourse/lib/key-value-store\"], function (_exports, _service, _utils, _keyValueStore) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _exports.ORIGINS = _exports.INFO_ROUTE_NAMESPACE = _exports.BACK_KEY = void 0;\n  const BACK_KEY = _exports.BACK_KEY = \"back\";\n  const INFO_ROUTE_NAMESPACE = _exports.INFO_ROUTE_NAMESPACE = \"discourse_chat_info_route\";\n  const ORIGINS = _exports.ORIGINS = {\n    channel: \"channel\",\n    browse: \"browse\"\n  };\n  class ChatChannelInfoRouteOriginManager extends _service.default {\n    store = new _keyValueStore.default(INFO_ROUTE_NAMESPACE);\n    get origin() {\n      const origin = this.store.getObject(BACK_KEY);\n      if (origin) {\n        return ORIGINS[origin];\n      }\n    }\n    set origin(value) {\n      this.store.setObject({\n        key: BACK_KEY,\n        value\n      });\n    }\n    get isBrowse() {\n      return this.origin === ORIGINS.browse;\n    }\n    get isChannel() {\n      return this.origin === ORIGINS.channel || (0, _utils.isEmpty)(this.origin);\n    }\n  }\n  _exports.default = ChatChannelInfoRouteOriginManager;\n});","define(\"discourse/plugins/chat/discourse/services/chat-channel-notices-manager\", [\"exports\", \"@glimmer/tracking\", \"@ember/service\", \"@ember-compat/tracked-built-ins\", \"discourse/plugins/chat/discourse/models/chat-notice\"], function (_exports, _tracking, _service, _trackedBuiltIns, _chatNotice) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelNoticesManager extends _service.default {\n    static {\n      dt7948.g(this.prototype, \"notices\", [_tracking.tracked], function () {\n        return new _trackedBuiltIns.TrackedArray();\n      });\n    }\n    #notices = (dt7948.i(this, \"notices\"), void 0);\n    handleNotice(data) {\n      this.notices.push(_chatNotice.default.create(data));\n    }\n    clearNotice(notice) {\n      this.notices = new _trackedBuiltIns.TrackedArray(this.notices.filter(n => n.id !== notice.id));\n    }\n  }\n  _exports.default = ChatChannelNoticesManager;\n});","define(\"discourse/plugins/chat/discourse/services/chat-channel-pane\", [\"exports\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\"], function (_exports, _tracking, _object, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelPane extends _service.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"reacting\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #reacting = (dt7948.i(this, \"reacting\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"selectingMessages\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #selectingMessages = (dt7948.i(this, \"selectingMessages\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"lastSelectedMessage\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #lastSelectedMessage = (dt7948.i(this, \"lastSelectedMessage\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"sending\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #sending = (dt7948.i(this, \"sending\"), void 0);\n    get channel() {\n      return this.chat.activeChannel;\n    }\n    get selectedMessageIds() {\n      return this.channel.messagesManager.selectedMessages.map(item => item.id);\n    }\n    cancelSelecting() {\n      this.selectingMessages = false;\n      this.channel.messagesManager.clearSelectedMessages();\n    }\n    static {\n      dt7948.n(this.prototype, \"cancelSelecting\", [_object.action]);\n    }\n    onSelectMessage(message) {\n      this.lastSelectedMessage = message;\n      this.selectingMessages = true;\n      this.chat.activeMessage = null;\n    }\n    static {\n      dt7948.n(this.prototype, \"onSelectMessage\", [_object.action]);\n    }\n  }\n  _exports.default = ChatChannelPane;\n});","define(\"discourse/plugins/chat/discourse/services/chat-channel-scroll-positions\", [\"exports\", \"@glimmer/tracking\", \"@ember/service\", \"@ember-compat/tracked-built-ins\"], function (_exports, _tracking, _service, _trackedBuiltIns) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatChannelScrollPositions extends _service.default {\n    static {\n      dt7948.g(this.prototype, \"positions\", [_tracking.tracked], function () {\n        return new _trackedBuiltIns.TrackedMap();\n      });\n    }\n    #positions = (dt7948.i(this, \"positions\"), void 0);\n    get(id) {\n      return this.positions.get(id);\n    }\n    set(id, position) {\n      this.positions.set(id, position);\n    }\n    delete(id) {\n      if (this.positions.has(id)) {\n        this.positions.delete(id);\n      }\n    }\n  }\n  _exports.default = ChatChannelScrollPositions;\n});","define(\"discourse/plugins/chat/discourse/services/chat-channels-manager\", [\"exports\", \"@glimmer/tracking\", \"@ember/service\", \"@ember-compat/tracked-built-ins\", \"rsvp\", \"discourse/lib/ajax-error\", \"discourse/lib/decorators\", \"discourse/plugins/chat/discourse/models/chat-channel\", \"discourse/plugins/chat/discourse/models/chat-message\"], function (_exports, _tracking, _service, _trackedBuiltIns, _rsvp, _ajaxError, _decorators, _chatChannel, _chatMessage) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const DIRECT_MESSAGE_CHANNELS_LIMIT = 50;\n\n  /*\n    The ChatChannelsManager service is responsible for managing the loaded chat channels.\n    It provides helpers to facilitate using and managing loaded channels instead of constantly\n    fetching them from the server.\n  */\n\n  class ChatChannelsManager extends _service.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatSubscriptionsManager\", [_service.service]);\n    }\n    #chatSubscriptionsManager = (dt7948.i(this, \"chatSubscriptionsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatDraftsManager\", [_service.service]);\n    }\n    #chatDraftsManager = (dt7948.i(this, \"chatDraftsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"userHasThreads\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #userHasThreads = (dt7948.i(this, \"userHasThreads\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"_cached\", [_tracking.tracked], function () {\n        return new _trackedBuiltIns.TrackedObject();\n      });\n    }\n    #_cached = (dt7948.i(this, \"_cached\"), void 0);\n    async find(id, options = {\n      fetchIfNotFound: true\n    }) {\n      const existingChannel = this.#findStale(id);\n      if (existingChannel) {\n        return _rsvp.default.resolve(existingChannel);\n      } else if (options.fetchIfNotFound) {\n        return await this.#find(id);\n      } else {\n        return _rsvp.default.resolve();\n      }\n    }\n    get channels() {\n      return Object.values(this._cached);\n    }\n    static {\n      dt7948.n(this.prototype, \"channels\", [_tracking.cached]);\n    }\n    store(channelObject, options = {}) {\n      let model;\n      if (!options.replace) {\n        model = this.#findStale(channelObject.id);\n      }\n      if (!model) {\n        if (channelObject instanceof _chatChannel.default) {\n          model = channelObject;\n        } else {\n          model = _chatChannel.default.create(channelObject);\n        }\n        this.#cache(model);\n      }\n      if (channelObject.meta?.message_bus_last_ids?.channel_message_bus_last_id !== undefined) {\n        model.channelMessageBusLastId = channelObject.meta.message_bus_last_ids.channel_message_bus_last_id;\n      }\n      this.#storeDraftsForChannel(model);\n      return model;\n    }\n    #storeDraftsForChannel(channel) {\n      const userChatDrafts = this.currentUser?.chat_drafts;\n      if (!userChatDrafts) {\n        return;\n      }\n      const storedDrafts = userChatDrafts.filter(draft => draft.channel_id === channel.id);\n      storedDrafts.forEach(storedDraft => {\n        if (this.chatDraftsManager.get(storedDraft.channel_id, storedDraft.thread_id)) {\n          return;\n        }\n        this.chatDraftsManager.add(_chatMessage.default.createDraftMessage(channel, Object.assign({\n          user: this.currentUser\n        }, JSON.parse(storedDraft.data))), storedDraft.channel_id, storedDraft.thread_id, false);\n      });\n    }\n    async follow(model) {\n      this.chatSubscriptionsManager.startChannelSubscription(model);\n      if (!model.currentUserMembership.following) {\n        return this.chatApi.followChannel(model.id).then(membership => {\n          model.currentUserMembership = membership;\n          return model;\n        });\n      } else {\n        return model;\n      }\n    }\n    async unfollow(model) {\n      try {\n        this.chatSubscriptionsManager.stopChannelSubscription(model);\n        model.currentUserMembership = await this.chatApi.unfollowChannel(model.id);\n        return model;\n      } catch (error) {\n        (0, _ajaxError.popupAjaxError)(error);\n      }\n    }\n    async markAllChannelsRead() {\n      // The user tracking state for each channel marked read will be propagated by MessageBus\n      return this.chatApi.markAllChannelsAsRead();\n    }\n    static {\n      dt7948.n(this.prototype, \"markAllChannelsRead\", [(0, _decorators.debounce)(300)]);\n    }\n    remove(model) {\n      if (!model) {\n        return;\n      }\n      this.chatSubscriptionsManager.stopChannelSubscription(model);\n      delete this._cached[model.id];\n    }\n    get hasThreadedChannels() {\n      return this.allChannels?.some(channel => channel.threadingEnabled);\n    }\n    static {\n      dt7948.n(this.prototype, \"hasThreadedChannels\", [_tracking.cached]);\n    }\n    get shouldShowMyThreads() {\n      return this.hasThreadedChannels && this.userHasThreads;\n    }\n    get allChannels() {\n      return [...this.publicMessageChannels, ...this.directMessageChannels].sort((a, b) => {\n        return b?.currentUserMembership?.lastViewedAt?.localeCompare?.(a?.currentUserMembership?.lastViewedAt);\n      });\n    }\n    get publicMessageChannels() {\n      return this.#sortChannelsByProperty(this.channels.filter(channel => channel.isCategoryChannel && channel.currentUserMembership.following), \"slug\");\n    }\n    static {\n      dt7948.n(this.prototype, \"publicMessageChannels\", [_tracking.cached]);\n    }\n    get publicMessageChannelsWithActivity() {\n      return this.publicMessageChannels.filter(channel => channel.hasUnread);\n    }\n    get publicMessageChannelsByActivity() {\n      return this.#sortChannelsByActivity([...this.publicMessageChannels]);\n    }\n\n    /**\n     * Returns all public message channels sorted by activity (unreads first).\n     * Used in mobile/drawer mode where starred channels appear in both tabs.\n     *\n     * @returns {ChatChannel[]} Array of public channels sorted by activity\n     */\n    get allPublicChannelsByActivity() {\n      return this.#sortChannelsByActivityUnreadsFirst([...this.publicMessageChannels]);\n    }\n\n    /**\n     * Returns public message channels that are not starred, sorted by activity.\n     * Falls back to all public channels by activity if starring is disabled.\n     * Channels with unreads appear first, then sorted alphabetically.\n     *\n     * @returns {ChatChannel[]} Array of unstarred public channels sorted by activity\n     */\n    get unstarredPublicMessageChannelsByActivity() {\n      return this.#sortChannelsByActivity(this.channels.filter(channel => channel.isCategoryChannel && channel.currentUserMembership?.following && !channel.currentUserMembership?.starred));\n    }\n    get directMessageChannels() {\n      return this.#sortDirectMessageChannels(this.channels.filter(channel => {\n        const membership = channel.currentUserMembership;\n        return channel.isDirectMessageChannel && membership.following;\n      }));\n    }\n    static {\n      dt7948.n(this.prototype, \"directMessageChannels\", [_tracking.cached]);\n    }\n    get directMessageChannelsWithActivity() {\n      return this.directMessageChannels.filter(channel => channel.hasUnread);\n    }\n    get truncatedDirectMessageChannels() {\n      return this.directMessageChannels.slice(0, DIRECT_MESSAGE_CHANNELS_LIMIT);\n    }\n\n    /**\n     * Returns all direct message channels sorted by activity (unreads first).\n     * Used in mobile/drawer mode where starred channels appear in both tabs.\n     *\n     * @returns {ChatChannel[]} Array of DM channels sorted by activity\n     */\n    get directMessageChannelsByActivity() {\n      return this.#sortDirectMessageChannelsByActivity(this.channels.filter(channel => {\n        const membership = channel.currentUserMembership;\n        return channel.isDirectMessageChannel && membership?.following;\n      }));\n    }\n    get truncatedDirectMessageChannelsByActivity() {\n      return this.directMessageChannelsByActivity.slice(0, DIRECT_MESSAGE_CHANNELS_LIMIT);\n    }\n\n    /**\n     * Returns all channels (public and DM) that the current user has starred.\n     * Public channels are sorted alphabetically by slug, DMs by title.\n     *\n     * @returns {ChatChannel[]} Array of starred channels\n     */\n    get starredChannels() {\n      const starredPublic = this.channels.filter(channel => channel.isCategoryChannel && channel.currentUserMembership?.following && channel.currentUserMembership?.starred).sort((a, b) => (a.slug || \"\").localeCompare(b.slug || \"\"));\n      const starredDMs = this.channels.filter(channel => channel.isDirectMessageChannel && channel.currentUserMembership?.following && channel.currentUserMembership?.starred).sort((a, b) => (a.title || \"\").localeCompare(b.title || \"\"));\n      return [...starredPublic, ...starredDMs];\n    }\n\n    /**\n     * Checks if the current user has any starred channels.\n     *\n     * @returns {boolean} True if user has starred at least one channel\n     */\n    get hasStarredChannels() {\n      return this.starredChannels.length > 0;\n    }\n\n    /**\n     * Returns all starred channels sorted by activity (unreads first).\n     * Prioritizes unread status over channel type:\n     * 1. Unread public channels (sorted by activity)\n     * 2. Unread DMs/Groups (sorted by activity)\n     * 3. Read public channels (sorted by activity)\n     * 4. Read DMs/Groups (sorted by activity)\n     *\n     * @returns {ChatChannel[]} Array of starred channels sorted by activity\n     */\n    get starredChannelsByActivity() {\n      const starredChannels = this.channels.filter(channel => channel.currentUserMembership?.following && channel.currentUserMembership?.starred);\n      return starredChannels.sort((a, b) => {\n        const aUrgent = this.#getChannelUrgentCount(a);\n        const bUrgent = this.#getChannelUrgentCount(b);\n        const aUnread = this.#getChannelUnreadCount(a);\n        const bUnread = this.#getChannelUnreadCount(b);\n        const aHasActivity = aUrgent > 0 || aUnread > 0;\n        const bHasActivity = bUrgent > 0 || bUnread > 0;\n\n        // First: prioritize channels with activity over those without\n        if (aHasActivity !== bHasActivity) {\n          return aHasActivity ? -1 : 1;\n        }\n\n        // Within the same activity state, sort by channel type (public first)\n        if (a.isDirectMessageChannel !== b.isDirectMessageChannel) {\n          return a.isDirectMessageChannel ? 1 : -1;\n        }\n\n        // Within the same channel type and activity state:\n        // If both have activity, prioritize by urgent then unread\n        if (aHasActivity && bHasActivity) {\n          if (aUrgent > 0 && bUrgent > 0) {\n            return this.#compareByLastActivity(a, b);\n          }\n          if (aUrgent > 0 || bUrgent > 0) {\n            return aUrgent > bUrgent ? -1 : 1;\n          }\n          if (aUnread > 0 && bUnread > 0) {\n            return this.#compareByLastActivity(a, b);\n          }\n          if (aUnread > 0 || bUnread > 0) {\n            return aUnread > bUnread ? -1 : 1;\n          }\n        }\n\n        // Sort remaining by last activity\n        return this.#compareByLastActivity(a, b);\n      });\n    }\n    #getChannelUrgentCount(channel) {\n      if (channel.isDirectMessageChannel) {\n        return channel.tracking.unreadCount + channel.tracking.mentionCount + channel.tracking.watchedThreadsUnreadCount;\n      }\n      return channel.tracking.mentionCount + channel.tracking.watchedThreadsUnreadCount;\n    }\n    #getChannelUnreadCount(channel) {\n      return channel.tracking.unreadCount + channel.unreadThreadsCountSinceLastViewed;\n    }\n    #compareByLastActivity(a, b) {\n      const aDate = a.lastMessage?.createdAt ? new Date(a.lastMessage.createdAt) : new Date(0);\n      const bDate = b.lastMessage?.createdAt ? new Date(b.lastMessage.createdAt) : new Date(0);\n      return bDate - aDate;\n    }\n\n    /**\n     * Returns public message channels that are not starred.\n     * Falls back to all public channels if starring is disabled.\n     * Channels are sorted with starred channels first, then by slug.\n     *\n     * @returns {ChatChannel[]} Array of unstarred public channels\n     */\n    get unstarredPublicMessageChannels() {\n      return this.#sortChannelsByProperty(this.channels.filter(channel => channel.isCategoryChannel && channel.currentUserMembership?.following && !channel.currentUserMembership?.starred), \"slug\");\n    }\n\n    /**\n     * Returns direct message channels that are not starred.\n     * Falls back to all DM channels if starring is disabled.\n     * Channels are sorted with starred channels first, then by activity.\n     *\n     * @returns {ChatChannel[]} Array of unstarred DM channels\n     */\n    get unstarredDirectMessageChannels() {\n      return this.#sortDirectMessageChannels(this.channels.filter(channel => {\n        const membership = channel.currentUserMembership;\n        return channel.isDirectMessageChannel && membership?.following && !membership?.starred;\n      }));\n    }\n    get truncatedUnstarredDirectMessageChannels() {\n      return this.unstarredDirectMessageChannels.slice(0, DIRECT_MESSAGE_CHANNELS_LIMIT);\n    }\n    async #find(id) {\n      try {\n        const result = await this.chatApi.channel(id);\n        return this.store(result.channel);\n      } catch (error) {\n        (0, _ajaxError.popupAjaxError)(error);\n      }\n    }\n    get publicMessageChannelsEmpty() {\n      return this.publicMessageChannels?.length === 0 && this.chatStateManager.hasPreloadedChannels;\n    }\n    get displayPublicChannels() {\n      if (!this.siteSettings.enable_public_channels) {\n        return false;\n      }\n      if (!this.chatStateManager.hasPreloadedChannels) {\n        return false;\n      }\n      if (this.publicMessageChannelsEmpty) {\n        return this.currentUser?.staff || this.currentUser?.has_joinable_public_channels;\n      }\n      return true;\n    }\n    #cache(channel) {\n      if (!channel) {\n        return;\n      }\n      this._cached[channel.id] = channel;\n    }\n    #findStale(id) {\n      return this._cached[id];\n    }\n\n    /**\n     * Compares two channels for sorting, prioritizing starred channels.\n     * Returns a sort value if starred status differs, or if both are starred.\n     * Returns null if both channels have the same starred status (both unstarred).\n     *\n     * @param {ChatChannel} a - First channel to compare\n     * @param {ChatChannel} b - Second channel to compare\n     * @param {string} property - Property name to use for sorting starred channels\n     * @returns {number|null} Sort value (-1, 0, 1) or null if no starred sorting needed\n     */\n    #compareStarredChannels(a, b, property) {\n      const aStarred = a.currentUserMembership?.starred;\n      const bStarred = b.currentUserMembership?.starred;\n\n      // if both channels are starred, sort by the specified property\n      if (aStarred && bStarred) {\n        const aValue = a[property] || \"\";\n        const bValue = b[property] || \"\";\n        return aValue.localeCompare(bValue);\n      }\n\n      // prioritize starred channels over non-starred\n      if (aStarred || bStarred) {\n        return aStarred ? -1 : 1;\n      }\n      return null; // no starred sorting needed\n    }\n\n    /**\n     * Wraps a comparison function with starred channel prioritization.\n     * Starred channels are always sorted first, then the provided comparison\n     * function is used for unstarred channels.\n     *\n     * @param {string} property - Property name to use for sorting starred channels\n     * @param {Function} compareFn - Comparison function for unstarred channels\n     * @returns {Function} Wrapped comparison function\n     */\n    #withStarredPriority(property, compareFn) {\n      return (a, b) => {\n        const starredResult = this.#compareStarredChannels(a, b, property);\n        if (starredResult !== null) {\n          return starredResult;\n        }\n        return compareFn(a, b);\n      };\n    }\n    #sortChannelsByActivity(channels) {\n      return channels.sort(this.#withStarredPriority(\"slug\", (a, b) => {\n        return this.#compareChannelsByActivity(a, b);\n      }));\n    }\n\n    /**\n     * Sorts public channels by activity without starred priority.\n     * Unreads come first regardless of starred status.\n     */\n    #sortChannelsByActivityUnreadsFirst(channels) {\n      return channels.sort((a, b) => {\n        return this.#compareChannelsByActivity(a, b);\n      });\n    }\n    #compareChannelsByActivity(a, b) {\n      const stats = {\n        a: {\n          urgent: a.tracking.mentionCount + a.tracking.watchedThreadsUnreadCount,\n          unread: a.tracking.unreadCount + a.unreadThreadsCountSinceLastViewed\n        },\n        b: {\n          urgent: b.tracking.mentionCount + b.tracking.watchedThreadsUnreadCount,\n          unread: b.tracking.unreadCount + b.unreadThreadsCountSinceLastViewed\n        }\n      };\n\n      // if both channels have urgent count, sort by slug\n      // otherwise prioritize channel with urgent count\n      if (stats.a.urgent > 0 && stats.b.urgent > 0) {\n        return a.slug?.localeCompare?.(b.slug);\n      }\n      if (stats.a.urgent > 0 || stats.b.urgent > 0) {\n        return stats.a.urgent > stats.b.urgent ? -1 : 1;\n      }\n\n      // if both channels have unread messages or threads, sort by slug\n      // otherwise prioritize channel with unread count\n      if (stats.a.unread > 0 && stats.b.unread > 0) {\n        return a.slug?.localeCompare?.(b.slug);\n      }\n      if (stats.a.unread > 0 || stats.b.unread > 0) {\n        return stats.a.unread > stats.b.unread ? -1 : 1;\n      }\n      return a.slug?.localeCompare?.(b.slug);\n    }\n    #sortChannelsByProperty(channels, property) {\n      return channels.sort(this.#withStarredPriority(property, (a, b) => {\n        return (a[property] || \"\").localeCompare(b[property] || \"\");\n      }));\n    }\n    #sortDirectMessageChannels(channels) {\n      return channels.sort(this.#withStarredPriority(\"title\", (a, b) => {\n        return this.#compareDirectMessageChannelsByActivity(a, b);\n      }));\n    }\n\n    /**\n     * Sorts DM channels by activity without starred priority.\n     * Unreads come first regardless of starred status.\n     */\n    #sortDirectMessageChannelsByActivity(channels) {\n      return channels.sort((a, b) => {\n        return this.#compareDirectMessageChannelsByActivity(a, b);\n      });\n    }\n    #compareDirectMessageChannelsByActivity(a, b) {\n      if (!a.lastMessage.id) {\n        return 1;\n      }\n      if (!b.lastMessage.id) {\n        return -1;\n      }\n      const aUrgent = a.tracking.unreadCount + a.tracking.mentionCount + a.tracking.watchedThreadsUnreadCount;\n      const bUrgent = b.tracking.unreadCount + b.tracking.mentionCount + b.tracking.watchedThreadsUnreadCount;\n      const aUnread = a.unreadThreadsCountSinceLastViewed;\n      const bUnread = b.unreadThreadsCountSinceLastViewed;\n\n      // if both channels have urgent count, sort by last message date\n      if (aUrgent > 0 && bUrgent > 0) {\n        return new Date(a.lastMessage.createdAt) > new Date(b.lastMessage.createdAt) ? -1 : 1;\n      }\n\n      // otherwise prioritize channel with urgent count\n      if (aUrgent > 0 || bUrgent > 0) {\n        return aUrgent > bUrgent ? -1 : 1;\n      }\n\n      // if both channels have unread threads, sort by last thread reply date\n      if (aUnread > 0 && bUnread > 0) {\n        return a.lastUnreadThreadDate > b.lastUnreadThreadDate ? -1 : 1;\n      }\n\n      // otherwise prioritize channel with unread thread count\n      if (aUnread > 0 || bUnread > 0) {\n        return aUnread > bUnread ? -1 : 1;\n      }\n\n      // read channels are sorted by last message date\n      return new Date(a.lastMessage.createdAt) > new Date(b.lastMessage.createdAt) ? -1 : 1;\n    }\n  }\n  _exports.default = ChatChannelsManager;\n});","define(\"discourse/plugins/chat/discourse/services/chat-composer-warnings-tracker\", [\"exports\", \"@glimmer/tracking\", \"@ember/runloop\", \"@ember/service\", \"discourse/lib/ajax\", \"discourse/lib/debounce\", \"discourse/lib/decorators\"], function (_exports, _tracking, _runloop, _service, _ajax, _debounce, _decorators) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const MENTION_RESULT = {\n    invalid: -1,\n    unreachable: 0,\n    over_members_limit: 1\n  };\n  const MENTION_DEBOUNCE_MS = 1000;\n  class ChatComposerWarningsTracker extends _service.default {\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"unreachableGroupMentions\", [_tracking.tracked], function () {\n        return [];\n      });\n    }\n    #unreachableGroupMentions = (dt7948.i(this, \"unreachableGroupMentions\"), void 0); // Track mention hints to display warnings\n    static {\n      dt7948.g(this.prototype, \"overMembersLimitGroupMentions\", [_tracking.tracked], function () {\n        return [];\n      });\n    }\n    #overMembersLimitGroupMentions = (dt7948.i(this, \"overMembersLimitGroupMentions\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"tooManyMentions\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #tooManyMentions = (dt7948.i(this, \"tooManyMentions\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"channelWideMentionDisallowed\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #channelWideMentionDisallowed = (dt7948.i(this, \"channelWideMentionDisallowed\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"mentionsCount\", [_tracking.tracked], function () {\n        return 0;\n      });\n    }\n    #mentionsCount = (dt7948.i(this, \"mentionsCount\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"mentionsTimer\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #mentionsTimer = (dt7948.i(this, \"mentionsTimer\"), void 0);\n    // Complimentary structure to avoid repeating mention checks.\n    _mentionWarningsSeen = {};\n    willDestroy() {\n      (0, _runloop.cancel)(this.mentionsTimer);\n    }\n    reset() {\n      this.#resetMentionStats();\n      this.mentionsCount = 0;\n      (0, _runloop.cancel)(this.mentionsTimer);\n    }\n    static {\n      dt7948.n(this.prototype, \"reset\", [_decorators.bind]);\n    }\n    trackMentions(currentMessage, skipDebounce) {\n      if (skipDebounce) {\n        return this._trackMentions(currentMessage);\n      }\n      this.mentionsTimer = (0, _debounce.default)(this, this._trackMentions, currentMessage, MENTION_DEBOUNCE_MS);\n    }\n    static {\n      dt7948.n(this.prototype, \"trackMentions\", [_decorators.bind]);\n    }\n    _trackMentions(currentMessage) {\n      if (!this.siteSettings.enable_mentions) {\n        return;\n      }\n      currentMessage.parseMentions().then(mentions => {\n        this.mentionsCount = mentions?.length;\n        if (this.mentionsCount > 0) {\n          this.tooManyMentions = this.mentionsCount > this.siteSettings.max_mentions_per_chat_message;\n          if (!this.tooManyMentions) {\n            const newMentions = mentions.filter(mention => !(mention in this._mentionWarningsSeen));\n            this.channelWideMentionDisallowed = !currentMessage.channel.allowChannelWideMentions && (mentions.includes(\"here\") || mentions.includes(\"all\"));\n            if (newMentions?.length > 0) {\n              this.#recordNewWarnings(newMentions, mentions);\n            } else {\n              this.#rebuildWarnings(mentions);\n            }\n          }\n        } else {\n          this.#resetMentionStats();\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"_trackMentions\", [_decorators.bind]);\n    }\n    #resetMentionStats() {\n      this.tooManyMentions = false;\n      this.channelWideMentionDisallowed = false;\n      this.unreachableGroupMentions = [];\n      this.overMembersLimitGroupMentions = [];\n    }\n    #recordNewWarnings(newMentions, mentions) {\n      (0, _ajax.ajax)(\"/chat/api/mentions/groups.json\", {\n        data: {\n          mentions: newMentions\n        }\n      }).then(newWarnings => {\n        newWarnings.unreachable.forEach(warning => {\n          this._mentionWarningsSeen[warning] = MENTION_RESULT[\"unreachable\"];\n        });\n        newWarnings.over_members_limit.forEach(warning => {\n          this._mentionWarningsSeen[warning] = MENTION_RESULT[\"over_members_limit\"];\n        });\n        newWarnings.invalid.forEach(warning => {\n          this._mentionWarningsSeen[warning] = MENTION_RESULT[\"invalid\"];\n        });\n        this.#rebuildWarnings(mentions);\n      }).catch(this.#rebuildWarnings(mentions));\n    }\n    #rebuildWarnings(mentions) {\n      const newWarnings = mentions.reduce((memo, mention) => {\n        if (mention in this._mentionWarningsSeen && !(this._mentionWarningsSeen[mention] === MENTION_RESULT[\"invalid\"])) {\n          if (this._mentionWarningsSeen[mention] === MENTION_RESULT[\"unreachable\"]) {\n            memo[0].push(mention);\n          } else {\n            memo[1].push(mention);\n          }\n        }\n        return memo;\n      }, [[], []]);\n      this.unreachableGroupMentions = newWarnings[0];\n      this.overMembersLimitGroupMentions = newWarnings[1];\n    }\n  }\n  _exports.default = ChatComposerWarningsTracker;\n});","define(\"discourse/plugins/chat/discourse/services/chat-drafts-manager\", [\"exports\", \"@ember/runloop\", \"@ember/service\"], function (_exports, _runloop, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatDraftsManager extends _service.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    drafts = {};\n    willDestroy() {\n      super.willDestroy(...arguments);\n      (0, _runloop.cancel)(this._persistHandler);\n    }\n    async add(message, channelId, threadId, persist = true) {\n      try {\n        this.drafts[this.key(channelId, threadId)] = message;\n        if (persist) {\n          await this.persistDraft(message, channelId, threadId);\n        }\n      } catch (e) {\n        // eslint-disable-next-line no-console\n        console.log(\"Couldn't save draft\", e);\n      }\n    }\n    get(channelId, threadId) {\n      return this.drafts[this.key(channelId, threadId)];\n    }\n    remove(channelId, threadId) {\n      delete this.drafts[this.key(channelId, threadId)];\n    }\n    reset() {\n      this.drafts = {};\n    }\n    key(channelId, threadId) {\n      let key = `c-${channelId}`;\n      if (threadId) {\n        key += `:t-${threadId}`;\n      }\n      return key.toString();\n    }\n    async persistDraft(message, channelId, threadId) {\n      try {\n        await this.chatApi.saveDraft(channelId, message.toJSONDraft(), {\n          threadId\n        });\n        message.draftSaved = true;\n      } catch {\n        // We don't want to throw an error if the draft fails to save\n      }\n    }\n  }\n  _exports.default = ChatDraftsManager;\n});","define(\"discourse/plugins/chat/discourse/services/chat-drawer-router\", [\"exports\", \"@glimmer/tracking\", \"@ember/service\", \"discourse/lib/ajax-error\", \"discourse/plugins/chat/discourse/components/chat/drawer-routes/browse\", \"discourse/plugins/chat/discourse/components/chat/drawer-routes/channel\", \"discourse/plugins/chat/discourse/components/chat/drawer-routes/channel-info-members\", \"discourse/plugins/chat/discourse/components/chat/drawer-routes/channel-info-settings\", \"discourse/plugins/chat/discourse/components/chat/drawer-routes/channel-pins\", \"discourse/plugins/chat/discourse/components/chat/drawer-routes/channel-thread\", \"discourse/plugins/chat/discourse/components/chat/drawer-routes/channel-threads\", \"discourse/plugins/chat/discourse/components/chat/drawer-routes/channels\", \"discourse/plugins/chat/discourse/components/chat/drawer-routes/direct-messages\", \"discourse/plugins/chat/discourse/components/chat/drawer-routes/search\", \"discourse/plugins/chat/discourse/components/chat/drawer-routes/starred-channels\", \"discourse/plugins/chat/discourse/components/chat/drawer-routes/threads\"], function (_exports, _tracking, _service, _ajaxError, _browse, _channel, _channelInfoMembers, _channelInfoSettings, _channelPins, _channelThread, _channelThreads, _channels, _directMessages, _search, _starredChannels, _threads) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const ROUTES = {\n    chat: {\n      name: _channels.default,\n      redirect: context => {\n        if (context.siteSettings.chat_preferred_index === \"my_threads\" && context.hasThreads) {\n          return \"/chat/threads\";\n        }\n        if (context.siteSettings.chat_preferred_index === \"direct_messages\" && context.hasDirectMessages) {\n          return \"/chat/direct-messages\";\n        }\n        if (!context.siteSettings.enable_public_channels) {\n          return \"/chat/direct-messages\";\n        }\n      }\n    },\n    \"chat.browse\": {\n      name: _browse.default,\n      extractParams: () => ({\n        currentTab: \"open\"\n      })\n    },\n    \"chat.browse.open\": {\n      name: _browse.default,\n      extractParams: r => ({\n        currentTab: r.localName\n      })\n    },\n    \"chat.browse.archived\": {\n      name: _browse.default,\n      extractParams: r => ({\n        currentTab: r.localName\n      })\n    },\n    \"chat.browse.closed\": {\n      name: _browse.default,\n      extractParams: r => ({\n        currentTab: r.localName\n      })\n    },\n    \"chat.browse.all\": {\n      name: _browse.default,\n      extractParams: r => ({\n        currentTab: r.localName\n      })\n    },\n    \"chat.channels\": {\n      name: _channels.default\n    },\n    \"chat.channel\": {\n      name: _channel.default,\n      async model(params) {\n        const channel = await this.chatChannelsManager.find(params.channelId);\n        return {\n          channel\n        };\n      },\n      afterModel(model) {\n        this.chat.activeChannel = model.channel;\n      },\n      deactivate() {\n        this.chat.activeChannel = null;\n      }\n    },\n    \"chat.channel.thread\": {\n      name: _channelThread.default,\n      extractParams: route => {\n        return {\n          channelId: route.parent.params.channelId,\n          threadId: route.params.threadId\n        };\n      },\n      async model(params) {\n        const channel = await this.chatChannelsManager.find(params.channelId);\n        const thread = await channel.threadsManager.find(channel.id, params.threadId);\n        return {\n          channel,\n          thread\n        };\n      },\n      afterModel(model) {\n        this.chat.activeChannel = model.channel;\n        this.chat.activeChannel.activeThread = model.thread;\n      },\n      deactivate() {\n        this.chat.activeChannel = null;\n      }\n    },\n    \"chat.channel.thread.near-message\": {\n      name: _channelThread.default,\n      extractParams: route => {\n        return {\n          channelId: route.parent.parent.params.channelId,\n          threadId: route.parent.params.threadId,\n          messageId: route.params.messageId\n        };\n      },\n      async model(params) {\n        const channel = await this.chatChannelsManager.find(params.channelId);\n        const thread = await channel.threadsManager.find(channel.id, params.threadId);\n        return {\n          channel,\n          thread\n        };\n      },\n      afterModel(model) {\n        this.chat.activeChannel = model.channel;\n        this.chat.activeChannel.activeThread = model.thread;\n      },\n      deactivate() {\n        this.chat.activeChannel = null;\n      }\n    },\n    \"chat.channel.threads\": {\n      name: _channelThreads.default,\n      extractParams: route => {\n        return {\n          channelId: route.parent.params.channelId\n        };\n      },\n      async model(params) {\n        const channel = await this.chatChannelsManager.find(params.channelId);\n        return {\n          channel\n        };\n      },\n      afterModel(model) {\n        this.chat.activeChannel = model.channel;\n      },\n      deactivate() {\n        this.chat.activeChannel = null;\n      }\n    },\n    \"chat.channel.pins\": {\n      name: _channelPins.default,\n      extractParams: route => {\n        return {\n          channelId: route.parent.params.channelId\n        };\n      },\n      async model(params) {\n        const channel = await this.chatChannelsManager.find(params.channelId);\n        const pinnedMessages = await this.chatApi.pinnedMessages(channel);\n        return {\n          channel,\n          pinnedMessages\n        };\n      },\n      afterModel(model) {\n        this.chat.activeChannel = model.channel;\n      },\n      deactivate() {\n        this.chat.activeChannel = null;\n      }\n    },\n    \"chat.direct-messages\": {\n      name: _directMessages.default\n    },\n    \"chat.starred-channels\": {\n      name: _starredChannels.default,\n      redirect: context => {\n        if (!context.chatChannelsManager.hasStarredChannels) {\n          return \"/chat/channels\";\n        }\n      }\n    },\n    \"chat.threads\": {\n      name: _threads.default\n    },\n    \"chat.search\": {\n      name: _search.default\n    },\n    \"chat.channel.near-message\": {\n      name: _channel.default,\n      extractParams: route => {\n        return {\n          channelId: route.parent.params.channelId,\n          messageId: route.params.messageId\n        };\n      },\n      async model(params) {\n        const channel = await this.chatChannelsManager.find(params.channelId);\n        return {\n          channel\n        };\n      },\n      afterModel(model) {\n        this.chat.activeChannel = model.channel;\n      },\n      deactivate() {\n        this.chat.activeChannel = null;\n      }\n    },\n    \"chat.channel.near-message-with-thread\": {\n      name: _channel.default,\n      extractParams: route => {\n        return {\n          channelId: route.parent.params.channelId,\n          messageId: route.params.messageId\n        };\n      },\n      async model(params) {\n        const channel = await this.chatChannelsManager.find(params.channelId);\n        return {\n          channel\n        };\n      },\n      afterModel(model) {\n        this.chat.activeChannel = model.channel;\n      },\n      deactivate() {\n        this.chat.activeChannel = null;\n      }\n    },\n    \"chat.channel.info.settings\": {\n      name: _channelInfoSettings.default,\n      extractParams: route => {\n        return {\n          channelId: route.parent.params.channelId\n        };\n      },\n      async model(params) {\n        const channel = await this.chatChannelsManager.find(params.channelId);\n        return {\n          channel\n        };\n      },\n      afterModel(model) {\n        this.chat.activeChannel = model.channel;\n      },\n      deactivate() {\n        this.chat.activeChannel = null;\n      }\n    },\n    \"chat.channel.info.members\": {\n      name: _channelInfoMembers.default,\n      extractParams: route => {\n        return {\n          channelId: route.parent.params.channelId\n        };\n      },\n      async model(params) {\n        const channel = await this.chatChannelsManager.find(params.channelId);\n        return {\n          channel\n        };\n      },\n      afterModel(model) {\n        this.chat.activeChannel = model.channel;\n      },\n      deactivate() {\n        this.chat.activeChannel = null;\n      }\n    }\n  };\n  class ChatDrawerRouter extends _service.default {\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatHistory\", [_service.service]);\n    }\n    #chatHistory = (dt7948.i(this, \"chatHistory\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0); // eslint-disable-next-line discourse/no-unused-services -- used in ROUTES model functions\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"component\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #component = (dt7948.i(this, \"component\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"drawerRoute\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #drawerRoute = (dt7948.i(this, \"drawerRoute\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"params\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #params = (dt7948.i(this, \"params\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentRouteName\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #currentRouteName = (dt7948.i(this, \"currentRouteName\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"model\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #model = (dt7948.i(this, \"model\"), void 0);\n    routeNames = Object.keys(ROUTES);\n    canHandleRoute(route) {\n      return !!ROUTES[this.#forceParentRouteForIndex(route).name];\n    }\n    get activeChannelId() {\n      return this.model?.channel?.id;\n    }\n    get hasThreads() {\n      if (!this.siteSettings.chat_threads_enabled) {\n        return false;\n      }\n      return this.chatChannelsManager.shouldShowMyThreads;\n    }\n    get hasDirectMessages() {\n      return this.chat.userCanAccessDirectMessages;\n    }\n    async stateFor(route) {\n      this.drawerRoute?.deactivate?.call(this, this.chatHistory.currentRoute);\n      this.chatHistory.visit(route);\n      this.drawerRoute = ROUTES[this.#forceParentRouteForIndex(route).name];\n      this.params = this.drawerRoute?.extractParams?.call(this, route) || route.params;\n      try {\n        this.model = await this.drawerRoute?.model?.call(this, this.params);\n        this.drawerRoute?.afterModel?.call(this, this.model);\n      } catch (e) {\n        (0, _ajaxError.popupAjaxError)(e);\n      }\n      this.component = this.drawerRoute?.name || _channels.default;\n      this.currentRouteName = route.name;\n      this.drawerRoute.activate?.(route);\n      const redirectedRoute = this.drawerRoute.redirect?.(this);\n      if (redirectedRoute) {\n        await this.stateFor(this.#routeFromURL(redirectedRoute));\n      }\n    }\n    #routeFromURL(url) {\n      const route = this.router.recognize(url);\n      return this.#forceParentRouteForIndex(route);\n    }\n    #forceParentRouteForIndex(route) {\n      // ember might recognize the index subroute\n      if (route.localName === \"index\") {\n        return route.parent;\n      }\n      return route;\n    }\n  }\n  _exports.default = ChatDrawerRouter;\n});","define(\"discourse/plugins/chat/discourse/services/chat-drawer-size\", [\"exports\", \"@ember/service\", \"discourse/lib/key-value-store\"], function (_exports, _service, _keyValueStore) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatDrawerSize extends _service.default {\n    STORE_NAMESPACE = \"discourse_chat_drawer_size_\";\n    MIN_HEIGHT = 300;\n    MIN_WIDTH = 250;\n    store = new _keyValueStore.default(this.STORE_NAMESPACE);\n    get size() {\n      return {\n        width: this.store.getObject(\"width\") || 400,\n        height: this.store.getObject(\"height\") || 530\n      };\n    }\n    set size({\n      width,\n      height\n    }) {\n      this.store.setObject({\n        key: \"width\",\n        value: this.#min(width, this.MIN_WIDTH)\n      });\n      this.store.setObject({\n        key: \"height\",\n        value: this.#min(height, this.MIN_HEIGHT)\n      });\n    }\n    #min(number, min) {\n      return Math.max(number, min);\n    }\n  }\n  _exports.default = ChatDrawerSize;\n});","define(\"discourse/plugins/chat/discourse/services/chat-guardian\", [\"exports\", \"@ember/service\"], function (_exports, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatGuardian extends _service.default {\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"siteSettings\", [_service.service]);\n    }\n    #siteSettings = (dt7948.i(this, \"siteSettings\"), void 0);\n    canEditChatChannel() {\n      return this.canUseChat() && this.currentUser.staff;\n    }\n    canArchiveChannel(channel) {\n      return this.canEditChatChannel() && this.siteSettings.chat_allow_archiving_channels && !channel.isArchived && !channel.isReadOnly;\n    }\n    canUseChat() {\n      return this.currentUser?.has_chat_enabled && this.siteSettings.chat_enabled;\n    }\n    canUseGroupChat() {\n      return this.currentUser?.staff || this.siteSettings.chat_max_direct_message_users > 1;\n    }\n  }\n  _exports.default = ChatGuardian;\n});","define(\"discourse/plugins/chat/discourse/services/chat-history\", [\"exports\", \"@glimmer/tracking\", \"@ember/service\"], function (_exports, _tracking, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatHistory extends _service.default {\n    static {\n      dt7948.g(this.prototype, \"history\", [_tracking.tracked]);\n    }\n    #history = (dt7948.i(this, \"history\"), void 0);\n    get previousRoute() {\n      if (this.history?.length > 1) {\n        return this.history[this.history.length - 2];\n      }\n    }\n    get currentRoute() {\n      if (this.history?.length > 0) {\n        return this.history[this.history.length - 1];\n      }\n    }\n    visit(route) {\n      this.history = (this.history || []).slice(-9).concat([route]);\n    }\n  }\n  _exports.default = ChatHistory;\n});","define(\"discourse/plugins/chat/discourse/services/chat-notification-manager\", [\"exports\", \"@ember/service\", \"discourse/lib/decorators\", \"discourse/lib/desktop-notifications\", \"discourse/lib/environment\"], function (_exports, _service, _decorators, _desktopNotifications, _environment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatNotificationManager extends _service.default {\n    static {\n      dt7948.g(this.prototype, \"capabilities\", [_service.service]);\n    }\n    #capabilities = (dt7948.i(this, \"capabilities\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"appEvents\", [_service.service]);\n    }\n    #appEvents = (dt7948.i(this, \"appEvents\"), void 0);\n    willDestroy() {\n      super.willDestroy(...arguments);\n      if (!this.#shouldRun) {\n        return;\n      }\n      this.messageBus.unsubscribe(this.messageBusChannel, this.onMessage);\n    }\n    start() {\n      if (!this.#shouldRun) {\n        return;\n      }\n      this.messageBus.subscribe(this.messageBusChannel, this.onMessage);\n    }\n    get messageBusChannel() {\n      return `/chat${(0, _desktopNotifications.alertChannel)(this.currentUser)}`;\n    }\n    async onMessage(data) {\n      // if the user is currently focused on this tab and channel,\n      // we don't want to show a desktop notification\n      if (this.session.hasFocus && data.channel_id === this.chat.activeChannel?.id) {\n        return;\n      }\n      return (0, _desktopNotifications.onNotification)(data, this.siteSettings, this.currentUser, this.appEvents);\n    }\n    static {\n      dt7948.n(this.prototype, \"onMessage\", [_decorators.bind]);\n    }\n    get #shouldRun() {\n      return !this.capabilities.isMobileDevice && this.chat.userCanChat && !(0, _environment.isTesting)();\n    }\n  }\n  _exports.default = ChatNotificationManager;\n});","define(\"discourse/plugins/chat/discourse/services/chat-pane-pending-manager\", [\"exports\", \"@glimmer/tracking\", \"@ember/service\"], function (_exports, _tracking, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /**\n   * Single source of truth for pending message counts across all chat contexts.\n   * Tracks how many messages arrived while the user was scrolled away or inactive.\n   *\n   * A \"context\" is identified by a key like \"channel-123\" or \"thread-456\".\n   * The service maintains per-context counts and a global total used for\n   * document title badges.\n   */\n  class ChatPanePendingManager extends _service.default {\n    static {\n      dt7948.g(this.prototype, \"appEvents\", [_service.service]);\n    }\n    #appEvents = (dt7948.i(this, \"appEvents\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"totalPendingMessageCount\", [_tracking.tracked], function () {\n        return 0;\n      });\n    }\n    #totalPendingMessageCount = (dt7948.i(this, \"totalPendingMessageCount\"), void 0);\n    /**\n     * Total pending messages across all contexts. Used for document title count.\n     *\n     * @type {number}\n     */\n    /**\n     * Per-context pending counts.\n     *\n     * @type {Map<string, number>}\n     */\n    #countsByContext = new Map();\n\n    /**\n     * Get the pending message count for a specific context.\n     *\n     * @param {string} contextKey - The context identifier (e.g. \"channel-123\")\n     * @returns {number}\n     */\n    getCount(contextKey) {\n      return this.#countsByContext.get(contextKey) || 0;\n    }\n\n    /**\n     * Check if a context has any pending messages.\n     *\n     * @param {string} contextKey - The context identifier\n     * @returns {boolean}\n     */\n    hasPending(contextKey) {\n      return this.getCount(contextKey) > 0;\n    }\n\n    /**\n     * Add to the pending count for a context and trigger notifications.\n     *\n     * @param {string} contextKey - The context identifier\n     * @param {number} [count=1] - Number of messages to add\n     */\n    add(contextKey, count = 1) {\n      if (!contextKey || count <= 0) {\n        return;\n      }\n      const current = this.#countsByContext.get(contextKey) || 0;\n      const changed = this.#setCount(contextKey, current + count);\n      if (changed) {\n        this.appEvents.trigger(\"notifications:changed\");\n      }\n    }\n\n    /**\n     * Clear all pending messages for a context and trigger notifications.\n     *\n     * @param {string} contextKey - The context identifier\n     */\n    clear(contextKey) {\n      if (!contextKey) {\n        return;\n      }\n      const changed = this.#setCount(contextKey, 0);\n      if (changed) {\n        this.appEvents.trigger(\"notifications:changed\");\n      }\n    }\n\n    /**\n     * Update the count for a context and sync the global total.\n     *\n     * @param {string} contextKey\n     * @param {number} newCount\n     * @returns {boolean} Whether the count actually changed\n     */\n    #setCount(contextKey, newCount) {\n      const oldCount = this.#countsByContext.get(contextKey) || 0;\n      if (newCount === oldCount) {\n        return false;\n      }\n      if (newCount > 0) {\n        this.#countsByContext.set(contextKey, newCount);\n      } else {\n        this.#countsByContext.delete(contextKey);\n      }\n      const delta = newCount - oldCount;\n      this.totalPendingMessageCount = Math.max(0, this.totalPendingMessageCount + delta);\n      return true;\n    }\n  }\n  _exports.default = ChatPanePendingManager;\n});","define(\"discourse/plugins/chat/discourse/services/chat-search-query\", [\"exports\", \"@glimmer/tracking\", \"@ember/service\"], function (_exports, _tracking, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatSearchQuery extends _service.default {\n    static {\n      dt7948.g(this.prototype, \"query\", [_tracking.tracked], function () {\n        return \"\";\n      });\n    }\n    #query = (dt7948.i(this, \"query\"), void 0);\n  }\n  _exports.default = ChatSearchQuery;\n});","define(\"discourse/plugins/chat/discourse/services/chat-state-manager\", [\"exports\", \"@glimmer/tracking\", \"@ember/service\", \"discourse/lib/key-value-store\", \"discourse/lib/plugin-api\", \"discourse/lib/sidebar/panels\", \"discourse/lib/utilities\", \"discourse/plugins/chat/discourse/lib/get-user-chat-separate-sidebar-mode\", \"discourse/plugins/chat/discourse/lib/init-sidebar-state\"], function (_exports, _tracking, _service, _keyValueStore, _pluginApi, _panels, _utilities, _getUserChatSeparateSidebarMode, _initSidebarState) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.addChatDrawerStateCallback = addChatDrawerStateCallback;\n  _exports.default = void 0;\n  _exports.resetChatDrawerStateCallbacks = resetChatDrawerStateCallbacks;\n  const PREFERRED_MODE_KEY = \"preferred_mode\";\n  const PREFERRED_MODE_STORE_NAMESPACE = \"discourse_chat_\";\n  const FULL_PAGE_CHAT = \"FULL_PAGE_CHAT\";\n  const DRAWER_CHAT = \"DRAWER_CHAT\";\n  let chatDrawerStateCallbacks = [];\n  function addChatDrawerStateCallback(callback) {\n    chatDrawerStateCallbacks.push(callback);\n  }\n  function resetChatDrawerStateCallbacks() {\n    chatDrawerStateCallbacks = [];\n  }\n  class ChatStateManager extends _service.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatDrawerRouter\", [_service.service]);\n    }\n    #chatDrawerRouter = (dt7948.i(this, \"chatDrawerRouter\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"isSidePanelExpanded\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #isSidePanelExpanded = (dt7948.i(this, \"isSidePanelExpanded\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"isDrawerExpanded\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #isDrawerExpanded = (dt7948.i(this, \"isDrawerExpanded\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"isDrawerActive\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #isDrawerActive = (dt7948.i(this, \"isDrawerActive\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"hasPreloadedChannels\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #hasPreloadedChannels = (dt7948.i(this, \"hasPreloadedChannels\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"_chatURL\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #_chatURL = (dt7948.i(this, \"_chatURL\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"_appURL\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #_appURL = (dt7948.i(this, \"_appURL\"), void 0);\n    _store = new _keyValueStore.default(PREFERRED_MODE_STORE_NAMESPACE);\n    reset() {\n      this._store.remove(PREFERRED_MODE_KEY);\n      this._chatURL = null;\n      this._appURL = null;\n    }\n    prefersFullPage() {\n      this._store.setObject({\n        key: PREFERRED_MODE_KEY,\n        value: FULL_PAGE_CHAT\n      });\n    }\n    prefersDrawer() {\n      this._store.setObject({\n        key: PREFERRED_MODE_KEY,\n        value: DRAWER_CHAT\n      });\n    }\n    openSidePanel() {\n      this.isSidePanelExpanded = true;\n    }\n    closeSidePanel() {\n      this.isSidePanelExpanded = false;\n    }\n    didOpenDrawer(url = null) {\n      (0, _pluginApi.withPluginApi)(api => {\n        if (api.getSidebarPanel()?.key === _panels.MAIN_PANEL || api.getSidebarPanel()?.key === _initSidebarState.CHAT_PANEL) {\n          if ((0, _getUserChatSeparateSidebarMode.getUserChatSeparateSidebarMode)(this.currentUser).always) {\n            api.setSeparatedSidebarMode();\n            api.hideSidebarSwitchPanelButtons();\n          } else {\n            api.setCombinedSidebarMode();\n          }\n        }\n      });\n      this.isDrawerActive = true;\n      this.isDrawerExpanded = true;\n      if (url) {\n        this.storeChatURL(url);\n      }\n      this.chat.updatePresence();\n      this.#publishStateChange();\n    }\n    didCloseDrawer() {\n      (0, _pluginApi.withPluginApi)(api => {\n        if (api.getSidebarPanel()?.key === _panels.MAIN_PANEL || api.getSidebarPanel()?.key === _initSidebarState.CHAT_PANEL) {\n          const chatSeparateSidebarMode = (0, _getUserChatSeparateSidebarMode.getUserChatSeparateSidebarMode)(this.currentUser);\n          api.setSidebarPanel(_panels.MAIN_PANEL);\n          if (chatSeparateSidebarMode.fullscreen) {\n            api.setCombinedSidebarMode();\n            api.showSidebarSwitchPanelButtons();\n          } else if (chatSeparateSidebarMode.always) {\n            api.setSeparatedSidebarMode();\n            api.showSidebarSwitchPanelButtons();\n          } else {\n            api.setCombinedSidebarMode();\n            api.hideSidebarSwitchPanelButtons();\n          }\n        }\n      });\n      this.chatDrawerRouter.currentRouteName = null;\n      this.isDrawerActive = false;\n      this.isDrawerExpanded = false;\n      this.chat.updatePresence();\n      this.#publishStateChange();\n    }\n    didExpandDrawer() {\n      this.isDrawerActive = true;\n      this.isDrawerExpanded = true;\n      this.chat.updatePresence();\n    }\n    didCollapseDrawer() {\n      this.isDrawerActive = true;\n      this.isDrawerExpanded = false;\n      this.#publishStateChange();\n    }\n    didToggleDrawer() {\n      this.isDrawerExpanded = !this.isDrawerExpanded;\n      this.isDrawerActive = true;\n      this.#publishStateChange();\n    }\n    get isFullPagePreferred() {\n      return !!(this.site.mobileView || this._store.getObject(PREFERRED_MODE_KEY) === FULL_PAGE_CHAT);\n    }\n    get isDrawerPreferred() {\n      return !!(!this.isFullPagePreferred || this.site.desktopView && (this.hasNoPreferredMode || this._store.getObject(PREFERRED_MODE_KEY) === DRAWER_CHAT));\n    }\n    get hasNoPreferredMode() {\n      return !this._store.getObject(PREFERRED_MODE_KEY);\n    }\n    get isFullPageActive() {\n      return this.router.currentRouteName?.startsWith(\"chat\");\n    }\n    get isActive() {\n      return this.isFullPageActive || this.isDrawerActive;\n    }\n    get isPinnedMessagesPaneOpen() {\n      return this.router.currentRouteName === \"chat.channel.pins\";\n    }\n    storeAppURL(url = null) {\n      if (url) {\n        this._appURL = url;\n      } else if (this.router.currentURL?.startsWith(\"/chat\")) {\n        this._appURL = \"/\";\n      } else {\n        this._appURL = this.router.currentURL;\n      }\n    }\n    storeChatURL(url) {\n      this._chatURL = url;\n    }\n    get lastKnownAppURL() {\n      const url = this._appURL;\n      if (url && url !== \"/\") {\n        return url;\n      }\n      return this.router.urlFor(`discovery.${(0, _utilities.defaultHomepage)()}`);\n    }\n    get lastKnownChatURL() {\n      if (this._chatURL) {\n        return this._chatURL;\n      }\n\n      // On mobile or drawer mode, default to starred channels if user has any\n      // On desktop fullscreen, starred channels are shown in the sidebar\n      if ((this.site.mobileView || this.isDrawerPreferred) && this.chatChannelsManager.hasStarredChannels) {\n        return \"/chat/starred-channels\";\n      }\n      return \"/chat\";\n    }\n    #publishStateChange() {\n      const state = {\n        isDrawerActive: this.isDrawerActive,\n        isDrawerExpanded: this.isDrawerExpanded\n      };\n      chatDrawerStateCallbacks.forEach(callback => callback(state));\n    }\n  }\n  _exports.default = ChatStateManager;\n});","define(\"discourse/plugins/chat/discourse/services/chat-subscriptions-manager\", [\"exports\", \"@ember/service\", \"discourse/lib/decorators\", \"discourse/lib/notification-levels\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/models/chat-channel\", \"discourse/plugins/chat/discourse/models/chat-channel-archive\"], function (_exports, _service, _decorators, _notificationLevels, _discourseI18n, _chatChannel, _chatChannelArchive) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatSubscriptionsManager extends _service.default {\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"appEvents\", [_service.service]);\n    }\n    #appEvents = (dt7948.i(this, \"appEvents\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"dialog\", [_service.service]);\n    }\n    #dialog = (dt7948.i(this, \"dialog\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    _channelSubscriptions = new Set();\n    startChannelSubscription(channel) {\n      if (channel.currentUserMembership.muted || this._channelSubscriptions.has(channel.id)) {\n        return;\n      }\n      this._channelSubscriptions.add(channel.id);\n      this._startChannelMentionsSubscription(channel);\n      if (!channel.isDirectMessageChannel) {\n        this._startKickFromChannelSubscription(channel);\n      }\n      this._startChannelNewMessagesSubscription(channel);\n    }\n    stopChannelSubscription(channel) {\n      this.messageBus.unsubscribe(`/chat/${channel.id}/new-messages`, this._onNewMessages);\n      if (!channel.isDirectMessageChannel) {\n        this.messageBus.unsubscribe(`/chat/${channel.id}/new-mentions`, this._onNewMentions);\n        this.messageBus.unsubscribe(`/chat/${channel.id}/kick`, this._onKickFromChannel);\n      }\n      this._channelSubscriptions.delete(channel.id);\n    }\n    startChannelsSubscriptions(messageBusIds) {\n      this._startNewChannelSubscription(messageBusIds.new_channel);\n      this._startChannelArchiveStatusSubscription(messageBusIds.archive_status);\n      this._startUserTrackingStateSubscription(messageBusIds.user_tracking_state);\n      this._startUserHasThreadsSubscription(messageBusIds.user_has_threads);\n      this._startChannelsEditsSubscription(messageBusIds.channel_edits);\n      this._startChannelsStatusChangesSubscription(messageBusIds.channel_status);\n      this._startChannelsMetadataChangesSubscription(messageBusIds.channel_metadata);\n    }\n    stopChannelsSubscriptions() {\n      this._stopNewChannelSubscription();\n      this._stopChannelArchiveStatusSubscription();\n      this._stopUserTrackingStateSubscription();\n      this._stopUserHasThreadsSubscription();\n      this._stopChannelsEditsSubscription();\n      this._stopChannelsStatusChangesSubscription();\n      this._stopChannelsMetadataChangesSubscription();\n      (this.chatChannelsManager.channels || []).forEach(channel => {\n        this.stopChannelSubscription(channel);\n      });\n    }\n    _startChannelArchiveStatusSubscription(lastId) {\n      if (this.currentUser.admin) {\n        this.messageBus.subscribe(\"/chat/channel-archive-status\", this._onChannelArchiveStatusUpdate, lastId);\n      }\n    }\n    _stopChannelArchiveStatusSubscription() {\n      if (this.currentUser.admin) {\n        this.messageBus.unsubscribe(\"/chat/channel-archive-status\", this._onChannelArchiveStatusUpdate);\n      }\n    }\n    _startChannelMentionsSubscription(channel) {\n      this.messageBus.subscribe(`/chat/${channel.id}/new-mentions`, this._onNewMentions, channel.meta.message_bus_last_ids.new_mentions);\n    }\n    _startKickFromChannelSubscription(channel) {\n      this.messageBus.subscribe(`/chat/${channel.id}/kick`, this._onKickFromChannel, channel.meta.message_bus_last_ids.kick);\n    }\n    _onChannelArchiveStatusUpdate(busData) {\n      // we don't want to fetch a channel we don't have locally because archive status changed\n      this.chatChannelsManager.find(busData.chat_channel_id, {\n        fetchIfNotFound: false\n      }).then(channel => {\n        if (!channel) {\n          return;\n        }\n        channel.archive = _chatChannelArchive.default.create(busData);\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"_onChannelArchiveStatusUpdate\", [_decorators.bind]);\n    }\n    _onNewMentions(busData) {\n      this.chatChannelsManager.find(busData.channel_id).then(channel => {\n        const membership = channel.currentUserMembership;\n        if (busData.message_id > membership?.lastReadMessageId) {\n          channel.tracking.mentionCount++;\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"_onNewMentions\", [_decorators.bind]);\n    }\n    _onKickFromChannel(busData) {\n      this.chatChannelsManager.find(busData.channel_id).then(channel => {\n        if (this.chat.activeChannel?.id === channel.id) {\n          this.dialog.alert({\n            message: (0, _discourseI18n.i18n)(\"chat.kicked_from_channel\"),\n            didConfirm: () => {\n              this.chatChannelsManager.remove(channel);\n              const firstChannel = this.chatChannelsManager.publicMessageChannels[0];\n              if (firstChannel) {\n                this.router.transitionTo(\"chat.channel\", ...firstChannel.routeModels);\n              } else {\n                this.router.transitionTo(\"chat.browse\");\n              }\n            }\n          });\n        } else {\n          this.chatChannelsManager.remove(channel);\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"_onKickFromChannel\", [_decorators.bind]);\n    }\n    _startChannelNewMessagesSubscription(channel) {\n      this.messageBus.subscribe(`/chat/${channel.id}/new-messages`, this._onNewMessages, channel.meta.message_bus_last_ids.new_messages);\n    }\n    _onNewMessages(busData) {\n      switch (busData.type) {\n        case \"channel\":\n          this._onNewChannelMessage(busData);\n          break;\n        case \"thread\":\n          this._onNewThreadMessage(busData);\n          break;\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"_onNewMessages\", [_decorators.bind]);\n    }\n    _onNewChannelMessage(busData) {\n      this.chatChannelsManager.find(busData.channel_id).then(channel => {\n        channel.lastMessage = busData.message;\n        const user = busData.message.user;\n        if (user.id === this.currentUser.id) {\n          // User sent message, update tracking state to no unread\n          channel.currentUserMembership.lastReadMessageId = channel.lastMessage.id;\n        } else {\n          // Ignored user sent message, update tracking state to no unread\n          if (this.currentUser.ignored_users.includes(user.username)) {\n            channel.currentUserMembership.lastReadMessageId = channel.lastMessage.id;\n          } else {\n            if (channel.lastMessage.id > (channel.currentUserMembership.lastReadMessageId || 0)) {\n              channel.tracking.unreadCount++;\n            }\n\n            // Thread should be considered unread if not already.\n            if (busData.thread_id && channel.threadingEnabled) {\n              channel.threadsManager.find(channel.id, busData.thread_id).then(thread => {\n                if (thread.currentUserMembership) {\n                  channel.threadsManager.markThreadUnread(busData.thread_id, busData.message.created_at);\n                  this._updateActiveLastViewedAt(channel);\n                }\n              });\n            }\n          }\n        }\n      });\n    }\n    _onNewThreadMessage(busData) {\n      this.chatChannelsManager.find(busData.channel_id).then(channel => {\n        if (!channel.threadingEnabled && !busData.force_thread) {\n          return;\n        }\n        channel.threadsManager.find(busData.channel_id, busData.thread_id).then(thread => {\n          thread.lastMessageId = busData.message.id;\n          if (busData.message.user.id === this.currentUser.id) {\n            // Thread should no longer be considered unread.\n            if (thread.currentUserMembership) {\n              channel.threadsManager.unreadThreadOverview.delete(parseInt(busData.thread_id, 10));\n              thread.currentUserMembership.lastReadMessageId = busData.message.id;\n            }\n          } else {\n            // Ignored user sent message, update tracking state to no unread\n            if (this.currentUser.ignored_users.includes(busData.message.user.username)) {\n              if (thread.currentUserMembership) {\n                thread.currentUserMembership.lastReadMessageId = busData.message.id;\n              }\n            } else {\n              // Message from other user. Increment unread for thread tracking state.\n              if (thread.currentUserMembership && busData.message.id > (thread.currentUserMembership.lastReadMessageId || 0) && !thread.currentUserMembership.isQuiet) {\n                channel.threadsManager.markThreadUnread(busData.thread_id, busData.message.created_at);\n                if (thread.currentUserMembership.notificationLevel === _notificationLevels.NotificationLevels.WATCHING) {\n                  thread.tracking.watchedThreadsUnreadCount++;\n                  channel.tracking.watchedThreadsUnreadCount++;\n                } else {\n                  thread.tracking.unreadCount++;\n                }\n                this._updateActiveLastViewedAt(channel);\n              }\n            }\n          }\n        });\n      });\n    }\n\n    // If the user is currently looking at this channel via activeChannel, we don't want the unread\n    // indicator to show in the sidebar for unread threads (since that is based on the lastViewedAt).\n    _updateActiveLastViewedAt(channel) {\n      if (this.chat.activeChannel?.id === channel.id) {\n        channel.updateLastViewedAt();\n      }\n    }\n    _startUserTrackingStateSubscription(lastId) {\n      if (!this.currentUser) {\n        return;\n      }\n      this.messageBus.subscribe(`/chat/user-tracking-state/${this.currentUser.id}`, this._onUserTrackingStateUpdate, lastId);\n      this.messageBus.subscribe(`/chat/bulk-user-tracking-state/${this.currentUser.id}`, this._onBulkUserTrackingStateUpdate, lastId);\n    }\n    _stopUserTrackingStateSubscription() {\n      if (!this.currentUser) {\n        return;\n      }\n      this.messageBus.unsubscribe(`/chat/user-tracking-state/${this.currentUser.id}`, this._onUserTrackingStateUpdate);\n      this.messageBus.unsubscribe(`/chat/bulk-user-tracking-state/${this.currentUser.id}`, this._onBulkUserTrackingStateUpdate);\n    }\n    _startUserHasThreadsSubscription(lastId) {\n      if (!this.currentUser) {\n        return;\n      }\n      this.messageBus.subscribe(`/chat/user-has-threads/${this.currentUser.id}`, this._onUserHasThreads, lastId);\n    }\n    _stopUserHasThreadsSubscription() {\n      if (!this.currentUser) {\n        return;\n      }\n      this.messageBus.unsubscribe(`/chat/user-has-threads/${this.currentUser.id}`, this._onUserHasThreads);\n    }\n    _onUserHasThreads(busData) {\n      if (busData.has_threads) {\n        this.chatChannelsManager.userHasThreads = true;\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"_onUserHasThreads\", [_decorators.bind]);\n    }\n    _onBulkUserTrackingStateUpdate(busData) {\n      Object.keys(busData).forEach(channelId => {\n        this._updateChannelTrackingData(channelId, busData[channelId]);\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"_onBulkUserTrackingStateUpdate\", [_decorators.bind]);\n    }\n    _onUserTrackingStateUpdate(busData) {\n      this._updateChannelTrackingData(busData.channel_id, busData);\n    }\n    static {\n      dt7948.n(this.prototype, \"_onUserTrackingStateUpdate\", [_decorators.bind]);\n    }\n    _updateChannelTrackingData(channelId, busData) {\n      this.chatChannelsManager.find(channelId).then(channel => {\n        if (!busData.thread_id) {\n          channel.currentUserMembership.lastReadMessageId = busData.last_read_message_id;\n        }\n        channel.tracking.unreadCount = busData.unread_count;\n        channel.tracking.mentionCount = busData.mention_count;\n        channel.tracking.watchedThreadsUnreadCount = busData.watched_threads_unread_count;\n        if (busData.hasOwnProperty(\"unread_thread_overview\") && channel.threadingEnabled) {\n          channel.threadsManager.unreadThreadOverview = busData.unread_thread_overview;\n        }\n        if (busData.thread_id && busData.hasOwnProperty(\"thread_tracking\") && channel.threadingEnabled) {\n          channel.threadsManager.find(channelId, busData.thread_id).then(thread => {\n            if (thread.currentUserMembership && !thread.currentUserMembership.isQuiet) {\n              thread.currentUserMembership.lastReadMessageId = busData.last_read_message_id;\n              thread.tracking.unreadCount = busData.thread_tracking.unread_count;\n              thread.tracking.mentionCount = busData.thread_tracking.mention_count;\n              thread.tracking.watchedThreadsUnreadCount = busData.thread_tracking.watched_threads_unread_count;\n            }\n          });\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"_updateChannelTrackingData\", [_decorators.bind]);\n    }\n    _startNewChannelSubscription(lastId) {\n      this.messageBus.subscribe(\"/chat/new-channel\", this._onNewChannelSubscription, lastId);\n    }\n    _stopNewChannelSubscription() {\n      this.messageBus.unsubscribe(\"/chat/new-channel\", this._onNewChannelSubscription);\n    }\n    _onNewChannelSubscription(data) {\n      this.chatChannelsManager.find(data.channel.id).then(channel => {\n        // we need to refresh here to have correct last message ids\n        channel.meta = data.channel.meta;\n        channel.currentUserMembership = data.channel.current_user_membership;\n        if (channel.isDirectMessageChannel && !channel.currentUserMembership.following) {\n          channel.tracking.unreadCount = 1;\n        }\n        this.chatChannelsManager.follow(channel);\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"_onNewChannelSubscription\", [_decorators.bind]);\n    }\n    _startChannelsMetadataChangesSubscription(lastId) {\n      this.messageBus.subscribe(\"/chat/channel-metadata\", this._onChannelMetadata, lastId);\n    }\n    _startChannelsEditsSubscription(lastId) {\n      this.messageBus.subscribe(\"/chat/channel-edits\", this._onChannelEdits, lastId);\n    }\n    _startChannelsStatusChangesSubscription(lastId) {\n      this.messageBus.subscribe(\"/chat/channel-status\", this._onChannelStatus, lastId);\n    }\n    _stopChannelsStatusChangesSubscription() {\n      this.messageBus.unsubscribe(\"/chat/channel-status\", this._onChannelStatus);\n    }\n    _stopChannelsEditsSubscription() {\n      this.messageBus.unsubscribe(\"/chat/channel-edits\", this._onChannelEdits);\n    }\n    _stopChannelsMetadataChangesSubscription() {\n      this.messageBus.unsubscribe(\"/chat/channel-metadata\", this._onChannelMetadata);\n    }\n    _onChannelMetadata(busData) {\n      this.chatChannelsManager.find(busData.chat_channel_id, {\n        fetchIfNotFound: false\n      }).then(channel => {\n        if (channel) {\n          channel.membershipsCount = busData.memberships_count;\n          this.appEvents.trigger(\"chat:refresh-channel-members\");\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"_onChannelMetadata\", [_decorators.bind]);\n    }\n    _onChannelEdits(busData) {\n      this.chatChannelsManager.find(busData.chat_channel_id).then(channel => {\n        if (channel) {\n          channel.title = busData.name;\n          channel.description = busData.description;\n          channel.slug = busData.slug;\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"_onChannelEdits\", [_decorators.bind]);\n    }\n    _onChannelStatus(busData) {\n      this.chatChannelsManager.find(busData.chat_channel_id).then(channel => {\n        channel.status = busData.status;\n\n        // it is not possible for the user to set their last read message id\n        // if the channel has been archived, because all the messages have\n        // been deleted. we don't want them seeing the blue dot anymore so\n        // just completely reset the unreads\n        if (busData.status === _chatChannel.CHANNEL_STATUSES.archived) {\n          channel.tracking.reset();\n        }\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"_onChannelStatus\", [_decorators.bind]);\n    }\n  }\n  _exports.default = ChatSubscriptionsManager;\n});","define(\"discourse/plugins/chat/discourse/services/chat-thread-composer\", [\"exports\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\"], function (_exports, _tracking, _object, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatThreadComposer extends _service.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"appEvents\", [_service.service]);\n    }\n    #appEvents = (dt7948.i(this, \"appEvents\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"site\", [_service.service]);\n    }\n    #site = (dt7948.i(this, \"site\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"textarea\", [_tracking.tracked]);\n    }\n    #textarea = (dt7948.i(this, \"textarea\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"scroller\", [_tracking.tracked]);\n    }\n    #scroller = (dt7948.i(this, \"scroller\"), void 0);\n    init() {\n      super.init(...arguments);\n      this.appEvents.on(\"discourse:focus-changed\", this, this.blur);\n    }\n    willDestroy() {\n      super.willDestroy(...arguments);\n      this.appEvents.off(\"discourse:focus-changed\", this, this.blur);\n    }\n    focus(options = {}) {\n      this.textarea?.focus(options);\n    }\n    static {\n      dt7948.n(this.prototype, \"focus\", [_object.action]);\n    }\n    blur() {\n      this.textarea?.blur();\n    }\n    static {\n      dt7948.n(this.prototype, \"blur\", [_object.action]);\n    }\n    edit(message) {\n      this.chat.activeMessage = null;\n      message.editing = true;\n      message.thread.draft = message;\n      if (this.site.desktopView) {\n        this.focus({\n          refreshHeight: true,\n          ensureAtEnd: true\n        });\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"edit\", [_object.action]);\n    }\n    replyTo() {\n      this.chat.activeMessage = null;\n    }\n    static {\n      dt7948.n(this.prototype, \"replyTo\", [_object.action]);\n    }\n  }\n  _exports.default = ChatThreadComposer;\n});","define(\"discourse/plugins/chat/discourse/services/chat-thread-list-pane\", [\"exports\", \"@ember/service\"], function (_exports, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatThreadListPane extends _service.default {\n    static {\n      dt7948.g(this.prototype, \"chat\", [_service.service]);\n    }\n    #chat = (dt7948.i(this, \"chat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    get isOpened() {\n      return this.router.currentRoute.name === \"chat.channel.threads\";\n    }\n    async close() {\n      await this.router.transitionTo(\"chat.channel\", ...this.chat.activeChannel.routeModels);\n    }\n    async open() {\n      await this.router.transitionTo(\"chat.channel.threads\", ...this.chat.activeChannel.routeModels);\n    }\n  }\n  _exports.default = ChatThreadListPane;\n});","define(\"discourse/plugins/chat/discourse/services/chat-thread-pane\", [\"exports\", \"@ember/object\", \"@ember/service\", \"discourse/plugins/chat/discourse/services/chat-channel-pane\"], function (_exports, _object, _service, _chatChannelPane) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ChatThreadPane extends _chatChannelPane.default {\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    get thread() {\n      return this.channel?.activeThread;\n    }\n    get isOpened() {\n      return this.router.currentRoute.name === \"chat.channel.thread\" || this.router.currentRoute.name === \"chat.channel.thread.index\";\n    }\n    get selectedMessageIds() {\n      return this.thread.messagesManager.selectedMessages.map(item => item.id);\n    }\n    cancelSelecting() {\n      this.selectingMessages = false;\n      this.thread.messagesManager.clearSelectedMessages();\n    }\n    static {\n      dt7948.n(this.prototype, \"cancelSelecting\", [_object.action]);\n    }\n    async close() {\n      await this.router.transitionTo(\"chat.channel\", ...this.channel.routeModels);\n    }\n    async open(thread) {\n      await this.router.transitionTo(\"chat.channel.thread\", ...thread.routeModels);\n    }\n  }\n  _exports.default = ChatThreadPane;\n});","define(\"discourse/plugins/chat/discourse/services/chat-tracking-state-manager\", [\"exports\", \"@ember/owner\", \"@ember/runloop\", \"@ember/service\", \"discourse/lib/debounce\", \"discourse/plugins/chat/discourse/models/chat-tracking-state\"], function (_exports, _owner, _runloop, _service, _debounce, _chatTrackingState) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /**\n   * This service is used to provide a global interface to tracking individual\n   * channels and threads. In many places in the app, we need to know the global\n   * unread count for channels, threads, etc.\n   *\n   * The individual tracking state of each channel and thread is stored in\n   * a ChatTrackingState class instance and changed via the getters/setters\n   * provided there.\n   *\n   * This service is also used to preload bulk tracking state for channels\n   * and threads, which is used when the user first loads the app, and in\n   * certain cases where we need to set the state for many items at once.\n   */\n  class ChatTrackingStateManager extends _service.default {\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"appEvents\", [_service.service]);\n    }\n    #appEvents = (dt7948.i(this, \"appEvents\"), void 0);\n    // NOTE: In future, we may want to preload some thread tracking state\n    // as well, but for now we do that on demand when the user opens a channel,\n    willDestroy() {\n      super.willDestroy(...arguments);\n      (0, _runloop.cancel)(this._onTriggerNotificationDebounceHandler);\n    }\n\n    // to avoid having to load all the threads across all channels into memory at once.\n    setupWithPreloadedState({\n      channel_tracking = {}\n    }) {\n      this.chatChannelsManager.channels.forEach(channel => {\n        if (channel_tracking[channel.id.toString()]) {\n          this.#setState(channel, channel_tracking[channel.id.toString()]);\n        }\n      });\n    }\n    setupChannelThreadState(channel, threadTracking) {\n      channel.threadsManager.threads.forEach(thread => {\n        const tracking = threadTracking[thread.id.toString()];\n        if (tracking) {\n          this.#setState(thread, tracking);\n        }\n      });\n    }\n    get publicChannelUnreadCount() {\n      return this.#publicChannels.reduce((unreadCount, channel) => {\n        return unreadCount + channel.tracking.unreadCount;\n      }, 0);\n    }\n    get directMessageUnreadCount() {\n      return this.#directMessageChannels.reduce((unreadCount, channel) => {\n        return unreadCount + channel.tracking.unreadCount;\n      }, 0);\n    }\n    get publicChannelMentionCount() {\n      return this.#publicChannels.reduce((mentionCount, channel) => {\n        return mentionCount + channel.tracking.mentionCount;\n      }, 0);\n    }\n    get directMessageMentionCount() {\n      return this.#directMessageChannels.reduce((dmMentionCount, channel) => {\n        return dmMentionCount + channel.tracking.mentionCount;\n      }, 0);\n    }\n    get allChannelMentionCount() {\n      return this.publicChannelMentionCount + this.directMessageMentionCount;\n    }\n    get allChannelUrgentCount() {\n      return this.allChannelMentionCount + this.directMessageUnreadCount + this.watchedThreadsUnreadCount;\n    }\n    get hasUnreadThreads() {\n      return this.#allChannels.some(channel => channel.unreadThreadsCount > 0);\n    }\n    get watchedThreadsUnreadCount() {\n      return this.#allChannels.reduce((unreadCount, channel) => {\n        return unreadCount + channel.tracking.watchedThreadsUnreadCount;\n      }, 0);\n    }\n\n    /**\n     * Some reactivity in the app such as the document title\n     * updates are only done via appEvents -- rather than\n     * sprinkle this appEvent call everywhere we just define\n     * it here so it can be changed as required.\n     */\n    triggerNotificationsChanged() {\n      this._onTriggerNotificationDebounceHandler = (0, _debounce.default)(this, this.#triggerNotificationsChanged, 100);\n    }\n    #triggerNotificationsChanged() {\n      this.appEvents.trigger(\"notifications:changed\");\n    }\n    #setState(model, state) {\n      if (!model.tracking) {\n        model.tracking = new _chatTrackingState.default((0, _owner.getOwner)(this));\n      }\n      model.tracking.unreadCount = state.unread_count;\n      model.tracking.mentionCount = state.mention_count;\n      model.tracking.watchedThreadsUnreadCount = state.watched_threads_unread_count;\n    }\n    get #publicChannels() {\n      return this.chatChannelsManager.publicMessageChannels;\n    }\n    get #directMessageChannels() {\n      return this.chatChannelsManager.directMessageChannels;\n    }\n    get #allChannels() {\n      return this.chatChannelsManager.allChannels;\n    }\n  }\n  _exports.default = ChatTrackingStateManager;\n});","define(\"discourse/plugins/chat/discourse/services/chat\", [\"exports\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/object/computed\", \"@ember/runloop\", \"@ember/service\", \"discourse/lib/ajax\", \"discourse/lib/ajax-error\", \"discourse/lib/array-tools\", \"discourse/lib/decorators\", \"discourse/lib/deprecated\", \"discourse/lib/later\", \"discourse/lib/user-presence\"], function (_exports, _tracking, _object, _computed, _runloop, _service, _ajax, _ajaxError, _arrayTools, _decorators, _deprecated, _later, _userPresence) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const CHAT_ONLINE_OPTIONS = {\n    userUnseenTime: 300000,\n    // 5 minutes seconds with no interaction\n    browserHiddenTime: 300000 // Or the browser has been in the background for 5 minutes\n  };\n  class Chat extends _service.default {\n    static {\n      dt7948.g(this.prototype, \"chatApi\", [_service.service]);\n    }\n    #chatApi = (dt7948.i(this, \"chatApi\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"appEvents\", [_service.service]);\n    }\n    #appEvents = (dt7948.i(this, \"appEvents\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentUser\", [_service.service]);\n    }\n    #currentUser = (dt7948.i(this, \"currentUser\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatSubscriptionsManager\", [_service.service]);\n    }\n    #chatSubscriptionsManager = (dt7948.i(this, \"chatSubscriptionsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatStateManager\", [_service.service]);\n    }\n    #chatStateManager = (dt7948.i(this, \"chatStateManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"presence\", [_service.service]);\n    }\n    #presence = (dt7948.i(this, \"presence\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatChannelsManager\", [_service.service]);\n    }\n    #chatChannelsManager = (dt7948.i(this, \"chatChannelsManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatTrackingStateManager\", [_service.service]);\n    }\n    #chatTrackingStateManager = (dt7948.i(this, \"chatTrackingStateManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"chatPanePendingManager\", [_service.service]);\n    }\n    #chatPanePendingManager = (dt7948.i(this, \"chatPanePendingManager\"), void 0);\n    cook = null;\n    presenceChannel = null;\n    isNetworkUnreliable = false;\n    static {\n      dt7948.g(this.prototype, \"userCanChat\", [(0, _computed.and)(\"currentUser.has_chat_enabled\", \"siteSettings.chat_enabled\")]);\n    }\n    #userCanChat = (dt7948.i(this, \"userCanChat\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"_activeMessage\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #_activeMessage = (dt7948.i(this, \"_activeMessage\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"_activeChannel\", [_tracking.tracked], function () {\n        return null;\n      });\n    }\n    #_activeChannel = (dt7948.i(this, \"_activeChannel\"), void 0);\n    init() {\n      super.init(...arguments);\n      if (this.userCanChat) {\n        this.presenceChannel = this.presence.getChannel(\"/chat/online\");\n        (0, _userPresence.onPresenceChange)({\n          callback: this.onPresenceChangeCallback,\n          browserHiddenTime: 150000,\n          userUnseenTime: 150000\n        });\n      }\n    }\n    willDestroy() {\n      super.willDestroy(...arguments);\n      if (this.userCanChat) {\n        this.chatSubscriptionsManager.stopChannelsSubscriptions();\n        (0, _userPresence.removeOnPresenceChange)(this.onPresenceChangeCallback);\n      }\n    }\n    get activeChannel() {\n      return this._activeChannel;\n    }\n    set activeChannel(channel) {\n      if (!channel) {\n        this._activeMessage = null;\n      }\n      if (this._activeChannel) {\n        this._activeChannel.activeThread = null;\n      }\n      this._activeChannel = channel;\n    }\n    get userCanDirectMessage() {\n      if (!this.currentUser) {\n        return false;\n      }\n      return this.currentUser.staff || this.currentUser.can_direct_message;\n    }\n    static {\n      dt7948.n(this.prototype, \"userCanDirectMessage\", [(0, _object.computed)(\"currentUser.staff\", \"currentUser.groups.[]\")]);\n    }\n    get userHasDirectMessages() {\n      return this.chatChannelsManager.directMessageChannels?.length > 0;\n    }\n    static {\n      dt7948.n(this.prototype, \"userHasDirectMessages\", [(0, _object.computed)(\"chatChannelsManager.directMessageChannels\")]);\n    }\n    get userCanAccessDirectMessages() {\n      return this.userCanDirectMessage || this.userHasDirectMessages;\n    }\n    get userCanInteractWithChat() {\n      return !this.activeChannel?.userSilenced;\n    }\n    static {\n      dt7948.n(this.prototype, \"userCanInteractWithChat\", [(0, _object.computed)(\"activeChannel.userSilenced\")]);\n    }\n    get activeMessage() {\n      return this._activeMessage;\n    }\n    set activeMessage(hash) {\n      if (hash) {\n        this._activeMessage = hash;\n      } else {\n        this._activeMessage = null;\n      }\n    }\n    onPresenceChangeCallback(present) {\n      if (present) {\n        // NOTE: channels is more than a simple array, it also contains\n        // tracking and membership data, see Chat::StructuredChannelSerializer\n        this.chatApi.listCurrentUserChannels().then(channelsView => {\n          this.chatSubscriptionsManager.stopChannelsSubscriptions();\n          this.chatSubscriptionsManager.startChannelsSubscriptions(channelsView.meta.message_bus_last_ids);\n          this.chatChannelsManager.userHasThreads = channelsView.has_threads ?? false;\n          [...channelsView.public_channels, ...channelsView.direct_message_channels].forEach(channelObject => {\n            this.chatChannelsManager.find(channelObject.id, {\n              fetchIfNotFound: false\n            }).then(channel => {\n              if (!channel) {\n                return;\n              }\n              // NOTE: We need to do something here for thread tracking\n              // state as well on presence change, otherwise we will be back in\n              // the same place as the channels were.\n              //\n              // At some point it would likely be better to just fetch an\n              // endpoint that gives you all channel tracking state and the\n              // thread tracking state for the current channel.\n\n              // ensures we have the latest message bus ids\n              channel.meta.message_bus_last_ids = channelObject.meta.message_bus_last_ids;\n              const state = channelsView.tracking.channel_tracking[channel.id];\n              channel.tracking.unreadCount = state.unread_count;\n              channel.tracking.mentionCount = state.mention_count;\n              channel.tracking.watchedThreadsUnreadCount = state.watched_threads_unread_count;\n              channel.currentUserMembership = channelObject.current_user_membership;\n              this.chatSubscriptionsManager.startChannelSubscription(channel);\n            });\n          });\n        });\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"onPresenceChangeCallback\", [_decorators.bind]);\n    }\n    markNetworkAsUnreliable() {\n      (0, _runloop.cancel)(this._networkCheckHandler);\n      this.set(\"isNetworkUnreliable\", true);\n      this._networkCheckHandler = (0, _later.default)(() => {\n        if (this.isDestroyed || this.isDestroying) {\n          return;\n        }\n        this.markNetworkAsReliable();\n      }, 30000);\n    }\n    markNetworkAsReliable() {\n      (0, _runloop.cancel)(this._networkCheckHandler);\n      this.set(\"isNetworkUnreliable\", false);\n    }\n    async loadChannels() {\n      // We want to be able to call this method multiple times, but only\n      // actually load the channels once. This is because we might call\n      // this method before the chat is fully initialized, and we don't\n      // want to load the channels multiple times in that case.\n      try {\n        if (this.chatStateManager.hasPreloadedChannels) {\n          return;\n        }\n        if (!this.loadingChannels) {\n          this.loadingChannels = new Promise(resolve => {\n            this.chatApi.listCurrentUserChannels().then(result => {\n              this.setupWithPreloadedChannels(result);\n              this.chatStateManager.hasPreloadedChannels = true;\n              resolve();\n            });\n          });\n        }\n        return this.loadingChannels;\n      } catch (e) {\n        (0, _ajaxError.popupAjaxError)(e);\n      }\n    }\n    setupWithPreloadedChannels(channelsView) {\n      this.chatSubscriptionsManager.startChannelsSubscriptions(channelsView.meta.message_bus_last_ids);\n      this.presenceChannel.subscribe(channelsView.global_presence_channel_state);\n      this.chatChannelsManager.userHasThreads = channelsView.has_threads ?? false;\n      [...channelsView.public_channels, ...channelsView.direct_message_channels].forEach(channelObject => {\n        const storedChannel = this.chatChannelsManager.store(channelObject);\n        if (channelsView.unread_thread_overview?.[storedChannel.id]) {\n          storedChannel.threadsManager.unreadThreadOverview = channelsView.unread_thread_overview[storedChannel.id];\n        }\n        return this.chatChannelsManager.follow(storedChannel);\n      });\n      this.chatTrackingStateManager.setupWithPreloadedState(channelsView.tracking);\n    }\n    updatePresence() {\n      (0, _runloop.next)(() => {\n        if (this.isDestroyed || this.isDestroying) {\n          return;\n        }\n        if (this.currentUser.user_option?.hide_presence) {\n          return;\n        }\n        if (this.chatStateManager.isActive) {\n          this.presenceChannel.enter({\n            activeOptions: CHAT_ONLINE_OPTIONS\n          });\n        } else {\n          this.presenceChannel.leave();\n        }\n      });\n    }\n    getDocumentTitleCount() {\n      if (this.currentUser?.user_option?.title_count_mode === \"notifications\") {\n        return this.chatTrackingStateManager.allChannelUrgentCount;\n      } else {\n        return this.chatPanePendingManager.totalPendingMessageCount;\n      }\n    }\n    switchChannelUpOrDown(direction, unreadOnly = false) {\n      const {\n        activeChannel\n      } = this;\n      if (!activeChannel) {\n        return; // Chat isn't open. Return and do nothing!\n      }\n\n      // Build unified channel list matching sidebar order\n      const allChannels = unreadOnly ? this.#getOrderedChannelsWithActivity(activeChannel) : this.#getOrderedChannels();\n      if (allChannels.length === 0) {\n        return;\n      }\n      const directionUp = direction === \"up\";\n      const currentIndex = allChannels.findIndex(c => c.id === activeChannel.id);\n      let nextIndex;\n      if (currentIndex === -1) {\n        // Active channel not in list, go to start/end\n        nextIndex = directionUp ? allChannels.length - 1 : 0;\n      } else {\n        nextIndex = currentIndex + (directionUp ? -1 : 1);\n        // Wrap around\n        if (nextIndex < 0) {\n          nextIndex = allChannels.length - 1;\n        } else if (nextIndex >= allChannels.length) {\n          nextIndex = 0;\n        }\n      }\n      const nextChannel = allChannels[nextIndex];\n      if (nextChannel && nextChannel.id !== activeChannel.id) {\n        return this.router.transitionTo(\"chat.channel\", ...nextChannel.routeModels);\n      }\n    }\n\n    /**\n     * Returns channels in sidebar display order: starred, public, DMs.\n     *\n     * @returns {Array} Ordered array of chat channels matching sidebar order\n     */\n    #getOrderedChannels() {\n      const manager = this.chatChannelsManager;\n      return [...manager.starredChannels, ...manager.unstarredPublicMessageChannels, ...manager.truncatedUnstarredDirectMessageChannels];\n    }\n\n    /**\n     * Returns channels with unread activity in sidebar display order.\n     * If the active channel has no unreads, inserts it at its proper position\n     * relative to other channels with activity.\n     *\n     * @param {ChatChannel} activeChannel - The currently active channel\n     * @returns {Array} Ordered array of channels with activity\n     */\n    #getOrderedChannelsWithActivity(activeChannel) {\n      const manager = this.chatChannelsManager;\n\n      // Filter each section for channels with activity\n      const starredWithActivity = manager.starredChannels.filter(c => c.hasUnread);\n      const publicWithActivity = manager.unstarredPublicMessageChannels.filter(c => c.hasUnread);\n      const dmsWithActivity = manager.truncatedUnstarredDirectMessageChannels.filter(c => c.hasUnread);\n      const allChannels = [...starredWithActivity, ...publicWithActivity, ...dmsWithActivity];\n\n      // If the active channel has no unread messages, insert it at its proper position\n      if (!activeChannel.hasUnread) {\n        const orderedChannels = this.#getOrderedChannels();\n        const activeIndexInOrdered = orderedChannels.findIndex(c => c.id === activeChannel.id);\n        if (activeIndexInOrdered !== -1) {\n          // Find the last unread channel before the active channel's position\n          let insertAfterIndex = -1;\n          for (let i = activeIndexInOrdered - 1; i >= 0; i--) {\n            const channelAtPos = orderedChannels[i];\n            const indexInActivity = allChannels.findIndex(c => c.id === channelAtPos.id);\n            if (indexInActivity !== -1) {\n              insertAfterIndex = indexInActivity;\n              break;\n            }\n          }\n\n          // Insert the active channel after the found unread channel (or at start)\n          allChannels.splice(insertAfterIndex + 1, 0, activeChannel);\n        }\n      }\n      return allChannels;\n    }\n    _fireOpenFloatAppEvent(channel, messageId = null) {\n      messageId ? this.router.transitionTo(\"chat.channel.near-message\", ...channel.routeModels, messageId) : this.router.transitionTo(\"chat.channel\", ...channel.routeModels);\n    }\n    async followChannel(channel) {\n      return this.chatChannelsManager.follow(channel);\n    }\n    async unfollowChannel(channel) {\n      return this.chatChannelsManager.unfollow(channel).then(() => {\n        if (channel === this.activeChannel && channel.isDirectMessageChannel) {\n          this.router.transitionTo(\"chat\");\n        }\n      });\n    }\n    upsertDmChannelForUser(channel, user) {\n      const usernames = (0, _arrayTools.uniqueItemsFromArray)((channel.chatable.users || []).map(item => item.username).concat(user.username));\n      return this.upsertDmChannel({\n        usernames\n      });\n    }\n\n    // @param {object} targets - The targets to create or fetch the direct message\n    // channel for. The current user will automatically be included in the channel when it is created.\n    // @param {array} [targets.usernames] - The usernames to include in the direct message channel.\n    // @param {array} [targets.groups] - The groups to include in the direct message channel.\n    // @param {object} opts - Optional values when fetching or creating the direct message channel.\n    // @param {string|null} [opts.name] - Name for the direct message channel.\n    // @param {boolean} [opts.upsert] - Should we attempt to fetch existing channel before creating a new one.\n    createDmChannel(targets, opts = {\n      name: null,\n      upsert: false\n    }) {\n      return (0, _ajax.ajax)(\"/chat/api/direct-message-channels.json\", {\n        method: \"POST\",\n        data: {\n          target_usernames: targets.usernames ? (0, _arrayTools.uniqueItemsFromArray)(targets.usernames) : null,\n          target_groups: targets.groups ? (0, _arrayTools.uniqueItemsFromArray)(targets.groups) : null,\n          upsert: opts.upsert,\n          name: opts.name\n        }\n      }).then(response => {\n        const channel = this.chatChannelsManager.store(response.channel);\n        this.chatChannelsManager.follow(channel);\n        return channel;\n      }).catch(_ajaxError.popupAjaxError);\n    }\n    upsertDmChannel(targets, name = null) {\n      return this.createDmChannel(targets, {\n        name,\n        upsert: true\n      });\n    }\n\n    // @param {array} usernames - The usernames to fetch the direct message\n    // channel for. The current user will automatically be included as a\n    // participant to fetch the channel for.\n    getDmChannelForUsernames(usernames) {\n      return (0, _ajax.ajax)(\"/chat/direct_messages.json\", {\n        data: {\n          usernames: (0, _arrayTools.uniqueItemsFromArray)(usernames).join(\",\")\n        }\n      });\n    }\n    addToolbarButton() {\n      (0, _deprecated.default)(\"Use the new chat API `api.registerChatComposerButton` instead of `chat.addToolbarButton`\", {\n        id: \"discourse.chat.addToolbarButton\"\n      });\n    }\n    toggleDrawer() {\n      this.chatStateManager.didToggleDrawer();\n      this.appEvents.trigger(\"chat:toggle-expand\", this.chatStateManager.isDrawerExpanded);\n    }\n    static {\n      dt7948.n(this.prototype, \"toggleDrawer\", [_object.action]);\n    }\n  }\n  _exports.default = Chat;\n});","define(\"discourse/plugins/chat/discourse/services/interacted-chat-message\", [\"exports\", \"@glimmer/tracking\", \"@ember/service\"], function (_exports, _tracking, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class InteractedChatMessage extends _service.default {\n    static {\n      dt7948.g(this.prototype, \"secondaryOptionsOpen\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #secondaryOptionsOpen = (dt7948.i(this, \"secondaryOptionsOpen\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"emojiPickerOpen\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #emojiPickerOpen = (dt7948.i(this, \"emojiPickerOpen\"), void 0);\n  }\n  _exports.default = InteractedChatMessage;\n});","define(\"discourse/plugins/chat/discourse/templates/chat\", [\"exports\", \"discourse/helpers/body-class\", \"discourse/helpers/concat-class\", \"discourse/helpers/html-class\", \"discourse/plugins/chat/discourse/components/channels-list\", \"discourse/plugins/chat/discourse/components/chat-footer\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _bodyClass, _concatClass, _htmlClass, _channelsList, _chatFooter, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    {{bodyClass \"has-chat\" \"has-full-page-chat\"}}\n  {{htmlClass \"has-chat\" \"has-full-page-chat\"}}\n  \n  <div id=\"chat-progress-bar-container\"></div>\n  \n  <div\n    class={{concatClass\n      \"full-page-chat\"\n      (if @controller.shouldUseCoreSidebar \"full-page-chat-sidebar-enabled\")\n    }}\n  >\n    {{#if @controller.shouldUseChatSidebar}}\n      <ChannelsList />\n    {{/if}}\n  \n    <div\n      id=\"main-chat-outlet\"\n      class={{concatClass\n        \"main-chat-outlet\"\n        @controller.mainOutletModifierClasses\n      }}\n    >\n      {{outlet}}\n      {{#if @controller.shouldUseChatFooter}}\n        <ChatFooter />\n      {{/if}}\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"xEBMfCL5\",\n    \"block\": \"[[[1,[28,[32,0],[\\\"has-chat\\\",\\\"has-full-page-chat\\\"],null]],[1,\\\"\\\\n\\\"],[1,[28,[32,1],[\\\"has-chat\\\",\\\"has-full-page-chat\\\"],null]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,1,\\\"chat-progress-bar-container\\\"],[12],[13],[1,\\\"\\\\n\\\\n\\\"],[10,0],[15,0,[28,[32,2],[\\\"full-page-chat\\\",[52,[30,1,[\\\"shouldUseCoreSidebar\\\"]],\\\"full-page-chat-sidebar-enabled\\\"]],null]],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"shouldUseChatSidebar\\\"]],[[[1,\\\"    \\\"],[8,[32,3],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[10,0],[14,1,\\\"main-chat-outlet\\\"],[15,0,[28,[32,2],[\\\"main-chat-outlet\\\",[30,1,[\\\"mainOutletModifierClasses\\\"]]],null]],[12],[1,\\\"\\\\n    \\\"],[46,[28,[31,2],null,null],null,null,null],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"shouldUseChatFooter\\\"]],[[[1,\\\"      \\\"],[8,[32,4],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@controller\\\"],[\\\"if\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/templates/chat.js\",\n    \"scope\": () => [_bodyClass.default, _htmlClass.default, _concatClass.default, _channelsList.default, _chatFooter.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"chat\"));\n});","define(\"discourse/plugins/chat/discourse/templates/chat/browse\", [\"exports\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/components/chat/navbar\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _discourseI18n, _navbar, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"c-routes --browse\">\n    <Navbar as |navbar|>\n      <navbar.BackButton />\n      <navbar.Title @title={{i18n \"chat.browse.title\"}} />\n  \n      <navbar.Actions as |a|>\n        <a.NewChannelButton />\n        <a.OpenDrawerButton />\n      </navbar.Actions>\n    </Navbar>\n  \n    {{outlet}}\n  </div>\n  */\n  {\n    \"id\": \"xC+j+cwq\",\n    \"block\": \"[[[10,0],[14,0,\\\"c-routes --browse\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[32,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"BackButton\\\"]],null,null,null],[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Title\\\"]],null,[[\\\"@title\\\"],[[28,[32,1],[\\\"chat.browse.title\\\"],null]]],null],[1,\\\"\\\\n\\\\n    \\\"],[8,[30,1,[\\\"Actions\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"NewChannelButton\\\"]],null,null,null],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"OpenDrawerButton\\\"]],null,null,null],[1,\\\"\\\\n    \\\"]],[2]]]]],[1,\\\"\\\\n  \\\"]],[1]]]]],[1,\\\"\\\\n\\\\n  \\\"],[46,[28,[31,1],null,null],null,null,null],[1,\\\"\\\\n\\\"],[13]],[\\\"navbar\\\",\\\"a\\\"],[\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/templates/chat/browse.js\",\n    \"scope\": () => [_navbar.default, _discourseI18n.i18n],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"browse\"));\n});","define(\"discourse/plugins/chat/discourse/templates/chat/browse/all\", [\"exports\", \"discourse/plugins/chat/discourse/components/browse-channels\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _browseChannels, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <BrowseChannels @currentTab=\"all\" />\n  */\n  {\n    \"id\": \"Sy8sAqux\",\n    \"block\": \"[[[8,[32,0],null,[[\\\"@currentTab\\\"],[\\\"all\\\"]],null]],[],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/templates/chat/browse/all.js\",\n    \"scope\": () => [_browseChannels.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"all\"));\n});","define(\"discourse/plugins/chat/discourse/templates/chat/browse/archived\", [\"exports\", \"discourse/plugins/chat/discourse/components/browse-channels\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _browseChannels, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <BrowseChannels @currentTab=\"archived\" />\n  */\n  {\n    \"id\": \"bMuVPvoN\",\n    \"block\": \"[[[8,[32,0],null,[[\\\"@currentTab\\\"],[\\\"archived\\\"]],null]],[],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/templates/chat/browse/archived.js\",\n    \"scope\": () => [_browseChannels.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"archived\"));\n});","define(\"discourse/plugins/chat/discourse/templates/chat/browse/closed\", [\"exports\", \"discourse/plugins/chat/discourse/components/browse-channels\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _browseChannels, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <BrowseChannels @currentTab=\"closed\" />\n  */\n  {\n    \"id\": \"5vqqg+d2\",\n    \"block\": \"[[[8,[32,0],null,[[\\\"@currentTab\\\"],[\\\"closed\\\"]],null]],[],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/templates/chat/browse/closed.js\",\n    \"scope\": () => [_browseChannels.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"closed\"));\n});","define(\"discourse/plugins/chat/discourse/templates/chat/browse/open\", [\"exports\", \"discourse/plugins/chat/discourse/components/browse-channels\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _browseChannels, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <BrowseChannels @currentTab=\"open\" />\n  */\n  {\n    \"id\": \"EW0oy4Gu\",\n    \"block\": \"[[[8,[32,0],null,[[\\\"@currentTab\\\"],[\\\"open\\\"]],null]],[],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/templates/chat/browse/open.js\",\n    \"scope\": () => [_browseChannels.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"open\"));\n});","define(\"discourse/plugins/chat/discourse/templates/chat/channel\", [\"exports\", \"discourse/plugins/chat/discourse/components/chat/routes/channel\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _channel, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <Channel\n    @channel={{@controller.model}}\n    @targetMessageId={{@controller.targetMessageId}}\n  />\n  */\n  {\n    \"id\": \"Vjggeulb\",\n    \"block\": \"[[[8,[32,0],null,[[\\\"@channel\\\",\\\"@targetMessageId\\\"],[[30,1,[\\\"model\\\"]],[30,1,[\\\"targetMessageId\\\"]]]],null]],[\\\"@controller\\\"],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/templates/chat/channel.js\",\n    \"scope\": () => [_channel.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"channel\"));\n});","define(\"discourse/plugins/chat/discourse/templates/chat/channel/info\", [\"exports\", \"discourse/plugins/chat/discourse/components/chat/routes/channel-info\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _channelInfo, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <ChannelInfo @channel={{@controller.model}} />\n  */\n  {\n    \"id\": \"hQBXG4qy\",\n    \"block\": \"[[[8,[32,0],null,[[\\\"@channel\\\"],[[30,1,[\\\"model\\\"]]]],null]],[\\\"@controller\\\"],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/templates/chat/channel/info.js\",\n    \"scope\": () => [_channelInfo.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"info\"));\n});","define(\"discourse/plugins/chat/discourse/templates/chat/channel/info/members\", [\"exports\", \"discourse/plugins/chat/discourse/components/chat/routes/channel-info-members\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _channelInfoMembers, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <ChannelInfoMembers @channel={{@controller.model}} />\n  */\n  {\n    \"id\": \"PW4ZF06w\",\n    \"block\": \"[[[8,[32,0],null,[[\\\"@channel\\\"],[[30,1,[\\\"model\\\"]]]],null]],[\\\"@controller\\\"],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/templates/chat/channel/info/members.js\",\n    \"scope\": () => [_channelInfoMembers.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"members\"));\n});","define(\"discourse/plugins/chat/discourse/templates/chat/channel/info/settings\", [\"exports\", \"discourse/plugins/chat/discourse/components/chat/routes/channel-info-settings\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _channelInfoSettings, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <ChannelInfoSettings @channel={{@controller.model}} />\n  */\n  {\n    \"id\": \"rGjb/N1y\",\n    \"block\": \"[[[8,[32,0],null,[[\\\"@channel\\\"],[[30,1,[\\\"model\\\"]]]],null]],[\\\"@controller\\\"],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/templates/chat/channel/info/settings.js\",\n    \"scope\": () => [_channelInfoSettings.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"settings\"));\n});","define(\"discourse/plugins/chat/discourse/templates/chat/channel/pins\", [\"exports\", \"discourse/plugins/chat/discourse/components/chat/routes/channel-pins\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _channelPins, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <ChannelPins\n    @channel={{@model.channel}}\n    @pinnedMessages={{@model.pinnedMessages}}\n  />\n  */\n  {\n    \"id\": \"PUFfM5ue\",\n    \"block\": \"[[[8,[32,0],null,[[\\\"@channel\\\",\\\"@pinnedMessages\\\"],[[30,1,[\\\"channel\\\"]],[30,1,[\\\"pinnedMessages\\\"]]]],null]],[\\\"@model\\\"],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/templates/chat/channel/pins.js\",\n    \"scope\": () => [_channelPins.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"pins\"));\n});","define(\"discourse/plugins/chat/discourse/templates/chat/channel/thread\", [\"exports\", \"discourse/plugins/chat/discourse/components/chat/routes/channel-thread\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _channelThread, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <ChannelThread\n    @thread={{@controller.model}}\n    @targetMessageId={{@controller.targetMessageId}}\n  />\n  */\n  {\n    \"id\": \"yza4aNKR\",\n    \"block\": \"[[[8,[32,0],null,[[\\\"@thread\\\",\\\"@targetMessageId\\\"],[[30,1,[\\\"model\\\"]],[30,1,[\\\"targetMessageId\\\"]]]],null]],[\\\"@controller\\\"],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/templates/chat/channel/thread.js\",\n    \"scope\": () => [_channelThread.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"thread\"));\n});","define(\"discourse/plugins/chat/discourse/templates/chat/channel/threads\", [\"exports\", \"discourse/plugins/chat/discourse/components/chat/routes/channel-threads\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _channelThreads, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <ChannelThreads @channel={{@controller.model}} />\n  */\n  {\n    \"id\": \"1i8fivee\",\n    \"block\": \"[[[8,[32,0],null,[[\\\"@channel\\\"],[[30,1,[\\\"model\\\"]]]],null]],[\\\"@controller\\\"],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/templates/chat/channel/threads.js\",\n    \"scope\": () => [_channelThreads.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"threads\"));\n});","define(\"discourse/plugins/chat/discourse/templates/chat/channels\", [\"exports\", \"discourse/plugins/chat/discourse/components/chat/routes/channels\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _channels, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <Channels />\n  */\n  {\n    \"id\": \"BtpSn1x8\",\n    \"block\": \"[[[8,[32,0],null,null,null]],[],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/templates/chat/channels.js\",\n    \"scope\": () => [_channels.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"channels\"));\n});","define(\"discourse/plugins/chat/discourse/templates/chat/direct-messages\", [\"exports\", \"discourse/plugins/chat/discourse/components/chat/routes/direct-messages\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _directMessages, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <DirectMessages />\n  */\n  {\n    \"id\": \"X3tG6cY+\",\n    \"block\": \"[[[8,[32,0],null,null,null]],[],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/templates/chat/direct-messages.js\",\n    \"scope\": () => [_directMessages.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"direct-messages\"));\n});","define(\"discourse/plugins/chat/discourse/templates/chat/index\", [\"exports\", \"discourse/plugins/chat/discourse/components/channels-list\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _channelsList, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <ChannelsList />\n  */\n  {\n    \"id\": \"Wb2M9YC1\",\n    \"block\": \"[[[8,[32,0],null,null,null]],[],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/templates/chat/index.js\",\n    \"scope\": () => [_channelsList.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"chat\"));\n});","define(\"discourse/plugins/chat/discourse/templates/chat/search\", [\"exports\", \"discourse/plugins/chat/discourse/components/chat/routes/search\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _search, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <Search @query={{@controller.q}} />\n  */\n  {\n    \"id\": \"jF514Bpn\",\n    \"block\": \"[[[8,[32,0],null,[[\\\"@query\\\"],[[30,1,[\\\"q\\\"]]]],null]],[\\\"@controller\\\"],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/templates/chat/search.js\",\n    \"scope\": () => [_search.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"search\"));\n});","define(\"discourse/plugins/chat/discourse/templates/chat/starred-channels\", [\"exports\", \"discourse/plugins/chat/discourse/components/chat/routes/starred-channels\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _starredChannels, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <StarredChannels />\n  */\n  {\n    \"id\": \"xt87wYKD\",\n    \"block\": \"[[[8,[32,0],null,null,null]],[],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/templates/chat/starred-channels.js\",\n    \"scope\": () => [_starredChannels.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"starred-channels\"));\n});","define(\"discourse/plugins/chat/discourse/templates/chat/threads\", [\"exports\", \"discourse/plugins/chat/discourse/components/chat/routes/threads\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _threads, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <Threads />\n  */\n  {\n    \"id\": \"CFRc1Z2P\",\n    \"block\": \"[[[8,[32,0],null,null,null]],[],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/templates/chat/threads.js\",\n    \"scope\": () => [_threads.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"threads\"));\n});","define(\"discourse/plugins/chat/discourse/templates/preferences/chat\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/helper\", \"@ember/object\", \"@ember/service\", \"discourse/components/emoji-picker\", \"discourse/components/form\", \"discourse/lib/ajax-error\", \"discourse/lib/environment\", \"discourse/lib/utilities\", \"discourse/services/keyboard-shortcuts\", \"discourse/truth-helpers\", \"discourse-i18n\", \"discourse/plugins/chat/discourse/lib/chat-constants\", \"discourse/plugins/chat/discourse/services/chat-audio-manager\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _helper, _object, _service, _emojiPicker, _form, _ajaxError, _environment, _utilities, _keyboardShortcuts, _truthHelpers, _discourseI18n, _chatConstants, _chatAudioManager3, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class Chat extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"chatAudioManager\", [_service.service]);\n    }\n    #chatAudioManager = (dt7948.i(this, \"chatAudioManager\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"saved\", [_tracking.tracked], function () {\n        return false;\n      });\n    }\n    #saved = (dt7948.i(this, \"saved\"), void 0);\n    get chatQuickReactionTypes() {\n      return [{\n        label: (0, _discourseI18n.i18n)(\"chat.quick_reaction_type.options.frequent\"),\n        value: _chatConstants.CHAT_QUICK_REACTION_TYPE_FREQUENT\n      }, {\n        label: (0, _discourseI18n.i18n)(\"chat.quick_reaction_type.options.custom\"),\n        value: _chatConstants.CHAT_QUICK_REACTION_TYPE_CUSTOM\n      }];\n    }\n    get chatSendShortcutOptions() {\n      return [{\n        label: (0, _discourseI18n.i18n)(\"chat.send_shortcut.enter.label\"),\n        value: _chatConstants.CHAT_SEND_SHORTCUT_ENTER\n      }, {\n        label: (0, _discourseI18n.i18n)(\"chat.send_shortcut.meta_enter.label\", {\n          meta_key: (0, _utilities.translateModKey)(_keyboardShortcuts.PLATFORM_KEY_MODIFIER)\n        }),\n        value: _chatConstants.CHAT_SEND_SHORTCUT_META_ENTER\n      }];\n    }\n    get headerIndicatorOptions() {\n      return [{\n        name: (0, _discourseI18n.i18n)(\"chat.header_indicator_preference.all_new\"),\n        value: _chatConstants.HEADER_INDICATOR_PREFERENCE_ALL_NEW\n      }, {\n        name: (0, _discourseI18n.i18n)(\"chat.header_indicator_preference.dm_and_mentions\"),\n        value: _chatConstants.HEADER_INDICATOR_PREFERENCE_DM_AND_MENTIONS\n      }, {\n        name: (0, _discourseI18n.i18n)(\"chat.header_indicator_preference.only_mentions\"),\n        value: _chatConstants.HEADER_INDICATOR_PREFERENCE_ONLY_MENTIONS\n      }, {\n        name: (0, _discourseI18n.i18n)(\"chat.header_indicator_preference.never\"),\n        value: _chatConstants.HEADER_INDICATOR_PREFERENCE_NEVER\n      }];\n    }\n    get chatSeparateSidebarModeOptions() {\n      return [{\n        name: (0, _discourseI18n.i18n)(\"admin.site_settings.chat_separate_sidebar_mode.always\"),\n        value: _chatConstants.CHAT_SEPARATE_SIDEBAR_MODE_ALWAYS\n      }, {\n        name: (0, _discourseI18n.i18n)(\"admin.site_settings.chat_separate_sidebar_mode.fullscreen\"),\n        value: _chatConstants.CHAT_SEPARATE_SIDEBAR_MODE_FULLSCREEN\n      }, {\n        name: (0, _discourseI18n.i18n)(\"admin.site_settings.chat_separate_sidebar_mode.never\"),\n        value: _chatConstants.CHAT_SEPARATE_SIDEBAR_MODE_NEVER\n      }];\n    }\n    get chatSounds() {\n      return Object.keys(_chatAudioManager3.CHAT_SOUNDS).map(value => {\n        return {\n          name: (0, _discourseI18n.i18n)(`chat.sounds.${value}`),\n          value\n        };\n      });\n    }\n    get formData() {\n      const userOption = this.args.model.user_option;\n      const emojis = (userOption.chat_quick_reactions_custom || _chatConstants.CHAT_QUICK_REACTIONS_CUSTOM_DEFAULT).split(\"|\");\n      return {\n        chat_enabled: userOption.chat_enabled,\n        chat_quick_reaction_type: userOption.chat_quick_reaction_type,\n        chat_quick_reactions_custom: emojis,\n        only_chat_push_notifications: userOption.only_chat_push_notifications,\n        ignore_channel_wide_mention: userOption.ignore_channel_wide_mention,\n        chat_sound: userOption.chat_sound,\n        chat_header_indicator_preference: userOption.chat_header_indicator_preference,\n        chat_separate_sidebar_mode: userOption.chat_separate_sidebar_mode,\n        chat_send_shortcut: userOption.chat_send_shortcut\n      };\n    }\n    handleEmojiSet(index, field, selectedEmoji) {\n      let newValue = [...field.value];\n      newValue[index] = selectedEmoji;\n      field.set(newValue);\n    }\n    static {\n      dt7948.n(this.prototype, \"handleEmojiSet\", [_object.action]);\n    }\n    handleChatSoundSet(sound, {\n      set,\n      name\n    }) {\n      if (sound) {\n        this.chatAudioManager?.play(sound);\n      }\n      set(name, sound == null ? null : sound);\n    }\n    static {\n      dt7948.n(this.prototype, \"handleChatSoundSet\", [_object.action]);\n    }\n    handleSubmit(data) {\n      this.saved = false;\n      const {\n        chat_quick_reactions_custom,\n        ...userOptions\n      } = data;\n      const shouldReload = userOptions.chat_enabled !== this.args.model.user_option.chat_enabled;\n      this.args.model.set(\"user_option.chat_quick_reactions_custom\", chat_quick_reactions_custom.join(\"|\"));\n      for (const [key, value] of Object.entries(userOptions)) {\n        this.args.model.set(`user_option.${key}`, value);\n      }\n      return this.args.model.save(_chatConstants.CHAT_ATTRS).then(() => {\n        this.saved = true;\n        if (shouldReload && !(0, _environment.isTesting)()) {\n          location.reload();\n        }\n      }).catch(_ajaxError.popupAjaxError);\n    }\n    static {\n      dt7948.n(this.prototype, \"handleSubmit\", [_object.action]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <Form\n        @data={{this.formData}}\n        @onSubmit={{this.handleSubmit}}\n        as |form data|\n      >\n        <form.Field\n          @title={{i18n \"chat.enable\"}}\n          @name=\"chat_enabled\"\n          @format=\"large\"\n          @type=\"checkbox\"\n          as |field|\n        >\n          <field.Control @value={{field.value}} />\n        </form.Field>\n      \n        <form.Section @title={{i18n \"chat.chat_notifications_title\"}}>\n          <form.Field\n            @title={{i18n \"chat.only_chat_push_notifications.title\"}}\n            @name=\"only_chat_push_notifications\"\n            @format=\"large\"\n            @type=\"checkbox\"\n            as |field|\n          >\n            <field.Control @value={{field.value}} />\n          </form.Field>\n          <form.Field\n            @title={{i18n \"chat.ignore_channel_wide_mention.title\"}}\n            @name=\"ignore_channel_wide_mention\"\n            @format=\"large\"\n            @type=\"checkbox\"\n            as |field|\n          >\n            <field.Control @value={{field.value}} />\n          </form.Field>\n      \n          <form.Field\n            @title={{i18n \"chat.sound.title\"}}\n            @name=\"chat_sound\"\n            @format=\"large\"\n            @onSet={{this.handleChatSoundSet}}\n            @type=\"select\"\n            as |field|\n          >\n            <field.Control @includeNone={{true}} as |select|>\n              {{#each this.chatSounds as |sound|}}\n                <select.Option @value={{sound.value}}>\n                  {{sound.name}}\n                </select.Option>\n              {{/each}}\n            </field.Control>\n          </form.Field>\n      \n          <form.Field\n            @title={{i18n \"chat.header_indicator_preference.title\"}}\n            @name=\"chat_header_indicator_preference\"\n            @format=\"large\"\n            @type=\"select\"\n            as |field|\n          >\n            <field.Control @includeNone={{false}} as |select|>\n              {{#each this.headerIndicatorOptions as |option|}}\n                <select.Option @value={{option.value}}>\n                  {{option.name}}\n                </select.Option>\n              {{/each}}\n            </field.Control>\n          </form.Field>\n          <form.Field\n            @title={{i18n \"chat.separate_sidebar_mode.title\"}}\n            @name=\"chat_separate_sidebar_mode\"\n            @format=\"large\"\n            @type=\"select\"\n            as |field|\n          >\n            <field.Control @includeNone={{false}} as |select|>\n              {{#each this.chatSeparateSidebarModeOptions as |option|}}\n                <select.Option @value={{option.value}}>\n                  {{option.name}}\n                </select.Option>\n              {{/each}}\n            </field.Control>\n          </form.Field>\n        </form.Section>\n        <form.Section @title={{i18n \"chat.personalization_title\"}}>\n          <form.Field\n            @title={{i18n \"chat.quick_reaction_type.title\"}}\n            @name=\"chat_quick_reaction_type\"\n            @format=\"large\"\n            @type=\"radio-group\"\n            as |field|\n          >\n            <field.Control as |radioGroup|>\n              {{#each this.chatQuickReactionTypes as |option|}}\n                <radioGroup.Radio @value={{option.value}}>\n                  {{option.label}}\n                </radioGroup.Radio>\n              {{/each}}\n            </field.Control>\n          </form.Field>\n      \n          {{#if (eq data.chat_quick_reaction_type \"custom\")}}\n            <form.Field\n              @title={{i18n \"chat.quick_reaction_type.options.custom\"}}\n              @name=\"chat_quick_reactions_custom\"\n              @format=\"large\"\n              @type=\"custom\"\n              as |field|\n            >\n              <field.Control>\n                {{#each data.chat_quick_reactions_custom as |emoji index|}}\n                  <EmojiPicker\n                    @emoji={{emoji}}\n                    @btnClass=\"btn-default\"\n                    @context=\"chat_preferences\"\n                    @didSelectEmoji={{fn this.handleEmojiSet index field}}\n                  />\n                {{/each}}\n              </field.Control>\n            </form.Field>\n          {{/if}}\n          <form.Field\n            @title={{i18n \"chat.send_shortcut.title\"}}\n            @name=\"chat_send_shortcut\"\n            @format=\"large\"\n            @type=\"radio-group\"\n            as |field|\n          >\n            <field.Control as |radioGroup|>\n              {{#each this.chatSendShortcutOptions as |option|}}\n                <radioGroup.Radio @value={{option.value}}>\n                  {{option.label}}\n                </radioGroup.Radio>\n              {{/each}}\n            </field.Control>\n          </form.Field>\n        </form.Section>\n        <div class=\"save-controls\">\n          <form.Submit />\n          {{#if this.saved}}\n            <span class=\"saved\">{{i18n \"saved\"}}</span>\n          {{/if}}\n        </div>\n      </Form>\n      */\n      {\n        \"id\": \"E0rbpwV+\",\n        \"block\": \"[[[8,[32,0],null,[[\\\"@data\\\",\\\"@onSubmit\\\"],[[30,0,[\\\"formData\\\"]],[30,0,[\\\"handleSubmit\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[30,1,[\\\"Field\\\"]],null,[[\\\"@title\\\",\\\"@name\\\",\\\"@format\\\",\\\"@type\\\"],[[28,[32,1],[\\\"chat.enable\\\"],null],\\\"chat_enabled\\\",\\\"large\\\",\\\"checkbox\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[30,3,[\\\"Control\\\"]],null,[[\\\"@value\\\"],[[30,3,[\\\"value\\\"]]]],null],[1,\\\"\\\\n  \\\"]],[3]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[30,1,[\\\"Section\\\"]],null,[[\\\"@title\\\"],[[28,[32,1],[\\\"chat.chat_notifications_title\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Field\\\"]],null,[[\\\"@title\\\",\\\"@name\\\",\\\"@format\\\",\\\"@type\\\"],[[28,[32,1],[\\\"chat.only_chat_push_notifications.title\\\"],null],\\\"only_chat_push_notifications\\\",\\\"large\\\",\\\"checkbox\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,4,[\\\"Control\\\"]],null,[[\\\"@value\\\"],[[30,4,[\\\"value\\\"]]]],null],[1,\\\"\\\\n    \\\"]],[4]]]]],[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Field\\\"]],null,[[\\\"@title\\\",\\\"@name\\\",\\\"@format\\\",\\\"@type\\\"],[[28,[32,1],[\\\"chat.ignore_channel_wide_mention.title\\\"],null],\\\"ignore_channel_wide_mention\\\",\\\"large\\\",\\\"checkbox\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,5,[\\\"Control\\\"]],null,[[\\\"@value\\\"],[[30,5,[\\\"value\\\"]]]],null],[1,\\\"\\\\n    \\\"]],[5]]]]],[1,\\\"\\\\n\\\\n    \\\"],[8,[30,1,[\\\"Field\\\"]],null,[[\\\"@title\\\",\\\"@name\\\",\\\"@format\\\",\\\"@onSet\\\",\\\"@type\\\"],[[28,[32,1],[\\\"chat.sound.title\\\"],null],\\\"chat_sound\\\",\\\"large\\\",[30,0,[\\\"handleChatSoundSet\\\"]],\\\"select\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,6,[\\\"Control\\\"]],null,[[\\\"@includeNone\\\"],[true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\\\"chatSounds\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[8,[30,7,[\\\"Option\\\"]],null,[[\\\"@value\\\"],[[30,8,[\\\"value\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[1,[30,8,[\\\"name\\\"]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[8]],null],[1,\\\"      \\\"]],[7]]]]],[1,\\\"\\\\n    \\\"]],[6]]]]],[1,\\\"\\\\n\\\\n    \\\"],[8,[30,1,[\\\"Field\\\"]],null,[[\\\"@title\\\",\\\"@name\\\",\\\"@format\\\",\\\"@type\\\"],[[28,[32,1],[\\\"chat.header_indicator_preference.title\\\"],null],\\\"chat_header_indicator_preference\\\",\\\"large\\\",\\\"select\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,9,[\\\"Control\\\"]],null,[[\\\"@includeNone\\\"],[false]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\\\"headerIndicatorOptions\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[8,[30,10,[\\\"Option\\\"]],null,[[\\\"@value\\\"],[[30,11,[\\\"value\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[1,[30,11,[\\\"name\\\"]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[11]],null],[1,\\\"      \\\"]],[10]]]]],[1,\\\"\\\\n    \\\"]],[9]]]]],[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Field\\\"]],null,[[\\\"@title\\\",\\\"@name\\\",\\\"@format\\\",\\\"@type\\\"],[[28,[32,1],[\\\"chat.separate_sidebar_mode.title\\\"],null],\\\"chat_separate_sidebar_mode\\\",\\\"large\\\",\\\"select\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,12,[\\\"Control\\\"]],null,[[\\\"@includeNone\\\"],[false]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\\\"chatSeparateSidebarModeOptions\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[8,[30,13,[\\\"Option\\\"]],null,[[\\\"@value\\\"],[[30,14,[\\\"value\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[1,[30,14,[\\\"name\\\"]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[14]],null],[1,\\\"      \\\"]],[13]]]]],[1,\\\"\\\\n    \\\"]],[12]]]]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[30,1,[\\\"Section\\\"]],null,[[\\\"@title\\\"],[[28,[32,1],[\\\"chat.personalization_title\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Field\\\"]],null,[[\\\"@title\\\",\\\"@name\\\",\\\"@format\\\",\\\"@type\\\"],[[28,[32,1],[\\\"chat.quick_reaction_type.title\\\"],null],\\\"chat_quick_reaction_type\\\",\\\"large\\\",\\\"radio-group\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,15,[\\\"Control\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\\\"chatQuickReactionTypes\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[8,[30,16,[\\\"Radio\\\"]],null,[[\\\"@value\\\"],[[30,17,[\\\"value\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[1,[30,17,[\\\"label\\\"]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[17]],null],[1,\\\"      \\\"]],[16]]]]],[1,\\\"\\\\n    \\\"]],[15]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[32,2],[[30,2,[\\\"chat_quick_reaction_type\\\"]],\\\"custom\\\"],null],[[[1,\\\"      \\\"],[8,[30,1,[\\\"Field\\\"]],null,[[\\\"@title\\\",\\\"@name\\\",\\\"@format\\\",\\\"@type\\\"],[[28,[32,1],[\\\"chat.quick_reaction_type.options.custom\\\"],null],\\\"chat_quick_reactions_custom\\\",\\\"large\\\",\\\"custom\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[30,18,[\\\"Control\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[31,1],[[28,[31,1],[[30,2,[\\\"chat_quick_reactions_custom\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[8,[32,3],null,[[\\\"@emoji\\\",\\\"@btnClass\\\",\\\"@context\\\",\\\"@didSelectEmoji\\\"],[[30,19],\\\"btn-default\\\",\\\"chat_preferences\\\",[28,[32,4],[[30,0,[\\\"handleEmojiSet\\\"]],[30,20],[30,18]],null]]],null],[1,\\\"\\\\n\\\"]],[19,20]],null],[1,\\\"        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"]],[18]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[8,[30,1,[\\\"Field\\\"]],null,[[\\\"@title\\\",\\\"@name\\\",\\\"@format\\\",\\\"@type\\\"],[[28,[32,1],[\\\"chat.send_shortcut.title\\\"],null],\\\"chat_send_shortcut\\\",\\\"large\\\",\\\"radio-group\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,21,[\\\"Control\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\\\"chatSendShortcutOptions\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[8,[30,22,[\\\"Radio\\\"]],null,[[\\\"@value\\\"],[[30,23,[\\\"value\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[1,[30,23,[\\\"label\\\"]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[23]],null],[1,\\\"      \\\"]],[22]]]]],[1,\\\"\\\\n    \\\"]],[21]]]]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"save-controls\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"Submit\\\"]],null,null,null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"saved\\\"]],[[[1,\\\"      \\\"],[10,1],[14,0,\\\"saved\\\"],[12],[1,[28,[32,1],[\\\"saved\\\"],null]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[1,2]]]]]],[\\\"form\\\",\\\"data\\\",\\\"field\\\",\\\"field\\\",\\\"field\\\",\\\"field\\\",\\\"select\\\",\\\"sound\\\",\\\"field\\\",\\\"select\\\",\\\"option\\\",\\\"field\\\",\\\"select\\\",\\\"option\\\",\\\"field\\\",\\\"radioGroup\\\",\\\"option\\\",\\\"field\\\",\\\"emoji\\\",\\\"index\\\",\\\"field\\\",\\\"radioGroup\\\",\\\"option\\\"],[\\\"each\\\",\\\"-track-array\\\",\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/chat/discourse/templates/preferences/chat.js\",\n        \"scope\": () => [_form.default, _discourseI18n.i18n, _truthHelpers.eq, _emojiPicker.default, _helper.fn],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = Chat;\n});","define(\"discourse/plugins/chat/lib/discourse-markdown/chat-html-inline\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.setup = setup;\n  // inspired from https://github.com/markdown-it/markdown-it/blob/master/lib/rules_inline/html_inline.mjs\n  // note that allow lister will run on top of it, so if a tag is allowed here but not on\n  // the allow list, then it won't show up\n\n  const inline_names = [\"kbd\", \"mark\"];\n  const patterns = inline_names.join(\"|\");\n  const attr_name = \"[a-zA-Z_:][a-zA-Z0-9:._-]*\";\n  const unquoted = \"[^\\\"'=<>`\\\\x00-\\\\x20]+\";\n  const single_quoted = \"'[^']*'\";\n  const double_quoted = '\"[^\"]*\"';\n  const attr_value = \"(?:\" + unquoted + \"|\" + single_quoted + \"|\" + double_quoted + \")\";\n  const attribute = \"(?:\\\\s+\" + attr_name + \"(?:\\\\s*=\\\\s*\" + attr_value + \")?)\";\n  const open_tag = `<(${patterns})` + attribute + \"*\\\\s*\\\\/?>\";\n  const close_tag = `<\\\\/(${patterns})\\\\s*>`;\n  const comment = \"<!---?>|<!--(?:[^-]|-[^-]|--[^>])*-->\";\n  const processing = \"<[?][\\\\s\\\\S]*?[?]>\";\n  const declaration = \"<![A-Za-z][^>]*>\";\n  const cdata = \"<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\";\n  const HTML_TAG_RE = new RegExp(\"^(?:\" + open_tag + \"|\" + close_tag + \"|\" + comment + \"|\" + processing + \"|\" + declaration + \"|\" + cdata + \")\");\n  function isLinkOpen(str) {\n    return /^<a[>\\s]/i.test(str);\n  }\n  function isLinkClose(str) {\n    return /^<\\/a\\s*>/i.test(str);\n  }\n  function isLetter(ch) {\n    /*eslint no-bitwise:0*/\n    let lc = ch | 0x20; // to lower case\n    return lc >= 0x61 /* a */ && lc <= 0x7a /* z */;\n  }\n  function chatHtmlInlineRule(state, silent) {\n    let ch,\n      match,\n      max,\n      token,\n      pos = state.pos;\n    if (!state.md.options.html) {\n      return false;\n    }\n\n    // Check start\n    max = state.posMax;\n    if (state.src.charCodeAt(pos) !== 0x3c /* < */ || pos + 2 >= max) {\n      return false;\n    }\n\n    // Quick fail on second char\n    ch = state.src.charCodeAt(pos + 1);\n    if (ch !== 0x21 /* ! */ && ch !== 0x3f /* ? */ && ch !== 0x2f /* / */ && !isLetter(ch)) {\n      return false;\n    }\n    match = state.src.slice(pos).match(HTML_TAG_RE);\n    if (!match) {\n      return false;\n    }\n    if (!silent) {\n      token = state.push(\"html_inline\", \"\", 0);\n      token.content = match[0];\n      if (isLinkOpen(token.content)) {\n        state.linkLevel++;\n      }\n      if (isLinkClose(token.content)) {\n        state.linkLevel--;\n      }\n    }\n    state.pos += match[0].length;\n    return true;\n  }\n  function setup(helper) {\n    helper.registerPlugin(md => {\n      if (md.options.discourse.features[\"chat-html-inline\"]) {\n        md.inline.ruler.push(\"chat-html-inline\", chatHtmlInlineRule);\n      }\n    });\n  }\n});","define(\"discourse/plugins/chat/lib/discourse-markdown/chat-transcript\", [\"exports\", \"pretty-text/emoji\", \"discourse-i18n\"], function (_exports, _emoji, _discourseI18n) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.setup = setup;\n  // NOTE: When updating this file you also must consider the ProseMirror rich editor extension\n  // for chat transcripts, because it manually constructs the same HTML structure as this rule.\n\n  let customMarkdownCookFn;\n  const chatTranscriptRule = {\n    tag: \"chat\",\n    replace: function (state, tagInfo, content) {\n      // Shouldn't really happen but we don't want to break rendering if it does\n      if (!customMarkdownCookFn) {\n        return;\n      }\n      const options = state.md.options.discourse;\n      const [username, messageIdStart, messageTimeStart] = tagInfo.attrs.quote && tagInfo.attrs.quote.split(\";\") || [];\n\n      // NOTE: Reactions are only included when archiving a channel, not when quoting a message\n      const reactions = tagInfo.attrs.reactions;\n      const multiQuote = !!tagInfo.attrs.multiQuote;\n      const noLink = !!tagInfo.attrs.noLink;\n      const channelName = tagInfo.attrs.channel;\n      const channelId = tagInfo.attrs.channelId;\n      const threadId = tagInfo.attrs.threadId;\n      const threadTitle = tagInfo.attrs.threadTitle;\n      const channelLink = channelId ? options.getURL(`/chat/c/-/${channelId}`) : null;\n      if (!username || !messageIdStart || !messageTimeStart) {\n        return;\n      }\n      const isThread = threadId && content.includes(\"[chat\");\n      const wrapperDivToken = state.push(\"div_chat_transcript_wrap_open\", \"div\", 1);\n      let unescapedChannelName;\n      if (channelName) {\n        unescapedChannelName = (0, _emoji.performEmojiUnescape)(channelName, {\n          getURL: options.getURL,\n          emojiSet: options.emojiSet,\n          emojiCDNUrl: options.emojiCDNUrl,\n          enableEmojiShortcuts: options.enableEmojiShortcuts,\n          inlineEmoji: options.inlineEmoji,\n          lazy: true\n        });\n      }\n      if (channelName && multiQuote) {\n        const metaDivToken = state.push(\"div_chat_transcript_meta_open\", \"div\", 1);\n        metaDivToken.attrs = [[\"class\", \"chat-transcript-meta\"]];\n        const channelToken = state.push(\"html_inline\", \"\", 0);\n        channelToken.content = (0, _discourseI18n.i18n)(\"chat.quote.original_channel\", {\n          channel: unescapedChannelName,\n          channelLink\n        });\n        state.push(\"div_chat_transcript_meta_close\", \"div\", -1);\n      }\n      if (isThread) {\n        state.push(\"details_chat_transcript_wrap_open\", \"details\", 1);\n        state.push(\"summary_chat_transcript_open\", \"summary\", 1);\n        const threadToken = state.push(\"div_thread_open\", \"div\", 1);\n        threadToken.attrs = [[\"class\", \"chat-transcript-thread\"]];\n        const threadHeaderToken = state.push(\"div_thread_header_open\", \"div\", 1);\n        threadHeaderToken.attrs = [[\"class\", \"chat-transcript-thread-header\"]];\n        const threadSvgHeader = state.push(\"svg_thread_header_open\", \"svg\", 1);\n        threadSvgHeader.block = false;\n        threadSvgHeader.attrs = [[\"class\", \"fa d-icon d-icon-discourse-threads svg-icon svg-node\"]];\n        const threadUseSvg = state.push(\"use_svg_thread_open\", \"use\", 1);\n        threadUseSvg.block = false;\n        threadUseSvg.attrs = [[\"href\", \"#discourse-threads\"]];\n        state.push(\"use_svg_thread_close\", \"use\", -1);\n        state.push(\"svg_thread_header_close\", \"svg\", -1);\n        const threadTitleContainerToken = state.push(\"span_thread_title_open\", \"span\", 1);\n        threadTitleContainerToken.attrs = [[\"class\", \"chat-transcript-thread-header__title\"]];\n        const threadTitleToken = state.push(\"html_inline\", \"\", 0);\n        const unescapedThreadTitle = (0, _emoji.performEmojiUnescape)(threadTitle, {\n          getURL: options.getURL,\n          emojiSet: options.emojiSet,\n          emojiCDNUrl: options.emojiCDNUrl,\n          enableEmojiShortcuts: options.enableEmojiShortcuts,\n          inlineEmoji: options.inlineEmoji,\n          lazy: true\n        });\n        threadTitleToken.content = unescapedThreadTitle ? unescapedThreadTitle : (0, _discourseI18n.i18n)(\"chat.quote.default_thread_title\");\n        state.push(\"span_thread_title_close\", \"span\", -1);\n        state.push(\"div_thread_header_close\", \"div\", -1);\n      }\n      const wrapperClasses = [\"chat-transcript\"];\n      if (tagInfo.attrs.chained) {\n        wrapperClasses.push(\"chat-transcript-chained\");\n      }\n      wrapperDivToken.content = content;\n      wrapperDivToken.attrs = [[\"class\", wrapperClasses.join(\" \")]];\n      wrapperDivToken.attrs.push([\"data-message-id\", messageIdStart]);\n      wrapperDivToken.attrs.push([\"data-username\", username]);\n      wrapperDivToken.attrs.push([\"data-datetime\", messageTimeStart]);\n      if (tagInfo.attrs.chained) {\n        wrapperDivToken.attrs.push([\"data-chained\", \"true\"]);\n      }\n      if (reactions) {\n        wrapperDivToken.attrs.push([\"data-reactions\", reactions]);\n      }\n      if (channelName) {\n        wrapperDivToken.attrs.push([\"data-channel-name\", channelName]);\n      }\n      if (channelId) {\n        wrapperDivToken.attrs.push([\"data-channel-id\", channelId]);\n      }\n      if (multiQuote) {\n        wrapperDivToken.attrs.push([\"data-multiquote\", \"true\"]);\n      }\n      if (threadId) {\n        wrapperDivToken.attrs.push([\"data-thread-id\", threadId]);\n      }\n      if (threadTitle) {\n        wrapperDivToken.attrs.push([\"data-thread-title\", threadTitle]);\n      }\n      const userDivToken = state.push(\"div_chat_transcript_user_open\", \"div\", 1);\n      userDivToken.attrs = [[\"class\", \"chat-transcript-user\"]];\n\n      // start: user avatar\n      const avatarDivToken = state.push(\"div_chat_transcript_user_avatar_open\", \"div\", 1);\n      avatarDivToken.attrs = [[\"class\", \"chat-transcript-user-avatar\"]];\n\n      // server-side, we need to lookup the avatar from the username\n      let avatarImg;\n      if (options.lookupAvatar) {\n        avatarImg = options.lookupAvatar(username);\n      }\n      if (avatarImg) {\n        const avatarImgToken = state.push(\"html_inline\", \"\", 0);\n        avatarImgToken.content = avatarImg;\n      }\n      state.push(\"div_chat_transcript_user_avatar_close\", \"div\", -1);\n      // end: user avatar\n\n      // start: username\n      const usernameDivToken = state.push(\"div_chat_transcript_username_open\", \"div\", 1);\n      usernameDivToken.attrs = [[\"class\", \"chat-transcript-username\"]];\n      let displayName;\n      if (options.formatUsername) {\n        displayName = options.formatUsername(username);\n      } else {\n        displayName = username;\n      }\n      const usernameToken = state.push(\"html_inline\", \"\", 0);\n      usernameToken.content = displayName;\n      state.push(\"div_chat_transcript_username_close\", \"div\", -1);\n      // end: username\n\n      // start: time + link to message\n      const datetimeDivToken = state.push(\"div_chat_transcript_datetime_open\", \"div\", 1);\n      datetimeDivToken.attrs = [[\"class\", \"chat-transcript-datetime\"]];\n\n      // for some cases, like archiving, we don't want the link to the\n      // chat message because it will just result in a 404\n      // also handles the case where the quote doesn’t contain\n      // enough data to build a valid channel/message link\n      if (noLink || !channelLink) {\n        let spanToken = state.push(\"span_open\", \"span\", 1);\n        spanToken.attrs = [[\"title\", messageTimeStart]];\n        spanToken.block = false;\n        if (channelName && !multiQuote) {\n          let channelLinkToken = state.push(\"link_open\", \"a\", 1);\n          channelLinkToken.attrs = [[\"class\", \"chat-transcript-channel\"], [\"href\", channelLink]];\n          let inlineTextToken = state.push(\"html_inline\", \"\", 0);\n          inlineTextToken.content = `#${channelName}`;\n          channelLinkToken = state.push(\"link_close\", \"a\", -1);\n          channelLinkToken.block = false;\n        }\n        spanToken = state.push(\"span_close\", \"span\", -1);\n        spanToken.block = false;\n      } else {\n        let linkToken = state.push(\"link_open\", \"a\", 1);\n        linkToken.attrs = [[\"href\", `${channelLink}/${messageIdStart}`], [\"title\", messageTimeStart]];\n        linkToken.block = false;\n        linkToken = state.push(\"link_close\", \"a\", -1);\n        linkToken.block = false;\n      }\n      state.push(\"div_chat_transcript_datetime_close\", \"div\", -1);\n      // end: time + link to message\n\n      // start: channel link for !multiQuote\n      if (channelName && !multiQuote) {\n        let channelLinkToken = state.push(\"link_open\", \"a\", 1);\n        channelLinkToken.attrs = [[\"class\", \"chat-transcript-channel\"], [\"href\", channelLink]];\n        let inlineTextToken = state.push(\"html_inline\", \"\", 0);\n        inlineTextToken.content = `#${unescapedChannelName}`;\n        channelLinkToken = state.push(\"link_close\", \"a\", -1);\n        channelLinkToken.block = false;\n      }\n      // end: channel link for !multiQuote\n\n      state.push(\"div_chat_transcript_user_close\", \"div\", -1);\n      const messagesToken = state.push(\"div_chat_transcript_messages_open\", \"div\", 1);\n      messagesToken.attrs = [[\"class\", \"chat-transcript-messages\"]];\n      if (isThread) {\n        const regex = /\\[chat/i;\n        const match = regex.exec(content);\n        if (match) {\n          const threadToken = state.push(\"html_raw\", \"\", 1);\n          threadToken.content = customMarkdownCookFn(content.substring(0, match.index));\n          state.push(\"html_raw\", \"\", -1);\n          state.push(\"div_thread_close\", \"div\", -1);\n          state.push(\"summary_chat_transcript_close\", \"summary\", -1);\n          const token = state.push(\"html_raw\", \"\", 1);\n          token.content = customMarkdownCookFn(content.substring(match.index));\n          state.push(\"html_raw\", \"\", -1);\n          state.push(\"details_chat_transcript_wrap_close\", \"details\", -1);\n        }\n      } else {\n        // rendering chat message content with limited markdown rule subset\n        const token = state.push(\"html_raw\", \"\", 1);\n        token.content = customMarkdownCookFn(content);\n        state.push(\"html_raw\", \"\", -1);\n      }\n      if (reactions) {\n        const emojiHtmlCache = {};\n        const reactionsToken = state.push(\"div_chat_transcript_reactions\", \"div\", 1);\n        reactionsToken.attrs = [[\"class\", \"chat-transcript-reactions\"]];\n        reactions.split(\";\").forEach(reaction => {\n          const split = reaction.split(\":\");\n          const emoji = split[0];\n          const usernames = split[1].split(\",\");\n          const reactToken = state.push(\"div_chat_transcript_reaction\", \"div\", 1);\n          reactToken.attrs = [[\"class\", \"chat-transcript-reaction\"]];\n          const emojiToken = state.push(\"html_inline\", \"\", 0);\n          if (!emojiHtmlCache[emoji]) {\n            emojiHtmlCache[emoji] = (0, _emoji.performEmojiUnescape)(`:${emoji}:`, {\n              getURL: options.getURL,\n              emojiSet: options.emojiSet,\n              emojiCDNUrl: options.emojiCDNUrl,\n              enableEmojiShortcuts: options.enableEmojiShortcuts,\n              inlineEmoji: options.inlineEmoji,\n              lazy: true\n            });\n          }\n          emojiToken.content = `${emojiHtmlCache[emoji]} ${usernames.length.toString()}`;\n          state.push(\"div_chat_transcript_reaction\", \"div\", -1);\n        });\n        state.push(\"div_chat_transcript_reactions\", \"div\", -1);\n      }\n      state.push(\"div_chat_transcript_messages_close\", \"div\", -1);\n      state.push(\"div_chat_transcript_wrap_close\", \"div\", -1);\n      return true;\n    }\n  };\n  function setup(helper) {\n    helper.allowList([\"svg[class=fa d-icon d-icon-discourse-threads svg-icon svg-node]\", \"use[href=#discourse-threads]\", \"div[class=chat-transcript]\", \"details[class=chat-transcript]\", \"div[class=chat-transcript chat-transcript-chained]\", \"details[class=chat-transcript chat-transcript-chained]\", \"div.chat-transcript-meta\", \"div.chat-transcript-user\", \"div.chat-transcript-username\", \"div.chat-transcript-user-avatar\", \"div.chat-transcript-messages\", \"div.chat-transcript-datetime\", \"div.chat-transcript-reactions\", \"div.chat-transcript-reaction\", \"span[title]\", \"div[data-message-id]\", \"div[data-channel-name]\", \"div[data-channel-id]\", \"div[data-username]\", \"div[data-datetime]\", \"a.chat-transcript-channel\", \"div.chat-transcript-thread\", \"div.chat-transcript-thread-header\", \"span.chat-transcript-thread-header__title\"]);\n    helper.registerOptions((opts, siteSettings) => {\n      opts.features[\"chat-transcript\"] = !!siteSettings.chat_enabled;\n    });\n    helper.registerPlugin(md => {\n      if (md.options.discourse.features[\"chat-transcript\"]) {\n        md.block.bbcode.ruler.push(\"chat-transcript\", chatTranscriptRule);\n      }\n    });\n    helper.buildCookFunction((opts, generateCookFunction) => {\n      if (!opts.discourse.additionalOptions?.chat) {\n        return;\n      }\n      const chatAdditionalOpts = opts.discourse.additionalOptions.chat;\n\n      // We need to be able to quote images from chat, but the image rule is usually\n      // banned for chat messages\n      const markdownItRules = chatAdditionalOpts.limited_pretty_text_markdown_rules.concat(\"image\");\n      generateCookFunction({\n        featuresOverride: chatAdditionalOpts.limited_pretty_text_features,\n        markdownItRules,\n        hashtagLookup: opts.discourse.hashtagLookup,\n        hashtagTypesInPriorityOrder: chatAdditionalOpts.hashtag_configurations[\"chat-composer\"],\n        hashtagIcons: opts.discourse.hashtagIcons\n      }, customCookFn => {\n        customMarkdownCookFn = customCookFn;\n      });\n    });\n  }\n});","define(\"discourse/plugins/chat/lib/rich-editor-extension\", [\"exports\", \"discourse/helpers/replace-emoji\", \"discourse/lib/get-url\", \"discourse-i18n\"], function (_exports, _replaceEmoji, _getUrl, _discourseI18n) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /** @type {RichEditorExtension} */\n  const extension = {\n    nodeSpec: {\n      chat: {\n        attrs: {\n          messageId: {},\n          username: {},\n          datetime: {},\n          channel: {},\n          channelId: {},\n          html: {},\n          rawContent: {},\n          multiQuote: {},\n          chained: {},\n          threadId: {\n            default: null\n          },\n          threadTitle: {\n            default: null\n          },\n          threadHtml: {\n            default: null\n          }\n        },\n        group: \"block\",\n        isolating: true,\n        selectable: true,\n        parseDOM: [{\n          tag: \"div.chat-transcript\"\n        }],\n        toDOM(node) {\n          // NOTE: This HTML representation of the node in a lot of ways is duplicated from\n          // the chat transcript markdown-it rule, this is unavoidable unless we completely\n          // decouple the token generation from the HTML generation, which is a lot of work,\n          // so this is acceptable for now.\n\n          const wrapperElement = document.createElement(\"div\");\n          wrapperElement.classList.add(\"chat-transcript\");\n          if (node.attrs.chained) {\n            wrapperElement.classList.add(\"chat-transcript-chained\");\n          }\n          let metaElement;\n          let channelLinkElement;\n          if (node.attrs.channel) {\n            if (node.attrs.multiQuote) {\n              metaElement = document.createElement(\"div\");\n              metaElement.classList.add(\"chat-transcript-meta\");\n              const channelLink = node.attrs.channelId ? (0, _getUrl.default)(`/chat/c/-/${node.attrs.channelId}`) : null;\n              metaElement.innerHTML = (0, _discourseI18n.i18n)(\"chat.quote.original_channel\", {\n                channel: (0, _replaceEmoji.default)(node.attrs.channel),\n                channelLink\n              });\n            } else {\n              channelLinkElement = document.createElement(\"a\");\n              channelLinkElement.classList.add(\"chat-transcript-channel\");\n              channelLinkElement.href = (0, _getUrl.default)(`/chat/c/-/${node.attrs.channelId}`);\n              channelLinkElement.innerHTML = `#${(0, _replaceEmoji.default)(node.attrs.channel)}`;\n            }\n          }\n          const userElement = document.createElement(\"div\");\n          userElement.classList.add(\"chat-transcript-user\");\n\n          // TODO (martin) Need to use current user's timezone here when we have\n          // that available.\n          const formattedDateTime = moment(node.attrs.datetime).format((0, _discourseI18n.i18n)(\"dates.long_no_year\"));\n          userElement.innerHTML = `\n          <span class=\"chat-transcript-username\">${node.attrs.username}</span>\n          <span class=\"chat-transcript-datetime\">${formattedDateTime}</span>\n        `;\n          const messagesElement = document.createElement(\"div\");\n          messagesElement.classList.add(\"chat-transcript-messages\");\n          messagesElement.innerHTML = node.attrs.html;\n          if (metaElement) {\n            wrapperElement.appendChild(metaElement);\n          }\n          if (node.attrs.threadId) {\n            const threadDetailsElement = document.createElement(\"details\");\n            const threadSummaryElement = document.createElement(\"summary\");\n            const threadElement = document.createElement(\"div\");\n            threadElement.classList.add(\"chat-transcript-thread\");\n            const threadHeaderElement = document.createElement(\"div\");\n            threadHeaderElement.classList.add(\"chat-transcript-thread-header\");\n            threadHeaderElement.innerHTML = `\n          <svg class=\"fa d-icon d-icon-discourse-threads svg-icon svg-node\">\n            <use href=\"#discourse-threads\"></use>\n          </svg>`;\n            const threadTitleElement = document.createElement(\"span\");\n            threadTitleElement.classList.add(\"chat-transcript-thread-header__title\");\n            threadTitleElement.innerHTML = node.attrs.threadTitle ? (0, _replaceEmoji.default)(node.attrs.threadTitle) : (0, _discourseI18n.i18n)(\"chat.quote.default_thread_title\");\n            threadHeaderElement.appendChild(threadTitleElement);\n            threadElement.appendChild(threadHeaderElement);\n            threadElement.appendChild(userElement);\n            if (channelLinkElement) {\n              userElement.appendChild(channelLinkElement);\n            }\n            threadElement.appendChild(messagesElement);\n            threadSummaryElement.appendChild(threadElement);\n            threadDetailsElement.appendChild(threadSummaryElement);\n            if (node.attrs.threadHtml) {\n              threadDetailsElement.innerHTML += node.attrs.threadHtml;\n            }\n            wrapperElement.appendChild(threadDetailsElement);\n          } else {\n            wrapperElement.appendChild(userElement);\n            if (channelLinkElement) {\n              userElement.appendChild(channelLinkElement);\n            }\n            wrapperElement.appendChild(messagesElement);\n          }\n          return wrapperElement;\n        }\n      }\n    },\n    serializeNode({\n      utils: {\n        buildBBCodeAttrs\n      }\n    }) {\n      return {\n        chat(state, node) {\n          let bbCodeAttrs = `quote=\"${node.attrs.username};${node.attrs.messageId};${node.attrs.datetime}\"`;\n          bbCodeAttrs += \" \" + buildBBCodeAttrs(node.attrs, {\n            skipAttrs: [\"username\", \"messageId\", \"datetime\", \"rawContent\", \"html\", \"threadHtml\"]\n          });\n          state.write(`[chat ${bbCodeAttrs}]\\n`);\n          state.write(node.attrs.rawContent);\n          state.write(\"\\n[/chat]\\n\");\n        }\n      };\n    },\n    parse: {\n      div_chat_transcript_wrap_open(state, token, tokens, i) {\n        // The slice here makes sure we get the html_raw content\n        // only for the current [chat] bbcode block based on the\n        // token index.\n        const nextHtmlRaw = tokens.slice(i).find(t => t.type === \"html_raw\" && t.nesting === 1);\n        const messagesHtml = nextHtmlRaw?.content;\n        let threadHtmlRaw;\n        if (token.attrGet(\"data-thread-id\")) {\n          threadHtmlRaw = tokens.slice(tokens.indexOf(nextHtmlRaw) + 1).find(t => t.type === \"html_raw\" && t.nesting === 1);\n        }\n\n        // So this content and the whole wrap_open happens for every single instance of\n        // the `[chat]` bbcode, including nested which is the case for threads.\n        //\n        // Only the first one will have multiQuote and chained\n        //\n        // Multiquote is > 1 message\n        // Chained is > 1 message by different users\n        state.openNode(state.schema.nodes.chat, {\n          messageId: token.attrGet(\"data-message-id\"),\n          username: token.attrGet(\"data-username\"),\n          datetime: token.attrGet(\"data-datetime\"),\n          channel: token.attrGet(\"data-channel-name\"),\n          channelId: token.attrGet(\"data-channel-id\"),\n          chained: token.attrGet(\"data-chained\"),\n          multiQuote: token.attrGet(\"data-multiquote\"),\n          threadId: token.attrGet(\"data-thread-id\"),\n          threadTitle: token.attrGet(\"data-thread-title\"),\n          threadHtml: threadHtmlRaw ? threadHtmlRaw.content : null,\n          html: messagesHtml,\n          rawContent: token.content\n        });\n        return true;\n      },\n      div_chat_transcript_wrap_close(state) {\n        state.closeNode();\n        return true;\n      },\n      div_chat_transcript_user: {\n        ignore: true\n      },\n      div_chat_transcript_user_avatar: {\n        ignore: true\n      },\n      div_chat_transcript_username: {\n        ignore: true\n      },\n      div_chat_transcript_datetime: {\n        ignore: true\n      },\n      div_chat_transcript_messages: {\n        ignore: true\n      },\n      div_chat_transcript_reaction: {\n        ignore: true\n      },\n      // Reaction-related tokens are not used in the live preview,\n      // they are only used when archiving a channel, not needed here.\n      div_chat_transcript_reactions: {\n        ignore: true\n      },\n      div_chat_transcript_meta: {\n        ignore: true\n      },\n      // Thread-related tokens\n      details_chat_transcript_wrap: {\n        ignore: true\n      },\n      summary_chat_transcript: {\n        ignore: true\n      },\n      div_thread: {\n        ignore: true\n      },\n      div_thread_header: {\n        ignore: true\n      },\n      svg_thread_header: {\n        ignore: true\n      },\n      use_svg_thread: {\n        ignore: true\n      },\n      span_thread_title: {\n        ignore: true\n      },\n      html_raw: {\n        ignore: true,\n        noCloseToken: true\n      },\n      span_open(state) {\n        if (state.top().type.name === \"chat\") {\n          return true;\n        }\n      },\n      span_close(state) {\n        if (state.top().type.name === \"chat\") {\n          return true;\n        }\n      }\n    }\n  };\n  var _default = _exports.default = extension;\n});"],"mappings":"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","ignoreList":[]}