{"version":3,"file":"static/chunks/554-e5bc19c7a5ed8eb8.js","mappings":"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W,KAAKqX,KAAK,CAACjB,EAAKkB,EAAE,CAAC,SAChC,MAAO,GAAcV,MAAAA,CAAXA,EAAK,QAA0BlP,MAAA,CAApBkP,EAAO,EAAI,IAAM,GAAG,OAC3C,CAAO,GAAIR,EAAAA,EAAKkB,EAAE,CAAC,SAAc,CAC/B,IAAMT,EAAQ7W,KAAKqX,KAAK,CAACjB,EAAKkB,EAAE,CAAC,UACjC,MAAO,GAAgBT,MAAAA,CAAbA,EAAM,SAA4BnP,MAAA,CAArBmP,EAAQ,EAAI,IAAM,GAAG,OAC9C,CAAO,CACL,IAAMC,EAAS9W,KAAKqX,KAAK,CAACjB,EAAKkB,EAAE,CAAC,WAClC,MAAO,GAAkBR,MAAAA,CAAfA,EAAO,UAA8BpP,MAAA,CAAtBoP,EAAS,EAAI,IAAM,GAAG,OACjD,CACF,CAEO,IAAMc,EAAY,CACvB,iBACA,eACA,qBACA,iBACA,gBACA,gBACA,gBACA,gBACA,gBACA,kBACA,qBACA,mBACA,eACA,oBACA,eACA,iBACA,eACA,uBACA,kBACA,gBACA,kBACA,kBACA,kBACA,gBACA,sBACA,cACA,iBACA,kBACA,gBACA,kBACA,eACA,oBACA,cACA,gBACA,oBACA,gBACA,gBACA,gBACA,gBACA,iBACA,mBACA,kBACA,iBACA,kBACA,gBACA,oBACA,qBACA,oBACA,kBACA,iBACA,eACA,kBACA,eACA,oBACA,mBACA,kBACA,oBACA,6BACA,iCACA,0BACA,6BACA,6BACA,4BACA,4BACA,gBACA,mBACA,gBACA,yBACA,mBACA,gBACA,iBACA,uBACA,oBACA,iBACA,gBACA,uBACA,wBACA,uBACA,iBACA,kBACA,oBACA,kBACA,iBACA,kBACA,oBACA,wBACA,wBACA,kBACA,qBACA,kBACA,iBACA,kBACA,uBACA,iBACA,uBACA,iBACA,kBACA,mBACA,mBACA,mBACA,sBACA,sBACA,oBACA,oBACA,kBACA,oBACA,qBACA,kBACA,qBACA,oBACA,oBACA,iBACA,kBACA,iBACA,qBACA,uBACA,0BACA,6BACA,4BACA,wBACA,4BACA,0BACA,uBACA,iBACA,kBACA,kBACA,gBACA,iBACA,8BACA,qBACA,iBACA,eACA,sBACA,qBACA,wBACA,iBACA,kBACA,iBACA,kBACA,qBACA,oBACA,mBACA,kBACA,oBACA,iBACA,qBACA,sBACA,mBACA,kBACA,oBACA,qBACA,qBACA,iBACA,mBACA,kBACA,eACA,kBACA,8BACA,8BACA,iCACA,kBACA,iBACA,sBACA,qBACA,kBACA,yBACA,wBACA,sBACA,sBACA,uBACA,sBACA,uBACA,iBACA,iBACA,mBACA,qBACA,uBACA,mBACA,mBACA,wBACA,oBACA,uBACA,gBACA,wBACA,mBACA,mBACA,mBACA,oBACA,qBACA,wBACA,sBACA,gBACA,sBACA,kBACA,kBACA,kBACA,oBACA,qBACA,mBACA,kBACA,sBACA,mBACA,mBACA,4BACA,uBACA,oBACA,qBACA,oBACA,qBACA,mBACA,mBACA,oBACA,sBACA,YACA,cACA,aACA,cACA,aACA,cACA,gBACA,cACA,eACA,eACA,YACA,eACA,eACA,cACA,eACA,cACA,aACA,kBACA,eACA,gBACA,aACA,YACA,aACA,gBACA,iBACA,YACA,cACA,iBACA,YACA,eACA,eACA,gBACA,iBACA,aACA,iBACA,eACA,gBACA,gBACA,eACA,mBACA,oBACA,eACA,cACA,aACA,eACA,gBACA,cACA,cACA,eACA,oBACA,mBACA,YACA,YACA,kBACA,iBACA,iBACA,aACA,gBACA,iBACA,eACA,cACA,cACA,gBACA,iBACA,aACA,gBACA,iBACA,qBACA,cACA,gBACA,eACA,cACA,eACA,aACA,aACA,mBACA,cACA,gBACA,iBACA,mBACA,eACA,qBACA,eACA,kBACA,mBACA,kBACA,sBACA,kBACA,mBACA,qBACA,yBACA,qBACA,mBACA,qBACA,qBACA,wBACA,mBACA,mBACA,kBACA,mBACA,qBACA,sBACA,sBACA,kBACA,mBACA,mBACA,iBACA,mBACA,gBACA,kBACA,gBACA,oBACA,kBACA,mBACA,kBACA,kBACA,kBACA,oBACA,gBACA,mBACA,kBACA,kBACA,qBACA,kBACA,gBACA,qBACA,cACA,eACA,gBACA,mBACA,gBACA,oBACA,gBACA,eACA,mBACA,eACA,gBACA,gBACA,cACA,eACA,mBACA,gBACA,cACA,cACA,gBACA,oBACA,kBACA,iBACA,oBACA,gBACA,eACA,mBACA,iBACA,gBACA,mBACA,kBACA,eACA,iBACA,gBACA,iBACA,mBACA,gBACA,gBACA,oBACA,gBACA,sBACA,gBACA,mBACA,eACA,gBACA,mBACA,cACA,kBACA,mBACA,iBACA,iBACA,eACA,mBACA,uBACA,kBACA,iBACA,gBACA,oBACA,kBACA,eACA,mBACA,oBACA,kBACA,sBACA,eACA,mBACA,mBACA,qBACA,iBACA,oBACA,iBACA,oBACA,iBACA,gBACA,eACA,kBACA,iBACA,oBACA,gBACA,mBACA,iBACA,uBACA,oBACA,iBACA,iBACA,iBACA,oBACA,eACA,eACA,iBACD,CAEY7S,sBAAwB,IAEnC,IAAMmR,EAAM,IAAI2B,KAIVC,EAAa5B,EAAI6B,cAAc,CAAC,QAAS,CAC7CC,KAAM,UACNC,OAAQ,UACRzT,SAAU0T,CACZ,GAEA,OAAOJ,CACT,+IC/hBO,IAAMK,iBAAmB,GAEd,EAChB3Z,GAAI,OACJ4Z,IAAK,OACL1Z,aAAc,YACdsD,UAAW,YACXqW,SAAU,WACVvI,UAAW,OACXwI,KAAM,YACNC,WAAY,EACZC,WAAY,EACZC,OAAQC,EAAeA,EAAala,EAAE,CAAG,OACzCma,YAAa,EAAE,CACfC,KAAM,CACJC,WAAY,GACZC,WAAY,EACd,CACF,GAEMC,EAAc,CAClBC,KAAM,CAAC,YAAa,eAAe,CACnCC,eAAgB,GAChBC,UAAW,EACb,EAEaC,qBAAuB,IAClC,IAAMC,EAAoB,IAAIC,EAAAA,CAAIA,CAAC1Y,EAAOoY,GAC1C,OAAOK,CACT,qBChCAE,EAAAC,OAAA,EAAkB,iECAlBD,EAAAC,OAAA,EAAkB,iECAlBD,EAAAC,OAAA,EAAkB,sHCAlBD,EAAAC,OAAA,EAAkB,qJCAlBD,EAAAC,OAAA,EAAkB","sources":["webpack://_N_E/./src/app/components/ChatComponents/FeedChatPill.tsx","webpack://_N_E/./src/app/components/MentionItem.tsx","webpack://_N_E/./src/app/components/MentionList.tsx","webpack://_N_E/./src/app/components/icons/PeopleIcon.tsx","webpack://_N_E/./src/app/components/Thread/ChatElements/ChannelHoverCard.tsx","webpack://_N_E/./src/app/components/Thread/ChatElements/MentionBadge.tsx","webpack://_N_E/./src/app/components/Thread/ChatElements/TagHoverCard.tsx","webpack://_N_E/./src/app/components/Thread/ChatElements/UserHoverCard.tsx","webpack://_N_E/./src/app/components/icons/ChannelGroupPeopleIcon.tsx","webpack://_N_E/./src/app/components/icons/FeedPreviewSearchIcon.tsx","webpack://_N_E/./src/app/components/icons/HashtagIcon.tsx","webpack://_N_E/./src/app/eventConstants.ts","webpack://_N_E/./src/app/modules/slack-message-parser/combinator.ts","webpack://_N_E/./src/app/modules/slack-message-parser/types.ts","webpack://_N_E/./src/app/modules/slack-message-parser/parser.ts","webpack://_N_E/./src/app/modules/slack-message-parser/mod.ts","webpack://_N_E/./src/app/components/Thread/ChatElements/CodeBlock.tsx","webpack://_N_E/./src/app/components/Thread/ChatElements/OrderedList.tsx","webpack://_N_E/./src/app/components/Thread/ChatElements/BulletList.tsx","webpack://_N_E/./src/app/utils/slackTreeConverters/utils.ts","webpack://_N_E/./src/app/utils/slackTreeConverters/getComponentsFromChatBlocks.tsx","webpack://_N_E/./src/app/utils/slackTreeConverters/getEditorStateFromSlackParser.ts","webpack://_N_E/./src/app/utils/slackTreeConverters/getCompactComponentsFromChatBlocks.tsx","webpack://_N_E/./src/app/hooks/useParser.ts","webpack://_N_E/./src/app/hooks/useShallowNavigation.ts","webpack://_N_E/./src/app/services/mentions.ts","webpack://_N_E/./src/app/types/Block.type.ts","webpack://_N_E/./src/app/utils/stringUtils.ts","webpack://_N_E/./src/app/utils/timeUtils.ts","webpack://_N_E/./src/app/utils/users.ts","webpack://_N_E/./src/app/components/MentionItem.module.scss","webpack://_N_E/./src/app/components/MentionList.module.scss","webpack://_N_E/./src/app/components/Thread/ChatElements/BulletList.module.scss","webpack://_N_E/./src/app/components/Thread/ChatElements/CodeBlock.module.scss","webpack://_N_E/./src/app/components/Thread/ChatElements/OrderedList.module.scss","webpack://_N_E/./src/app/utils/slackTreeConverters/ComponentsContainer.module.scss","webpack://_N_E/"],"sourcesContent":["import { CodeIcon, FileIcon, Link2Icon } from \"@radix-ui/react-icons\";\nimport { Flex, Text } from \"@radix-ui/themes\";\n\ninterface FeedChatPillProps {\n variant: \"link\" | \"code\" | \"quote\" | \"attachment\";\n text?: string;\n}\n\nconst variantMap = {\n link: {\n icon: Link2Icon,\n text: \"Link\",\n },\n code: {\n icon: CodeIcon,\n text: \"Code snippet\",\n },\n quote: {\n icon: null,\n text: \"Quote\",\n },\n attachment: {\n icon: FileIcon,\n text: \"Attachment\",\n },\n};\n\nconst FeedChatPill = ({ variant, text }: FeedChatPillProps) => {\n const Icon = variantMap[variant].icon;\n\n return (\n \n {Icon && (\n \n )}\n {Boolean(text) ? text : variantMap[variant].text}\n \n );\n};\n\nexport default FeedChatPill;\n","import React, { useEffect, useRef } from \"react\";\nimport styles from \"./MentionItem.module.scss\";\nimport { Text, Flex, Badge, Separator } from \"@radix-ui/themes\";\nimport { PersonIcon } from \"@radix-ui/react-icons\";\nimport ChannelGroupPeopleIcon from \"@/app/components/icons/ChannelGroupPeopleIcon\";\nimport HashtagIcon from \"@/app/components/icons/HashtagIcon\";\nimport FeedPreviewSearchIcon from \"./icons/FeedPreviewSearchIcon\";\n\ninterface MentionItemProps extends React.ComponentPropsWithoutRef<\"div\"> {\n isActive: boolean;\n onMouseEnter: React.MouseEventHandler;\n onClick: React.MouseEventHandler;\n type: \"user\" | \"channel\" | \"tag\" | \"thread\";\n count?: number | undefined;\n title: string;\n subTitle?: string;\n showCount?: boolean;\n}\n\nconst typeIconMap = {\n user: PersonIcon,\n channel: ChannelGroupPeopleIcon,\n tag: HashtagIcon,\n thread: FeedPreviewSearchIcon,\n};\n\nconst getFormattedCount = (count: number) => (count > 9999 ? \"+9999\" : count);\n\nexport const MentionItem = ({\n isActive,\n style,\n title,\n subTitle,\n type,\n count,\n onClick,\n onMouseEnter,\n showCount = true,\n}: MentionItemProps) => {\n const ref = useRef(null);\n\n useEffect(() => {\n if (isActive) {\n ref.current?.scrollIntoView({ block: \"nearest\" });\n }\n }, [isActive]);\n\n const Icon = typeIconMap[type];\n\n return (\n \n \n \n \n \n \n {title}\n \n {subTitle && (\n <>\n \n \n {subTitle}\n \n \n )}\n \n \n {showCount && (\n \n {getFormattedCount(count || 0)}\n \n )}\n \n \n );\n};\n","import { SuggestionKeyDownProps, SuggestionProps } from \"@tiptap/suggestion\";\nimport {\n forwardRef,\n useImperativeHandle,\n useState,\n useMemo,\n useEffect,\n useRef,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { usePopper } from \"react-popper\";\nimport { MentionItem } from \"./MentionItem\";\nimport styles from \"./MentionList.module.scss\";\nimport { Flex, Separator, Text, Theme } from \"@radix-ui/themes\";\nimport { VirtualElement } from \"@popperjs/core\";\nimport { StructUser } from \"@/app/types/Thread.type\";\nimport { StructChannel } from \"@/app/types/Channel.type\";\nimport { StructTag } from \"@/app/types/Tag.type\";\nimport { useAppStore } from \"../store\";\nimport events from \"../utils/events\";\nimport { EMBED_THREAD_FROM_CMDK } from \"../eventConstants\";\n\ninterface MentionListProps extends SuggestionProps {\n type: \"mention\" | \"tag\" | \"thread\";\n canCreateTags?: boolean;\n showSearch?: boolean;\n isChatBoxEditor?: boolean;\n}\n\ninterface MentionListActions {\n onKeyDown: (props: SuggestionKeyDownProps) => void;\n}\n\nexport const MentionList = forwardRef(\n (\n {\n clientRect,\n command,\n items,\n query,\n type,\n canCreateTags = true,\n showSearch = false,\n editor,\n range,\n isChatBoxEditor = true,\n },\n ref,\n ) => {\n const searchThreadIndex = items.length;\n const isCommandMenuVisible = useAppStore(\n (state) => state.isCommandMenuVisible,\n );\n\n const setIsCommandMenuVisible = useAppStore(\n (state) => state.setIsCommandMenuVisible,\n );\n\n const rangeRef = useRef(range);\n\n const referenceEl = useMemo(() => {\n if (!clientRect) return null;\n return {\n getBoundingClientRect: () => {\n const rect = clientRect();\n return rect\n ? rect\n : ({\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0,\n } as DOMRect);\n },\n } as VirtualElement;\n }, [clientRect]);\n\n const handleCommand = (index: number) => {\n const selectedItem = items[index];\n if (!selectedItem) return;\n\n if (type === \"tag\") {\n command({\n id: selectedItem.tag,\n label: selectedItem.tag,\n type: selectedItem.type,\n });\n return;\n }\n command({\n id: selectedItem.id,\n label: selectedItem.display_name ?? selectedItem.name,\n type: selectedItem.type,\n });\n };\n\n const handleCreateTagCommand = () => {\n command({\n id: query,\n label: query,\n type: \"tag\",\n });\n };\n\n const handleEmbedThread = ({\n id,\n label,\n }: {\n id: string;\n label: string;\n }) => {\n editor.commands.deleteRange(rangeRef.current);\n editor.commands.focus();\n command({\n id,\n label,\n type: \"thread\",\n });\n };\n\n useEffect(() => {\n events.on(EMBED_THREAD_FROM_CMDK, handleEmbedThread);\n return () => {\n events.off(EMBED_THREAD_FROM_CMDK, handleEmbedThread);\n };\n }, []);\n\n const [hoverIndex, setHoverIndex] = useState(0);\n\n useImperativeHandle(ref, () => ({\n onKeyDown: ({ event, view }) => {\n const { key } = event;\n if ([\"ArrowUp\", \"ArrowDown\", \"Enter\", \"Tab\"].includes(key)) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (key === \"ArrowUp\") {\n setHoverIndex((prev) => Math.max(prev - 1, 0));\n return true;\n }\n\n if (key === \"ArrowDown\") {\n setHoverIndex((prev) =>\n Math.min(prev + 1, showSearch ? items.length : items.length - 1),\n );\n return true;\n }\n\n if (key === \"Enter\" && hoverIndex === searchThreadIndex && showSearch) {\n // setShowSearchPanel(true);\n setIsCommandMenuVisible(true, true);\n rangeRef.current = range;\n return true;\n }\n\n if (key === \"Tab\") {\n handleCommand(hoverIndex);\n return true;\n }\n\n if (key !== \"Enter\") {\n return false;\n }\n\n if (type === \"tag\" && tags.length === 0) {\n handleCreateTagCommand();\n return true;\n }\n\n handleCommand(hoverIndex);\n return true;\n },\n }));\n\n const [el, setEl] = useState(null);\n const { styles: popperStyles, attributes } = usePopper(referenceEl, el, {\n placement: \"top-start\",\n });\n\n const users: StructUser[] = items.filter((item) => item.type === \"user\");\n const channels: StructChannel[] = items.filter(\n (item) => item.type === \"channel\",\n );\n const tags: StructTag[] = items.filter((item) => item.type === \"tag\");\n\n const calcIndex = (isChannel: boolean, index: number) =>\n isChannel ? index : channels.length + index;\n\n if (query === \"\" && items.length === 0) {\n return null;\n }\n\n return createPortal(\n \n \n \n {tags.map((tag, index) => (\n setHoverIndex(calcIndex(true, index))}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n event.nativeEvent.stopImmediatePropagation();\n handleCommand(calcIndex(true, index));\n }}\n type=\"tag\"\n title={tag.tag}\n count={tag.count}\n />\n ))}\n {channels.map((channel, index) => (\n setHoverIndex(calcIndex(true, index))}\n onClick={() => {\n handleCommand(calcIndex(true, index));\n }}\n type=\"channel\"\n count={channel.num_threads}\n title={channel.name}\n />\n ))}\n {channels.length > 0 && users.length > 0 && (\n \n )}\n {users.map((user, index) => (\n setHoverIndex(calcIndex(false, index))}\n onClick={() => handleCommand(calcIndex(false, index))}\n type=\"user\"\n count={user.num_threads}\n title={user.display_name}\n subTitle={user.real_name}\n />\n ))}\n {type === \"mention\" &&\n channels.length === 0 &&\n users.length === 0 && (\n \n No channel or member results\n \n )}\n\n {type === \"tag\" &&\n tags.length === 0 &&\n query !== \"\" &&\n canCreateTags && (\n setHoverIndex(calcIndex(true, 0))}\n onClick={() => {\n handleCreateTagCommand();\n }}\n type=\"tag\"\n title=\"Create a new tag\"\n showCount={false}\n />\n )}\n {showSearch && type === \"mention\" && (\n setHoverIndex(searchThreadIndex)}\n onClick={(event) => {\n // setShowSearchPanel(true);\n\n setIsCommandMenuVisible(true, true);\n rangeRef.current = range;\n event.preventDefault();\n event.stopPropagation();\n }}\n type=\"thread\"\n title=\"Search for threads...\"\n showCount={false}\n />\n )}\n \n \n ,\n document.body,\n );\n },\n);\n\nMentionList.displayName = \"MentionList\";\n","import { IconType } from \"@/app/components/icons/icon.type\";\n\nconst PeopleIcon = ({ style, className }: IconType) => (\n \n \n \n \n \n \n \n \n \n);\n\nexport default PeopleIcon;\n","import React, { ReactNode } from \"react\";\nimport * as HoverCard from \"@radix-ui/react-hover-card\";\nimport MentionBadge from \"@/app/components/Thread/ChatElements/MentionBadge\";\nimport { Button, Flex, Text, Theme } from \"@radix-ui/themes\";\nimport ChannelGroupPeopleIcon from \"@/app/components/icons/ChannelGroupPeopleIcon\";\nimport PeopleIcon from \"@/app/components/icons/PeopleIcon\";\nimport { ChatBubbleIcon } from \"@radix-ui/react-icons\";\nimport { StructChannel } from \"@/app/types/Channel.type\";\n\ninterface ChannelHoverCardProps {\n name: StructChannel[\"name\"];\n onViewChannel: () => void;\n memberCount: number | undefined;\n threadCount: number;\n child?: ReactNode;\n}\n\nconst ChannelHoverCard = ({\n name,\n onViewChannel,\n memberCount,\n threadCount,\n child,\n}: ChannelHoverCardProps) => {\n return (\n \n \n {child ? child : }\n \n \n \n \n \n \n @{name}\n \n \n \n \n\n \n \n \n {memberCount ? memberCount : 0}\n \n\n \n \n {threadCount} threads\n \n \n\n \n \n \n \n \n\n \n \n \n \n );\n};\n\nexport default ChannelHoverCard;\n","import React, { forwardRef, Ref } from \"react\";\nimport { Flex, Text } from \"@radix-ui/themes\";\n\n// TODO: consider using this in the whole app\n\ninterface MentionBadgeProps {\n name: string;\n variant: \"channel\" | \"user\" | \"thread\" | \"hashtag\" | \"self\";\n isHoverable?: boolean;\n}\n\nconst backgroundColorMap = {\n channel: \"var(--blue-a3)\",\n user: \"var(--indigo-a3)\",\n self: \"var(--yellow-a3)\",\n thread: \"var(--purple-a3)\",\n hashtag: \"var(--cyan-a3)\",\n};\n\nconst textColorMap = {\n channel: \"var(--blue-a11)\",\n user: \"var(--indigo-a11)\",\n self: \"var(--indigo-a11)\",\n thread: \"var(--purple-a11)\",\n hashtag: \"var(--cyan-a11)\",\n};\n\nconst prefixMap = {\n channel: \"@\",\n user: \"@\",\n self: \"@\",\n thread: \"@thread \", //TODO: style this nicely\n hashtag: \"#\",\n};\n\nconst MentionBadge = forwardRef(\n (\n { name, variant, isHoverable = true, ...other }: MentionBadgeProps,\n ref: Ref,\n ) => (\n \n \n {prefixMap[variant]}\n {name}\n \n \n ),\n);\n\nMentionBadge.displayName = \"MentionBadge\";\n\nexport default MentionBadge;\n","import { Button, Flex, Text, Theme } from \"@radix-ui/themes\";\nimport * as HoverCard from \"@radix-ui/react-hover-card\";\nimport React from \"react\";\nimport MentionBadge from \"./MentionBadge\";\nimport HashtagIcon from \"../../icons/HashtagIcon\";\n\ninterface TagHoverCardProps {\n id: string;\n name: string;\n onViewTag: (name: string) => void;\n children?: React.ReactNode;\n}\n\nconst TagHoverCard = ({ id, name, onViewTag, children }: TagHoverCardProps) => {\n return (\n \n \n {children ? (\n children\n ) : (\n \n )}\n \n \n \n \n \n \n #{name}\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n );\n};\n\nexport default TagHoverCard;\n","import React from \"react\";\nimport * as HoverCard from \"@radix-ui/react-hover-card\";\nimport { Avatar, Button, Flex, Text, Theme } from \"@radix-ui/themes\";\nimport { getAvatarImageURL } from \"@/app/utils/imageUtils\";\nimport {\n ChatBubbleIcon,\n ClockIcon,\n DotFilledIcon,\n} from \"@radix-ui/react-icons\";\nimport { StructUser } from \"@/app/types/Thread.type\";\nimport { getCurrentTimeForUser } from \"@/app/utils/timeUtils\";\n\ninterface UserHoverCardProps {\n displayName: StructUser[\"display_name\"];\n realName: StructUser[\"real_name\"];\n avatarId: StructUser[\"avatar_id\"];\n isOnline: boolean;\n onMessageUser: () => void;\n timeZone?: StructUser[\"time_zone\"];\n threadCount: StructUser[\"num_threads\"];\n children: React.ReactNode;\n}\n\nconst UserHoverCard = ({\n displayName,\n realName,\n avatarId,\n isOnline,\n onMessageUser,\n timeZone,\n threadCount,\n children,\n}: UserHoverCardProps) => {\n const handleMessageUser = (event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n onMessageUser();\n };\n\n return (\n \n {children}\n \n \n \n \n \n \n {displayName}\n \n {realName}\n \n \n \n \n \n \n \n \n \n \n {isOnline ? \"Online\" : \"Offline\"}\n \n\n {timeZone && (\n \n {\" \"}\n \n {timeZone} - {getCurrentTimeForUser(timeZone)}\n \n \n )}\n\n \n \n {threadCount} threads\n \n \n\n \n \n \n \n \n \n \n \n );\n};\n\nexport default UserHoverCard;\n","import React from \"react\";\nimport { IconType } from \"@/app/components/icons/icon.type\";\n\nconst ChannelGroupPeopleIcon = ({ style, className }: IconType) => (\n \n \n \n \n \n \n);\n\nexport default ChannelGroupPeopleIcon;\n","import React from \"react\";\nimport { IconType } from \"@/app/components/icons/icon.type\";\n\nconst FeedPreviewSearchIcon = ({ style, className }: IconType) => (\n \n \n \n \n \n \n);\n\nexport default FeedPreviewSearchIcon;\n","import React from \"react\";\nimport { IconType } from \"@/app/components/icons/icon.type\";\n\nconst HashtagIcon = ({ style, className }: IconType) => (\n \n \n \n \n);\n\nexport default HashtagIcon;\n","export const TRIGGER_FEED_FILTERS_MODAL = \"triggerFeedFiltersModal\";\nexport const FORCE_REFRESH_FEED = \"forceRefreshFeed\";\nexport const REFRESH_CHAT_TIMESTAMP = \"refreshChatTimestamp\";\nexport const WS_PING_RECEIVED = \"wsPingReceived\";\nexport const REMOVE_FROM_FEED_KEEP_THREAD_OPEN = \"removeFromFeedKeepThreadOpen\";\nexport const EMBED_THREAD_FROM_CMDK = \"embedThreadFromCmdK\";\nexport const TRIGGER_NOTIFICATION = \"triggerNotification\";\nexport const REALTIME_RECONNECTION_TRIGGERED = \"realtimeReconnectionTriggered\";\n","// @ts-nocheck\n\nimport { Parser } from \"@/app/modules/slack-message-parser/types\";\n\nexport const or = (parsers: Parser[]): Parser => {\n const { length } = parsers;\n return (text, position, rootParser) => {\n for (let i = 0; i < length; i++) {\n const match = parsers[i](text, position, rootParser);\n if (match) {\n return match;\n }\n }\n return null;\n };\n};\nexport const oneOrMore = (parser, andThen) => {\n const rec = (text, position, rootParser) => {\n const match = parser(text, position, rootParser);\n if (!match) {\n return [];\n }\n const [, nextPosition] = match;\n return [match, ...rec(text, nextPosition, rootParser)];\n };\n return (text, position, rootParser) => {\n const ret = rec(text, position, rootParser);\n if (ret.length === 0) {\n return null;\n }\n const [, lastPosition] = ret[ret.length - 1];\n return [andThen(ret.map(([a]) => a)), lastPosition];\n };\n};\nexport const regexp = (pattern, callback) => (text, position, parseText) => {\n const match = text.substring(position).match(pattern);\n if (!match) {\n return null;\n }\n return callback(match, text, position, parseText);\n};\nexport const explicit =\n (parser: Parser): Parser =>\n (text, position, parseText) => {\n const prevChar = text.charAt(position - 1);\n if (prevChar && !prevChar.match(/[\\s.,([{!?\\-=]/)) {\n return null;\n }\n return parser(text, position, parseText);\n };\nexport const topOfLine = (parser) => (text, position, parseText) => {\n if (position > 0 && text.charAt(position - 1) !== \"\\n\") {\n return null;\n }\n return parser(text, position, parseText);\n};\n","/**\n * `Node` interface's `type` property.\n */\n\nexport type Parser = (\n text: string,\n position: number,\n parseText: ParseText,\n) => [T, number] | null;\n\nexport type ParseText = (text: string) => Node[];\n\nexport const enum NodeType {\n Text = 0,\n ChannelMention = 1,\n UserMention = 2,\n URL = 3,\n Command = 4,\n Emoji = 5,\n Italic = 8,\n Bold = 9,\n Strike = 10,\n Quote = 11,\n Root = 12,\n Hashtag = 13,\n LineBreak = 14,\n InlineCode = 15,\n CodeBlock = 16,\n OrderedListItem = 17,\n BulletListItem = 18,\n OrderedList = 19,\n BulletList = 20,\n}\n/**\n * Represents each parts of the message, its type and properties.\n *\n * Every node has two common properties: `type` and `source`.\n * You can test the `type` against `NodeType` object (which is TypeScript enum) to narrow the node type down.\n *\n * ```ts\n * import { NodeType } from \"slack-message-parser\";\n * import type { Node } from \"slack-message-parser\";\n *\n * function logChannelOrUserId(node: Node): void {\n * switch (node.type) {\n * case NodeType.ChannelMention:\n * console.log(node.channelID);\n * return;\n * case NodeType.UserMention:\n * console.log(node.userID);\n * return;\n * default:\n * return;\n * }\n * }\n * ```\n *\n * The names of `Node` and `NodeType` are one-to-one mapped.\n * e.g., the `type` property of a `Text` node is always `NodeType.Text`.\n *\n * `source` property contains raw unformatted text for the node.\n */\nexport type Node =\n | Text\n | ChannelMention\n | UserMention\n | URL\n | Command\n | Emoji\n | Italic\n | Bold\n | Strike\n | Quote\n | Root\n | Hashtag\n | LineBreak\n | InlineCode\n | CodeBlock\n | OrderedListItem\n | BulletListItem\n | OrderedList\n | BulletList;\n\nexport interface NodeBase {\n type: NodeType;\n /**\n * Raw node text.\n */\n source: string;\n}\n/**\n * Texts.\n *\n * This node itself does not have any style-related information.\n */\nexport interface Text extends NodeBase {\n type: NodeType.Text;\n /**\n * Text content.\n */\n text: string;\n}\n/**\n * Link to a Slack channel.\n */\nexport interface ChannelMention extends NodeBase {\n type: NodeType.ChannelMention;\n /**\n * An ID of the destination channel.\n */\n id: string;\n /**\n * Label text for the link.\n *\n * The channel's name will be displayed if the label is not set.\n */\n label?: Node[];\n}\n/**\n * Link to a Slack user.\n */\nexport interface UserMention extends NodeBase {\n type: NodeType.UserMention;\n /**\n * An ID of the target user.\n */\n id: string;\n /**\n * Label text for the link.\n *\n * The user's name will be displayed if the label is not set.\n */\n label?: Node[];\n}\n/**\n * Generic link.\n *\n * e.g., `https://example.com/`, `mailto:user@example.com`\n */\nexport interface URL extends NodeBase {\n type: NodeType.URL;\n /**\n * A URL of the link.\n */\n url: string;\n /**\n * Label text for the link.\n *\n * The URL string itself will be displayed if the label is not set.\n */\n label?: Node[];\n}\n/**\n * Special commands such as ``, ``, or ``.\n *\n * For more details, please refer to [Formatting messages | Slack](https://api.slack.com/docs/message-formatting).\n *\n * @example\n * ```ts\n * import { parse, NodeType } from \"slack-message-parser\";\n *\n * const tree = parse(\"\");\n *\n * // {\n * // type: NodeType.Root,\n * // children: [\n * // {\n * // type: NodeType.Command,\n * // name: \"subteam\",\n * // arguments: [\"FOO\"],\n * // },\n * // ],\n * // }\n * ```\n */\nexport interface Command extends NodeBase {\n type: NodeType.Command;\n /**\n * A name of the command.\n */\n name: string;\n /**\n * Command arguments, which are prefixed by `^`.\n */\n arguments: string[];\n /**\n * Label text for the command.\n */\n label?: Node[];\n}\n/**\n * Emojis!\n */\nexport interface Emoji extends NodeBase {\n type: NodeType.Emoji;\n /**\n * A name of the emoji (the text between two `:`s.)\n */\n name: string;\n /**\n * Emoji variant.\n *\n * Only `skin-tone-` is currently supported.\n */\n variation?: string;\n}\n/**\n * Italic text decoration context.\n */\nexport interface Italic extends NodeBase {\n type: NodeType.Italic;\n children: Node[];\n}\n/**\n * Bold text decoration context.\n */\nexport interface Bold extends NodeBase {\n type: NodeType.Bold;\n children: Node[];\n}\n/**\n * Strike-through decoration text context.\n */\nexport interface Strike extends NodeBase {\n type: NodeType.Strike;\n children: Node[];\n}\n/**\n * Block quote.\n */\nexport interface Quote extends NodeBase {\n type: NodeType.Quote;\n children: Node[];\n}\n/**\n * A node sits top of the tree.\n *\n * Every parse result has this node as its root node.\n */\nexport interface Root extends NodeBase {\n type: NodeType.Root;\n /**\n * A list of child nodes.\n */\n children: Node[];\n}\n\n// Hashtag type\nexport interface Hashtag extends NodeBase {\n type: NodeType.Hashtag;\n /**\n * Hashtag content.\n */\n tag: string;\n}\n\n// LineBreak type\nexport interface LineBreak extends NodeBase {\n type: NodeType.LineBreak;\n}\n\n// InlineCode type\nexport interface InlineCode extends NodeBase {\n type: NodeType.InlineCode;\n text: string;\n}\n\n// CodeBlock type\nexport interface CodeBlock extends NodeBase {\n type: NodeType.CodeBlock;\n text: string;\n language: string;\n}\n\n// OrderedListItem type\nexport interface OrderedListItem extends NodeBase {\n type: NodeType.OrderedListItem;\n children: Node[];\n}\n\n// BulletListItem type\nexport interface BulletListItem extends NodeBase {\n type: NodeType.BulletListItem;\n children: Node[];\n}\n\n// OrderedList type\nexport interface OrderedList extends NodeBase {\n type: NodeType.OrderedList;\n children: Node[];\n}\n\n// BulletList type\nexport interface BulletList extends NodeBase {\n type: NodeType.BulletList;\n children: Node[];\n}\n","// @ts-nocheck\nimport { explicit, oneOrMore, or, regexp, topOfLine } from \"./combinator\";\nimport { NodeType } from \"@/app/modules/slack-message-parser/types\";\nconst parseBold = explicit(\n regexp(\n /^\\*(\\S([^*\\n]*?|[^*\\n]*? `.*?` )[^\\s*]|\\S)\\*(?=[\\s~!#$%^)\\-+={}[\\];:'\",.?/]|$)/,\n (match, _text, position, parseText) => {\n const [matchedText, content] = match;\n return [\n {\n type: NodeType.Bold,\n children: parseText(content),\n source: matchedText,\n },\n position + matchedText.length,\n ];\n },\n ),\n);\n\nconst parseItalic = explicit(\n regexp(\n /^_(\\S([^_\\n]*?|[^_\\n]*? `.*?` )\\S|\\S)\\_(?=[\\s.,\\])}!?\\-=]|$)/,\n (match, _text, position, parseText) => {\n const [matchedText, content] = match;\n return [\n {\n type: NodeType.Italic,\n children: parseText(content),\n source: matchedText,\n },\n position + matchedText.length,\n ];\n },\n ),\n);\nconst parseStrike = explicit(\n regexp(\n /^~(\\S([^~\\n]*?|[^~\\n]*? `.*?` )\\S|\\S)\\~(?=[\\s.,\\])}!?\\-=]|$)/,\n (match, _text, position, parseText) => {\n const [matchedText, content] = match;\n return [\n {\n type: NodeType.Strike,\n children: parseText(content),\n source: matchedText,\n },\n position + matchedText.length,\n ];\n },\n ),\n);\nconst parseQuoteLine = topOfLine(\n regexp(\n /^(>|>)(.*)(\\n(>|>)|\\n|$)/,\n (match, _text, position, parseText) => {\n const [matchedText, gtSymbol, content] = match;\n const repeatedGt = content.match(/^((>|>)+)(.*)$/);\n // Determine the correct gt symbol to use for replacement\n const gtToUse = gtSymbol === \">\" ? \">\" : \">\";\n const source = matchedText.replace(new RegExp(`\\\\n${gtToUse}$`), \"\\n\");\n const isNextLineStartsWithGt = source !== matchedText;\n return [\n {\n type: NodeType.Quote,\n children: repeatedGt\n ? [\n {\n type: NodeType.Text,\n text: repeatedGt[1],\n source: repeatedGt[1],\n },\n ...parseText(repeatedGt[3]),\n ]\n : parseText(isNextLineStartsWithGt ? content + \"\\n\" : content),\n source,\n },\n position + source.length,\n ];\n },\n ),\n);\n\nconst parseQuote = or([\n topOfLine(\n regexp(/^>>>([\\s\\S]+)$/, (match, _text, position, parseText) => {\n const [matchedText, content] = match;\n return [\n {\n type: NodeType.Quote,\n children: parseText(content),\n source: matchedText,\n },\n position + matchedText.length,\n ];\n }),\n ),\n oneOrMore(parseQuoteLine, (quotes) => {\n return {\n type: NodeType.Quote,\n children: quotes.map((quote) => quote.children).flat(),\n source: quotes.map((quote) => quote.source).join(\"\"),\n };\n }),\n]);\nconst parseCodeBlockWithLang = explicit(\n regexp(/^```(\\w+)?\\n([\\s\\S]+?)\\n```/, (match, _text, position) => {\n const [matchedText, lang, code] = match;\n return [\n {\n type: NodeType.CodeBlock,\n text: code,\n language: lang || null,\n source: matchedText,\n },\n position + matchedText.length,\n ];\n }),\n);\n\nconst parseInlineCode = explicit(\n regexp(/^`([^`]+?)`/, (match, _text, position) => {\n const [matchedText, code] = match;\n return [\n {\n type: NodeType.InlineCode,\n text: code,\n source: matchedText,\n },\n position + matchedText.length,\n ];\n }),\n);\n\nconst parseLineBreak = regexp(/^(\\n+)/, (match, _text, position) => {\n const [matchedText] = match;\n return [\n {\n type: NodeType.LineBreak,\n source: matchedText,\n },\n position + matchedText.length,\n ];\n});\n\nconst parseBulletList = explicit(\n regexp(/^(\\* .+(?:\\n\\* .+)*)/, (match, _text, position, parseText) => {\n const [matchedText] = match;\n const items = matchedText.split(/\\n/).map((line) => {\n const content = line.substring(2); // remove \"* \"\n return {\n type: NodeType.BulletListItem,\n children: parseText(content),\n source: line,\n };\n });\n\n return [\n {\n type: NodeType.BulletList,\n children: items,\n source: matchedText,\n },\n position + matchedText.length,\n ];\n }),\n);\n\nconst parseOrderedList = explicit(\n regexp(/^(\\d+\\.\\s.*(?:\\n\\d+\\.\\s.*)*)/, (match, text, position, parseText) => {\n const [matchedText] = match;\n const potentialListItems = matchedText.split(/\\n/);\n let actualListItems = [];\n let isStartOfLine = position === 0;\n\n for (const item of potentialListItems) {\n if (item.match(/^\\d+\\.\\s/) && isStartOfLine) {\n actualListItems.push(item);\n } else {\n break;\n }\n isStartOfLine = true;\n }\n\n if (actualListItems.length === 0) {\n return null;\n }\n\n const items = actualListItems.map((line) => {\n const content = line.substring(line.indexOf(\". \") + 2);\n return {\n type: NodeType.OrderedListItem,\n children: parseText(content),\n source: line,\n };\n });\n\n return [\n {\n type: NodeType.OrderedList,\n children: items,\n source: actualListItems.join(\"\\n\"),\n },\n position + actualListItems.join(\"\\n\").length,\n ];\n }),\n);\n\nconst parseCombined = explicit(\n regexp(/^<([^<>]+)>/, (match, _text, position) => {\n const [matchedText, content] = match;\n const nextPosition = position + matchedText.length;\n\n // Check for a URL\n const urlRegex = /^(www\\.|https?:\\/\\/)[\\w.-]+/;\n if (urlRegex.test(content)) {\n return [\n {\n type: NodeType.URL,\n url: content,\n source: matchedText,\n },\n nextPosition,\n ];\n }\n\n // Check for a mention\n if (content.startsWith(\"@\")) {\n const type = content.slice(1).startsWith(\"4\")\n ? NodeType.UserMention\n : NodeType.ChannelMention;\n return [\n {\n type: type,\n id: content.slice(1),\n source: matchedText,\n },\n nextPosition,\n ];\n }\n\n // Check for a hashtag\n if (content.startsWith(\"#\")) {\n return [\n {\n type: NodeType.Hashtag,\n tag: content.slice(1),\n source: matchedText,\n },\n nextPosition,\n ];\n }\n\n // If the content doesn't match any known pattern\n return [\n {\n type: NodeType.Unknown,\n content: content,\n source: matchedText,\n },\n nextPosition,\n ];\n }),\n);\n\nexport default or([\n parseCombined,\n parseLineBreak,\n parseCodeBlockWithLang,\n parseInlineCode,\n parseBold,\n parseBulletList,\n parseOrderedList,\n parseItalic,\n parseQuote,\n parseStrike,\n]);\n","import parser from \"./parser\";\nimport { NodeType, Root } from \"./types\";\n\nconst parseText = (text: string) => {\n const children = [];\n let textBuffer = \"\";\n const flush = () => {\n if (!textBuffer) {\n return;\n }\n children.push({\n type: NodeType.Text,\n text: textBuffer,\n source: textBuffer,\n });\n textBuffer = \"\";\n };\n let i = 0;\n const l = text.length;\n while (i < l) {\n const match = parser(text, i, parseText);\n if (match) {\n flush();\n const [node, position] = match;\n children.push(node);\n i = position;\n continue;\n }\n textBuffer += text.charAt(i);\n i += 1;\n }\n flush();\n return children;\n};\n\n\nexport const parse = (message: string): Root => ({\n type: NodeType.Root,\n children: parseText(message),\n source: message,\n});\nexport default parse;\n","import { useMemo } from \"react\";\nimport { Button, Flex } from \"@radix-ui/themes\";\nimport { CopyIcon } from \"@radix-ui/react-icons\";\nimport SyntaxHighlighter, {\n Prism as PrismHighlighter,\n} from \"react-syntax-highlighter\";\nimport { nightOwl as nightOwlHLJS } from \"react-syntax-highlighter/dist/cjs/styles/hljs\";\nimport { nightOwl as nightOwlPrism } from \"react-syntax-highlighter/dist/cjs/styles/prism\";\nimport styles from \"./CodeBlock.module.scss\";\n\nconst HIGHLIGHTER_BREAKPOINT = 1;\n\ninterface CodeBlockProps {\n text: string;\n}\n\n// TODO: add support for fetching language from the first line\nconst CodeBlock = ({ text }: CodeBlockProps) => {\n const memoizedHighlighter = useMemo(() => {\n const textLength = text?.length ?? 0;\n const Highlighter =\n textLength > HIGHLIGHTER_BREAKPOINT\n ? PrismHighlighter\n : SyntaxHighlighter;\n const styles =\n textLength > HIGHLIGHTER_BREAKPOINT ? nightOwlPrism : nightOwlHLJS;\n return (\n \n {text}\n \n );\n }, [text]);\n\n return (\n \n \n {\n navigator.clipboard.writeText(text);\n }}\n >\n Copy code\n \n \n {memoizedHighlighter}\n \n );\n};\nexport default CodeBlock;\n","import styles from \"./OrderedList.module.scss\";\nimport { ReactNode } from \"react\";\ninterface OrderedListProps {\n children: ReactNode;\n isCompact?: boolean;\n}\n\nconst OrderedList = ({ children, isCompact }: OrderedListProps) => (\n
    \n {children}\n
\n);\n\nexport default OrderedList;\n","import { ReactNode } from \"react\";\nimport styles from \"./BulletList.module.scss\";\n\ninterface BulletListProps {\n children: ReactNode;\n isCompact?: boolean;\n}\n\nconst BulletList = ({ children, isCompact }: BulletListProps) => (\n
    \n {children}\n
\n);\n\nexport default BulletList;\n","import { EntityIDMap } from \"@/app/constants\";\nimport { BlockType, ChatBlock } from \"@/app/types/Block.type\";\n\nconst referenceTypeMap: Partial<{ [K in EntityIDMap]: string }> = {\n [EntityIDMap.User]: \"user\",\n [EntityIDMap.Channel]: \"channel\",\n [EntityIDMap.Thread]: \"thread\",\n};\n\n// TODO: this feels like a candidate for a global utility function\nexport const getReferenceType = (text: string): string | undefined => {\n if (text.startsWith(\"#\")) {\n return \"tag\";\n }\n\n if (text.startsWith(\"@\")) {\n const key = text[1] as EntityIDMap;\n return referenceTypeMap[key];\n }\n};\n\nexport const getReferenceDetails = (text: string) => {\n const type = getReferenceType(text);\n const id = text.slice(1);\n\n return { type, id };\n};\n\nexport const getIsOnlyEmojis = (node: ChatBlock[]): boolean => {\n if (node.length === 0) return false;\n\n if (node?.[0]?.type !== BlockType.RichText) {\n return false;\n }\n const chatBlock = node?.[0]?.elements?.[0];\n\n if (chatBlock?.type !== BlockType.RichTextSection) {\n return false;\n }\n\n const elements = chatBlock?.elements;\n\n const result = elements?.every((element) => element?.type === \"emoji\");\n\n if (result && elements.length > 9) {\n return false;\n }\n\n return result;\n};\n","import React, { Fragment } from \"react\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport dynamic from \"next/dynamic\";\nimport { StructThread, StructUser } from \"@/app/types/Thread.type\";\nimport { StructChannel } from \"@/app/types/Channel.type\";\nimport { StructAuthenticatedUser } from \"@/app/types/session\";\nimport {\n Blockquote,\n Button,\n Code,\n Flex,\n Link,\n Text,\n Theme,\n} from \"@radix-ui/themes\";\nimport CodeBlock from \"@/app/components/Thread/ChatElements/CodeBlock\";\nimport UserHoverCard from \"@/app/components/Thread/ChatElements/UserHoverCard\";\nimport MentionBadge from \"@/app/components/Thread/ChatElements/MentionBadge\";\nimport ChannelHoverCard from \"@/app/components/Thread/ChatElements/ChannelHoverCard\";\nimport TagHoverCard from \"@/app/components/Thread/ChatElements/TagHoverCard\";\nimport { StructTag } from \"@/app/types/Tag.type\";\nimport OrderedList from \"@/app/components/Thread/ChatElements/OrderedList\";\nimport BulletList from \"@/app/components/Thread/ChatElements/BulletList\";\nimport { BlockType, ChatBlock } from \"@/app/types/Block.type\";\nimport styles from \"./ComponentsContainer.module.scss\";\nimport {\n getReferenceDetails,\n getIsOnlyEmojis,\n} from \"@/app/utils/slackTreeConverters/utils\";\nimport { CaretRightIcon } from \"@radix-ui/react-icons\";\n\nconst Emoji = dynamic(() =>\n import(\"@/app/components/Emoji\").then((mod) => mod.Emoji),\n);\n\nconst CustomEmoji = dynamic(() =>\n import(\"@/app/components/CustomEmoji\").then((mod) => mod.CustomEmoji),\n);\n\ninterface makeGetComponentsFromChatBlocksProps {\n authenticatedUserId?: StructAuthenticatedUser[\"id\"];\n onlineUserIds: StructUser[\"id\"][];\n onMessageUser: (\n id: StructUser[\"id\"],\n name: StructUser[\"display_name\"],\n ) => void;\n onViewChannel: (id: StructChannel[\"id\"]) => void;\n onViewTag: (tag: StructTag[\"tag\"]) => void;\n onOpenThread: (threadId: StructThread[\"id\"]) => void;\n}\n\nexport const makeGetComponentsFromChatBlocks = ({\n authenticatedUserId,\n onlineUserIds,\n onMessageUser,\n onViewChannel,\n onViewTag,\n onOpenThread,\n}: makeGetComponentsFromChatBlocksProps): ((\n blocks: ChatBlock | ChatBlock[],\n) => React.ReactNode) => {\n let isOnlyEmojis = false;\n const getComponentsFromSlackTree = (\n blocks: ChatBlock | ChatBlock[],\n ): React.ReactNode => {\n try {\n if (Array.isArray(blocks)) {\n isOnlyEmojis = getIsOnlyEmojis(blocks);\n return (\n \n {blocks.map((node) => getComponentsFromSlackTree(node))}\n \n );\n }\n if (!blocks) console.trace(\"blocks\");\n\n const id = uuidv4();\n if (!blocks) return null;\n\n switch (blocks.type) {\n case BlockType.RichText:\n return (\n
\n {blocks?.elements?.map((element) =>\n getComponentsFromSlackTree(element),\n )}\n
\n );\n\n case BlockType.RichTextSection:\n return (\n
\n {blocks?.elements?.map((element, index) => (\n \n {getComponentsFromSlackTree(element)}\n \n ))}\n
\n );\n\n case BlockType.Text:\n if (blocks?.style?.code) {\n return {blocks.text};\n }\n\n return (\n \n {blocks.text}\n \n );\n\n case BlockType.RichTextPreformatted:\n return ;\n\n case BlockType.Link:\n // TODO: implement in-app thread links\n return (\n \n {blocks.text}\n \n );\n\n case BlockType.RichTextQuote:\n return (\n
\n {blocks?.elements?.map((element) =>\n getComponentsFromSlackTree(element),\n )}\n
\n );\n\n case BlockType.Reference:\n const reference = getReferenceDetails(blocks.text!);\n\n if (reference.type === \"user\") {\n const user = (blocks?.entity as StructUser) ?? null;\n\n if (!user) {\n // TODO: render text\n // return NO USER FOUND;\n return ;\n }\n\n const isAuthenticatedUser = user.id === authenticatedUserId;\n const isOnline = onlineUserIds.includes(user.id);\n\n return (\n onMessageUser(user.id, user.display_name)}\n timeZone={user.time_zone}\n threadCount={user.num_threads}\n >\n \n \n );\n } else if (reference.type === \"channel\") {\n const channel = (blocks?.entity as StructChannel) ?? null;\n\n if (!channel) {\n // TODO: render text\n return NO CHANNEL FOUND;\n }\n\n return (\n onViewChannel(reference.id)}\n memberCount={channel?.num_users ?? 0}\n threadCount={channel?.num_threads ?? 0}\n />\n );\n } else if (reference.type === \"tag\") {\n return (\n \n );\n } else if (reference.type === \"thread\") {\n return (\n {\n onOpenThread(reference.id);\n }}\n gap=\"1\"\n align=\"center\"\n >\n \n @thread\n \n {blocks.elements && (\n \n {getComponentsFromSlackTree(blocks.elements)}\n \n )}\n \n \n );\n } else {\n return getComponentsFromSlackTree({\n type: BlockType.Text,\n text: `<${blocks.text}>`,\n elements: [],\n });\n }\n\n case BlockType.RichTextList:\n if (blocks.style?.ordered) {\n return (\n \n {blocks?.elements?.map((element, index) => (\n
  • {getComponentsFromSlackTree(element)}
  • \n ))}\n
    \n );\n }\n\n return (\n \n {blocks?.elements?.map((element, index) => (\n
  • {getComponentsFromSlackTree(element)}
  • \n ))}\n
    \n );\n case BlockType.CustomEmoji:\n // No way to test\n return (\n \n );\n\n case BlockType.Emoji:\n return (\n \n );\n\n default:\n return (\n \n {JSON.stringify(blocks)}\n
    \n \n );\n }\n } catch (error) {\n // console.error(\"error :\", error);\n }\n };\n\n return getComponentsFromSlackTree;\n};\n","import { StructUser } from \"@/app/types/Thread.type\";\nimport { StructChannel } from \"@/app/types/Channel.type\";\nimport { Node, NodeType } from \"@/app/modules/slack-message-parser/types\";\nimport { DocNode } from \"@/app/store/ChatBox.store\";\n\nexport const makeGetTipTapEditorStateFromSlackTree = (): ((\n node: Node,\n) => DocNode) => {\n const getEditorStateFromSlackParser = (node: Node): any => {\n switch (node.type) {\n case NodeType.Root:\n return {\n type: \"doc\",\n content: [\n {\n type: \"paragraph\",\n content: node.children?.map(getEditorStateFromSlackParser),\n },\n ],\n };\n\n case NodeType.Text:\n return {\n type: \"text\",\n text: node.text,\n };\n\n case NodeType.ChannelMention:\n // todo: backfill this\n const channel = null; //channelsById[node.id];\n\n if (!channel) {\n return getEditorStateFromSlackParser({\n ...node,\n type: NodeType.Text,\n text: node.source,\n });\n }\n\n return {\n type: \"mention\",\n attrs: {\n // @ts-expect-error\n id: channel.id,\n // @ts-expect-error\n label: channel.name,\n },\n };\n\n case NodeType.UserMention:\n // todo: backfill this\n const user = null; //usersById[node.id];\n\n if (!user) {\n return getEditorStateFromSlackParser({\n ...node,\n type: NodeType.Text,\n text: node.source,\n });\n }\n\n return {\n type: \"mention\",\n attrs: {\n // @ts-expect-error\n id: user.id,\n // @ts-expect-error\n label: user.display_name,\n },\n };\n\n // case NodeType.URL:\n // return {\n // type: \"text\",\n // marks: [\n // {\n // type: \"link\",\n // attrs: {\n // href: node.url,\n // target: \"_blank\",\n // rel: \"noopener noreferrer nofollow\",\n // class: null,\n // },\n // },\n // ],\n // text: node.url,\n // };\n\n case NodeType.Hashtag:\n return {\n type: \"tag\",\n attrs: {\n id: node.tag,\n label: node.tag,\n },\n };\n\n case NodeType.LineBreak:\n return {\n type: \"hardBreak\",\n };\n\n default:\n // @ts-ignore\n return { type: \"text\", text: node.source };\n }\n };\n\n return getEditorStateFromSlackParser;\n};\n","import { Code, Flex, Text } from \"@radix-ui/themes\";\nimport React, { Fragment } from \"react\";\nimport MentionBadge from \"@/app/components/Thread/ChatElements/MentionBadge\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { StructUser } from \"@/app/types/Thread.type\";\nimport { StructChannel } from \"@/app/types/Channel.type\";\nimport dynamic from \"next/dynamic\";\nimport { StructAuthenticatedUser } from \"@/app/types/session\";\nimport FeedChatPill from \"@/app/components/ChatComponents/FeedChatPill\";\nimport { BlockType, ChatBlock } from \"@/app/types/Block.type\";\nimport OrderedList from \"@/app/components/Thread/ChatElements/OrderedList\";\nimport BulletList from \"@/app/components/Thread/ChatElements/BulletList\";\nimport { getReferenceDetails } from \"@/app/utils/slackTreeConverters/utils\";\nimport { CaretRightIcon } from \"@radix-ui/react-icons\";\n\nconst Emoji = dynamic(() =>\n import(\"@/app/components/Emoji\").then((mod) => mod.Emoji),\n);\nconst CustomEmoji = dynamic(() =>\n import(\"@/app/components/CustomEmoji\").then((mod) => mod.CustomEmoji),\n);\n\ninterface makeGetCompactComponentsFromChatBlocksProps {\n authenticatedUserId?: StructAuthenticatedUser[\"id\"];\n}\n\nexport const makeGetCompactComponentsFromChatBlocks = ({\n authenticatedUserId,\n}: makeGetCompactComponentsFromChatBlocksProps): ((\n blocks: ChatBlock | ChatBlock[],\n) => React.ReactNode) => {\n const getCompactComponentsFromChatBlocks = (\n blocks: ChatBlock | ChatBlock[],\n ): React.ReactNode => {\n const id = uuidv4();\n try {\n if (Array.isArray(blocks)) {\n return (\n \n {blocks.map((node) => getCompactComponentsFromChatBlocks(node))}\n \n );\n }\n\n if (!blocks) return null;\n\n switch (blocks.type) {\n case BlockType.RichText:\n return blocks?.elements?.map((element, index) => (\n \n {getCompactComponentsFromChatBlocks(element)}\n \n ));\n\n case BlockType.RichTextSection:\n return (\n <>\n {blocks?.elements?.map((element, index) => (\n \n {getCompactComponentsFromChatBlocks(element)}\n \n ))}\n \n );\n\n case BlockType.Text:\n if (blocks?.style?.code) {\n return (\n \n {blocks.text}\n \n );\n }\n\n return (\n \n {blocks.text}\n \n );\n\n case BlockType.RichTextPreformatted:\n return ;\n\n case BlockType.Link:\n // TODO: implement in-app thread links\n return ;\n\n case BlockType.RichTextQuote:\n const text =\n blocks?.elements?.map((element) => element.text).join(\"\") ?? \"\";\n\n return ;\n\n case BlockType.Reference:\n const reference = getReferenceDetails(blocks.text!);\n\n if (reference.type === \"user\") {\n const user = (blocks.entity as StructUser) ?? {};\n\n if (!user) {\n return ;\n }\n\n const isAuthenticatedUser = user.id === authenticatedUserId;\n return (\n \n );\n } else if (reference.type === \"channel\") {\n const channel = (blocks.entity as StructChannel) ?? {};\n\n if (!channel) {\n return ;\n }\n\n return (\n \n );\n } else if (reference.type === \"tag\") {\n return (\n \n );\n } else if (reference.type === \"thread\") {\n return (\n \n \n @thread\n \n {blocks.elements && (\n \n {getCompactComponentsFromChatBlocks(blocks.elements)}\n \n )}\n \n \n );\n }\n\n case BlockType.RichTextList:\n if (blocks.style?.ordered) {\n return (\n \n {blocks?.elements?.map((element, index) => (\n
  • \n {getCompactComponentsFromChatBlocks(element)}\n
  • \n ))}\n
    \n );\n }\n\n return (\n \n {blocks?.elements?.map((element, index) => (\n
  • \n {getCompactComponentsFromChatBlocks(element)}\n
  • \n ))}\n
    \n );\n\n case BlockType.Emoji:\n return ;\n\n case BlockType.CustomEmoji:\n // No way to test\n return ;\n\n default:\n return (\n \n {JSON.stringify(blocks)}\n
    \n \n );\n }\n } catch (error) {\n console.error(\"error :\", error);\n }\n };\n\n return getCompactComponentsFromChatBlocks;\n};\n","import { StructChat, StructThread, StructUser } from \"@/app/types/Thread.type\";\nimport { StructChannel } from \"@/app/types/Channel.type\";\nimport { useAppStore } from \"../store\";\nimport { useMemo } from \"react\";\nimport useShallowNavigation from \"./useShallowNavigation\";\nimport { StructTag } from \"@/app/types/Tag.type\";\nimport slackMessageParser from \"@/app/modules/slack-message-parser/mod\";\nimport { makeGetComponentsFromChatBlocks } from \"@/app/utils/slackTreeConverters/getComponentsFromChatBlocks\";\nimport { makeGetTipTapEditorStateFromSlackTree } from \"@/app/utils/slackTreeConverters/getEditorStateFromSlackParser\";\nimport { makeGetCompactComponentsFromChatBlocks } from \"@/app/utils/slackTreeConverters/getCompactComponentsFromChatBlocks\";\n\nexport const useParser = () => {\n const sessionUserId = useAppStore((state) => state.session?.user?.id);\n const onlineUserIds = useAppStore((state) => state.onlineUserIds);\n const chatBoxCommands = useAppStore((state) => state.chatBoxCommands);\n\n const setSearchQuery = useAppStore((state) => state.setSearchQuery);\n\n const { navigateToPath } = useShallowNavigation();\n\n const handleMessageUser = (\n userId: StructUser[\"id\"],\n userName: StructUser[\"display_name\"],\n ) => {\n navigateToPath(null);\n chatBoxCommands?.clearContent();\n chatBoxCommands?.insertContent(\"Hi \");\n chatBoxCommands?.insertMention({\n id: userId,\n label: userName,\n });\n chatBoxCommands?.insertContent(\", \");\n\n chatBoxCommands?.focus();\n };\n\n const handleViewChannel = (channelId: StructChannel[\"id\"]) => {\n setSearchQuery(`<@${channelId}>`);\n navigateToPath(null);\n };\n\n const handleViewHashtag = (tag: StructTag[\"tag\"]) => {\n setSearchQuery(`<#${tag}>`);\n navigateToPath(null);\n };\n\n const handleOpenThread = (threadId: StructThread[\"id\"]) => {\n navigateToPath(threadId);\n };\n\n const getEditorState = useMemo(\n () => makeGetTipTapEditorStateFromSlackTree(),\n [],\n );\n\n const getComponentsFromChatBlocks = useMemo(\n () =>\n makeGetComponentsFromChatBlocks({\n authenticatedUserId: sessionUserId,\n onlineUserIds,\n onMessageUser: handleMessageUser,\n onViewChannel: handleViewChannel,\n onViewTag: handleViewHashtag,\n onOpenThread: handleOpenThread,\n }),\n [sessionUserId, onlineUserIds],\n );\n\n const getCompactComponentsFromChatBlocks = useMemo(\n () =>\n makeGetCompactComponentsFromChatBlocks({\n authenticatedUserId: sessionUserId,\n }),\n [sessionUserId],\n );\n\n return {\n handleMessageUser,\n handleViewHashtag,\n handleViewChannel,\n getCompactComponentsFromChatBlocks,\n getComponentsFromChatBlocks,\n getEditorStateFromChatText: (text: StructChat[\"text\"]) =>\n getEditorState(slackMessageParser(text)),\n };\n};\n","import { useEffect, useState } from \"react\";\n\nconst getCurrentPathSegment = () => window.location.pathname.slice(1);\n\nconst useShallowNavigation = () => {\n const [currentPath, setCurrentPath] = useState(\"\");\n\n useEffect(() => {\n const handlePopState = () => {\n setCurrentPath(getCurrentPathSegment());\n };\n\n handlePopState();\n\n window.addEventListener(\"popstate\", handlePopState);\n window.addEventListener(\"pathChanged\", handlePopState);\n\n return () => {\n window.removeEventListener(\"popstate\", handlePopState);\n window.removeEventListener(\"pathChanged\", handlePopState);\n };\n }, []);\n\n const navigateToPath = (newPath: string | null) => {\n getCurrentPath().then((oldPath) => {\n const oldURL = oldPath ? `/${oldPath}` : \"/\";\n const updatedURL = newPath ? `/${newPath}` : \"/\";\n window.history.pushState({}, \"\", oldURL);\n window.history.replaceState({}, \"\", updatedURL);\n window.dispatchEvent(new Event(\"pathChanged\"));\n });\n };\n\n const getCurrentPath = (): Promise => {\n // This sorcery helps us to get the current path in a synchronous and deterministic way\n return new Promise((resolve) => {\n setCurrentPath((currentPath) => {\n resolve(currentPath);\n return currentPath;\n });\n });\n };\n\n return { currentPath, navigateToPath, getCurrentPath };\n};\n\nexport default useShallowNavigation;\n","import { StructUser } from \"@/app/types/Thread.type\";\nimport { STRUCT_API_VERSION } from \"@/app/constants\";\nimport { structAPIFetchClient } from \"./client\";\nimport { StructChannel } from \"../types/Channel.type\";\n\nconst MENTIONS_ENDPOINT = `/${STRUCT_API_VERSION}/mentions`;\n\nexport const getMentions = (\n query: string,\n hideDeleted = false,\n ids: string[] = [],\n limit = 5,\n) => {\n let ENDPOINT = `${MENTIONS_ENDPOINT}?q=${query}&limit=${limit}`;\n if (hideDeleted) {\n ENDPOINT += \"&bits=deleted,hidden,flip\";\n }\n if (ids) {\n ENDPOINT += \"&ids=\" + ids.join(\",\");\n }\n return structAPIFetchClient(ENDPOINT, {\n method: \"GET\",\n })\n .then((response) => {\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n return response.json();\n })\n .then(\n ({\n users,\n channels,\n }: {\n users: StructUser[];\n channels: StructChannel[];\n }) => ({\n users: users || [],\n channels: channels || [],\n }),\n );\n};\n","import { StructChannel } from \"./Channel.type\";\nimport { StructUser } from \"./Thread.type\";\n\nexport enum BlockType {\n RichText = \"rich_text\",\n RichTextSection = \"rich_text_section\",\n RichTextQuote = \"rich_text_quote\",\n RichTextList = \"rich_text_list\",\n RichTextPreformatted = \"rich_text_preformatted\",\n Text = \"text\",\n Link = \"link\",\n Reference = \"ref\",\n Emoji = \"emoji\",\n CustomEmoji = \"emoji_custom\",\n}\n\nexport interface ChatBlock {\n type: string;\n elements: ChatBlock[];\n style?: {\n italic?: boolean;\n bold?: boolean;\n strike?: boolean;\n code?: boolean;\n ordered?: boolean;\n };\n text?: string;\n name?: string;\n unicode?: string;\n entity?: StructUser | StructChannel;\n}\n","import { StructUser } from \"@/app/types/Thread.type\";\nimport { StructChannel } from \"@/app/types/Channel.type\";\n\nexport const replaceMentionedUserAndChannelIdsWithNames = (\n message: string,\n usersById: Record,\n channelsById: Record,\n) => {\n if (!message) return message;\n return message.replace(/?/g, (match, id) => {\n const prefix = id.charAt(0);\n if (prefix === \"4\") {\n return usersById[id] ? `@${usersById[id].display_name}` : match;\n }\n if (prefix === \"3\") {\n return channelsById[id] ? `@${channelsById[id].name}` : match;\n }\n return match;\n });\n};\n\nexport const removeMentionsAndTags = (message: string) => {\n return message\n ?.replace(/(?:[^`\"]|^)<@(3|4)\\w*>|<#\\w*\\/?\\w*>(?![`\"])/g, \"\")\n .trim()\n .replace(/\\s\\s+/g, \" \");\n};\n\nexport const extractChannelIdsFromMessage = (message: string) => {\n const regex = /<@(3[^>]+)>/g;\n let match;\n const ids = [];\n\n while ((match = regex.exec(message)) !== null) {\n ids.push(match[1]);\n }\n\n return ids;\n};\n\nexport const extractUserIdsFromMessage = (message: string) => {\n const regex = /<@(4[^>]+)>/g;\n let match;\n const ids = [];\n\n while ((match = regex.exec(message)) !== null) {\n ids.push(match[1]);\n }\n\n return ids;\n};\n\nexport const extractTagsFromMessage = (message: string) => {\n const regex = /<#([^>]+)>/g;\n let match;\n const ids = [];\n\n while ((match = regex.exec(message)) !== null) {\n ids.push(match[1]);\n }\n\n return ids;\n};\n\nexport const capitalize = (s: string): string => {\n if (s) {\n return s[0].toUpperCase() + s.slice(1);\n }\n return s;\n};\n\nexport const processSearchQuery = (\n query: string,\n): [string[], string[], string[], string] => {\n let channelIds: string[] = [],\n userIds: string[] = [],\n tags: string[] = [],\n searchQuery = \"\";\n try {\n channelIds = extractChannelIdsFromMessage(query);\n userIds = extractUserIdsFromMessage(query);\n tags = extractTagsFromMessage(query);\n searchQuery = removeMentionsAndTags(query);\n } catch (error) {\n console.error(error);\n }\n return [channelIds, userIds, tags, searchQuery];\n};\n","import { DateTime } from \"luxon\";\n\nconst units: Intl.RelativeTimeFormatUnit[] = [\n \"year\",\n \"month\",\n \"week\",\n \"day\",\n \"hour\",\n \"minute\",\n \"second\",\n];\n\nexport function formatTimeAgo(dateTime: DateTime): string {\n const now = DateTime.now();\n const diff = now.diff(dateTime);\n\n const rules: Record<\n string,\n {\n condition: (value: number) => boolean;\n label: (val: number | string) => string;\n }\n > = {\n seconds: {\n condition: (val) => val < 60,\n label: () => \"now\",\n },\n minutes: {\n condition: (val) => val < 60,\n label: (val) => `${val}m ago`,\n },\n hours: {\n condition: (val) => val < 24,\n label: (val) => `${val}h ago`,\n },\n days: {\n condition: (val) => val < 7,\n label: (val) => `${val}d ago`,\n },\n weeks: {\n condition: (val) => val < 4,\n label: (val) => `${val}w ago`,\n },\n months: {\n condition: (val) => val < 12,\n label: (val) => `${val}mo ago`,\n },\n years: {\n condition: () => true,\n label: (val) => `${val}y ago`,\n },\n };\n\n return (\n Object.entries(rules).reduce(\n (acc, [unit, rule]) => {\n if (acc) return acc;\n const value = Math.floor(diff.as(unit as any));\n return rule.condition(value)\n ? value === 0\n ? // To avoid 0mo ago, this will return ~1mo ago\n rule.label(\"~1\")\n : rule.label(value)\n : null;\n },\n null as string | null,\n ) || \"\"\n );\n}\n\n/**\n * Returns the timeago format (only as today, days, weeks and months) for a DateTime from now\n * @param dateTime\n * @returns difference from now as time ago, eg: 2 hours ago\n */\nexport function formatTimeAgoForDateGroup(dateTime: DateTime): string {\n const now = DateTime.fromFormat(\n DateTime.now().toFormat(\"LLL dd, yyyy\"),\n \"LLL dd, yyyy\",\n );\n const dt = DateTime.fromFormat(\n dateTime.toFormat(\"LLL dd, yyyy\"),\n \"LLL dd, yyyy\",\n );\n\n const diff = now.diff(dt).shiftTo(...units);\n\n if (Math.floor(diff.as(\"days\")) === 0) {\n return \"today\";\n } else if (Math.floor(diff.as(\"days\")) === 1) {\n return \"yesterday\";\n } else if (diff.as(\"days\") < 7) {\n const days = Math.floor(diff.as(\"days\"));\n return `${days} day${days > 1 ? \"s\" : \"\"} ago`;\n } else if (diff.as(\"weeks\") < 4) {\n const weeks = Math.floor(diff.as(\"weeks\"));\n return `${weeks} week${weeks > 1 ? \"s\" : \"\"} ago`;\n } else {\n const months = Math.floor(diff.as(\"months\"));\n return `${months} month${months > 1 ? \"s\" : \"\"} ago`;\n }\n}\n\nexport const timezones = [\n \"Africa/Abidjan\",\n \"Africa/Accra\",\n \"Africa/Addis_Ababa\",\n \"Africa/Algiers\",\n \"Africa/Asmera\",\n \"Africa/Bamako\",\n \"Africa/Bangui\",\n \"Africa/Banjul\",\n \"Africa/Bissau\",\n \"Africa/Blantyre\",\n \"Africa/Brazzaville\",\n \"Africa/Bujumbura\",\n \"Africa/Cairo\",\n \"Africa/Casablanca\",\n \"Africa/Ceuta\",\n \"Africa/Conakry\",\n \"Africa/Dakar\",\n \"Africa/Dar_es_Salaam\",\n \"Africa/Djibouti\",\n \"Africa/Douala\",\n \"Africa/El_Aaiun\",\n \"Africa/Freetown\",\n \"Africa/Gaborone\",\n \"Africa/Harare\",\n \"Africa/Johannesburg\",\n \"Africa/Juba\",\n \"Africa/Kampala\",\n \"Africa/Khartoum\",\n \"Africa/Kigali\",\n \"Africa/Kinshasa\",\n \"Africa/Lagos\",\n \"Africa/Libreville\",\n \"Africa/Lome\",\n \"Africa/Luanda\",\n \"Africa/Lubumbashi\",\n \"Africa/Lusaka\",\n \"Africa/Malabo\",\n \"Africa/Maputo\",\n \"Africa/Maseru\",\n \"Africa/Mbabane\",\n \"Africa/Mogadishu\",\n \"Africa/Monrovia\",\n \"Africa/Nairobi\",\n \"Africa/Ndjamena\",\n \"Africa/Niamey\",\n \"Africa/Nouakchott\",\n \"Africa/Ouagadougou\",\n \"Africa/Porto-Novo\",\n \"Africa/Sao_Tome\",\n \"Africa/Tripoli\",\n \"Africa/Tunis\",\n \"Africa/Windhoek\",\n \"America/Adak\",\n \"America/Anchorage\",\n \"America/Anguilla\",\n \"America/Antigua\",\n \"America/Araguaina\",\n \"America/Argentina/La_Rioja\",\n \"America/Argentina/Rio_Gallegos\",\n \"America/Argentina/Salta\",\n \"America/Argentina/San_Juan\",\n \"America/Argentina/San_Luis\",\n \"America/Argentina/Tucuman\",\n \"America/Argentina/Ushuaia\",\n \"America/Aruba\",\n \"America/Asuncion\",\n \"America/Bahia\",\n \"America/Bahia_Banderas\",\n \"America/Barbados\",\n \"America/Belem\",\n \"America/Belize\",\n \"America/Blanc-Sablon\",\n \"America/Boa_Vista\",\n \"America/Bogota\",\n \"America/Boise\",\n \"America/Buenos_Aires\",\n \"America/Cambridge_Bay\",\n \"America/Campo_Grande\",\n \"America/Cancun\",\n \"America/Caracas\",\n \"America/Catamarca\",\n \"America/Cayenne\",\n \"America/Cayman\",\n \"America/Chicago\",\n \"America/Chihuahua\",\n \"America/Ciudad_Juarez\",\n \"America/Coral_Harbour\",\n \"America/Cordoba\",\n \"America/Costa_Rica\",\n \"America/Creston\",\n \"America/Cuiaba\",\n \"America/Curacao\",\n \"America/Danmarkshavn\",\n \"America/Dawson\",\n \"America/Dawson_Creek\",\n \"America/Denver\",\n \"America/Detroit\",\n \"America/Dominica\",\n \"America/Edmonton\",\n \"America/Eirunepe\",\n \"America/El_Salvador\",\n \"America/Fort_Nelson\",\n \"America/Fortaleza\",\n \"America/Glace_Bay\",\n \"America/Godthab\",\n \"America/Goose_Bay\",\n \"America/Grand_Turk\",\n \"America/Grenada\",\n \"America/Guadeloupe\",\n \"America/Guatemala\",\n \"America/Guayaquil\",\n \"America/Guyana\",\n \"America/Halifax\",\n \"America/Havana\",\n \"America/Hermosillo\",\n \"America/Indiana/Knox\",\n \"America/Indiana/Marengo\",\n \"America/Indiana/Petersburg\",\n \"America/Indiana/Tell_City\",\n \"America/Indiana/Vevay\",\n \"America/Indiana/Vincennes\",\n \"America/Indiana/Winamac\",\n \"America/Indianapolis\",\n \"America/Inuvik\",\n \"America/Iqaluit\",\n \"America/Jamaica\",\n \"America/Jujuy\",\n \"America/Juneau\",\n \"America/Kentucky/Monticello\",\n \"America/Kralendijk\",\n \"America/La_Paz\",\n \"America/Lima\",\n \"America/Los_Angeles\",\n \"America/Louisville\",\n \"America/Lower_Princes\",\n \"America/Maceio\",\n \"America/Managua\",\n \"America/Manaus\",\n \"America/Marigot\",\n \"America/Martinique\",\n \"America/Matamoros\",\n \"America/Mazatlan\",\n \"America/Mendoza\",\n \"America/Menominee\",\n \"America/Merida\",\n \"America/Metlakatla\",\n \"America/Mexico_City\",\n \"America/Miquelon\",\n \"America/Moncton\",\n \"America/Monterrey\",\n \"America/Montevideo\",\n \"America/Montserrat\",\n \"America/Nassau\",\n \"America/New_York\",\n \"America/Nipigon\",\n \"America/Nome\",\n \"America/Noronha\",\n \"America/North_Dakota/Beulah\",\n \"America/North_Dakota/Center\",\n \"America/North_Dakota/New_Salem\",\n \"America/Ojinaga\",\n \"America/Panama\",\n \"America/Pangnirtung\",\n \"America/Paramaribo\",\n \"America/Phoenix\",\n \"America/Port-au-Prince\",\n \"America/Port_of_Spain\",\n \"America/Porto_Velho\",\n \"America/Puerto_Rico\",\n \"America/Punta_Arenas\",\n \"America/Rainy_River\",\n \"America/Rankin_Inlet\",\n \"America/Recife\",\n \"America/Regina\",\n \"America/Resolute\",\n \"America/Rio_Branco\",\n \"America/Santa_Isabel\",\n \"America/Santarem\",\n \"America/Santiago\",\n \"America/Santo_Domingo\",\n \"America/Sao_Paulo\",\n \"America/Scoresbysund\",\n \"America/Sitka\",\n \"America/St_Barthelemy\",\n \"America/St_Johns\",\n \"America/St_Kitts\",\n \"America/St_Lucia\",\n \"America/St_Thomas\",\n \"America/St_Vincent\",\n \"America/Swift_Current\",\n \"America/Tegucigalpa\",\n \"America/Thule\",\n \"America/Thunder_Bay\",\n \"America/Tijuana\",\n \"America/Toronto\",\n \"America/Tortola\",\n \"America/Vancouver\",\n \"America/Whitehorse\",\n \"America/Winnipeg\",\n \"America/Yakutat\",\n \"America/Yellowknife\",\n \"Antarctica/Casey\",\n \"Antarctica/Davis\",\n \"Antarctica/DumontDUrville\",\n \"Antarctica/Macquarie\",\n \"Antarctica/Mawson\",\n \"Antarctica/McMurdo\",\n \"Antarctica/Palmer\",\n \"Antarctica/Rothera\",\n \"Antarctica/Syowa\",\n \"Antarctica/Troll\",\n \"Antarctica/Vostok\",\n \"Arctic/Longyearbyen\",\n \"Asia/Aden\",\n \"Asia/Almaty\",\n \"Asia/Amman\",\n \"Asia/Anadyr\",\n \"Asia/Aqtau\",\n \"Asia/Aqtobe\",\n \"Asia/Ashgabat\",\n \"Asia/Atyrau\",\n \"Asia/Baghdad\",\n \"Asia/Bahrain\",\n \"Asia/Baku\",\n \"Asia/Bangkok\",\n \"Asia/Barnaul\",\n \"Asia/Beirut\",\n \"Asia/Bishkek\",\n \"Asia/Brunei\",\n \"Asia/Chita\",\n \"Asia/Choibalsan\",\n \"Asia/Colombo\",\n \"Asia/Damascus\",\n \"Asia/Dhaka\",\n \"Asia/Dili\",\n \"Asia/Dubai\",\n \"Asia/Dushanbe\",\n \"Asia/Famagusta\",\n \"Asia/Gaza\",\n \"Asia/Hebron\",\n \"Asia/Hong_Kong\",\n \"Asia/Hovd\",\n \"Asia/Irkutsk\",\n \"Asia/Jakarta\",\n \"Asia/Jayapura\",\n \"Asia/Jerusalem\",\n \"Asia/Kabul\",\n \"Asia/Kamchatka\",\n \"Asia/Karachi\",\n \"Asia/Katmandu\",\n \"Asia/Khandyga\",\n \"Asia/Kolkata\",\n \"Asia/Krasnoyarsk\",\n \"Asia/Kuala_Lumpur\",\n \"Asia/Kuching\",\n \"Asia/Kuwait\",\n \"Asia/Macau\",\n \"Asia/Magadan\",\n \"Asia/Makassar\",\n \"Asia/Manila\",\n \"Asia/Muscat\",\n \"Asia/Nicosia\",\n \"Asia/Novokuznetsk\",\n \"Asia/Novosibirsk\",\n \"Asia/Omsk\",\n \"Asia/Oral\",\n \"Asia/Phnom_Penh\",\n \"Asia/Pontianak\",\n \"Asia/Pyongyang\",\n \"Asia/Qatar\",\n \"Asia/Qostanay\",\n \"Asia/Qyzylorda\",\n \"Asia/Rangoon\",\n \"Asia/Riyadh\",\n \"Asia/Saigon\",\n \"Asia/Sakhalin\",\n \"Asia/Samarkand\",\n \"Asia/Seoul\",\n \"Asia/Shanghai\",\n \"Asia/Singapore\",\n \"Asia/Srednekolymsk\",\n \"Asia/Taipei\",\n \"Asia/Tashkent\",\n \"Asia/Tbilisi\",\n \"Asia/Tehran\",\n \"Asia/Thimphu\",\n \"Asia/Tokyo\",\n \"Asia/Tomsk\",\n \"Asia/Ulaanbaatar\",\n \"Asia/Urumqi\",\n \"Asia/Ust-Nera\",\n \"Asia/Vientiane\",\n \"Asia/Vladivostok\",\n \"Asia/Yakutsk\",\n \"Asia/Yekaterinburg\",\n \"Asia/Yerevan\",\n \"Atlantic/Azores\",\n \"Atlantic/Bermuda\",\n \"Atlantic/Canary\",\n \"Atlantic/Cape_Verde\",\n \"Atlantic/Faeroe\",\n \"Atlantic/Madeira\",\n \"Atlantic/Reykjavik\",\n \"Atlantic/South_Georgia\",\n \"Atlantic/St_Helena\",\n \"Atlantic/Stanley\",\n \"Australia/Adelaide\",\n \"Australia/Brisbane\",\n \"Australia/Broken_Hill\",\n \"Australia/Currie\",\n \"Australia/Darwin\",\n \"Australia/Eucla\",\n \"Australia/Hobart\",\n \"Australia/Lindeman\",\n \"Australia/Lord_Howe\",\n \"Australia/Melbourne\",\n \"Australia/Perth\",\n \"Australia/Sydney\",\n \"Europe/Amsterdam\",\n \"Europe/Andorra\",\n \"Europe/Astrakhan\",\n \"Europe/Athens\",\n \"Europe/Belgrade\",\n \"Europe/Berlin\",\n \"Europe/Bratislava\",\n \"Europe/Brussels\",\n \"Europe/Bucharest\",\n \"Europe/Budapest\",\n \"Europe/Busingen\",\n \"Europe/Chisinau\",\n \"Europe/Copenhagen\",\n \"Europe/Dublin\",\n \"Europe/Gibraltar\",\n \"Europe/Guernsey\",\n \"Europe/Helsinki\",\n \"Europe/Isle_of_Man\",\n \"Europe/Istanbul\",\n \"Europe/Jersey\",\n \"Europe/Kaliningrad\",\n \"Europe/Kiev\",\n \"Europe/Kirov\",\n \"Europe/Lisbon\",\n \"Europe/Ljubljana\",\n \"Europe/London\",\n \"Europe/Luxembourg\",\n \"Europe/Madrid\",\n \"Europe/Malta\",\n \"Europe/Mariehamn\",\n \"Europe/Minsk\",\n \"Europe/Monaco\",\n \"Europe/Moscow\",\n \"Europe/Oslo\",\n \"Europe/Paris\",\n \"Europe/Podgorica\",\n \"Europe/Prague\",\n \"Europe/Riga\",\n \"Europe/Rome\",\n \"Europe/Samara\",\n \"Europe/San_Marino\",\n \"Europe/Sarajevo\",\n \"Europe/Saratov\",\n \"Europe/Simferopol\",\n \"Europe/Skopje\",\n \"Europe/Sofia\",\n \"Europe/Stockholm\",\n \"Europe/Tallinn\",\n \"Europe/Tirane\",\n \"Europe/Ulyanovsk\",\n \"Europe/Uzhgorod\",\n \"Europe/Vaduz\",\n \"Europe/Vatican\",\n \"Europe/Vienna\",\n \"Europe/Vilnius\",\n \"Europe/Volgograd\",\n \"Europe/Warsaw\",\n \"Europe/Zagreb\",\n \"Europe/Zaporozhye\",\n \"Europe/Zurich\",\n \"Indian/Antananarivo\",\n \"Indian/Chagos\",\n \"Indian/Christmas\",\n \"Indian/Cocos\",\n \"Indian/Comoro\",\n \"Indian/Kerguelen\",\n \"Indian/Mahe\",\n \"Indian/Maldives\",\n \"Indian/Mauritius\",\n \"Indian/Mayotte\",\n \"Indian/Reunion\",\n \"Pacific/Apia\",\n \"Pacific/Auckland\",\n \"Pacific/Bougainville\",\n \"Pacific/Chatham\",\n \"Pacific/Easter\",\n \"Pacific/Efate\",\n \"Pacific/Enderbury\",\n \"Pacific/Fakaofo\",\n \"Pacific/Fiji\",\n \"Pacific/Funafuti\",\n \"Pacific/Galapagos\",\n \"Pacific/Gambier\",\n \"Pacific/Guadalcanal\",\n \"Pacific/Guam\",\n \"Pacific/Honolulu\",\n \"Pacific/Johnston\",\n \"Pacific/Kiritimati\",\n \"Pacific/Kosrae\",\n \"Pacific/Kwajalein\",\n \"Pacific/Majuro\",\n \"Pacific/Marquesas\",\n \"Pacific/Midway\",\n \"Pacific/Nauru\",\n \"Pacific/Niue\",\n \"Pacific/Norfolk\",\n \"Pacific/Noumea\",\n \"Pacific/Pago_Pago\",\n \"Pacific/Palau\",\n \"Pacific/Pitcairn\",\n \"Pacific/Ponape\",\n \"Pacific/Port_Moresby\",\n \"Pacific/Rarotonga\",\n \"Pacific/Saipan\",\n \"Pacific/Tahiti\",\n \"Pacific/Tarawa\",\n \"Pacific/Tongatapu\",\n \"Pacific/Truk\",\n \"Pacific/Wake\",\n \"Pacific/Wallis\",\n];\n\nexport const getCurrentTimeForUser = (userTimezone: string) => {\n // Create a new Date object for the current time\n const now = new Date();\n\n // Use toLocaleString method to get the time in the user's timezone\n\n const timeString = now.toLocaleString(\"en-US\", {\n hour: \"numeric\",\n minute: \"numeric\",\n timeZone: userTimezone,\n });\n\n return timeString;\n};\n","import { StructUser } from \"@/app/types/Thread.type\";\nimport Fuse from \"fuse.js\";\nimport { StructOrganisation } from \"@/app/types/Organisation.type\";\n\nexport const getAnonymousUser = (\n organisation?: StructOrganisation,\n): StructUser => ({\n id: \"none\",\n xid: \"none\",\n display_name: \"Anonymous\",\n real_name: \"Anonymous\",\n email_id: \"no email\",\n avatar_id: \"none\",\n anon: \"Anonymous\",\n created_at: 0,\n updated_at: 0,\n org_id: organisation ? organisation.id : \"none\",\n channel_ids: [],\n bits: {\n user_admin: false,\n user_owner: false,\n },\n});\n\nconst fuseOptions = {\n keys: [\"real_name\", \"display_name\"],\n ignoreLocation: true,\n threshold: 0.1,\n};\n\nexport const getFuseUsersInstance = (users: StructUser[]) => {\n const fuseUsersInstance = new Fuse(users, fuseOptions);\n return fuseUsersInstance;\n};\n\nexport const getFirstUsers = (\n usersById: Record,\n numberOfUsers: number,\n): StructUser[] => {\n const result: StructUser[] = [];\n let count = 0;\n\n for (let key in usersById) {\n if (usersById.hasOwnProperty(key)) {\n result.push(usersById[key]);\n count++;\n if (count === numberOfUsers) break;\n }\n }\n\n return result;\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"mentionItem\":\"MentionItem_mentionItem__ijKOn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"mentionList\":\"MentionList_mentionList__0gla6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"bulletList\":\"BulletList_bulletList__UXjok\",\"compactBulletList\":\"BulletList_compactBulletList__dvRnZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"codeBlockContainer\":\"CodeBlock_codeBlockContainer__yMOol\",\"header\":\"CodeBlock_header__vSWaq\",\"codeBlock\":\"CodeBlock_codeBlock__sHUES\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"orderedList\":\"OrderedList_orderedList__j0njx\",\"compactOrderedList\":\"OrderedList_compactOrderedList__Q9WFN\"};","// extracted by mini-css-extract-plugin"],"names":["variantMap","link","icon","Link2Icon","text","code","CodeIcon","quote","attachment","FileIcon","__webpack_exports__","Z","variant","param","Icon","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsxs","Flex","gap","align","style","whiteSpace","height","backgroundColor","color","borderRadius","display","padding","borderLeft","undefined","jsx","Text","size","Boolean","typeIconMap","user","PersonIcon","channel","ChannelGroupPeopleIcon","tag","HashtagIcon","thread","FeedPreviewSearchIcon","getFormattedCount","count","MentionItem","isActive","title","subTitle","type","onClick","onMouseEnter","showCount","ref","useRef","useEffect","current","scrollIntoView","block","jsx_runtime","div","className","styles","justify","width","minWidth","flex","weight","Fragment","Separator","orientation","overflow","textOverflow","Badge","MentionList","forwardRef","clientRect","command","items","query","canCreateTags","showSearch","editor","range","isChatBoxEditor","searchThreadIndex","length","isCommandMenuVisible","useAppStore","state","setIsCommandMenuVisible","rangeRef","referenceEl","useMemo","getBoundingClientRect","rect","top","left","bottom","right","handleCommand","selectedItem","index","id","label","display_name","name","handleCreateTagCommand","handleEmbedThread","commands","deleteRange","focus","events","on","EMBED_THREAD_FROM_CMDK","off","hoverIndex","setHoverIndex","useState","useImperativeHandle","onKeyDown","event","view","key","includes","preventDefault","stopPropagation","Math","max","prev","min","tags","el","setEl","popperStyles","attributes","usePopper","placement","users","filter","item","channels","calcIndex","isChannel","createPortal","Theme","accentColor","grayColor","radius","popper","visibility","grow","direction","background","map","nativeEvent","stopImmediatePropagation","num_threads","my","real_name","document","body","displayName","icons_PeopleIcon","svg","viewBox","fill","xmlns","g","path","d","ChatElements_ChannelHoverCard","onViewChannel","memberCount","threadCount","child","HoverCard","openDelay","closeDelay","MentionBadge","p","boxShadow","PeopleIcon","ChatBubbleIcon","Button","backgroundColorMap","self","hashtag","textColorMap","prefixMap","isHoverable","other","cursor","onViewTag","children","realName","avatarId","isOnline","onMessageUser","timeZone","Avatar","src","getAvatarImageURL","fallback","DotFilledIcon","ClockIcon","getCurrentTimeForUser","fillRule","clipRule","fillOpacity","TRIGGER_FEED_FILTERS_MODAL","FORCE_REFRESH_FEED","REFRESH_CHAT_TIMESTAMP","WS_PING_RECEIVED","REMOVE_FROM_FEED_KEEP_THREAD_OPEN","TRIGGER_NOTIFICATION","REALTIME_RECONNECTION_TRIGGERED","NodeType","or","parsers","position","rootParser","i","match","regexp","pattern","callback","parseText","substring","explicit","prevChar","charAt","parser","topOfLine","parseBold","_text","matchedText","content","Bold","source","parseItalic","Italic","parseStrike","Strike","parseQuoteLine","gtSymbol","repeatedGt","replace","RegExp","concat","Quote","isNextLineStartsWithGt","parseQuote","oneOrMore","andThen","rec","nextPosition","ret","lastPosition","a","quotes","flat","join","parseCodeBlockWithLang","lang","CodeBlock","language","parseInlineCode","InlineCode","parseLineBreak","LineBreak","parseBulletList","split","line","BulletListItem","BulletList","parseOrderedList","potentialListItems","actualListItems","isStartOfLine","push","indexOf","OrderedListItem","OrderedList","parseCombined","urlRegex","test","URL","url","startsWith","slice","UserMention","ChannelMention","Hashtag","Unknown","textBuffer","flush","l","node","mod","Root","message","ChatElements_CodeBlock","memoizedHighlighter","textLength","Highlighter","PrismHighlighter","SyntaxHighlighter","nightOwlPrism","nightOwlHLJS","codeBlock","wrapLongLines","wrapLines","customStyle","fontSize","lineHeight","margin","overflowX","navigator","clipboard","writeText","CopyIcon","ChatElements_OrderedList","isCompact","ol","ChatElements_BulletList","ul","referenceTypeMap","EntityIDMap","User","Channel","Thread","getReferenceType","getReferenceDetails","getIsOnlyEmojis","BlockType","RichText","chatBlock","elements","RichTextSection","result","every","element","Emoji","dynamic","__webpack_require__","e","then","bind","CustomEmoji","makeGetComponentsFromChatBlocks","authenticatedUserId","onlineUserIds","onOpenThread","isOnlyEmojis","getComponentsFromSlackTree","blocks","_ref","_ref1","Array","isArray","console","trace","uuidv4","Code","bold","fontStyle","italic","textDecoration","strike","RichTextPreformatted","Link","target","href","RichTextQuote","Blockquote","Reference","reference","entity","isAuthenticatedUser","UserHoverCard","avatar_id","time_zone","span","ChannelHoverCard","num_users","TagHoverCard","px","mt","fontWeight","CaretRightIcon","RichTextList","ordered","li","unicode","JSON","stringify","br","error","makeGetTipTapEditorStateFromSlackTree","getEditorStateFromSlackParser","attrs","makeGetCompactComponentsFromChatBlocks","getCompactComponentsFromChatBlocks","FeedChatPill","useParser","sessionUserId","session","chatBoxCommands","setSearchQuery","navigateToPath","useShallowNavigation","handleMessageUser","userId","userName","clearContent","insertContent","insertMention","handleViewChannel","channelId","handleViewHashtag","handleOpenThread","threadId","getEditorState","getComponentsFromChatBlocks","getEditorStateFromChatText","slackMessageParser","getCurrentPathSegment","window","location","pathname","currentPath","setCurrentPath","handlePopState","addEventListener","removeEventListener","getCurrentPath","Promise","resolve","oldURL","oldPath","updatedURL","newPath","history","pushState","replaceState","dispatchEvent","Event","MENTIONS_ENDPOINT","STRUCT_API_VERSION","getMentions","hideDeleted","ids","limit","ENDPOINT","structAPIFetchClient","method","response","ok","json","replaceMentionedUserAndChannelIdsWithNames","usersById","channelsById","prefix","removeMentionsAndTags","trim","extractChannelIdsFromMessage","regex","exec","extractUserIdsFromMessage","extractTagsFromMessage","capitalize","s","toUpperCase","processSearchQuery","channelIds","userIds","searchQuery","units","formatTimeAgo","dateTime","now","DateTime","diff","Object","entries","seconds","condition","val","minutes","hours","days","weeks","months","years","reduce","acc","unit","rule","value","floor","as","formatTimeAgoForDateGroup","fromFormat","toFormat","dt","shiftTo","timezones","Date","timeString","toLocaleString","hour","minute","userTimezone","getAnonymousUser","xid","email_id","anon","created_at","updated_at","org_id","organisation","channel_ids","bits","user_admin","user_owner","fuseOptions","keys","ignoreLocation","threshold","getFuseUsersInstance","fuseUsersInstance","Fuse","module","exports"],"sourceRoot":""}