{"version":3,"file":"static/chunks/166-0754991e7280bf76.js","mappings":"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","sources":["webpack://_N_E/./src/app/components/ChatBox/BasicEditor.tsx","webpack://_N_E/./src/app/components/Toggle.tsx","webpack://_N_E/./src/app/components/icons/CrossSmallIcon.tsx","webpack://_N_E/./src/app/hooks/useAllFilters.ts","webpack://_N_E/./src/app/hooks/useDebounce.ts","webpack://_N_E/./src/app/hooks/useDesktopMode.ts","webpack://_N_E/./src/app/hooks/useFeeds.ts","webpack://_N_E/./src/app/services/feeds.ts","webpack://_N_E/./src/app/utils/localStorage.ts","webpack://_N_E/./src/app/components/ChatBox/BasicEditor.module.scss","webpack://_N_E/./src/app/components/Toggle.module.scss","webpack://_N_E/"],"sourcesContent":["import { useEffect, useMemo } from \"react\";\nimport styles from \"@/app/components/ChatBox/BasicEditor.module.scss\";\nimport Document from \"@tiptap/extension-document\";\nimport { HardBreak } from \"@tiptap/extension-hard-break\";\nimport { History } from \"@tiptap/extension-history\";\nimport Mention from \"@tiptap/extension-mention\";\nimport Paragraph from \"@tiptap/extension-paragraph\";\nimport Placeholder from \"@tiptap/extension-placeholder\";\nimport Text from \"@tiptap/extension-text\";\nimport { Editor, EditorContent, ReactRenderer, useEditor } from \"@tiptap/react\";\nimport { MentionList } from \"../MentionList\";\n\nimport Link from \"@tiptap/extension-link\";\n\nimport { PluginKey } from \"prosemirror-state\";\nimport { globalStore, useAppStore } from \"@/app/store\";\nimport { DocNode } from \"@/app/store/ChatBox.store\";\nimport { useParser } from \"@/app/hooks/useParser\";\nimport { getMentions } from \"@/app/services/mentions\";\nimport useDebounce from \"@/app/hooks/useDebounce\";\nimport { StructUser } from \"@/app/types/Thread.type\";\nimport { StructChannel } from \"@/app/types/Channel.type\";\n\nenum ExtendedPlugins {\n Link = \"link\",\n}\n\ninterface BasicEditorProps {\n onChange: (content: string) => void;\n placeholder?: string;\n value?: string | DocNode;\n onEnter?: (editorOutput: string) => void;\n extendedPlugins?: ExtendedPlugins[];\n canCreateTags?: boolean;\n includedMentions?: string[];\n}\n\nconst extractTextWithNewlines = (state: Editor[\"state\"]) => {\n let textWithNewlines = \"\";\n state.doc.forEach((block) => {\n block.forEach((node) => {\n if (node.type.name === \"text\") {\n const linkMark = node.marks.find((mark) => mark.type.name === \"link\");\n textWithNewlines += linkMark ? `<${linkMark.attrs.href}>` : node.text;\n }\n if (node.type.name === \"hardBreak\") {\n textWithNewlines += \"\\n\";\n }\n if (node.type.name === \"mention\") {\n const mentionId = node.attrs.id;\n textWithNewlines += `\\<@${mentionId}\\>`;\n }\n if (node.type.name === \"tag\") {\n const mentionId = node.attrs.id;\n textWithNewlines += `<#${mentionId}>`;\n }\n });\n });\n\n return textWithNewlines;\n};\n\nconst USERS_SEARCH_RESULT_LIMIT = 5;\nconst CHANNELS_SEARCH_RESULT_LIMIT = 5;\n\nconst BasicEditor = ({\n onChange,\n placeholder,\n onEnter,\n value = \"\",\n extendedPlugins = [],\n canCreateTags = true,\n includedMentions = [\"channel\", \"user\", \"tag\"],\n}: BasicEditorProps) => {\n const sessionUserId = useAppStore((state) => state.session?.user?.id);\n const tags = useAppStore((state) => state.tags);\n\n const { getEditorStateFromChatText } = useParser();\n const content = useMemo(() => {\n if (typeof value === \"string\") {\n return getEditorStateFromChatText(value);\n }\n return value;\n }, [value]);\n\n const editor = useEditor(\n {\n content,\n editorProps: {\n handlePaste: (view, event) => {\n const { clipboardData } = event;\n\n if (!clipboardData) {\n return false;\n }\n\n const pastedText = clipboardData.getData(\"text/plain\");\n const containsNewLines = pastedText.includes(\"\\n\");\n\n if (containsNewLines) {\n event.preventDefault();\n\n const createTextFragment = (textPart: string) => {\n if (!textPart) {\n return [];\n }\n\n const textNode = view.state.schema.text(textPart);\n const breakNode = view.state.schema.node(\"hardBreak\");\n\n return [textNode, breakNode];\n };\n\n const textFragments = pastedText\n .split(\"\\n\")\n .flatMap(createTextFragment);\n\n const endsWithHardBreak =\n textFragments.length &&\n textFragments[textFragments.length - 1].type.name === \"hardBreak\";\n\n if (endsWithHardBreak) {\n textFragments.pop();\n }\n\n const hasFragmentsToInsert = textFragments.length > 0;\n if (hasFragmentsToInsert) {\n const transaction = view.state.tr.insert(\n view.state.selection.from,\n textFragments,\n );\n view.dispatch(transaction);\n return true;\n }\n }\n\n return false;\n },\n\n attributes: { class: \"editor\" },\n handleKeyDown: (props, event) => {\n const mentionIsActive = props.state.plugins.some(\n (plugin) =>\n // @ts-ignore\n plugin.key.startsWith(\"mention$\") &&\n plugin.getState(props.state).active,\n );\n\n if (mentionIsActive) {\n return;\n }\n\n if (event.key === \"Enter\") {\n if (event.shiftKey) {\n return;\n }\n const editorOutput = extractTextWithNewlines(props.state);\n if (!editorOutput.trim()) {\n return true;\n }\n onEnter && onEnter(editorOutput);\n return true;\n }\n },\n },\n autofocus: true,\n extensions: [\n ...(extendedPlugins.includes(ExtendedPlugins.Link)\n ? [Link.configure({ openOnClick: false })]\n : []),\n Placeholder.configure({\n placeholder,\n includeChildren: true,\n }),\n Document,\n Paragraph.configure({\n HTMLAttributes: { class: \"paragraph\" },\n }),\n Text,\n HardBreak,\n History,\n ...(includedMentions.includes(\"channel\") ||\n includedMentions.includes(\"user\")\n ? [\n Mention.extend({\n name: \"mention\",\n }).configure({\n HTMLAttributes: { class: \"mentionNode\" },\n suggestion: {\n char: \"@\",\n pluginKey: new PluginKey(\"mention\"),\n allowSpaces: false,\n allowedPrefixes: [\"-\", \" \"],\n items: ({ query }) => {\n return new Promise(async (resolve) => {\n const authenticatedUserId = sessionUserId;\n if (!authenticatedUserId) return resolve([]);\n\n const mentions = await getMentions(query);\n\n const users: StructUser[] =\n mentions?.users?.slice(0, USERS_SEARCH_RESULT_LIMIT) ??\n [];\n const channels: StructChannel[] =\n mentions?.channels?.slice(\n 0,\n CHANNELS_SEARCH_RESULT_LIMIT,\n ) ?? [];\n includedMentions.includes;\n\n resolve([\n ...(includedMentions.includes(\"channel\")\n ? channels.map((c) => ({ ...c, type: \"channel\" }))\n : []),\n ...(includedMentions.includes(\"user\")\n ? users.map((u) => ({ ...u, type: \"user\" }))\n : []),\n ]);\n });\n },\n render: () => {\n let reactRenderer: ReactRenderer | null;\n\n return {\n onStart: (props) => {\n reactRenderer = new ReactRenderer(MentionList, {\n props: {\n ...props,\n type: \"mention\",\n isChatBoxEditor: false,\n },\n editor: props.editor,\n });\n },\n\n onUpdate(props) {\n reactRenderer?.updateProps(props);\n },\n\n onKeyDown(props) {\n if (props.event.key === \"Escape\") {\n reactRenderer?.destroy();\n return true;\n }\n\n return (reactRenderer?.ref as any)?.onKeyDown(props);\n },\n\n onExit() {\n reactRenderer?.destroy();\n reactRenderer = null;\n },\n };\n },\n },\n }),\n ]\n : []),\n ...(includedMentions.includes(\"tag\")\n ? [\n Mention.extend({\n name: \"tag\",\n }).configure({\n HTMLAttributes: { class: \"tagNode\" },\n suggestion: {\n char: \"#\",\n pluginKey: new PluginKey(\"mention\"),\n allowSpaces: false,\n allowedPrefixes: [\"-\", \" \"],\n items: async ({ query }) => {\n const filteredTags = tags\n .filter((tag) =>\n tag.tag.toLowerCase().startsWith(query.toLowerCase()),\n )\n .slice(0, 5);\n\n return filteredTags.map((tag) => ({ ...tag, type: \"tag\" }));\n },\n render: () => {\n let reactRenderer: ReactRenderer | null;\n\n return {\n onStart: (props) => {\n reactRenderer = new ReactRenderer(MentionList, {\n props: {\n ...props,\n type: \"tag\",\n canCreateTags,\n isChatBoxEditor: false,\n },\n editor: props.editor,\n });\n },\n\n onUpdate(props) {\n reactRenderer?.updateProps(props);\n },\n\n onKeyDown(props) {\n if (props.event.key === \"Escape\") {\n reactRenderer?.destroy();\n reactRenderer = null;\n return true;\n }\n\n return (reactRenderer?.ref as any)?.onKeyDown(props);\n },\n\n onExit() {\n reactRenderer?.destroy();\n reactRenderer = null;\n return true;\n },\n };\n },\n },\n }),\n ]\n : []),\n ],\n },\n [],\n );\n\n useEffect(() => {\n if (editor) {\n editor.commands.focus(\"end\");\n editor.on(\"focus\", () => {\n editor.commands.focus(\"end\");\n });\n }\n }, [editor]);\n\n useEffect(() => {\n if (editor) {\n editor.on(\"update\", () => {\n const newContent = extractTextWithNewlines(editor.state);\n onChange(newContent);\n });\n }\n\n return () => {\n if (editor) {\n editor.off(\"update\");\n editor.off(\"focus\");\n editor.off(\"blur\");\n }\n };\n }, [editor, onChange]);\n\n useEffect(() => {\n if (!value) {\n editor?.commands.clearContent();\n }\n }, [value]);\n\n if (!editor) {\n return
;\n }\n\n return ;\n};\n\nexport default BasicEditor;\n\nBasicEditor.displayName = \"BasicEditor\";\n","import React, { ReactNode } from \"react\";\nimport styles from \"./Toggle.module.scss\";\nimport { Tooltip } from \"@radix-ui/themes\";\n\ntype ToggleProps = {\n selectedIndex: number;\n onCheckedChange: (checked: number) => void;\n items: {\n description: string;\n icon: ReactNode;\n isDisabled?: boolean;\n }[];\n};\n\nconst Toggle: React.FC = ({\n selectedIndex,\n onCheckedChange,\n items,\n}) => {\n const transformPercent =\n selectedIndex === 0 ? \"-1px\" : `${selectedIndex * 100 - 5}%`;\n\n return (\n
\n \n {items.map(({ icon, description, isDisabled = false }, index) => (\n \n !isDisabled && onCheckedChange(index)}\n style={{\n cursor: isDisabled ? \"not-allowed\" : \"pointer\",\n opacity: isDisabled ? 0.5 : 1,\n }}\n className={`${styles.icon} ${\n selectedIndex === index ? styles.active : \"\"\n }`}\n >\n {icon}\n \n \n ))}\n
\n );\n};\n\nexport default Toggle;\n","import { IconType } from \"@/app/components/icons/icon.type\";\n\nexport const CrossSmallIcon = ({ style, className }: IconType) => (\n \n \n \n \n);\n","import { useAppStore } from \"../store\";\nimport { SortingOption } from \"../types/Sorting.type\";\n\nexport const useAllFilters = () => {\n const channelFilters = useAppStore((state) => state.filters.channels);\n const tagFilters = useAppStore((state) => state.filters.tags);\n const userFilters = useAppStore((state) => state.filters.users);\n const searchQuery = useAppStore((state) => state.searchQuery);\n const sorting = useAppStore((state) => state.sorting);\n const clearFilters = useAppStore((state) => state.clearFilters);\n const clearSearchQuery = useAppStore((state) => state.clearSearchQuery);\n const clearSorting = useAppStore((state) => state.clearSorting);\n const isSortingOptionDefault = sorting === SortingOption.Relevance;\n\n const removeAllFilters = () => {\n clearFilters();\n clearSearchQuery();\n clearSorting();\n };\n\n return {\n areFiltersApplied:\n Boolean(searchQuery) ||\n !isSortingOptionDefault ||\n channelFilters?.length > 0 ||\n tagFilters?.length > 0 ||\n userFilters?.length > 0,\n\n removeAllFilters,\n };\n};\n","import React, { useRef } from \"react\";\nimport { debounce } from \"lodash\";\n\ninterface Props {\n (func: any): any;\n}\n\nconst useDebounce = (func: Props, time = 1000) => {\n const debouncedFunc = useRef(debounce(func, time)).current;\n\n return debouncedFunc;\n};\n\nexport default useDebounce;\n","import { useState, useEffect } from \"react\";\nimport { isWindow } from \"../utils/helper\";\n\nconst DESKTOP_WIDTH = 768;\n\nconst useDesktopMode = () => {\n const [width, setWidth] = useState(\n isWindow ? window.innerWidth : DESKTOP_WIDTH,\n );\n\n const handleWindowSizeChange = () => {\n setWidth(window.innerWidth);\n };\n\n useEffect(() => {\n window.addEventListener(\"resize\", handleWindowSizeChange);\n return () => {\n window.removeEventListener(\"resize\", handleWindowSizeChange);\n };\n }, []);\n\n return { isDesktop: width >= DESKTOP_WIDTH };\n};\n\nexport default useDesktopMode;\n","import { useCallback } from \"react\";\nimport { FeedThreadResponse } from \"@/app/types/Thread.type\";\nimport {\n getFeedAPI,\n getFeedsAPI,\n postFeedAPI,\n putFeedAPI,\n} from \"@/app/services/feeds\";\nimport { putFeedReadAPI } from \"../services/chats\";\nimport { FilterOptions, searchFeedAPI } from \"@/app/services/threads\";\nimport { SortingOption } from \"@/app/types/Sorting.type\";\nimport { globalStore, useAppStore } from \"../store\";\nimport {\n CreateFeedPayload,\n StructFeed,\n UpdateFeedPayload,\n} from \"@/app/types/Feed.type\";\nimport { DEFAULT_FEED_ID, DEFAULT_SEARCH_FEED_ID } from \"../store/App.store\";\n\nconst useFeeds = () => {\n const organisation = useAppStore((state) => state.organisation);\n const isUnreadFeedFilterActive = useAppStore(\n (state) => state.isUnreadFeedFilterActive,\n );\n\n const feedTimeRange = useAppStore((state) => state.feedTimeRange);\n\n const currentFeedId = useAppStore((state) => state.currentFeedId);\n\n const setThreadCountByFeedId = useAppStore(\n (state) => state.setThreadCountByFeedId,\n );\n\n const setFormattedSearchQuery = useAppStore(\n (state) => state.setFormattedSearchQuery,\n );\n\n const organisationId = organisation?.id;\n\n const fetchFeed = useCallback(\n ({\n page,\n per_page,\n feedId,\n }: {\n page?: number;\n per_page?: number;\n feedId?: string;\n }): Promise =>\n getFeedAPI({\n page,\n per_page,\n feedId,\n isUnread: globalStore.getState().isUnreadFeedFilterActive,\n from: feedTimeRange ? Date.now() - feedTimeRange : undefined,\n to: feedTimeRange ? Date.now() : undefined,\n })\n .then((response) => {\n setThreadCountByFeedId(\n feedId || DEFAULT_FEED_ID,\n response.num_threads,\n );\n return response.data || [];\n })\n .catch((error) => {\n console.log(error);\n }),\n [organisationId, isUnreadFeedFilterActive, feedTimeRange],\n );\n\n const fetchFeeds = useCallback(\n (): Promise =>\n getFeedsAPI().catch((error) => {\n console.log(error);\n }),\n [organisationId],\n );\n\n const searchFeed = useCallback(\n ({\n q,\n page,\n filterBy,\n sortBy,\n from,\n to,\n }: {\n page?: number;\n q?: string;\n filterBy?: FilterOptions;\n sortBy?: SortingOption;\n from?: number;\n to?: number;\n }): Promise =>\n searchFeedAPI({\n q,\n page,\n filterBy,\n sortBy,\n from,\n to,\n })\n .then((response) => {\n setThreadCountByFeedId(\n DEFAULT_SEARCH_FEED_ID,\n response.num_threads ?? 100,\n );\n if (response.q_plain) {\n setFormattedSearchQuery(response.q_plain);\n }\n\n return response.data || [];\n })\n .catch((error) => {\n console.log(error);\n }),\n [organisationId],\n );\n\n const createFeed = useCallback(\n (payload: CreateFeedPayload): Promise =>\n postFeedAPI({\n payload,\n }).catch((error) => {\n console.log(error);\n }),\n [organisationId],\n );\n\n const updateFeed = useCallback(\n (payload: UpdateFeedPayload): Promise =>\n putFeedAPI({\n payload,\n }).catch((error) => {\n console.log(error);\n }),\n [organisationId],\n );\n\n const deleteFeed = useCallback(\n ({ id }: { id: StructFeed[\"id\"] }): Promise =>\n putFeedAPI({\n payload: {\n id,\n bits: {\n deleted: true,\n },\n },\n }).catch((error) => {\n console.log(error);\n }),\n [organisationId],\n );\n\n const markFeedAsRead = useCallback(\n (): Promise =>\n putFeedReadAPI({ feedId: currentFeedId }).catch((error) => {\n console.log(error);\n }),\n [organisationId, currentFeedId],\n );\n\n return {\n fetchFeed,\n fetchFeeds,\n searchFeed,\n createFeed,\n updateFeed,\n deleteFeed,\n markFeedAsRead,\n };\n};\n\nexport default useFeeds;\n","import { structAPIFetchClient } from \"@/app/services/client\";\nimport { CreateFeedPayload, StructFeed } from \"@/app/types/Feed.type\";\nimport { StructFeedThreadResponse } from \"@/app/types/Thread.type\";\nimport { STRUCT_API_VERSION } from \"@/app/constants\";\n\nconst FEED_ENDPOINT = `/${STRUCT_API_VERSION}/feed`;\nconst FEEDS_ENDPOINT = `/${STRUCT_API_VERSION}/feeds`;\n\nexport const getFeedAPI = async ({\n page,\n per_page,\n feedId,\n isUnread,\n from,\n to,\n}: {\n page?: number;\n per_page?: number;\n feedId?: string;\n isUnread?: boolean;\n from?: number;\n to?: number;\n}): Promise => {\n const queryParams = new URLSearchParams();\n if (page !== undefined) queryParams.set(\"page\", page.toString());\n if (per_page !== undefined) queryParams.set(\"per_page\", per_page.toString());\n if (isUnread !== undefined) queryParams.set(\"unread\", isUnread.toString());\n if (from !== undefined)\n queryParams.set(\"from\", Math.round(from / 1000).toString());\n if (to !== undefined) queryParams.set(\"to\", Math.round(to / 1000).toString());\n\n const endpoint = feedId ? `${FEED_ENDPOINT}/${feedId}` : FEED_ENDPOINT;\n\n const response = await structAPIFetchClient(\n `${endpoint}?${queryParams.toString()}`,\n {\n method: \"GET\",\n },\n );\n\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n\n const responseData = await response.json();\n return (responseData || { data: [] }) as StructFeedThreadResponse;\n};\n\nexport const getFeedsAPI = async (): Promise => {\n const response = await structAPIFetchClient(FEEDS_ENDPOINT, {\n method: \"GET\",\n });\n if (response.status === 401) {\n return [];\n }\n\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n\n const { data } = await response.json();\n return data;\n};\n\nexport const putFeedAPI = async ({\n payload,\n}: {\n payload: Partial;\n}): Promise => {\n const endpoint = `${FEED_ENDPOINT}`;\n const response = await structAPIFetchClient(endpoint, {\n method: \"PUT\",\n // @ts-ignore\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(payload),\n });\n\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n\n const { data } = await response.json();\n return data;\n};\n\nexport const postFeedAPI = async ({\n payload,\n}: {\n payload: CreateFeedPayload;\n}): Promise => {\n const endpoint = `${FEED_ENDPOINT}`;\n const response = await structAPIFetchClient(endpoint, {\n method: \"POST\",\n // @ts-ignore\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(payload),\n });\n\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n\n const { data } = await response.json();\n return data;\n};\n","const defaultState = {\n feedMode: 0,\n isNotificationEnabled: true,\n};\n\nexport const getLocalStorageState = () => {\n const state =\n typeof window !== \"undefined\"\n ? window.localStorage?.getItem(\"struct-store\") ??\n JSON.stringify(defaultState)\n : \"{}\";\n return JSON.parse(state);\n};\n\n// TODO: type the state\nexport const setLocalStorageState = (updatedState: any) => {\n const state = getLocalStorageState();\n const newState = { ...state, ...updatedState };\n typeof window !== \"undefined\" &&\n window.localStorage.setItem(\"struct-store\", JSON.stringify(newState));\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"basicEditor\":\"BasicEditor_basicEditor__s7e0L\",\"basicEditorSkeleton\":\"BasicEditor_basicEditorSkeleton__bq_b5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"toggleContainer\":\"Toggle_toggleContainer__bhJ83\",\"floatingBox\":\"Toggle_floatingBox__S1J9B\",\"icon\":\"Toggle_icon__UciGl\",\"active\":\"Toggle_active__XfCEc\"};"],"names":["ExtendedPlugins","extractTextWithNewlines","textWithNewlines","state","doc","forEach","block","node","type","name","linkMark","marks","find","mark","concat","attrs","href","text","mentionId","id","BasicEditor","onChange","placeholder","onEnter","value","extendedPlugins","canCreateTags","includedMentions","param","sessionUserId","useAppStore","session","user","tags","getEditorStateFromChatText","useParser","content","useMemo","editor","useEditor","editorProps","handlePaste","view","event","clipboardData","pastedText","getData","containsNewLines","includes","preventDefault","textFragments","split","flatMap","textPart","textNode","schema","breakNode","endsWithHardBreak","length","pop","hasFragmentsToInsert","transaction","tr","insert","selection","from","dispatch","attributes","class","handleKeyDown","props","mentionIsActive","plugins","some","plugin","key","startsWith","getState","active","shiftKey","editorOutput","trim","autofocus","extensions","Link","configure","openOnClick","Placeholder","includeChildren","Document","Paragraph","HTMLAttributes","Text","HardBreak","History","Mention","extend","suggestion","char","pluginKey","PluginKey","allowSpaces","allowedPrefixes","items","query","Promise","resolve","mentions","getMentions","users","slice","USERS_SEARCH_RESULT_LIMIT","channels","CHANNELS_SEARCH_RESULT_LIMIT","map","c","u","render","reactRenderer","onStart","ReactRenderer","MentionList","isChatBoxEditor","onUpdate","updateProps","onKeyDown","_this","destroy","ref","onExit","filteredTags","filter","tag","toLowerCase","useEffect","commands","focus","on","newContent","off","clearContent","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","EditorContent","className","styles","div","__webpack_exports__","Z","displayName","selectedIndex","onCheckedChange","transformPercent","jsxs","style","transform","width","index","icon","description","isDisabled","Tooltip","delayDuration","span","onClick","cursor","opacity","CrossSmallIcon","svg","height","viewBox","fill","xmlns","rect","path","fillRule","clipRule","d","useAllFilters","channelFilters","filters","tagFilters","userFilters","searchQuery","sorting","clearFilters","clearSearchQuery","clearSorting","isSortingOptionDefault","SortingOption","Relevance","areFiltersApplied","Boolean","removeAllFilters","func","time","debouncedFunc","useRef","debounce","current","setWidth","useState","isWindow","window","innerWidth","handleWindowSizeChange","addEventListener","removeEventListener","isDesktop","organisation","isUnreadFeedFilterActive","feedTimeRange","currentFeedId","setThreadCountByFeedId","setFormattedSearchQuery","organisationId","fetchFeed","useCallback","page","per_page","feedId","getFeedAPI","isUnread","globalStore","Date","now","undefined","to","then","DEFAULT_FEED_ID","response","num_threads","data","catch","console","log","error","fetchFeeds","getFeedsAPI","searchFeed","q","filterBy","sortBy","searchFeedAPI","DEFAULT_SEARCH_FEED_ID","q_plain","createFeed","postFeedAPI","payload","updateFeed","putFeedAPI","deleteFeed","bits","deleted","markFeedAsRead","putFeedReadAPI","FEED_ENDPOINT","STRUCT_API_VERSION","FEEDS_ENDPOINT","queryParams","URLSearchParams","set","toString","Math","round","endpoint","structAPIFetchClient","method","ok","responseData","json","status","headers","body","JSON","stringify","defaultState","feedMode","isNotificationEnabled","getLocalStorageState","localStorage","getItem","parse","setLocalStorageState","newState","updatedState","setItem","module","exports"],"sourceRoot":""}